本申請(qǐng)涉及通信領(lǐng)域,尤其涉及一種軟件定義網(wǎng)絡(luò)(softwaredefinednetwork,sdn)連接判斷方法、設(shè)備和系統(tǒng)
背景技術(shù):
sdn技術(shù)將控制平面從網(wǎng)絡(luò)設(shè)備中分離出來,將全網(wǎng)的控制、管理功能集中到sdn控制器中,網(wǎng)絡(luò)設(shè)備專注于業(yè)務(wù)數(shù)據(jù)轉(zhuǎn)發(fā),逐步標(biāo)準(zhǔn)化后形成開放流(openflow)交換機(jī)。sdn控制器與openflow交換機(jī)通過openflow協(xié)議進(jìn)行通信,具體實(shí)現(xiàn)中,sdn控制器與openflow交換機(jī)之間,既可以通過獨(dú)立的帶外網(wǎng)絡(luò)進(jìn)行openflow協(xié)議通信,也可以使用與業(yè)務(wù)數(shù)據(jù)轉(zhuǎn)發(fā)相同的通信通道(帶內(nèi)網(wǎng)絡(luò))進(jìn)行openflow協(xié)議通信。
實(shí)際組網(wǎng)應(yīng)用中,選擇帶內(nèi)網(wǎng)絡(luò)或帶外網(wǎng)絡(luò)進(jìn)行openflow協(xié)議通信取決于網(wǎng)絡(luò)實(shí)際情況,當(dāng)sdn控制器與openflow交換機(jī)物理距離很遠(yuǎn),且不便于提供單獨(dú)的控制通信網(wǎng)絡(luò)時(shí)通常選擇帶內(nèi)通信模式,以便降低網(wǎng)絡(luò)建設(shè)成本,簡化網(wǎng)絡(luò)維護(hù)管理復(fù)雜度。通過帶內(nèi)通信模式,sdn控制器與openflow交換機(jī)間完成控制通信通道建立后,依據(jù)openflow交換機(jī)與sdn控制器間連接關(guān)系的不同,可以分為直連交換機(jī)和非直連交換機(jī)?,F(xiàn)有技術(shù)中,sdn控制器與openflow交換機(jī)之間的連接關(guān)系需要手動(dòng)配置,當(dāng)網(wǎng)絡(luò)結(jié)構(gòu)發(fā)生變化時(shí)不便于維護(hù)。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)的實(shí)施例提供一種sdn連接判斷方法、設(shè)備和系統(tǒng),用于實(shí)現(xiàn)sdn控制器與openflow交換機(jī)間通道連接關(guān)系的自動(dòng)發(fā)現(xiàn)。
為達(dá)到上述目的,本申請(qǐng)的實(shí)施例采用如下技術(shù)方案:
第一方面,提供了一種sdn連接判斷方法,該方法包括:
開放流openflow交換機(jī)與軟件定義網(wǎng)絡(luò)sdn控制器建立控制通信通道,以獲取本機(jī)的上游端口;
openflow交換機(jī)通過上游端口發(fā)送第一通告報(bào)文,第一通告報(bào)文包括openflow交換機(jī)的標(biāo)識(shí)信息;
openflow交換機(jī)接收上游交換機(jī)發(fā)送的第一回應(yīng)報(bào)文,第一回應(yīng)報(bào)文中包括上游交換機(jī)的標(biāo)識(shí)信息;
openflow交換機(jī)根據(jù)上游端口和上游交換機(jī)的標(biāo)識(shí)信息,獲取與上游端口對(duì)應(yīng)的上游鄰居交換機(jī)記錄表;
openflow交換機(jī)根據(jù)上游鄰居交換機(jī)記錄表或者接收第一回應(yīng)報(bào)文的端口,判斷openflow交換機(jī)通過上游端口與sdn控制器直連或非直連。
第二方面,提供了一種開放流openflow交換機(jī),包括:
獲取單元,用于與軟件定義網(wǎng)絡(luò)sdn控制器建立控制通信通道,以獲取本機(jī)的上游端口;
發(fā)送單元,用于通過上游端口發(fā)送第一通告報(bào)文,第一通告報(bào)文包括openflow交換機(jī)的標(biāo)識(shí)信息;
接收單元,用于接收上游交換機(jī)發(fā)送的第一回應(yīng)報(bào)文,第一回應(yīng)報(bào)文中包括上游交換機(jī)的標(biāo)識(shí)信息;
獲取單元,還用于根據(jù)上游端口和上游交換機(jī)的標(biāo)識(shí)信息,獲取與上游端口對(duì)應(yīng)的上游鄰居交換機(jī)記錄表;
判斷單元,用于根據(jù)上游鄰居交換機(jī)記錄表或者接收第一回應(yīng)報(bào)文的端口,判斷openflow交換機(jī)通過上游端口與sdn控制器直連或非直連。
第三方面,提供了一種通信系統(tǒng),包括如第二方面的開放流openflow交換機(jī)和軟件定義網(wǎng)絡(luò)sdn控制器。
本申請(qǐng)的實(shí)施例提供的sdn連接判斷方法、設(shè)備和系統(tǒng),openflow交換機(jī)通過上游端口獲取第一回應(yīng)報(bào)文,其中包含上游交換機(jī)的標(biāo)識(shí)信息,并獲取與上游端口對(duì)應(yīng)的上游鄰居交換機(jī)記錄表,最后根據(jù)上游鄰居交換機(jī)記錄表或者接收第一回應(yīng)報(bào)文的端口,判斷openflow交換機(jī)通過上游端口與sdn控制器直連或非直連。實(shí)現(xiàn)了sdn控制器與openflow交換機(jī)間通道連接關(guān)系的自動(dòng)發(fā)現(xiàn)。
附圖說明
為了更清楚地說明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹。
圖1為本申請(qǐng)的實(shí)施例提供的通信系統(tǒng)的結(jié)構(gòu)示意圖;
圖2為本申請(qǐng)的實(shí)施例提供的一種sdn連接判斷方法的流程示意圖;
圖3為本申請(qǐng)的實(shí)施例提供的另一種sdn連接判斷方法的流程示意圖;
圖4為本申請(qǐng)的實(shí)施例提供的又一種sdn連接判斷方法的流程示意圖;
圖5為本申請(qǐng)的實(shí)施例提供的再一種sdn連接判斷方法的流程示意圖;
圖6為本申請(qǐng)的實(shí)施例提供的一種通信系統(tǒng)示例的結(jié)構(gòu)示意圖;
圖7為本申請(qǐng)的實(shí)施例提供的openflow交換機(jī)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面結(jié)合附圖,對(duì)本申請(qǐng)的實(shí)施例進(jìn)行描述。
參照?qǐng)D1中所示,為本申請(qǐng)實(shí)施例提供的通信系統(tǒng)的示意圖,包括sdn控制器11和至少一個(gè)openflow交換機(jī)12。sdn控制器11與openflow交換機(jī)12間通過帶內(nèi)方式進(jìn)行控制通信時(shí),至少一臺(tái)openflow交換機(jī)與sdn控制器間通過直連方式建立物理連接。
本申請(qǐng)實(shí)施例提供的sdn連接判斷方法、設(shè)備和系統(tǒng),當(dāng)sdn控制器與openflow通過帶內(nèi)通信方式建立控制通信通道時(shí),在不影響sdn控制器與openflow交換機(jī)間控制通信協(xié)議兼容性前提下,openflow交換機(jī)自動(dòng)完成:(1)與sdn控制器間是否采用直連方式物理連接的自動(dòng)檢測;(2)自動(dòng)報(bào)告本交換機(jī)連接sdn控制器的端口信息(端口號(hào))。sdn控制器接收到openflow交換機(jī)上報(bào)的包括端口信息的通知消息時(shí),完成帶內(nèi)控制通信通道拓?fù)鋽?shù)據(jù)更新,為拓?fù)涔芾矸?wù)。
實(shí)施例1、
本申請(qǐng)實(shí)施例提供了一種sdn連接判斷方法,應(yīng)用于上述系統(tǒng),參照?qǐng)D2中所示,該方法包括:
s101、openflow交換機(jī)與sdn控制器建立控制通信通道,以獲取本機(jī)的上游端口。
本申請(qǐng)中將openflow交換機(jī)連接sdn控制器所用的端口標(biāo)記為該交換機(jī)的“上游端口”,上游端口即該openflow交換機(jī)上收到過sdn控制器發(fā)送的報(bào)文的端口。openflow交換機(jī)連接sdn控制器的端口可能是直連端口,也可能是非直連端口。各個(gè)openflow交換機(jī)在完成與sdn控制器間控制通信通道建立之后,各個(gè)交換機(jī)可以自動(dòng)識(shí)別出本機(jī)的“上游端口”。同時(shí),本openflow交換機(jī)上與其他openflow交換機(jī)的上游端口相連接的端口,稱為本openflow交換機(jī)的“下游端口“。
還需要說明的是,本發(fā)明實(shí)施例中上游交換機(jī)是指與openflow交換機(jī)的上游端口直接連接的openflow交換機(jī);下游交換機(jī)是指與openflow交換機(jī)的下游端口直接連接的openflow交換機(jī)。
s102、openflow交換機(jī)通過上游端口發(fā)送第一通告報(bào)文,第一通告報(bào)文包括openflow交換機(jī)的標(biāo)識(shí)信息。
openflow交換機(jī)的標(biāo)識(shí)信息主要用于在整個(gè)sdn網(wǎng)絡(luò)中唯一標(biāo)識(shí)openflow交換機(jī),其可以包括但不限于openflow交換機(jī)的媒體訪問控制(mediaaccesscontrol,mac)地址等。
s103、openflow交換機(jī)接收上游交換機(jī)發(fā)送的第一回應(yīng)報(bào)文,第一回應(yīng)報(bào)文中包括上游交換機(jī)的標(biāo)識(shí)信息。
上游交換機(jī)的標(biāo)識(shí)信息主要用于在整個(gè)sdn網(wǎng)絡(luò)中唯一標(biāo)識(shí)openflow交換機(jī),其可以包括但不限于上游交換機(jī)的mac地址等。
s104、openflow交換機(jī)根據(jù)上游端口和上游交換機(jī)的標(biāo)識(shí)信息,獲取與上游端口對(duì)應(yīng)的上游鄰居交換機(jī)記錄表。
上游鄰居交換機(jī)記錄表包括但不限于上游端口、上游交換機(jī)的mac地址和主機(jī)名。
s105、openflow交換機(jī)根據(jù)上游鄰居交換機(jī)記錄表或者接收第一回應(yīng)報(bào)文的端口,判斷openflow交換機(jī)通過上游端口與sdn控制器直連或非直連。
本申請(qǐng)實(shí)施例提供的sdn連接判斷方法,openflow交換機(jī)通過上游端口獲取第一回應(yīng)報(bào)文,其中包含上游交換機(jī)的標(biāo)識(shí)信息,并獲取與上游端口對(duì)應(yīng)的上游鄰居交換機(jī)記錄表,最后根據(jù)上游鄰居交換機(jī)記錄表或者接收第一回應(yīng)報(bào)文的端口,判斷openflow交換機(jī)通過上游端口與sdn控制器直連或非直連。實(shí)現(xiàn)了sdn控制器與openflow交換機(jī)間通道連接關(guān)系的自動(dòng)發(fā)現(xiàn)。
可選的,參照?qǐng)D3中所示,步驟s105包括:
s1051、當(dāng)與上游端口對(duì)應(yīng)的上游鄰居交換機(jī)記錄表中有數(shù)據(jù)時(shí),并且接收第一回應(yīng)報(bào)文的端口屬于上游端口時(shí),openflow交換機(jī)判斷通過上游端口與sdn控制器非直連。
s1052、當(dāng)與上游端口對(duì)應(yīng)的上游鄰居交換機(jī)記錄表中無數(shù)據(jù)時(shí),或者接收第一回應(yīng)報(bào)文的端口不屬于上游端口時(shí),openflow交換機(jī)判斷通過上游端口與sdn控制器直連。
可選的,參照?qǐng)D4中所示,上述方法還包括:
s106、openflow交換機(jī)通過下游端口從下游交換機(jī)接收第二通告報(bào)文,第二通告報(bào)文中包括下游交換機(jī)的標(biāo)識(shí)信息。
s107、openflow交換機(jī)根據(jù)下游端口和下游交換機(jī)的標(biāo)識(shí)信息,獲取與下游端口對(duì)應(yīng)的下游鄰居交換機(jī)記錄表。
s108、openflow交換機(jī)根據(jù)下游鄰居交換機(jī)記錄表通過下游端口向下游交換機(jī)發(fā)送第二回應(yīng)報(bào)文,第二回應(yīng)報(bào)文中包括openflow交換機(jī)的標(biāo)識(shí)信息。
s109、openflow交換機(jī)周期性掃描上游鄰居交換機(jī)記錄表,如果在一段時(shí)間內(nèi)沒有從上游端口接收來自上游交換機(jī)的第一回應(yīng)報(bào)文,則從與上游端口對(duì)應(yīng)的上游鄰居交換機(jī)記錄表中刪除與上游交換機(jī)對(duì)應(yīng)的表項(xiàng)。
需要特別說明的是步驟s101-s105,與步驟s106-s109之間沒有明確的邏輯先后順序。
實(shí)施例2、
本申請(qǐng)實(shí)施例提供了另一種sdn連接判斷方法,應(yīng)用于上述系統(tǒng),參照?qǐng)D6中所示,該方法包括:
s201、openflow交換機(jī)與sdn控制器建立控制通信通道,以獲取本機(jī)的上游端口。
該步驟與s101相對(duì)應(yīng)。
參照?qǐng)D6中所示,為本申請(qǐng)實(shí)施例的一種通信系統(tǒng)的具體示例。交換機(jī)1至交換機(jī)5完成與sdn控制器間建立控制通信通道之后,各個(gè)交換機(jī)可以自動(dòng)識(shí)別出本機(jī)的“上游端口”,如下:
{交換機(jī)1:switch1,上游端口:p1-1}
{交換機(jī)2:switch2,上游端口:p2-1}
{交換機(jī)3:switch3,上游端口:p3-1}
{交換機(jī)4:switch4,上游端口:p4-1}
{交換機(jī)5:switch4,上游端口:p5-1}
s202、openflow交換機(jī)周期性通過上游端口發(fā)送交換機(jī)狀態(tài)通告報(bào)文,該報(bào)文包括本openflow交換機(jī)的mac地址和主機(jī)名。
該步驟與步驟s102對(duì)應(yīng)。第一通告報(bào)文即交換機(jī)狀態(tài)通告報(bào)文。
如表1所示,提供了一種“交換機(jī)狀態(tài)通告”報(bào)文的示例,其中該報(bào)文是廣播發(fā)送,所以接收方地址為全0xff,對(duì)于發(fā)送方標(biāo)識(shí)和接收方標(biāo)識(shí)作為可選字段,如果使用該字段,可以為設(shè)備id或者主機(jī)名,也可以為系統(tǒng)可識(shí)別的標(biāo)識(shí),不作限定。本領(lǐng)域技術(shù)人員可以很清楚地知道,不使用接收方標(biāo)識(shí)字段和發(fā)送方標(biāo)識(shí)字段不影響交換機(jī)狀態(tài)通告報(bào)文的收發(fā)和識(shí)別;因?yàn)閙ac地址作為在整個(gè)sdn網(wǎng)絡(luò)中唯一標(biāo)識(shí)openflow交換機(jī)。
表1
示例性的,以圖6中的交換機(jī)2(switch2)為例,交換機(jī)2周期性通過上游端口p2-1發(fā)送“交換機(jī)狀態(tài)通告”報(bào)文格式可以如表2中所示:
表2
交換機(jī)2通過上游端口p2-1將上述構(gòu)建好的報(bào)文廣播發(fā)送。采用同樣的方式,交換機(jī)1、交換機(jī)3、交換機(jī)4、交換機(jī)5也分別在各自的上游端口上發(fā)送“交換機(jī)狀態(tài)通告”報(bào)文。
s203、openflow交換機(jī)從上游交換機(jī)接收交換機(jī)狀態(tài)回應(yīng)報(bào)文。
該步驟與步驟s103對(duì)應(yīng)。第一回應(yīng)報(bào)文即交換機(jī)狀態(tài)回應(yīng)報(bào)文。
openflow交換機(jī)控制平面自主下發(fā)如下轉(zhuǎn)發(fā)規(guī)則到數(shù)據(jù)平面:規(guī)則2,報(bào)文協(xié)議類型為“0x10b”的以太報(bào)文,上交本交換機(jī)控制平面。根據(jù)該規(guī)則,交換機(jī)狀態(tài)回應(yīng)報(bào)文上交本交換機(jī)控制平面,控制平面進(jìn)行后續(xù)處理。
如表3所示,提供了一種“交換機(jī)狀態(tài)回應(yīng)”報(bào)文的示例。同樣的,由于交換機(jī)狀態(tài)回應(yīng)報(bào)文與交換機(jī)狀態(tài)通告報(bào)文是對(duì)應(yīng)的,對(duì)于發(fā)送方標(biāo)識(shí)和接收方標(biāo)識(shí)同樣可作為可選字段,如果使用該字段,可以為設(shè)備id或者主機(jī)名,也可以為系統(tǒng)可識(shí)別的標(biāo)識(shí),不作限定。本領(lǐng)域技術(shù)人員可以很清楚地知道,不使用接收方標(biāo)識(shí)字段和發(fā)送方標(biāo)識(shí)字段不影響交換機(jī)狀態(tài)回應(yīng)報(bào)文的收發(fā)和識(shí)別;因?yàn)閙ac地址作為在整個(gè)sdn網(wǎng)絡(luò)中唯一標(biāo)識(shí)openflow交換機(jī)。
表3
示例性的,以圖6中的交換機(jī)1作為交換機(jī)2的上游交換機(jī),會(huì)收到交換機(jī)2通過上游端口p2-1發(fā)送的“交換機(jī)狀態(tài)通告”報(bào)文,所以交換機(jī)1會(huì)通過其下游端口p1-2向交換機(jī)2的上游端口p2-1發(fā)送對(duì)應(yīng)的交換機(jī)狀態(tài)回應(yīng)報(bào)文;交換機(jī)2從上游端口p2-1接收到從交換機(jī)1發(fā)出的交換機(jī)狀態(tài)回應(yīng)”報(bào)文,該報(bào)文格式可以如表4中所示:
表4
交換機(jī)1查詢下游鄰居交換機(jī)記錄表,獲得交換機(jī)2對(duì)應(yīng)的下游端口p1-2,將構(gòu)建完成的交換機(jī)狀態(tài)回應(yīng)報(bào)文發(fā)送給交換機(jī)2。交換機(jī)2、交換機(jī)3根據(jù)本機(jī)的下游鄰居交換機(jī)記錄表,按照同樣的流程執(zhí)行上述回應(yīng)處理流程。
s204、openflow交換機(jī)獲取交換機(jī)狀態(tài)回應(yīng)報(bào)文中的上游交換機(jī)的標(biāo)識(shí)信息,根據(jù)上游端口和上游交換機(jī)的標(biāo)識(shí)信息,獲取與上游端口對(duì)應(yīng)的上游鄰居交換機(jī)記錄表。
該步驟與步驟s104對(duì)應(yīng)。本實(shí)施例中,由步驟s201可知,openflow交換機(jī)周期性通過上游端口發(fā)送交換機(jī)狀態(tài)通告報(bào)文,也即系統(tǒng)中所有的openflow交換機(jī)都是周期性通過上游端口發(fā)送交換機(jī)狀態(tài)通告報(bào)文,所以當(dāng)openflow交換機(jī)的上游端口連接有上游交換機(jī)時(shí),該openflow交換機(jī)會(huì)多次從上游交換機(jī)接收到交換機(jī)狀態(tài)響應(yīng)報(bào)文,接收到交換機(jī)狀態(tài)響應(yīng)報(bào)文后,要獲取接收交換機(jī)狀態(tài)響應(yīng)報(bào)文的上游端口以及報(bào)文中的上游交換機(jī)的標(biāo)識(shí)信息;先根據(jù)上游交換機(jī)的標(biāo)識(shí)信息在下游鄰居交換機(jī)記錄表查找,如果不存在對(duì)應(yīng)的表項(xiàng),則在下游鄰居交換機(jī)記錄表中創(chuàng)建對(duì)應(yīng)的表項(xiàng)。在本實(shí)施例中,還可以在下游鄰居交換機(jī)記錄表的表項(xiàng)中添加老化定時(shí)器,每收到一次上游交換機(jī)的交換機(jī)狀態(tài)響應(yīng)報(bào)文更新一下對(duì)應(yīng)表項(xiàng)的老化定時(shí)器。
本領(lǐng)域人員可以很清楚的知道,在本發(fā)明實(shí)施例中,當(dāng)openflow交換機(jī)與sdn控制器是直接連接時(shí),則不能從上游端口接收到交換機(jī)狀態(tài)回應(yīng)報(bào)文,所以并不能創(chuàng)建對(duì)應(yīng)的上游鄰居交換機(jī)記錄表。
上游鄰居交換機(jī)記錄表示例如下:
{上游端口p1,上游交換機(jī)mac地址addr1,上游交換機(jī)主機(jī)名name1}
{上游端口p2,上游交換機(jī)mac地址addr2,上游交換機(jī)主機(jī)名name2}
……
{上游端口pn,上游交換機(jī)mac地址addrn,上游交換機(jī)主機(jī)名namen}
示例性的,以圖6中的交換機(jī)2為例,交換機(jī)2獲取連接上游鄰居交換機(jī)的交換機(jī)1的端口為:p2-1;解析報(bào)文內(nèi)容,獲得上游鄰居交換機(jī)信息{上游交換機(jī)mac地址:00:01:7a:00:00:01,上游交換機(jī)主機(jī)名:switch1};構(gòu)建上游鄰居交換機(jī)記錄表:{上游端口:p2-1,上游交換機(jī)mac地址:00:01:7a:00:00:01,上游交換機(jī)主機(jī)名:switch1}
按照如上處理方法,網(wǎng)絡(luò)中各個(gè)openflow交換機(jī)上形成的上游鄰居交換機(jī)記錄表如下:
交換機(jī)1:無上游鄰居。
交換機(jī)2:{上游端口:p2-1,上游交換機(jī)mac地址:00:01:7a:00:00:01,上游交換機(jī)主機(jī)名:switch1}。
交換機(jī)3:{上游端口:p3-1,上游交換機(jī)mac地址:00:01:7a:00:00:01,上游交換機(jī)主機(jī)名:switch1}。
交換機(jī)4:{上游端口:p4-1,上游交換機(jī)mac地址:00:01:7a:00:00:02,上游交換機(jī)主機(jī)名:switch2}。
交換機(jī)5:{上游端口:p5-1,上游交換機(jī)mac地址:00:01:7a:00:00:03,上游交換機(jī)主機(jī)名:switch3}。
s205、openflow交換機(jī)根據(jù)上游鄰居交換機(jī)記錄表或者接收上游交換機(jī)狀態(tài)通告報(bào)文的端口,判斷openflow交換機(jī)通過上游端口與sdn控制器直連或非直連。
該步驟與步驟s105對(duì)應(yīng)。
s206、如果判斷直連,openflow交換機(jī)構(gòu)建openflowpkt_in消息,并發(fā)送給sdn控制器,通知sdn控制器與本交換機(jī)的連接方式。
示例性的,以圖6中的交換機(jī)1為例,構(gòu)建的pkt_in消息格式示意如表5中所示(具體格式內(nèi)容可參考o(jì)penflow協(xié)議標(biāo)準(zhǔn)):
表5
sdn控制器接收到上述pkt_in消息后,按照標(biāo)準(zhǔn)流程予以處理,即可完成自身與交換機(jī)1間連接關(guān)系的自動(dòng)發(fā)現(xiàn)及拓?fù)涮幚怼?/p>
s207、下游交換機(jī)周期性對(duì)上游鄰居交換機(jī)記錄表進(jìn)行老化處理。
該步驟與步驟s109對(duì)應(yīng)。
下游交換機(jī)周期性掃描上游鄰居交換機(jī)記錄表,如果在一段時(shí)間內(nèi)沒有從上游端口接收來自上游交換機(jī)的“上游交換機(jī)狀態(tài)通告”報(bào)文(第一回應(yīng)報(bào)文),則從與該上游端口對(duì)應(yīng)的上游鄰居交換機(jī)記錄表中刪除與上游交換機(jī)對(duì)應(yīng)的表項(xiàng)。
s208、openflow交換機(jī)通過下游端口從下游交換機(jī)接收交換機(jī)狀態(tài)通告報(bào)文。
該步驟與s106對(duì)應(yīng)。第二通告報(bào)文也是交換機(jī)狀態(tài)通告報(bào)文。
初始狀態(tài)下,openflow交換機(jī)控制平面自主下發(fā)如下轉(zhuǎn)發(fā)規(guī)則到數(shù)據(jù)平面:規(guī)則1,報(bào)文協(xié)議類型為“0x10a”的以太報(bào)文,上交本交換機(jī)控制平面。根據(jù)該規(guī)則,報(bào)文上交本交換機(jī)控制平面,控制平面進(jìn)行后續(xù)處理。
s209、openflow交換機(jī)獲取接收“交換機(jī)狀態(tài)通告”報(bào)文的下游端口;獲取報(bào)文中的下游交換機(jī)的標(biāo)識(shí)信息;根據(jù)下游端口和下游交換機(jī)的標(biāo)識(shí)信息,獲取與下游端口對(duì)應(yīng)的下游鄰居交換機(jī)記錄表。
該步驟與步驟s107對(duì)應(yīng)。
本實(shí)施例中,由步驟s201可知,openflow交換機(jī)周期性通過上游端口發(fā)送交換機(jī)狀態(tài)通告報(bào)文,也即系統(tǒng)中所有的openflow交換機(jī)都是周期性通過上游端口發(fā)送交換機(jī)狀態(tài)通告報(bào)文,所以同時(shí)作為上游交換機(jī)的openflow交換機(jī)多次從下游交換機(jī)接收到“交換機(jī)狀態(tài)通告”報(bào)文,接收到“交換機(jī)狀態(tài)通告”報(bào)文后,要獲取接收“交換機(jī)狀態(tài)通告”報(bào)文的下游端口以及報(bào)文中的下游交換機(jī)的標(biāo)識(shí)信息;先根據(jù)下游交換機(jī)的標(biāo)識(shí)信息在下游鄰居交換機(jī)記錄表查找,如果不存在對(duì)應(yīng)的表項(xiàng),則在下游鄰居交換機(jī)記錄表中創(chuàng)建對(duì)應(yīng)的表項(xiàng)。
下游鄰居交換機(jī)記錄表如下:
{下游端口p1,下游交換機(jī)mac地址addr1,下游交換機(jī)主機(jī)名name1}
{下游端口p2,下游交換機(jī)mac地址addr2,下游交換機(jī)主機(jī)名name2}
……
{下游端口pn,下游交換機(jī)mac地址addrn,下游交換機(jī)主機(jī)名namen}
示例性的,以圖6中的交換機(jī)1為例,交換機(jī)1獲取連接下游鄰居交換機(jī)的交換機(jī)2的下游端口為:p1-2;解析報(bào)文內(nèi)容,獲得下游鄰居交換機(jī)標(biāo)識(shí)信息{下游交換機(jī)mac地址:00:01:7a:00:00:02,下游交換機(jī)主機(jī)名:switch2};構(gòu)建下游鄰居交換機(jī)記錄表表項(xiàng):{下游端口:p1-2,下游交換機(jī)mac地址:00:01:7a:00:00:02,下游交換機(jī)主機(jī)名:switch2}
按照如上處理方法,網(wǎng)絡(luò)中各個(gè)openflow交換機(jī)形成的下游鄰居交換機(jī)記錄表如下:
交換機(jī)1:{下游端口:p1-2,下游交換機(jī)mac地址:00:01:7a:00:00:02,下游交換機(jī)主機(jī)名:switch2};{下游端口:p1-3,下游交換機(jī)mac地址:00:01:7a:00:00:03,下游交換機(jī)主機(jī)名:switch3}。
交換機(jī)2:{下游端口:p2-2,下游交換機(jī)mac地址:00:01:7a:00:00:04,下游交換機(jī)主機(jī)名:switch4}。
交換機(jī)3:{下游端口:p3-2,下游交換機(jī)mac地址:00:01:7a:00:00:05,下游交換機(jī)主機(jī)名:switch5}。
交換機(jī)4和交換機(jī)5由于沒有下游鄰居,因此不存在對(duì)應(yīng)的下游鄰居交換機(jī)記錄表。
在本實(shí)施例中,還可以在表項(xiàng)中添加老化定時(shí)器,每收到一次下游交換機(jī)的“交換機(jī)狀態(tài)通告”報(bào)文更新一下對(duì)應(yīng)表項(xiàng)的老化定時(shí)器。
s210、上游交換機(jī)根據(jù)下游鄰居交換機(jī)記錄表獲得對(duì)應(yīng)的下游端口,并周期性地通過下游端口向下游交換機(jī)發(fā)送上游交換機(jī)狀態(tài)回應(yīng)報(bào)文,該報(bào)文中包括上游交換機(jī)的標(biāo)識(shí)信息。
該步驟與步驟s108對(duì)應(yīng)。
s211、openflow上游換機(jī)周期性對(duì)下游鄰居交換機(jī)記錄表進(jìn)行老化處理。
上游交換機(jī)周期性掃描下游鄰居交換機(jī)記錄表,如果在一段時(shí)間內(nèi)沒有從下游端口接收來自下游交換機(jī)的“下游交換機(jī)狀態(tài)通告”報(bào)文(第一通告報(bào)文),則從與該下游端口對(duì)應(yīng)的下游鄰居交換機(jī)記錄表中刪除與下游交換機(jī)對(duì)應(yīng)的表項(xiàng)。
需要特別說明的是步驟s201-s206,s207、與步驟s208-s211之間沒有明確的邏輯先后順序。
本申請(qǐng)實(shí)施例提供的sdn連接判斷方法,除了實(shí)現(xiàn)了sdn控制器與openflow交換機(jī)間通道連接關(guān)系的自動(dòng)發(fā)現(xiàn),openflow交換機(jī)還將上述連接關(guān)系發(fā)送給sdn控制器。
實(shí)施例3、
本申請(qǐng)實(shí)施例提供一種openflow交換機(jī),應(yīng)用于上述方法,參照?qǐng)D7中所示,該交換機(jī)12包括:
獲取單元1201,用于與軟件定義網(wǎng)絡(luò)sdn控制器建立控制通信通道,以獲取本機(jī)的上游端口。
發(fā)送單元1202,用于通過上游端口發(fā)送第一通告報(bào)文,第一通告報(bào)文包括openflow交換機(jī)的標(biāo)識(shí)信息。
接收單元1203,用于接收上游交換機(jī)發(fā)送的第一回應(yīng)報(bào)文,第一回應(yīng)報(bào)文中包括上游交換機(jī)的標(biāo)識(shí)信息。
獲取單元1201,還用于根據(jù)上游端口和上游交換機(jī)的標(biāo)識(shí)信息,獲取與上游端口對(duì)應(yīng)的上游鄰居交換機(jī)記錄表。
判斷單元1204,用于根據(jù)上游鄰居交換機(jī)記錄表或者接收第一回應(yīng)報(bào)文的端口,判斷openflow交換機(jī)通過上游端口與sdn控制器直連或非直連。
在一種可能的設(shè)計(jì)中,判斷單元1204具體用于:當(dāng)與上游端口對(duì)應(yīng)的上游鄰居交換機(jī)記錄表中有數(shù)據(jù)時(shí),并且接收第一回應(yīng)報(bào)文的端口屬于上游端口時(shí),判斷通過上游端口與sdn控制器非直連;當(dāng)與上游端口對(duì)應(yīng)的上游鄰居交換機(jī)記錄表中無數(shù)據(jù)時(shí),或者接收第一回應(yīng)報(bào)文的端口不屬于上游端口時(shí),判斷通過上游端口與sdn控制器直連。
在一種可能的設(shè)計(jì)中,接收單元1203,還用于通過下游端口接收下游交換機(jī)發(fā)送的第二通告報(bào)文,第二通告報(bào)文中包括下游交換機(jī)的標(biāo)識(shí)信息;獲取單元,還用于根據(jù)下游端口和下游交換機(jī)的標(biāo)識(shí)信息,獲取與下游端口對(duì)應(yīng)的下游鄰居交換機(jī)記錄表;發(fā)送單元,還用于根據(jù)下游鄰居交換機(jī)記錄表通過下游端口向下游交換機(jī)發(fā)送第二回應(yīng)報(bào)文,第二回應(yīng)報(bào)文中包括openflow交換機(jī)的標(biāo)識(shí)信息。
在一種可能的設(shè)計(jì)中,交換機(jī)還包括老化單元1205,用于周期性掃描上游鄰居交換機(jī)記錄表,如果在一段時(shí)間內(nèi)沒有從上游端口接收來自上游交換機(jī)的第一回應(yīng)報(bào)文,則從與上游端口對(duì)應(yīng)的上游鄰居交換機(jī)記錄表中刪除與上游交換機(jī)對(duì)應(yīng)的表項(xiàng)。
由于本申請(qǐng)實(shí)施例中的openflow交換機(jī)可以應(yīng)用于上述方法,因此,其所能獲得的技術(shù)效果也可參考上述方法實(shí)施例,本申請(qǐng)實(shí)施例在此不再贅述。
需要說明的是,獲取單元、判斷單元、老化單元可以為單獨(dú)設(shè)立的處理器,也可以集成在控制器的某一個(gè)處理器中實(shí)現(xiàn),此外,也可以以程序代碼的形式存儲(chǔ)于控制器的存儲(chǔ)器中,由控制器的某一個(gè)處理器調(diào)用并執(zhí)行以上各單元的功能。這里所述的處理器可以是一個(gè)中央處理器(centralprocessingunit,cpu),或者是特定集成電路(applicationspecificintegratedcircuit,asic),或者是被配置成實(shí)施本申請(qǐng)實(shí)施例的一個(gè)或多個(gè)集成電路。
應(yīng)理解,在本申請(qǐng)的各種實(shí)施例中,上述各過程的序號(hào)的大小并不意味著執(zhí)行順序的先后,各過程的執(zhí)行順序應(yīng)以其功能和內(nèi)在邏輯確定,而不應(yīng)對(duì)本申請(qǐng)實(shí)施例的實(shí)施過程構(gòu)成任何限定。
本領(lǐng)域普通技術(shù)人員可以意識(shí)到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計(jì)算機(jī)軟件和電子硬件的結(jié)合來實(shí)現(xiàn)。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本申請(qǐng)的范圍。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng)、裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng)、設(shè)備和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的設(shè)備實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,設(shè)備或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本申請(qǐng)各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。
在上述實(shí)施例中,可以全部或部分地通過軟件、硬件、固件或者其任意組合來實(shí)現(xiàn)。當(dāng)使用軟件程序?qū)崿F(xiàn)時(shí),可以全部或部分地以計(jì)算機(jī)程序產(chǎn)品的形式來實(shí)現(xiàn)。該計(jì)算機(jī)程序產(chǎn)品包括一個(gè)或多個(gè)計(jì)算機(jī)指令。在計(jì)算機(jī)上加載和執(zhí)行計(jì)算機(jī)程序指令時(shí),全部或部分地產(chǎn)生按照本申請(qǐng)實(shí)施例所述的流程或功能。所述計(jì)算機(jī)可以是通用計(jì)算機(jī)、專用計(jì)算機(jī)、計(jì)算機(jī)網(wǎng)絡(luò)、或者其他可編程裝置。所述計(jì)算機(jī)指令可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,或者從一個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)向另一個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)傳輸,例如,所述計(jì)算機(jī)指令可以從一個(gè)網(wǎng)站站點(diǎn)、計(jì)算機(jī)、服務(wù)器或者數(shù)據(jù)中心通過有線(例如同軸電纜、光纖、數(shù)字用戶線(digitalsubscriberline,dsl))或無線(例如紅外、無線、微波等)方式向另一個(gè)網(wǎng)站站點(diǎn)、計(jì)算機(jī)、服務(wù)器或數(shù)據(jù)中心進(jìn)行傳輸。所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是計(jì)算機(jī)能夠存取的任何可用介質(zhì)或者是包含一個(gè)或多個(gè)可以用介質(zhì)集成的服務(wù)器、數(shù)據(jù)中心等數(shù)據(jù)存儲(chǔ)設(shè)備。所述可用介質(zhì)可以是磁性介質(zhì)(例如,軟盤、硬盤、磁帶),光介質(zhì)(例如,dvd)、或者半導(dǎo)體介質(zhì)(例如固態(tài)硬盤(solidstatedisk,ssd))等。
以上所述,僅為本申請(qǐng)的具體實(shí)施方式,但本申請(qǐng)的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本申請(qǐng)揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本申請(qǐng)的保護(hù)范圍之內(nèi)。因此,本申請(qǐng)的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。