DCFabric:面向云計算數(shù)據(jù)中心的開源SDN控制器

責(zé)任編輯:editor005

作者:蔣暕青

2016-01-26 15:04:09

摘自:SDNLAB

本地主機(jī)的數(shù)據(jù)包在發(fā)送前需要在當(dāng)前交換機(jī)被打標(biāo)簽,而Table 1則負(fù)責(zé)存儲執(zhí)行相應(yīng)操作的流表項。Table 2則根據(jù)目的交換機(jī)的ID來轉(zhuǎn)發(fā)數(shù)據(jù)包,它最多可包含s個流表項, s表示網(wǎng)絡(luò)中的交換機(jī)總數(shù)目。

1、DCFabric:面向云計算數(shù)據(jù)中心的開源SDN控制器

ODL和ONOS等雖然在拓?fù)湫阅芎蛻?yīng)用開發(fā)便利度上有了很大進(jìn)步,但是它們的靈活性、工作速度和效率仍有待提高。因此,隨著大數(shù)據(jù)浪潮的到來,我們迫切需要可面向云計算數(shù)據(jù)中心的性能更完善、開發(fā)更便利、效率更突出的SDN控制器。

為了解決上述問題,我們設(shè)計了一款面向云計算數(shù)據(jù)中心開源SDN控制器——DCFabric,其從上至下依次可分為五層(見圖1):第一層是控制器支持的Web應(yīng)用層,第二層是北向接口層,第三層是包含SFabric模塊的系統(tǒng)應(yīng)用(System APP)層,第四層是為上層應(yīng)用的正常運(yùn)行提供保障的基礎(chǔ)服務(wù)層,最后是基于OpenFlow等協(xié)議的南向接口層。

圖1. DCFabric:面向云計算數(shù)據(jù)中心的開源SDN控制器

DCFabric可支持的Web應(yīng)用主要包括Web GUI、Neutron接口、流量工程、防火墻、負(fù)載均衡、DDoS防御等。因此,DCFabric可為數(shù)據(jù)中心在網(wǎng)絡(luò)管理、網(wǎng)絡(luò)虛擬化、網(wǎng)絡(luò)安全、網(wǎng)絡(luò)流量控制等方面提供一系列支持。

Restful API是DCFabric向上層應(yīng)用開發(fā)者提供的北向接口,它能將網(wǎng)絡(luò)應(yīng)用和網(wǎng)絡(luò)細(xì)節(jié)彼此隔離,使得網(wǎng)絡(luò)中的各種設(shè)備、事件(如鏈路中斷)和具體操作對應(yīng)用程序而言都是透明的。因此,數(shù)據(jù)中心可通過各種靈活的網(wǎng)絡(luò)應(yīng)用來提升用戶的體驗(yàn),實(shí)現(xiàn)網(wǎng)絡(luò)的智能化和安全化。

相比較已有的其它SDN控制器,DCFabric主要有兩點(diǎn)不同:

SFabric模塊:不同于在主機(jī)級別進(jìn)行路由規(guī)劃的一般SDN方案,含有SFabric模塊的DCFabric可在交換機(jī)級別進(jìn)行路由規(guī)劃。由于網(wǎng)絡(luò)中的交換機(jī)數(shù)目一般遠(yuǎn)低于主機(jī)數(shù)目,所以SFabric能有效地降低網(wǎng)絡(luò)的流表數(shù)目和DCFabric的工作負(fù)載,從而使DCFabric有更快的工作速度(具體內(nèi)容請見章節(jié)3.1)。由于在網(wǎng)關(guān)、路由、網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation, NAT)、多租戶管理等方面有著更好的工作效率,所以DCFabric可對規(guī)模日益增長的云計算數(shù)據(jù)中心網(wǎng)絡(luò)實(shí)現(xiàn)高效的控制和管理。支持再次開發(fā):DCFabric還支持系統(tǒng)應(yīng)用的再次開發(fā),即允許其他開發(fā)者根據(jù)自身的具體需求對控制器進(jìn)行相應(yīng)的更改。因此,DCFabric具備更強(qiáng)的兼容性以及更廣闊的應(yīng)用空間。

