Gather:一種優(yōu)化In-band控制的SDN網(wǎng)絡(luò)中控制流流表數(shù)量的方式
一、前言
帶內(nèi)控制(in-band)的SDN網(wǎng)絡(luò)由于有著良好的靈活性以及部署的經(jīng)濟(jì)性,已經(jīng)受到了越來越多的關(guān)注。但是在帶內(nèi)控制的SDN網(wǎng)絡(luò)中,控制流和數(shù)據(jù)流共用一個(gè)一個(gè)物理鏈路進(jìn)行轉(zhuǎn)發(fā)。因此,交換機(jī)需要存儲用于轉(zhuǎn)發(fā)控制流的流表項(xiàng)。這在一些大型網(wǎng)絡(luò),例如數(shù)據(jù)中心網(wǎng)絡(luò)中會造成一些接近控制器的SDN交換機(jī)流表項(xiàng)過多的問題。大量的流表不僅會帶來管理的復(fù)雜,還會占用例如TCAM等網(wǎng)絡(luò)資源。所以我們提出了Gather:一種能夠優(yōu)化這些用于轉(zhuǎn)發(fā)控制流的流表項(xiàng)的方法。
二、設(shè)計(jì)介紹
(1) 設(shè)計(jì)根據(jù)
下圖是傳統(tǒng)帶內(nèi)控制下的SDN網(wǎng)絡(luò)的流表分布圖(本文中只關(guān)注一個(gè)控制器的情況):
圖表 1:傳統(tǒng)SDN網(wǎng)絡(luò)中流表的組織方式
在一個(gè)網(wǎng)絡(luò)拓?fù)渲?,如果使用最短路徑算法?jì)算各個(gè)交換機(jī)到控制器的路徑,可以得到一個(gè)樹狀的控制拓?fù)鋱D,Gather便是基于這一樹狀的拓?fù)鋱D進(jìn)行優(yōu)化。從圖可以看出傳統(tǒng)網(wǎng)絡(luò)中流表存儲的特點(diǎn)是靠近控制器的交換機(jī)需要為之后的子節(jié)點(diǎn)存儲控制流的流表項(xiàng),因此越是靠近樹根(控制器)的交換機(jī)需要存儲更多的控制流的流表項(xiàng)。而在交換機(jī)數(shù)量很多的網(wǎng)絡(luò)中,例如數(shù)據(jù)中心網(wǎng)絡(luò),這會造成靠近控制器的交換機(jī)出現(xiàn)一個(gè)明顯的流表數(shù)量激增的現(xiàn)象。Gather的主要目標(biāo)是減少這些不必要的流表開銷。
(2)設(shè)計(jì)思路
Gather的基本思路是將拓?fù)渲械慕粨Q機(jī)劃分為一個(gè)個(gè)組(group)。一個(gè)組相當(dāng)于整個(gè)控制樹的一個(gè)聯(lián)通子集。同時(shí)一個(gè)組由一個(gè)標(biāo)簽(label or tag)來表示。實(shí)現(xiàn)標(biāo)簽的方式有很多,在本文中,我們使用segment routing來實(shí)現(xiàn)標(biāo)簽系統(tǒng)。下圖是Gather的示意圖:
圖表 2:Gather 實(shí)現(xiàn)流表項(xiàng)優(yōu)化示意圖
從圖中可以看出S2,S3,S4被分為一組,所有被發(fā)往該組的包都被打上X標(biāo)簽(label)。S2在收到包之后,通過匹配X標(biāo)簽,就會知道該包是發(fā)往組內(nèi)交換機(jī)的數(shù)據(jù),之后其會繼續(xù)在流表2中匹配該包的流表,決定轉(zhuǎn)發(fā)策略。同時(shí),在對拓?fù)溥M(jìn)行一輪優(yōu)化之后,仍然可以在現(xiàn)有的分組基礎(chǔ)上進(jìn)行第二輪優(yōu)化。具體的做法是將組都視作交換機(jī),進(jìn)行替換。之后會得到一個(gè)縮小的拓?fù)?,可以在該拓?fù)渖侠^續(xù)重復(fù)優(yōu)化,進(jìn)一步減少控制流的流表。但同時(shí)數(shù)據(jù)包中的標(biāo)簽會增加一個(gè)。
(3)如何找出有效的組(group)?
可以找出有效的組的方法有很多,可以根據(jù)需求自己設(shè)計(jì)需要的算法。在介紹算法之前,首先給出其中的一些定義:Node distance指一個(gè)節(jié)點(diǎn)到控制器的中間節(jié)點(diǎn)的個(gè)數(shù),S指子節(jié)點(diǎn)的集合,G是最終輸出的組的集合,time of optimization是指全拓?fù)鋬?yōu)化的次數(shù),一次optimization之后需要修改拓?fù)?進(jìn)行組和交換機(jī)的替換)。在本算法中,基本的思路是先利用深度優(yōu)先算法,從葉子節(jié)點(diǎn)開始計(jì)算。從算法中可以看出,其使用迭代的思路,一直延伸到一個(gè)葉子節(jié)點(diǎn)后向上逐個(gè)節(jié)點(diǎn)進(jìn)行計(jì)算和比較。之后其會根據(jù)比較的結(jié)果決定組的分布。
三、設(shè)計(jì)測試
首先,我們對數(shù)據(jù)包中的label(本論文中使用segment routing實(shí)現(xiàn)組的結(jié)構(gòu))對于轉(zhuǎn)發(fā)延遲的影響進(jìn)行測試。測試結(jié)果如下:
圖表 3 Label數(shù)量對轉(zhuǎn)發(fā)延遲的測試結(jié)果圖
從表格中可以看出label對于轉(zhuǎn)發(fā)延遲的影響比較小,即使在3個(gè)label的情況下也只比傳統(tǒng)轉(zhuǎn)發(fā)多了4%的延遲。之后我們對優(yōu)化流表的能力進(jìn)行測試,結(jié)果如下:
圖表 4 流表優(yōu)化結(jié)構(gòu)示意圖
在三種拓?fù)渲锌梢钥闯?**次優(yōu)化的結(jié)果普遍較好,而第二次,第三次優(yōu)化的比例下降的特別快。這是因?yàn)樵谝槐閮?yōu)化,將組替換為交換機(jī)之后的拓?fù)鋾葍?yōu)化之前的拓?fù)湫『芏唷R虼丝梢詢?yōu)化的流表項(xiàng)也會少很多。同時(shí),這與算法的設(shè)計(jì)也會有一定的關(guān)系。