Cisco 10G Ethernet Transceiver Module

目前 Cisco 支援的 10GE transceiver 模組有:XENPAK, X2, XFP, SFP+ 這四種,本文嘗試做一些整理,讓記性差的人(ex.我)有個簡單的地方 review。另外,還有可將 X2 轉 SFP+ 的 OneX 模組與將 X2 插槽轉成兩個 GE 插槽的 TwinGig 模組。

本文分成下面幾個部份:

外觀

Cisco 設備支援情形

支援線材與長度限制

外觀

XENPAK X2

XFP SFP+

OneX TwinGig


Cisco 設備支援情形

(以下只列出常見的設備,詳細的列表)

Product Transceiver supported
Catalyst 6500 Series XENPAK, X2, SFP+
ME 4900 Series X2
Catalyst 4900 Series X2, SFP+
Catalyst 4500 Series X2, SFP+
Catalyst 3750-X Series SFP+
Catalyst 3750-E Series X2
Catalyst 3750 Series XENPAK
Catalyst 3560-X Series SFP+
Catalyst 3560-E Series X2
Catalyst 2960-S Series SFP+
Nexus 7000 Series X2, SFP+
Nexus 5000 Series SFP+
Nexus 2000 Series SFP+
UCS SFP+
Catalyst 3100 Blade Switch X2
Catalyst 2360 Series SFP+
Catalyst 2350 Series X2
7600 Series XENPAK, X2, XFP
SCE 8000 XFP
ASR 9000 Router Series XFP, SFP+

由上可知, SFP+ 是未來的趨勢,較新的產品都有支援。XFP 則因為可支援 OC-192/STM-64,所以 WAN, Service Provider 的產品才會有。

支援線材與長度限制

SFP+

XFP

X2

XENPAK

Cut through 捲土重來

Switch 交換封包的方式分成三種:

  1. Cut through
  2. Store and forward
  3. Fragment free

什麼是 Cut through?

理論上,使用 Cut through 的 switch 在收到封包的時候,在讀取到該封包的 Destination MAC 時,就馬上查詢 MAC address table,找到出口介面,然後就即時將封包交換出去。

Source: www.cisco.com

這種方法最直接的好處便是封包交換速度快,封包的延遲(latency)低,因為封包在 switch 中是沒有浪費任何時間的。試想,如果使用 Jumbo frame 時,使用 store and forward 交換將大大拉長 latency。

Cut through 的 latency 計算方法是 FIFO (First In First Out),也就是,switch 收到第一個 bit 與送出第一的 bit 的時間差就是 latency。

然而 cut through 因為會在檢測封包的 CRC 之前就將之交換出去,所以無法將錯誤的封包丟棄,造成錯誤封包的擴散。這個問題在多年前的網路會較為嚴重,因為當時網路卡的品質不佳,而且使用 Hub 會產生碰撞,碰撞會造成封包 fragment,這些錯誤封包再進入 cut through switch 後,將不會被檢查出也不會被丟棄。

什麼是 Store and forward?

Store and forward 會將整個封包收到 switch 中,檢查是否錯誤再將之處理、交換。這樣子當然會解決錯誤封包擴散的問題。但是,卻會將 latency 拉長。

Store and forward 的 latency 計算方法是 LIFO (Last In First Out),也就是 switch 收到最後一個 bit 與送出第一個 bit 的時間差就是 latency。

為什麼 Cut through 會式微?

前面提到錯誤封包的擴散這個缺點,其實到後來網路卡技術的改進,與大量淘汰 hub 改用 switch 之後,已經獲得解決。

但是,除了這個問題之外,還有許多狀況使得 cut through 無法達到應有的快速、低延遲。

1. 封包需要更多的控制:在 1990 年中期,switch 的用戶需要對封包有更深入的控制,例如 ACL、QoS,為了要控制這些封包,switch 必須讀取更多的欄位以做出判斷,因此可能必須讀取到 54 bytes ( 14 bytes Ethernet + 20 bytes IP + 20 bytes TCP)的欄位,如此也讓 latency 拉長。另外, EtherChannel 需要針對封包做 hash 以決定送出封包的介面,而 hash 所參考的欄位也可能會使用到 IP address 或 Port number。

2. 介面速度的差異:如果 switch 使用 fabric 架構,而出口介面速度(如10Gbps)比入口速度(如1Gbps)快,採用 cut through 會造成 under run 的問題,因為 cut through 在交換封包的時候,送出封包速度太快,以至於等不到後續的封包,此時 switch 必須被迫採用類似 store and forward 的方法先將封包存放到 buffer ,以利快速介面送出。

3. 出口介面擁塞:如果 switch 的出口介面擁塞,cut through 則必須先將封包放在 buffer 之中,等待送出,此時就又如同 store and forward 了!

為什麼 Cisco 又將 cut through 帶回來?

如前所述,目前的硬體進步很多不管是 ASIC 或是 FPGA 都比 1990 年代更能快速處理原本 cut through 衍生的問題。另外,像 HPC 等應用也非常需要低延遲的網路環境。

使用 Cut through 的 Cisco switch

Nexus 5000 便是使用 cut through 交換方法的 switch。

Nexus 7000 則仍然使用 store and forward,因為 Layer 3 switch 必須在交換封包之前更改 header 中的內容( destination MAC、FCS、TOS),所以還是必須使用 store and forward。

參考資料:Cut-Through and Store-and-Forward Ethernet Switching for Low-Latency Environments