考慮到單個控制器的工作能力畢竟有限,為了應(yīng)對數(shù)據(jù)中心不斷增長的網(wǎng)絡(luò)規(guī)模以及保證其健壯性,DCFabric還支持控制器的集群化(Cluster)部署。如果某個控制器出現(xiàn)問題,則SDN交換機(jī)可馬上連接另一個控制器。并且多個控制器通過協(xié)同工作表現(xiàn)為一個邏輯實(shí)體,使得數(shù)據(jù)平面對應(yīng)用程序而言是透明的。因此,DCFabric的集群化對于實(shí)現(xiàn)高吞吐量、低時延、好的靈活性以及強(qiáng)穩(wěn)定度的數(shù)據(jù)中心是非常有益的。

2、DCFabric的主要特點(diǎn)

SDN控制器雖有利于網(wǎng)絡(luò)資源利用率的提升,但隨著數(shù)據(jù)中心規(guī)模的擴(kuò)大,SDN控制器仍面臨著一個主要問題:交換機(jī)和用戶主機(jī)數(shù)目的增長,使得每個交換機(jī)需存儲的流表內(nèi)容也在相應(yīng)增加(理論上每臺交換機(jī)上的流表最多需覆蓋到網(wǎng)絡(luò)中的所有主機(jī)),這不僅需要每臺交換機(jī)有更大的存儲容量和更快的查詢速度,也對SDN控制器的工作效率提出了更高的要求。

SFabric架構(gòu)

我們對現(xiàn)有的SDN控制器進(jìn)行了改進(jìn),設(shè)計了新穎的SFabric架構(gòu),使得SDN控制器的工作負(fù)載大大減少,從而有效地提高了控制器的工作效率。

在SFabric中,每個交換機(jī)都會向其所有的端口發(fā)送鏈路層發(fā)現(xiàn)協(xié)議包(Link Layer Disvovery Protocol, LLDP)。由于主機(jī)會自動忽略LLDP包,所以之后每個交換機(jī)就可知道到底哪些交換機(jī)是和其直接相連的。當(dāng)DCFabric從各個交換機(jī)獲取了一定信息后,就可知道整個網(wǎng)絡(luò)的交換機(jī)拓?fù)淝闆r。接下來,DCFabric會為每對交換機(jī)之間設(shè)置一條通信路徑(出于流量均衡等考慮,該路徑并不一定是最短路徑),并且為所有目的交換機(jī)(與目的主機(jī)直接相連的交換機(jī))相同的路徑設(shè)置一個專門的標(biāo)簽(目的交換機(jī)的ID)。然后,DCFabric會把路徑信息裝載到交換機(jī)的流表項中,這樣交換機(jī)就能根據(jù)標(biāo)簽來轉(zhuǎn)發(fā)數(shù)據(jù)包。以圖3為例,假設(shè)交換機(jī)1到交換機(jī)2、3、4、6的路徑分別為1→2,1→3,1→2→5→4,1→3→4→6,則交換機(jī)1的路由表將如圖3底部的表格所示。例如,第四個流表項表示標(biāo)簽為6(目的交換機(jī)為交換機(jī)6)的數(shù)據(jù)包將從交換機(jī)1的端口2輸出。因此,SFabric可幫助DCFabric實(shí)時迅速地構(gòu)建好交換機(jī)級別的路由規(guī)劃,從而為后續(xù)數(shù)據(jù)包的端到端單播路徑建立預(yù)先做好準(zhǔn)備。

圖2. SFabric架構(gòu)

當(dāng)然,考慮到與其它現(xiàn)有OpenFlow交換機(jī)的兼容性,SFabric也允許用VLAN ID或MPLS Label替代目的交換機(jī)ID。由于OpenFlow從1.1版開始就可支持多流表,所以SFabric在每個交換機(jī)中都建立了四個流表來實(shí)現(xiàn)流水線式處理,具體如圖4所示。假設(shè)在流表中使用VLAN ID作為路由標(biāo)簽,四個流表的具體結(jié)構(gòu)和工作過程如下。

