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