代 真,何 鋒,熊華鋼
(北京航空航天大學(xué) 電子信息工程學(xué)院,北京100191)
在SpaceWire[1,2]網(wǎng)絡(luò)分析中,消息數(shù)據(jù)包的傳輸端到端延時是一個非常重要的測定指標(biāo),它體現(xiàn)網(wǎng)絡(luò)的實時性。SpaceWire難以保證消息的傳輸端到端延時[3]。若事先已知網(wǎng)絡(luò)中部分節(jié)點的消息屬性,如時間、大小等,對它們的傳輸進行規(guī)劃,按照固定時間窗口進行調(diào)度,即可形成時間觸發(fā)消息網(wǎng)絡(luò),并極大提高網(wǎng)絡(luò)中消息傳輸?shù)拇_定性[4]。
測定消息傳輸延時的方法很多,如利用FPGA、ASIC硬件模擬SpaceWire網(wǎng)絡(luò)行為[5],也可運用仿真軟件對網(wǎng)絡(luò)進行仿真,利用matlab、OPNET 等仿真軟件模擬SpaceWire網(wǎng)絡(luò)通信機制[6,7]。
現(xiàn)在已有的SpaceWire仿真系統(tǒng)中,大多為基于協(xié)議的事件觸發(fā)網(wǎng)絡(luò)[8],缺乏基于時間觸發(fā)消息、對蟲洞路由器調(diào)度時刻表進行規(guī)劃的仿真系統(tǒng)。本文通過建模仿真,對于事件觸發(fā)和時間觸發(fā)網(wǎng)絡(luò)場景下的SpaceWire總線網(wǎng)絡(luò)消息傳輸端到端延時行了分析和研究。此外,分析了組路由[9]情況下,SpaceWire網(wǎng)絡(luò)在鏈路出現(xiàn)故障時可行的重構(gòu)方案,并利用仿真進行了驗證。
星載SpaceWire通信網(wǎng)絡(luò)包含鏈路、節(jié)點和交換機。節(jié)點為消息數(shù)據(jù)包的流入流出設(shè)備,鏈路為數(shù)據(jù)包的傳輸路徑,交換機采用蟲洞路由器,SpaceWire采用基于數(shù)據(jù)包觸發(fā)的事件觸發(fā)交換方式,支持自由的拓?fù)浣Y(jié)構(gòu)。
星載SpaceWire網(wǎng)絡(luò)消息類型可分為多類[6],本文中將星載網(wǎng)絡(luò)中的消息分為兩類,一類為高實時性消息,這類消息通常為周期性確定消息,稱之為時間觸發(fā)消息;另一類為低實時性消息,這類消息對應(yīng)于網(wǎng)絡(luò)中隨機產(chǎn)生的消息,稱之為事件觸發(fā)消息。為了確保時間觸發(fā)消息的傳輸延時,同時兼并事件觸發(fā)網(wǎng)絡(luò)傳輸?shù)奶攸c,基于OPNET仿真平臺開發(fā)了一套SpaceWire仿真系統(tǒng)。
本文中,將SpaceWire系統(tǒng)分為帶時間窗口的蟲洞路由器 (WR)、時間主控節(jié)點 (TM)和終端應(yīng)用節(jié)點(ES),ES、WR、TM 通過點到點、全雙工的數(shù)據(jù)通信鏈路形成星載通信網(wǎng)絡(luò),如圖1所示。
圖1 仿真系統(tǒng)模塊
系統(tǒng)中各模塊主要功能為:TM 通過廣播發(fā)送時間碼控制網(wǎng)絡(luò)的時間同步;ES完成SpaceWire數(shù)據(jù)包的生成以及發(fā)送工作;WR 在接收到數(shù)據(jù)包后,對數(shù)據(jù)包的類型及到達(dá)時間進行相應(yīng)判斷,完成對數(shù)據(jù)包的尋址轉(zhuǎn)發(fā)功能。
2.1.1 時間同步單元
時間主控節(jié)點模塊用于生成SpaceWire網(wǎng)絡(luò)同步時間碼Time-code[3],Time-code中的T0~T5 位為時間碼的計數(shù)位,其值在0~63內(nèi)循環(huán),用于區(qū)分不同發(fā)送時刻發(fā)送的時間碼。
TM 生成時間碼TM_TC 并向網(wǎng)絡(luò)廣播發(fā)送,TM 維持一個本地時鐘,初始時,T0~T5位值為0,以后每隔10 ms時間主控節(jié)點TM 生成時間碼并廣播,T0~T5位值依次加1。終端應(yīng)用節(jié)點模塊和帶時間窗口的蟲洞路由器接收收到同步時間碼TM_TC 后,分別將本地時間更新為TM_TC的時間,進而完成網(wǎng)絡(luò)時間同步。
2.1.2 消息接收單元
在TM 接收到SpaceWire 消息數(shù)據(jù)包時,記錄下SpaceWire數(shù)據(jù)包包尾的到達(dá)時刻Tend,由包頭可獲得數(shù)據(jù)包源節(jié)點信息 (可判斷具體為哪條消息),以及數(shù)據(jù)包的發(fā)送時刻Tgen,進而可以計算對應(yīng)數(shù)據(jù)包從源節(jié)點到達(dá)目的節(jié)點的傳輸端到端延時,公式為ETEi=Tend-Tgen,i表示消息流序號。
2.2.1 時間同步單元
ES維持一個本地時鐘ES_TC,接收到TM 發(fā)送的時間碼TM_TC后,讀取時間碼TM _TC 中T0~T5 位的值,將本地時鐘值ES_TC 更新為TM _TC,完成時間同步。
2.2.2 消息屬性設(shè)置單元
本單元設(shè)置ES生成消息數(shù)據(jù)包的屬性。ES可生成兩種類型的消息數(shù)據(jù)包,分為時間觸發(fā)消息和事件觸發(fā)消息。時間觸發(fā)消息對應(yīng)于重要的高實時性確定消息,通常為周期性確定消息。事件觸發(fā)消息對應(yīng)于低實時性消息,主要指隨機性消息。
對時間觸發(fā)消息,其數(shù)據(jù)包初始生成時刻Tstart、生成時間間隔Tcircle、數(shù)據(jù)包大小pkt_size、目的節(jié)點dest_node等信息確定,設(shè)置這些屬性的具體值。
對事件觸發(fā)消息,生成時間間隔Tcircle隨機,設(shè)置為按照高斯或泊松分布,并設(shè)置均值大?。粩?shù)據(jù)包大小pkt_size、初始生成時刻Tstart、目的節(jié)點dest_node等信息可設(shè)置為具體值或隨機分布。
2.2.3 消息生成單元
消息生成單元用于生成消息數(shù)據(jù)包。SpaceWire數(shù)據(jù)包由包頭、數(shù)據(jù)塊、包尾組成,如圖2 所示。包頭用于記錄相應(yīng)信息,數(shù)據(jù)塊用于控制整個數(shù)據(jù)包的大小,包尾表示整個數(shù)據(jù)包的結(jié)束。消息生成單元生成數(shù)據(jù)包后立刻發(fā)送出去。
圖2 數(shù)據(jù)包結(jié)構(gòu)
包頭應(yīng)包含以下信息:①pkt_type,區(qū)分?jǐn)?shù)據(jù)包類型,時間觸發(fā)消息其值設(shè)為1,事件觸發(fā)消息其值設(shè)為0;②pkt_size,記錄數(shù)據(jù)包大小,單位為byte;③src_node和dest_node,記錄數(shù)據(jù)包源節(jié)點和目的節(jié)點。
本仿真系統(tǒng)中,為了保證時間觸發(fā)消息在網(wǎng)絡(luò)中的傳輸延時,在現(xiàn)有蟲洞路由器的基礎(chǔ)上,設(shè)置了數(shù)據(jù)包緩存機制和調(diào)度時間窗口,將其稱為帶時間窗口的蟲洞路由器。
2.3.1 時間同步單元
WR 維持一個本地時鐘WR_TC,接收到TM 發(fā)送的時間碼TM_TC后,讀取時間碼TM_TC中T0~T5位的值,將本地時鐘的值WR_TC更新為TM_TC,完成時間同步。
2.3.2 緩存機制
數(shù)據(jù)包緩存機制用于臨時緩存SpaceWire數(shù)據(jù)包。為路由器的輸入端口設(shè)置了緩存隊列。當(dāng)SpaceWire數(shù)據(jù)包的包頭到達(dá)路由器后,路由器通過包頭攜帶的目的節(jié)點信息得到其傳輸所需的輸出端口,若該輸出端口此時為忙狀態(tài),則將數(shù)據(jù)包緩存在路由器的緩存隊列中,待該輸出端口為空閑狀態(tài)后,路由器才從緩存隊列中取出數(shù)據(jù)包進行轉(zhuǎn)發(fā)。
2.3.3 時間窗口機制
為了保證時間觸發(fā)消息數(shù)據(jù)包的傳輸時間,在路由器的工作時間軸上設(shè)置了調(diào)度時間窗口,如圖3所示。圖中實線框為時間觸發(fā)消息數(shù)據(jù)包的時間窗口,用TH 表示,路由器在TH 內(nèi)只轉(zhuǎn)發(fā)時間觸發(fā)消息;虛線框為事件觸發(fā)消息數(shù)據(jù)包的時間窗口,用EH 表示;TH 之間的空隙稱為窗間間隔,用CH 表示。
圖3 時間窗口及窗間間隔
時間觸發(fā)消息數(shù)據(jù)包的屬性事先知道,其傳輸路徑也知道,這些路徑上的路由器的相應(yīng)轉(zhuǎn)發(fā)端口均需設(shè)置時間窗口TH。時間窗口TH 的開始時刻設(shè)定為時間觸發(fā)消息數(shù)據(jù)包的生成時刻TTgen,TH 時間窗口的長度按照數(shù)據(jù)包傳輸?shù)睦碚摃r延進行計算,這里做近似處理為TH=10×size/c,其中size為數(shù)據(jù)包大小,c為鏈路傳輸速率。
事件觸發(fā)SpaceWire數(shù)據(jù)包的屬性不定,其時間窗口在路由器接收到數(shù)據(jù)包時設(shè)定,EH 的開始時刻ETarr設(shè)為路由器接收到事件觸發(fā)消息數(shù)據(jù)包頭的時刻,EH 長度為EH=10×size/c,這里的size 可從包頭信息pkt_size獲得。
仿真前應(yīng)設(shè)置時間觸發(fā)消息數(shù)據(jù)包的調(diào)度時間窗口TH,用于在仿真時轉(zhuǎn)發(fā)對應(yīng)的消息。對于事件觸發(fā)消息的路由轉(zhuǎn)發(fā),則在TH 間的空隙窗寬間隔CH 內(nèi)轉(zhuǎn)發(fā)。事件觸發(fā)消息轉(zhuǎn)發(fā)時應(yīng)遵循以下幾點:
(1)事件觸發(fā)消息時間窗口EH 與時間觸發(fā)數(shù)據(jù)包的時間窗口TH 無重疊,轉(zhuǎn)發(fā)數(shù)據(jù)包。
(2)事件觸發(fā)消息時間窗口EH 與時間觸發(fā)數(shù)據(jù)包的時間窗口TH 有重疊,分3種情況:
1)EH 完全包含于TH 之內(nèi);
2)EH 前端與TH 后端重疊,如圖4中EH1所示;
3)EH 后端與TH 前端重疊,如圖4中EH2所示。
圖4 時間窗口工作原理
此時應(yīng)將數(shù)據(jù)包暫且緩存,待相應(yīng)端口空閑后進行轉(zhuǎn)發(fā)。
(3)若窗寬間隔CH 不夠多個數(shù)據(jù)包傳輸,如圖4 所示,數(shù)據(jù)包ET2應(yīng)緩存待TT2的時間窗口結(jié)束后處理,由于此時的長度不夠ET2和ET3進行轉(zhuǎn)發(fā),即有<EH2+EH3,此時應(yīng)按照先后順序先將ET2轉(zhuǎn)發(fā),將ET3緩存,待相應(yīng)端口空閑后轉(zhuǎn)發(fā)。
(4)事件觸發(fā)消息轉(zhuǎn)發(fā)存在競爭時,按照先進先出的原則,先到達(dá)先處理。若兩數(shù)據(jù)包同時到達(dá)路由器,優(yōu)先轉(zhuǎn)發(fā)小的數(shù)據(jù)包。
步驟1 利用點到點、全雙工數(shù)據(jù)通信鏈路將若干帶時間窗口的蟲洞路由器、時間主控節(jié)點和終端應(yīng)用節(jié)點連接形成通信網(wǎng)絡(luò);
步驟2 配置終端應(yīng)用節(jié)點模塊,設(shè)置生成消息數(shù)據(jù)包的類型,對應(yīng)時間觸發(fā)數(shù)據(jù)包和事件觸發(fā)數(shù)據(jù)包,設(shè)置相應(yīng)的數(shù)據(jù)包屬性;
步驟3 配置路由器模塊;為步驟2中設(shè)置的時間觸發(fā)數(shù)據(jù)包設(shè)置相應(yīng)的時間窗口TH;
步驟4 完成配置后,開始仿真。時間主控節(jié)點發(fā)送初始時刻時間碼,完成時間同步后,終端節(jié)點生成并發(fā)送數(shù)據(jù)包,路由器路由轉(zhuǎn)發(fā)數(shù)據(jù)包;
步驟5 目的節(jié)點接收到數(shù)據(jù)包后,根據(jù)源節(jié)點統(tǒng)計相應(yīng)消息流的傳輸延時;
步驟6 仿真結(jié)束,得到結(jié)果。
基于仿真系統(tǒng),搭建了如圖5所示的通信網(wǎng)絡(luò),設(shè)置了3類場景進行仿真分析,網(wǎng)絡(luò)消息的目的節(jié)點均為TM,鏈路傳輸速率設(shè)為100 Mbps。
當(dāng)網(wǎng)絡(luò)中所有消息均為事件觸發(fā)消息時,即所有消息均隨機產(chǎn)生并發(fā)送,在路由轉(zhuǎn)發(fā)過程中按照自由競爭原則進行,這樣的網(wǎng)絡(luò)為事件觸發(fā)網(wǎng)絡(luò),事件觸發(fā)網(wǎng)絡(luò)與標(biāo)準(zhǔn)協(xié)議定義的網(wǎng)絡(luò)相符。
圖5 SpaceWire通信網(wǎng)絡(luò)
下表設(shè)置圖5所示仿真網(wǎng)絡(luò)消息屬性。將ES1~ES4設(shè)置為發(fā)送事件觸發(fā)消息,然后為每個ES設(shè)置了相應(yīng)的數(shù)據(jù)包屬性,見表1,pkt_size 為數(shù)據(jù)包大小,單位bytes;Tcicle為數(shù)據(jù)包的產(chǎn)生時間間隔,單位ms,E(X)表示按照高斯分布,均值為Xms;Tstart為數(shù)據(jù)包初始生成時刻,單位ms。
表1 事件觸發(fā)網(wǎng)絡(luò)消息屬性
設(shè)置好ES的屬性后,進行仿真,獲得仿真結(jié)果,如圖6所示,給出了ES1、ES2兩個消息流的傳輸延時,菱形點消息流ES1,方形點為消息消息流ES2,一個點對應(yīng)一個數(shù)據(jù)包的傳輸端到端延時結(jié)果。
圖6 事件觸發(fā)網(wǎng)絡(luò)仿真結(jié)果
可見對于協(xié)議制定的傳統(tǒng)事件觸發(fā)SpaceWire總線網(wǎng)絡(luò),由于數(shù)據(jù)包在傳輸過程中存在許多競爭,導(dǎo)致部分?jǐn)?shù)據(jù)包的傳輸延時大小不定,消息實時性難以控制。
當(dāng)網(wǎng)絡(luò)中所有消息均為時間觸發(fā)消息時,即知道所有消息的生成時刻,稱這樣的網(wǎng)絡(luò)為時間觸發(fā)網(wǎng)絡(luò)。
為了避免時間觸發(fā)消息在傳輸過程中出現(xiàn)競爭,影響傳輸延時,應(yīng)對消息的生成時刻進行調(diào)度。本文按照以下原則,將消息按周期大小排序,周期小的消息先生成,兩個消息的初始生成時刻間隔1ms,見表2。
表2 時間觸發(fā)網(wǎng)絡(luò)消息屬性
仿真結(jié)果如圖7所示,給出了ES1、ES2、ES3這3條消息的傳輸延時結(jié)果。
圖7 時間觸發(fā)網(wǎng)絡(luò)仿真結(jié)果
可見對于時間觸發(fā)網(wǎng)絡(luò),由于在仿真前對時間觸發(fā)消息的生成發(fā)送時刻進行了調(diào)度,避開了時間觸發(fā)消息的傳輸時間,故在傳輸過程中不存在競爭,其傳輸延時穩(wěn)定,均為最短傳輸端到端延時,網(wǎng)絡(luò)消息傳輸?shù)膶崟r性得到了保證。
當(dāng)網(wǎng)絡(luò)中同時包含事件觸發(fā)消息和時間觸發(fā)消息時,稱網(wǎng)絡(luò)為事件時間觸發(fā)兼容網(wǎng)絡(luò)。
在這類網(wǎng)絡(luò)中,部分消息為時間觸發(fā)消息,為這類消息規(guī)劃生成時刻,并在路由器上按照2.3.3 節(jié)所述設(shè)置相應(yīng)的調(diào)度時間窗口,用以轉(zhuǎn)發(fā)相應(yīng)的數(shù)據(jù)包。對于事件觸發(fā)消息,其生成時刻隨機,通過窗寬間隔進行轉(zhuǎn)發(fā)。仿真設(shè)置的消息屬性見表3,ES2、ES4為時間觸發(fā)消息,其余事件觸發(fā)。
表3 事件時間觸發(fā)兼容網(wǎng)絡(luò)消息屬性
仿真結(jié)果如圖8所示,給出了ES1、ES2這2條消息的傳輸延時結(jié)果??梢?,對于網(wǎng)絡(luò)中時間觸發(fā)消息,其傳輸延遲穩(wěn)定,對事件觸發(fā)消息,其傳輸延時不定。這是由于在路由器上為時間觸發(fā)消息規(guī)劃了相應(yīng)的時間窗口,保證了其路由轉(zhuǎn)發(fā)過程。事件時間觸發(fā)兼容網(wǎng)絡(luò)保證了網(wǎng)絡(luò)中重要時間觸發(fā)消息的傳輸實時性,又保留了事件觸發(fā)消息的靈活性,對構(gòu)建網(wǎng)絡(luò)極具參考價值。
圖8 事件時間兼容網(wǎng)絡(luò)仿真結(jié)果
SpaceWire網(wǎng)絡(luò)重構(gòu)可采用路由器內(nèi)部冗余的方式[10]。本文中考慮到SpaceWire具有組路由的工作特點,在網(wǎng)絡(luò)鏈路損壞的情況下,可通過調(diào)整路由轉(zhuǎn)發(fā)防止進行重構(gòu)。
如圖9 所示,路由器WR1和WR2之間有兩條鏈路linka和linkb,在兩條鏈路均完好時,路由器間可通過任一鏈路進行通信。
圖9 網(wǎng)絡(luò)故障重構(gòu)模型
設(shè)置ES1、ES2、ES3作為源節(jié)點向TM 發(fā)送時間觸發(fā)消息。設(shè)置ES1、ES2的消息通過linka進行轉(zhuǎn)發(fā),并在linka所在端口規(guī)劃相應(yīng)的時間窗口;ES3的時間觸發(fā)消息通過linkb進行轉(zhuǎn)發(fā)。
若網(wǎng)絡(luò)運行過程中鏈路linkb發(fā)生故障,此時應(yīng)對網(wǎng)絡(luò)進行重構(gòu),重構(gòu)方式為轉(zhuǎn)換路由方式,讓ES3的時間觸發(fā)消息也通過鏈路linka進行轉(zhuǎn)發(fā)。此時由于ES1、ES2的時間觸發(fā)消息在端口a具有調(diào)度時間窗口,在重構(gòu)后應(yīng)將ES3的時間觸發(fā)數(shù)據(jù)包作為事件觸發(fā)數(shù)據(jù)包處理,到達(dá)路由器后,按照事件觸發(fā)消息轉(zhuǎn)發(fā)條件進行路由轉(zhuǎn)發(fā)。
為圖9所示網(wǎng)絡(luò)設(shè)置了相應(yīng)的數(shù)據(jù)包屬性,見表4。
表4 故障重構(gòu)網(wǎng)絡(luò)消息屬性
進行仿真,假定在仿真進行到1s時鏈路b出現(xiàn)故障,仿真延時結(jié)果如圖10所示。
圖10 故障重構(gòu)仿真結(jié)果
可見重構(gòu)前,ES1、ES2、ES3的消息數(shù)據(jù)包不存在競爭,傳輸延時均為最小,重構(gòu)后,由于ES1、ES2具有時間窗口保證其路由轉(zhuǎn)發(fā),而ES3視為事件觸發(fā)的數(shù)據(jù)包,故部分ES3數(shù)據(jù)包的傳輸延時出現(xiàn)了增加??梢?,重構(gòu)在實現(xiàn)網(wǎng)絡(luò)正常工作的基礎(chǔ)上,也保證了多數(shù)消息的傳輸實時性。
本文完成了SpaceWire通信網(wǎng)絡(luò)的建模,構(gòu)建了終端應(yīng)用節(jié)點、時間主控節(jié)點和帶時間窗口的蟲洞路由器模型,通過對時間觸發(fā)消息發(fā)送時刻以及蟲洞路由器的工作時間軸的調(diào)度規(guī)劃,實現(xiàn)了對網(wǎng)絡(luò)消息傳輸?shù)姆抡婵刂?,解決了SpaceWire網(wǎng)絡(luò)消息傳輸延時不確定的問題。本文設(shè)計了3類典型的仿真場景,通過分析仿真結(jié)果消息傳輸端到端延時,得到了各類場景的工作特點。提出了一種基于組路由的重構(gòu)方案,并通過仿真驗證了其可行性。本文的研究成果兼并事件觸發(fā)與時間觸發(fā)網(wǎng)絡(luò)的特點,可用于SpaceWire網(wǎng)絡(luò)仿真或其它相關(guān)研究。
[1]ECSS.ECSS-E-ST-50-12C:SpaceWire-Links,nodes,routers and networks[S].2008.
[2]Roberts D,Parkes S.Spacewire missions and applications[C]//Proceedings of the 3th International SpaceWire Conference.IEEE,2010.
[3]YANG Zhi,LI Guojun,YANG Fang,et al.Design of communication protocol for SpaceWire onboard networks [J].Journal of Astronautics,2012,33 (2):200-209 (in Chinese).[楊志,李國軍,楊芳,等.SpaceWire星載網(wǎng)絡(luò)通信協(xié)議設(shè)計 [J].宇航學(xué)報,2012,33 (2):200-209.]
[4]Parkes S,F(xiàn)errer A,Mills S,et al.SpaceWire-D:Deterministic data delivery with SpaceWire [C]//International SpaceWire Conference,2010.
[5]Tarrillo J,Chipana R,Chielle E,et al.Designing and analyzing a SpaceWire router IP for soft errors detection [C]//12th Latin American Test Workshop.IEEE,2011:1-6.
[6]CHEN Xizhi,LIU Xiaofeng,YANG Mingchuan.Research on real-time transmission performance of SpaceWire network [J].Communication Technology,2012,45 (9):93-95 (in Chinese).[陳熙之,劉曉鋒,楊明川.SpaceWire 總線網(wǎng)絡(luò)實時傳輸性能研究 [J].通信技術(shù),2012,45 (9):93-95.]
[7]HOU Jianru,CHEN Xiaomin.The simulation on the delay jitter of SpaceWire[J].Journal of National University of Defense Technology,2013,35 (5):114-119 (in Chinese).[侯劍儒,陳曉敏.SpaceWire時延抖動的仿真 [J].國防科技大學(xué)學(xué)報,2013,35 (5):114-119.]
[8]Ferrandiz T,F(xiàn)rances F,F(xiàn)raboul C.Worst-case end-to-end delays evaluation for SpaceWire networks[J].Discrete Event Dynamic Systems,2011,21 (3):339-357.
[9]Parkes S,Armbruster P.SpaceWire:Spacecraft onboard data-h(huán)andling network[J].Acta Astronautica,2010,66(1):88-95.
[10]ZHONG Xueyan,YAO Rui,BAO Xiaosheng.Dynamic partial reconfiguration fault-tolerant technology applied in SpaceWire router [J].Application Research of Computers,2013,30 (3):703-705 (in Chinese).[鐘雪燕,姚睿,鮑小勝.一種應(yīng)用于SpaceWire路由器動態(tài)部分重構(gòu)的容錯技術(shù)[J].計算機應(yīng)用研究,2013,30 (3):703-705.]