1. 程式人生 > >網路是怎樣連線的學習筆記-第三章-交換機的包轉發操作

網路是怎樣連線的學習筆記-第三章-交換機的包轉發操作

3.2.1 交換機根據地址表進行轉發

交換機的設計是將網路包原樣轉發到目的地,圖 3.7 就是它的內部結構。

交換機的PHY接收到達網線介面的訊號

首先,訊號到達網線介面,並由 PHY 模組進行接收,這一部分和集線器是相同的。

也就是說,它的介面和 PHY 模組也是以MDI-X 模式進行連線的,當訊號從雙絞線傳入時,就會進入 PHY 模組的接收部分。

傳遞給MAC模組

接下來,PHY 模組會將網線中的訊號轉換為通用格式,然後傳遞給 MAC 模組。

MAC轉換訊號並進行FCS校驗

MAC 模組將訊號轉換為數字資訊,然後通過包末尾的FCS 校驗錯誤,如果沒有問題則存放到緩衝區中。

這部分操作和網絡卡基本相同,大家可以認為交換機的每個網線介面後面都是一塊網絡卡。

網線介面和後面的電路部分加在一起稱為一個埠,也就是說交換機的一個埠就相當於計算機上的一塊網絡卡。

交換機不核對MAC地址

但交換機的工作方式和網絡卡有一點不同。

網絡卡本身具有 MAC 地址,並通過核對收到的包的接收方 MAC 地址判斷是不是發給自己的,如果不是發給自己的則丟棄;

相對地,交換機的埠不核對接收方 MAC 地址,而是直接接收所有的包並存放到緩衝區中。

因此,和網絡卡不同,交換機的埠不具有 MAC 地址。

內建用於實現管理等功能的處理器的交換機除外。這種交換機相當於在一個盒子裡同時集成了計算機和交換機兩種裝置,因此其中相當於計算機的部分是具有 MAC 地址的。

對照MAC地址表查詢緩衝區中的包的MAC地址

將包存入緩衝區後,接下來需要查詢一下這個包的接收方 MAC 地址是否已經在 MAC 地址表中有記錄了。

MAC 地址表主要包含兩個資訊,一個是裝置的 MAC 地址,另一個是該裝置連線在交換機的哪個埠上。

以圖 3.7 中的地址表為例,MAC 地址和埠是一一對應的,通過這張表就能夠判斷出收到的包應該轉發到哪個埠。

根據MAC地址得到對應埠號

舉個例子,如果收到的包的接收方 MAC 地址為 00-02-B3-1C-9C-F9,則與圖 3.7 的表中的第 3 行匹配,

根據埠列的資訊,可知這個地址位於 8 號埠上,然後就可以通過交換電路將包傳送到相應的埠了。

 有些產品不是用交換電路來傳輸網路包的,但交換電路是交換機的原型,“交換機”這個詞也是從交換電路來的。

交換電路的工作原理

交換電路的結構如圖 3.8 所示,它可以將輸入端和輸出端連線起來。

其中,訊號線排列成網格狀,每一個交叉點都有一個交換開關,交換開關是電子控制的,通過切換開關的狀態就可以改變訊號的流向。

交換電路的輸入端和輸出端分別連線各個接收埠和傳送埠,網路包通過這個網格狀的電路在埠之間流動。

舉個例子,假設現在要將包從 2 號埠傳送到 7 號埠,那麼訊號會從輸入端的 2 號線進入交換電路,

這時,如果讓左起的 6 個開關水平導通,然後將第 7 個開關切換為垂直導通,訊號就會像圖上一樣流到輸出端 7 號線路,於是網路包就被髮送到了 7 號埠。

每個交叉點上的交換開關都可以獨立工作,因此只要路徑不重複,就可以同時傳輸多路訊號。

 

進入傳送埠

當網路包通過交換電路到達傳送埠時,埠中的 MAC 模組和 PHY 模組會執行傳送操作,將訊號傳送到網線中,這部分和網絡卡傳送訊號的過程是一樣的。

根據乙太網的規則,首先應該確認沒有其他裝置在傳送訊號,也就是確認訊號收發模組中的接收線路沒有訊號進來。

如果檢測到其他裝置在傳送訊號,則需要等待訊號傳送完畢;

如果沒有其他訊號,或者其他訊號已經發送完畢,這時就可以將包的數字資訊轉換為電訊號傳送出去。

在傳送訊號的過程中,還需要對接收訊號進行監控,這一點和網絡卡也是一樣的。

如果在傳送過程中檢測到其他裝置傳送訊號,就意味著出現了訊號碰撞,這時需要傳送阻塞訊號以停止網路中所有的傳送操作,等待一段時間後再嘗試重新發送,這一步和網絡卡也是一樣的。

這個操作過程的前提是終端通過集線器連線到交換機,也就是半雙工模式的工作方式。

這是乙太網的原型,但現在基本上都不使用集線器了,而是直接用交換機將終端和路由器相連線,在這種情況下,交換機的埠會自動切換為全雙工模式。關於全雙工模式的工作過程我們將稍後介紹

 

