軟件定義網(wǎng)絡(luò)中的轉(zhuǎn)發(fā)設(shè)備控制方法及設(shè)備的制作方法
【專利摘要】本發(fā)明提出軟件定義網(wǎng)絡(luò)中的轉(zhuǎn)發(fā)設(shè)備控制方法及轉(zhuǎn)發(fā)設(shè)備。方法包括:SDN中的第一轉(zhuǎn)發(fā)設(shè)備發(fā)現(xiàn)自身與控制器之間的帶外連接中斷,通過自身的相鄰轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給控制器。本發(fā)明在SDN中的帶外連接中斷后,仍能夠?qū)崿F(xiàn)控制器對轉(zhuǎn)發(fā)設(shè)備的控制。
【專利說明】軟件定義網(wǎng)絡(luò)中的轉(zhuǎn)發(fā)設(shè)備控制方法及設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及軟件定義網(wǎng)絡(luò)(SDN, Software Defined Network)【技術(shù)領(lǐng)域】,尤其涉及基于開放流(OpenFlow)的軟件定義網(wǎng)絡(luò)中的轉(zhuǎn)發(fā)設(shè)備控制方法及轉(zhuǎn)發(fā)設(shè)備、控制器。
【背景技術(shù)】
[0002]為方便理解,首先給出如下說明:
[0003]OpenFlow:是一種SDN架構(gòu)中定義控制器和轉(zhuǎn)發(fā)層之間的通信接口標準。OpenFlow允許直接訪問和操作網(wǎng)絡(luò)設(shè)備的轉(zhuǎn)發(fā)平面,這些網(wǎng)絡(luò)設(shè)備可能是物理上的,也可能是虛擬的。
[0004]OpenFlow的思想是分離控制平面和數(shù)據(jù)平面,二者之間使用標準的協(xié)議通信;數(shù)據(jù)平面采用基于流的方式進行轉(zhuǎn)發(fā)。
[0005]OpenFlow 網(wǎng)絡(luò)由 OpenFlow 轉(zhuǎn)發(fā)設(shè)備(如:0penFlow Switch)和控制器(OpenFlowController)通過安全通道(Secure Channel)組成。
[0006]SDN:SDN與傳統(tǒng)網(wǎng)絡(luò)的最大區(qū)別,是將控制平面和網(wǎng)絡(luò)轉(zhuǎn)發(fā)平面分離開來,網(wǎng)絡(luò)轉(zhuǎn)發(fā)平面將不再擁有控制功能,將控制平面交給獨立于轉(zhuǎn)發(fā)平面之外的操作系統(tǒng),特性則基于操作系統(tǒng)進行定制。
[0007]控制器(Controller):是OpenFlow架構(gòu)中的控制平面。下發(fā)各種指令通過安全信道控制OpenFlow交換機(轉(zhuǎn)發(fā)設(shè)備),用戶可以通過編程自己定義控制平面從而定義整個網(wǎng)絡(luò)。
[0008]流表:為ControlIer下發(fā)到OpenFlow交換機的硬件表項,通過不同的匹配域匹配不同的報文,并對這些報文進行各種處理。
[0009]Packet-1n:指的是轉(zhuǎn)移報文的控制權(quán)到Controller。對于匹配上流表項或者未匹配上流表項(Table Miss)后轉(zhuǎn)發(fā)到對應(yīng)Controller的保留端口的報文均要通過Packet-1n消息送到Controller。Packet-1n消息可以攜帶整個需要轉(zhuǎn)移控制權(quán)的報文,也可以通過在OpenFlow交換機內(nèi)部設(shè)置報文的緩存器(Buffer)來僅攜帶報文頭以及其Buffer ID傳輸給Controller。Controller在接收到Packet-1n消息后會對其接收到的報文或者報文頭和Buffer ID進行處理,并發(fā)回Packet-out消息通知OpenFlow交換機如何處理該報文。
[0010]Packet-out:用于Controller通過OpenFlow交換機特定端口發(fā)送報文,這些報文是包含在接收到的Packet-1n消息中的。通常Packet-Out消息包含整個之前接收到的Packet-1n消息所攜帶的報文或者Buffer ID。Packet-out消息需要包含一個動作列表,當OpenFlow交換機收到該動作列表后會對Packet-Out消息所攜帶的報文執(zhí)行該動作列表。
[0011]目前,Controller是通過特定的OpenFlow交換機管理口與OpenFlow交換機進行交互,以實現(xiàn)對OpenFlow交換機的控制的,這種方式稱為帶外控制(0ut_band control)方式。
【發(fā)明內(nèi)容】
[0012]本發(fā)明提供SDN中的轉(zhuǎn)發(fā)設(shè)備控制方法及轉(zhuǎn)發(fā)設(shè)備、控制器,以在基于OpenFlow的SDN中的帶外連接中斷后,仍能夠?qū)崿F(xiàn)控制器對轉(zhuǎn)發(fā)設(shè)備的控制。
[0013]本發(fā)明的技術(shù)方案是這樣實現(xiàn)的:
[0014]一種軟件定義網(wǎng)絡(luò)SDN中的轉(zhuǎn)發(fā)設(shè)備控制方法,初始時,各轉(zhuǎn)發(fā)設(shè)備由控制器帶外控制,該方法包括:
[0015]SDN中的任一轉(zhuǎn)發(fā)設(shè)備,設(shè)第一轉(zhuǎn)發(fā)設(shè)備發(fā)現(xiàn)自身與控制器之間的帶外連接中斷,則通過自身的相鄰轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給控制器以使控制器對自身的控制方式由帶外控制切換為帶內(nèi)控制。
[0016]所述第一轉(zhuǎn)發(fā)設(shè)備通過自身的相鄰轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給控制器以使控制器對自身的控制方式由帶外控制切換為帶內(nèi)控制包括:
[0017]第一轉(zhuǎn)發(fā)設(shè)備在自身的相鄰轉(zhuǎn)發(fā)設(shè)備中選擇一個,通過所選擇的轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給控制器以使控制器對自身的控制方式由帶外控制切換為帶內(nèi)控制。
[0018]所述第一轉(zhuǎn)發(fā)設(shè)備在自身的相鄰轉(zhuǎn)發(fā)設(shè)備中選擇一個為:
[0019]第一轉(zhuǎn)發(fā)設(shè)備根據(jù)自身與各相鄰轉(zhuǎn)發(fā)設(shè)備的連接端口的負載狀態(tài),選擇一個當前單位時間內(nèi)空閑帶寬最大的端口,該端口連接的轉(zhuǎn)發(fā)設(shè)備即為所選擇的相鄰轉(zhuǎn)發(fā)設(shè)備。
[0020]所述第一轉(zhuǎn)發(fā)設(shè)備發(fā)現(xiàn)自身與控制器之間的帶外連接中斷之后、在自身的相鄰轉(zhuǎn)發(fā)設(shè)備中選擇一個之前進一步包括:第一轉(zhuǎn)發(fā)設(shè)備在自身的流表中下發(fā)一條帶內(nèi)控制流表項,該表項中的源地址為控制器的地址,動作為將報文傳輸?shù)奖镜鼐W(wǎng)絡(luò)棧;
[0021]且,所述方法進一步包括:所述控制器在發(fā)現(xiàn)自身與第一轉(zhuǎn)發(fā)設(shè)備的帶外連接中斷時,向第一轉(zhuǎn)發(fā)設(shè)備的所有相鄰轉(zhuǎn)發(fā)設(shè)備的流表下發(fā)一條帶內(nèi)控制流表項,該表項中的目的地址為控制器的地址,動作為將整個報文上送到控制器,以便:第一轉(zhuǎn)發(fā)設(shè)備選擇的相鄰轉(zhuǎn)發(fā)設(shè)備接收到第一轉(zhuǎn)發(fā)設(shè)備發(fā)來的開放流協(xié)議報文后,根據(jù)所述控制器下發(fā)的所述帶內(nèi)控制流表項將該報文通過管理口上送控制器;
[0022]且,所述第一轉(zhuǎn)發(fā)設(shè)備通過所選擇的轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給控制器之后進一步包括:第一轉(zhuǎn)發(fā)設(shè)備接收所選擇的相鄰轉(zhuǎn)發(fā)設(shè)備轉(zhuǎn)發(fā)的開放流協(xié)議響應(yīng)報文,根據(jù)自身的帶內(nèi)控制流表項,將該報文傳輸?shù)奖镜鼐W(wǎng)絡(luò)棧,所述開放流協(xié)議響應(yīng)報文為控制器接收到所述開放流協(xié)議報文后生成且發(fā)送給所選擇的相鄰轉(zhuǎn)發(fā)設(shè)備的。
[0023]所述第一轉(zhuǎn)發(fā)設(shè)備通過所選擇的轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給控制器以使控制器對自身的控制方式由帶外控制切換為帶內(nèi)控制之后進一步包括:
[0024]若第一轉(zhuǎn)發(fā)設(shè)備未接收到發(fā)出的開放流協(xié)議報文的響應(yīng)報文,則在自身的相鄰轉(zhuǎn)發(fā)設(shè)備中重新選擇一個,向該新選擇的相鄰轉(zhuǎn)發(fā)設(shè)備發(fā)送開放流協(xié)議報文。
[0025]所述第一轉(zhuǎn)發(fā)設(shè)備通過自身的相鄰轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給控制器以使控制器對自身的控制方式由帶外控制切換為帶內(nèi)控制包括:
[0026]第一轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給自身的所有相鄰轉(zhuǎn)發(fā)設(shè)備,由控制器選擇的相鄰轉(zhuǎn)發(fā)設(shè)備將該開放流協(xié)議報文轉(zhuǎn)發(fā)給控制器,以使控制器對所述第一轉(zhuǎn)發(fā)設(shè)備的控制方式由帶外控制切換為帶內(nèi)控制,其中,控制器選擇的相鄰轉(zhuǎn)發(fā)設(shè)備為:控制器在發(fā)現(xiàn)自身與第一轉(zhuǎn)發(fā)設(shè)備之間的帶外連接中斷后,在第一轉(zhuǎn)發(fā)設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備中選擇一個,由所選擇的轉(zhuǎn)發(fā)設(shè)備轉(zhuǎn)發(fā)第一轉(zhuǎn)發(fā)設(shè)備的開放流協(xié)議報文到控制器。
[0027]所述第一轉(zhuǎn)發(fā)設(shè)備發(fā)現(xiàn)自身與控制器之間的帶外連接中斷之后進一步包括:第一轉(zhuǎn)發(fā)設(shè)備在自身的流表中下發(fā)一條帶內(nèi)控制流表項,該表項中的源地址為控制器的地址,動作為將報文傳輸?shù)奖镜鼐W(wǎng)絡(luò)棧;
[0028]所述控制器在第一轉(zhuǎn)發(fā)設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備中選擇一個之后進一步包括:控制器向所選擇的相鄰轉(zhuǎn)發(fā)設(shè)備的流表下發(fā)一條帶內(nèi)控制流表項,該表項中的目的地址為控制器的地址,動作為將整個報文上送到控制器,以便:該相鄰轉(zhuǎn)發(fā)設(shè)備接收到第一轉(zhuǎn)發(fā)設(shè)備發(fā)來的開放流協(xié)議報文后,根據(jù)所述控制器下發(fā)的所述帶內(nèi)控制流表項將該報文通過管理口上送控制器;
[0029]且,所述第一轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給自身的所有相鄰轉(zhuǎn)發(fā)設(shè)備之后進一步包括:第一轉(zhuǎn)發(fā)設(shè)備接收相鄰轉(zhuǎn)發(fā)設(shè)備轉(zhuǎn)發(fā)的開放流協(xié)議響應(yīng)報文,根據(jù)自身的帶內(nèi)控制流表項,將該報文傳輸?shù)奖镜鼐W(wǎng)絡(luò)棧,所述開放流協(xié)議響應(yīng)報文為控制器接收到所述開放流協(xié)議報文后生成且發(fā)送給所選擇的相鄰轉(zhuǎn)發(fā)設(shè)備的。
[0030]所述第一轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給自身的所有相鄰轉(zhuǎn)發(fā)設(shè)備,由控制器選擇的相鄰轉(zhuǎn)發(fā)設(shè)備將該開放流協(xié)議報文轉(zhuǎn)發(fā)給控制器之后進一步包括:
[0031]所述控制器在預(yù)設(shè)時長內(nèi)未接收到來自第一轉(zhuǎn)發(fā)設(shè)備的保活報文,則在第一轉(zhuǎn)發(fā)設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備中重新選擇一個,將所選擇的轉(zhuǎn)發(fā)設(shè)備作為轉(zhuǎn)發(fā)第一轉(zhuǎn)發(fā)設(shè)備的開放流協(xié)議報文的新設(shè)備。
[0032]所述第一轉(zhuǎn)發(fā)設(shè)備發(fā)現(xiàn)自身與控制器之間的帶外連接中斷之后進一步包括:
[0033]當?shù)谝晦D(zhuǎn)發(fā)設(shè)備發(fā)現(xiàn)自身與控制器間的帶外連接恢復(fù)時,恢復(fù)通過管理口與控制器交互開放流協(xié)議報文。
[0034]所述第一轉(zhuǎn)發(fā)設(shè)備通過自身的相鄰轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給控制器包括:
[0035]第一轉(zhuǎn)發(fā)設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備接收第一轉(zhuǎn)發(fā)設(shè)備發(fā)來的開放流協(xié)議報文,將該開放流協(xié)議報文封裝到Packet-1n消息,且在該消息中指示該開放流協(xié)議報文在本設(shè)備上的入端口,將該消息通過本設(shè)備的管理口上送控制器;且,第一轉(zhuǎn)發(fā)設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備接收控制器返回的Packet-out消息,該消息包含所述開放流協(xié)議報文的響應(yīng)報文,同時包含該響應(yīng)報文對應(yīng)的動作:轉(zhuǎn)發(fā)到一出端口,該出端口為所述Packet-1n消息指示的入端口,第一轉(zhuǎn)發(fā)設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備根據(jù)Packet-out消息包含的動作,將該消息中的響應(yīng)報文轉(zhuǎn)發(fā)到對應(yīng)的出端口。
[0036]一種轉(zhuǎn)發(fā)設(shè)備,位于基于開放流的SDN中,且,該轉(zhuǎn)發(fā)設(shè)備由控制器帶外控制,該轉(zhuǎn)發(fā)設(shè)備包括:
[0037]帶外連接監(jiān)測模塊:發(fā)現(xiàn)本設(shè)備與控制器之間的帶外連接中斷,向帶外連接切換模塊發(fā)送帶外連接中斷指示;
[0038]帶外連接切換模塊:當接收到所述帶外連接中斷指示后,通過本設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給控制器以使控制器對本設(shè)備的控制方式由帶外控制切換為帶內(nèi)控制。
[0039]所述帶外連接切換模塊進一步用于,在通過本設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給控制器時,通過本設(shè)備選擇的相鄰轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給控制器。
[0040]所述帶外連接切換模塊進一步用于,根據(jù)本設(shè)備與各相鄰轉(zhuǎn)發(fā)設(shè)備的連接端口的負載狀態(tài),選擇一個當前單位時間內(nèi)空閑帶寬最大的端口,該端口連接的轉(zhuǎn)發(fā)設(shè)備即為所選擇的相鄰轉(zhuǎn)發(fā)設(shè)備。
[0041]所述帶外連接切換模塊進一步用于,未接收到發(fā)出的開放流協(xié)議報文的響應(yīng)報文,則在本設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備中重新選擇一個,向該新選擇的相鄰轉(zhuǎn)發(fā)設(shè)備發(fā)送開放流協(xié)議報文。
[0042]所述帶外連接切換模塊進一步用于,當接收到所述帶外連接中斷指示后,在本設(shè)備的流表中下發(fā)一條帶內(nèi)控制流表項,該表項中的源地址為控制器的地址,動作為將報文傳輸?shù)奖镜鼐W(wǎng)絡(luò)棧,且,當接收到相鄰轉(zhuǎn)發(fā)設(shè)備轉(zhuǎn)發(fā)的來自控制器的開放流協(xié)議響應(yīng)報文時,根據(jù)本設(shè)備的帶內(nèi)控制流表項,將該報文傳輸?shù)奖镜鼐W(wǎng)絡(luò)棧,所述開放流協(xié)議響應(yīng)報文為控制器接收到所述開放流協(xié)議報文后生成且發(fā)送給所述相鄰轉(zhuǎn)發(fā)設(shè)備的。
[0043]所述帶外連接切換模塊進一步用于,將開放流協(xié)議報文發(fā)送給所有相鄰轉(zhuǎn)發(fā)設(shè)備,由控制器選擇的相鄰轉(zhuǎn)發(fā)設(shè)備將該開放流協(xié)議報文轉(zhuǎn)發(fā)給控制器,其中,控制器選擇的相鄰轉(zhuǎn)發(fā)設(shè)備為:控制器在發(fā)現(xiàn)自身與一轉(zhuǎn)發(fā)設(shè)備之間的帶外連接中斷后,在該轉(zhuǎn)發(fā)設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備中選擇一個,將所選擇的轉(zhuǎn)發(fā)設(shè)備作為轉(zhuǎn)發(fā)帶外連接中斷的轉(zhuǎn)發(fā)設(shè)備的開放流協(xié)議報文的設(shè)備。
[0044]所述帶外連接監(jiān)測模塊進一步用于,當發(fā)現(xiàn)本設(shè)備與控制器間的帶外連接恢復(fù)時,恢復(fù)通過管理口與控制器交互開放流協(xié)議報文。
[0045]一種轉(zhuǎn)發(fā)設(shè)備,應(yīng)用于軟件定義網(wǎng)絡(luò)SDN中,且,初始時,該轉(zhuǎn)發(fā)設(shè)備由控制器帶外控制,包括:
[0046]協(xié)議報文帶內(nèi)轉(zhuǎn)發(fā)模塊:用于接收相鄰轉(zhuǎn)發(fā)設(shè)備發(fā)來的開放流協(xié)議報文,發(fā)現(xiàn)該報文的目的地址為控制器的地址,則將該報文通過管理口上送控制器;接收控制器發(fā)來的所述開放流協(xié)議報文的響應(yīng)報文,將該響應(yīng)報文轉(zhuǎn)發(fā)給所述相鄰轉(zhuǎn)發(fā)設(shè)備,其中,所述開放流協(xié)議報文為所述相鄰轉(zhuǎn)發(fā)設(shè)備與控制器之間的帶外連接中斷時發(fā)給本設(shè)備的。
[0047]所述轉(zhuǎn)發(fā)設(shè)備進一步包括:流表維護模塊,用于接收并保存控制器發(fā)來的帶內(nèi)控制流表項,該表項的目的地址為控制器的地址,動作為將整個報文上送到控制器;
[0048]所述協(xié)議報文帶內(nèi)轉(zhuǎn)發(fā)模塊進一步用于,當將所述開放流協(xié)議報文上送控制器前,發(fā)現(xiàn)該報文的目的地址與流表維護模塊的流表中的帶內(nèi)控制流表項匹配上,則根據(jù)該流表項中的動作:將整個報文上送到控制器,將該開放流協(xié)議報文封裝到Packet-1n消息,且在該消息中指示該開放流協(xié)議報文在本設(shè)備上的入端口,將該消息通過本設(shè)備的管理口上送控制器;且,當將所述響應(yīng)報文轉(zhuǎn)發(fā)給所述相鄰轉(zhuǎn)發(fā)設(shè)備前,接收到控制器發(fā)來的Packet-out消息,該消息包含所述開放流協(xié)議報文的響應(yīng)報文,同時包含該響應(yīng)報文對應(yīng)的動作:轉(zhuǎn)發(fā)到一出端口,該出端口為Packet-1n消息指示的入端口,根據(jù)該動作,將該響應(yīng)報文轉(zhuǎn)發(fā)到對應(yīng)的出端口。
[0049]一種控制器,應(yīng)用于軟件定義網(wǎng)絡(luò)SDN中,且,初始時,控制器對各轉(zhuǎn)發(fā)設(shè)備采用帶外控制方式,該控制器包括:
[0050]帶外連接監(jiān)測模塊:發(fā)現(xiàn)本控制器與一轉(zhuǎn)發(fā)設(shè)備的帶外連接中斷,將該轉(zhuǎn)發(fā)設(shè)備的地址添加到帶外連接中斷地址列表中,向該轉(zhuǎn)發(fā)設(shè)備的所有相鄰轉(zhuǎn)發(fā)設(shè)備的流表下發(fā)一條帶內(nèi)控制流表項,或者,在該帶外連接中斷的轉(zhuǎn)發(fā)設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備中選擇一個,向所選擇的相鄰轉(zhuǎn)發(fā)設(shè)備的流表下發(fā)一條帶內(nèi)控制流表項,所述帶內(nèi)控制流表項中的目的地址為控制器的地址,動作為將整個報文上送到控制器;
[0051]控制模塊:接收一轉(zhuǎn)發(fā)設(shè)備發(fā)來的開放流協(xié)議報文,當該報文的源地址位于帶外連接監(jiān)測模塊的帶外連接中斷地址列表中時,對該報文進行處理,將響應(yīng)報文發(fā)送給該轉(zhuǎn)發(fā)設(shè)備,以便該轉(zhuǎn)發(fā)設(shè)備將該響應(yīng)報文轉(zhuǎn)發(fā)給發(fā)來開放流協(xié)議報文的相鄰轉(zhuǎn)發(fā)設(shè)備;其中,所述開放流協(xié)議報文為所述轉(zhuǎn)發(fā)設(shè)備從其相鄰轉(zhuǎn)發(fā)設(shè)備接收到的,且所述轉(zhuǎn)發(fā)設(shè)備發(fā)現(xiàn)該報文的目的地址與自身流表中的帶內(nèi)控制流表項匹配上,則根據(jù)該流表項中的動作,將該報文發(fā)送給控制器,所述開放流協(xié)議報文為所述相鄰轉(zhuǎn)發(fā)設(shè)備在發(fā)現(xiàn)自身與控制器之間的帶外連接中斷時,將所述開放流協(xié)議報文發(fā)送給自身選擇的相鄰轉(zhuǎn)發(fā)設(shè)備或者所有相鄰轉(zhuǎn)發(fā)設(shè)備。
[0052]所述帶外連接監(jiān)測模塊進一步用于,當發(fā)現(xiàn)本控制器與一轉(zhuǎn)發(fā)設(shè)備間的帶外連接恢復(fù)時,通知該轉(zhuǎn)發(fā)設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備刪除帶內(nèi)控制流表項。
[0053]所述控制模塊進一步用于,當發(fā)現(xiàn)在預(yù)設(shè)時長內(nèi)未接收到來自帶外連接中斷的轉(zhuǎn)發(fā)設(shè)備的開放流協(xié)議報文或者?;顖笪臅r,向帶外連接監(jiān)測模塊發(fā)送攜帶該轉(zhuǎn)發(fā)設(shè)備地址的連接中斷指不;
[0054]所述帶外連接監(jiān)測模塊進一步用于,接收控制模塊發(fā)來的所述攜帶轉(zhuǎn)發(fā)設(shè)備地址的連接中斷指示,再次通過各管理口向該轉(zhuǎn)發(fā)設(shè)備的所有相鄰轉(zhuǎn)發(fā)設(shè)備或者本控制器新選擇的相鄰轉(zhuǎn)發(fā)設(shè)備的流表下發(fā)所述帶內(nèi)控制流表項。
[0055]所述控制模塊進一步用于,所述接收一轉(zhuǎn)發(fā)設(shè)備發(fā)來的開放流協(xié)議報文為:接收一轉(zhuǎn)發(fā)設(shè)備通過管理口發(fā)來的Packet-1n消息,該消息包含開放流協(xié)議報文,且該消息指示了該開放流協(xié)議報文在該轉(zhuǎn)發(fā)設(shè)備上的入端口 ;所述將響應(yīng)報文發(fā)送給該轉(zhuǎn)發(fā)設(shè)備為:將該響應(yīng)報文和對應(yīng)的動作封裝到Packet-out消息中,其中,對應(yīng)的動作為:轉(zhuǎn)發(fā)到一出端口,該出端口為所述Packet-1n消息指示的入端口。
[0056]可見,本發(fā)明中,當轉(zhuǎn)發(fā)設(shè)備和控制器之間的帶外連接中斷時,能夠?qū)饪刂谱詣忧袚Q到帶內(nèi)控制,且無需額外添加連接線。
【專利附圖】
【附圖說明】
[0057]圖1為本發(fā)明實施例一提供的當基于OpenFlow的SDN采用帶外控制方式時,帶外連接中斷的處理方法流程圖;
[0058]圖2為本發(fā)明應(yīng)用示例的示意圖;
[0059]圖3為本發(fā)明實施例二提供的當基于OpenFlow的SDN采用帶外控制方式時,帶外連接中斷的處理方法流程圖;
[0060]圖4為本發(fā)明實施例一提供的轉(zhuǎn)發(fā)設(shè)備的組成示意圖;
[0061]圖5為本發(fā)明實施例二提供的轉(zhuǎn)發(fā)設(shè)備的組成示意圖;
[0062]圖6為本發(fā)明實施例提供的控制器的組成示意圖。
【具體實施方式】
[0063]現(xiàn)有技術(shù)中,OpenFlow網(wǎng)絡(luò)的Controller采用帶外控制方式,即通過特定的OpenFlow轉(zhuǎn)發(fā)設(shè)備管理口與OpenFlow轉(zhuǎn)發(fā)設(shè)備進行交互,但是,若Controller與OpenFlow轉(zhuǎn)發(fā)設(shè)備之間的帶外連接中斷,則Controller對OpenFlow轉(zhuǎn)發(fā)設(shè)備的控制就中斷。
[0064]針對上述缺陷,本申請文件實施例提出了如下解決方案:
[0065]當SDN中的任一轉(zhuǎn)發(fā)設(shè)備發(fā)現(xiàn)自身與控制器之間的帶外連接中斷,則通過自身的相鄰轉(zhuǎn)發(fā)設(shè)備將OpenFlow協(xié)議報文發(fā)送給Controller,以便Controller通過轉(zhuǎn)發(fā)設(shè)備的普通接口對轉(zhuǎn)發(fā)設(shè)備進行控制,從而使控制器對本設(shè)備的控制方式由帶外控制切換為帶內(nèi)控制(In-band control)。
[0066]帶內(nèi)控制,即Controller通過OpenFlow交換機的普通接口與OpenFlow交換機進行交互。
[0067]以下給出本申請的【具體實施方式】:
[0068]圖1為本發(fā)明實施例一提供的當基于OpenFlow的SDN采用帶外控制方式時,帶外連接中斷的處理方法流程圖,如圖1所示,其具體步驟如下:
[0069]步驟100:設(shè)Controller通過各管理口與各OpenFlow轉(zhuǎn)發(fā)設(shè)備連接。
[0070]Controller通過管理口與各OpenFlow轉(zhuǎn)發(fā)設(shè)備之間的連接可以是二層連接也可以是三層連接。若為二層連接,則根據(jù)媒體接入控制(MAC,Media Access Control)地址來識別Controller和OpenFlow轉(zhuǎn)發(fā)設(shè)備;若為三層連接,則根據(jù)IP地址來識別Controller和OpenFlow轉(zhuǎn)發(fā)設(shè)備。
[0071]步驟101:當一個OpenFlow轉(zhuǎn)發(fā)設(shè)備,設(shè)為第一轉(zhuǎn)發(fā)設(shè)備發(fā)現(xiàn)自身與Controller之間的帶外連接中斷時,第一轉(zhuǎn)發(fā)設(shè)備自動進入故障開放安全(fail-open secure)模式,并自動在自身的第一個流表中下發(fā)一條優(yōu)先級最高的帶內(nèi)控制流表項,該表項中的源地址為Controller的地址,動作為將報文傳輸?shù)奖镜鼐W(wǎng)絡(luò)棧,即將報文上送CPU處理。
[0072]Controller和OpenFlow轉(zhuǎn)發(fā)設(shè)備會定時向?qū)Χ税l(fā)出echo報文,若在預(yù)設(shè)時長內(nèi)未接收到對端的Echo報文,則認為二者之間的帶外連接中斷。
[0073]步驟102:當Controller發(fā)現(xiàn)自身與第一轉(zhuǎn)發(fā)設(shè)備之間的帶外連接中斷時,則通過各管理口向第一轉(zhuǎn)發(fā)設(shè)備的各相鄰轉(zhuǎn)發(fā)設(shè)備的第一個流表下發(fā)一條優(yōu)先級最高的帶內(nèi)控制流表項,該表項的目的地址為Cont1ller的地址,動作為將整個報文上送到Controller。
[0074]步驟103:第一轉(zhuǎn)發(fā)設(shè)備根據(jù)自身與各相鄰轉(zhuǎn)發(fā)設(shè)備連接的端口的負載狀態(tài),在所有端口中選擇一個端口,設(shè)所選擇的端口為連接到第二轉(zhuǎn)發(fā)設(shè)備的端口,將原應(yīng)該由管理口發(fā)送的開放流(OpenFlow)協(xié)議報文通過選擇的端口發(fā)送給第二轉(zhuǎn)發(fā)設(shè)備。
[0075]這里,第一轉(zhuǎn)發(fā)設(shè)備在選擇發(fā)送OpenFlow協(xié)議報文的端口時,可以默認優(yōu)先選擇單位時間內(nèi)空閑帶寬最大的端口。例如:當?shù)谝晦D(zhuǎn)發(fā)設(shè)備與第二轉(zhuǎn)發(fā)設(shè)備之間有40GbpS的帶寬,負載為20Gbps,第一轉(zhuǎn)發(fā)設(shè)備與第三轉(zhuǎn)發(fā)設(shè)備之間有30Gbps的帶寬,負載為15Gbps,此時第一轉(zhuǎn)發(fā)設(shè)備就會優(yōu)先選擇向第二轉(zhuǎn)發(fā)設(shè)備發(fā)送OpenFlow協(xié)議報文。
[0076]步驟104:當?shù)诙D(zhuǎn)發(fā)設(shè)備接收到該報文后,該報文的目的地址首先與自身第一個流表中優(yōu)先級最高的帶內(nèi)控制流表項匹配上,則根據(jù)該流表項中的動作:將整個報文上送到Controller,將該報文封裝到Packet-1n消息中,同時在該Packet-1n消息中指示該OpenFlow協(xié)議報文在第二轉(zhuǎn)發(fā)設(shè)備上的入端口,將該Packet-1n消息通過自身的管理口上送到 Controller。
[0077]步驟105 Controller接收該Packet-Ιη消息,對于該消息中的報文,判斷該報文的源地址是否為帶外連接中斷的第一轉(zhuǎn)發(fā)設(shè)備的地址,若是,執(zhí)行步驟107 ;否則,執(zhí)行步驟 106。
[0078]步驟106 Controller按照現(xiàn)有OpenFlow協(xié)議對該Packet-1n消息進行處理,本流程結(jié)束。
[0079]步驟107 Controller按照現(xiàn)有OpenFlow協(xié)議對Packet-1n消息中攜帶的報文進行處理,得到回應(yīng)報文,將該回應(yīng)報文和對應(yīng)的動作封裝到Packet-out消息中,其中,對應(yīng)的動作為轉(zhuǎn)發(fā)(Output)到Packet-1n消息指示的入端口 ;同時,ControlIer通過各管理口通知除第二轉(zhuǎn)發(fā)設(shè)備外的第一轉(zhuǎn)發(fā)設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備刪除第一流表中的帶內(nèi)控制流表項;第二轉(zhuǎn)發(fā)設(shè)備接收到該Packet-out消息,從該消息中讀取響應(yīng)報文和對應(yīng)的動作,對該響應(yīng)報文執(zhí)行該動作,即將該響應(yīng)報文轉(zhuǎn)發(fā)到對應(yīng)的端口。
[0080]其中,Packet-1n消息指示的入端口,即第一轉(zhuǎn)發(fā)設(shè)備發(fā)出的OpenFlow協(xié)議報文在第二轉(zhuǎn)發(fā)設(shè)備上的入端口,第二轉(zhuǎn)發(fā)設(shè)備可通過該端口將Packet-out消息中的響應(yīng)報文轉(zhuǎn)發(fā)給第一轉(zhuǎn)發(fā)設(shè)備。
[0081]步驟108:第一轉(zhuǎn)發(fā)設(shè)備接收該響應(yīng)報文,該報文的源地址首先與自身第一個流表中優(yōu)先級最高的帶內(nèi)控制流表項匹配上,則根據(jù)該流表項中的動作:將報文傳輸?shù)奖镜鼐W(wǎng)絡(luò)棧,將該報文傳輸?shù)奖镜鼐W(wǎng)絡(luò)棧。
[0082]此后,Controller就通過第二轉(zhuǎn)發(fā)設(shè)備與第一轉(zhuǎn)發(fā)設(shè)備相連,對第一轉(zhuǎn)發(fā)設(shè)備進行控制。
[0083]步驟109:當?shù)谝晦D(zhuǎn)發(fā)設(shè)備發(fā)現(xiàn)自身與Controller間的帶外連接恢復(fù)時,先通過管理口與Controller進行OpenFlow握手;握手成功,Controller通知第一轉(zhuǎn)發(fā)設(shè)備和第二轉(zhuǎn)發(fā)設(shè)備清除第一流表中的帶內(nèi)控制流表項,同時停止通過第二轉(zhuǎn)發(fā)設(shè)備向第一轉(zhuǎn)發(fā)設(shè)備發(fā)送OpenFlow協(xié)議報文,而恢復(fù)對第一轉(zhuǎn)發(fā)設(shè)備的帶外控制,即通過管理口與第一轉(zhuǎn)發(fā)設(shè)備進行OpenFlow協(xié)議報文交互。
[0084]圖1所示步驟103中,若第一轉(zhuǎn)發(fā)設(shè)備向第二轉(zhuǎn)發(fā)設(shè)備發(fā)出OpenFlow協(xié)議報文后,在預(yù)設(shè)時長內(nèi)未收到來自Controller的響應(yīng)報文,則第一轉(zhuǎn)發(fā)設(shè)備會再選擇其他轉(zhuǎn)發(fā)設(shè)備,例如單位時間內(nèi)空閑帶寬次大的端口,設(shè)為連接到第三轉(zhuǎn)發(fā)設(shè)備的端口再次發(fā)送未得到響應(yīng)的OpenFlow協(xié)議報文。此時,由于Controller與第一轉(zhuǎn)發(fā)設(shè)備斷開了帶內(nèi)控制連接,Controller會再次向第一轉(zhuǎn)發(fā)設(shè)備的所有相鄰轉(zhuǎn)發(fā)設(shè)備的第一個流表下發(fā)一條優(yōu)先級最高的帶內(nèi)控制流表項,該表項的目的地址為Cont1ller的地址,動作為將整個報文上送到Controller。后續(xù)的處理步驟同步驟104?109 (只需將步驟104?109中的“第二轉(zhuǎn)發(fā)設(shè)備”替換為“第三轉(zhuǎn)發(fā)設(shè)備”即可)。
[0085]圖2為本發(fā)明應(yīng)用示例的示意圖,如圖2所示,SDN中包括控制器和轉(zhuǎn)發(fā)設(shè)備A、B、C,轉(zhuǎn)發(fā)設(shè)備A、B、C分別通過管理口 M1、M2、M3與控制器連接,即處于帶外控制狀態(tài)。同時,轉(zhuǎn)發(fā)設(shè)備A分別通過端口 Al、A2與轉(zhuǎn)發(fā)設(shè)備B、C連接。
[0086]當轉(zhuǎn)發(fā)設(shè)備A與控制器之間的帶外連接中斷時,轉(zhuǎn)發(fā)設(shè)備A自動進入fail-opensecure模式,并自動在自身的第一個流表中下發(fā)一條優(yōu)先級最高的帶內(nèi)控制流表項,該表項中的源IP地址為Controller的IP地址,動作為將報文傳輸?shù)奖镜鼐W(wǎng)絡(luò)棧;同時,控制器通過管理口 M2、M3向轉(zhuǎn)發(fā)設(shè)備A的相鄰轉(zhuǎn)發(fā)設(shè)備B、C的第一個流表下發(fā)一條優(yōu)先級最高的帶內(nèi)控制流表項,該表項的目的IP地址為Controller的IP地址,動作為將整個報文上送至Ij Controller ;
[0087]轉(zhuǎn)發(fā)設(shè)備A根據(jù)端口 Al、A2的負載狀態(tài)選擇一個端口,設(shè)為端口 Al,將原來通過管理口 Ml發(fā)送的OpenFlow協(xié)議報文通過端口 Al發(fā)送出去;
[0088]轉(zhuǎn)發(fā)設(shè)備B接收到該OpenFlow協(xié)議報文后,該報文的目的IP地址與自身第一個流表中優(yōu)先級最高的帶內(nèi)控制流表項匹配,則根據(jù)該流表項中的動作:將整個報文上送到Controller,將該報文封裝到Packet-1n消息中,同時該Packet-1n消息還指示了該OpenFlow協(xié)議報文在轉(zhuǎn)發(fā)設(shè)備B上的入端口 B,轉(zhuǎn)發(fā)設(shè)備B通過自身的管理口 M2將該Packet-1n 消息上送到 Controller ;
[0089]Controller接收該Packet-1n消息,發(fā)現(xiàn)該報文的源IP地址為帶外連接中斷的轉(zhuǎn)發(fā)設(shè)備A的IP地址,則按照OpenFlow協(xié)議對該報文進行處理,得到回應(yīng)報文,將該回應(yīng)報文和對應(yīng)的動作封裝到Packet-out消息中,其中,對應(yīng)的動作為轉(zhuǎn)發(fā)(Output)到Packet-1n消息指示的入端口 B ;同時,Controller通過管理口 M3通知轉(zhuǎn)發(fā)設(shè)備C刪除第一流表中的帶內(nèi)控制流表項;
[0090]轉(zhuǎn)發(fā)設(shè)備B接收到該Packet-out消息,從該消息中讀取響應(yīng)報文和對應(yīng)的動作,對該響應(yīng)報文執(zhí)行該動作,即將該響應(yīng)報文轉(zhuǎn)發(fā)到端口 B ;
[0091]轉(zhuǎn)發(fā)設(shè)備A接收到該響應(yīng)報文,該報文的源IP地址與自身第一個流表中的帶內(nèi)控制流表項匹配,則按照該表項中的動作,將該報文傳輸?shù)奖镜鼐W(wǎng)絡(luò)棧。
[0092]圖3為本發(fā)明實施例二提供的當基于OpenFlow的SDN采用帶外控制方式時,帶外連接中斷的處理方法流程圖,如圖3所示,其具體步驟如下:
[0093]步驟300:設(shè)Controller通過各管理口與各OpenFlow轉(zhuǎn)發(fā)設(shè)備連接。
[0094]Controller通過管理口與各OpenFlow轉(zhuǎn)發(fā)設(shè)備之間的連接可以是二層連接也可以是三層連接。若為二層連接,則根據(jù)MAC地址來識別Controller和OpenFlow轉(zhuǎn)發(fā)設(shè)備;若為三層連接,則根據(jù)IP地址來識別Controller和OpenFlow轉(zhuǎn)發(fā)設(shè)備。
[0095]步驟301:當一個OpenFlow轉(zhuǎn)發(fā)設(shè)備,設(shè)為第一轉(zhuǎn)發(fā)設(shè)備發(fā)現(xiàn)自身與Controller之間的帶外連接中斷時,第一轉(zhuǎn)發(fā)設(shè)備自動進入fail-open secure模式,并自動在自身的第一個流表中下發(fā)一條優(yōu)先級最高的帶內(nèi)控制流表項,該表項中的源地址為Controller的地址,動作為將報文傳輸?shù)奖镜鼐W(wǎng)絡(luò)棧,即將報文上送CPU處理。
[0096]步驟302:當Controller發(fā)現(xiàn)自身與第一轉(zhuǎn)發(fā)設(shè)備之間的帶外連接中斷時,在第一轉(zhuǎn)發(fā)設(shè)備的所有鄰居轉(zhuǎn)發(fā)設(shè)備中選擇一個,設(shè)選擇了第二轉(zhuǎn)發(fā)設(shè)備,則通過與第二轉(zhuǎn)發(fā)設(shè)備間的管理口向第二轉(zhuǎn)發(fā)設(shè)備的第一個流表下發(fā)一條優(yōu)先級最高的帶內(nèi)控制流表項,該表項的目的地址為Controller的地址,動作為將整個報文上送到Controller。
[0097]例如:Contoller可以在第一轉(zhuǎn)發(fā)設(shè)備的所有鄰居轉(zhuǎn)發(fā)設(shè)備中選擇一個當前負載最小的設(shè)備。
[0098]步驟303:第一轉(zhuǎn)發(fā)設(shè)備原應(yīng)該從管理口發(fā)送的OpenFlow協(xié)議報文通過自身與各鄰居轉(zhuǎn)發(fā)設(shè)備之間的端口發(fā)出。
[0099]S卩,對于任一個原應(yīng)該從管理口發(fā)送的OpenFlow協(xié)議報文,第一轉(zhuǎn)發(fā)設(shè)備將該報文發(fā)送給自身的所有鄰居轉(zhuǎn)發(fā)設(shè)備。
[0100]步驟304:當?shù)诙D(zhuǎn)發(fā)設(shè)備接收到該OpenFlow協(xié)議報文后,該報文的目的地址首先與自身第一個流表中優(yōu)先級最高的帶內(nèi)控制流表項匹配,則根據(jù)該流表項中的動作:將整個報文上送到Controller,將該報文封裝到Packet-1n消息中,同時在該Packet-1n消息中指示該OpenFlow協(xié)議報文在第二轉(zhuǎn)發(fā)設(shè)備上的入端口,將該Packet-1n消息通過自身的管理口上送到Controller。
[0101]第一轉(zhuǎn)發(fā)設(shè)備的其他鄰居轉(zhuǎn)發(fā)設(shè)備接收到該OpenFlow協(xié)議報文后,由于沒有與該報文的目的地址匹配的帶內(nèi)控制流表項,因此,會將該報文丟棄。
[0102]步驟305 Controller接收該Packet-Ιη消息,對于該消息中的報文,判斷該報文的源地址是否為帶外連接中斷的第一轉(zhuǎn)發(fā)設(shè)備的地址,若是,執(zhí)行步驟307;否則,執(zhí)行步驟 306。
[0103]步驟306 Controller按照現(xiàn)有OpenFlow協(xié)議對該Packet-1n消息進行處理,本流程結(jié)束。
[0104]步驟307 Controller按照現(xiàn)有OpenFlow協(xié)議對Packet-1n消息中攜帶的報文進行處理,得到回應(yīng)報文,將該回應(yīng)報文和對應(yīng)的動作封裝到Packet-out消息中,其中,對應(yīng)的動作為轉(zhuǎn)發(fā)(Output)到Packet-1n消息指示的入端口 ;第二轉(zhuǎn)發(fā)設(shè)備接收到該Packet-out消息,從該消息中讀取響應(yīng)報文和對應(yīng)的動作,對該響應(yīng)報文執(zhí)行該動作,即將該響應(yīng)報文轉(zhuǎn)發(fā)到對應(yīng)的端口。
[0105]其中,Packet-1n消息指示的入端口,即第一轉(zhuǎn)發(fā)設(shè)備發(fā)出的OpenFlow協(xié)議報文在第二轉(zhuǎn)發(fā)設(shè)備上的入端口,第二轉(zhuǎn)發(fā)設(shè)備可通過該端口將Packet-out消息中的響應(yīng)報文轉(zhuǎn)發(fā)給第一轉(zhuǎn)發(fā)設(shè)備。
[0106]步驟308:第一轉(zhuǎn)發(fā)設(shè)備接收該響應(yīng)報文,該報文的源地址首先與自身第一個流表中優(yōu)先級最高的帶內(nèi)控制流表項匹配上,則根據(jù)該流表項中的動作:將報文傳輸?shù)奖镜鼐W(wǎng)絡(luò)棧,將該報文傳輸?shù)奖镜鼐W(wǎng)絡(luò)棧。
[0107]此后,Controller就通過第二轉(zhuǎn)發(fā)設(shè)備與第一轉(zhuǎn)發(fā)設(shè)備相連,對第一轉(zhuǎn)發(fā)設(shè)備進行控制。
[0108]步驟309:當?shù)谝晦D(zhuǎn)發(fā)設(shè)備發(fā)現(xiàn)自身與Controller間的帶外連接恢復(fù)時,先通過管理口與Controller進行OpenFlow握手;握手成功,Controller通知第一轉(zhuǎn)發(fā)設(shè)備和第二轉(zhuǎn)發(fā)設(shè)備清除第一流表中的帶內(nèi)控制流表項,同時停止通過第二轉(zhuǎn)發(fā)設(shè)備向第一轉(zhuǎn)發(fā)設(shè)備發(fā)送OpenFlow協(xié)議報文,而恢復(fù)對第一轉(zhuǎn)發(fā)設(shè)備的帶外控制,即通過管理口與第一轉(zhuǎn)發(fā)設(shè)備進行OpenFlow協(xié)議報文交互。
[0109]在圖3所示流程中,若Controller發(fā)現(xiàn)在預(yù)設(shè)時長內(nèi)未接收到來自第一轉(zhuǎn)發(fā)設(shè)備的報文,如:在3個Echo報文周期內(nèi)未接收到來自第一轉(zhuǎn)發(fā)設(shè)備的Echo報文,則在第一轉(zhuǎn)發(fā)設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備中重新選擇一個,設(shè)選擇了第三轉(zhuǎn)發(fā)設(shè)備,通過與第三轉(zhuǎn)發(fā)設(shè)備間的管理口向第三轉(zhuǎn)發(fā)設(shè)備的第一個流表下發(fā)一條優(yōu)先級最高的帶內(nèi)控制流表項,該表項的目的地址為Controller的地址,動作為將整個報文上送到Controller,此后,由第三轉(zhuǎn)發(fā)設(shè)備將第一轉(zhuǎn)發(fā)設(shè)備的OpenFlow協(xié)議報文上送Controller。
[0110]從圖1、3所示實施例可以看出,本發(fā)明在不改變組網(wǎng)的情況下,在二層網(wǎng)絡(luò)或三層網(wǎng)絡(luò)帶外控制連接方式下,提供Controller與轉(zhuǎn)發(fā)設(shè)備的連接備份功能,即在帶外控制連接斷開時,能夠自動切換到帶內(nèi)控制連接進行控制,實現(xiàn)了帶外控制以及帶內(nèi)控制的控制鏈路備份。
[0111]圖4為本發(fā)明實施例一提供的轉(zhuǎn)發(fā)設(shè)備的組成示意圖,該轉(zhuǎn)發(fā)設(shè)備位于基于OpenFlow的SDN中,且,該轉(zhuǎn)發(fā)設(shè)備由控制器帶外控制,如圖4所示,該轉(zhuǎn)發(fā)設(shè)備包括:帶外連接監(jiān)測模塊41、帶外連接切換模塊42和流表維護模塊43,其中:
[0112]帶外連接監(jiān)測模塊41:發(fā)現(xiàn)本設(shè)備與控制器之間的帶外連接中斷,進入fail-open secure模式,向帶外連接切換模塊42發(fā)送帶外連接中斷指示,并在流表維護模塊43的第一個流表中下發(fā)一條優(yōu)先級最高的帶內(nèi)控制流表項,該表項中的源地址為控制器的地址,動作為將報文傳輸?shù)奖镜鼐W(wǎng)絡(luò)棧。
[0113]帶外連接切換模塊42:接收帶外連接監(jiān)測模塊41發(fā)來的帶外連接中斷指示,通過本設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給控制器以使控制器對自身的控制方式由帶外控制切換為帶內(nèi)控制。
[0114]流表維護模塊43:維護流表。
[0115]具體地,帶外連接切換模塊42可在本設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備中選擇一個,將原來通過管理口發(fā)送的OpenFlow協(xié)議報文通過所選擇的相鄰轉(zhuǎn)發(fā)設(shè)備轉(zhuǎn)發(fā)給控制器;接收所選擇的相鄰轉(zhuǎn)發(fā)設(shè)備轉(zhuǎn)發(fā)的OpenFlow協(xié)議響應(yīng)報文,將該報文的源IP地址與流表維護模塊43中的流表進行匹配,首先與第一個流表中優(yōu)先級最高的帶內(nèi)控制流表項匹配上,則根據(jù)該流表項中的動作,將該報文傳輸?shù)奖镜鼐W(wǎng)絡(luò)棧;其中,控制器在發(fā)現(xiàn)自身與一轉(zhuǎn)發(fā)設(shè)備的帶外連接中斷時,向該轉(zhuǎn)發(fā)設(shè)備的所有相鄰轉(zhuǎn)發(fā)設(shè)備的第一個流表下發(fā)一條優(yōu)先級最高的帶內(nèi)控制流表項,該表項中的目的地址為控制器的地址,動作為將整個報文上送到控制器,且,當所述所選擇的相鄰轉(zhuǎn)發(fā)設(shè)備接收到第一轉(zhuǎn)發(fā)設(shè)備發(fā)來的OpenFlow協(xié)議報文后,該報文的目的IP地址首先與自身的第一個流表中優(yōu)先級最高的帶內(nèi)控制流表項匹配上,則根據(jù)該流表項中的動作,將該報文通過自身的管理口上送控制器;所述OpenFlow協(xié)議響應(yīng)報文為控制器接收到所述OpenFlow協(xié)議報文后生成且發(fā)送給所述所選擇的相鄰轉(zhuǎn)發(fā)設(shè)備的。
[0116]帶外連接切換模塊42進一步用于,若向所選擇的相鄰轉(zhuǎn)發(fā)設(shè)備發(fā)出OpenFlow協(xié)議報文后,在預(yù)設(shè)響應(yīng)時長內(nèi)未接收到響應(yīng)報文,則在本設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備中重新選擇一個,向該新選擇的相鄰轉(zhuǎn)發(fā)設(shè)備重新發(fā)送該OpenFlow協(xié)議報文。
[0117]或者,帶外連接切換模塊42可將開放流協(xié)議報文發(fā)送給所有相鄰轉(zhuǎn)發(fā)設(shè)備,由控制器選擇的相鄰轉(zhuǎn)發(fā)設(shè)備將該開放流協(xié)議報文轉(zhuǎn)發(fā)給控制器,其中,控制器選擇的相鄰轉(zhuǎn)發(fā)設(shè)備為:控制器在發(fā)現(xiàn)自身與一轉(zhuǎn)發(fā)設(shè)備之間的帶外連接中斷后,在該轉(zhuǎn)發(fā)設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備中選擇一個,將所選擇的轉(zhuǎn)發(fā)設(shè)備作為轉(zhuǎn)發(fā)帶外連接中斷的轉(zhuǎn)發(fā)設(shè)備的開放流協(xié)議報文的設(shè)備。
[0118]帶外連接監(jiān)測模塊41進一步用于,當發(fā)現(xiàn)本設(shè)備與控制器間的帶外連接恢復(fù)時,通過管理口與控制器進行握手,握手成功,刪除流表維護模塊43中第一個流表中的帶內(nèi)控制流表項,以開始通過管理口與控制器交互OpenFlow協(xié)議報文。
[0119]在實際應(yīng)用中,圖4所示的轉(zhuǎn)發(fā)設(shè)備可進一步包括:協(xié)議報文帶內(nèi)轉(zhuǎn)發(fā)模塊,用于接收相鄰轉(zhuǎn)發(fā)設(shè)備發(fā)來的OpenFlow協(xié)議報文,該報文的目的地址首先與流表維護模塊43的第一個流表中優(yōu)先級最高的帶內(nèi)控制流表項匹配上,則根據(jù)該流表項中的動作:將整個報文上送到控制器,將該OpenFlow協(xié)議報文封裝到Packet-1n消息中,且在該消息中指示該OpenFlow協(xié)議報文在本設(shè)備上的入端口,將該消息通過本設(shè)備的管理口上送到控制器;接收控制器發(fā)來的Packet-out消息,該消息包含該OpenFlow協(xié)議報文的響應(yīng)報文,同時包含該響應(yīng)報文對應(yīng)的動作:轉(zhuǎn)發(fā)到一出端口,該出端口為Packet-1n消息指示的入端口,則根據(jù)該動作,將該響應(yīng)報文轉(zhuǎn)發(fā)到對應(yīng)的出端口。
[0120]同時,流表維護模塊43進一步用于,接收并保存控制器發(fā)來的指示下發(fā)到第一個流表中的優(yōu)先級最高的帶內(nèi)控制流表項,該表項的目的地址為控制器的地址,動作為將整個報文上送到控制器。
[0121]圖5為本發(fā)明實施例二提供的轉(zhuǎn)發(fā)設(shè)備的組成示意圖,該轉(zhuǎn)發(fā)設(shè)備位于基于OpenFlow的SDN中,且,該轉(zhuǎn)發(fā)設(shè)備由控制器帶外控制,如圖5所示,該轉(zhuǎn)發(fā)設(shè)備主要包括:協(xié)議報文帶內(nèi)轉(zhuǎn)發(fā)模塊51和流表維護模塊52,其中:
[0122]協(xié)議報文帶內(nèi)轉(zhuǎn)發(fā)模塊51:接收相鄰轉(zhuǎn)發(fā)設(shè)備發(fā)來的OpenFlow協(xié)議報文,該報文的目的地址首先與流表維護模塊52的第一個流表中的優(yōu)先級最高的帶內(nèi)控制流表項匹配上,則根據(jù)該流表項中的動作:將整個報文上送到控制器,將該OpenFlow協(xié)議報文封裝到Packet-1n消息中,且在該消息中指示該OpenFlow協(xié)議報文在本設(shè)備上的入端口,將該消息通過本設(shè)備的管理口上送到控制器;接收控制器發(fā)來的Packet-out消息,該消息包含該OpenFlow協(xié)議報文的響應(yīng)報文,同時包含該響應(yīng)報文對應(yīng)的動作:轉(zhuǎn)發(fā)到一出端口,該出端口為Packet-1n消息指示的入端口,則根據(jù)該動作,將該響應(yīng)報文轉(zhuǎn)發(fā)到對應(yīng)的出端口。
[0123]流表維護模塊52:接收并保存控制器發(fā)來的指示下發(fā)到第一個流表中的優(yōu)先級最高的帶內(nèi)控制流表項,該表項的目的地址為控制器的地址,動作為將整個報文上送到控制器。
[0124]圖6為本發(fā)明實施例提供的控制器的組成示意圖,該控制器位于基于OpenFlow的SDN中,且,初始時,控制器對各轉(zhuǎn)發(fā)設(shè)備采用帶外控制方式,如圖6所示,該控制器包括:帶外連接監(jiān)測模塊61和控制模塊62,其中:
[0125]帶外連接監(jiān)測模塊61:發(fā)現(xiàn)本控制器與一轉(zhuǎn)發(fā)設(shè)備的帶外連接中斷,將該轉(zhuǎn)發(fā)設(shè)備的地址添加到帶外連接中斷地址列表中,向該轉(zhuǎn)發(fā)設(shè)備的所有相鄰轉(zhuǎn)發(fā)設(shè)備的流表下發(fā)一條帶內(nèi)控制流表項,該表項中的目的地址為本控制器的地址,動作為將整個報文上送到控制器;或者,在該帶外連接中斷的轉(zhuǎn)發(fā)設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備中選擇一個,向所選擇的相鄰轉(zhuǎn)發(fā)設(shè)備的流表下發(fā)一條帶內(nèi)控制流表項,所述帶內(nèi)控制流表項中的目的地址為控制器的地址,動作為將整個報文上送到控制器。
[0126]控制模塊62:接收一轉(zhuǎn)發(fā)設(shè)備發(fā)來的OpenFlow協(xié)議報文,發(fā)現(xiàn)該報文的源地址位于帶外連接監(jiān)測模塊61的帶外連接中斷地址列表中,則對該報文進行處理,將響應(yīng)報文發(fā)送給該轉(zhuǎn)發(fā)設(shè)備,以便該轉(zhuǎn)發(fā)設(shè)備將該響應(yīng)報文轉(zhuǎn)發(fā)給發(fā)來OpenFlow協(xié)議報文的相鄰轉(zhuǎn)發(fā)設(shè)備;其中,所述OpenFlow協(xié)議報文為所述轉(zhuǎn)發(fā)設(shè)備從其相鄰轉(zhuǎn)發(fā)設(shè)備接收到的,且該報文的目的IP地址首先與所述轉(zhuǎn)發(fā)設(shè)備的第一個流表中優(yōu)先級最高的帶內(nèi)控制流表項匹配上,則根據(jù)該流表項中的動作,將該報文發(fā)送給控制器,且所述相鄰轉(zhuǎn)發(fā)設(shè)備在發(fā)現(xiàn)自身與控制器之間的帶外連接中斷時,在自身的相鄰轉(zhuǎn)發(fā)設(shè)備中選擇一個,將原來通過管理口發(fā)送的OpenFlow協(xié)議報文發(fā)送給自身選擇的相鄰轉(zhuǎn)發(fā)設(shè)備或者所有相鄰轉(zhuǎn)發(fā)設(shè)備。
[0127]帶外連接監(jiān)測模塊61進一步用于,當發(fā)現(xiàn)本控制器與一轉(zhuǎn)發(fā)設(shè)備間的帶外連接恢復(fù)時,通過管理口與該轉(zhuǎn)發(fā)設(shè)備進行握手,握手成功,通知該轉(zhuǎn)發(fā)設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備刪除目的IP地址為控制器的IP地址的帶內(nèi)控制流表項。
[0128]控制模塊62進一步用于,當發(fā)現(xiàn)在預(yù)設(shè)時長內(nèi)未接收到來自帶外連接中斷的轉(zhuǎn)發(fā)設(shè)備的開放流協(xié)議報文或者?;顖笪臅r,向帶外連接監(jiān)測模塊61發(fā)送攜帶該轉(zhuǎn)發(fā)設(shè)備地址的連接中斷指示;
[0129]且,帶外連接監(jiān)測模塊61進一步用于,接收控制模塊62發(fā)來的所述攜帶轉(zhuǎn)發(fā)設(shè)備地址的連接中斷指示,再次通過各管理口向該轉(zhuǎn)發(fā)設(shè)備的所有相鄰轉(zhuǎn)發(fā)設(shè)備或者本控制器新選擇的相鄰轉(zhuǎn)發(fā)設(shè)備的流表下發(fā)所述帶內(nèi)控制流表項。
[0130]控制模塊62進一步用于,所述接收一轉(zhuǎn)發(fā)設(shè)備發(fā)來的OpenFlow協(xié)議報文為:接收一轉(zhuǎn)發(fā)設(shè)備通過管理口發(fā)來的Packet-1n消息,該消息包含開放流協(xié)議報文,且該消息指示了該開放流協(xié)議報文在該轉(zhuǎn)發(fā)設(shè)備上的入端口 ;所述將響應(yīng)報文發(fā)送給該轉(zhuǎn)發(fā)設(shè)備為:將該響應(yīng)報文和對應(yīng)的動作封裝到Packet-out消息中,其中,對應(yīng)的動作為:轉(zhuǎn)發(fā)到一出端口,該出端口為所述Packet-1n消息指示的入端口。
[0131]以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明保護的范圍之內(nèi)。
【權(quán)利要求】
1.一種軟件定義網(wǎng)絡(luò)SDN中的轉(zhuǎn)發(fā)設(shè)備控制方法,初始時,各轉(zhuǎn)發(fā)設(shè)備由控制器帶外控制,其特征在于,該方法包括: SDN中的任一轉(zhuǎn)發(fā)設(shè)備,設(shè)第一轉(zhuǎn)發(fā)設(shè)備發(fā)現(xiàn)自身與控制器之間的帶外連接中斷,則通過自身的相鄰轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給控制器以使控制器對自身的控制方式由帶外控制切換為帶內(nèi)控制。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一轉(zhuǎn)發(fā)設(shè)備通過自身的相鄰轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給控制器以使控制器對自身的控制方式由帶外控制切換為帶內(nèi)控制包括: 第一轉(zhuǎn)發(fā)設(shè)備在自身的相鄰轉(zhuǎn)發(fā)設(shè)備中選擇一個,通過所選擇的轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給控制器以使控制器對自身的控制方式由帶外控制切換為帶內(nèi)控制。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述第一轉(zhuǎn)發(fā)設(shè)備在自身的相鄰轉(zhuǎn)發(fā)設(shè)備中選擇一個為: 第一轉(zhuǎn)發(fā)設(shè)備根據(jù)自身與各相鄰轉(zhuǎn)發(fā)設(shè)備的連接端口的負載狀態(tài),選擇一個當前單位時間內(nèi)空閑帶寬最大的端口,該端口連接的轉(zhuǎn)發(fā)設(shè)備即為所選擇的相鄰轉(zhuǎn)發(fā)設(shè)備。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述第一轉(zhuǎn)發(fā)設(shè)備發(fā)現(xiàn)自身與控制器之間的帶外連接中斷之后、在自身的相鄰轉(zhuǎn)發(fā)設(shè)備中選擇一個之前進一步包括:第一轉(zhuǎn)發(fā)設(shè)備在自身的流表中下發(fā)一條帶內(nèi)控制流表項,該表項中的源地址為控制器的地址,動作為將報文傳輸?shù)奖镜鼐W(wǎng)絡(luò)棧; 且,所述方法進一步包括:所述控制器在發(fā)現(xiàn)自身與第一轉(zhuǎn)發(fā)設(shè)備的帶外連接中斷時,向第一轉(zhuǎn)發(fā)設(shè)備的所有相鄰轉(zhuǎn)發(fā)設(shè)備的流表下發(fā)一條帶內(nèi)控制流表項,該表項中的目的地址為控制器的地址,動作為將整個報文上送到控制器,以便:第一轉(zhuǎn)發(fā)設(shè)備選擇的相鄰轉(zhuǎn)發(fā)設(shè)備接收到第一轉(zhuǎn)發(fā)設(shè)備發(fā)來的開放流協(xié)議報文后,根據(jù)所述控制器下發(fā)的所述帶內(nèi)控制流表項將該報文通過管理口上送控制器; 且,所述第一轉(zhuǎn)發(fā)設(shè)備通過所選擇的轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給控制器之后進一步包括:第一轉(zhuǎn)發(fā)設(shè)備接收所選擇的相鄰轉(zhuǎn)發(fā)設(shè)備轉(zhuǎn)發(fā)的開放流協(xié)議響應(yīng)報文,根據(jù)自身的帶內(nèi)控制流表項,將該報文傳輸?shù)奖镜鼐W(wǎng)絡(luò)棧,所述開放流協(xié)議響應(yīng)報文為控制器接收到所述開放流協(xié)議報文后生成且發(fā)送給所選擇的相鄰轉(zhuǎn)發(fā)設(shè)備的。
5.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述第一轉(zhuǎn)發(fā)設(shè)備通過所選擇的轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給控制器以使控制器對自身的控制方式由帶外控制切換為帶內(nèi)控制之后進一步包括: 若第一轉(zhuǎn)發(fā)設(shè)備未接收到發(fā)出的開放流協(xié)議報文的響應(yīng)報文,則在自身的相鄰轉(zhuǎn)發(fā)設(shè)備中重新選擇一個,向該新選擇的相鄰轉(zhuǎn)發(fā)設(shè)備發(fā)送開放流協(xié)議報文。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一轉(zhuǎn)發(fā)設(shè)備通過自身的相鄰轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給控制器以使控制器對自身的控制方式由帶外控制切換為帶內(nèi)控制包括: 第一轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給自身的所有相鄰轉(zhuǎn)發(fā)設(shè)備,由控制器選擇的相鄰轉(zhuǎn)發(fā)設(shè)備將該開放流協(xié)議報文轉(zhuǎn)發(fā)給控制器,以使控制器對所述第一轉(zhuǎn)發(fā)設(shè)備的控制方式由帶外控制切換為帶內(nèi)控制,其中,控制器選擇的相鄰轉(zhuǎn)發(fā)設(shè)備為:控制器在發(fā)現(xiàn)自身與第一轉(zhuǎn)發(fā)設(shè)備之間的帶外連接中斷后,在第一轉(zhuǎn)發(fā)設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備中選擇一個,由所選擇的轉(zhuǎn)發(fā)設(shè)備轉(zhuǎn)發(fā)第一轉(zhuǎn)發(fā)設(shè)備的開放流協(xié)議報文到控制器。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述第一轉(zhuǎn)發(fā)設(shè)備發(fā)現(xiàn)自身與控制器之間的帶外連接中斷之后進一步包括:第一轉(zhuǎn)發(fā)設(shè)備在自身的流表中下發(fā)一條帶內(nèi)控制流表項,該表項中的源地址為控制器的地址,動作為將報文傳輸?shù)奖镜鼐W(wǎng)絡(luò)棧; 所述控制器在第一轉(zhuǎn)發(fā)設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備中選擇一個之后進一步包括:控制器向所選擇的相鄰轉(zhuǎn)發(fā)設(shè)備的流表下發(fā)一條帶內(nèi)控制流表項,該表項中的目的地址為控制器的地址,動作為將整個報文上送到控制器,以便:該相鄰轉(zhuǎn)發(fā)設(shè)備接收到第一轉(zhuǎn)發(fā)設(shè)備發(fā)來的開放流協(xié)議報文后,根據(jù)所述控制器下發(fā)的所述帶內(nèi)控制流表項將該報文通過管理口上送控制器; 且,所述第一轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給自身的所有相鄰轉(zhuǎn)發(fā)設(shè)備之后進一步包括:第一轉(zhuǎn)發(fā)設(shè)備接收相鄰轉(zhuǎn)發(fā)設(shè)備轉(zhuǎn)發(fā)的開放流協(xié)議響應(yīng)報文,根據(jù)自身的帶內(nèi)控制流表項,將該報文傳輸?shù)奖镜鼐W(wǎng)絡(luò)棧,所述開放流協(xié)議響應(yīng)報文為控制器接收到所述開放流協(xié)議報文后生成且發(fā)送給所選擇的相鄰轉(zhuǎn)發(fā)設(shè)備的。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述第一轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給自身的所有相鄰轉(zhuǎn)發(fā)設(shè)備,由控制器選擇的相鄰轉(zhuǎn)發(fā)設(shè)備將該開放流協(xié)議報文轉(zhuǎn)發(fā)給控制器之后進一步包括: 所述控制器在預(yù)設(shè)時長內(nèi)未接收到來自第一轉(zhuǎn)發(fā)設(shè)備的?;顖笪?,則在第一轉(zhuǎn)發(fā)設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備中重新選擇一個,將所選擇的轉(zhuǎn)發(fā)設(shè)備作為轉(zhuǎn)發(fā)第一轉(zhuǎn)發(fā)設(shè)備的開放流協(xié)議報文的新設(shè)備。
9.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一轉(zhuǎn)發(fā)設(shè)備發(fā)現(xiàn)自身與控制器之間的帶外連接中斷之后進一步包括: 當?shù)谝晦D(zhuǎn)發(fā)設(shè)備發(fā)現(xiàn)自身與控制器間的帶外連接恢復(fù)時,恢復(fù)通過管理口與控制器交互開放流協(xié)議報文。
10.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一轉(zhuǎn)發(fā)設(shè)備通過自身的相鄰轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給控制器包括: 第一轉(zhuǎn)發(fā)設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備接收第一轉(zhuǎn)發(fā)設(shè)備發(fā)來的開放流協(xié)議報文,將該開放流協(xié)議報文封裝到Packet-1n消息,且在該消息中指示該開放流協(xié)議報文在本設(shè)備上的入端口,將該消息通過本設(shè)備的管理口上送控制器;且,第一轉(zhuǎn)發(fā)設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備接收控制器返回的Packet-out消息,該消息包含所述開放流協(xié)議報文的響應(yīng)報文,同時包含該響應(yīng)報文對應(yīng)的動作:轉(zhuǎn)發(fā)到一出端口,該出端口為所述Packet-1n消息指示的入端口,第一轉(zhuǎn)發(fā)設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備根據(jù)Packet-out消息包含的動作,將該消息中的響應(yīng)報文轉(zhuǎn)發(fā)到對應(yīng)的出端口。
11.一種轉(zhuǎn)發(fā)設(shè)備,位于基于開放流的SDN中,且,該轉(zhuǎn)發(fā)設(shè)備由控制器帶外控制,其特征在于,該轉(zhuǎn)發(fā)設(shè)備包括: 帶外連接監(jiān)測模塊:發(fā)現(xiàn)本設(shè)備與控制器之間的帶外連接中斷,向帶外連接切換模塊發(fā)送帶外連接中斷指示; 帶外連接切換模塊:當接收到所述帶外連接中斷指示后,通過本設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給控制器以使控制器對本設(shè)備的控制方式由帶外控制切換為帶內(nèi)控制。
12.根據(jù)權(quán)利要求11所述的轉(zhuǎn)發(fā)設(shè)備,其特征在于,所述帶外連接切換模塊進一步用于,在通過本設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給控制器時,通過本設(shè)備選擇的相鄰轉(zhuǎn)發(fā)設(shè)備將開放流協(xié)議報文發(fā)送給控制器。
13.根據(jù)權(quán)利要求12所述的轉(zhuǎn)發(fā)設(shè)備,其特征在于,所述帶外連接切換模塊進一步用于,根據(jù)本設(shè)備與各相鄰轉(zhuǎn)發(fā)設(shè)備的連接端口的負載狀態(tài),選擇一個當前單位時間內(nèi)空閑帶寬最大的端口,該端口連接的轉(zhuǎn)發(fā)設(shè)備即為所選擇的相鄰轉(zhuǎn)發(fā)設(shè)備。
14.根據(jù)權(quán)利要求12所述的轉(zhuǎn)發(fā)設(shè)備,其特征在于,所述帶外連接切換模塊進一步用于,未接收到發(fā)出的開放流協(xié)議報文的響應(yīng)報文,則在本設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備中重新選擇一個,向該新選擇的相鄰轉(zhuǎn)發(fā)設(shè)備發(fā)送開放流協(xié)議報文。
15.根據(jù)權(quán)利要求11所述的轉(zhuǎn)發(fā)設(shè)備,其特征在于,所述帶外連接切換模塊進一步用于,當接收到所述帶外連接中斷指示后,在本設(shè)備的流表中下發(fā)一條帶內(nèi)控制流表項,該表項中的源地址為控制器的地址,動作為將報文傳輸?shù)奖镜鼐W(wǎng)絡(luò)棧,且,當接收到相鄰轉(zhuǎn)發(fā)設(shè)備轉(zhuǎn)發(fā)的來自控制器的開放流協(xié)議響應(yīng)報文時,根據(jù)本設(shè)備的帶內(nèi)控制流表項,將該報文傳輸?shù)奖镜鼐W(wǎng)絡(luò)棧,所述開放流協(xié)議響應(yīng)報文為控制器接收到所述開放流協(xié)議報文后生成且發(fā)送給所述相鄰轉(zhuǎn)發(fā)設(shè)備的。
16.根據(jù)權(quán)利要求11所述的轉(zhuǎn)發(fā)設(shè)備,其特征在于,所述帶外連接切換模塊進一步用于,將開放流協(xié)議報文發(fā)送給所有相鄰轉(zhuǎn)發(fā)設(shè)備,由控制器選擇的相鄰轉(zhuǎn)發(fā)設(shè)備將該開放流協(xié)議報文轉(zhuǎn)發(fā)給控制器,其中,控制器選擇的相鄰轉(zhuǎn)發(fā)設(shè)備為:控制器在發(fā)現(xiàn)自身與一轉(zhuǎn)發(fā)設(shè)備之間的帶外連接中斷后,在該轉(zhuǎn)發(fā)設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備中選擇一個,將所選擇的轉(zhuǎn)發(fā)設(shè)備作為轉(zhuǎn)發(fā)帶外連接中斷的轉(zhuǎn)發(fā)設(shè)備的開放流協(xié)議報文的設(shè)備。
17.根據(jù)權(quán)利要求11所述的轉(zhuǎn)發(fā)設(shè)備,其特征在于,所述帶外連接監(jiān)測模塊進一步用于,當發(fā)現(xiàn)本設(shè)備與控制器間的帶外連接恢復(fù)時,恢復(fù)通過管理口與控制器交互開放流協(xié)議報文。
18.一種轉(zhuǎn)發(fā)設(shè)備,應(yīng)用于軟件定義網(wǎng)絡(luò)SDN中,且,初始時,該轉(zhuǎn)發(fā)設(shè)備由控制器帶外控制,其特征在于,包括: 協(xié)議報文帶內(nèi)轉(zhuǎn)發(fā)模塊:用于接收相鄰轉(zhuǎn)發(fā)設(shè)備發(fā)來的開放流協(xié)議報文,發(fā)現(xiàn)該報文的目的地址為控制器的地址,則將該報文通過管理口上送控制器;接收控制器發(fā)來的所述開放流協(xié)議報文的響應(yīng)報文,將該響應(yīng)報文轉(zhuǎn)發(fā)給所述相鄰轉(zhuǎn)發(fā)設(shè)備,其中,所述開放流協(xié)議報文為所述相鄰轉(zhuǎn)發(fā)設(shè)備與控制器之間的帶外連接中斷時發(fā)給本設(shè)備的。
19.根據(jù)權(quán)利要求18所述的轉(zhuǎn)發(fā)設(shè)備,其特征在于,所述轉(zhuǎn)發(fā)設(shè)備進一步包括:流表維護模塊,用于接收并保存控制器發(fā)來的帶內(nèi)控制流表項,該表項的目的地址為控制器的地址,動作為將整個報文上送到控制器; 所述協(xié)議報文帶內(nèi)轉(zhuǎn)發(fā)模塊進一步用于,當將所述開放流協(xié)議報文上送控制器前,發(fā)現(xiàn)該報文的目的地址與流表維護模塊的流表中的帶內(nèi)控制流表項匹配上,則根據(jù)該流表項中的動作:將整個報文上送到控制器,將該開放流協(xié)議報文封裝到Packet-1n消息,且在該消息中指示該開放流協(xié)議報文在本設(shè)備上的入端口,將該消息通過本設(shè)備的管理口上送控制器;且,當將所述響應(yīng)報文轉(zhuǎn)發(fā)給所述相鄰轉(zhuǎn)發(fā)設(shè)備前,接收到控制器發(fā)來的Packet-out消息,該消息包含所述開放流協(xié)議報文的響應(yīng)報文,同時包含該響應(yīng)報文對應(yīng)的動作:轉(zhuǎn)發(fā)到一出端口,該出端口為Packet-1n消息指示的入端口,根據(jù)該動作,將該響應(yīng)報文轉(zhuǎn)發(fā)到對應(yīng)的出端口。
20.—種控制器,應(yīng)用于軟件定義網(wǎng)絡(luò)SDN中,且,初始時,控制器對各轉(zhuǎn)發(fā)設(shè)備采用帶外控制方式,其特征在于,該控制器包括: 帶外連接監(jiān)測模塊:發(fā)現(xiàn)本控制器與一轉(zhuǎn)發(fā)設(shè)備的帶外連接中斷,將該轉(zhuǎn)發(fā)設(shè)備的地址添加到帶外連接中斷地址列表中,向該轉(zhuǎn)發(fā)設(shè)備的所有相鄰轉(zhuǎn)發(fā)設(shè)備的流表下發(fā)一條帶內(nèi)控制流表項,或者,在該帶外連接中斷的轉(zhuǎn)發(fā)設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備中選擇一個,向所選擇的相鄰轉(zhuǎn)發(fā)設(shè)備的流表下發(fā)一條帶內(nèi)控制流表項,所述帶內(nèi)控制流表項中的目的地址為控制器的地址,動作為將整個報文上送到控制器; 控制模塊:接收一轉(zhuǎn)發(fā)設(shè)備發(fā)來的開放流協(xié)議報文,當該報文的源地址位于帶外連接監(jiān)測模塊的帶外連接中斷地址列表中時,對該報文進行處理,將響應(yīng)報文發(fā)送給該轉(zhuǎn)發(fā)設(shè)備,以便該轉(zhuǎn)發(fā)設(shè)備將該響應(yīng)報文轉(zhuǎn)發(fā)給發(fā)來開放流協(xié)議報文的相鄰轉(zhuǎn)發(fā)設(shè)備;其中,所述開放流協(xié)議報文為所述轉(zhuǎn)發(fā)設(shè)備從其相鄰轉(zhuǎn)發(fā)設(shè)備接收到的,且所述轉(zhuǎn)發(fā)設(shè)備發(fā)現(xiàn)該報文的目的地址與自身流表中的帶內(nèi)控制流表項匹配上,則根據(jù)該流表項中的動作,將該報文發(fā)送給控制器,所述開放流協(xié)議報文為所述相鄰轉(zhuǎn)發(fā)設(shè)備在發(fā)現(xiàn)自身與控制器之間的帶外連接中斷時,將所述開放流協(xié)議報文發(fā)送給自身選擇的相鄰轉(zhuǎn)發(fā)設(shè)備或者所有相鄰轉(zhuǎn)發(fā)設(shè)備。
21.根據(jù)權(quán)利要求20所述的控制器,其特征在于,所述帶外連接監(jiān)測模塊進一步用于,當發(fā)現(xiàn)本控制器與一轉(zhuǎn)發(fā)設(shè)備間的帶外連接恢復(fù)時,通知該轉(zhuǎn)發(fā)設(shè)備的相鄰轉(zhuǎn)發(fā)設(shè)備刪除帶內(nèi)控制流表項。
22.根據(jù)權(quán)利要求20所述的控制器,其特征在于,所述控制模塊進一步用于,當發(fā)現(xiàn)在預(yù)設(shè)時長內(nèi)未接收到來自帶外連接中斷的轉(zhuǎn)發(fā)設(shè)備的開放流協(xié)議報文或者?;顖笪臅r,向帶外連接監(jiān)測模塊發(fā)送攜帶該轉(zhuǎn)發(fā)設(shè)備地址的連接中斷指示; 所述帶外連接監(jiān)測模塊進一步用于,接收控制模塊發(fā)來的所述攜帶轉(zhuǎn)發(fā)設(shè)備地址的連接中斷指示,再次通過各管理口向該轉(zhuǎn)發(fā)設(shè)備的所有相鄰轉(zhuǎn)發(fā)設(shè)備或者本控制器新選擇的相鄰轉(zhuǎn)發(fā)設(shè)備的流表下發(fā)所述帶內(nèi)控制流表項。
23.根據(jù)權(quán)利要求20所述的轉(zhuǎn)發(fā)設(shè)備,其特征在于,所述控制模塊進一步用于,所述接收一轉(zhuǎn)發(fā)設(shè)備發(fā)來的開放流協(xié)議報文為:接收一轉(zhuǎn)發(fā)設(shè)備通過管理口發(fā)來的Packet-1n消息,該消息包含開放流協(xié)議報文,且該消息指示了該開放流協(xié)議報文在該轉(zhuǎn)發(fā)設(shè)備上的入端口 ;所述將響應(yīng)報文發(fā)送給該轉(zhuǎn)發(fā)設(shè)備為:將該響應(yīng)報文和對應(yīng)的動作封裝到Packet-out消息中,其中,對應(yīng)的動作為:轉(zhuǎn)發(fā)到一出端口,該出端口為所述Packet-1n消息指示的入端口。
【文檔編號】H04L12/947GK104426789SQ201310371598
【公開日】2015年3月18日 申請日期:2013年8月23日 優(yōu)先權(quán)日:2013年8月23日
【發(fā)明者】王云毅 申請人:杭州華三通信技術(shù)有限公司