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