SDN交換機實現技術
對于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交換機推廣的一個障礙。