用于異構(gòu)sdn網(wǎng)絡(luò)的水平方向通信方法和sdn系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及軟件定義網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別涉及一種用于異構(gòu)SDN網(wǎng)絡(luò)的水平方向 通信方法和SDN系統(tǒng)。
【背景技術(shù)】
[0002] 軟件定義網(wǎng)絡(luò)SDN于2010年由美國斯坦福大學(xué)Nick McKeown教授和加州大學(xué)伯 克利分校Scott Shenker教授等共同提出,其出發(fā)點(diǎn)是通過對網(wǎng)絡(luò)控制的抽象重新構(gòu)建一 個轉(zhuǎn)發(fā)平面和控制平面分離的網(wǎng)絡(luò)體系,支持網(wǎng)絡(luò)功能的不斷演進(jìn)。軟件定義網(wǎng)絡(luò)將計(jì)算 機(jī)體系結(jié)構(gòu)思想引入網(wǎng)絡(luò)研宄領(lǐng)域,開放性是軟件定義網(wǎng)絡(luò)的本質(zhì)特性。通過網(wǎng)絡(luò)設(shè)備的 開放、控制平面的開放和協(xié)議實(shí)現(xiàn)的開放,使得網(wǎng)絡(luò)不再是一個封閉的系統(tǒng),從而實(shí)現(xiàn)網(wǎng)絡(luò) 體系結(jié)構(gòu)的持續(xù)演進(jìn)。
[0003] 軟件定義網(wǎng)絡(luò)的基本思想是不應(yīng)無限制地縱容網(wǎng)絡(luò)復(fù)雜度的增加,網(wǎng)絡(luò)復(fù)雜度已 經(jīng)越來越難以掌控,需要對網(wǎng)絡(luò)進(jìn)行抽象,以屏蔽底層復(fù)雜度,為上層提供簡單的、高效的 配置與管理。SDN的基本特征有:控制與轉(zhuǎn)發(fā)分離,控制平面與轉(zhuǎn)發(fā)平面之間的開放接口, 邏輯上的集中控制。
[0004] 在軟件定義網(wǎng)絡(luò)中,控制平面和轉(zhuǎn)發(fā)平面的功能被顯式分開。網(wǎng)絡(luò)中的"智能"集 中于控制平面,包括制定策略、下發(fā)流表等;數(shù)據(jù)平面根據(jù)控制平面的指令進(jìn)行"無智能"的 轉(zhuǎn)發(fā)。這種智能集中化的體系結(jié)構(gòu)賦予軟件定義網(wǎng)絡(luò)很大的靈活性,但是集中式的拓?fù)浣Y(jié) 構(gòu)有其內(nèi)在缺陷,即有可能限制軟件定義網(wǎng)絡(luò)的可擴(kuò)展性。特別是在大規(guī)模、異構(gòu)化的網(wǎng)絡(luò) 環(huán)境中,由于基于不同的開發(fā)工具來實(shí)現(xiàn)控制器,這些異構(gòu)的SDN控制器之間并不能完成 協(xié)作。
[0005] 傳統(tǒng)的SDN多控制器方案在設(shè)計(jì)控制器架構(gòu)時(shí)沒有將控制器之間的協(xié)作功能作 為重要特性進(jìn)行考慮,因此缺乏模塊化和清晰的解耦合機(jī)制,不能實(shí)現(xiàn)SDN控制器的異構(gòu) 化,不同SDN控制器之間的互聯(lián)存在很大局限。
[0006] 因此,亟需一種能夠?qū)崿F(xiàn)異構(gòu)的SDN控制器之間協(xié)作通信的方法。
【發(fā)明內(nèi)容】
[0007] 本發(fā)明的目的之一在于解決現(xiàn)有技術(shù)中異構(gòu)的SDN控制器之間不能完成協(xié)作通 信的弊端。
[0008] 本發(fā)明的實(shí)施例首先提供一種用于異構(gòu)SDN網(wǎng)絡(luò)的水平方向通信方法,包括以下 步驟:
[0009] 獲取待分發(fā)的本地拓?fù)湫畔⒑捅镜毓?jié)點(diǎn)狀態(tài);
[0010] 對本地拓?fù)湫畔ⅰ⒈镜毓?jié)點(diǎn)狀態(tài)和控制器標(biāo)識進(jìn)行封裝得到ONEx本地?cái)?shù)據(jù)報(bào)文, 發(fā)送ONEx本地?cái)?shù)據(jù)報(bào)文,以通過云端分布式數(shù)據(jù)庫共享本地拓?fù)湫畔⒑捅镜毓?jié)點(diǎn)狀態(tài);
[0011] 接收并解析攜帶ONEx簇全局網(wǎng)絡(luò)信息的云端廣播報(bào)文;
[0012] 從已解析的ONEx簇全局網(wǎng)絡(luò)信息中獲得遠(yuǎn)程SDN控制器所管理的遠(yuǎn)程拓?fù)湫畔?和遠(yuǎn)程節(jié)點(diǎn)狀態(tài)。
[0013] 在一個實(shí)施例中,在對本地拓?fù)湫畔?、本地?jié)點(diǎn)狀態(tài)和控制器標(biāo)識進(jìn)行封裝的步 驟中包括:
[0014] 對本地拓?fù)湫畔⒑捅镜毓?jié)點(diǎn)狀態(tài)封裝為若干個TLV結(jié)構(gòu)的ONEx數(shù)據(jù)單元;
[0015] 為ONEx數(shù)據(jù)單元添加定長的包頭單元得到ONEx本地?cái)?shù)據(jù)報(bào)文,其中,包頭單元包 括所述控制器標(biāo)識。
[0016] 在一個實(shí)施例中,在發(fā)送ONEx本地?cái)?shù)據(jù)報(bào)文的步驟中包括:
[0017] 通過套接字服務(wù)將ONEx本地?cái)?shù)據(jù)報(bào)文由原生控制器進(jìn)程發(fā)送至云端服務(wù)器進(jìn) 程。
[0018] 在一個實(shí)施例中,在接收并解析攜帶ONEx簇全局網(wǎng)絡(luò)信息的云端廣播報(bào)文的步 驟中包括:
[0019] 對云端廣播報(bào)文進(jìn)行解析,得到ONEx簇全局網(wǎng)絡(luò)信息;
[0020] 通過套接字服務(wù)將ONEx簇全局網(wǎng)絡(luò)信息由服務(wù)器進(jìn)程發(fā)送至原生控制器進(jìn)程。
[0021] 本發(fā)明的實(shí)施例還提供一種用于異構(gòu)SDN網(wǎng)絡(luò)的水平方向通信方法,包括以下步 驟:
[0022] 接收并解析ONEx本地?cái)?shù)據(jù)報(bào)文;
[0023] 將ONEx本地?cái)?shù)據(jù)報(bào)文中攜帶的本地拓?fù)湫畔⒑捅镜毓?jié)點(diǎn)狀態(tài)發(fā)送至云端分布式 數(shù)據(jù)庫,以通過云端分布式數(shù)據(jù)庫共享本地拓?fù)湫畔⒑捅镜毓?jié)點(diǎn)狀態(tài)以形成ONEx簇全局 網(wǎng)絡(luò)信息,其中,所述ONEx簇全局網(wǎng)絡(luò)信息中包括遠(yuǎn)程SDN控制器所管理的遠(yuǎn)程拓?fù)湫畔?和遠(yuǎn)程節(jié)點(diǎn)狀態(tài);
[0024] 對ONEx簇全局網(wǎng)絡(luò)信息進(jìn)行封裝得到云端廣播報(bào)文,廣播所述云端廣播報(bào)文。
[0025] 在一個實(shí)施例中,在接收并解析ONEx本地?cái)?shù)據(jù)報(bào)文的步驟中包括:
[0026] 對ONEx本地?cái)?shù)據(jù)報(bào)文進(jìn)行解析,得到TLV結(jié)構(gòu)的ONEx數(shù)據(jù)單元中封裝的本地拓 撲信息和本地節(jié)點(diǎn)狀態(tài);
[0027] 通過非阻塞NIO套接字服務(wù)將本地拓?fù)湫畔⒑捅镜毓?jié)點(diǎn)狀態(tài)由服務(wù)器進(jìn)程發(fā)送 至云端分布式數(shù)據(jù)庫。
[0028] 本發(fā)明的實(shí)施例還提供一種用于異構(gòu)SDN網(wǎng)絡(luò)的SDN控制器,包括:
[0029] 本地信息獲取模塊,其獲取待分發(fā)的本地拓?fù)湫畔⒑捅镜毓?jié)點(diǎn)狀態(tài);
[0030] 封裝模塊,其對本地拓?fù)湫畔?、本地?jié)點(diǎn)狀態(tài)和控制器標(biāo)識進(jìn)行封裝得到ONEx本 地?cái)?shù)據(jù)報(bào)文,發(fā)送ONEx本地?cái)?shù)據(jù)報(bào)文,以通過云端分布式數(shù)據(jù)庫共享本地拓?fù)湫畔⒑捅镜?節(jié)點(diǎn)狀態(tài);
[0031] 解析模塊,其接收并解析攜帶ONEx簇全局網(wǎng)絡(luò)信息的云端廣播報(bào)文;
[0032] 遠(yuǎn)程信息獲取模塊,其從已解析的ONEx簇全局網(wǎng)絡(luò)信息中獲得遠(yuǎn)程SDN控制器所 管理的遠(yuǎn)程拓?fù)湫畔⒑瓦h(yuǎn)程節(jié)點(diǎn)狀態(tài)。
[0033] 在一個實(shí)施例中,所述封裝模塊還包括:
[0034] ONEx數(shù)據(jù)處理子模塊,其用于對本地拓?fù)湫畔⒑捅镜毓?jié)點(diǎn)狀態(tài)封裝為若干個TLV 結(jié)構(gòu)的ONEx數(shù)據(jù)單元;
[0035] 包頭處理子模塊,其用于為ONEx數(shù)據(jù)單元添加定長的包頭單元得到ONEx本地?cái)?shù) 據(jù)報(bào)文,其中,包頭單元包括所述控制器標(biāo)識。
[0036] 在一個實(shí)施例中,所述封裝模塊還包括:
[0037] 發(fā)送子模塊,其用于通過套接字服務(wù)將ONEx本地?cái)?shù)據(jù)報(bào)文由原生控制器進(jìn)程發(fā) 送至云端服務(wù)器進(jìn)程。
[0038] 在一個實(shí)施例中,所述解析模塊還用于:
[0039] 對云端廣播報(bào)文進(jìn)行解析,得到ONEx簇全局網(wǎng)絡(luò)信息;
[0040] 通過套接字服務(wù)將ONEx簇全局網(wǎng)絡(luò)信息由服務(wù)器進(jìn)程發(fā)送至原生控制器進(jìn)程。
[0041] 本發(fā)明的實(shí)施例還提供一種用于異構(gòu)SDN網(wǎng)絡(luò)的服務(wù)器,包括:
[0042] 本地信息接收模塊,其用于接收并解析ONEx本地?cái)?shù)據(jù)報(bào)文;
[0043] 共享模塊,其用于將ONEx本地?cái)?shù)據(jù)報(bào)文中攜帶的本地拓?fù)湫畔⒑捅镜毓?jié)點(diǎn)狀態(tài) 發(fā)送至云端分布式數(shù)據(jù)庫,以通過云端分布式數(shù)據(jù)庫共享本地拓?fù)湫畔⒑捅镜毓?jié)點(diǎn)狀態(tài)以 形成ONEx簇全局網(wǎng)絡(luò)信息,其中,所述ONEx簇全局網(wǎng)絡(luò)信息中包括遠(yuǎn)程SDN控制器所管理 的遠(yuǎn)程拓?fù)湫畔⒑瓦h(yuǎn)程節(jié)點(diǎn)狀態(tài);
[0044] 廣播模塊,其用于對ONEx簇全局網(wǎng)絡(luò)信息進(jìn)行封裝得到云端廣播報(bào)文,廣播所述 云端廣播報(bào)文。
[0045] 在一個實(shí)施例中,所述本地信息接收模塊還用于:
[0046] 對ONEx本地?cái)?shù)據(jù)報(bào)文進(jìn)行解析,得到TLV結(jié)構(gòu)的ONEx數(shù)據(jù)單元中封裝的本地拓 撲信息和本地節(jié)點(diǎn)狀態(tài);
[0047] 通過非阻塞NIO套接字服務(wù)將本地拓?fù)湫畔⒑捅镜毓?jié)點(diǎn)狀態(tài)由服務(wù)器進(jìn)程發(fā)送 至云端分布式數(shù)據(jù)庫。
[0048] 本發(fā)明的實(shí)施例還提供一種異構(gòu)SDN通信系統(tǒng),包括SDN控制器和服務(wù)器,其中,
[0049] 所述SDN控制器用于獲取待分發(fā)的本地拓?fù)湫畔⒑捅镜毓?jié)點(diǎn)狀態(tài),對本地拓?fù)湫?息、本地節(jié)點(diǎn)狀態(tài)和控制器標(biāo)識進(jìn)行封裝得到ONEx本地?cái)?shù)據(jù)報(bào)文,發(fā)送ONEx本地?cái)?shù)據(jù)報(bào) 文,以通過云端分布式數(shù)據(jù)庫共享本地拓?fù)湫畔⒑捅镜毓?jié)點(diǎn)狀態(tài),接收并解析攜帶ONEx簇 全局網(wǎng)絡(luò)信息的云端廣播報(bào)文,從已解析的ONEx簇全局網(wǎng)絡(luò)信息中獲得遠(yuǎn)程SDN控制器所 管理的遠(yuǎn)程拓?fù)湫畔⒑瓦h(yuǎn)程節(jié)點(diǎn)狀態(tài);
[0050] 所述服務(wù)器用于接收并解析ONEx本地?cái)?shù)據(jù)報(bào)文,將ONEx本地?cái)?shù)據(jù)報(bào)文中攜帶的 本地拓?fù)湫畔⒑捅镜毓?jié)點(diǎn)狀態(tài)發(fā)送至云端分布式數(shù)據(jù)庫,以通過云端分布式數(shù)據(jù)庫共享本 地拓?fù)湫畔⒑捅镜毓?jié)點(diǎn)狀態(tài)以形成ONEx簇全局網(wǎng)絡(luò)信息,其中,所述ONEx簇全局網(wǎng)絡(luò)信息 中包括遠(yuǎn)程SDN控制器所管理的遠(yuǎn)程拓?fù)湫畔⒑瓦h(yuǎn)程節(jié)點(diǎn)狀態(tài),對ONEx簇全局網(wǎng)絡(luò)信息進(jìn) 行封裝得到云端廣播報(bào)文,廣播所述云端廣播報(bào)文。
[0051] 在一個實(shí)施例中,所述SDN控制器一一對應(yīng)地連接至所述服務(wù)器,所述服務(wù)器以 無拓?fù)浞绞交ヂ?lián)來共享ONEx簇全局網(wǎng)絡(luò)信息;
[0052] 所述SDN控制器包括本地SDN控制器和遠(yuǎn)程SDN控制器;
[0053] 所述控制器包括一個本地SDN控制器和至少一個遠(yuǎn)程SDN控制器,所述本地控制 器根據(jù)ONEx簇全局網(wǎng)絡(luò)信息中遠(yuǎn)程SDN控制器所管理的遠(yuǎn)程拓?fù)湫畔⒑瓦h(yuǎn)程節(jié)點(diǎn)狀態(tài)選 擇一個或多個遠(yuǎn)程控制器進(jìn)行訪問。
[0054] 在一個實(shí)施例中,所述服務(wù)器通過分布式數(shù)據(jù)引擎查詢同伴服務(wù)器的地址,建立 和同伴服務(wù)器之間的TCP連接;
[0055] 在所述TCP連接的空閑時(shí)間達(dá)到預(yù)設(shè)值的情況下,關(guān)閉所述TCP鏈接;
[0056] 在所述TCP連接的空閑時(shí)間未達(dá)到預(yù)設(shè)值的情況下,所述TCP鏈接保持激活狀態(tài)。
[0057] 在一個實(shí)施例中,在超載狀態(tài)下,本地SDN控制器確定待轉(zhuǎn)發(fā)的包輸入負(fù)載信息, 根據(jù)遠(yuǎn)程節(jié)點(diǎn)狀態(tài)選擇空閑的遠(yuǎn)程SDN控制器,將待轉(zhuǎn)發(fā)的包輸入負(fù)載