陳 坤, 呂 娜, 朱海峰, 方 宇
(空軍工程大學(xué)信息與導(dǎo)航學(xué)院,西安,710077)
航空作戰(zhàn)力量在現(xiàn)代戰(zhàn)爭中往往占據(jù)著一定戰(zhàn)略地位,建設(shè)和發(fā)展航空網(wǎng)絡(luò)的重要性不言而喻?,F(xiàn)代軍事思想不斷衍生發(fā)展,未來航空集群作戰(zhàn)的理念已被廣泛認(rèn)同[1-2]。為滿足航空集群多平臺多任務(wù)靈巧協(xié)同作戰(zhàn)的需求,有研究人員將軟件定義網(wǎng)絡(luò)(Software-defined Networking, SDN)的思想運(yùn)用在機(jī)載網(wǎng)絡(luò)中,提出軟件定義航空集群機(jī)載網(wǎng)絡(luò)(Software-defined Airborne Network of Aviation Swarm, SDAN-AS),賦予了機(jī)載網(wǎng)絡(luò)靈活的網(wǎng)絡(luò)控制和管理、自動(dòng)化可編程的業(yè)務(wù)部署,從而提供與多任務(wù)靈活耦合的網(wǎng)絡(luò)服務(wù)[3]。SDN的引入能夠突破單個(gè)作戰(zhàn)平臺的效能瓶頸,多平臺之間展開的靈活、高效協(xié)同能夠彌補(bǔ)單一平臺的弱點(diǎn),從而形成優(yōu)勢互補(bǔ)的強(qiáng)大體系作戰(zhàn)能力[1-3]。
在SDAN-AS中,也同樣避免不了SDN固有的網(wǎng)絡(luò)一致性更新問題,一致性更新是所有集中式控制的網(wǎng)絡(luò)都面臨的問題,即如何在改變網(wǎng)絡(luò)配置期間保持網(wǎng)絡(luò)的一致屬性(如無路由黑洞、無轉(zhuǎn)發(fā)循環(huán)和無鏈路擁塞)[4-6]。但由于控制器與交換機(jī)之間存在著固有延遲,即使同時(shí)發(fā)送更新指令,指令也難以同時(shí)到達(dá)所有的交換機(jī)。即使同時(shí)到達(dá)所有的交換機(jī),完成更新的時(shí)間也難以同步。因此無法同時(shí)進(jìn)行整個(gè)網(wǎng)絡(luò)的更新,現(xiàn)有更新方法往往需要通過多個(gè)輪次來進(jìn)行[7-8]。
網(wǎng)絡(luò)的一致性更新近些年來受到廣泛關(guān)注,研究人員針對更新期間的各種一致屬性開展了各類研究。文獻(xiàn)[9]首次提出兩階段更新方法,實(shí)現(xiàn)了更新過程中的數(shù)據(jù)包一致屬性,保證轉(zhuǎn)發(fā)路徑不會是新舊兩套轉(zhuǎn)發(fā)規(guī)則的混合。文獻(xiàn)[10]基于兩階段更新提出增量兩階段更新方法,犧牲更新時(shí)間來降低規(guī)則開銷。文獻(xiàn)[11]提出SWAN更新系統(tǒng),采用預(yù)留鏈路帶寬的方法實(shí)現(xiàn)無鏈路擁塞的更新。文獻(xiàn)[12]提出Dionysus動(dòng)態(tài)更新系統(tǒng),通過構(gòu)建更新依賴圖減少網(wǎng)絡(luò)更新時(shí)間,從而加快更新速度。以上幾種現(xiàn)有更新方法在一定程度上能夠較好地保持網(wǎng)絡(luò)更新期間的各種一致屬性,但都屬于集中式更新方法,往往分為很多個(gè)輪次,通過控制器與數(shù)據(jù)平面的頻繁交互來協(xié)調(diào)交換機(jī)的更新順序。控制器下發(fā)更新指令到網(wǎng)絡(luò)中的部分交換機(jī),收到更新指令的交換機(jī)完成更新后向控制器發(fā)送確認(rèn)消息,控制器在接收到所有的確認(rèn)消息后完成更新的一個(gè)輪次,開始進(jìn)入下一個(gè)輪次,下發(fā)新的更新指令到網(wǎng)絡(luò)中的交換機(jī)。在集中式更新方法中,控制器與交換機(jī)之間的頻繁交互將會大大增加更新的完成時(shí)間[13-14]。同時(shí)集中式更新方法在更新過程中全程依賴控制器的計(jì)算與調(diào)度,SDAN-AS中的控制器搭載于資源有限的空中平臺,難以承載較高的負(fù)荷。
本文針對上述集中式更新方法的缺點(diǎn),提出一種面向航空集群機(jī)載網(wǎng)絡(luò)的分布式更新方法,設(shè)計(jì)改進(jìn)的更新消息格式,將更新依賴關(guān)系編碼到更新消息中,采用詢問和通知2種消息實(shí)現(xiàn)數(shù)據(jù)平面的分布式交互,將控制器的更新順序協(xié)調(diào)功能轉(zhuǎn)移到數(shù)據(jù)平面上進(jìn)行,從而實(shí)現(xiàn)快速一致的分布式更新,有效降低網(wǎng)絡(luò)更新時(shí)間。對于追求高實(shí)時(shí)性、高動(dòng)態(tài)組網(wǎng)的SDAN-AS而言,降低網(wǎng)絡(luò)更新時(shí)間從而減少更新期間的網(wǎng)絡(luò)性能下降具有重要意義。
為方便描述,首先引入本文的網(wǎng)絡(luò)模型抽象。在SDAN-AS中,通常由大型空中平臺擔(dān)任網(wǎng)絡(luò)控制器。由若干個(gè)小型空中平臺擔(dān)任網(wǎng)絡(luò)交換機(jī)共同構(gòu)成網(wǎng)絡(luò)的數(shù)據(jù)平面。因此可以將SDAN-AS的數(shù)據(jù)平面抽象為由若干個(gè)節(jié)點(diǎn)和鏈路連接起來的無向圖G=(V,E)。其中其中V={v1,v2,…,vm}表示網(wǎng)絡(luò)中交換機(jī)的集合,E={e1,e2,…,en}表示鏈路集合。對于?e∈E,Ce表示該鏈路的容量。μ={μe1,μe2,…,μen}表示網(wǎng)絡(luò)鏈路利用率的集合。
本文采用標(biāo)準(zhǔn)的流模型,F(xiàn)={f1,f2,…,fm}表示網(wǎng)絡(luò)中的業(yè)務(wù)流集合,其中每條業(yè)務(wù)流f表示在一個(gè)源節(jié)點(diǎn)和一個(gè)目的節(jié)點(diǎn)之間的一組數(shù)據(jù)包的集合,其流量需求表示為df??刂破骺梢酝ㄟ^定期收集數(shù)據(jù)平面信息或根據(jù)帶寬資源分配計(jì)算出網(wǎng)絡(luò)中業(yè)務(wù)流需求的估計(jì)值。業(yè)務(wù)流采用基于隧道的轉(zhuǎn)發(fā),對于每條業(yè)務(wù)流,采用VLAN標(biāo)簽建立多條從源節(jié)點(diǎn)到目的節(jié)點(diǎn)的隧道,隧道上的每個(gè)節(jié)點(diǎn)根據(jù)匹配VLAN標(biāo)簽的流表規(guī)則進(jìn)行相應(yīng)的轉(zhuǎn)發(fā)。
G表示網(wǎng)絡(luò)狀態(tài),即決定網(wǎng)絡(luò)中所有業(yè)務(wù)流的數(shù)據(jù)包轉(zhuǎn)發(fā)規(guī)則的集合。網(wǎng)絡(luò)控制器定期執(zhí)行流量工程,根據(jù)業(yè)務(wù)需求變化和網(wǎng)絡(luò)拓?fù)湫畔ⅲ瑘?zhí)行路由算法或流量調(diào)度算法計(jì)算出新的路由轉(zhuǎn)發(fā)規(guī)則,Po(f)表示流f在當(dāng)前網(wǎng)絡(luò)狀態(tài)Go中的舊轉(zhuǎn)發(fā)路徑,Pn(f)表示流f在目標(biāo)網(wǎng)絡(luò)狀態(tài)Gn中的新轉(zhuǎn)發(fā)路徑。執(zhí)行網(wǎng)絡(luò)更新將網(wǎng)絡(luò)從狀態(tài)Go轉(zhuǎn)變?yōu)闋顟B(tài)Gn,將流量從舊轉(zhuǎn)發(fā)路徑遷移到新轉(zhuǎn)發(fā)路徑上。
由于更新的過程不是瞬態(tài),而是異步分布式的過程。需要謹(jǐn)慎地協(xié)調(diào)交換機(jī)流表規(guī)則的更新順序,否則交換機(jī)流表規(guī)則的不一致將會導(dǎo)致網(wǎng)絡(luò)配置的不一致,從而產(chǎn)生如路由黑洞、循環(huán)轉(zhuǎn)發(fā)、鏈路擁塞等問題[15-16],嚴(yán)重影響更新期間的網(wǎng)絡(luò)性能。為了避免網(wǎng)絡(luò)配置的各種不一致,需要網(wǎng)絡(luò)更新算法滿足對應(yīng)的一致屬性。本文所設(shè)計(jì)的網(wǎng)絡(luò)更新方法主要滿足以下3種一致屬性:
1)無路由黑洞一致性:更新期間網(wǎng)絡(luò)中所有數(shù)據(jù)包都不會被丟棄。
2)無轉(zhuǎn)發(fā)循環(huán)一致性:更新期間網(wǎng)絡(luò)中所有數(shù)據(jù)包的轉(zhuǎn)發(fā)不會產(chǎn)生環(huán)路[17]。
3)無鏈路擁塞一致性:更新期間網(wǎng)絡(luò)中所有鏈路的負(fù)載都不會超過其容量[11-18]。
由于網(wǎng)絡(luò)更新是異步的過程,可以將每一次網(wǎng)絡(luò)更新U序列化為一系列的更新操作的集合,表示為U={o1,o2,…,on},其中每一個(gè)更新操作o表示插入、修改或刪除一條流表規(guī)則。為了保持更新期間的網(wǎng)絡(luò)配置一致屬性,最小化更新操作之間產(chǎn)生的沖突,需要安排更新操作以合適的順序執(zhí)行。由于更新操作之間具有相互依賴的關(guān)系,根據(jù)依賴關(guān)系可以建立起更新依賴圖,從而根據(jù)更新依賴圖計(jì)算出合適的更新順序。
為減緩控制器負(fù)載,直接在數(shù)據(jù)平面實(shí)現(xiàn)網(wǎng)絡(luò)的分布式更新,本節(jié)設(shè)計(jì)了改進(jìn)的更新消息格式,將更新依賴關(guān)系編碼到更新消息中。
為了更好地闡述改進(jìn)的更新消息設(shè)計(jì),首先引入更新依賴圖的概念。更新依賴圖是描述網(wǎng)絡(luò)更新操作之間依賴關(guān)系的有向圖。根據(jù)當(dāng)前網(wǎng)絡(luò)狀態(tài)Go以及目標(biāo)網(wǎng)絡(luò)狀態(tài)Gn,可以計(jì)算出從Go更新到Gn的過程中所需要執(zhí)行的一系列更新操作。而后根據(jù)更新操作之間的相互依賴關(guān)系、網(wǎng)絡(luò)鏈路帶寬資源以及更新操作對鏈路帶寬資源的需求等信息,可以為每一個(gè)給定當(dāng)前網(wǎng)絡(luò)狀態(tài)Go和目標(biāo)網(wǎng)絡(luò)狀態(tài)Gn的完整網(wǎng)絡(luò)更新過程構(gòu)建出滿足其一致性要求的更新依賴圖。
如圖1所示,圖1(a)中存在2條業(yè)務(wù)流,用不同的顏色表示,分別是源節(jié)點(diǎn)為1、目的節(jié)點(diǎn)為3的f1和源節(jié)點(diǎn)為2、目的節(jié)點(diǎn)為4的f2。每條業(yè)務(wù)流的需求都為10個(gè)單位,網(wǎng)絡(luò)中的每條鏈路的鏈路容量為10個(gè)單位。其中實(shí)線部分表示當(dāng)前網(wǎng)絡(luò)狀態(tài)Go,虛線部分表示目標(biāo)網(wǎng)絡(luò)狀態(tài)Gn。
根據(jù)圖1(a)的網(wǎng)絡(luò)拓?fù)鋱D生成的更新依賴圖如圖1(b)所示,其中圓形節(jié)點(diǎn)表示操作節(jié)點(diǎn),操作節(jié)點(diǎn)與操作的對應(yīng)關(guān)系如表1所示;矩形節(jié)點(diǎn)表示鏈路資源節(jié)點(diǎn),表示鏈路e(2,3)上的可用鏈路帶寬資源為0,指向性直線表示節(jié)點(diǎn)之間的依賴關(guān)系。操作C的執(zhí)行將會在鏈路e(2,3)上釋放10個(gè)單位的鏈路帶寬資源,操作E的執(zhí)行需要鏈路e(2,3)上具有10個(gè)單位的可用鏈路帶寬資源。
圖1 更新依賴圖示例
表1 依賴圖節(jié)點(diǎn)含義表示
為了實(shí)現(xiàn)分布式的快速一致網(wǎng)絡(luò)更新,本小節(jié)設(shè)計(jì)了改進(jìn)型更新消息格式,將操作之間的依賴關(guān)系編碼到更新消息中。網(wǎng)絡(luò)控制器采用改進(jìn)型的更新消息來進(jìn)行數(shù)據(jù)平面的網(wǎng)絡(luò)配置,通過節(jié)點(diǎn)之間的分布式協(xié)調(diào)來執(zhí)行網(wǎng)絡(luò)更新。
改進(jìn)型更新消息中包含以下3個(gè)字段的信息。
1)操作:表示一個(gè)任意的更新操作;
2)前置條件:表示執(zhí)行該更新操作所需要預(yù)先執(zhí)行的前置更新操作的組合,以邏輯布爾表達(dá)式呈現(xiàn),更新操作之間采用邏輯關(guān)系式進(jìn)行連接,只有前置條件滿足之后才可執(zhí)行該操作。
3)后置操作:表示依賴于該更新操作執(zhí)行的一系列更新操作的集合。
控制器根據(jù)從數(shù)據(jù)平面收集到的網(wǎng)絡(luò)狀態(tài)信息為網(wǎng)絡(luò)更新中的每一個(gè)更新操作計(jì)算出一個(gè)對應(yīng)該操作的更新消息。控制器計(jì)算完更新消息后,同時(shí)下發(fā)所有的更新消息到對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)。節(jié)點(diǎn)接收到更新消息后按照以下規(guī)則進(jìn)行執(zhí)行。
對于一個(gè)收到更新消息的節(jié)點(diǎn)v:
1)只有當(dāng)該更新消息中的前置條件被滿足之后,才能夠執(zhí)行該更新消息中的操作;
2)在更新消息中的操作被執(zhí)行之后,節(jié)點(diǎn)v向其后置操作中的所有更新操作所對應(yīng)的節(jié)點(diǎn)發(fā)送通知消息。
前置條件中的邏輯布爾表達(dá)式由單個(gè)或多個(gè)更新操作通過&和||2種邏輯運(yùn)算符連接起來。
定義1運(yùn)算符&:對于任意的操作o1和o2,o1&o2表示o1與o2都被執(zhí)行。
定義2運(yùn)算符||:對于任意的操作o1和o2,o1||o2表示o1與o2至少存在一個(gè)被執(zhí)行。
例如,若更新操作o1依賴于更新操作o2和o3的執(zhí)行,則o1的前置條件為o2&o3,o2和o3的后置操作都為{o1}。前置條件和后置操作的計(jì)算在第3節(jié)中的算法2進(jìn)行詳細(xì)介紹。
在本文的分布式更新方法中,為數(shù)據(jù)平面上的分布式更新順序協(xié)調(diào)定義了兩種消息:詢問消息、通知消息。取代了集中式更新方法中控制器的更新順序協(xié)調(diào)功能,數(shù)據(jù)平面中的節(jié)點(diǎn)通過詢問和通知兩種消息進(jìn)行分布式交互,協(xié)調(diào)更新順序,從而減少控制器與數(shù)據(jù)平面之間的頻繁交互所帶來的延遲。
詢問消息:當(dāng)一個(gè)交換機(jī)接收到控制器發(fā)送的一條更新消息后,將會發(fā)送詢問消息到其前置條件中的所有更新操作所對應(yīng)的交換機(jī),詢問這些更新操作是否已執(zhí)行。
通知消息:在一條更新消息中的操作被其對應(yīng)的節(jié)點(diǎn)執(zhí)行后,該節(jié)點(diǎn)將會發(fā)送通知消息到其后置條件中的所有更新操作所對應(yīng)的交換機(jī),從而通知這些交換機(jī)該更新操作已經(jīng)執(zhí)行。
詢問和通知2種消息能夠確保更新操作在數(shù)據(jù)平面被分布式地執(zhí)行。操作之間的執(zhí)行順序完全由數(shù)據(jù)平面完成,從而取代控制器的更新順序協(xié)調(diào)功能。網(wǎng)絡(luò)控制器只需根據(jù)更新依賴圖為所有的更新操作構(gòu)造對應(yīng)的更新消息并下發(fā)到數(shù)據(jù)平面,即使更新消息到達(dá)的時(shí)間不同,也能夠保證更新操作按照更新依賴圖中的依賴關(guān)系進(jìn)行執(zhí)行。
對于圖1中的情況,控制器能夠根據(jù)圖1(b)中的更新依賴圖構(gòu)造出每一個(gè)更新操作所對應(yīng)的更新消息,如第3節(jié)中圖1的更新消息構(gòu)造如表2所示。
表2 更新消息示例
當(dāng)網(wǎng)絡(luò)控制器將所有的更新消息下發(fā)到數(shù)據(jù)平面的各交換機(jī)后,由于更新操作A、B的前置條件均不存在,因此節(jié)點(diǎn)3接收到更新消息4后可直接執(zhí)行更新操作B,向并其后置操作E所對應(yīng)的節(jié)點(diǎn)2發(fā)送通知消息。同理,節(jié)點(diǎn)5在接收到更新消息5后可直接執(zhí)行更新操作A,并向節(jié)點(diǎn)1發(fā)送通知消息。節(jié)點(diǎn)1接收到更新消息1后,不能立即執(zhí)行更新操作C,只有在更新操作A執(zhí)行之后才能更新,因此節(jié)點(diǎn)1需要向其前置條件(即操作C)對應(yīng)的節(jié)點(diǎn)5發(fā)送詢問消息,當(dāng)節(jié)點(diǎn)1接收到節(jié)點(diǎn)5發(fā)送的通知消息后,即可執(zhí)行更新操作C,并向其后置操作D、E所對應(yīng)的節(jié)點(diǎn)2發(fā)送通知消息。
數(shù)據(jù)平面的交換機(jī)之間利用詢問和通知兩種消息進(jìn)行分布式交互來協(xié)調(diào)更新順序,最終完成整個(gè)網(wǎng)絡(luò)的分布式更新。
階段1控制器根據(jù)從數(shù)據(jù)平面收集到的網(wǎng)絡(luò)拓?fù)湫畔?,將網(wǎng)絡(luò)更新分解為一系列的更新操作。
階段2根據(jù)網(wǎng)絡(luò)狀態(tài)信息將一系列更新操作生成更新依賴圖。再根據(jù)更新依賴圖計(jì)算出每一個(gè)更新操作所對應(yīng)的前置條件和后置操作,構(gòu)造更新消息并下發(fā)到該更新操作對應(yīng)的交換機(jī)。
階段3數(shù)據(jù)平面中的交換機(jī)接收到控制器發(fā)送的更新消息后,根據(jù)更新消息中的前置條件和后置操作開始執(zhí)行分布式更新,采用詢問、通知兩種消息進(jìn)行更新順序的協(xié)調(diào),從而完成數(shù)據(jù)平面的分布式網(wǎng)絡(luò)更新。
3.2.1 更新依賴圖生成
對于更新依賴圖的生成,首先根據(jù)網(wǎng)絡(luò)所需要滿足的一致屬性,提取出約束條件,然后根據(jù)約束條件進(jìn)行更新依賴圖的生成。本文主要關(guān)注無路由黑洞、無循環(huán)轉(zhuǎn)發(fā)和無擁塞3種一致屬性。
無路由黑洞一致性約束:要確保添加隧道的操作在流量從入口交換機(jī)輸入之前執(zhí)行,刪除隧道的操作要在流量遷移出該隧道之后執(zhí)行。即修改入口交換機(jī)流量分配權(quán)重的操作依賴于添加隧道的操作,刪除隧道的操作依賴于修改入口交換機(jī)流量分配權(quán)重的操作。
無循環(huán)轉(zhuǎn)發(fā)一致性約束:由于網(wǎng)絡(luò)采用基于隧道的轉(zhuǎn)發(fā),只有建立起一條新轉(zhuǎn)發(fā)路徑的隧道,才能夠在其上進(jìn)行數(shù)據(jù)包的轉(zhuǎn)發(fā),因此一定滿足無循環(huán)轉(zhuǎn)發(fā)的一致性。
無鏈路擁塞一致性約束:要確保更新操作的執(zhí)行必須具有相應(yīng)的可用鏈路帶寬,即更新操作依賴于鏈路可用帶寬資源,同時(shí)更新操作也會釋放一些鏈路帶寬資源。
生成更新依賴圖算法如算法1所示。
算法1:更新依賴圖生成算法
輸入:流集合F;路徑集合P;流需求集合df;
輸出:更新依賴圖
1.for eachf∈Fdo
2.尋找業(yè)務(wù)流f的入口交換機(jī)s
3.生成“修改s上的流量分配權(quán)重”操作節(jié)點(diǎn),記為o*
4.for eachv∈Pn(f)-sdo
5.生成“在v中添加隧道Pn(f)”的操作節(jié)點(diǎn),記為oadd
6.添加一條從oadd指向o*的邊
7.end for
8.for eachv∈Po(f)-sdo
9.生成“在v中刪除隧道Po(f)”的操作節(jié)點(diǎn),記為odel
10.添加一條從o*指向odel的邊
11.end for
12.for eache∈Pn(f)do
13.生成對應(yīng)鏈路e的資源節(jié)點(diǎn),記為r-
14.添加一條附加數(shù)值df,從r-指向o*的邊
15.end for
16.for eache∈Po(f)do
17.生成對應(yīng)鏈路e的資源節(jié)點(diǎn),記為r+
18.添加一條附加數(shù)值df,從o*指向r+的邊
19.end for
20.end for
3.2.2 構(gòu)造更新消息
在生成更新依賴圖之后,控制器需要為每一個(gè)更新操作構(gòu)造出一條更新消息,下發(fā)到數(shù)據(jù)平面中相對應(yīng)的交換機(jī)。
更新消息構(gòu)造的關(guān)鍵是計(jì)算前置條件和后置操作,前置條件為一系列更新操作的組合,表現(xiàn)為邏輯布爾表達(dá)式的形式;后置操作為一系列更新操作的集合。更新消息構(gòu)造算法如算法2所示。
算法2:更新消息構(gòu)造算法
輸入:更新依賴圖
輸出:更新消息
1.初始化所有操作的前置條件和后置操作
2.for eachoido
3.if ?oj∈oi的父節(jié)點(diǎn)且oj∈U then
4.oi的前置條件=oi的前置條件&oj
5.end if
6.end for
7.for eachrdo
8.ifr的可用資源 9.計(jì)算r子節(jié)點(diǎn)優(yōu)先級 10.將r子節(jié)點(diǎn)按照優(yōu)先級從高到低排列 11.for eacho∈r子節(jié)點(diǎn)do 12.r的可用資源=r的可用資源-o的鏈路需求 13.ifr的可用資源<0 then 14.根據(jù)r的父節(jié)點(diǎn)計(jì)算合適的調(diào)度S 15.o的前置條件=o的前置條件&S 16.end if 17.end for 18.end if 19.end for 20.for eachoido 21.if ?oj∈oi的前置條件 then 22.oj的后置操作=oj的后置操作∪oi 23.end if 24.end for 本文的仿真實(shí)驗(yàn)搭建在CPU為Intel Xeon,主頻為3.2 GHz,內(nèi)存16 GB的商用服務(wù)器上。軟件定義航空集群機(jī)載網(wǎng)絡(luò)的場景采用Exata 5.1網(wǎng)絡(luò)仿真平臺進(jìn)行搭建。本節(jié)與現(xiàn)有集中式網(wǎng)絡(luò)更新方法的典型代表Dionysus更新系統(tǒng)進(jìn)行對比,從而驗(yàn)證分析所提方法的性能。 仿真參數(shù)設(shè)置如表3所示。節(jié)點(diǎn)按照控制器計(jì)算并下發(fā)的流表規(guī)則進(jìn)行數(shù)據(jù)包轉(zhuǎn)發(fā)和處理。控制器在每個(gè)流量工程周期內(nèi)根據(jù)當(dāng)前網(wǎng)絡(luò)拓?fù)渲匦掠?jì)算新的路由轉(zhuǎn)發(fā),執(zhí)行網(wǎng)絡(luò)更新。共進(jìn)行1 000次完整的網(wǎng)絡(luò)更新過程,對每一次完整網(wǎng)絡(luò)更新數(shù)據(jù)進(jìn)行統(tǒng)計(jì)、處理和分析。 表3 仿真參數(shù)設(shè)置 4.1.1 更新完成時(shí)間 圖2為網(wǎng)絡(luò)更新完成時(shí)間的比較。從仿真結(jié)果可以看出,計(jì)算時(shí)間只在更新完成時(shí)間中占據(jù)了很小的比例,更新完成時(shí)間主要表現(xiàn)在更新順序協(xié)調(diào)所消耗的協(xié)調(diào)時(shí)間。由于分布式更新方法采用詢問與通知2種消息直接在數(shù)據(jù)平面的交換機(jī)之間進(jìn)行分布式交互,避免了集中式更新中依賴控制器進(jìn)行更新調(diào)度的“控制器-交換機(jī)-控制器”模式所帶來的頻繁交互產(chǎn)生的高延遲,因此能夠顯著降低更新協(xié)調(diào)時(shí)間。與Dionysus更新系統(tǒng)相比,本文提出的分布式更新方法在更新計(jì)算時(shí)間上表現(xiàn)近似,但在更新協(xié)調(diào)時(shí)間上降低了約40%,從而顯著降低了整個(gè)更新完成時(shí)間。 圖2 更新完成時(shí)間比較 4.1.2 更新協(xié)調(diào)距離 圖3為本文分布式更新方法在仿真實(shí)驗(yàn)中更新協(xié)調(diào)距離的累積密度函數(shù)。更新協(xié)調(diào)距離表示一個(gè)更新操作執(zhí)行之后向被其依賴的更新操作所對應(yīng)的節(jié)點(diǎn)發(fā)送通知消息所需要的跳數(shù),其累計(jì)密度函數(shù)表示不大于該更新協(xié)調(diào)距離的操作在操作總數(shù)目中所占比例。從仿真結(jié)果可以看出,在分布式更新中約20%的更新協(xié)調(diào)距離為0,即相互依賴的更新操作在相同的交換機(jī)上執(zhí)行;約36%的更新協(xié)調(diào)距離為1,即相互依賴的更新操作在相鄰的交換機(jī)上執(zhí)行。而在集中式更新中,需要控制器與數(shù)據(jù)平面之間反復(fù)交互,每個(gè)操作的更新協(xié)調(diào)距離都至少為2。分布式更新方法利用相鄰交換機(jī)之間的直接交互,大大降低了消息交互所帶來的更新時(shí)間,從側(cè)面驗(yàn)證了分布式更新方法在降低更新時(shí)間上的優(yōu)勢。 圖3 更新協(xié)調(diào)距離比較 4.1.3 業(yè)務(wù)流更新時(shí)間 圖4為業(yè)務(wù)流更新時(shí)間的累計(jì)密度函數(shù)對比。業(yè)務(wù)流更新時(shí)間表示單條業(yè)務(wù)流更新完成所需要的時(shí)間,其累計(jì)密度函數(shù)表示不大于該更新時(shí)間的業(yè)務(wù)流數(shù)目在業(yè)務(wù)流總數(shù)目中所占比例。從仿真結(jié)果中可以看出,在集中式更新方法中,最長的業(yè)務(wù)流更新時(shí)間約為800 ms,90%的業(yè)務(wù)流在400 ms內(nèi)完成更新;而分布式更新方法中最長的業(yè)務(wù)流更新時(shí)間約為600 ms,90%的業(yè)務(wù)流在250 ms內(nèi)完成更新。在同等累計(jì)密度函數(shù)下,分布式更新方法的業(yè)務(wù)更新時(shí)間比集中式更新方法更短;在同等業(yè)務(wù)流更新時(shí)間的限制下,分布式更新方法完成了更多的業(yè)務(wù)流更新。可以看出分布式更新方法在提高業(yè)務(wù)流更新速度方面表現(xiàn)較好。 圖4 業(yè)務(wù)流更新時(shí)間 本文針對集中式網(wǎng)絡(luò)更新方法更新時(shí)間長、過于依賴控制器的問題,提出一種應(yīng)用于軟件定義航空集群機(jī)載網(wǎng)絡(luò)的分布式更新方法。 與集中式更新方法相比,本文所提方法通過實(shí)現(xiàn)數(shù)據(jù)平面的分布式交互有效降低更新協(xié)調(diào)距離,減少了更新協(xié)調(diào)所需的交互次數(shù),從而降低更新協(xié)調(diào)時(shí)間。仿真實(shí)驗(yàn)表明,本文所提方法與集中式更新方法相比,更新計(jì)算時(shí)間大致保持相同,更新協(xié)調(diào)時(shí)間降低了約40%,從而顯著減少整個(gè)網(wǎng)絡(luò)的更新完成時(shí)間。4 仿真實(shí)驗(yàn)及分析
4.1 仿真參數(shù)設(shè)置
5 結(jié)語