崔平 湯鴻劍
(徐州工程學(xué)院信息工程學(xué)院(大數(shù)據(jù)學(xué)院) 江蘇省徐州市 221018)
我國已度過5G 商用元年,從汽車產(chǎn)業(yè)角度看來,5G 在數(shù)據(jù)傳輸速度提升和延時(shí)降低方面,將升級(jí)到一個(gè)新的高度,它會(huì)對(duì)交通和汽車行業(yè)的轉(zhuǎn)型發(fā)展將產(chǎn)生深刻影響。對(duì)于未來中國智能交通而言,車載智能應(yīng)用與車聯(lián)網(wǎng)是一片藍(lán)海,會(huì)成為未來國際競爭和資本涌入的焦點(diǎn)。為了銜接即將到來的自動(dòng)駕駛技術(shù),助力中國汽車產(chǎn)業(yè)智能化布局。在現(xiàn)有自動(dòng)駕駛尚未成熟的情況下,遠(yuǎn)程駕駛技術(shù)成為了人們開啟智能交通不可缺少的一環(huán)。
在出行方面,遠(yuǎn)程駕駛有望成為普羅大眾經(jīng)濟(jì)適用的出行技術(shù),由于可以共享汽車、共享遠(yuǎn)程駕駛員,一定程度上減輕設(shè)備維護(hù)成本,節(jié)省人力資源。在遠(yuǎn)程駕駛車輛上人們可以休息、娛樂,極大的解放了生產(chǎn)力,對(duì)于整個(gè)社會(huì)而言都是一次效率革命。未來自動(dòng)駕駛普及之后,遠(yuǎn)程駕駛員可以為自動(dòng)駕駛車輛保駕護(hù)航,在極端情況下可以幫助管控自動(dòng)駕駛車輛,以避免交通事故,讓人代替計(jì)算機(jī)做出合理決策,從而讓自動(dòng)駕駛技術(shù)避免“新電車難題”等倫理問題。遠(yuǎn)程操縱駕駛相對(duì)比無人自動(dòng)駕駛,具有更高的安全性與可操作性,對(duì)于一些危險(xiǎn)環(huán)境下的細(xì)致操作,可帶來更大的效益,同時(shí)一個(gè)駕駛員可以負(fù)責(zé)多個(gè)車載終端。
遠(yuǎn)程操縱駕駛依賴于通信網(wǎng)絡(luò)基礎(chǔ)設(shè)施,在遠(yuǎn)程車輛和遠(yuǎn)程駕駛員之間的連通性方面,在延遲和性能方面都提出了許多挑戰(zhàn)。遠(yuǎn)程操縱駕駛系統(tǒng)可以視為一個(gè)毫秒級(jí)的實(shí)時(shí)系統(tǒng),其協(xié)議不應(yīng)當(dāng)丟包重傳,且傳輸?shù)难舆t和丟包率要盡可能低。
在實(shí)時(shí)傳輸中,要保證傳輸過程盡力可靠,在UDP 協(xié)議基礎(chǔ)上實(shí)施設(shè)計(jì)是一個(gè)較為合理的選項(xiàng),只需在UDP 上做一層降低時(shí)延和控制擁塞的機(jī)制,實(shí)時(shí)性和時(shí)延效果會(huì)比TCP 好很多。由于廢棄了重傳機(jī)制,協(xié)議應(yīng)該主動(dòng)冗余報(bào)文,即同一個(gè)報(bào)文發(fā)送多次,以達(dá)到“即使有報(bào)文丟失,也能有報(bào)文到達(dá)”的效果。主動(dòng)丟棄過期報(bào)文,可保證阻塞或冗余的報(bào)文延遲到達(dá)后不擾亂正常指令控制。協(xié)議的擁塞機(jī)制,基于BBR 對(duì)擁塞的定義,即當(dāng)網(wǎng)絡(luò)鏈路上的報(bào)文數(shù)量大于BDP 時(shí),就認(rèn)為出現(xiàn)擁塞。采用BDP 作為“虛擬”發(fā)送窗口大小,以調(diào)整發(fā)送報(bào)文的周期PacingRate 以避免擁塞,且用以計(jì)算報(bào)文冗余數(shù)量redundancy 來保證不丟包。
控制信息的傳遞需要保證當(dāng)前車輛接收的指令是最新的,否則遠(yuǎn)程車輛的駕駛行為與當(dāng)前駕駛路況不匹配,將會(huì)出現(xiàn)嚴(yán)重的問題,因此報(bào)文應(yīng)當(dāng)具備時(shí)效性。
圖1:主動(dòng)冗余流程圖
借鑒Time Out 思想,為保證每個(gè)報(bào)文盡量實(shí)時(shí)到達(dá),不僅需要發(fā)送冗余報(bào)文,還需要為每個(gè)待接收?qǐng)?bào)文設(shè)定生命周期。若報(bào)文生命周期結(jié)束,則該報(bào)文指令失效。在控制端為每一個(gè)報(bào)文編號(hào),設(shè)1 到65535 為報(bào)文序號(hào),當(dāng)序號(hào)用完,自動(dòng)重置為1。車載端每接收到一個(gè)報(bào)文后,會(huì)為下一個(gè)待接收?qǐng)?bào)文設(shè)置計(jì)時(shí)器,假設(shè)生命周期為50ms。若在生命周期內(nèi),未收到待接收?qǐng)?bào)文,則轉(zhuǎn)為接收下一個(gè)報(bào)文,并將計(jì)時(shí)器歸零。比如1 號(hào)報(bào)文到達(dá),車載端計(jì)時(shí)器開始計(jì)時(shí),如果2 號(hào)報(bào)文在50ms 內(nèi)沒有到達(dá),就放棄接收2 號(hào)報(bào)文,轉(zhuǎn)而為3 號(hào)報(bào)文計(jì)時(shí)。當(dāng)然,這里的50ms 是當(dāng)前網(wǎng)絡(luò)能達(dá)到的時(shí)延,根據(jù)具體網(wǎng)絡(luò)傳輸能力而定。
由于遠(yuǎn)程操縱對(duì)實(shí)時(shí)的敏感性,重傳反而容易帶來過期數(shù)據(jù),因此丟包時(shí)不應(yīng)重傳,控制端會(huì)同時(shí)發(fā)送兩個(gè)以上相同的報(bào)文。這樣即便部分丟失其他報(bào)文也可按時(shí)到達(dá)。
如何確定發(fā)送冗余報(bào)文數(shù)量redundancy。一種可靠的冗余度調(diào)整方法是,假設(shè)相同報(bào)文為一組,接收方在10s 內(nèi),記錄各個(gè)報(bào)文組丟包事件的次數(shù),并取最小值反饋給發(fā)送端。
式中:i 表示為10s 內(nèi)不同報(bào)文組的序號(hào)(單位:個(gè))。
主動(dòng)冗余流程圖如圖1所示。
車載端寫入測試信息并發(fā)送消息報(bào)文,通知控制端開始探測網(wǎng)絡(luò)參數(shù)。控制端發(fā)送測試報(bào)文,并等待對(duì)方報(bào)文,收到報(bào)文后,按默認(rèn)參數(shù)redundancy=1 和PacingRate=20ms 發(fā)送報(bào)文確認(rèn),連續(xù)發(fā)送三組。同時(shí),車載端異步地根據(jù)接收的消息報(bào)文,計(jì)算redundancy,轉(zhuǎn)發(fā)最后一個(gè)報(bào)文,都通過反饋報(bào)文發(fā)送給控制端。
為了防止網(wǎng)絡(luò)因大規(guī)模的通信負(fù)載而癱瘓,或因控制端和車載端網(wǎng)絡(luò)通信能力不對(duì)等而丟包嚴(yán)重,同時(shí)要能計(jì)算出redundancy 和PacingRate,需要網(wǎng)絡(luò)擁塞識(shí)別和發(fā)送控制機(jī)制,及時(shí)控制網(wǎng)絡(luò)上下行速率。
將擁塞與丟包解耦,采用對(duì)擁塞現(xiàn)象的新定義:只有當(dāng)網(wǎng)絡(luò)上的報(bào)文數(shù)量大于BDP 時(shí),系統(tǒng)才認(rèn)為當(dāng)前網(wǎng)絡(luò)鏈路出現(xiàn)了擁塞。為保證實(shí)時(shí)性的同時(shí)做到盡量可靠傳輸,采用BDP 作為發(fā)送窗口大小,調(diào)整發(fā)送報(bào)文的周期PacingRate 以避免發(fā)送過程擁塞。
由于要對(duì)網(wǎng)絡(luò)環(huán)境實(shí)時(shí)監(jiān)控才能計(jì)算其BDP,首先關(guān)心的參數(shù)是RtProp(Round-trip Propagation,物理鏈路時(shí)延)。真實(shí)的RtProp 是難以計(jì)算的,可以通過RTT(Round Trip Time,往返時(shí)延)求得其近似值。由于發(fā)送端并發(fā)發(fā)送多個(gè)相同報(bào)文時(shí),可以視為同時(shí)在t0 時(shí)刻發(fā)送,并為該組報(bào)文打上時(shí)間戳。假定同時(shí)發(fā)送的報(bào)文,沿同一鏈路發(fā)送,則在理想情況下報(bào)文同時(shí)發(fā)送,也應(yīng)同時(shí)收到,但現(xiàn)實(shí)并非如此,原因是OtherDelay,即報(bào)文發(fā)送時(shí)延、排隊(duì)時(shí)延、處理時(shí)延等因素。接收端收到第一個(gè)報(bào)文,開始計(jì)時(shí),收到第二個(gè)報(bào)文后,計(jì)時(shí)結(jié)束得到td,數(shù)值近似于OtherDelay。若未收到第二個(gè),卻收到了第i 個(gè)報(bào)文,則以此類推。
在上課之前,教師要制定合理的教學(xué)計(jì)劃,結(jié)合教材內(nèi)容解讀教學(xué)目標(biāo),最好是提前一周就制定好教學(xué)方案.在集體備課之前,備課組長要規(guī)定教師個(gè)人準(zhǔn)備的內(nèi)容.
式中,OtherDelay 表示其他時(shí)延,(單位:ms);
td 表示接收端收到第一個(gè)報(bào)文與后一個(gè)報(bào)文的時(shí)間間隔(單位:ms);
每次接收到一組新報(bào)文,就更新OtherDelay。每過一定時(shí)間,接收端收到該組最后一個(gè)冗余報(bào)文后,分別將OtherDelay、redundancy 與最后一個(gè)報(bào)文,轉(zhuǎn)發(fā)給發(fā)送端。發(fā)送端收到立即記下時(shí)間t1,并識(shí)別該報(bào)文,得到OtherDelay 與t0。RtProp 需要減去發(fā)送周期PacingRate 與OtherDelay,才是真實(shí)的網(wǎng)絡(luò)往返時(shí)間,于是得出RTT 與RtProp。
圖2:反饋報(bào)文結(jié)構(gòu)
圖3:消息報(bào)文結(jié)構(gòu)
由于發(fā)送端已知發(fā)送的相同報(bào)文數(shù)量PacketNum 和報(bào)文長度PacketSize,但這樣算出的帶寬并不準(zhǔn)確。同一時(shí)間的Bandwidth和RTT 不可同時(shí)測出,要得到時(shí)延的準(zhǔn)確數(shù)據(jù),就必須排空網(wǎng)絡(luò)鏈路緩存區(qū),其他鏈路的流量盡量少,但因此帶寬會(huì)變低。要取得準(zhǔn)確的帶寬大小,就需要不斷發(fā)送報(bào)文占滿整個(gè)鏈路的緩存區(qū),這種狀態(tài)下時(shí)延又會(huì)偏大。在此處采用修正參數(shù)AdjustSize,用以增大帶寬估計(jì)值,進(jìn)而得到接近當(dāng)前網(wǎng)絡(luò)狀態(tài)的發(fā)送窗口大小。AdjustSize 參數(shù)初值為1,每次對(duì)AdjustSize 的修正都會(huì)保留,若本次時(shí)延高于上次,則AdjustSize 擴(kuò)大為原來的4 倍;若本次時(shí)延低于上次,則AdjustSize 縮小為原來的0.88 倍,不難得出帶寬時(shí)延乘積BDP。
式中,BW——表示Bandwidth,帶寬,(單位:Mbps);
為了得到PacingRate,需要知道發(fā)送窗口的大小CWND。
不需要ACK 報(bào)文,發(fā)送端計(jì)算出發(fā)送窗口大小后,得到PacingRate。
綜上所述,通過redundancy 和PacingRate 的計(jì)算過程確認(rèn)報(bào)文的冗余數(shù)量和發(fā)送頻率,首次使用時(shí)將redundancy 初始化為1,PacingRate 初始化為20ms,控制端與車載端相互配合。
基于前文的傳輸機(jī)制,反饋報(bào)文設(shè)計(jì)格式如下:
反饋報(bào)文總長度為5 字節(jié);序號(hào)為16 位,將無符號(hào)整數(shù)0x0000 視為反饋報(bào)文的標(biāo)識(shí)序號(hào);冗余報(bào)文數(shù)量為8 位無符號(hào)整數(shù),范圍在0~255,在默認(rèn)為1 個(gè)報(bào)文基礎(chǔ)上增加,即可發(fā)送1~256 個(gè)相同報(bào)文。每10s 后,得出該時(shí)間段內(nèi)的最小redundancy(與報(bào)文組大小偏移量數(shù)據(jù)機(jī)制一致);其他時(shí)延為2 字節(jié)雙精度浮點(diǎn)數(shù),附帶最新的OtherDelay。反饋報(bào)文結(jié)構(gòu)如圖2所示。
消息報(bào)文設(shè)計(jì)格式如下:
消息報(bào)文長度為521 字節(jié);報(bào)文序號(hào)為16 位,為無符號(hào)整數(shù),范圍在1~65535;同組序號(hào)一致,且一組報(bào)文發(fā)送完畢后,自動(dòng)遞增,序號(hào)到達(dá)65535 時(shí)重置;報(bào)文組大小偏移量為1 字節(jié)無符號(hào)整數(shù),范圍在0~255,在默認(rèn)為1 個(gè)報(bào)文基礎(chǔ)上增加,即可發(fā)送1~256 個(gè)相同報(bào)文;組內(nèi)序號(hào)同為無符號(hào)整數(shù),1 字節(jié)大小,范圍在0~255;顯然,同一組內(nèi),報(bào)文按發(fā)送順序編號(hào),組內(nèi)最多有256 個(gè)不同序號(hào)(0~255)。時(shí)間戳長達(dá)16 位,能滿足到毫秒級(jí)。報(bào)文內(nèi)容大小最大為518 字節(jié),實(shí)際大小根據(jù)傳輸U(kuò)DP 套接字時(shí)根據(jù)數(shù)據(jù)大小設(shè)置,消息報(bào)文結(jié)構(gòu)如圖3所示。
網(wǎng)絡(luò)預(yù)警本質(zhì)是在協(xié)議層獲取報(bào)文的數(shù)據(jù),計(jì)算時(shí)延與丟包,這對(duì)兩個(gè)終端的用戶極為重要。有了上面算法的基礎(chǔ),預(yù)警策略就不再困難。對(duì)于車載端而言,它只需要在收到報(bào)文計(jì)算反饋報(bào)文的過程中,獲取前后兩個(gè)包的間隔時(shí)間、已經(jīng)丟失報(bào)文數(shù)目。而對(duì)于控制端而言,它通過車載端發(fā)送的反饋報(bào)文和轉(zhuǎn)發(fā)報(bào)文,計(jì)算報(bào)文發(fā)送頻率和報(bào)文冗余度,在此過程中就已包含了RTT 和丟包數(shù)量的計(jì)算。兩個(gè)終端通信開始時(shí)設(shè)置參數(shù),用戶按對(duì)網(wǎng)絡(luò)的需求,規(guī)定兩報(bào)文以多大間隔發(fā)送,有多少丟包數(shù)目才構(gòu)成網(wǎng)絡(luò)問題,向終端用戶預(yù)警即可。
本文講述了遠(yuǎn)程操縱駕駛系統(tǒng)傳輸協(xié)議設(shè)計(jì),一方面,遠(yuǎn)程駕駛協(xié)議彌補(bǔ)了遠(yuǎn)程駕駛控制傳輸協(xié)議的空白,以期達(dá)到了高頻率、低時(shí)延傳輸?shù)囊?,在另一方面,它解釋并控制網(wǎng)絡(luò)的狀態(tài),降低鏈路往返時(shí)延,提高網(wǎng)絡(luò)穩(wěn)定性,自動(dòng)調(diào)整發(fā)送頻率。