圖3. SFabric中每個交換機(jī)所含的四個流表

Table 0用于包的預(yù)處理。它包含p+2個流表項,其中p表示與當(dāng)前交換機(jī)直接相連的交換機(jī)的個數(shù)。p個流表項的格式為“port=i, ip, actions=goto table:2”,其中1≤i≤p,表示將來自其它交換機(jī)的IP包送往Table 2。剩下的2個流表項格式為“ip, actions=goto table:1”和“arp, actions=Controller”,表示將來自當(dāng)前交換機(jī)下的本地主機(jī)的IP包和ARP包分別送往Table 1和DCFabric。

本地主機(jī)的數(shù)據(jù)包在發(fā)送前需要在當(dāng)前交換機(jī)被打標(biāo)簽,而Table 1則負(fù)責(zé)存儲執(zhí)行相應(yīng)操作的流表項。因此,Table 1在初始化后是空的,需要在后續(xù)的網(wǎng)絡(luò)會話通信中逐漸豐富其中的流表項。

Table 2則根據(jù)目的交換機(jī)的ID來轉(zhuǎn)發(fā)數(shù)據(jù)包,它最多可包含s個流表項, s表示網(wǎng)絡(luò)中的交換機(jī)總數(shù)目。其中s-1個流表項的格式為“dl vlan=i, actions=output:j”,表示將VLAN ID為i的數(shù)據(jù)包通過當(dāng)前交換機(jī)的端口j被發(fā)送出去。最后1個流表項的格式為“dl vlan=k, actions=pop vlan, goto table:3”,其中k為當(dāng)前交換機(jī)的ID號,表示若當(dāng)前的交換機(jī)下就是目的交換機(jī)時,則數(shù)據(jù)包應(yīng)發(fā)往Table 3。

Table 3根據(jù)數(shù)據(jù)包的MAC或IP地址,將收到的數(shù)據(jù)包發(fā)往當(dāng)前交換機(jī)下的某個目的主機(jī)。所以Table 3在初始化后也是空的,每當(dāng)當(dāng)前交換機(jī)下的某個主機(jī)被發(fā)現(xiàn)時,就在Table 3中建立一個相應(yīng)的流表項。

單播路徑建立

因?yàn)榻粨Q機(jī)級別的網(wǎng)絡(luò)拓?fù)湟驯活A(yù)先建立,DCFabric才可對數(shù)據(jù)包路徑建立的流程進(jìn)行優(yōu)化,即DCFabric對目的主機(jī)相同的通信需求只需進(jìn)行一次處理,從而使網(wǎng)絡(luò)流的表數(shù)目和DCFabric的工作負(fù)載都大幅降低。

圖4. 任意兩臺主機(jī)之間的單播路徑建立過程

當(dāng)DCFabric收到一條來自交換機(jī)的packet-in信息時(比如ARP請求),它需要首先確定源主機(jī)和目的主機(jī)的地址。如果DCFabric的數(shù)據(jù)庫中暫時沒有目的主機(jī)地址的信息,那么DCFabric將會把該ARP請求以泛洪的方式發(fā)送到所有交換機(jī)的每個端口。無論是獲得ARP請求或ARP響應(yīng),一旦DCFabric捕獲到一臺新主機(jī)的信息,它就會在與新主機(jī)直接相連的交換機(jī)的Table 3中添加一個新的流表項。圖5描繪了源主機(jī)A(與交換機(jī)1直連)和目的主機(jī)B(與交換機(jī)6直連)之間的單播路徑建立過程。step1和step2是將ARP請求傳遞到DCFabric。當(dāng)DCFabric收到來自目的主機(jī)B的ARP響應(yīng)后,它會分別向交換機(jī)1和6的Table 3各下發(fā)一個流表項(step 3和step4),它們的格式分別為“ip, nw_dst=IP_A, actions=output:3”和“ip, nw_dst=IP_B, actions=output:1”。前者表示主機(jī)A與交換機(jī)1的端口3直連,后者表示主機(jī)B與交換機(jī)6的端口1直連。