3.2.2 MAC地址表的維護 

交換機在轉發包的過程中,還需要對 MAC 地址表的內容進行維護,維護操作分為兩種。

交換機記錄傳送方MAC地址到表中

第一種是收到包時,將傳送方 MAC 地址以及其輸入埠的號碼寫入MAC 地址表中。

由於收到包的那個埠就連線著傳送這個包的裝置,所以只要將這個包的傳送方 MAC 地址寫入地址表,以後當收到發往這個地址的包時,交換機就可以將它轉發到正確的埠了。

交換機每次收到包時都會執行這個操作,因此只要某個裝置傳送過網路包,它的 MAC 地址就會被記錄到地址表中。

交換機定時刪除MAC地址記錄

另一種是刪除地址表中某條記錄的操作,這是為了防止裝置移動時產生問題。

比如,我們在開會時會把膝上型電腦從辦公桌拿到會議室,這時裝置就發生了移動。

從交換機的角度來看,就是本來連線在某個埠上的膝上型電腦消失了。

這時如果交換機收到了發往這臺已經消失的膝上型電腦的包,那麼它依然會將包轉發到原來的埠,通訊就會出錯,因此必須想辦法刪除那些過時的記錄。

然而,交換機沒辦法知道這檯筆記本電腦已經從原來的埠移走了。

因此地址表中的記錄不能永久有效,而是要在一段時間不使用後就自動刪除。

那麼當膝上型電腦被拿到會議室之後,會議室裡的交換機又會如何工作呢?

只要膝上型電腦連線到會議室的交換機,交換機就會根據膝上型電腦發出的包來更新它的地址表。

因此,對於目的地的交換機來說,不需要什麼特別的措施就可以正常工作了。

綜合來看,為了防止終端裝置移動產生問題,只需要將一段時間不使用的過時記錄從地址表中刪除就可以了。

重啟交換機清空MAC地址表

過時記錄從地址表中刪除的時間一般為幾分鐘,因此在過時記錄被刪除之前,依然可能有發給該裝置的包到達交換機。

這時,交換機會將包轉發到老的埠,通訊就會發生錯誤,這種情況儘管罕見,但的確也有可能發生。

不過大家不必緊張,遇到這樣的情況,只要重啟一下交換機,地址表就會被清空並更新正確的資訊,然後網路就又可以正常工作了。

總之,交換機會自行更新或刪除地址表中的記錄,不需要手動維護。

當地址表的內容出現異常時,只要重啟一下交換機就可以重置地址表,也不需要手動進行維護。

 

3.2.3 特殊操作

上面介紹了交換機的基本工作方式,下面來看一些特殊情況下的操作。

交換機轉發包到傳送方的情況

交換機查詢地址表之後發現記錄中的目標埠和這個包的源埠是同一個埠,如圖 3.9 

首先,計算機 A 傳送的包到達集線器後會被集線器轉發到所有埠上,也就是會到達交換機和計算機B(圖3.9①)

這時,交換機轉發這個包之後,這個包會原路返回集線器(圖 3.9 ②),

然後,集線器又把包轉發到所有埠,於是這個包又到達了計算機 A 和計算機 B。

所以計算機 B 就會收到兩個相同的包,這會導致無法正常通訊。

因此,當交換機發現一個包要發回到原埠時,就會直接丟棄這個包。

 地址表中不存在指定MAC地址的情況

這可能是因為具有該地址的裝置還沒有向交換機發送過包,或者這個裝置一段時間沒有工作導致地址被從地址表中刪除了。

這種情況下,交換機無法判斷應該把包轉發到哪個埠,只能將包轉發到除了源埠之外的所有埠上,無論該裝置連線在哪個埠上都能收到這個包。

這樣做不會產生什麼問題,因為乙太網的設計本來就是將包傳送到整個網路的,然後只有相應的接收者才接收包,而其他裝置則會忽略這個包。

 

廣播給除傳送方的所有埠

這樣做會發送多餘的包,不會造成網路擁塞,因為傳送了包之後目標裝置會作出響應。

只要返回了響應包,交換機就可以將它的地址寫入地址表,下次也就不需要把包發到所有埠了。

區域網中每秒可以傳輸上千個包,多出一兩個包並無大礙。

此外,如果接收方 MAC 地址是一個廣播地址,那麼交換機會將包傳送到除源埠之外的所有埠。

廣播地址(broadcast address)是一種特殊的地址,將廣播地址設為接收方地址時,包會發送到網路中所有的裝置。MAC 地址中的 FF:FF:FF:FF:FF:FF和 IP 地址中的 255.255.255.255 都是廣播地址。

 

3.2.4 全雙工模式可以同時進行傳送和接收

使用交換機和全雙工模式並避免碰撞

全雙工模式是交換機特有的工作模式,它可以同時進行傳送和接收操作,集線器不具備這樣的特性。

