對於SDN網路中的交換機而言,根據使用場景的需要,上述交換功能可以採用軟體或者硬體實現。其中,軟體實現的SDN交換機通常與虛擬化Hypervisor相整合,從而為雲端計算場景中的多租戶靈活組網等業務提供支援。硬體實現的交換機則能夠支援基於硬體裝置的組網,還能夠滿足SDN網路與傳統網路的混合組網需求。
無論是軟體還是硬體,參考傳統的網路轉發裝置,SDN交換機在具體的設計和實現中還需要對交換模式、背板設計、緩衝機制、資料轉發等多方面的技術進行合理地選擇。
1. 交換模式
SDN交換機的資料交換模式決定了其轉發資料包的速度及交換過程導致的延遲(即交換機在一個埠接收到資料包的時間與在另一個埠傳送該資料包的時間差)。在實際應用中,資料包的轉發既希望具有儘可能低的轉發延遲以提升資料傳輸效能,又希望能夠在轉發過程中對資料包進行檢驗,以保證資訊傳輸的可靠性。
和傳統的網路交換裝置一樣,SDN交換機的資料交換模式也可以有直通、零碎片、儲存轉發等多種選擇,各種模式的介紹和分析如下。
直通(Cut-Through):交換機僅對資料幀(二層網路對資料包的特有稱呼)的前6個位元組的資訊進行接收和分析,並將資料幀的其餘部分直接剪下(即所謂的Cut)到出埠上。這是因為資料幀的前6個位元組包含了該資料幀的目的MAC地址,這已經足以供交換機做出轉發決策。直通模式具有最小的轉發延遲,但是它並不檢查資料的完整性,因此可能會把能夠導致乙太網衝突的"壞包"轉發出去,從而產生網路可靠性問題。
零碎片(Fragment-Free):交換機首先對資料幀的前64個位元組進行接收和解析,再進行轉發。之所以選擇64個位元組的長度,是因為經驗表明在乙太網絡中,絕大部分的"壞包"都能在這些位元組的處理過程中被檢測到。這種模式雖然有可能造成極少量的"壞包"漏檢,但是它對網路的整體效能影響不大,因此在很多應用場景中又被稱為"快速轉發(Fast-Forwarding)"。
儲存轉發(Store-and-Forward):交換機需要對整個資料幀的內容進行接收和解析,並開展資料幀的完整性檢驗等操作,以有效地避免出現錯誤。雖然該模式增加了轉發延遲,但是考慮到當前的處理器或者ASIC已經具有足夠的效能,因此,在SDN交換機的設計與實現中,仍舊建議其採用這種模式用於資料交換。
2. 背板設計
SDN交換機中,從裝置入埠接收到的資料包將通過背板被髮送到裝置出埠。交換機的背板是資料幀在交換機內部傳輸的通訊通道,攜帶有轉發決策資訊及中繼管理資訊。參考傳統的網路交換裝置,SDN交換機可採用的背板設計主要包括共享匯流排機制和交叉開關矩陣機制兩種方式,相應的介紹和分析如下。
共享匯流排(Shared Bus)機制:交換機中所有的入埠和出埠都共享同一資料通路,並由一個集中的仲裁器負責決定何時以何種方式將匯流排的訪問權賦予哪個交換機埠。根據不同的交換機配置,仲裁器可以用多種多樣的方法保證匯流排訪問的公平性。在共享匯流排的資料幀傳輸流程中,交換機裝置入埠在接收到資料幀後,將發起對匯流排的訪問請求,並等待請求被仲裁器批准後將資料幀傳送到資料匯流排上。該資料幀會被總線上掛接的所有埠接收到,同時交換機將決定哪個出埠應該繼續傳遞該資料幀。在接收到交換機的決定後,負責轉發的裝置出埠將繼續傳遞資料幀,而其他埠則將該資料幀丟棄。共享匯流排的交換機制使得除了交換機的裝置入埠外,其他掛接在總線上的埠都可以自動獲得資料幀的副本而無需額外的複製操作,從而比較容易實現組播和廣播。但是,共享匯流排的速度將會對整個交換機的流量造成很大影響,這主要是因為匯流排是共享的,所以埠必須要等到輪到它們使用匯流排時才能進行通訊。
交叉開關矩陣(Crossbar)機制,又可以被稱作 "縱橫式交換矩陣",其基本思路是支援在交換機埠之間提供多個可以同時使用的資料通路。它突破了共享匯流排機制中的頻寬限制,在交換網路內部沒有頻寬瓶頸,不會因為頻寬資源不夠而產生阻塞。因此,在SDN交換機的設計與實現時,交叉開關矩陣可以被引入,以改進資料交換效率。
3. 緩衝機制
如果SDN交換機採用了基於共享匯流排的背板設計,那麼資料幀必須要依次等待仲裁器裁決直至輪到它們對應的埠可以訪問匯流排時才可以被髮出;而即使是採用了基於交叉開關矩陣的背板設計,資料幀也有可能因為網路出現擁塞被延遲發出。因此,相關的資料幀就必須被SDN交換機所緩衝直至它被髮出。如果SDN交換機沒有設計合理的緩衝機制,那麼在出現流量超標或者網路擁塞時,資料幀就有可能被隨時丟棄。
SDN交換機的緩衝機制用於解決資料包不能夠被裝置出埠及時轉發的問題,而發生該情況的原因主要包括交換機的裝置入埠和裝置出埠速率不匹配、多個裝置入埠向同一裝置出埠傳送資料、裝置出埠處於半雙工工作狀態等。為了避免發生上述情況導致資料包被丟棄,當前有兩種常用的緩衝機制可供SDN交換機選擇。
埠緩衝:為每個交換機上的乙太網埠提供一定數量的高速記憶體用於緩衝資料幀的到來與轉發。該方法存在的主要問題是當埠的緩衝被使用殆盡時,其後續接收到的資料幀將被丟棄,而支援緩衝規模的靈活調整將有助於緩解這一問題。
共享記憶體:為所有埠提供可以同時訪問的共享記憶體空間用於埠緩衝。該方法將所有接收到的資料幀都儲存在共享的記憶體池中,直到裝置出埠準備將其轉發到網路中。使用這種方法,交換機能夠動態地分配共享記憶體,可以根據埠流量的大小設定相應的緩衝規模。
4. 資料轉發
無論是硬體實現還是軟體實現的SDN交換機,資料幀在交換機內部從裝置入埠到裝置出埠的傳遞過程都需要交換機做出轉發決策。在傳統的網路交換裝置中,這一決策過程需要交換機中的轉發表、路由器中的路由表等機制實現,它們通過對裝置入埠接收到的資料包的目的地址資訊進行匹配,就能夠確定該資料包應該被髮往哪個裝置出埠。對SDN交換機而言,裝置中同樣需要這樣的轉發決策機制。以OpenFlow交換機為例,它提出了流表的概念對傳統的二層轉發表、三層路由表進行了抽象,從而使得資料包在轉發過程中的決策更具靈活性。
傳統網路裝置的轉發表和路由表的組成都有標準的定義,以及相對簡單的格式,例如二層交換機轉發表就是一個裝置埠和MAC地址的對映關係,因此非常適合採用靜態的專用積體電路高效實現,而SDN交換機中的轉發決策中使用的轉發表可能會具有非常複雜的組成結構。仍以OpenFlow為例,在OpenFlow v1.2版本後,其流表中各個表項的長度及其中包含的匹配域都是可自定義而非固定的格式,雖然這些設定在交換機的軟體實現中能夠提供極高的靈活性,但是對於相應的硬體OpenFlow交換機而言,它將不再適合採用預先定義好的硬體電路進行流表的實現。為了應對這一問題,硬體的SDN交換機可以考慮引入TCAM(Ternary Content Addressable Memory,三態內容定址儲存器)技術完成相關流表資訊的儲存和查詢。
TCAM在傳統的網路交換裝置中也有應用,例如用於快速查詢ACL等。和一般只能支援"0"和"1"兩種狀態的儲存器件不同,TCAM儲存器中的每個bit位都具有一個通過掩碼實現的"don't care"狀態。而正是這個第三種狀態,使得TCAM既能夠支援精確匹配查詢,又能夠支援模糊匹配查詢,完全能夠滿足SDN交換機的轉發決策表項的儲存和查詢需求。但需要注意的是,當前的TCAM存在成本高、功耗大等問題,這可能會成為影響SDN交換機推廣的一個障礙。