接下來,DCFabric向源主機(jī)A發(fā)送一條ARP響應(yīng)消息,并分別在交換機(jī)1和6的Table 1中各裝載一條流表項,如圖5底部所示(step 3和step4)。以交換機(jī)1中的Table 1為例,前往目的主機(jī)B的數(shù)據(jù)包會被打上目的交換機(jī)6的ID標(biāo)簽(step 5和step6)。單播路徑沿途的交換機(jī)則會根據(jù)目的交換機(jī)的ID對數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā)。當(dāng)數(shù)據(jù)包到達(dá)目的交換機(jī)6后VLAN ID會被清除,然后該數(shù)據(jù)包會被轉(zhuǎn)發(fā)到目的主機(jī)B。反向傳遞也是如此,不同的是標(biāo)簽變成了交換機(jī)1的ID。

因此,在網(wǎng)絡(luò)運(yùn)行時,DCFabric可實(shí)時感知交換機(jī)的狀態(tài)是否發(fā)生任何改變(比如新交換機(jī)的加入或舊交換機(jī)的退出等),并以增量更新的方式通過對網(wǎng)絡(luò)的局部調(diào)整來快速構(gòu)建新的網(wǎng)絡(luò)拓?fù)浜徒粨Q機(jī)路徑。

SFabric的可擴(kuò)展性

SFabric具有良好的可擴(kuò)展性,尤其適用于包含大量交換機(jī)和主機(jī)的超大型數(shù)據(jù)中心。一般來說,網(wǎng)絡(luò)中的交換機(jī)和主機(jī)數(shù)量越多,往往意味著一個交換機(jī)中需要維護(hù)的TCAM表也就越大,相應(yīng)地會造成查找表的成本上升和效率下降。因此,網(wǎng)絡(luò)中的流表項數(shù)目便成為評估一套SDN方案是否具備良好可擴(kuò)展性的重要依據(jù)。在SFabric中,假設(shè)單個核心層交換機(jī)中最多含有s′個流表項(s′是接入層交換機(jī)的數(shù)目),和網(wǎng)絡(luò)中的主機(jī)數(shù)量無關(guān)。對于接入層的任何一個交換機(jī)來說,其中的Table 2的流表項上限為s′;Table 1的流表項個數(shù)H等于和當(dāng)前交換機(jī)下所有主機(jī)有會話通信關(guān)系的主機(jī)數(shù)目。假設(shè)單個主機(jī)最多會和α個主機(jī)通信,則H = p α,其中p為當(dāng)前交換機(jī)下的主機(jī)數(shù)目。因此,網(wǎng)絡(luò)中流表項數(shù)目N的最大值如式(1)所示,其中s為核心層和接入層中所有的交換機(jī)數(shù)目。

(1)又因?yàn)榫W(wǎng)絡(luò)中的主機(jī)數(shù)目遠(yuǎn)遠(yuǎn)大于交換機(jī)的數(shù)目,因此s + p α ≈ p α,則N ≈ s′ p α。然而,在大多數(shù)其它SDN方案(比如OpenDayLight和Ryu)中,每個交換機(jī)需要為網(wǎng)絡(luò)中的每對主機(jī)至少配置一個流表項,因而造成網(wǎng)絡(luò)中的流表項數(shù)目N′如式(2)所示,其中β為每條路徑平均包含的交換機(jī)數(shù)目。

