蘇建忠,張華宇,朱海龍,2
(1.網絡通信與安全紫金山實驗室,江蘇 南京 211111;2.北京郵電大學信息與通信工程學院,北京 100876)
在傳統(tǒng)以太網中,盡力而為的體系架構已經運行多年,短視頻等移動網絡數據流量的激烈增長,將帶來大量的瞬時擁堵和數據時延增大。同時,更多的精細類網絡應用,例如車載網絡、工業(yè)控制命令、5G 遠程操作等[1-2],需要更低的端到端時延以及極低的時延抖動,但是傳統(tǒng)網絡目前無法提供保障。目前,由電氣和電子工程師協會和互聯網工程任務組提出的確定性網絡技術[3]成為當前較成熟的實現局部確定性、保障時延和帶寬的網絡技術,通過一系列網絡協議(IEEE 802.1AS 時鐘同步[4]、IEEE 802.1QBV 流量調度[5]、IEEE 802.1Qcc 資源配置管理[6]等)實現確定時延,其中IEEE 802.1Qcc 資源配置管理是整合TSN,包括帶寬預留規(guī)劃,通過集中式控制規(guī)劃與調度網絡流量以滿足確定性時延和抖動。同樣,SDN 架構將控制面與數據面分離[7-9],通過軟件靈活、合理地解決不同硬件的部署問題,提高網絡利用率,因此引入基于SDN 的TSN 架構,通過SDN 集中式控制規(guī)劃和調度流量,能夠有效地支持確定性時延和抖動。
當前TSN 協議中與帶寬預留相關的主要是IEEE 802.1Qat 以及IEEE Qcc 協議,IEEE 802.1Qat包含帶寬預留協商確定過程,闡述從發(fā)出預留消息到接收者的詳細過程。同時在IEEE 802.1Qat(一種分布式方式的網絡需求與資源分配機制)基礎之上,IEEE 802.1Qcc 支持集中式的注冊與流預留服務,稱為SRP 增強模式。在這種模式下,系統(tǒng)通過降低預留消息的大小與頻率(放寬計時器),以便在鏈路狀態(tài)和預留變更時觸發(fā)更新。IEEE 802.1Qcc 提供了一套工具,用于全局管理和控制網絡,通過網絡集中控制器(CNC,central network controller)等交互以提供運行資源的預留、調度以及其他類型的遠程管理協議,如NETCONF 或 RESTCONF,同時與IETF YANG/NETCONF 數據建模語言兼容。而帶寬預留技術在無線通信領域已經有所應用,其根據接入QoS 需求可以實現時分多址等技術。當前研究內容更多關注帶寬調度,包括路徑規(guī)劃、最大化總帶寬、最早完成時間和最短持續(xù)時間調度等研究方向[10-13]。
但是目前協議標準以及研究論文中沒有明確指出帶寬預留值計算方法,無法給出需要預留的準確帶寬值,多數采用經驗值,同時預留的帶寬值始終占用或持續(xù)一段時間占用,在周期性網絡中可能導致此部分的帶寬通道浪費,而且復雜的預留確定過程在確定性網絡中實時性無法得到保障。
在此基礎上,本文提出結合SDN 控制器在控制面的整體流量以及轉發(fā)路徑的規(guī)劃能力[14],通過控制器下發(fā)更新配置實現動態(tài)預留[15]和按時隙流預留的方式,在控制器端配置終端設備的流量參數(包括流量發(fā)送周期大小等流量模型參數),控制器整體調度規(guī)劃網絡數據流量轉發(fā)路徑等,結合高精度時鐘同步,計算出高精度周期性分時隙預留帶寬預留值,再通過控制器下發(fā)至交換設備執(zhí)行。首先通過分解目標時延到每一跳鏈路中,根據時延計算數據流通過鏈路需要的帶寬值;然后結合相應時隙內其他預留值計算總預留值確認是否預留成功,保障目標數據流的傳輸帶寬,同時提高帶寬的利用率;最后在非使用時隙將帶寬留給其他數據流使用,保障BE 流的傳輸。本文方法首先保障低時延、可控抖動,然后及時釋放帶寬提升帶寬利用率,同時結合IEEE 802.1Qcc 網絡配置模式,滿足終端節(jié)點和數據流量的不同變化。
本文通過周期性預留帶寬,同時結合控制器來解決TSN 協議缺少帶寬預留值計算的問題,通過對鏈路規(guī)劃計算在指定時隙內預留特定的帶寬值,在保障傳輸時延的基礎上減小抖動,同時可以有效地提高帶寬利用率。該方法首先確定預留執(zhí)行周期,然后在周期內計算傳輸路徑中每一跳需要的傳輸時隙以及帶寬值,確定該時隙內是否有足夠的帶寬值可以預留,再確定傳輸路徑中每一跳的預留時隙以及預留值,最后得到整個周期內的預留方案。TSN交換設備周期性執(zhí)行配置方案。
針對不同網絡拓撲,本文給出2 種時延分配。1) 根據計算等式,本文將總的要求時延按照鏈路帶寬比平均分配到每一跳鏈路,確定每一跳的時延后即可計算出對應的帶寬預留值;2) 結合可滿足性模理論(SMT,satisfy module theory)(SMT通過建立約束條件得到一系列一階邏輯等式,在滿足等式的基礎上得到一組未知數的解,可通過現有求解器求出)問題原理,建立約束條件模型,利用Z3 求解器求得一組合適解。具體的求解場景見第3 節(jié)。
帶寬預留值的計算需要先確定每一跳鏈路的時延,因此本節(jié)將數據流的要求時延分配到每一跳中,采用的分配策略為除去第一跳所耗時延外,其他跳占用時延根據其鏈路帶寬與傳輸路徑鏈路帶寬之和的占比來分配。
網絡拓撲示例如圖1 所示,包含6 個TSN 節(jié)點,節(jié)點a與交換機sw1鏈路帶寬為100 Mbit/s,鏈路傳輸時延為30 ns;其他鏈路帶寬為1 Gbit/s,鏈路傳輸時延為10 ns;設備處理時延為100 ns;設備TSN 拓撲中源節(jié)點a、目的節(jié)點c的流量發(fā)出時間為0,大小為1 200 B,周期為310 μs,時延要求為160 μs;源節(jié)點b、目的節(jié)點d的流量發(fā)出時間為0,大小為2 000 B,周期為310 μs,時延要求為200 μs。
圖1 網絡拓撲示例
根據模型以及路徑規(guī)劃,a到c的流量中,鏈路[a,sw1]帶寬全占用,需要耗時98 350 ns(1 229 B÷100 Mbit·s-1+30 ns),去除設備sw1與sw2耗時200 ns之后剩余時延61 450 ns,鏈路[sw1,sw2]和鏈路[sw2,c]帶寬值相等且總帶寬值為 2 Gbit/s,因此鏈路[sw1,sw2]與鏈路[sw2,c]分配時延均為30 725 ns。
同理,可求得b到d流量的時延分配。
本節(jié)結合SMT 問題原理[16],建立約束條件模型,利用Z3 求解器[17]求得時延分配以及帶寬預留值的一組合適解,為了建立整體約束條件,首先介紹網絡拓撲中基礎變量以及下文需要使用的其他變量的定義,如表1 所示。
表1 系統(tǒng)參數或公式
結合SMT 問題原理,本文算法將通過用戶約束、鏈路約束、以太網基礎約束和算法約束4 個方面建立約束條件。
1) 用戶約束。用戶約束主要包括數據流開始發(fā)送時間、數據大小、數據流周期、數據流總體要求時延等約束。數據報文在網絡中的總體要求時延分為鏈路信道時延、設備處理時延和數據傳輸時延,計算式為
2) 鏈路約束。相同時隙內所有預留值之和小于鏈路總帶寬值,單個預留值小于鏈路帶寬的50%(經驗值,避免不同跳之間預留帶寬值相差過大),保證帶寬預留值不超出真實物理帶寬值,計算式為
3) 以太網基礎約束。該約束遵循以太網報文傳輸基本準則,包括3 個方面:流量整體時延為最后一位數據傳完的時延;后幀的發(fā)送需要在前一幀結束后;除第一幀報文不需要等待外,其他報文都需要等待前一幀傳輸結束。最后一幀時延為數據流的整體時延,即;發(fā)送設備的后一幀數據的發(fā)出時間等于前一幀數據的結束時間,即;第一幀傳輸時不需要等待,因此后一跳的發(fā)出時間等于前一跳的結束時間+設備時延,即
4) 算法約束。傳輸過程中單幀與多幀存在差異,主要表現為多幀中后幀存在排隊等待情況,因此需要進行差異對待。滿足3.1 節(jié)和3.2 節(jié)計算方法,即當γ=1時,存在約束式
當γ>1時,存在以下3 種約束情況,滿足一種即可。
通過建立以上約束條件模型,再通過Z3 求解器計算,即可求解出每一跳鏈路的預留帶寬值以及傳輸時延,在此基礎上也可得出對應鏈路的占用時隙,即可得到完整的帶寬預留配置文件。
TSN 帶寬預留主要分為2 種類型流量:單幀流量,即數據流小于1 500 B 的流量(MTU 大?。欢鄮髁?,即數據流大于1 500 B 需要切分為多幀的流。本節(jié)針對以上2 種類型流量的帶寬預留值計算方法進行闡述。
單幀數據流量帶寬預留將數據流映射到對應的周期時間軸中,數據幀在每一跳的傳輸時延確定之后就能確定其所需的預留帶寬值以及對應預留時隙,假設幀到達當前鏈路[Va,Vb]時間為t0時刻,此時可推出幀在下一跳鏈路的發(fā)出時間為,依次類推,可以計算出數據幀在每一跳鏈路所耗費的時間,同時滿足傳輸耗時等式和時延要求等式
其中,μ和ω為未知解,其他為已知值。因此只需要求解出其中一個,另一個值即可得出,同時還需要滿足對應時隙的預留值之和小于對應鏈路總帶寬值,即。通過以上求解可以得出,鏈路[Va,Vb]在時隙內需要預留的帶寬值為
不同于單幀的情況,多幀帶寬預留主要面臨前后帶寬不一致問題(多幀:當需要發(fā)生的數據流大于MTU 時,需要將數據流切分為多個小于MTU的數據幀發(fā)送,并且除最后一幀外按最大幀切分,其發(fā)送開始時間相同),可分為兩類:1)假設當前預留值大于或等于前一跳,此時當前交換機不會出現數據包排隊等待情況,即前一跳發(fā)完一幀,當前馬上可以轉發(fā)并且在下一幀到來之前發(fā)完,此時要求的時延就是最后一幀數據流產生的時延;2)假設當前預留值比前一跳小,此時當前交換機出現數據包排隊等待情況,即當前交換機數據幀轉發(fā)還未完成時,下一幀數據包已經到來,這樣最后一幀數據包到來之后還需要產生等待前一跳時延,此時要求的時延為最后一幀的發(fā)送時延加上等待時延。
為了解決上述兩類問題,本文提出以下3 種假設。
1)假設預留帶寬小于前一跳帶寬值,此時鏈路的時延為整體數據在當前鏈路[Va,Vb]的傳輸時延減去最后一幀的到達時間,即
靳春利[注]靳春利,耿村民間故事講演協會會長,耿村村民,耿村故事“報礦人”,采訪時間:2017年10月26日17:00,地點:耿村村口。:在故事普查以前,我們耿村就說是“講笑話”,不說講故事,講故事是他們專家說的,后來(我們)就對別人說“講故事”,現在咱自己家里還說是“講笑話”。在耿村這邊這樣說,到藁城靠外那片兒就說是“講瞎話”。
2) 假設預留帶寬大于或等于前一跳[Va,Vb]帶寬值,同時小于前一跳帶寬值的1529 B/δ倍(1 529 B為傳輸的最大幀長度),此時最后一幀前面的數據包傳輸不產生等待時延,只有最后一幀數據包需要等待,因此要求當前鏈路[Vb,Vc]產生的時延等于最后一幀數據包的等待時延加上最后一幀數據包的傳輸時延,即
3) 假設預留帶寬值大于或等于前一跳帶寬值的1529 B/δ倍,此種情況最簡單,上一跳轉發(fā)的數據包會被及時轉發(fā)完,數據包的傳輸不產生等待時延,因此當前鏈路[Va,Vb]要求時延即為最后一幀的傳輸時延,即
通過以上3 種方式,可分別計算出對應鏈路的預留帶寬值。首先與各自的假設條件對比,符合假設條件的預留值為合適的預留值;然后根據預留值計算出對應鏈路的通過時隙;最后校驗每一跳鏈路對應時隙的總預留值是否小于總帶寬值。由于在計算過程中存在精度取舍問題,導致多幀預留后的計算時延與要求時延會出現偏差,使最后結果小于或等于要求時延。
當需要多條流預留時,需要遍歷每一條流,根據流量的優(yōu)先級優(yōu)先預留,針對優(yōu)先級高的流量,當數據流量為單幀時,使用3.1 節(jié)單幀預留方法處理;當數據流量為多幀時,使用3.2 節(jié)多幀預留方法處理。結合整個拓撲和流量優(yōu)先級,在計算路由的基礎上預留帶寬,同時結合最短路徑原則確定路由,具體流程如下。
1) SDN 控制器中確定網絡拓撲參數,包括設備信息、信道信息、連接信息、流量信息(含時延要求、優(yōu)先級、是否需要預留)、確定各流量的超周期(各條流的周期最小公倍數)。
2) 將流量信息按照是否需要預留以及優(yōu)先級排序。
3) 按順序循環(huán)處理每一條流。
3.1) 判斷是否已經生成路由,如果沒有生成則先生成路由,選取最短路徑的一條,計算預留;
3.2) 如果已經生成,直接計算預留;
3.3) 要求時延按照一定規(guī)則(第3 節(jié)中介紹)分配到每一跳上,計算的原則為發(fā)送端全部占用,其他鏈路按照規(guī)則預留;
3.4) 預留成功后將對應時隙的預留帶寬值從鏈路中扣除;
3.5) 生成路由表配置信息。
4) 將剩余帶寬配置給不需要預留的流量。
5) 將路由和預留配置通過SDN 控制器下發(fā)至交換設備執(zhí)行。
為了驗證算法的有效性,本文在OMNeT++仿真平臺環(huán)境中對幾組代表性數據進行實驗,運行環(huán)境為 8 核 32 G 處理器、ubuntu18 系統(tǒng)、OMNeT++5.4.1 版本。本節(jié)主要包括網絡拓撲等相關參數介紹和實驗結果分析2 個部分。
4.1.1網絡拓撲
實驗采用的網絡拓撲如圖2 所示,模擬了7 個交換機、2 個高清攝像頭、2 個環(huán)視攝像頭、5 個激光雷達、2 個毫米波雷達和2 個超聲波雷達信號的數據發(fā)送量和發(fā)送周期,終端設備按照各自周期以及流量大小向設備DomainControllor 發(fā)送報文。同時,拓撲之外有一臺 SDN 控制器,但其不在OMNeT++拓撲中展現,因為本文通過SDN 控制器配置了網絡拓撲和流量,并計算出具體的預留值以及時隙,通過配置文件的形式加載到OMNeT++實驗中,所以控制器沒有在拓撲中體現,屬于獨立模塊可單獨使用。
圖2 實驗網絡拓撲
4.1.2網絡參數表
設備流量參數如表2 所示。由表2 可知,高清攝像頭每33 ms 開始產生26.5 MB 的數據,需要17 667 幀切片發(fā)送(最大幀為1 500 B);環(huán)視攝像頭每40 ms產生5 MB 數據,需要切片3 334 幀發(fā)送;激光雷達每300 μs 產生1 200 KB 數據,只需要1 幀;毫米波雷達每50 ms 產生100 KB 數據,需要切片為67 幀發(fā)送;超聲波雷達每1 ms 產生500 B 數據,只需要1 幀。
表2 設備參數
4.1.3鏈路參數
對應網絡拓撲,選擇設備之間的連接參數,具體如下。
switchA~switchE之間采用40 Gbit/s、10 ns 時延連接;接收端DomainController 采用40 Gbit/s、10 ns 時延連接switchE;高清攝像頭采用10 Gbit/s、10 ns 時延連接switchE;環(huán)視攝像頭采用10 Gbit/s、10 ns 時延連接;雷達等其他設備采用100 Mbit/s、30 ns 時延連接。
按照場景的不同,本節(jié)實驗分為6 組,分別驗證單幀、多幀以及兩者相結合的場景下,通過均分和SMT 方法的不同計算方式產生的時延和抖動效果,以下實驗單幀均選取設備LiDAR2數據流、多幀均選取設備SVcamera2數據流驗證,數據流周期大小等參數見4.1.2 節(jié),設備LiDAR2數據流時延要求為120 μs,設備SVcamera2數據流時延要求為5 ms,設備SVcamera2數據流優(yōu)先級高于設備LiDAR2數據流,實驗數據中使用時延標準偏差表示實驗抖動,單位均為s。
4.2.1單幀周期性預留-均分
本節(jié)針對設備LiDAR2單幀數據流周期性預留帶寬,預留值計算方式采用均分方法,部分結果如表3 所示。
表3 實驗結果(單幀周期性預留-均分)
實驗結果表明,均分方法可以有效地求解周期性單幀預留帶寬值,LiDAR2設備時延穩(wěn)定在120 μs,達到實驗預期目的,同時其他背景流也全部發(fā)送和接收完畢,部分預留時隙帶寬利用率達100%。
4.2.2單幀周期性預留-SMT
本節(jié)針對設備LiDAR2單幀數據流周期性預留帶寬,預留值計算方式采用SMT 方法,結果如表4所示。
表4 實驗結果(單幀周期性預留-SMT)
實驗結果表明,SMT 方法可以有效地求解單幀周期性預留帶寬值,實驗中LiDAR2設備時延穩(wěn)定在120 μs,達到實驗預期目的,同時其他背景流也全部發(fā)送和接收完畢,時延比預期多2 ns,這是由于計算精度取舍導致的。同時滿足本文2.2 節(jié)中采用的4 個約束條件,總體時延不超出120 μs,預留帶寬值不超出鏈路實際帶寬(本節(jié)實驗鏈路[交換機B,交換機A]預留值為19 Gbit/s 左右,實際帶寬為40 Gbit/s),單幀傳輸無等待時延,符合3.1 節(jié)預留方式。
4.2.3多幀周期性預留-均分
本節(jié)針對設備SVcamera2多幀數據流周期性預留帶寬,預留值計算方式采用均分方法,結果如表5 所示。
表5 實驗結果(多幀周期性預留-均分)
實驗結果表明,均分方法可以很好地求解多幀周期性預留問題,其中SVcamera2設備時延穩(wěn)定在4.97 ms,低于目標值5 ms,達到實驗預期目的,同時其他背景流也全部發(fā)送和接收完畢。
4.2.4多幀周期性預留-SMT
本節(jié)針對設備SVcamera2多幀數據流周期性預留帶寬,預留值計算方式采用SMT 方法,結果如表6 所示。
表6 實驗結果(多幀周期性預留-SMT)
實驗結果表明,SMT 方法可以很好地求解多幀周期性預留問題,其中SVcamera2設備時延穩(wěn)定在4.98 ms,低于時延要求5 ms,達到實驗預期目的,同時其他背景流也全部發(fā)送和接收完畢。但是相比4.2.3 節(jié),背景流的整體時延和抖動均有所增加,抖動增長2 個數量級。本節(jié)挑選設備LiDAR1和設備SVcamera3兩組數據進行對比,圖3 為LiDAR1設備的時延對比,均分方法的時延抖動小于SMT 方法的時延抖動;圖4 為SVcamera3設備的時延對比,同樣,SMT 方法時延抖動均高于4.2.3 節(jié)的均分方法。通過兩組對比圖也可以看出,均分方法對其他背景流的影響更小,其他數據流的時延和抖動更低,同時滿足2.2 節(jié)中采用的4 個約束條件,總體時延不超出5 ms,預留帶寬值不超出鏈路實際帶寬(本節(jié)實驗鏈路[switchB,switchA]預留值約為8 Gbit/s,實際帶寬為40 Gbit/s),本節(jié)屬于多幀預留,因此采用最后一幀的時延作為整體流時延,符合3.2 節(jié)多幀預留方式,其中在交換機B 前后段存在前后帶寬不一致情況(鏈路[SVcamera2,switchB]帶寬為10 Gbit/s,鏈路[switchB,switchA]預留值為8 Gbit/s)。
圖3 LiDAR1 設備的時延對比
圖4 SVcamera3 設備的時延對比
4.2.5單幀多幀結合周期性預留-均分
本節(jié)針對設備 LiDAR2單幀數據流和設備SVcamera2多幀數據流周期性預留帶寬,預留值計算方式采用SMT 方法,結果如表7 所示。
表7 實驗結果(單幀多幀結合周期性預留-均分)
實驗結果表明,均分方法可以很好地求解單幀多幀結合的周期性預留問題,其中SVcamera2設備時延穩(wěn)定在4.97 ms,低于目標值5 ms,LiDAR2設備時延穩(wěn)定在120 μs,達到實驗預期目的,同時其他背景流也全部發(fā)送和接收完畢。
4.2.6單幀多幀結合周期性預留-SMT
本節(jié)針對設備 LiDAR2單幀數據流和設備SVcamera2多幀數據流周期性預留帶寬,預留值計算方式采用SMT 方法,結果如表8 所示。
表8 實驗結果(單幀多幀結合周期性預留-SMT)
LiDAR2設備時延穩(wěn)定在120 μs,SVcamera2設備的平均時延為4.98 ms,抖動為0.000 35 ms,同時其他背景流也全部發(fā)送和接收完畢。結合圖5 可以發(fā)現,在超周期(各條流的周期最小公倍數)內,出現兩次4.980 336 ms 時延、一次4.979 583 ms 規(guī)律性時延。查看預留配置發(fā)現,SMT 算法產生的結果為相同規(guī)律的預留值,因此也符合實驗預期。同樣,如圖6 和圖7 所示,均分方法相比SMT 方法數據流產生的時延和抖動更低。
圖5 SVcamera2 設備的時延對比
圖6 SVcamera3 設備的時延對比
圖7 LiDAR1 設備的時延對比
通過以上對比實驗可以發(fā)現,本文算法首先能夠計算出周期內具體的預留值和預留時隙,其次保障數據流能夠在要求時延內到達,并且不同周期內時延抖動可控,最后便于帶寬預留的思想落地實現。同時使用SMT 方法針對單幀和多幀單條流周期性預留可以達到實驗預期,但是在多流不同周期時可能會產生抖動,由于本文的方式是不同周期分開計算的,因此在不同周期內可能會產生不同的帶寬預留值,這也是本文的遺留問題,當前通過設置預留值取值空間范圍,避免差距過大的問題,但是還不能消除抖動。除此之外,如何確定帶寬預留值之和與鏈路總帶寬的占比也是本文未來的研究方向之一,目的是更好地平衡背景流的傳輸和目標流之間的沖突。
帶寬預留值計算方法還需要參考其他在網的數據流,在一定范圍內預留帶寬值,防止預留占據大部分的帶寬空間,同時預留方式適合小數據流量、時延要求不是非常高的數據流。
在使用本文周期性帶寬預留之后,預留的流量能夠在要求的時延內傳輸完畢并且基本沒有抖動,同時也保障其他不需要預留流量的傳輸,及時地釋放預留帶寬。相比以太網音頻視頻橋接技術固定帶寬比預留情況提高帶寬利用率,經過本文預留之后的帶寬利用率可達到100%。