使用集線器時,如果多臺計算機同時傳送訊號,訊號就會在集線器內部混雜在一起,進而無法使用,這種現象稱為碰撞,是乙太網的一個重要特徵。

不過,只要不用集線器,就不會發生碰撞。

而使用雙絞線時,傳送和接收的訊號線是各自獨立的,因此在雙絞線中訊號不會發生碰撞。

網線連線的另一端,即交換機埠和網絡卡的 PHY 模組以及 MAC 模組,其內部發送和接收電路也是各自獨立的,訊號也不會發生碰撞。

因此,只要不用集線器,就可以避免訊號碰撞了。

如果不存在碰撞,也就不需要半雙工模式中的碰撞處理機制了。也就是說,傳送和接收可以同時進行。

然而,乙太網規範中規定了在網路中有訊號時要等該訊號結束後再發送訊號,因此傳送和接收還是無法同時進行。

於是,人們對乙太網規範進行了修訂,增加了一個無論網路中有沒有訊號都可以傳送訊號的工作模式,同時規定在這一工作模式下停用碰撞檢測(圖 3.10)。這種工作模式就是全雙工模式。

在全雙工模式下,無需等待其他訊號結束就可以傳送訊號,因此它比半雙工模式速度要快。

由於雙方可以同時傳送資料,所以可同時傳輸的資料量也更大,效能也就更高。

 

 

3.2.5 自動協商:確定最優的傳輸速率

隨著全雙工模式的出現,如何在全雙工和半雙工模式之間進行切換的問題也產生了。

在全雙工模式剛剛出現的時候,還需要手動進行切換,但這樣實在太麻煩,於是後來出現了自動切換工作模式的功能。

這一功能可以由相互連線的雙方探測對方是否支援全雙工模式,並自動切換成相應的工作模式。

此外,除了能自動切換工作模式之外,還能探測對方的傳輸速率並進行自動切換。這種自動切換的功能稱為自動協商。

使用脈衝訊號確認網路是否正常

在乙太網中,當沒有資料在傳輸時,網路中會填充一種被稱為連線脈衝的脈衝訊號。

在沒有資料訊號時就填充連線脈衝,這使得網路中一直都有一定的訊號流過,從而能夠檢測對方是否在正常工作,或者說網線有沒有正常連線。

乙太網裝置的網線介面周圍有一個綠色的 LED 指示燈,它表示是否檢測到正常的脈衝訊號。

如果綠燈亮,說明 PHY(MAU)模組以及網線連線正常。

MAC 模組、緩衝區、記憶體和匯流排部分的異常無法通過這個指示燈來判斷

 

在雙絞線乙太網規範最初制定的時候,只規定了按一定間隔傳送脈衝訊號,這種訊號只能用來確認網路是否正常。

特定排列的脈衝訊號告知對方自身狀態

後來,人們又設計出瞭如圖 3.11這樣的具有特定排列的脈衝訊號,通過這種訊號可以將自身的狀態告知對方。

自動協商功能就利用了這樣的脈衝訊號,即通過這種訊號將自己能夠支援的工作模式和傳輸速率相互告知對方,並從中選擇一個最優的組合。

自動協商功能是後來才寫入乙太網規範中的,因此會出現支援這一功能的裝置和不支援這一功能的裝置混用的情況。

在這樣的情況下,不支援自動協商的裝置由於其所傳送的脈衝訊號不具備規定的排列,無法正確告知工作模式,所以會引發故障。

自動協商規格本身也存在一定的缺陷,這些缺陷有時也會引發故障。

因此,儘管有人不喜歡這個功能,但只要正確理解和使用它,就可以防止上述故障。

當然,現在基本上已經沒有不支援自動協商的舊裝置了,因此一般也不會出問題。

 

下面來看一個具體的例子。

假設現在連線雙方的情況如表 3.2 所示,網絡卡一方支援所有的速率和工作模式,而交換機只支援到 100 Mbit/s 全雙工模式。

當兩臺裝置通電並完成硬體初始化之後,就會開始用脈衝訊號傳送自己支援的速率和工作模式。

當對方收到訊號之後,會通過讀取脈衝訊號的排列來判斷對方支援的模式,然後看看雙方都支援的模式有哪些。

表 3.2 是按照優先順序排序的,因此雙方都支援的模式就是第 3 行及以下的部分。

越往上優先順序越高,因此在本例中 100 Mbit/s 全雙工模式就是最優組合,於是雙方就會以這個模式開始工作。

 

 

3.2.6 交換機可同時執行多個轉發操作

交換機只將包轉發到具有特定 MAC 地址的裝置連線的埠,其他埠都是空閒的。

如圖 3.7 中的例子所示,當包從最上面的埠傳送到最下面的埠時,其他埠都處於空閒狀態,這些埠可以傳輸其他的包,因此交換機可以同時轉發多個包。

相對地,集線器會將輸入的訊號廣播到所有的埠,如果同時輸入多個訊號就會發生碰撞,無法同時傳輸多路訊號,因此從裝置整體的轉發能力來看,交換機要高於集線器。