(2)因?yàn)镹/N′ ≈ s′/s/β < 1/β,所以網(wǎng)絡(luò)的拓?fù)湓綄拸V(β越大),表明SFabric對降低網(wǎng)絡(luò)中流表項數(shù)目的效果越明顯。
在傳統(tǒng)的以太網(wǎng)或其它SDN方案中,核心層的交換機(jī)往往因?yàn)樾枰S護(hù)大量的信息而導(dǎo)致TCAM過于龐大,因此限制了網(wǎng)絡(luò)的規(guī)模。然而在SFabric中,接入層的交換機(jī)可以是軟件虛擬機(jī),因而相對物理交換機(jī)而言可維護(hù)更多的流表項;并且由于核心層交換機(jī)是面向接入層交換機(jī)的,所以每個核心交換機(jī)中的流表項數(shù)目可以是一個和主機(jī)數(shù)目無關(guān)的較小的固定值(s- s′) s′。交換機(jī)中流表數(shù)目的降低,不僅使SFabric具有非常良好的可擴(kuò)展性,而且同時意味著控制器的工作負(fù)載(包括流表信息維護(hù)以及與交換機(jī)之間的溝通交互操作等)和成本也相應(yīng)有所減少,所以SFabric有著更好的工作效率、速度和吞吐量。如表1所示,相對傳統(tǒng)網(wǎng)絡(luò)或已有的SDN技術(shù)而言,SFabric能幫助DCFabric在同一網(wǎng)絡(luò)中控制更多的交換機(jī)和主機(jī),并且擁有更快的工作速度。

 

傳統(tǒng)網(wǎng)絡(luò)

現(xiàn)有SDN

SFabric

交換機(jī)數(shù)量

N*10

N

N*100

主機(jī)數(shù)量

千級

百級

萬級

連接建立時間

秒級

秒級

毫秒級

表1. 各種技術(shù)之間的比較3、無縫融合云計算平臺OpenStack圖5. DCFabric和云計算平臺OpenStack的無縫融合

由于DCFabric可向OpenStack提供可支持最新Juno版本Neutron API接口,所以O(shè)penStack可通過該接口與控制器進(jìn)行網(wǎng)絡(luò)和地址管理方面的交互。作為OpenStack和下層網(wǎng)絡(luò)轉(zhuǎn)發(fā)設(shè)備(SDN交換機(jī))的中間媒介,DCFabric兼具傳統(tǒng)轉(zhuǎn)發(fā)設(shè)備中的網(wǎng)關(guān)、路由和NAT等功能,可對網(wǎng)絡(luò)資源進(jìn)行集中控制,并支持物理/虛擬交換機(jī)的混合組網(wǎng)。因此,如圖6所示,DCFabric可以與云計算平臺OpenStack實(shí)現(xiàn)無縫融合,對網(wǎng)絡(luò)資源實(shí)現(xiàn)集中管控、資源池化、多租戶共享和在二層網(wǎng)絡(luò)的安全隔離,提升面向公有云資源的服務(wù)體驗(yàn)(比如虛擬私有云(Virtual Private Cloud, VPC)),為大型數(shù)據(jù)中心的大吞吐量數(shù)據(jù)交換提供有力的技術(shù)保障,促進(jìn)云計算產(chǎn)業(yè)的發(fā)展。

4.與其它SDN控制器的比較表2. DCFabric與其它SDN控制器之間的比較

5、總結(jié)
DCFabric是我國第一款基于SDN的開源控制器,目標(biāo)是為大規(guī)模云計算數(shù)據(jù)中心提供一套切實(shí)可行的SDN開源技術(shù)方案,主要具備以下優(yōu)點(diǎn):
1)與已有的其它SDN控制器相比,DCFabric的靈活度強(qiáng)、可靠性高、智能化高、吞吐量大、延遲低。

2)其北向接口可與云計算平臺OpenStack無縫融合,支持各種網(wǎng)絡(luò)應(yīng)用,降低創(chuàng)建新服務(wù)的難度,為網(wǎng)絡(luò)應(yīng)用開發(fā)帶來敏捷性。

3)其南向接口支持OpenFlow協(xié)議的轉(zhuǎn)發(fā)設(shè)備,并且具備可與傳統(tǒng)網(wǎng)絡(luò)設(shè)備兼容的特性。

該項工作有利于促進(jìn)我國SDN技術(shù)在自主創(chuàng)新方面的快速進(jìn)步,以及云計算產(chǎn)業(yè)和數(shù)據(jù)中心業(yè)務(wù)的發(fā)展。

作者簡介:
蔣暕青@上海寬帶技術(shù)及應(yīng)用工程研究中心:SDN技術(shù)實(shí)踐者,大四北上思博倫實(shí)習(xí)半年,現(xiàn)工作地點(diǎn)上海

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號-6京公網(wǎng)安備 11010502049343號