軟件定義網(wǎng)絡(luò)中的帶內(nèi)控制連接建立方法及設(shè)備的制作方法
【專利摘要】本發(fā)明提出軟件定義網(wǎng)絡(luò)中的帶內(nèi)控制連接建立方法及設(shè)備。方法包括:對(duì)于SDN中使能帶內(nèi)控制器的轉(zhuǎn)發(fā)設(shè)備,該轉(zhuǎn)發(fā)設(shè)備周期性地從自身各SDN協(xié)議端口向外發(fā)送二層SDN協(xié)議Hello報(bào)文,報(bào)文的目的MAC地址指向控制器;當(dāng)轉(zhuǎn)發(fā)設(shè)備接收到控制器發(fā)來的目的MAC地址為本轉(zhuǎn)發(fā)設(shè)備MAC地址的單播二層SDN協(xié)議報(bào)文后,記錄自身到控制器的二層帶內(nèi)接口;當(dāng)轉(zhuǎn)發(fā)設(shè)備接收到來自其它轉(zhuǎn)發(fā)設(shè)備的目的MAC地址指向控制器的Hello報(bào)文后,通過二層帶內(nèi)接口將報(bào)文轉(zhuǎn)發(fā)給控制器。本發(fā)明實(shí)現(xiàn)了轉(zhuǎn)發(fā)設(shè)備與控制器自動(dòng)建立帶內(nèi)控制連接。
【專利說明】軟件定義網(wǎng)絡(luò)中的帶內(nèi)控制連接建立方法及設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及軟件定義網(wǎng)絡(luò)(SDN, Software Defined Network)【技術(shù)領(lǐng)域】,尤其涉及軟件定義網(wǎng)絡(luò)中的帶內(nèi)控制連接建立方法及轉(zhuǎn)發(fā)設(shè)備、控制器。
【背景技術(shù)】
[0002]為方便理解,首先給出如下說明:
[0003]SDN =SDN與傳統(tǒng)網(wǎng)絡(luò)的最大區(qū)別,是將控制平面和網(wǎng)絡(luò)轉(zhuǎn)發(fā)平面分離開來,網(wǎng)絡(luò)轉(zhuǎn)發(fā)平面將不再擁有控制功能,將控制平面交給獨(dú)立于轉(zhuǎn)發(fā)平面之外的操作系統(tǒng),特性則基于操作系統(tǒng)進(jìn)行定制。
[0004]開放流(OpenFlow):是一種SDN架構(gòu)中定義控制器(Controller)和轉(zhuǎn)發(fā)層之間的通信接口標(biāo)準(zhǔn)。OpenFlow允許直接訪問和操作網(wǎng)絡(luò)設(shè)備的轉(zhuǎn)發(fā)平面,這些網(wǎng)絡(luò)設(shè)備可能是物理上的,也可能是虛擬的。
[0005]OpenFlow的思想是分離控制平面和數(shù)據(jù)平面,二者之間使用標(biāo)準(zhǔn)的協(xié)議通信;數(shù)據(jù)平面采用基于流的方式進(jìn)行轉(zhuǎn)發(fā)。
[0006]OpenFlow 網(wǎng)絡(luò)由 OpenFlow 轉(zhuǎn)發(fā)設(shè)備(如:0penFlow Switch)和控制器(OpenFlowController)通過安全通道(Secure Channel)組成。
[0007]控制器(Controller):是OpenFlow架構(gòu)中的控制平面。下發(fā)各種指令通過安全信道控制OpenFlow交換機(jī)(轉(zhuǎn)發(fā)設(shè)備),用戶可以通過編程自己定義控制平面從而定義整個(gè)網(wǎng)絡(luò)。
[0008]流表:為ControlIer下發(fā)到OpenFlow交換機(jī)的硬件表項(xiàng),通過不同的匹配域匹配不同的報(bào)文,并對(duì)這些報(bào)文進(jìn)行各種處理。
[0009]帶內(nèi)連接!Controller不通過獨(dú)立的控制網(wǎng)絡(luò),而是通過OpenFlow網(wǎng)絡(luò)來控制OpenFlow交換機(jī)進(jìn)行協(xié)議交互。
[0010]OpenFlow將網(wǎng)絡(luò)控制功能單獨(dú)分離出來并邏輯集中到控制軟件上,以實(shí)現(xiàn)SDN中控制平面和轉(zhuǎn)發(fā)平面的分離以及網(wǎng)絡(luò)控制和管理的集中,是定義控制器和轉(zhuǎn)發(fā)層的軟件應(yīng)用程序接口,可基于硬件來控制網(wǎng)絡(luò)數(shù)據(jù)的轉(zhuǎn)發(fā)。
[0011]OpenFlow控制器通過網(wǎng)絡(luò)和OpenFlow交換機(jī)連接。所有OpenFlow協(xié)議報(bào)文都被同樣的流程處理。
[0012]OpenFlow交換機(jī)無(wú)法自動(dòng)帶內(nèi)發(fā)現(xiàn)組網(wǎng)內(nèi)的控制器,而需要進(jìn)行額外配置。OpenFlow控制器無(wú)法簡(jiǎn)單地獲取帶內(nèi)組網(wǎng)的拓?fù)?。所有的OpenFlow協(xié)議報(bào)文都以同樣的流程接收并被處理,大量的packet-out報(bào)文會(huì)占用OpenFlow交換機(jī)的CPU資源并可能導(dǎo)致其它更重要的OpenFlow協(xié)議報(bào)文被丟棄無(wú)法處理。
【發(fā)明內(nèi)容】
[0013]本發(fā)明提供SDN中的帶內(nèi)控制連接建立方法及轉(zhuǎn)發(fā)設(shè)備、控制器,以實(shí)現(xiàn)轉(zhuǎn)發(fā)設(shè)備與控制器自動(dòng)建立帶內(nèi)控制連接。[0014]本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0015]一種軟件定義網(wǎng)絡(luò)SDN中的帶內(nèi)控制連接建立方法,該方法包括:
[0016]對(duì)于SDN中使能帶內(nèi)控制器的轉(zhuǎn)發(fā)設(shè)備,該設(shè)備啟動(dòng)后,在本地生成第一流表項(xiàng):目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址,動(dòng)作為輸出到控制器;
[0017]轉(zhuǎn)發(fā)設(shè)備周期性地從自身各SDN協(xié)議端口向外發(fā)送二層SDN協(xié)議Hello報(bào)文,報(bào)文的目的MAC地址為所述預(yù)設(shè)標(biāo)識(shí)地址;
[0018]當(dāng)轉(zhuǎn)發(fā)設(shè)備接收到控制器發(fā)來的目的MAC地址為本轉(zhuǎn)發(fā)設(shè)備MAC地址的單播二層SDN協(xié)議報(bào)文后,記錄自身到控制器的二層帶內(nèi)接口 ;
[0019]當(dāng)轉(zhuǎn)發(fā)設(shè)備接收到來自其它轉(zhuǎn)發(fā)設(shè)備的目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的二層SDN協(xié)議Hello報(bào)文后,按照第一流表項(xiàng)通過自身到控制器的二層帶內(nèi)接口將報(bào)文轉(zhuǎn)發(fā)給控制器;
[0020]轉(zhuǎn)發(fā)設(shè)備接收控制器下發(fā)的帶內(nèi)控制流表項(xiàng),所述表項(xiàng)指示了從控制器到其它轉(zhuǎn)發(fā)設(shè)備的二層單播報(bào)文在本轉(zhuǎn)發(fā)設(shè)備上的轉(zhuǎn)發(fā)端口,或者指示了從其它轉(zhuǎn)發(fā)設(shè)備到控制器的二層單播報(bào)文在本轉(zhuǎn)發(fā)設(shè)備上的轉(zhuǎn)發(fā)端口;
[0021]轉(zhuǎn)發(fā)設(shè)備接收到控制器發(fā)來的目的MAC地址為其它轉(zhuǎn)發(fā)設(shè)備的單播二層SDN協(xié)議報(bào)文,按照控制器下發(fā)的帶內(nèi)控制流表項(xiàng),將報(bào)文轉(zhuǎn)發(fā)給其它轉(zhuǎn)發(fā)設(shè)備,或者轉(zhuǎn)發(fā)設(shè)備接收到其它轉(zhuǎn)發(fā)設(shè)備發(fā)來的目的MAC地址為控制器的單播二層SDN協(xié)議報(bào)文,按照控制器下發(fā)的帶內(nèi)控制流表項(xiàng),將報(bào)文轉(zhuǎn)發(fā)給控制器。
[0022]一種軟件定義網(wǎng)絡(luò)SDN中的帶內(nèi)控制連接建立方法,該方法包括:
[0023]控制器接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文,從該報(bào)文學(xué)習(xí)到直連轉(zhuǎn)發(fā)設(shè)備的MAC地址,并學(xué)習(xí)到本控制器到直連轉(zhuǎn)發(fā)設(shè)備的帶內(nèi)組網(wǎng)拓?fù)?,向直連轉(zhuǎn)發(fā)設(shè)備返回單播二層SDN協(xié)議報(bào)文;
[0024]控制器接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的Packet-1n報(bào)文,若從該報(bào)文中解析出目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文,則從該P(yáng)acket-1n報(bào)文學(xué)習(xí)到該Hello報(bào)文的發(fā)送轉(zhuǎn)發(fā)設(shè)備的下一跳轉(zhuǎn)發(fā)設(shè)備到該發(fā)送轉(zhuǎn)發(fā)設(shè)備的帶內(nèi)組網(wǎng)拓?fù)?,并學(xué)習(xí)到分別應(yīng)用在本控制器與該發(fā)送轉(zhuǎn)發(fā)設(shè)備之間的每個(gè)轉(zhuǎn)發(fā)設(shè)備上的帶內(nèi)控制流表項(xiàng),將學(xué)習(xí)到的各帶內(nèi)控制流表項(xiàng)對(duì)應(yīng)發(fā)送給每個(gè)轉(zhuǎn)發(fā)設(shè)備,同時(shí)向發(fā)送轉(zhuǎn)發(fā)設(shè)備返回單播二層SDN協(xié)議報(bào)文,其中,應(yīng)用在任一轉(zhuǎn)發(fā)設(shè)備上的帶內(nèi)控制流表項(xiàng)指示了從控制器到其它轉(zhuǎn)發(fā)設(shè)備的報(bào)文在本轉(zhuǎn)發(fā)設(shè)備上的轉(zhuǎn)發(fā)端口,或者指示了從其它轉(zhuǎn)發(fā)設(shè)備到控制器的報(bào)文在本轉(zhuǎn)發(fā)設(shè)備上的轉(zhuǎn)發(fā)端□。
[0025]一種軟件定義網(wǎng)絡(luò)SDN中的帶內(nèi)組網(wǎng)拓?fù)鋵W(xué)習(xí)方法,該方法包括:
[0026]控制器接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文,從該報(bào)文學(xué)習(xí)到直連轉(zhuǎn)發(fā)設(shè)備的MAC地址,并學(xué)習(xí)到本控制器到直連轉(zhuǎn)發(fā)設(shè)備的帶內(nèi)組網(wǎng)拓?fù)?,所述預(yù)設(shè)標(biāo)識(shí)地址指向本控制器;
[0027]控制器接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的Packet-1n報(bào)文,從該報(bào)文中解析出二層SDN協(xié)議Hello報(bào)文,若Hello報(bào)文的目的MAC地址為指向本控制器的預(yù)設(shè)標(biāo)識(shí)地址,則從Hello報(bào)文的源MAC地址中獲取Hello報(bào)文的發(fā)送設(shè)備的MAC地址,從Packet-1n報(bào)文的源MAC地址中獲取Hello報(bào)文的發(fā)送設(shè)備的下一跳設(shè)備的MAC地址,同時(shí)從Packet-1n報(bào)文中獲取所述發(fā)送設(shè)備接收所述下一跳設(shè)備報(bào)文的入接口,記錄所述發(fā)送設(shè)備與所述下一跳設(shè)備的MAC地址、以及所述下一跳設(shè)備與所述發(fā)送設(shè)備接收所述下一跳設(shè)備的報(bào)文入接口之間的對(duì)應(yīng)關(guān)系,將該對(duì)應(yīng)關(guān)系作為所述下一跳設(shè)備到所述發(fā)送設(shè)備的帶內(nèi)組網(wǎng)拓?fù)洹?br>
[0028]一種軟件定義網(wǎng)絡(luò)SDN中的轉(zhuǎn)發(fā)設(shè)備,該轉(zhuǎn)發(fā)設(shè)備使能帶內(nèi)控制器,該轉(zhuǎn)發(fā)設(shè)備包括:
[0029]第一流表項(xiàng)生成模塊:啟動(dòng)后,在本地生成第一流表項(xiàng):目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址,動(dòng)作為輸出到控制器;
[0030]帶內(nèi)連接建立模塊:周期性地從本設(shè)備各SDN協(xié)議端口向外發(fā)送二層SDN協(xié)議Hello報(bào)文,報(bào)文的目的MAC地址為所述預(yù)設(shè)標(biāo)識(shí)地址;當(dāng)接收到控制器發(fā)來的目的MAC地址為本轉(zhuǎn)發(fā)設(shè)備MAC地址的單播二層SDN協(xié)議報(bào)文后,記錄本設(shè)備到控制器的二層帶內(nèi)接Π ;
[0031]帶內(nèi)轉(zhuǎn)發(fā)模塊:當(dāng)接收到來自其它轉(zhuǎn)發(fā)設(shè)備的目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文后,按照第一流表項(xiàng)生成模塊中的第一流表項(xiàng),通過帶內(nèi)連接建立模塊記錄的本設(shè)備到控制器的二層帶內(nèi)接口將報(bào)文轉(zhuǎn)發(fā)給控制器;接收控制器下發(fā)的帶內(nèi)控制流表項(xiàng),所述表項(xiàng)指示了從控制器到其它轉(zhuǎn)發(fā)設(shè)備的二層單播報(bào)文在本轉(zhuǎn)發(fā)設(shè)備上的轉(zhuǎn)發(fā)端口,或者指示了從其它轉(zhuǎn)發(fā)設(shè)備到控制器的二層單播報(bào)文在本轉(zhuǎn)發(fā)設(shè)備上的轉(zhuǎn)發(fā)端口 ;接收到控制器發(fā)來的目的MAC地址為其它轉(zhuǎn)發(fā)設(shè)備的單播二層SDN協(xié)議Hello報(bào)文,按照控制器下發(fā)的帶內(nèi)控制流表項(xiàng),將報(bào)文轉(zhuǎn)發(fā)給其它轉(zhuǎn)發(fā)設(shè)備,或者接收到其它轉(zhuǎn)發(fā)設(shè)備發(fā)來的目的MAC地址為控制器的單播二層SDN協(xié)議報(bào)文,按照控制器下發(fā)的帶內(nèi)控制流表項(xiàng),將報(bào)文轉(zhuǎn)發(fā)給控制器。
[0032]一種軟件定義網(wǎng)絡(luò)SDN中的控制器,包括:
[0033]第一帶內(nèi)連接建立模塊:接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文,從該報(bào)文學(xué)習(xí)到直連轉(zhuǎn)發(fā)設(shè)備的MAC地址,并學(xué)習(xí)到本控制器到直連轉(zhuǎn)發(fā)設(shè)備的帶內(nèi)組網(wǎng)拓?fù)?,向直連轉(zhuǎn)發(fā)設(shè)備返回單播二層SDN協(xié)議報(bào)文,所述預(yù)設(shè)標(biāo)識(shí)地址指向本控制器;
[0034]第二帶內(nèi)連接建立模塊:接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的Packet-1n報(bào)文,若從該報(bào)文中解析出目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文,則從該P(yáng)acket-1n報(bào)文學(xué)習(xí)到該Hello報(bào)文的發(fā)送轉(zhuǎn)發(fā)設(shè)備的下一跳轉(zhuǎn)發(fā)設(shè)備到該發(fā)送轉(zhuǎn)發(fā)設(shè)備的帶內(nèi)組網(wǎng)拓?fù)洌W(xué)習(xí)到分別應(yīng)用在本控制器與該發(fā)送轉(zhuǎn)發(fā)設(shè)備之間的每個(gè)轉(zhuǎn)發(fā)設(shè)備上的帶內(nèi)控制流表項(xiàng),將學(xué)習(xí)到的各帶內(nèi)控制流表項(xiàng)對(duì)應(yīng)發(fā)送給每個(gè)轉(zhuǎn)發(fā)設(shè)備,同時(shí)向發(fā)送轉(zhuǎn)發(fā)設(shè)備返回單播二層SDN協(xié)議報(bào)文,其中,應(yīng)用在任一轉(zhuǎn)發(fā)設(shè)備上的帶內(nèi)控制流表項(xiàng)指示了從控制器到其它轉(zhuǎn)發(fā)設(shè)備的報(bào)文在本轉(zhuǎn)發(fā)設(shè)備上的轉(zhuǎn)發(fā)端口,或者指示了從其它轉(zhuǎn)發(fā)設(shè)備到控制器的報(bào)文在本轉(zhuǎn)發(fā)設(shè)備上的轉(zhuǎn)發(fā)端口。
[0035]一種軟件定義網(wǎng)絡(luò)SDN中的控制器,包括:
[0036]帶內(nèi)組網(wǎng)拓?fù)鋵W(xué)習(xí)模塊,用于:
[0037]接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文,從該報(bào)文學(xué)習(xí)到直連轉(zhuǎn)發(fā)設(shè)備的MAC地址,并學(xué)習(xí)到本控制器到直連轉(zhuǎn)發(fā)設(shè)備的帶內(nèi)組網(wǎng)拓?fù)?,所述預(yù)設(shè)標(biāo)識(shí)地址指向本控制器;
[0038]接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的Packet-1n報(bào)文,從該報(bào)文中解析出二層SDN協(xié)議He I 1報(bào)文,若Hello報(bào)文的目的MAC地址為指向本控制器的預(yù)設(shè)標(biāo)識(shí)地址,則從Hello報(bào)文的源MAC地址中獲取Hello報(bào)文的發(fā)送設(shè)備的MAC地址,從Packet-1n報(bào)文的源MAC地址中獲取Hello報(bào)文的發(fā)送設(shè)備的下一跳設(shè)備的MAC地址,同時(shí)從Packet-1n報(bào)文中獲取所述下一跳設(shè)備到所述發(fā)送設(shè)備的出接口,記錄所述下一跳設(shè)備的MAC地址、所述發(fā)送設(shè)備與所述下一跳設(shè)備到所述發(fā)送設(shè)備的出接口之間的對(duì)應(yīng)關(guān)系,將該對(duì)應(yīng)關(guān)系作為所述下一跳設(shè)備到所述發(fā)送設(shè)備的帶內(nèi)組網(wǎng)拓?fù)洹?br>
[0039]可見,本發(fā)明可以通過二層網(wǎng)絡(luò)實(shí)現(xiàn)SDN中的轉(zhuǎn)發(fā)設(shè)備和控制器自動(dòng)建立帶內(nèi)控制連接,同時(shí)可以實(shí)現(xiàn)帶內(nèi)組網(wǎng)拓?fù)浒l(fā)現(xiàn)。
【專利附圖】
【附圖說明】
[0040]圖1為本發(fā)明實(shí)施例提供的SDN中的帶內(nèi)控制連接建立方法流程圖;
[0041]圖2為本發(fā)明又一實(shí)施例提供的SDN中的帶內(nèi)控制連接建立方法流程圖;
[0042]圖3為以O(shè)penflow為例,本發(fā)明又一實(shí)施例提供的SDN中的帶內(nèi)控制連接建立方法流程圖;
[0043]圖4為本發(fā)明應(yīng)用示例圖;
[0044]圖5為以O(shè)penflow為例,本發(fā)明又一實(shí)施例提供的SDN中的帶內(nèi)控制連接建立方法流程圖;
[0045]圖6為本發(fā)明實(shí)施例提供的SDN中的帶內(nèi)組網(wǎng)拓?fù)鋵W(xué)習(xí)方法流程圖;
[0046]圖7為本發(fā)明實(shí)施例提供的SDN中的轉(zhuǎn)發(fā)設(shè)備的組成示意圖;
[0047]圖8為本發(fā)明實(shí)施例提供的SDN中的控制器的組成示意圖。
【具體實(shí)施方式】
[0048]下面結(jié)合附圖及具體實(shí)施例對(duì)本申請(qǐng)?jiān)僮鬟M(jìn)一步詳細(xì)的說明。
[0049]為清楚起見,首先對(duì)本發(fā)明中出現(xiàn)的以下術(shù)語(yǔ)進(jìn)行解釋:
[0050]Packet-1n:轉(zhuǎn)發(fā)設(shè)備將其接收到的報(bào)文封裝在Packet-1n報(bào)文內(nèi),并通過SDN控制鏈路將Packet-1n報(bào)文發(fā)送到控制器,該報(bào)文會(huì)標(biāo)示轉(zhuǎn)發(fā)設(shè)備收到的報(bào)文的入端口。
[0051]Packet-out:控制器將報(bào)文封裝在Packet-out報(bào)文內(nèi),并通過SDN控制鏈路將Packet-out報(bào)文發(fā)送到轉(zhuǎn)發(fā)設(shè)備,并通過該報(bào)文告知轉(zhuǎn)發(fā)設(shè)備如何處理Packet-out報(bào)文中封裝的報(bào)文。
[0052]圖1為本發(fā)明實(shí)施例提供的SDN中的帶內(nèi)控制連接建立方法流程圖,如圖1所示,其具體步驟如下:
[0053]步驟101:對(duì)于SDN中使能帶內(nèi)控制器的轉(zhuǎn)發(fā)設(shè)備,該設(shè)備啟動(dòng)后,在本地生成第一流表項(xiàng):目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址,動(dòng)作為輸出到控制器。
[0054]步驟102:轉(zhuǎn)發(fā)設(shè)備周期性地從自身各SDN協(xié)議端口向外發(fā)送二層SDN協(xié)議Hel1報(bào)文,報(bào)文的目的MAC地址為所述預(yù)設(shè)標(biāo)識(shí)地址。
[0055]步驟103:當(dāng)轉(zhuǎn)發(fā)設(shè)備接收到控制器發(fā)來的目的MAC地址為本轉(zhuǎn)發(fā)設(shè)備MAC地址的單播二層SDN協(xié)議報(bào)文后,記錄自身到控制器的二層帶內(nèi)接口。
[0056]步驟104:當(dāng)轉(zhuǎn)發(fā)設(shè)備接收到來自其它轉(zhuǎn)發(fā)設(shè)備的目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的二層SDN協(xié)議Hello報(bào)文后,按照第一流表項(xiàng)通過自身到控制器的二層帶內(nèi)接口將報(bào)文轉(zhuǎn)發(fā)給控制器。[0057]實(shí)際應(yīng)用中,當(dāng)轉(zhuǎn)發(fā)設(shè)備接收到來自其它轉(zhuǎn)發(fā)設(shè)備的目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的二層SDN協(xié)議Hello報(bào)文之后,要先判斷是否已記錄自身到控制器的二層帶內(nèi)接口,若是,將該二層SDN協(xié)議Hello報(bào)文封裝到Packet-1n報(bào)文中,將該P(yáng)acket-1n報(bào)文按照第一流表項(xiàng)通過自身到控制器的二層帶內(nèi)接口將報(bào)文轉(zhuǎn)發(fā)給控制器;否則,丟棄該二層SDN協(xié)議Hello報(bào)文。
[0058]步驟105:轉(zhuǎn)發(fā)設(shè)備接收控制器下發(fā)的帶內(nèi)控制流表項(xiàng),所述表項(xiàng)指示了從控制器到其它轉(zhuǎn)發(fā)設(shè)備的二層單播報(bào)文在本轉(zhuǎn)發(fā)設(shè)備上的轉(zhuǎn)發(fā)端口,或者指示了從其它轉(zhuǎn)發(fā)設(shè)備到控制器的二層單播報(bào)文在本轉(zhuǎn)發(fā)設(shè)備上的轉(zhuǎn)發(fā)端口。
[0059]步驟106:轉(zhuǎn)發(fā)設(shè)備接收到控制器發(fā)來的目的MAC地址為其它轉(zhuǎn)發(fā)設(shè)備的單播二層SDN協(xié)議報(bào)文,按照控制器下發(fā)的帶內(nèi)控制流表項(xiàng),將報(bào)文轉(zhuǎn)發(fā)給其它轉(zhuǎn)發(fā)設(shè)備,或者轉(zhuǎn)發(fā)設(shè)備接收到其它轉(zhuǎn)發(fā)設(shè)備發(fā)來的目的MAC地址為控制器的單播二層SDN協(xié)議報(bào)文,按照控制器下發(fā)的帶內(nèi)控制流表項(xiàng),將報(bào)文轉(zhuǎn)發(fā)給控制器。
[0060]實(shí)際應(yīng)用中,步驟102中,轉(zhuǎn)發(fā)設(shè)備周期性地從自身各SDN協(xié)議端口向外發(fā)送二層SDN協(xié)議Hel 1報(bào)文可以為:對(duì)于自身的每個(gè)SDN協(xié)議端口,分別針對(duì)該端口使能的每個(gè)VLAN周期性地從該端口發(fā)送二層SDN協(xié)議Hello報(bào)文;
[0061]同時(shí),步驟103中,當(dāng)轉(zhuǎn)發(fā)設(shè)備接收到控制器發(fā)來的目的MAC地址為本轉(zhuǎn)發(fā)設(shè)備MAC地址的單播二層SDN協(xié)議報(bào)文可包括:轉(zhuǎn)發(fā)設(shè)備接收到控制器發(fā)來的目的MAC地址為本轉(zhuǎn)發(fā)設(shè)備MAC地址、且包含VLAN標(biāo)識(shí)的單播二層SDN協(xié)議Hello報(bào)文和單播二層Packet-out報(bào)文,將Hello報(bào)文中的VLAN標(biāo)識(shí)對(duì)應(yīng)VLAN作為此后發(fā)送除Packet-out和Packet-1n報(bào)文外的SDN協(xié)議報(bào)文所使用的VLAN,將Packet-out報(bào)文中的VLAN標(biāo)識(shí)對(duì)應(yīng)VLAN作為此后發(fā)送Packet-out和Packet-1n報(bào)文所使用的VLAN。
[0062]另外,轉(zhuǎn)發(fā)設(shè)備可周期性地針對(duì)Packet-out和Packet-1n報(bào)文所使用的VLAN,以及除Packet-out和Packet-1n報(bào)文外的SDN協(xié)議報(bào)文所使用的VLAN與控制器進(jìn)行保活報(bào)文交互,若針對(duì)其中一個(gè)VLAN?;钍?,則將該VLAN上的報(bào)文轉(zhuǎn)移到另一 VLAN上傳輸,并與控制器重新協(xié)商出一個(gè)替換VLAN,協(xié)商成功后,將?;钍〉腣LAN上的報(bào)文再轉(zhuǎn)移到替換VLAN上傳輸。
[0063]圖2為本發(fā)明又一實(shí)施例提供的SDN中的帶內(nèi)控制連接建立方法流程圖,如圖2所示,其具體步驟如下:
[0064]步驟201:控制器接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文,從該報(bào)文學(xué)習(xí)到直連轉(zhuǎn)發(fā)設(shè)備的MAC地址,并學(xué)習(xí)到本控制器到直連轉(zhuǎn)發(fā)設(shè)備的帶內(nèi)組網(wǎng)拓?fù)?,向直連轉(zhuǎn)發(fā)設(shè)備返回單播二層SDN協(xié)議報(bào)文。
[0065]步驟202:控制器接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的Packet-1n報(bào)文,若從該報(bào)文中解析出目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文,則從該P(yáng)acket-1n報(bào)文學(xué)習(xí)到該Hello報(bào)文的發(fā)送轉(zhuǎn)發(fā)設(shè)備的下一跳轉(zhuǎn)發(fā)設(shè)備到該發(fā)送轉(zhuǎn)發(fā)設(shè)備的帶內(nèi)組網(wǎng)拓?fù)?,并學(xué)習(xí)到分別應(yīng)用在本控制器與該發(fā)送轉(zhuǎn)發(fā)設(shè)備之間的每個(gè)轉(zhuǎn)發(fā)設(shè)備上的帶內(nèi)控制流表項(xiàng),將學(xué)習(xí)到的各帶內(nèi)控制流表項(xiàng)對(duì)應(yīng)發(fā)送給每個(gè)轉(zhuǎn)發(fā)設(shè)備,同時(shí)向發(fā)送轉(zhuǎn)發(fā)設(shè)備返回單播二層SDN協(xié)議報(bào)文,其中,應(yīng)用在任一轉(zhuǎn)發(fā)設(shè)備上的帶內(nèi)控制流表項(xiàng)指示了從控制器到其它轉(zhuǎn)發(fā)設(shè)備的報(bào)文在本轉(zhuǎn)發(fā)設(shè)備上的轉(zhuǎn)發(fā)端口,或者指示了從其它轉(zhuǎn)發(fā)設(shè)備到控制器的報(bào)文在本轉(zhuǎn)發(fā)設(shè)備上的轉(zhuǎn)發(fā)端口。[0066]實(shí)際應(yīng)用中,步驟202中,控制器學(xué)習(xí)到分別應(yīng)用在本控制器與該發(fā)送轉(zhuǎn)發(fā)設(shè)備之間的每個(gè)轉(zhuǎn)發(fā)設(shè)備上的帶內(nèi)控制流表項(xiàng)可包括:
[0067]控制器根據(jù)已學(xué)習(xí)到的帶內(nèi)組網(wǎng)拓?fù)?,確定從所述Packet-1n報(bào)文中解析出的Hello報(bào)文在發(fā)送轉(zhuǎn)發(fā)設(shè)備與本控制器之間的轉(zhuǎn)發(fā)路徑,且,若該確定的轉(zhuǎn)發(fā)路徑優(yōu)于自身已學(xué)習(xí)到的該發(fā)送轉(zhuǎn)發(fā)設(shè)備與本控制器之間的所有其它轉(zhuǎn)發(fā)路徑,則根據(jù)該確定的轉(zhuǎn)發(fā)路徑學(xué)習(xí)到分別應(yīng)用在本控制器與該發(fā)送轉(zhuǎn)發(fā)設(shè)備之間的每個(gè)轉(zhuǎn)發(fā)設(shè)備上的帶內(nèi)控制流表項(xiàng)。
[0068]實(shí)際應(yīng)用中,步驟201中,控制器接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文可包括:控制器收到該轉(zhuǎn)發(fā)設(shè)備發(fā)來的針對(duì)多個(gè)VLAN的所述Hello報(bào)文,則從該多個(gè)VLAN中選擇兩個(gè)VLAN ;
[0069]且,步驟201中,控制器向直連轉(zhuǎn)發(fā)設(shè)備返回單播二層SDN協(xié)議報(bào)文可為:
[0070]控制器將選擇的一個(gè)VLAN的標(biāo)識(shí)攜帶在單播二層SDN協(xié)議Hello報(bào)文中,將另一個(gè)VLAN的標(biāo)識(shí)攜帶在單播二層SDN協(xié)議Packet-out報(bào)文中發(fā)送給直連轉(zhuǎn)發(fā)設(shè)備,以便:此后直連轉(zhuǎn)發(fā)設(shè)備使用Hello報(bào)文中的VLAN標(biāo)識(shí)對(duì)應(yīng)VLAN發(fā)送除Packet-out和Packet-1n報(bào)文之外的SDN協(xié)議報(bào)文,使用Packet-out報(bào)文中的VLAN標(biāo)識(shí)對(duì)應(yīng)VLAN發(fā)送Packet-out和 Packet-1n 報(bào)文。
[0071 ] 步驟202中,控制器接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的Packet-1n報(bào)文,若從該報(bào)文中解析出目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文可包括:
[0072]控制器接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的多個(gè)Packet-1n報(bào)文,從該多個(gè)Packet-1n報(bào)文中都解析出目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文,且該多個(gè)Hello報(bào)文的源MAC地址相同,且該多個(gè)Hello報(bào)文分別攜帶不同的VLAN標(biāo)識(shí),則從該多個(gè)VLAN中選擇兩個(gè)VLAN ;
[0073]且,步驟202中,控制器向發(fā)送轉(zhuǎn)發(fā)設(shè)備返回單播二層SDN協(xié)議報(bào)文可為:
[0074]控制器將選擇的一個(gè)VLAN的標(biāo)識(shí)攜帶在單播二層SDN協(xié)議Hello報(bào)文中,將另一個(gè)VLAN的標(biāo)識(shí)攜帶在單播二層SDN協(xié)議Packet-out報(bào)文中發(fā)送給發(fā)送轉(zhuǎn)發(fā)設(shè)備,以便:此后發(fā)送轉(zhuǎn)發(fā)設(shè)備使用Hello報(bào)文中的VLAN標(biāo)識(shí)對(duì)應(yīng)VLAN發(fā)送除Packet-out和Packet-1n報(bào)文之外的SDN協(xié)議報(bào)文,使用Packet-out報(bào)文中的VLAN標(biāo)識(shí)對(duì)應(yīng)VLAN發(fā)送Packet-out和 Packet-1n 報(bào)文。
[0075]Openflow協(xié)議是SDN協(xié)議的常見協(xié)議,以下以O(shè)penflow協(xié)議為例進(jìn)行說明:
[0076]圖3為以O(shè)penflow為例,本發(fā)明又一實(shí)施例提供的SDN中的帶內(nèi)控制連接建立方法流程圖,本實(shí)施例中,OpenFlow交換機(jī)與Controller直連,如圖3所示,其具體步驟如下:
[0077]步驟301:使能帶內(nèi)控制器的OpenFlow交換機(jī)啟動(dòng)后自動(dòng)生成如下低優(yōu)先級(jí)流表項(xiàng):
[0078]流表項(xiàng)A:目的MAC地址為預(yù)設(shè)的指向Controller的標(biāo)識(shí)地址,如:0penFlow 二層控制網(wǎng)絡(luò)組播MAC地址,動(dòng)作為output到Controller ;
[0079]流表項(xiàng)B:目的MAC地址為本交換機(jī),動(dòng)作為output到本地(local),即上送本交換機(jī)的中央處理單兀(CPU, Central Processing Unit)。
[0080]步驟302:OpenF1w交換機(jī)周期性地從自身各OpenFlow協(xié)議端口向外發(fā)送二層OpenFlow協(xié)議Hello報(bào)文,報(bào)文的源MAC地址為本交換機(jī),目的MAC地址為設(shè)定的OpenFlow二層控制網(wǎng)絡(luò)組播MAC地址。
[0081]圖4為本發(fā)明應(yīng)用示例圖,如圖4中的Switch A,周期性地從端口 A1、A2、A3向外發(fā)送二層OpenFlow協(xié)議Hello報(bào)文,報(bào)文的目的MAC地址為設(shè)定的OpenFlow 二層控制網(wǎng)絡(luò)組播MAC地址。
[0082]步驟303 Controller收到OpenFlow交換機(jī)發(fā)送的二層Hello報(bào)文,從該報(bào)文學(xué)習(xí)到OpenFlow交換機(jī)的MAC地址,同時(shí)學(xué)習(xí)到本Controller直連到該OpenFlow交換機(jī)的帶內(nèi)組網(wǎng)拓?fù)?,并向該交換機(jī)發(fā)送單播二層OpenFlow協(xié)議報(bào)文,報(bào)文的源MAC地址為本Controller的MAC地址,目的MAC地址為該交換機(jī)的MAC地址。
[0083]這里,Controller學(xué)習(xí)到本Controller直連到該OpenFlow交換機(jī)的帶內(nèi)組網(wǎng)拓?fù)渚唧w為:學(xué)習(xí)到本ControIler直連到該OpenFlow交換機(jī)的端口,該端口即為本步驟中接收到OpenFlow交換機(jī)發(fā)來的二層Hello報(bào)文的端口。如圖4, Controller從端口 M收到Switch A發(fā)送的目的MAC地址為設(shè)定的OpenFlow 二層控制網(wǎng)絡(luò)組播MAC地址的Hello報(bào)文,學(xué)習(xí)到:本Controller通過端口 M直連到Switch A。
[0084]步驟304: OpenF I ow交換機(jī)收到Controller發(fā)送的單播二層OpenFlow協(xié)議報(bào)文后,建立MAC表項(xiàng):源MAC地址為Controller的MAC地址,目的MAC地址為本交換機(jī)的MAC地址,入端口為該單播二層OpenFlow協(xié)議報(bào)文的入端口,并與Controller協(xié)商出OpenFlow協(xié)議版本,后續(xù)使用該版本進(jìn)行OpenFlow協(xié)議交互。
[0085]如圖4中的Switch A, Switch A收到Controller發(fā)來的單播二層OpenFlow協(xié)議報(bào)文后,建立的MAC表項(xiàng)為:源MAC地址為ControIIer的MAC地址,目的MAC地址為SwitchA的MAC地址,入端口為Al,則此后Switch A通過端口 Al與Controller進(jìn)行帶內(nèi)控制交互。
[0086]其中,步驟302中,OpenFlow交換機(jī)周期性地從自身各OpenFlow協(xié)議端口向外發(fā)送二層OpenFlow協(xié)議Hello報(bào)文時(shí),可以針對(duì)端口使能的每個(gè)VLAN分別發(fā)出一個(gè)Hello報(bào)文;同時(shí),步驟303中,Controller可以在Hello報(bào)文攜帶的所有VLAN中選擇兩個(gè)VLAN,使用其中一個(gè)VLAN向OpenFlow交換機(jī)發(fā)送單播二層Hello報(bào)文,使用另一個(gè)VLAN向OpenFlow交換機(jī)發(fā)送單播二層Packet-out報(bào)文;步驟304中,OpenFlow交換機(jī)收到單播二層Hello報(bào)文后,將報(bào)文中的VLAN作為后續(xù)發(fā)送除Packet-out和Packet-1n報(bào)文外的OpenFlow協(xié)議報(bào)文使用的VLAN,收到單播二層Packet-out報(bào)文后,將報(bào)文中的VLAN作為后續(xù)發(fā)送Packet-out和Packet-1n報(bào)文使用的VLAN。
[0087]且,OpenFlow交換機(jī)和Controller針對(duì)上述兩VLAN進(jìn)行周期性?;顖?bào)文交互,若針對(duì)其中任一個(gè)VLAN,未能在預(yù)設(shè)保活周期內(nèi)?;畛晒?,則OpenFlow交換機(jī)從與Controller連接的端口上發(fā)送攜帶除保活失敗VLAN的其它所有VLAN的標(biāo)識(shí)的OpenFlow協(xié)議報(bào)文,以便Controller在這些VLAN中選擇一個(gè)VLAN用于代替?;钍〉腣LAN。若兩個(gè)VLAN同時(shí)在預(yù)設(shè)?;钪芷趦?nèi)?;钍?則OpenFlow交換機(jī)進(jìn)入fail-open模式,并從與Controller連接的端口上發(fā)送攜帶除?;钍LAN的其它所有VLAN的標(biāo)識(shí)的OpenFlow協(xié)議報(bào)文,以便Controller在這些VLAN中重新選擇兩個(gè)VLAN用于代替?;钍〉膬蓚€(gè)VLAN0
[0088]圖5為以O(shè)penflow為例,本發(fā)明又一實(shí)施例提供的SDN中的帶內(nèi)連接建立方法流程圖,本實(shí)施例中,OpenFlow交換機(jī)與Controller間接相連,即OpenFlow交換機(jī)與Controller之間還連接了一個(gè)或多個(gè)OpenFlow交換機(jī),如圖5所示,其具體步驟如下:
[0089]步驟501:使能帶內(nèi)控制器的OpenFlow交換機(jī)啟動(dòng)后自動(dòng)生成如下低優(yōu)先級(jí)流表項(xiàng):
[0090]流表項(xiàng)A:目的MAC地址為預(yù)設(shè)的指向Controller的標(biāo)識(shí)地址,如:0penFlow 二層控制網(wǎng)絡(luò)組播MAC地址,動(dòng)作為output到Controller ;
[0091]流表項(xiàng)B:目的MAC地址為本交換機(jī),動(dòng)作為output到本地(local),即上送本交換機(jī)的中央處理單兀(CPU, Central Processing Unit)
[0092]步驟502: OpenF I ow交換機(jī)周期性地從自身各OpenFlow協(xié)議端口向外發(fā)送二層OpenFlow協(xié)議Hello報(bào)文,報(bào)文的源MAC地址為本交換機(jī),目的MAC地址為設(shè)定的OpenFlow二層控制網(wǎng)絡(luò)組播MAC地址。
[0093]如圖4中的Switch B,周期性地從端口 B1、B2向外發(fā)送Hello報(bào)文,報(bào)文目的MAC地址為OpenFlow 二層控制網(wǎng)絡(luò)組播MAC地址。
[0094]步驟503:當(dāng)其它OpenFlow交換機(jī)收到該Hello報(bào)文后,發(fā)現(xiàn)該報(bào)文與本地的流表項(xiàng)A匹配上,貝U若本交換機(jī)已經(jīng)與Controller建立了二層帶內(nèi)連接,則根據(jù)流表項(xiàng)A中的動(dòng)作,將該報(bào)文封裝到packet-1n報(bào)文中并通過二層帶內(nèi)連接轉(zhuǎn)發(fā)到Controller。
[0095]其中,Hello報(bào)文到達(dá)下一跳OpenFlow交換機(jī)時(shí),下一跳OpenFlow交換機(jī)發(fā)現(xiàn)報(bào)文與本地的流表項(xiàng)A匹配上,且本交換機(jī)已經(jīng)與Controller建立了二層帶內(nèi)連接,則將Hello報(bào)文封裝到packet-1n報(bào)文中,packet-1n報(bào)文的源MAC地址為該下一跳OpenFlow交換機(jī)的MAC地址,目的MAC地址為Hello報(bào)文的目的MAC地址(即OpenFlow 二層控制網(wǎng)絡(luò)組播MAC地址),同時(shí),packet-1n報(bào)文中封裝了 Hello報(bào)文在該下一跳OpenFlow交換機(jī)上的入端口。
[0096]如圖4中,設(shè)Switch B從BI 口發(fā)出的Hello報(bào)文到達(dá)Switch A后,Switch A會(huì)將Hello報(bào)文封裝到packet-1n報(bào)文中,并根據(jù)步驟104中建立的MAC表項(xiàng)中的入端口 Al,將 packet-1n 報(bào)文從 Al 口轉(zhuǎn)發(fā)到 Controller。
[0097]若該其它OpenFlow交換機(jī)還未與Controller建立二層帶內(nèi)連接,即未查找到Controller的MAC地址對(duì)應(yīng)的MAC表項(xiàng),則丟棄該Hello報(bào)文。
[0098]若Hello報(bào)文的發(fā)送者與Controller之間要經(jīng)過多個(gè)OpenFlow交換機(jī),則發(fā)送者的下一跳OpenFlow交換機(jī)發(fā)出的Packet-1n報(bào)文到達(dá)其它OpenFlow交換機(jī)后,該其它OpenFlow交換機(jī)會(huì)將報(bào)文與本地流表項(xiàng)A匹配上,此時(shí),若已與Controller建立二層帶內(nèi)連接,則會(huì)查找到Controller的MAC地址對(duì)應(yīng)的MAC表項(xiàng),則根據(jù)該表項(xiàng)將報(bào)文轉(zhuǎn)發(fā)出去,否則,丟棄該P(yáng)acket-1n報(bào)文。
[0099]步驟504 Controller收到該P(yáng)acket-1n報(bào)文后,從該報(bào)文中解析出Hello報(bào)文,從Hello報(bào)文中學(xué)習(xí)到該Hello報(bào)文的發(fā)送者的MAC地址,同時(shí)學(xué)習(xí)到該Hello報(bào)文的發(fā)送者的下一跳OpenFlow交換機(jī)的MAC地址,以及該Hello報(bào)文的發(fā)送者的下一跳OpenFlow交換機(jī)到該發(fā)送者的出端口,即學(xué)習(xí)到了 Hello報(bào)文的發(fā)送者的下一跳OpenFlow交換機(jī)到該發(fā)送者的帶內(nèi)組網(wǎng)拓?fù)洹?br>
[0100]步驟505:ControIler根據(jù)已學(xué)習(xí)到的帶內(nèi)組網(wǎng)拓?fù)湟约霸揚(yáng)acket-1n報(bào)文,學(xué)習(xí)到分別應(yīng)用在本Controller與發(fā)送者之間的每個(gè)OpenFlow交換機(jī)上的帶內(nèi)控制流表項(xiàng),將學(xué)習(xí)到的各帶內(nèi)控制流表項(xiàng)分別發(fā)送給對(duì)應(yīng)的各轉(zhuǎn)發(fā)設(shè)備,同時(shí)向發(fā)送者發(fā)送單播二層OpenFlow協(xié)議報(bào)文,報(bào)文的源MAC地址為本Controller的MAC地址,目的MAC地址為發(fā)送者的MAC地址。
[0101]帶內(nèi)控制流表項(xiàng)主要指示了從Controller到發(fā)送者所經(jīng)過的帶內(nèi)轉(zhuǎn)發(fā)端口,以及從發(fā)送者到Controller所經(jīng)過的帶內(nèi)轉(zhuǎn)發(fā)端口,每個(gè)轉(zhuǎn)發(fā)端口分別位于Controller與發(fā)送者之間的一個(gè)OpenFlow交換機(jī)上。
[0102]帶內(nèi)控制流表項(xiàng)的建立主要依賴于Controller從接收到的所有包含目的MAC地址為設(shè)定的OpenFlow 二層控制網(wǎng)絡(luò)組播MAC地址的Packet-1n報(bào)文學(xué)習(xí)到的帶內(nèi)組網(wǎng)拓?fù)?。由于該P(yáng)acket-1n報(bào)文包含了 Hello報(bào)文的發(fā)送者的下一跳到該發(fā)送者的直連端口,因此,隨著各OpenFlow交換機(jī)逐層與Controller建立連接,最終Controller會(huì)學(xué)習(xí)到整個(gè)帶內(nèi)組網(wǎng)拓?fù)?,這里的逐層指的是,與Controller直連的OpenFlow交換機(jī)最先與Controller建立連接,此時(shí),Controller學(xué)習(xí)到本Controller與各直連OpenFlow交換機(jī)(設(shè)為第一層交換機(jī))之間的帶內(nèi)組網(wǎng)拓?fù)洌缓?,與第一層交換機(jī)直連的OpenFlow交換機(jī)(設(shè)為第二層交換機(jī))通過第一層交換機(jī)與Controller建立連接,Controller學(xué)習(xí)到第一層交換機(jī)與第二層交換機(jī)之間的帶內(nèi)組網(wǎng)拓?fù)?,然后,與第二層交換機(jī)直連的OpenFlow交換機(jī)(設(shè)為第三層交換機(jī))通過第二層交換機(jī)與Controller建立連接,Controller學(xué)習(xí)到第二層交換機(jī)與第二層交換機(jī)之間的帶內(nèi)組網(wǎng)拓?fù)?,依此類推,直到所有交換機(jī)與Controller建立連接,Controller學(xué)習(xí)到整個(gè)帶內(nèi)組網(wǎng)拓?fù)洹?br>
[0103]這里,需要說明的是,由于Hello報(bào)文的發(fā)送者到ContiOller之間可能存在多條路徑,因此,Controller可能會(huì)收到針對(duì)同一發(fā)送者的多個(gè)Packet-1n報(bào)文,該多個(gè)Packet-1n報(bào)文中的Hello報(bào)文的目的MAC地址都為預(yù)設(shè)的開放流二層控制網(wǎng)絡(luò)組播MAC地址,且源MAC地址相同,此時(shí)Controller在接收到一個(gè)Packet-1n報(bào)文后,會(huì)根據(jù)從該報(bào)文學(xué)習(xí)到的發(fā)送者到下一跳轉(zhuǎn)發(fā)設(shè)備的帶內(nèi)組網(wǎng)拓?fù)湟约爸皩W(xué)習(xí)到的帶內(nèi)組網(wǎng)拓?fù)?,確定該P(yáng)acket-1n報(bào)文中的Hello報(bào)文在發(fā)送者與本Controller之間的轉(zhuǎn)發(fā)路徑,并根據(jù)已學(xué)習(xí)到的帶內(nèi)組網(wǎng)拓?fù)渑袛喟l(fā)送者與本ContiOller之間是否還有其它轉(zhuǎn)發(fā)路徑,若有,且當(dāng)前Hello報(bào)文對(duì)應(yīng)的轉(zhuǎn)發(fā)路徑優(yōu)于所有其它轉(zhuǎn)發(fā)路徑,則根據(jù)當(dāng)前Packet-1n報(bào)文學(xué)習(xí)到分別應(yīng)用在本Controller與發(fā)送者之間的每個(gè)轉(zhuǎn)發(fā)設(shè)備上的帶內(nèi)控制流表項(xiàng),將各帶內(nèi)控制流表項(xiàng)分別下發(fā)給對(duì)應(yīng)的轉(zhuǎn)發(fā)設(shè)備。
[0104]步驟506:發(fā)出Hello報(bào)文的OpenFlow交換機(jī)收到Controller發(fā)送的單播二層OpenFlow協(xié)議報(bào)文后,建立MAC表項(xiàng):源MAC地址為Controller的MAC地址,目的MAC地址為本交換機(jī)的MAC地址,入端口為該單播二層OpenFlow協(xié)議報(bào)文的入端口,并與Controller協(xié)商出OpenFlow協(xié)議版本,后續(xù)使用該版本進(jìn)行OpenFlow協(xié)議交互。
[0105]如圖4中的Switch B, Switch B收到Switch A轉(zhuǎn)發(fā)的來自Controller的單播二層OpenFlow協(xié)議報(bào)文后,建立的MAC表項(xiàng)為:源MAC地址為Controller的MAC地址,目的MAC地址為Switch B的MAC地址,入端口為BI,則此后Switch A通過端口 BI與Controller進(jìn)行帶內(nèi)控制交互。
[0106]其中,由于Controller與Hello報(bào)文的發(fā)送者之間還有其它OpenFlow交換機(jī),此時(shí),其它OpenFlow交換機(jī)收到Controller發(fā)給發(fā)送者的單播二層OpenFlow協(xié)議報(bào)文后,會(huì)查找本地帶內(nèi)控制流表項(xiàng),匹配到源MAC地址為Controller的MAC地址,目的MAC地址為發(fā)送者的MAC地址的表項(xiàng),根據(jù)該表項(xiàng)的動(dòng)作將Hello報(bào)文轉(zhuǎn)發(fā)出去。[0107]其中,步驟502中,OpenFlow交換機(jī)周期性地從自身各OpenFlow協(xié)議端口向外發(fā)送二層OpenFlow協(xié)議Hello報(bào)文時(shí),可以針對(duì)端口使能的每個(gè)VLAN分別發(fā)出一個(gè)Hello報(bào)文;同時(shí),步驟505中,Controller可以在Hello報(bào)文攜帶的所有VLAN中選擇兩個(gè)VLAN,使用其中一個(gè)VLAN向OpenFlow交換機(jī)發(fā)送單播二層Hello報(bào)文,使用另一個(gè)VLAN向OpenFlow交換機(jī)發(fā)送單播二層Packet-out報(bào)文;步驟506中,OpenFlow交換機(jī)收到單播二層Hello報(bào)文后,將報(bào)文中的VLAN作為后續(xù)發(fā)送除Packet-out和Packet-1n報(bào)文外的OpenFlow協(xié)議報(bào)文使用的VLAN,收到單播二層Packet-out報(bào)文后,將報(bào)文中的VLAN作為后續(xù)發(fā)送Packet-out和Packet-1n報(bào)文使用的VLAN。
[0108]圖6為本發(fā)明實(shí)施例提供的SDN中的帶內(nèi)組網(wǎng)拓?fù)鋵W(xué)習(xí)方法流程圖,如圖6所示,其具體步驟如下:
[0109]步驟601:控制器接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文,從該報(bào)文學(xué)習(xí)到直連轉(zhuǎn)發(fā)設(shè)備的MAC地址,并學(xué)習(xí)到本控制器到直連轉(zhuǎn)發(fā)設(shè)備的帶內(nèi)組網(wǎng)拓?fù)?,所述預(yù)設(shè)標(biāo)識(shí)地址指向本控制器。
[0110]步驟602:控制器接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的Packet-1n報(bào)文,從該報(bào)文中解析出二層SDN協(xié)議Hello報(bào)文,若Hello報(bào)文的目的MAC地址為指向本控制器的預(yù)設(shè)標(biāo)識(shí)地址,則從Hel 1報(bào)文的源MAC地址中獲取Hel 1報(bào)文的發(fā)送設(shè)備的MAC地址,從Packet-1n報(bào)文的源MAC地址中獲取Hello報(bào)文的發(fā)送設(shè)備的下一跳設(shè)備的MAC地址,同時(shí)從Packet-1n報(bào)文中獲取所述發(fā)送設(shè)備接收所述下一跳設(shè)備報(bào)文的入接口,記錄所述發(fā)送設(shè)備與所述下一跳設(shè)備的MAC地址、以及所述下一跳設(shè)備與所述發(fā)送設(shè)備接收所述下一跳設(shè)備的報(bào)文入接口之間的對(duì)應(yīng)關(guān)系,將該對(duì)應(yīng)關(guān)系作為所述下一跳設(shè)備到所述發(fā)送設(shè)備的帶內(nèi)組網(wǎng)拓?fù)洹?br>
[0111]以下給出本發(fā)明的應(yīng)用示例:
[0112]如圖4所示,OpenFlow交換機(jī):Switch A?D使能帶內(nèi)控制器,其中,Switch A和Controller 直連,Switch B、Switch C、Switch D 和 Controller 間接相連。
[0113]首先,Switch A?D啟動(dòng)后,自動(dòng)生成如下低優(yōu)先級(jí)流表項(xiàng):
[0114]流表項(xiàng)A:目的MAC地址為設(shè)定的OpenFlow 二層控制網(wǎng)絡(luò)組播MAC地址,動(dòng)作為output 至Ij Controller ;
[0115]流表項(xiàng)B:目的MAC地址為本交換機(jī)的MAC地址,動(dòng)作為output到本地(local)。
[0116]以下給出Switch A?D與Controller建立連接的過程:
[0117]一)對(duì)于 Switch A
[0118]Switch A周期性地從自身的各OpenFlow協(xié)議端口,即A1、A2、A3端口向外發(fā)送二層OpenFlow協(xié)議Hello報(bào)文,報(bào)文的源MAC地址為自身的MAC地址,目的MAC地址為設(shè)定的OpenFlow 二層控制網(wǎng)絡(luò)組播MAC地址;
[0119]Switch B、Switch C收到Switch A發(fā)送的二層Hello報(bào)文后,根據(jù)報(bào)文的目的MAC地址匹配到流表項(xiàng)A,但是由于都還未與Controller建立連接,即未查找到Controller的MAC地址對(duì)應(yīng)的MAC表項(xiàng),因此丟棄該報(bào)文;
[0120]Controller 收到 Switch A 發(fā)送的二層 Hello 報(bào)文后,學(xué)習(xí)到 Switch A 的 MAC地址,同時(shí)學(xué)習(xí)到本Controller到Switch A的帶內(nèi)組網(wǎng)拓?fù)?本Controller通過端口 M直連到Switch A,并向Switch A發(fā)送單播二層OpenFlow協(xié)議報(bào)文,報(bào)文的源MAC地址為Controller的MAC地址,目的MAC地址為Switch A的MAC地址;[0121]Switch A收到Controller發(fā)送的單播二層OpenFlow協(xié)議報(bào)文后,生成MAC表項(xiàng):源MAC地址為Controller的MAC地址,目的MAC地址為Switch A的MAC地址,入端口為Al,并與Controller協(xié)商OpenFlow協(xié)議版本,此后使用協(xié)商出的版本進(jìn)行OpenFlow協(xié)議交互。
[0122]后續(xù),當(dāng)Switch A發(fā)送目的MAC地址為Controller的MAC地址,源MAC地址為Switch A的MAC地址的OpenFlow協(xié)議報(bào)文時(shí),根據(jù)建立的MAC表項(xiàng)從Al 口發(fā)出該報(bào)文,實(shí)現(xiàn)了與Controller的帶內(nèi)控制交互。
[0123]二)對(duì)于Switch B (設(shè)定Switch A已通過上述過程一)與Controller建立連接)
[0124]Switch B周期性地從自身的各OpenFlow協(xié)議端口,即端口 B1、B2向外發(fā)送二層OpenFlow協(xié)議Hello報(bào)文,報(bào)文的目的MAC地址為設(shè)定的OpenFlow 二層控制網(wǎng)絡(luò)組播MAC地址;
[0125]Switch C收到Switch B發(fā)送的二層Hello報(bào)文后,根據(jù)報(bào)文的目的MAC地址匹配到流表項(xiàng)A,但是由于自身還未與Controller建立二層帶內(nèi)連接,即未查找到Controller的MAC地址對(duì)應(yīng)的MAC表項(xiàng),因此丟棄該報(bào)文;
[0126]Switch A收到Switch B發(fā)送的二層Hello報(bào)文后,根據(jù)報(bào)文的目的MAC地址匹配到流表項(xiàng)A,按照流表項(xiàng)A的動(dòng)作:output到Controller,先將hello報(bào)文封裝到packet-1n報(bào)文中,packet-1n報(bào)文的源MAC地址為Switch A的MAC地址,目的MAC地址為Controller的MAC地址,且攜帶入端口 A2,然后根據(jù)一)中建立的MAC表項(xiàng):源MAC地址為Controller的MAC地址,目的MAC地址為Switch A的MAC地址,入端口為Al,將Packet-1n報(bào)文從Al口通過二層帶內(nèi)連接轉(zhuǎn)發(fā)到Controller ;
[0127]Controller收到Switch A發(fā)送的Packet-1n報(bào)文后,從報(bào)文中解析出Switch B發(fā)送的Hello報(bào)文,從Hello報(bào)文中學(xué)習(xí)到Switch B的MAC地址,從Packet-1n報(bào)文中學(xué)習(xí)到Hello報(bào)文在Switch A上的入端口 A2,向Switch A下發(fā)流表項(xiàng)C和D,其中,流表項(xiàng)C:優(yōu)先級(jí)高于流表項(xiàng)A,源MAC地址是Switch B的MAC地址,目的MAC地址是Controller的MAC地址,入端口是A2,動(dòng)作為從Al 口轉(zhuǎn)發(fā);流表項(xiàng)D:優(yōu)先級(jí)高于流表項(xiàng)A,源MAC地址是Controller的MAC地址,目的MAC地址是Switch B的MAC地址,入端口是Al,動(dòng)作為從A2 口轉(zhuǎn)發(fā);同時(shí),Controller學(xué)習(xí)到Switch A到Switch B的帶內(nèi)組網(wǎng)拓?fù)?Switch A通過端口 A2直連到Switch B ;
[0128]然后,Controller向Switch B發(fā)送單播二層OpenFlow協(xié)議報(bào)文,報(bào)文的源MAC地址為Controller的MAC地址,目的MAC地址為Switch B的MAC地址;Switch A收到該Hello報(bào)文,根據(jù)流表項(xiàng)D轉(zhuǎn)發(fā)到Switch B, Switch B收到該單播二層OpenFlow協(xié)議報(bào)文,生成MAC表項(xiàng):源MAC地址為Controller的MAC地址,目的MAC地址為Switch B的MAC地址,入端口為BI,并與Controller協(xié)商OpenFlow協(xié)議版本,此后使用協(xié)商出的版本進(jìn)行OpenFlow協(xié)議交互。
[0129]后續(xù),當(dāng)Switch B發(fā)送目的MAC地址為Controller的MAC地址,源MAC地址為Switch B的MAC地址的OpenFlow協(xié)議報(bào)文時(shí),根據(jù)建立的MAC表項(xiàng)從BI 口發(fā)出該報(bào)文,當(dāng)該報(bào)文到達(dá)Switch A后,Switch A根據(jù)流表項(xiàng)C進(jìn)行轉(zhuǎn)發(fā),實(shí)現(xiàn)了與Controller的帶內(nèi)控制交互。
[0130]三)對(duì)于Switch C (設(shè)定 Switch A 和 Switch B 已與 Controller 建立連接)[0131]Switch C周期性地從自身的各OpenFlow協(xié)議端口,即端口 C1、C2、C3向外發(fā)送二層OpenFlow協(xié)議Hello報(bào)文,報(bào)文的目的MAC地址為OpenFlow 二層控制網(wǎng)絡(luò)組播MAC地址;
[0132]Switch D收到Switch C發(fā)送的二層Hello報(bào)文后,根據(jù)報(bào)文的目的MAC地址匹配到流表項(xiàng)A,但由于自身還未與Controller建立二層帶內(nèi)連接,即未查找到Controller的MAC地址對(duì)應(yīng)的MAC表項(xiàng),因此丟棄該報(bào)文;
[0133]Switch A收到Switch C發(fā)送的二層Hello報(bào)文后,根據(jù)報(bào)文的目的MAC地址匹配到流表項(xiàng)A,按照流表項(xiàng)A的動(dòng)作:output到Controller,先將Hel1報(bào)文封裝到Packet-1n報(bào)文中,packet-1n報(bào)文的源MAC地址為Switch A的MAC地址,目的MAC地址為Controller的MAC地址,且攜帶入端口 A3,然后根據(jù)一)中建立的MAC表項(xiàng):源MAC地址為Controller的MAC地址,目的MAC地址為Switch A的MAC地址,入端口為Al,將Packet-1n報(bào)文從Al口通過二層帶內(nèi)連接轉(zhuǎn)發(fā)到Controller ;
[0134]Switch B收到Switch C發(fā)送的二層Hello報(bào)文后,根據(jù)報(bào)文的目的MAC地址匹配到流表項(xiàng)A,按照流表項(xiàng)A的動(dòng)作:output到Controller,先將hello報(bào)文封裝為Packet-1n報(bào)文,packet-1n報(bào)文的源MAC地址為Switch B的MAC地址,目的MAC地址為Controller的MAC地址,且攜帶入端口 B2,然后根據(jù)二)中建立的MAC表項(xiàng):源MAC地址為Controller的MAC地址,目的MAC地址為Switch B的MAC地址,入端口為BI,將Packet-1n報(bào)文從BI口轉(zhuǎn)發(fā)到Switch A, Switch A接收到該P(yáng)acket-1n報(bào)文,根據(jù)報(bào)文的目的MAC地址查找到對(duì)應(yīng)的MAC表項(xiàng),直接從Al 口轉(zhuǎn)發(fā)到Controller ;
[0135]Controller收到Switch A和Switch B發(fā)來的packet-1n報(bào)文后,從該兩報(bào)文中解析出Switch C發(fā)來的Hello報(bào)文,得知該兩Hello報(bào)文為同一 Switch,即Switch C發(fā)來的,同時(shí)根據(jù)該兩Packet-1n報(bào)文的源MAC地址,得知該兩Hello報(bào)文分別由Switch A和Switch B轉(zhuǎn)發(fā),則根據(jù)一)和二)中學(xué)習(xí)到的帶內(nèi)組網(wǎng)拓?fù)?本Controller通過端口 M直連到 Switch A, Switch A 通過端口 A2 直連到 Switch B,得知 Switch C 與本 Controller 之間的報(bào)文通過Switch A轉(zhuǎn)發(fā)更合適;
[0136]Controller對(duì)Switch A發(fā)來的Packet-1n報(bào)文進(jìn)行解析,根據(jù)該報(bào)文中的Hello報(bào)文學(xué)習(xí)到Switch C的MAC地址,根據(jù)該P(yáng)acket-1n報(bào)文學(xué)習(xí)到該Hello報(bào)文在Switch A上的入端口 A3 ;同時(shí)學(xué)習(xí)到Switch A到Switch C的帶內(nèi)組網(wǎng)拓?fù)?Switch A通過端口 A3直連到Switch C ;同時(shí),Controller對(duì)Switch B發(fā)來的Packet-1n報(bào)文進(jìn)行解析,學(xué)習(xí)到Switch B到Switch C的帶內(nèi)組網(wǎng)拓?fù)?Switch B通過端口 B2直連到Switch C ;
[0137]Controller向Switch A下發(fā)流表項(xiàng)E和F,其中,流表項(xiàng)E:優(yōu)先級(jí)高于流表項(xiàng)A,源MAC地址是Switch C的MAC地址,目的MAC地址是Controller的MAC地址,入端口是A3,動(dòng)作為從Al 口轉(zhuǎn)發(fā);流表項(xiàng)F:優(yōu)先級(jí)高于流表項(xiàng)A,源MAC地址是Controller的MAC地址,目的MAC地址是Switch C的MAC地址,入端口是Al,動(dòng)作為從A3 口轉(zhuǎn)發(fā);
[0138]同時(shí),Controller向Switch C發(fā)送單播二層OpenFlow協(xié)議報(bào)文,報(bào)文的源MAC地址為Controller的MAC地址,目的MAC地址為Switch C的MAC地址;Switch A收到該Hello報(bào)文,根據(jù)流表項(xiàng)F轉(zhuǎn)發(fā)到Switch C,Switch C收到該報(bào)文,生成MAC表項(xiàng):源MAC地址為Controller的MAC地址,目的MAC地址為Switch C的MAC地址,入端口為Cl,并與Controller協(xié)商OpenFlow協(xié)議版本,此后使用協(xié)商出的版本進(jìn)行OpenFlow協(xié)議交互;[0139]后續(xù),當(dāng)Switch C發(fā)送目的MAC地址為Controller的MAC地址,源MAC地址為Switch C的MAC地址的OpenFlow協(xié)議報(bào)文時(shí),根據(jù)建立的MAC表項(xiàng)從Cl 口發(fā)出該報(bào)文,當(dāng)該報(bào)文到達(dá)Switch A后,Switch A根據(jù)流表項(xiàng)E轉(zhuǎn)發(fā)該報(bào)文。
[0140]四)對(duì)于Switch D (設(shè)定 Switch A、B、C 已與 Controller 建立連接)
[0141]Switch D周期性地從自身的各OpenFlow協(xié)議端口,即端口 Dl向外發(fā)送二層OpenFlow協(xié)議Hello報(bào)文,報(bào)文的目的MAC地址為OpenFlow 二層控制網(wǎng)絡(luò)組播MAC地址;
[0142]Switch C收到Switch D發(fā)送的二層Hello報(bào)文后,根據(jù)報(bào)文的目的MAC地址匹配到流表項(xiàng)A,按照流表項(xiàng)A的動(dòng)作:output到Controller,先將hello報(bào)文封裝到Packet-1n報(bào)文中,packet-1n報(bào)文的源MAC地址為Switch C的MAC地址,目的MAC地址為Controller的MAC地址,且攜帶入端口 C3,然后根據(jù)三)中建立的MAC表項(xiàng):源MAC地址為Controller的MAC地址,目的MAC地址為Switch C的MAC地址,入端口為Cl,將Packet-1n報(bào)文從Cl口通過帶內(nèi)鏈路轉(zhuǎn)發(fā)到Switch A, Switch A接收到該P(yáng)acket-1n報(bào)文,根據(jù)報(bào)文的目的MAC地址,直接從Al 口通過帶內(nèi)鏈路轉(zhuǎn)發(fā)到Controller ;
[0143]Controller收到Switch C發(fā)來的packet-1n報(bào)文后,從報(bào)文的Hello報(bào)文中解析出Switch D的MAC地址,從Packet-1n報(bào)文的源MAC地址解析出Switch C的MAC地址,根據(jù)一)、三)中學(xué)習(xí)到的帶內(nèi)組網(wǎng)拓?fù)?本Controller通過端口 M直連到Switch A,Switch A通過端口 A3直連到Switch C,得知:Switch D需要通過Switch C、A連接到本Controller ;ControIIer 從 Packet-1n 報(bào)文中解析出 Hello 報(bào)文在 Switch C 上的入端 口C3;同時(shí),Controller從Packet-1n報(bào)文學(xué)習(xí)到Switch C到Switch D的帶內(nèi)組網(wǎng)拓?fù)?Switch C通過端口 C3直連到Switch D ;
[0144]Controller向Switch A下發(fā)流表項(xiàng)G和H,其中,流表項(xiàng)G:優(yōu)先級(jí)高于流表項(xiàng)A,源MAC地址是Switch D的MAC地址,目的MAC地址是Controller的MAC地址,入端口是A3,動(dòng)作為從Al 口轉(zhuǎn)發(fā);流表項(xiàng)H:優(yōu)先級(jí)高于流表項(xiàng)A,源MAC地址是Controller的MAC地址,目的MAC地址是Switch D的MAC地址,入端口是Al,動(dòng)作為從A3 口轉(zhuǎn)發(fā)(流表項(xiàng)G、H的建立需要依賴Controller、Switch A、Switch C之間的帶內(nèi)組網(wǎng)拓?fù)?;
[0145]同時(shí),Controller向Switch C下發(fā)流表項(xiàng)C和D,其中,流表項(xiàng)C:源MAC地址是Switch D的MAC地址,目的MAC地址是Controller的MAC地址,入端口是C3,動(dòng)作為從Cl口轉(zhuǎn)發(fā);流表項(xiàng)D:源MAC地址是Controller的MAC地址,目的MAC地址是Switch D的MAC地址,入端口是Cl,動(dòng)作為從C3 口轉(zhuǎn)發(fā);
[0146]這里,需要說明的是,由于每個(gè)Switch都會(huì)周期性地從自身的各OpenFlow協(xié)議端口向外發(fā)送目的MAC地址為設(shè)定的OpenFlow 二層控制網(wǎng)絡(luò)組播MAC地址的二層OpenFlow協(xié)議Hello報(bào)文,因此,最終Controller會(huì)學(xué)習(xí)到整個(gè)OpenFlow網(wǎng)絡(luò)的帶內(nèi)組網(wǎng)拓?fù)洹@?對(duì)于Switch C通過端口 Cl直連到Switch A這個(gè)帶內(nèi)組網(wǎng)拓?fù)?,是在Switch A、C與Controller建立連接后,Switch A通過端口 A3發(fā)出的目的MAC地址為設(shè)定的OpenFlow 二層控制網(wǎng)絡(luò)組播MAC地址的二層OpenFlow協(xié)議Hello報(bào)文到達(dá)Switch C后,Switch C將該Hello報(bào)文封裝到Packet-1n報(bào)文中,該P(yáng)acket-1n報(bào)文的源MAC地址為Switch C的MAC地址,目的MAC地址為Controller的MAC地址,且包含了入端口 Cl,再根據(jù)三)中建立的MAC表項(xiàng),將該報(bào)文通過端口 Cl再發(fā)送給Switch A, Switch A收到該P(yáng)acket-1n報(bào)文后,再根據(jù)一)中建立的MAC表項(xiàng)通過端口 Al發(fā)送給Controller,這樣Controller就從該P(yáng)acket-1n報(bào)文學(xué)習(xí)到了:Switch C通過端口 Cl直連到Switch A。
[0147]同時(shí),Controller向Switch D發(fā)送單播二層OpenFlow協(xié)議報(bào)文,報(bào)文的源MAC地址為Controller的MAC地址,目的MAC地址為Switch D的MAC地址;Switch A收到該Hello報(bào)文,根據(jù)流表項(xiàng)H轉(zhuǎn)發(fā)到Switch C,Switch C收到該報(bào)文,根據(jù)流表項(xiàng)D轉(zhuǎn)發(fā)到Switch D, Switch D根據(jù)該報(bào)文生成MAC表項(xiàng):源MAC地址為Controller的MAC地址,目的MAC地址為Switch D的MAC地址,入端口為Dl。
[0148]后續(xù),當(dāng)Switch D發(fā)送目的MAC地址為Controller的MAC地址,源MAC地址為Switch D的MAC地址的OpenFlow協(xié)議報(bào)文時(shí),根據(jù)建立的MAC表項(xiàng)從Dl 口發(fā)出該報(bào)文,并通過Switch C和Switch A的流表項(xiàng)轉(zhuǎn)發(fā),實(shí)現(xiàn)了與Controller的帶內(nèi)控制交互。
[0149]此時(shí),Switch A生成的帶內(nèi)控制流表項(xiàng)如表1所示,其中,備注不屬于流表項(xiàng)內(nèi)容:
[0150]
【權(quán)利要求】
1.一種軟件定義網(wǎng)絡(luò)SDN中的帶內(nèi)控制連接建立方法,其特征在于,該方法包括: 對(duì)于SDN中使能帶內(nèi)控制器的轉(zhuǎn)發(fā)設(shè)備,該設(shè)備啟動(dòng)后,在本地生成第一流表項(xiàng):目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址,動(dòng)作為輸出到控制器; 轉(zhuǎn)發(fā)設(shè)備周期性地從自身各SDN協(xié)議端口向外發(fā)送二層SDN協(xié)議Hello報(bào)文,報(bào)文的目的MAC地址為所述預(yù)設(shè)標(biāo)識(shí)地址; 當(dāng)轉(zhuǎn)發(fā)設(shè)備接收到控制器發(fā)來的目的MAC地址為本轉(zhuǎn)發(fā)設(shè)備MAC地址的單播二層SDN協(xié)議報(bào)文后,記錄自身到控制器的二層帶內(nèi)接口 ;當(dāng)轉(zhuǎn)發(fā)設(shè)備接收到來自其它轉(zhuǎn)發(fā)設(shè)備的目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的二層SDN協(xié)議Hello報(bào)文后,按照第一流表項(xiàng)通過自身到控制器的二層帶內(nèi)接口將報(bào)文轉(zhuǎn)發(fā)給控制器;轉(zhuǎn)發(fā)設(shè)備接收控制器下發(fā)的帶內(nèi)控制流表項(xiàng),所述表項(xiàng)指示了從控制器到其它轉(zhuǎn)發(fā)設(shè)備的二層單播報(bào)文在本轉(zhuǎn)發(fā)設(shè)備上的轉(zhuǎn)發(fā)端口,或者指示了從其它轉(zhuǎn)發(fā)設(shè)備到控制器的二層單播報(bào)文在本轉(zhuǎn)發(fā)設(shè)備上的轉(zhuǎn)發(fā)端口; 轉(zhuǎn)發(fā)設(shè)備接收到控制器發(fā)來的目的MAC地址為其它轉(zhuǎn)發(fā)設(shè)備的單播二層SDN協(xié)議報(bào)文,按照控制器下發(fā)的帶內(nèi)控制流表項(xiàng),將報(bào)文轉(zhuǎn)發(fā)給其它轉(zhuǎn)發(fā)設(shè)備,或者轉(zhuǎn)發(fā)設(shè)備接收到其它轉(zhuǎn)發(fā)設(shè)備發(fā)來的目的MAC地址為控制器的單播二層SDN協(xié)議報(bào)文,按照控制器下發(fā)的帶內(nèi)控制流表項(xiàng),將報(bào)文轉(zhuǎn)發(fā)給控制器。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)轉(zhuǎn)發(fā)設(shè)備接收到來自其它轉(zhuǎn)發(fā)設(shè)備的目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的二層SDN協(xié)議Hello報(bào)文后,所述按照第一流表項(xiàng)通過自身到控制器的二層帶 內(nèi)接口將報(bào)文轉(zhuǎn)發(fā)給控制器包括: 轉(zhuǎn)發(fā)設(shè)備判斷是否已記錄自身到控制器的二層帶內(nèi)接口,若是,將該二層SDN協(xié)議Hello報(bào)文封裝到Packet-1n報(bào)文中,將該P(yáng)acket_in報(bào)文通過自身到控制器的二層帶內(nèi)接口轉(zhuǎn)發(fā)給控制器;否則,丟棄該二層SDN協(xié)議Hello報(bào)文。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述轉(zhuǎn)發(fā)設(shè)備周期性地從自身各SDN協(xié)議端口向外發(fā)送二層SDN協(xié)議Hello報(bào)文為: 對(duì)于自身的每個(gè)SDN協(xié)議端口,分別針對(duì)該端口使能的每個(gè)VLAN周期性地從該端口發(fā)送二層SDN協(xié)議Hello報(bào)文; 且,所述當(dāng)轉(zhuǎn)發(fā)設(shè)備接收到控制器發(fā)來的目的MAC地址為本轉(zhuǎn)發(fā)設(shè)備MAC地址的單播二層SDN協(xié)議報(bào)文包括: 轉(zhuǎn)發(fā)設(shè)備接收到控制器發(fā)來的目的MAC地址為本轉(zhuǎn)發(fā)設(shè)備MAC地址、且包含VLAN標(biāo)識(shí)的單播二層SDN協(xié)議Hello報(bào)文和單播二層Packet-out報(bào)文,將Hello報(bào)文中的VLAN標(biāo)識(shí)對(duì)應(yīng)VLAN作為此后發(fā)送除Packet-out和Packet-1n報(bào)文外的SDN協(xié)議報(bào)文所使用的VLAN,將Packet-out報(bào)文中的VLAN標(biāo)識(shí)對(duì)應(yīng)VLAN作為此后發(fā)送Packet-out和Packet-1n報(bào)文所使用的VLAN。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述將Packet-out報(bào)文中的VLAN標(biāo)識(shí)對(duì)應(yīng)VLAN作為此后發(fā)送Packet-out和Packet-1n報(bào)文所使用的VLAN之后進(jìn)一步包括: 轉(zhuǎn)發(fā)設(shè)備周期性地針對(duì)Packet-out和Packet-1n報(bào)文所使用的VLAN,以及除Packet-out和Packet-1n報(bào)文外的SDN協(xié)議報(bào)文所使用的VLAN與控制器進(jìn)行?;顖?bào)文交互,若針對(duì)其中一個(gè)VLAN?;钍?,則將該VLAN上的報(bào)文轉(zhuǎn)移到另一 VLAN上傳輸,并與控制器重新協(xié)商出一個(gè)替換VLAN,協(xié)商成功后,將?;钍〉腣LAN上的報(bào)文再轉(zhuǎn)移到替換VLAN上傳輸。
5.一種軟件定義網(wǎng)絡(luò)SDN中的帶內(nèi)控制連接建立方法,其特征在于,該方法包括: 控制器接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文,從該報(bào)文學(xué)習(xí)到直連轉(zhuǎn)發(fā)設(shè)備的MAC地址,并學(xué)習(xí)到本控制器到直連轉(zhuǎn)發(fā)設(shè)備的帶內(nèi)組網(wǎng)拓?fù)洌蛑边B轉(zhuǎn)發(fā)設(shè)備返回單播二層SDN協(xié)議報(bào)文; 控制器接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的Packet-1n報(bào)文,若從該報(bào)文中解析出目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文,則從該P(yáng)acket-1n報(bào)文學(xué)習(xí)到該Hello報(bào)文的發(fā)送轉(zhuǎn)發(fā)設(shè)備的下一跳轉(zhuǎn)發(fā)設(shè)備到該發(fā)送轉(zhuǎn)發(fā)設(shè)備的帶內(nèi)組網(wǎng)拓?fù)?,并學(xué)習(xí)到分別應(yīng)用在本控制器與該發(fā)送轉(zhuǎn)發(fā)設(shè)備之間的每個(gè)轉(zhuǎn)發(fā)設(shè)備上的帶內(nèi)控制流表項(xiàng),將學(xué)習(xí)到的各帶內(nèi)控制流表項(xiàng)對(duì)應(yīng)發(fā)送給每個(gè)轉(zhuǎn)發(fā)設(shè)備,同時(shí)向發(fā)送轉(zhuǎn)發(fā)設(shè)備返回單播二層SDN協(xié)議報(bào)文,其中,應(yīng)用在任一轉(zhuǎn)發(fā)設(shè)備上的帶內(nèi)控制流表項(xiàng)指示了從控制器到其它轉(zhuǎn)發(fā)設(shè)備的報(bào)文在本轉(zhuǎn)發(fā)設(shè)備上的轉(zhuǎn)發(fā)端口,或者指示了從其它轉(zhuǎn)發(fā)設(shè)備到控制器的報(bào)文在本轉(zhuǎn)發(fā)設(shè)備上的轉(zhuǎn)發(fā)端口。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述控制器學(xué)習(xí)到分別應(yīng)用在本控制器與該發(fā)送轉(zhuǎn)發(fā)設(shè)備之間的每個(gè)轉(zhuǎn)發(fā)設(shè)備上的帶內(nèi)控制流表項(xiàng)包括: 控制器根據(jù)已學(xué)習(xí)到的帶內(nèi)組網(wǎng)拓?fù)?,確定從所述Packet-1n報(bào)文中解析出的Hello報(bào)文在發(fā)送轉(zhuǎn)發(fā)設(shè)備與本控制器之間的轉(zhuǎn)發(fā)路徑,且,若該確定的轉(zhuǎn)發(fā)路徑優(yōu)于自身已學(xué)習(xí)到的該發(fā)送轉(zhuǎn)發(fā)設(shè)備與本控制器之間的所有其它轉(zhuǎn)發(fā)路徑,則根據(jù)該確定的轉(zhuǎn)發(fā)路徑學(xué)習(xí)到分別應(yīng)用在本控制器與該發(fā)送轉(zhuǎn)發(fā)設(shè)備之間的每個(gè)轉(zhuǎn)發(fā)設(shè)備上的帶內(nèi)控制流表項(xiàng)。
7.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述控制器接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文包括: 控制器收到該轉(zhuǎn)發(fā)設(shè)備發(fā)來的針對(duì)`多個(gè)VLAN的所述Hello報(bào)文,則從該多個(gè)VLAN中選擇兩個(gè)VLAN ; 且,所述控制器向直連轉(zhuǎn)發(fā)設(shè)備返回單播二層SDN協(xié)議報(bào)文為: 控制器將選擇的一個(gè)VLAN的標(biāo)識(shí)攜帶在單播二層SDN協(xié)議Hello報(bào)文中,將另一個(gè)VLAN的標(biāo)識(shí)攜帶在單播二層SDN協(xié)議Packet-out報(bào)文中發(fā)送給直連轉(zhuǎn)發(fā)設(shè)備,以便:此后直連轉(zhuǎn)發(fā)設(shè)備使用Hello報(bào)文中的VLAN標(biāo)識(shí)對(duì)應(yīng)VLAN發(fā)送除Packet-out和Packet-1n報(bào)文之外的SDN協(xié)議報(bào)文,使用Packet-out報(bào)文中的VLAN標(biāo)識(shí)對(duì)應(yīng)VLAN發(fā)送Packet-out和 Packet-1n 報(bào)文; 所述控制器接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的Packet-1n報(bào)文,若從該報(bào)文中解析出目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文包括: 控制器接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的多個(gè)Packet-1n報(bào)文,從該多個(gè)Packet-1n報(bào)文中都解析出目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文,且該多個(gè)Hello報(bào)文的源MAC地址相同,且該多個(gè)Hello報(bào)文分別攜帶不同的VLAN標(biāo)識(shí),則從該多個(gè)VLAN中選擇兩個(gè)VLAN ; 且,所述控制器向發(fā)送轉(zhuǎn)發(fā)設(shè)備返回單播二層SDN協(xié)議報(bào)文為: 控制器將選擇的一個(gè)VLAN的標(biāo)識(shí)攜帶在單播二層SDN協(xié)議Hello報(bào)文中,將另一個(gè)VLAN的標(biāo)識(shí)攜帶在單播二層SDN協(xié)議Packet-out報(bào)文中發(fā)送給發(fā)送轉(zhuǎn)發(fā)設(shè)備,以便:此后發(fā)送轉(zhuǎn)發(fā)設(shè)備使用Hello報(bào)文中的VLAN標(biāo)識(shí)對(duì)應(yīng)VLAN發(fā)送除Packet-out和Packet-1n報(bào)文之外的SDN協(xié)議報(bào)文,使用Packet-out報(bào)文中的VLAN標(biāo)識(shí)對(duì)應(yīng)VLAN發(fā)送Packet-out和 Packet-1n 報(bào)文。
8.一種軟件定義網(wǎng)絡(luò)SDN中的帶內(nèi)組網(wǎng)拓?fù)鋵W(xué)習(xí)方法,其特征在于,該方法包括: 控制器接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文,從該報(bào)文學(xué)習(xí)到直連轉(zhuǎn)發(fā)設(shè)備的MAC地址,并學(xué)習(xí)到本控制器到直連轉(zhuǎn)發(fā)設(shè)備的帶內(nèi)組網(wǎng)拓?fù)洌鲱A(yù)設(shè)標(biāo)識(shí)地址指向本控制器; 控制器接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的Packet-1n報(bào)文,從該報(bào)文中解析出二層SDN協(xié)議Hello報(bào)文,若Hello報(bào)文的目的MAC地址為指向本控制器的預(yù)設(shè)標(biāo)識(shí)地址,則從Hello報(bào)文的源MAC地址中獲取Hello報(bào)文的發(fā)送設(shè)備的MAC地址,從Packet-1n報(bào)文的源MAC地址中獲取Hello報(bào)文的發(fā)送設(shè)備的下一跳設(shè)備的MAC地址,同時(shí)從Packet-1n報(bào)文中獲取所述發(fā)送設(shè)備接收所述下一跳設(shè)備報(bào)文的入接口,記錄所述發(fā)送設(shè)備與所述下一跳設(shè)備的MAC地址、以及所述下一跳設(shè)備與所述發(fā)送設(shè)備接收所述下一跳設(shè)備的報(bào)文入接口之間的對(duì)應(yīng)關(guān)系,將該對(duì)應(yīng)關(guān)系作為所述下一跳設(shè)備到所述發(fā)送設(shè)備的帶內(nèi)組網(wǎng)拓?fù)洹?br>
9.一種軟件定義網(wǎng)絡(luò)SDN中的轉(zhuǎn)發(fā)設(shè)備,該轉(zhuǎn)發(fā)設(shè)備使能帶內(nèi)控制器,其特征在于,該轉(zhuǎn)發(fā)設(shè)備包括: 第一流表項(xiàng)生成模塊:啟動(dòng)后,在本地生成第一流表項(xiàng):目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址,動(dòng)作為輸出到控制器; 帶內(nèi)連接建立模塊:周期性地從本設(shè)備各SDN協(xié)議端口向外發(fā)送二層SDN協(xié)議Hello報(bào)文,報(bào)文的目的MAC地址為所述預(yù)設(shè)標(biāo)識(shí)地址;當(dāng)接收到控制器發(fā)來的目的MAC地址為本轉(zhuǎn)發(fā)設(shè)備MAC地址的單播二層SDN協(xié)議報(bào)文后,記錄本設(shè)備到控制器的二層帶內(nèi)接口 ; 帶內(nèi)轉(zhuǎn)發(fā)模塊:當(dāng)接收到來自其它轉(zhuǎn)發(fā)設(shè)備的目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文后,按照第一流表項(xiàng)生成模塊中的第一流表項(xiàng),通過帶內(nèi)連接建立模塊記錄的本設(shè)備到控制器的二層帶內(nèi)接口將報(bào)文轉(zhuǎn)發(fā)給控制器;接收控制器下發(fā)的帶內(nèi)控制流表項(xiàng),所述表項(xiàng)指示了從控制器到其它轉(zhuǎn)發(fā)設(shè)備的二層單播報(bào)文在本轉(zhuǎn)發(fā)設(shè)備上的轉(zhuǎn)發(fā)端口,或者指示了從其它轉(zhuǎn)發(fā)設(shè)備到控制器的二層單播報(bào)文在本轉(zhuǎn)發(fā)設(shè)備上的轉(zhuǎn)發(fā)端口 ;接收到控制器發(fā)來的目的MAC地址為其它轉(zhuǎn)發(fā)設(shè)備的單播二層SDN協(xié)議Hello報(bào)文,按照控制器下發(fā)的帶內(nèi)控制流表項(xiàng),將報(bào)文轉(zhuǎn)發(fā)給其它轉(zhuǎn)發(fā)設(shè)備,或者接收到其它轉(zhuǎn)發(fā)設(shè)備發(fā)來的目的MAC地址為控制器的單播二層SDN協(xié)議報(bào)文,按照控制器下發(fā)的帶內(nèi)控制流表項(xiàng),將報(bào)文轉(zhuǎn)發(fā)給控制器。
10.根據(jù)權(quán)利要求9所述的轉(zhuǎn)發(fā)設(shè)備,其特征在于,所述帶內(nèi)轉(zhuǎn)發(fā)模塊接收到來自其它轉(zhuǎn)發(fā)設(shè)備的目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文后,通過帶內(nèi)連接建立模塊記錄的本設(shè)備到控制器的二層帶內(nèi)接口將報(bào)文轉(zhuǎn)發(fā)給控制器包括: 轉(zhuǎn)發(fā)設(shè)備判斷是否已記錄自身到控制器的二層帶內(nèi)接口,若是,將該二層SDN協(xié)議Hello報(bào)文封裝到Packet-1n報(bào)文中,將該P(yáng)acket-1n報(bào)文通過本設(shè)備到控制器的二層帶內(nèi)接口轉(zhuǎn)發(fā)給控制器;否則,丟棄該二層SDN協(xié)議Hello報(bào)文。
11.根據(jù)權(quán)利要求9所述的轉(zhuǎn)發(fā)設(shè)備,其特征在于,所述帶內(nèi)連接建立模塊周期性地從本設(shè)備各SDN協(xié)議端口向外發(fā)送二層SDN協(xié)議Hello報(bào)文為: 對(duì)于本設(shè)備的每個(gè)SDN協(xié)議端口,分別針對(duì)該端口使能的每個(gè)VLAN周期性地從該端口發(fā)送一個(gè)二層SDN協(xié)議Hello報(bào)文; 且,所述帶內(nèi)連接建立模塊接收到控制器發(fā)來的目的MAC地址為本轉(zhuǎn)發(fā)設(shè)備MAC地址的單播二層SDN協(xié)議報(bào)文包括:接收到控制器發(fā)來的目的MAC地址為本轉(zhuǎn)發(fā)設(shè)備MAC地址、且包含VLAN標(biāo)識(shí)的單播二層SDN協(xié)議Hello報(bào)文和單播二層Packet-out報(bào)文,將Hello報(bào)文中的VLAN標(biāo)識(shí)對(duì)應(yīng)VLAN作為此后發(fā)送除Packet-out和Packet-1n報(bào)文外的SDN協(xié)議報(bào)文所使用的VLAN,將Packet-out報(bào)文中的VLAN標(biāo)識(shí)對(duì)應(yīng)VLAN作為此后發(fā)送Packet-out和Packet-1n報(bào)文所使用的VLAN。
12.根據(jù)權(quán)利要求11所述的轉(zhuǎn)發(fā)設(shè)備,其特征在于,所述帶內(nèi)連接建立模塊將Packet-out報(bào)文中的VLAN標(biāo)識(shí)對(duì)應(yīng)VLAN作為此后發(fā)送Packet-out和Packet-1n報(bào)文所使用的VLAN之后進(jìn)一步包括: 周期性地針對(duì)Packet-out和Packet-1n報(bào)文所使用的VLAN,以及除Packet-out和Packet-1n報(bào)文外的SDN協(xié)議報(bào)文所使用的VLAN與控制器進(jìn)行?;顖?bào)文交互,若針對(duì)其中一個(gè)VLAN?;钍?,則將該VLAN上的報(bào)文轉(zhuǎn)移到另一 VLAN上傳輸,并與控制器重新協(xié)商出一個(gè)替換VLAN,協(xié)商成功后,將?;钍〉腣LAN上的報(bào)文再轉(zhuǎn)移到替換VLAN上傳輸。
13.一種軟件定義網(wǎng)絡(luò)SDN中的控制器,其特征在于,包括: 第一帶內(nèi)連接建立模塊:接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文,從該報(bào)文學(xué)習(xí)到直連轉(zhuǎn)發(fā)設(shè)備的MAC地址,并學(xué)習(xí)到本控制器到直連轉(zhuǎn)發(fā)設(shè)備的帶內(nèi)組網(wǎng)拓?fù)?,向直連轉(zhuǎn)發(fā)設(shè)備返回單播二層SDN協(xié)議報(bào)文,所述預(yù)設(shè)標(biāo)識(shí)地址指向本控制器; 第二帶內(nèi)連接建立模塊:接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的Packet-1n報(bào)文,若從該報(bào)文中解析出目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文,則從該P(yáng)acket-1n報(bào)文學(xué)習(xí)到該Hello報(bào)文的發(fā)送轉(zhuǎn)發(fā)設(shè)備的下一跳轉(zhuǎn)發(fā)設(shè)備到該發(fā)送轉(zhuǎn)發(fā)設(shè)備的帶內(nèi)組網(wǎng)拓?fù)?,并學(xué)習(xí)到分別應(yīng)用在本控制器與該發(fā)送轉(zhuǎn)發(fā)設(shè)備之間的每個(gè)轉(zhuǎn)發(fā)設(shè)備上的帶內(nèi)控制流表項(xiàng),將學(xué)習(xí)到的各帶內(nèi)控制流表項(xiàng)對(duì)應(yīng)發(fā)送給每個(gè)轉(zhuǎn)發(fā)設(shè)備,同時(shí)向發(fā)送轉(zhuǎn)發(fā)設(shè)備返回單播二層SDN協(xié)議報(bào)文,其中,應(yīng)用在任一轉(zhuǎn)發(fā)設(shè)備上的帶內(nèi)控制流表項(xiàng)指示了從控制器到其它轉(zhuǎn)發(fā)設(shè)備的報(bào)文在本轉(zhuǎn)發(fā)設(shè)備上的轉(zhuǎn)發(fā)端口,或者`指示了從其它轉(zhuǎn)發(fā)設(shè)備到控制器的報(bào)文在本轉(zhuǎn)發(fā)設(shè)備上的轉(zhuǎn)發(fā)端口。
14.根據(jù)權(quán)利要求13所述的控制器,其特征在于,所述第二帶內(nèi)連接建立模塊從該P(yáng)acket-1n報(bào)文學(xué)習(xí)到分別應(yīng)用在本控制器與該發(fā)送轉(zhuǎn)發(fā)設(shè)備之間的每個(gè)轉(zhuǎn)發(fā)設(shè)備上的帶內(nèi)控制流表項(xiàng)包括: 根據(jù)已學(xué)習(xí)到的帶內(nèi)組網(wǎng)拓?fù)?,確定從所述Packet-1n報(bào)文中解析出的Hello報(bào)文在發(fā)送轉(zhuǎn)發(fā)設(shè)備與本控制器之間的轉(zhuǎn)發(fā)路徑,且,若該確定的轉(zhuǎn)發(fā)路徑優(yōu)于已學(xué)習(xí)到的該發(fā)送轉(zhuǎn)發(fā)設(shè)備與本控制器之間的所有其它轉(zhuǎn)發(fā)路徑,則根據(jù)該確定的轉(zhuǎn)發(fā)路徑學(xué)習(xí)到分別應(yīng)用在本控制器與該發(fā)送轉(zhuǎn)發(fā)設(shè)備之間的每個(gè)轉(zhuǎn)發(fā)設(shè)備上的帶內(nèi)控制流表項(xiàng)。
15.根據(jù)權(quán)利要求13所述的控制器,其特征在于,所述第一帶內(nèi)連接建立模塊接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文包括: 收到該轉(zhuǎn)發(fā)設(shè)備發(fā)來的針對(duì)多個(gè)VLAN的所述Hello報(bào)文,則從該多個(gè)VLAN中選擇兩個(gè) VLAN ; 且,所述第一帶內(nèi)連接建立模塊向直連轉(zhuǎn)發(fā)設(shè)備返回單播二層SDN協(xié)議報(bào)文為: 將選擇的一個(gè)VLAN的標(biāo)識(shí)攜帶在單播二層SDN協(xié)議Hello報(bào)文中,將另一個(gè)VLAN的標(biāo)識(shí)攜帶在單播二層SDN協(xié)議Packet-out報(bào)文中發(fā)送給直連轉(zhuǎn)發(fā)設(shè)備,以便:此后直連轉(zhuǎn)發(fā)設(shè)備使用Hello報(bào)文中的VLAN標(biāo)識(shí)對(duì)應(yīng)VLAN發(fā)送除Packet-out和Packet-1n報(bào)文之外的SDN協(xié)議報(bào)文,使用Packet-out報(bào)文中的VLAN標(biāo)識(shí)對(duì)應(yīng)VLAN發(fā)送Packet-out和Packet-1n 報(bào)文; 所述第二帶內(nèi)連接建立模塊接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的Packet-1n報(bào)文,若從該報(bào)文中解析出目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文包括: 接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的多個(gè)Packet-1n報(bào)文,從該多個(gè)Packet-1n報(bào)文中都解析出目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文,且該多個(gè)Hello報(bào)文的源MAC地址相同,且該多個(gè)Hello報(bào)文分別攜帶不同的VLAN標(biāo)識(shí),則從該多個(gè)VLAN中選擇兩個(gè)VLAN ; 且,所述第二帶內(nèi)連接建立模塊向發(fā)送轉(zhuǎn)發(fā)設(shè)備返回單播二層SDN協(xié)議報(bào)文為:將選擇的一個(gè)VLAN的標(biāo)識(shí)攜帶在單播二層SDN協(xié)議Hello報(bào)文中,將另一個(gè)VLAN的標(biāo)識(shí)攜帶在單播二層SDN協(xié)議Packet-out報(bào)文中發(fā)送給發(fā)送轉(zhuǎn)發(fā)設(shè)備,以便:此后發(fā)送轉(zhuǎn)發(fā)設(shè)備使用Hello報(bào)文中的VLAN標(biāo)識(shí)對(duì)應(yīng)VLAN發(fā)送除Packet-out和Packet-1n報(bào)文之外的SDN協(xié)議報(bào)文,使用Packet-out報(bào)文中的VLAN標(biāo)識(shí)對(duì)應(yīng)VLAN發(fā)送Packet-out和Packet-1n 報(bào)文。
16.一種軟件定義網(wǎng)絡(luò)SDN中的控制器,其特征在于,包括: 帶內(nèi)組網(wǎng)拓?fù)鋵W(xué)習(xí)模塊,用于: 接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的目的MAC地址為預(yù)設(shè)標(biāo)識(shí)地址的Hello報(bào)文,從該報(bào)文學(xué)習(xí)到直連轉(zhuǎn)發(fā)設(shè)備的MAC地址,并學(xué)習(xí)到本控制器到直連轉(zhuǎn)發(fā)設(shè)備的帶內(nèi)組網(wǎng)拓?fù)洌鲱A(yù)設(shè)標(biāo)識(shí)地址指向本控制器; 接收直連轉(zhuǎn)發(fā)設(shè)備發(fā)來的Packet-1n報(bào)文,從該報(bào)文中解析出二層SDN協(xié)議Hello報(bào)文,若Hello報(bào)文的目的MAC地址為指向本控制器的預(yù)設(shè)標(biāo)識(shí)地址,則從Hello報(bào)文的源MAC地址中獲取Hello報(bào)文的發(fā)送設(shè)備的MAC地址,從Packet-1n報(bào)文的源MAC地址中獲取Hello報(bào)文的發(fā)送設(shè)備的下一跳設(shè)備的MAC地址,同時(shí)從Packet-1n報(bào)文中獲取所述下一跳設(shè)備到所述發(fā)送設(shè)備的出接口,記錄所述下一跳設(shè)備的MAC地址、所述發(fā)送設(shè)備與所述下一跳設(shè)備到所述發(fā)送設(shè)備的出接口之間的對(duì)應(yīng)關(guān)系,將該對(duì)應(yīng)關(guān)系作為所述下一跳設(shè)備到所述發(fā)送設(shè)備的 帶內(nèi)組網(wǎng)拓?fù)洹?br>
【文檔編號(hào)】H04L12/801GK103763207SQ201410043236
【公開日】2014年4月30日 申請(qǐng)日期:2014年1月29日 優(yōu)先權(quán)日:2014年1月29日
【發(fā)明者】王云毅 申請(qǐng)人:杭州華三通信技術(shù)有限公司