一種用于軟件定義網(wǎng)絡(luò)sdn的網(wǎng)絡(luò)信息探測的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種用于軟件定義網(wǎng)絡(luò)SDN的網(wǎng)絡(luò)信息探測的方法,屬于信息技術(shù)領(lǐng)域,特別是屬于軟件定義網(wǎng)絡(luò)技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002]軟件定義網(wǎng)絡(luò)(Software Defined Networking, SDN)是一個集中控制網(wǎng)絡(luò),SDN控制器將多個網(wǎng)絡(luò)節(jié)點(diǎn)統(tǒng)一控制起來,可以較容易地獲取網(wǎng)絡(luò)設(shè)備信息、控制網(wǎng)絡(luò)設(shè)備,對應(yīng)用/客戶呈現(xiàn)一個統(tǒng)一的網(wǎng)絡(luò)視圖,其中有交換機(jī),路由器,虛擬機(jī)、存儲、虛擬子網(wǎng)以及用于虛擬子網(wǎng)之間通信的虛擬網(wǎng)關(guān),用戶可以按照自己的網(wǎng)絡(luò)規(guī)劃去配置虛擬機(jī)的IP地址、配置子網(wǎng)以及子網(wǎng)間的路由規(guī)則。SDN的開放定制和集中控制特性,在一定程度上解決了因特網(wǎng)僵化的問題,賦予了用戶自定制網(wǎng)絡(luò)體系和網(wǎng)絡(luò)協(xié)議的能力,用戶在一定程度上可以根據(jù)自己的需求開發(fā)、控制自己的應(yīng)用和硬件平臺,可以自主靈活構(gòu)建私有網(wǎng)絡(luò)。
[0003]但是要實現(xiàn)SDN網(wǎng)絡(luò)的可視性可控性,實現(xiàn)完全支持用戶自主定義個性化的網(wǎng)絡(luò)規(guī)則和控制策略,SDN網(wǎng)絡(luò)的網(wǎng)絡(luò)狀況必須能夠被SDN控制器和用戶感知到,所以如何實現(xiàn)SDN網(wǎng)絡(luò)信息的有效探測成為目前軟件定義網(wǎng)絡(luò)領(lǐng)域急需解決的一個技術(shù)難題。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明的目的是發(fā)明一種方法,實現(xiàn)對軟件定義網(wǎng)絡(luò)SDN的網(wǎng)絡(luò)信息的有效探測,實現(xiàn)SDN網(wǎng)絡(luò)的可視性可控性。為了達(dá)到上述目的,本發(fā)明提出了一種用于軟件定義網(wǎng)絡(luò)SDN的網(wǎng)絡(luò)信息探測的方法,所述方法包括下列操作步驟:
[0005](1)網(wǎng)絡(luò)拓?fù)涮綔y:SDN控制器向與其直接相連的openf low協(xié)議交換機(jī)發(fā)送網(wǎng)絡(luò)拓?fù)涮綔y包,并命令所述的openflow協(xié)議交換機(jī)把收到的網(wǎng)絡(luò)拓?fù)涮綔y包通過其所有端口發(fā)送給與其相連的網(wǎng)絡(luò)設(shè)備上去,所述的SDN控制器通過收集反饋回來的網(wǎng)絡(luò)拓?fù)涮綔y包,計算得到所述的軟件定義網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu);
[0006](2)網(wǎng)絡(luò)時延探測:SDN控制器向與其直接相連的openflow協(xié)議交換機(jī)發(fā)送網(wǎng)絡(luò)時延探測包,所述的SDN控制器通過收集反饋回來的網(wǎng)絡(luò)時延探測包,并基于所得到的軟件定義網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),計算得到相鄰openflow協(xié)議交換機(jī)之間鏈路的時延;
[0007](3)網(wǎng)絡(luò)帶寬探測:SDN控制器預(yù)先向與其直接相連的openflow協(xié)議交換機(jī)發(fā)送專門用于網(wǎng)絡(luò)帶寬探測包轉(zhuǎn)發(fā)和修改的流表,然后再向與其直接相連的openf 1 ow協(xié)議交換機(jī)發(fā)送網(wǎng)絡(luò)帶寬探測包,所述的SDN控制器通過收集反饋回來的網(wǎng)絡(luò)帶寬探測包,并基于所得到的軟件定義網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),計算得到相鄰openflow協(xié)議交換機(jī)之間鏈路的帶寬。
[0008]所述步驟⑴的網(wǎng)絡(luò)拓?fù)涮綔y的內(nèi)容具體包括如下操作子步驟:
[0009](11) SDN控制器通過Packet_out消息將鏈路層發(fā)現(xiàn)協(xié)議LLDP數(shù)據(jù)包發(fā)送到其控制的、與其直接相連的所有openflow協(xié)議交換機(jī),該P(yáng)acket_out消息命令所述的openflow協(xié)議交換機(jī)將所收到的LLDP數(shù)據(jù)包發(fā)送到該openflow協(xié)議交換機(jī)的所有端口上去;
[0010](12)所述的openflow協(xié)議交換機(jī)接收到所述的Packet_out消息后,拆解下該P(yáng)acket_out消息中包含的LLDP數(shù)據(jù)包,并將該LLDP數(shù)據(jù)包通過其所有端口發(fā)送給與其相連的設(shè)備上去;
[0011 ] (13)與所述的openflow協(xié)議交換機(jī)相連的鄰居設(shè)備如果也是openflow協(xié)議交換機(jī)的話,該openflow協(xié)議交換機(jī)收到LLDP數(shù)據(jù)包后,執(zhí)行該LLDP數(shù)據(jù)包與流表項的匹配操作,由于該openflow協(xié)議交換機(jī)中沒有該LLDP數(shù)據(jù)包能匹配上的流表項,根據(jù)流表失配項Table-Miss Flow Entry,該openflow協(xié)議交換機(jī)將通過Packet_in消息把該LLDP數(shù)據(jù)包發(fā)送給所述的SDN控制器;
[0012](14)當(dāng)所述的SDN控制器接收到該P(yáng)acket_in消息后,將對該P(yáng)acket_in消息中的LLDP數(shù)據(jù)包進(jìn)行解析,計算發(fā)現(xiàn)其所控制的并與其直接相連的所有openflow協(xié)議交換機(jī)之間的鄰接關(guān)系,這樣所述的SDN控制器便獲取到了其所在的軟件定義網(wǎng)絡(luò)的完整的拓?fù)浣Y(jié)構(gòu)。
[0013]所述步驟⑵的網(wǎng)絡(luò)時延探測的內(nèi)容具體包括如下操作子步驟:
[0014](21) SDN控制器產(chǎn)生一個預(yù)先設(shè)定的自己能識別出的網(wǎng)絡(luò)時延探測包A,通過Packet_out消息將該網(wǎng)絡(luò)時延探測包A發(fā)送到其所控制的并與其直接相連的openflow協(xié)議交換機(jī)SW1,與此同時所述的SDN控制器獲取當(dāng)前時間TSA ;所述的openflow協(xié)議交換機(jī)SW1接收到所述的Packet_out消息后,拆解下該P(yáng)acket_out消息中所包含的網(wǎng)絡(luò)時延探測包A,并將該網(wǎng)絡(luò)時延探測包通過指定端口發(fā)送給與其鄰接的openflow協(xié)議交換機(jī)SW2 ;所述的openflow協(xié)議交換機(jī)SW2收到所述的網(wǎng)絡(luò)時延探測包A后,發(fā)現(xiàn)沒有與該網(wǎng)絡(luò)時延探測包A能匹配上的流表項,于是根據(jù)流表失配項Table-Miss Flow Entry,所述的openflow協(xié)議交換機(jī)SW2通過Packet_in消息把該網(wǎng)絡(luò)時延探測包A發(fā)送給所述的SDN控制器;所述的SDN控制器接收到該P(yáng)acket_in消息后,解析該P(yáng)acket_in消息中的數(shù)據(jù)包,發(fā)現(xiàn)是網(wǎng)絡(luò)時延探測包A,立刻獲取當(dāng)前時間TRA ;
[0015](22) SDN控制器產(chǎn)生一個預(yù)先設(shè)定的自己能識別出的網(wǎng)絡(luò)時延探測包B,通過Packet_out消息將該網(wǎng)絡(luò)時延探測包B發(fā)送到所述的openflow協(xié)議交換機(jī)SW1,該P(yáng)acket_out消息命令所述的openflow協(xié)議交換機(jī)SW1將收到的網(wǎng)絡(luò)時延探測包B發(fā)回到所述的SDN控制器,與此同時所述的SDN控制器獲取當(dāng)前時間TSB ;所述的openflow協(xié)議交換機(jī)SW1接收到該P(yáng)acket_out消息后,拆解下該P(yáng)acket_out消息中包含的網(wǎng)絡(luò)時延探測包B,發(fā)現(xiàn)沒有與該網(wǎng)絡(luò)時延探測包B能匹配上的流表項,于是根據(jù)流表失配項Table-MissFlow Entry,所述的openflow協(xié)議交換機(jī)SW1通過Packet_in消息把該網(wǎng)絡(luò)時延探測包B發(fā)回給所述的SDN控制器;所述的SDN控制器接收到該P(yáng)acket_in消息后,解析該P(yáng)acket_in消息中的數(shù)據(jù)包,發(fā)現(xiàn)是網(wǎng)絡(luò)時延探測包B,立刻獲取當(dāng)前時間TRB ;
[0016](23) SDN控制器產(chǎn)生一個預(yù)先設(shè)定的自己能識別出的網(wǎng)絡(luò)時延探測包C,通過Packet_out消息將該網(wǎng)絡(luò)時延探測包C發(fā)送到所述的openflow協(xié)議交換機(jī)SW2,該P(yáng)acket_out消息命令所述的openflow協(xié)議交換機(jī)SW2將收到的網(wǎng)絡(luò)時延探測包C發(fā)回到所述的SDN控制器,與此同時所述的SDN控制器獲取當(dāng)前時間TSC ;所述的openflow協(xié)議交換機(jī)SW2接收到該P(yáng)acket_out消息后,拆解下該P(yáng)acket_out消息中包含的網(wǎng)絡(luò)時延探測包C,發(fā)現(xiàn)沒有與該網(wǎng)絡(luò)時延探測包C能匹配上的流表項,于是根據(jù)流表失配項Table-MissFlow Entry,所述的openflow協(xié)議交換機(jī)SW2通過Packet_in消息把該網(wǎng)絡(luò)時延探測包C發(fā)回給所述的SDN控制器;所述的SDN控制器接收到該P(yáng)acket_in消息后,解析該P(yáng)acket_in消息中的數(shù)據(jù)包,發(fā)現(xiàn)是網(wǎng)絡(luò)時延探測包C,立刻獲取當(dāng)前時間TRC ;
[0017](24)所述的SDN控制器按照下式計算得到所述的openflow協(xié)議交換機(jī)SW1和SW2之間鏈路的時延 T,T = TRA-TSA-0.5X (TRB-TSB+TRC-TSC)。
[0018]所述步驟(3)的網(wǎng)絡(luò)帶寬探測的內(nèi)容具體包括如下操作子步驟:
[0019](31) SDN控制器向其所控制的并與其直接相連的openflow協(xié)議交換機(jī)SW1下發(fā)能夠?qū)⒕W(wǎng)絡(luò)帶寬探測包連續(xù)轉(zhuǎn)發(fā)兩次的流表;SDN控制器向其所控制的并與其直接相連的openflow協(xié)議交換機(jī)SW2下發(fā)能夠?qū)⒕W(wǎng)絡(luò)帶寬探測包中的IP地址字段填充為時間并把該網(wǎng)絡(luò)帶寬探測包提交給所述的SDN控制器的流表;所述的openflow協(xié)議交換機(jī)SW1和SW2屬于鄰接關(guān)系;
[0020](32)所述的SDN控制器產(chǎn)生一個長度為L的網(wǎng)絡(luò)帶寬探測包,該網(wǎng)絡(luò)帶寬探測包具有特定的MAC地址和特殊的TTL值,所述的SDN控制器通過Packet_out消息將該網(wǎng)絡(luò)帶寬探測包發(fā)送到所述的openflow協(xié)議交換機(jī)SW1 ;其中L為大于等于1的自然數(shù);
[0021](33)所述的openflow協(xié)議交換機(jī)SW1接收到該P(yáng)acket_out消息后,拆解下該P(yáng)acket_out消息中包含的網(wǎng)絡(luò)帶寬探測包,匹配上先前所收到的由所述的SDN下發(fā)的將網(wǎng)絡(luò)帶寬探測包連續(xù)轉(zhuǎn)發(fā)兩次的流表,將該網(wǎng)絡(luò)帶寬探測包連續(xù)兩次無間隔的發(fā)送到所述的openflow協(xié)議交換機(jī)SW2 ;
[0022](34)所述的openflow協(xié)議交換機(jī)SW2接收到由所述的openflow協(xié)議交換機(jī)SW1發(fā)來的網(wǎng)絡(luò)帶寬探測包