Switch 在網路設備中負責轉發網路封包。但,轉發這動作之前,Switch 也必須知道封包轉發的目的地以及要從哪一個埠轉發出去。
Switch 主要功能
- 能夠增加網路的可用
頻寬
- 製作出 MAC table
- 分析其中的來源端與目的端的
MAC
位址 - 藉由 MAC table 正確的轉發網路封包
- 分析其中的來源端與目的端的
- 擁有較高速的內部結構
- 擁有比較多的埠介面
- 跟傳統的閘道器(Bridge)比較起來,交換器能夠提供更多的網路流量
MAC 位址學習
Switch 會從它們的埠上監聽所傳進來的 Frame
(經過交換器的網路封包稱之為 Frame),檢測這些資料的來源端 MAC 位址,並且把 MAC 位址與埠號的對應關係記錄下來,儲存在本地端的 MAC Address Table
或是 Content-addressable Memory (CAM) Table
。
當 Switch 再次收到 Frame,會先至 MAC Address Table
中察看哪個埠可以轉發至目的地 MAC 位址,如果有在 MAC Address Table
,則這 Frame 會從學習到的埠轉發出去,否則這 Frame 會從除了來源埠之外的埠轉發出去。
當 Switch 收到 Frame 之後,一定會從所有其他的埠轉發出去,除了來源埠之外。這種轉發到除來源埠以外的其他埠的動作,稱為「Flooding」。用這種 Flooding 的動作來轉送Frame 很沒有效率,因為會浪費很多網路頻寬。
Switch 傳送 Frame 的模式
Store and Forward
- 交換器會先把 Frame 完整地接收下來,然後才進行轉發的動作
- 來源端及目的端的 MAC 位址都能夠被讀取
- CRC(Cyclic Redundancy Check)錯誤檢查動作會被執行
- 檢查失敗,Frame 會被遺棄
- 確保 Frame 中資料的正確性
- 較費時
- 延遲時間與 Frame 的資料長度有關
Cut-Though
雖然有些交換器在這種模式下只想讀取 MAC 位址,但還是有某些交換器會讀取 CRC 值並記錄下錯誤數目。
- 一旦接收到 Header 之後,看到目的端的 MAC 位址,馬上執行 Frame 的轉發動作
- 比
Store and Forward
快上許多 - 所需要的時間,不會因為 Frame 的長度變長就跟著變多
- 閘道器及 Switch 只想取得目的端的 MAC 位址,而目的端的 MAC 位址都一定會存放在 Frame 資料內最前面的 Header 之內
- CRC 值錯誤,不會將這個 Frame 遺棄,而是針對設定值自動或手動切換成
Store and Forward
- 允許切換的 Cut-Though 又稱為
Adaptive Cut-Though
模式
- 允許切換的 Cut-Though 又稱為
Fragment-Free
- Switch 只讀取 Frame 的前 64 個 bytes(乙太網路中 Frame 最小的資料單位)
- 速度比
Cut-Though
更快 - 錯誤的 Frame,會把 Frame 丟棄
- 與
Cut-Though
不同的地方
- 與
- 也稱為
Modified Cut-Though
模式
乙太網路中碰撞幾乎發生在前 64 個 bytes 中,一旦發生碰撞,就會產生小於 64 個 bytes 的 Frame 資料。Switch 經由讀取前 64 個 bytes 資料,可初步篩選經由碰撞所產生的 Frame 資料
Switch 學習來源端 MAC 位址過程
範例拓譜
假設 FTP 發送一個 Frame 要給 WWW,這 Frame 會經由 E0 介面傳送 Switch 並使用 Store and Forward
模式,則此 Frame 會先暫存在緩衝區。
因為這台 Switch 還沒學到這個 MAC 位址應要轉發至哪個埠,會以 Flooding
,經由其它的埠把這 Frame 轉發出去,然而接收到此 Frame 同時,Switch 也學到從 E0 這個埠出去可以到達 FTP 這 Server(因 Switch 能經由 E0 介面收到由 FTP Server 的 MAC 位址發送的 Frame)。
這學習到的資訊成為 MAC Address Table
一筆資料
Port | MAC address |
---|---|
E0 | 57:A4:67:37:22:90 |
MAC Address Table
中的資訊並非永遠存在,會依據 Switch 的設定而影響。
此學習有助於 Frame 的篩選動作,因為 Frame 只會發送到真正需要送往的埠而已,這樣就可以節省整體的網路頻寬,這種篩選動作稱為「Frame Filtering」
Broadcast 與 Multicast 的轉發過程
Broadcast
與 Multicast
所代表的 MAC 位址,根本不可能存在於真正的網路中。
Switch 在 VLAN 中的傳輸封包方式
- 在同一個
VLAN
中的電腦才可以互相傳遞資料- 事實上是透過限制資料的轉送來達到這種
VLAN
的資料傳遞過程 - Switch 會了解哪些埠是屬於哪個
VLAN
,會限制Flooding
只能送往同一個 VLAN 之中
- 事實上是透過限制資料的轉送來達到這種
前面所提到的範例是因為預設上所有的埠都是屬於預設的
VLAN
中,因此Flooding
動作不會有什麼問題
Trunk
當 VLAN
資料要跨越多個 Switch 轉發至其它 Switch 所連接的同一 VLAN
,須使用Trunk
技術在資料中增加一個 Tag,來表示目前這份資料是屬於哪一個 VLAN
。傳遞資料都透過一條網路線連接起來,這條網路線必須要能傳遞承載所有 VLAN
的資料。
貼上 tag 後,封包會變成:
- 目的端位址資訊,占封包的 6 個位元組。
- 來源端位址資訊,占封包的 6 個位元組。
- 802.1Q 協定專用 tag,占封包的 4 個位元組。
- 用來指明資料長度或是乙太網路種類的資訊,占封包的 2 個位元組。
- 資料本身,占封包的 46∼1,500 個位元組。
- FCS,占封包的 4 個位元組。
802.1Q
- 在
VLAN
中用來連接多個 Switch 與 Router - Cisco的 設備在 Fast Ethernet 和 Gigabit Ethernet 的介面上都支援此協定
native VLAN
native VLAN
有一個作用,就是所有沒有被貼上標籤的資料都會被送往這個native VLAN
。- 每個
VLAN
都會有一個 ID,用來區分各個VLAN
,而native VLAN
的預設ID 是VLAN 1
。
只有
802.1Q
才有native VLAN
,ISL
並沒有native VLAN
ISL
- 是 Cisco 設備專用
- 並非每款都支援
- 與任何協定無關,因此 ISL 能夠封裝任何種類的上層協定資料(屬於 OSI Mpdel 第二層)
- 新增的表頭大小為 26 個位元組
- 包含VLAN ID 和 BPDU 資訊等
- 新增的 CRC 大小為 4 個位元組
ISL 協定所使用的資料封包長度超過乙太網路所能接受的長度,一旦不支援 ISL 協定的設備收到這樣的封包,會認為是錯誤的封包而直接遺棄。乙太網路的正確封包大小是 64 到 1,518 個位元組。
Switch 可能造成的問題
範例拓譜
同一個網路中使用多個交換器
- 廣播風暴(Broadcast Storm)
- 發送多個重複資料(Multiple Frame Copies)
- MAC 位址資料庫不一致(MAC Address Table Instability)
- Broadcast Storm 假設 Server 發送 ARP(Address Resolution Protocol) Request 來根據 IP 查找 MAC 位址時,S1 收到 ARP 廣播之後,把廣播封包 Flooding 出去,S1 會把這個封包從兩個方向再送給 S2,而 S2 接收廣播後,把廣播封包再送給 S1。 使目的地接收廣播封包,但是這樣的無窮迴圈所造成的廣播風暴會繼續,並占據著網路頻寬,而且網路上的廣播封包會越來越多,直到整個網路被這樣的廣播封包占滿為止。
廣播風暴不只會造成網路癱瘓,也會耗盡網路上各個設備的資源,因為這種廣播封包的處理過程需要CPU來處理。解決這個問題的方法就是避免迴圈的產生(Loop Avoidance)
- Multiple Frame Copies
- 只要避免迴圈產生即可
- MAC Address Table Instability
- 迴圈的避免
而 STP(Spanning Tree Protocol)就是用來避免網路迴圈的問題發生。