本發(fā)明涉及軟件定義衛(wèi)星網(wǎng)絡(luò)(Software Defined Satellite Network,SDSN)領(lǐng)域,特別是改善軟件定義衛(wèi)星網(wǎng)絡(luò)中節(jié)點(diǎn)資源發(fā)現(xiàn)的時(shí)效性問題。
背景技術(shù):
資源發(fā)現(xiàn)包括鏈路發(fā)現(xiàn)和資源收集兩個(gè)過程。鏈路發(fā)現(xiàn)是網(wǎng)絡(luò)拓?fù)渲械闹匾囊徊糠郑琴Y源發(fā)現(xiàn)的基礎(chǔ),提供了最基本的網(wǎng)絡(luò)資源信息(鏈路通斷信息、節(jié)點(diǎn)信息等)。在鏈路發(fā)現(xiàn)層面上,軟件定義衛(wèi)星網(wǎng)絡(luò)中網(wǎng)絡(luò)拓?fù)淇蓮娜齻€(gè)層次來(lái)描述:鏈路層拓?fù)洹⒕W(wǎng)絡(luò)層拓?fù)浜透采w層拓?fù)?,并從IP接口、路由器、自治系統(tǒng)和入網(wǎng)點(diǎn)(Point of Presence,POP)四個(gè)層次分析了網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)的機(jī)制。
鏈路發(fā)現(xiàn)的標(biāo)準(zhǔn)為鏈路發(fā)現(xiàn)協(xié)議(Link Layer Discovery Protocol,LLDP)。通過LLDP標(biāo)準(zhǔn)協(xié)議,AP將本地LLDP信息通過標(biāo)準(zhǔn)LLDP TLV(type length value類型長(zhǎng)度值)定期向鄰居發(fā)送組播報(bào)文。如果鄰居AP也使用了LLDP功能,則對(duì)方建立鄰居關(guān)系,如果AP上行口連接的是交換機(jī)(具有LLDP功能的設(shè)備),同時(shí)該交換機(jī)使能了LLDP功能,則交換機(jī)也將是AP的鄰居,AP將向交換機(jī)發(fā)送LLDP信息,同時(shí)接受交換機(jī)發(fā)送的LLDP組播報(bào)文。網(wǎng)管通過SNMP協(xié)議獲取AP的LLDP信息,維護(hù)拓?fù)湫畔ⅰ?/p>
鏈路發(fā)現(xiàn)不能提供衛(wèi)星網(wǎng)絡(luò)節(jié)點(diǎn)中的計(jì)算能力,存儲(chǔ)能力等信息,需要其他的方法來(lái)獲取。在以前的研究中,主要使用如下的一些思想方法來(lái)解決資源收集的問題:
傳統(tǒng)逐跳路由軟件定義網(wǎng)中,控制器向所有已發(fā)現(xiàn)的節(jié)點(diǎn)下發(fā)資源收集packet-out包,同時(shí)向已激活的節(jié)點(diǎn)周期性的收集資源數(shù)據(jù),這導(dǎo)致了控制器的網(wǎng)絡(luò)資源和計(jì)算資源的大量消耗,在猶豫衛(wèi)星網(wǎng)絡(luò)空間環(huán)境的特殊性,容易導(dǎo)致丟包,鏈路失效等問題,大量資源的packet-in包可能導(dǎo)致的排隊(duì)現(xiàn)象,導(dǎo)致了傳統(tǒng)軟件定義衛(wèi)星網(wǎng)絡(luò)中的資源發(fā)現(xiàn)的延遲大,時(shí)效性不高。
使用分簇的方法在雙層衛(wèi)星網(wǎng)絡(luò)中,將低緯度地區(qū)的地軌衛(wèi)星作為簇頭節(jié)點(diǎn),收集本簇內(nèi)所有節(jié)點(diǎn)的衛(wèi)星資源,以達(dá)到節(jié)省資源收集信息收斂時(shí)間。但是這種方法需要不定時(shí)的更換簇頭節(jié)點(diǎn),對(duì)控制器右路選擇的要求和全局視圖的實(shí)時(shí)性要求比較高;使用一定代理的方法則是利用地面網(wǎng)中的移動(dòng)代理的概念,不受軟件定義衛(wèi)星網(wǎng)絡(luò)中集中控制器的控制,而是自發(fā)的在各個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)中自主移動(dòng),收集節(jié)點(diǎn)的資源信息,實(shí)時(shí)發(fā)送至集中控制器。但是這種移動(dòng)代理的方式需要自主的在網(wǎng)絡(luò)中游走,而且比較占節(jié)點(diǎn)的計(jì)算和存儲(chǔ)資源,對(duì)節(jié)點(diǎn)的通信能力是一種很大的消耗,又因?yàn)橐苿?dòng)代理獨(dú)立于網(wǎng)絡(luò)中,對(duì)控制器的全局控制是一種很大的考驗(yàn)。
衛(wèi)星鏈路延時(shí)長(zhǎng)、帶寬受限、誤碼高及網(wǎng)絡(luò)拓?fù)渥兓l繁等特點(diǎn),使得SDN控制面獲取全網(wǎng)信息更加困難。在軟件定義衛(wèi)星網(wǎng)絡(luò)中資源發(fā)現(xiàn)問題的挑戰(zhàn)與鏈路發(fā)現(xiàn)的問題相類似,主要是空間網(wǎng)絡(luò)環(huán)境中,鏈路通斷和丟包的判斷;鏈路時(shí)延長(zhǎng),資源信息收斂慢,導(dǎo)致資源收集的時(shí)效性降低,使SDN控制面獲得準(zhǔn)確有效的全網(wǎng)資源信息更加困難,影響路由選擇和軟件定義衛(wèi)星網(wǎng)的控制器資源分配控制。
根據(jù)種種資源發(fā)現(xiàn)的方法的特點(diǎn)和軟件定義衛(wèi)星網(wǎng)絡(luò)的特性,本申請(qǐng)利用源路由的思想,并對(duì)源路由進(jìn)行軟件定義衛(wèi)星網(wǎng)絡(luò)的優(yōu)化,來(lái)適應(yīng)空間新希望中的延遲,時(shí)效性的問題。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)衛(wèi)星網(wǎng)絡(luò)的網(wǎng)絡(luò)延遲大,動(dòng)態(tài)拓?fù)涞奶匦?,本發(fā)明提出一種面向軟件定義衛(wèi)星網(wǎng)絡(luò)的資源發(fā)現(xiàn)優(yōu)化方法,適應(yīng)衛(wèi)星網(wǎng)絡(luò)化的發(fā)展,能夠在SDN的控制框架下,優(yōu)化資源發(fā)現(xiàn)的時(shí)效性問題。
為解決上述技術(shù)問題,本發(fā)明的技術(shù)方案為:軟件定義衛(wèi)星網(wǎng)絡(luò)中基于LLDP的鏈路發(fā)現(xiàn)優(yōu)化方法,包括以下步驟:
步驟1:各交換機(jī)分別與控制器建立連接后,與控制器進(jìn)行信息交互;所述的信息交互為:控制器向各交換機(jī)發(fā)送特性獲取請(qǐng)求消息,各交換機(jī)隨后分別向控制器發(fā)送特性回復(fù)消息;特性回復(fù)消息包含該交換機(jī)的所有端口號(hào)和端口MAC地址;
步驟2:控制器給所有的交換機(jī)安裝流表;所述的流表用于告訴該交換機(jī)當(dāng)收到控制器發(fā)送的數(shù)據(jù)包轉(zhuǎn)發(fā)消息后,將該數(shù)據(jù)包轉(zhuǎn)發(fā)消息中的LLDP數(shù)據(jù)包向本交換機(jī)的所有端口發(fā)送出去,并將LLDP數(shù)據(jù)包的源MAC字段設(shè)置為發(fā)出端口的MAC地址;
步驟3:控制器向所有交換機(jī)均發(fā)送一個(gè)數(shù)據(jù)包轉(zhuǎn)發(fā)消息,將接收數(shù)據(jù)包轉(zhuǎn)發(fā)消息的交換機(jī)作為源交換機(jī);所述的數(shù)據(jù)包轉(zhuǎn)發(fā)消息包括LLDP數(shù)據(jù)包,LLDP數(shù)據(jù)包包括源交換機(jī)、源MAC地址和源端口號(hào);
步驟4:各源交換機(jī)接收到數(shù)據(jù)包轉(zhuǎn)發(fā)消息后,將LLDP數(shù)據(jù)包復(fù)制并向其所有端口發(fā)出,并將LLDP數(shù)據(jù)包中的源MAC地址設(shè)置為發(fā)出端口的MAC地址;
步驟5:其他交換機(jī)收到源交換機(jī)發(fā)送的LLDP數(shù)據(jù)包后,將鏈路信息保存至LLDP數(shù)據(jù)包后發(fā)送數(shù)據(jù)包接收消息至控制器;所述的數(shù)據(jù)包接收消息包括帶有鏈路信息的LLDP數(shù)據(jù)包、目的交換機(jī)和目的端口號(hào);
步驟6:控制器解析LLDP數(shù)據(jù)包接收消息中的源MAC地址并查詢?cè)撛碝AC地址對(duì)應(yīng)的端口號(hào),獲取該鏈路的源交換機(jī)和源端口號(hào);
完成軟件定義衛(wèi)星網(wǎng)絡(luò)中的一次鏈路發(fā)現(xiàn)過程,獲取軟件定義衛(wèi)星網(wǎng)絡(luò)的全局網(wǎng)絡(luò)拓?fù)鋱D。
其中,計(jì)算衛(wèi)星場(chǎng)景的周期性,找出軟件定義衛(wèi)星網(wǎng)絡(luò)拓?fù)渥兓淖钚r(shí)間間隔,將該最小時(shí)間間隔作為鏈路發(fā)現(xiàn)周期。
其中,當(dāng)有交換機(jī)的端口發(fā)生改變時(shí),交換機(jī)向控制器發(fā)送端口變化消息;控制器收到端口變化消息后立即對(duì)該端口發(fā)起單獨(dú)的鏈路發(fā)現(xiàn);所述的端口改變包括端口修改、端口增加和端口刪除;所述的單獨(dú)的鏈路發(fā)現(xiàn)為控制器向該端口單獨(dú)連續(xù)發(fā)送LLDP數(shù)據(jù)包。
其中,步驟4之后還包括步驟:
步驟41:每個(gè)交換機(jī)維護(hù)一個(gè)端口集合,將已發(fā)送LLDP數(shù)據(jù)包的端口添加到端口集合中,并記錄每個(gè)端口的發(fā)包次數(shù);
步驟42:經(jīng)鏈路檢測(cè)時(shí)間間隔后,檢查端口集合中的端口的發(fā)包次數(shù);如果發(fā)包次數(shù)大于0且小于等于預(yù)設(shè)次數(shù),則對(duì)該端口重新發(fā)送LLDP數(shù)據(jù)包,并將該端口的發(fā)包次數(shù)加1;如果發(fā)包次數(shù)大于預(yù)設(shè)次數(shù),則說明以該端口為源端的鏈路已經(jīng)失效,將該鏈路從軟件定義衛(wèi)星網(wǎng)絡(luò)的全局網(wǎng)絡(luò)拓?fù)鋱D中刪除;所述的端口集合用于記錄已發(fā)送LLDP數(shù)據(jù)包的端口以及每個(gè)端口的發(fā)包次數(shù)。
一種針對(duì)軟件定義衛(wèi)星網(wǎng)絡(luò)的節(jié)點(diǎn)資源發(fā)現(xiàn)策略優(yōu)化方法,其特征在于,包括鏈路發(fā)現(xiàn)優(yōu)化方法和資源收集優(yōu)化方法。
其中,所述的資源收集優(yōu)化方法基于支持源路由的OpenFlow交換機(jī)和軟件定義衛(wèi)星網(wǎng)絡(luò)的集中控制,通過源路由來(lái)減小或者消除路由狀態(tài)更新帶來(lái)的延遲和網(wǎng)絡(luò)資源消耗。
其中,所述的資源收集優(yōu)化方法具體包括以下步驟:
步驟1:控制器利用路由深度算法,在全局網(wǎng)絡(luò)拓?fù)鋱D中選擇一條路徑,所述的路徑能盡可能多的遍歷網(wǎng)絡(luò)拓?fù)渲械男l(wèi)星節(jié)點(diǎn);
步驟2:控制器向起始交換機(jī)發(fā)送添加有資源收集匹配域的流表;所述的流表用于告訴起始交換機(jī),當(dāng)收到控制器發(fā)送的專門用于資源發(fā)現(xiàn)的數(shù)據(jù)包轉(zhuǎn)發(fā)信息后,將該衛(wèi)星節(jié)點(diǎn)的計(jì)算存儲(chǔ)信息收集到數(shù)據(jù)包中,并將添加有計(jì)算存儲(chǔ)信息的數(shù)據(jù)包從路徑信息中下一跳的端口發(fā)送出去;
步驟3:控制器向起始衛(wèi)星節(jié)點(diǎn)發(fā)送專門用于資源發(fā)現(xiàn)的數(shù)據(jù)包轉(zhuǎn)發(fā)信息;所述的數(shù)據(jù)包轉(zhuǎn)發(fā)信息的包頭中包含路徑信息;所述的路徑信息包括該條路徑中所有衛(wèi)星節(jié)點(diǎn)的計(jì)算資源信息、存儲(chǔ)資源信息、網(wǎng)絡(luò)鏈路狀態(tài)信息、交換機(jī)的端口號(hào)和端口MAC地址;
步驟4:起始衛(wèi)星節(jié)點(diǎn)收到數(shù)據(jù)包轉(zhuǎn)發(fā)信息后,將數(shù)據(jù)包轉(zhuǎn)發(fā)信息與添加有資源收集匹配域的流表進(jìn)行匹配,如果相匹配,則收集該衛(wèi)星節(jié)點(diǎn)的計(jì)算資源信息和存儲(chǔ)資源信息,收集完成后節(jié)點(diǎn)跳數(shù)加1并根據(jù)路徑信息將數(shù)據(jù)收集后的數(shù)據(jù)包在該衛(wèi)星節(jié)點(diǎn)的指定端口進(jìn)行轉(zhuǎn)發(fā);
步驟5:起始節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)收集后的數(shù)據(jù)包到中間節(jié)點(diǎn);
步驟6:中間節(jié)點(diǎn)收集該衛(wèi)星節(jié)點(diǎn)的計(jì)算資源信息和存儲(chǔ)資源信息,收集完成后節(jié)點(diǎn)跳數(shù)加1并根據(jù)路徑信息將數(shù)據(jù)收集后的數(shù)據(jù)包在該衛(wèi)星節(jié)點(diǎn)的指定端口進(jìn)行轉(zhuǎn)發(fā);
步驟7:重復(fù)步驟6直至路徑信息的最后一個(gè)衛(wèi)星節(jié)點(diǎn)執(zhí)行完畢,最后一個(gè)衛(wèi)星節(jié)點(diǎn)向控制器返回該路徑信息的全部數(shù)據(jù)收集完成后的數(shù)據(jù)包。
本發(fā)明相比背景技術(shù)的優(yōu)點(diǎn)在于:
(1)優(yōu)化LLDP協(xié)議,減少Packet-out消息、加大鏈路發(fā)現(xiàn)周期、優(yōu)化鏈路丟包和鏈路失效的應(yīng)對(duì)策略,提高軟件定義衛(wèi)星網(wǎng)絡(luò)中的拓?fù)湫畔⒏碌膶?shí)時(shí)性和動(dòng)態(tài)性。在軟件定義衛(wèi)星網(wǎng)絡(luò)中,拓?fù)鋭?dòng)態(tài)改變,鏈路發(fā)生切換時(shí),減小控制器判斷丟包,鏈路時(shí)效的延遲。
(2)利用源路由的思想,添加OpenFlow的匹配域,減少網(wǎng)絡(luò)中設(shè)置流表的收斂時(shí)間,減少資源收集packet-out信息的個(gè)數(shù),減輕網(wǎng)絡(luò)資源和控制器的負(fù)載。
附圖說明
圖1為本發(fā)明基于雙層軟件定義衛(wèi)星網(wǎng)絡(luò)的網(wǎng)絡(luò)物理拓?fù)鋱D;
圖2為本發(fā)明的基于LLDP鏈路發(fā)現(xiàn)示意圖;
圖3為本發(fā)明的鏈路發(fā)現(xiàn)過程信息交互圖;
圖4為本發(fā)明的鏈路失效丟包策略流程圖;
圖5為本發(fā)明軟件定義衛(wèi)星網(wǎng)絡(luò)物理拓?fù)鋱D;
圖6為本發(fā)明資源收集優(yōu)化流程圖。
具體實(shí)施方案
為了便于本領(lǐng)域普通技術(shù)人員理解和實(shí)施本發(fā)明,下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)描述,應(yīng)當(dāng)理解,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。
本發(fā)明的技術(shù)方案包括兩部分。第一部分,為衛(wèi)星網(wǎng)絡(luò)中的拓?fù)浒l(fā)現(xiàn),通過優(yōu)化LLDP協(xié)議,減少Packet-out消息、加大鏈路發(fā)現(xiàn)周期、優(yōu)化鏈路丟包和鏈路失效的應(yīng)對(duì)策略,進(jìn)而提高軟件定義衛(wèi)星網(wǎng)絡(luò)中的拓?fù)湫畔⒏碌膶?shí)時(shí)性和動(dòng)態(tài)性。若在軟件定義衛(wèi)星網(wǎng)絡(luò)中,拓?fù)鋭?dòng)態(tài)改變,鏈路發(fā)生切換時(shí),利用改進(jìn)后的協(xié)議,減小控制器判斷丟包,鏈路時(shí)效的延遲。
第二部分,利用第一部分的鏈路發(fā)現(xiàn)的優(yōu)化和源路由的思想,在獲得了實(shí)時(shí)性較高的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)之后,在OpenFlow流表的匹配域中添加新域來(lái)實(shí)現(xiàn)源路由思想的路由轉(zhuǎn)發(fā)方法,轉(zhuǎn)發(fā)資源收集packet-out包,匹配之后執(zhí)行相應(yīng)的action,實(shí)現(xiàn)每個(gè)節(jié)點(diǎn)的計(jì)算、存儲(chǔ)資源的收集,和優(yōu)化的源路由轉(zhuǎn)發(fā)策略。使控制器只用下發(fā)一個(gè)packet-out信息到初始節(jié)點(diǎn)就可能最大程度的收集網(wǎng)絡(luò)中的節(jié)點(diǎn)資源信息,在擁有時(shí)效性強(qiáng)的網(wǎng)絡(luò)全局視圖之下,減小下發(fā)的周期和網(wǎng)絡(luò)資源的消耗,保持資源數(shù)據(jù)的時(shí)效性。
源路由是一種基于源地址進(jìn)行路由選擇的策略,可以實(shí)現(xiàn)根據(jù)多個(gè)不同子網(wǎng)或內(nèi)網(wǎng)地址,有選擇性地將數(shù)據(jù)包發(fā)往不同目的地址的功能。源路由可以分為兩類,一類是嚴(yán)格源路由選項(xiàng)(Strict Source Route),一類是松散源路由選項(xiàng)(Loose Source Route)。
嚴(yán)格源路由選項(xiàng):規(guī)定IP數(shù)據(jù)報(bào)要經(jīng)過路徑上的每一個(gè)路由器,相鄰路由器之間不得有中間路由器,并且所經(jīng)過的路由器的順序不可更改。松散源路由選項(xiàng):只是給出IP數(shù)據(jù)報(bào)必須經(jīng)過的一些“要點(diǎn)”,并不給出一條完備的路徑,無(wú)直接連接的路由器之間的路由尚需IP軟件的尋址功能補(bǔ)充。
先從源路由如何向連接在外地鏈路上的移動(dòng)節(jié)點(diǎn)發(fā)送數(shù)據(jù)包開始。IP版本4在IP報(bào)頭中定義了一個(gè)可選項(xiàng):Loose Source and Record Route Option。這個(gè)可選項(xiàng)列出了一個(gè)或多個(gè)中間目的地址,要求數(shù)據(jù)包在到達(dá)最終的目的地址前必須經(jīng)過這幾個(gè)中間地址。
例如,考慮一臺(tái)源主機(jī)要向一臺(tái)目的主機(jī)發(fā)送數(shù)據(jù)包,但它還想讓數(shù)據(jù)包經(jīng)過從源到目的地的路徑上的一臺(tái)特定路由器,這臺(tái)源主機(jī)將“下一個(gè)中間目的”地址,即那臺(tái)路由器的地址,放在目的IP地址域中,而將目的主機(jī)的IP地址放在Loose Source and Record Route Option中,這時(shí),數(shù)據(jù)包將按網(wǎng)絡(luò)前綴路由被送到目的IP地址域中標(biāo)示的那臺(tái)路由器上。
當(dāng)那臺(tái)路由器接收到數(shù)據(jù)包后,它檢查可選項(xiàng),發(fā)現(xiàn)自己只是一個(gè)中間目的地,于是,將Loose Source and Record Route Option中所指示的地址取出,也就是將目的主機(jī)的地址取出,然后將數(shù)據(jù)包送給去往目的主機(jī)的下一跳地址。在轉(zhuǎn)發(fā)該數(shù)據(jù)包前,路由器將自己的IP地址記錄在Loose Source and Record Route Option中,實(shí)際上記錄的是它將數(shù)據(jù)包轉(zhuǎn)發(fā)出去的那個(gè)端口的IP地址。
當(dāng)數(shù)據(jù)包到達(dá)目的主機(jī)時(shí),目的主機(jī)檢查可選項(xiàng),發(fā)現(xiàn)自己就是包的最終目的地,因此目的主機(jī)將數(shù)據(jù)包送交IP協(xié)議域所指示的高層協(xié)議處理。IP報(bào)頭中定義的這個(gè)可選項(xiàng)還要求當(dāng)目的主機(jī)對(duì)源主機(jī)進(jìn)行回答時(shí),也要在它的數(shù)據(jù)包中包含Loose Source and Record Route Option。當(dāng)然,目的主機(jī)應(yīng)包含的是“反向”的源路由。在這個(gè)例子中,目的主機(jī)在向原來(lái)的源主機(jī)發(fā)送數(shù)據(jù)包時(shí),會(huì)在Loose Source and Record Route Option中包含作為中間目的地的那臺(tái)路由器的地址。
本發(fā)明的詳細(xì)技術(shù)方案為:
Ⅰ、軟件定義衛(wèi)星網(wǎng)絡(luò)中基于LLDP的鏈路發(fā)現(xiàn)優(yōu)化方法,具體包括減少Packet-out消息、加大鏈路發(fā)現(xiàn)周期、優(yōu)化鏈路丟包和鏈路失效的應(yīng)對(duì)策略。
(1)減少packet-out消息:由原來(lái)的控制器向每個(gè)交換機(jī)端口發(fā)送一個(gè)數(shù)據(jù)包轉(zhuǎn)發(fā)消息(packet-out消息)減少為向每個(gè)交換機(jī)發(fā)送一個(gè)packet-out消息。實(shí)現(xiàn)這個(gè)需求需要滿足兩個(gè)條件:a、OpenFlow交換機(jī)能將來(lái)自控制器的LLDP數(shù)據(jù)包向每個(gè)端口復(fù)制發(fā)送一份;b、OpenFlow交換機(jī)能修改LLDP數(shù)據(jù)包中的某個(gè)字段以便標(biāo)識(shí)數(shù)據(jù)包從哪個(gè)端口發(fā)出。具體過稱為:
步驟1:各OpenFlow交換機(jī)和控制器建立SSL/TLS連接后,控制器對(duì)各OpenFlow交換機(jī)發(fā)起鏈路發(fā)現(xiàn)過程的信息交互。
信息交互過程為:控制器向交換機(jī)發(fā)送特性獲取請(qǐng)求消息(OFPT_FEATURES_REQUEST消息),交換機(jī)隨后回復(fù)特性回復(fù)消息(OFPT_FEATURES_REPLY消息),其中OFPT_FEATURES_REPLY消息包含該OpenFlow交換機(jī)的端口號(hào)、端口MAC地址等信息。
這樣控制器保存了所有OpenFlow交換機(jī)端口號(hào)和其MAC地址的映射信息。
步驟2:控制器給所有的OpenFlow交換機(jī)安裝流表;該流表告訴交換機(jī)什么樣的數(shù)據(jù)包進(jìn)入交換機(jī)執(zhí)行什么樣的動(dòng)作(轉(zhuǎn)發(fā),回傳,丟棄等),當(dāng)收到控制器發(fā)送的LLDP數(shù)據(jù)包后,將該數(shù)據(jù)包從所有端口發(fā)送出去,并將LLDP源MAC字段設(shè)置為發(fā)出端口的MAC地址。
步驟3:控制器向所有的OpenFlow交換機(jī)發(fā)送數(shù)據(jù)包轉(zhuǎn)發(fā)消息(Packet-Out消息),將接收數(shù)據(jù)包轉(zhuǎn)發(fā)消息的OpenFlow交換機(jī)作為源交換機(jī);所述的數(shù)據(jù)包轉(zhuǎn)發(fā)消息包括LLDP數(shù)據(jù)包,LLDP數(shù)據(jù)包包括源交換機(jī)、源MAC地址和源端口號(hào)。
步驟4:各源交換機(jī)接收到該P(yáng)acket-Out消息后,將LLDP數(shù)據(jù)包復(fù)制并向其所有端口發(fā)出,并將LLDP數(shù)據(jù)包中的源MAC設(shè)置為發(fā)出端口的MAC。
LLDP協(xié)議在實(shí)現(xiàn)中,就是交換機(jī)收到LLDP數(shù)據(jù)包之后,流表匹配到是LLDP數(shù)據(jù)包,執(zhí)行相應(yīng)的action,通過本交換機(jī)的所有端口發(fā)出。如果沒有鏈路,LLDP數(shù)據(jù)包丟失,控制機(jī)不會(huì)收到LLDP數(shù)據(jù)包的packet-in消息;如果有鏈路,則鏈路信息保存至LLDP包中,通過下一跳交換機(jī)返回至控制器。
步驟5:其他交換機(jī)接收到LLDP數(shù)據(jù)包后,通過數(shù)據(jù)包接收消息(Packet-In消息)發(fā)送給控制器。
步驟6:控制器解析LLDP數(shù)據(jù)包中的源MAC地址再查詢?cè)揗AC地址對(duì)應(yīng)的端口號(hào),從而獲取該鏈路的源交換機(jī)和源端口號(hào);而目的交換機(jī)和目的端口號(hào)通過Packet-In消息中的元數(shù)據(jù)獲得。
完成軟件定義衛(wèi)星網(wǎng)絡(luò)中的一次鏈路發(fā)現(xiàn)過程,獲取軟件定義衛(wèi)星網(wǎng)絡(luò)的全局網(wǎng)絡(luò)拓?fù)鋱D。
實(shí)施例:如圖2所示,在該拓?fù)渲蠴penFlow交換機(jī)1的Port1和OpenFlow交換機(jī)2的Port3存在鏈路。鏈路發(fā)現(xiàn)的具體過程如3圖所示:a)OpenFlow交換機(jī)1與控制器建立連接,控制器對(duì)OpenFlow交換機(jī)1發(fā)起鏈路發(fā)現(xiàn)過程的信息交互;b)控制器給OpenFlow交換機(jī)1安裝流表;c)控制器向OpenFlow交換機(jī)1發(fā)送Packet-Out消息;d)OpenFlow交換機(jī)1接收到該P(yáng)acket-Out消息后,將LLDP數(shù)據(jù)包向其所有端口發(fā)出,并將LLDP中的源MAC設(shè)置為端口的MAC;e)OpenFlow交換機(jī)2接收到LLDP數(shù)據(jù)包后,通過Packet-In消息發(fā)送給控制器;f)控制器解析LLDP數(shù)據(jù)包中的源MAC地址再查詢?cè)揗AC地址對(duì)應(yīng)的端口號(hào),從而獲取該鏈路的源交換機(jī)和源端口號(hào);而目的交換機(jī)和目的端口號(hào)通過Packet-In消息中的元數(shù)據(jù)獲得。
最終交換機(jī)1和交換機(jī)2之間的鏈路被發(fā)現(xiàn)。控制器對(duì)每個(gè)交換機(jī)發(fā)起上述操作,對(duì)整個(gè)網(wǎng)絡(luò)完成一次鏈路發(fā)現(xiàn)。
(2)加大鏈路發(fā)現(xiàn)周期:針對(duì)衛(wèi)星網(wǎng)絡(luò),雖然網(wǎng)絡(luò)經(jīng)常動(dòng)態(tài)改變,但具有較強(qiáng)的周期性。通過STK對(duì)衛(wèi)星場(chǎng)景進(jìn)行計(jì)算,研究其周期性,找出網(wǎng)絡(luò)拓?fù)渥兓淖钚r(shí)間間隔作為鏈路發(fā)現(xiàn)周期,既可以適當(dāng)加大鏈路發(fā)現(xiàn)周期,又能保證拓?fù)渥兓筝^為及時(shí)的更新拓?fù)湫畔ⅰ?/p>
實(shí)施例:
在OpenFlow協(xié)議中,因?yàn)殒溌窋嚅_或者丟失使得交換機(jī)端口修改、端口增加或者端口刪除時(shí),交換機(jī)需要向控制器發(fā)送端口變化消息(OFPT_PORT_STATUS消息)。當(dāng)有交換機(jī)端口發(fā)生改變時(shí),立即對(duì)該端口單獨(dú)連續(xù)發(fā)送LLDP數(shù)據(jù)包,這樣即使增大了控制器對(duì)整個(gè)網(wǎng)絡(luò)的鏈路發(fā)現(xiàn)周期,但對(duì)于交換機(jī)端口改變引起的鏈路改變也能及時(shí)發(fā)現(xiàn)。
(3)鏈路丟包和鏈路失效優(yōu)化策略,針對(duì)鏈路丟包導(dǎo)致鏈路發(fā)現(xiàn)和鏈路失效檢測(cè)不及時(shí)的問題,本申請(qǐng)通過對(duì)鏈路發(fā)現(xiàn)加入丟包檢測(cè)和快速重傳機(jī)制來(lái)解決。
實(shí)施例:
如圖4中SDN控制器對(duì)所有已注冊(cè)的交換機(jī)發(fā)起鏈路發(fā)現(xiàn)過程,向所有的交換機(jī)發(fā)送Packet-Out+LLDP消息。
交換機(jī)接收到Packet-Out+LLDP后,將LLDP向每個(gè)正常工作的端口轉(zhuǎn)發(fā)LLDP,并將LLDP中源MAC字段置為端口的MAC地址。
每個(gè)交換機(jī)維護(hù)一個(gè)集合ports_sent,記錄已發(fā)送LLDP數(shù)據(jù)包的端口和發(fā)包次數(shù)N。
經(jīng)過時(shí)間T_c(鏈路檢測(cè)時(shí)間間隔)后,檢查ports_sent集合中的端口的LLDP發(fā)包次數(shù)N,若0<N≤5,則說明出現(xiàn)LLDP發(fā)出后T_c時(shí)間內(nèi)沒有收到,則立即對(duì)該端口重新發(fā)送LLDP數(shù)據(jù)包,并將該端口發(fā)包次數(shù)加1;若N>5,說明從該端口發(fā)出的LLDP已經(jīng)丟失超過5次,判斷以該端口為源端的鏈路已經(jīng)失效,將該鏈路從拓?fù)渲袆h除。
經(jīng)過鏈路發(fā)現(xiàn)周期T秒后,對(duì)所有交換機(jī)發(fā)起新的一次鏈路發(fā)現(xiàn)過程。
Ⅱ、軟件定義衛(wèi)星網(wǎng)絡(luò)中基于源路由思想的資源收集優(yōu)化方法,具體步驟如下:
步驟1:當(dāng)控制器利用優(yōu)化的LLDP協(xié)議獲得全局網(wǎng)絡(luò)拓?fù)湟晥D之后,利用路由深度算法,選擇合適的路徑盡可能多的遍歷網(wǎng)絡(luò)中的衛(wèi)星節(jié)點(diǎn)。
步驟2:起始交換機(jī)與控制器建立連接,并進(jìn)行信息交互后,起始交換機(jī)更新流表,該流表告訴交換機(jī),當(dāng)收到控制器發(fā)送的專門用于資源發(fā)現(xiàn)的packet-out消息后,將該節(jié)點(diǎn)的計(jì)算存儲(chǔ)信息收集到數(shù)據(jù)包中,并將數(shù)據(jù)包從序列中下一跳的端口發(fā)送出去。
起始交換機(jī)和控制器建立SSL/TLS連接,控制器會(huì)向交換機(jī)發(fā)送FEATURES_REQUEST消息請(qǐng)求,交換機(jī)隨后回復(fù)FEATURES_REPLY消息,其中包含該交換機(jī)的端口號(hào)、端口MAC地址等信息。
流表的構(gòu)成為:匹配域,action和計(jì)數(shù)器,匹配域用來(lái)判斷是什么消息;action用來(lái)告訴交換機(jī)執(zhí)行什么動(dòng)作。
實(shí)施例:控制器會(huì)向交換機(jī)發(fā)送消息請(qǐng)求,并將路徑信息嵌入在專門進(jìn)行資源發(fā)現(xiàn)的packet-out包頭中。這里的路徑信息用節(jié)點(diǎn)的跳數(shù)和一個(gè)端口號(hào)的序列表示。
這里使用優(yōu)化后的源路由的方法,因?yàn)樵跀?shù)據(jù)包轉(zhuǎn)發(fā)的路徑當(dāng)中,選定的路徑為(X,1,2,4,3,5,Y),也可以表示為經(jīng)過的端口號(hào)的隊(duì)列。在圖5中,從NODE X到NODE Y的路徑就可以表示為(1,2,2,2,2,3),這個(gè)隊(duì)列的意思就是數(shù)據(jù)包從起始節(jié)點(diǎn)的1號(hào)端口下發(fā),到達(dá)下一跳節(jié)點(diǎn)之后,再?gòu)?號(hào)端口下發(fā)到下一跳節(jié)點(diǎn),以此類推,用數(shù)據(jù)包下發(fā)的端口號(hào)和跳數(shù)來(lái)表示整條數(shù)據(jù)流經(jīng)的路徑。在圖5中,使用優(yōu)化的源路由的方法生成用端口號(hào)和跳數(shù)表示的路由狀態(tài)信息來(lái)表示從NODE X到NODE Y的路徑(1,2,2,2,2,3),替換原來(lái)的用交換機(jī)流表表示的路由信息。
跟原始的逐條的下發(fā)方式不同,這種源路由的方法只需要想起始節(jié)點(diǎn)下發(fā)帶有更新路由狀態(tài)信息的包頭,這種源路由的優(yōu)化方法,減少了向中間節(jié)點(diǎn)NODE 1,NODE 2,NODE 3,NODE 4,NODE 5發(fā)送更新信息的開銷,也消除了因?yàn)橄掳l(fā)狀態(tài)信息等待收斂的時(shí)間。
步驟3:控制器將專門用于資源發(fā)現(xiàn)的packet-out信息下發(fā)到起始節(jié)點(diǎn)。
步驟4:起始衛(wèi)星節(jié)點(diǎn)收到packet-out信息后,與添加了資源收集匹配域的流表進(jìn)行匹配,如果匹配到了是收集資源的packet-out消息,該流表中的Instructions Set就會(huì)執(zhí)行設(shè)定好的一系列Action;
執(zhí)行Action:對(duì)該節(jié)點(diǎn)進(jìn)行數(shù)據(jù)的收集,完成后,包頭中節(jié)點(diǎn)的跳數(shù)加1,根據(jù)包頭中的路徑信息在該節(jié)點(diǎn)的指定端口進(jìn)行轉(zhuǎn)發(fā)。
步驟5:起始節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)收集的數(shù)據(jù)包到中間節(jié)點(diǎn)。
步驟6:中間節(jié)點(diǎn)執(zhí)行相應(yīng)的操作,最后到達(dá)端口序列的最后一個(gè)節(jié)點(diǎn),執(zhí)行完Action之后,向控制器返回?cái)?shù)據(jù)包。
實(shí)施例:在圖5中,使用優(yōu)化的源路由的方法生成用端口號(hào)和跳數(shù)表示的路由狀態(tài)信息來(lái)表示從NODE X到NODE Y的路徑(1,2,2,2,2,3),替換原來(lái)的用交換機(jī)流表表示的路由信息。其中包含了該條路徑中所有節(jié)點(diǎn)的計(jì)算資源信息、存儲(chǔ)資源信息、網(wǎng)絡(luò)鏈路狀態(tài)信息、交換機(jī)的端口號(hào)、端口MAC地址等信息。控制器根據(jù)LLDP中的優(yōu)化的鏈路失效的檢測(cè)的周期,來(lái)定時(shí)的向起始節(jié)點(diǎn)發(fā)送packet-out包,保持資源數(shù)據(jù)的時(shí)效性。
Ⅲ、一種針對(duì)軟件定義衛(wèi)星網(wǎng)絡(luò)的節(jié)點(diǎn)資源發(fā)現(xiàn)策略優(yōu)化,包括鏈路發(fā)現(xiàn)優(yōu)化和資源收集優(yōu)化兩個(gè)部分。
鏈路發(fā)現(xiàn)優(yōu)化基于LLDP協(xié)議,減少Packet-out消息、加大鏈路發(fā)現(xiàn)周期、優(yōu)化鏈路丟包和鏈路失效的應(yīng)對(duì)策略,提高軟件定義衛(wèi)星網(wǎng)絡(luò)中的拓?fù)湫畔⒏碌膶?shí)時(shí)性和動(dòng)態(tài)性。
資源收集的方法優(yōu)化基于支持源路由的OF交換機(jī)和軟件定義衛(wèi)星網(wǎng)絡(luò)的集中控制,通過源路由的功能減小消除路由狀態(tài)更新帶來(lái)的延遲和網(wǎng)絡(luò)資源消耗。
應(yīng)當(dāng)理解的是,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。