前言 IPv6單棧模式是指僅使用IPv6不支持IPv4,。向 IPv6單棧過渡是必然趨勢,。而IPv6單棧演進(jìn)的可視化測量研究目前較少。設(shè)計(jì)IPv6網(wǎng)絡(luò)可視化測量系統(tǒng),,既要考慮IPv6協(xié)議本身的標(biāo)識,、封裝屬性,又要考慮可視化測量系統(tǒng)自身在IPv6單棧環(huán)境下的運(yùn)行,。 隨著IPv6規(guī)模部署的推進(jìn),,各類應(yīng)用系統(tǒng)及設(shè)備對IPv6網(wǎng)絡(luò)和協(xié)議支持需求的劇增成為IPv6單棧演進(jìn)需要考慮的關(guān)鍵問題之一。支持IPv6的高精度衛(wèi)星定位網(wǎng)絡(luò)測量系統(tǒng),,作為信息物理系統(tǒng)[1](Cyber-Physical Systems,,CPS)的一部分,,對各行各業(yè)開展更大范圍、更深層次的IPv6協(xié)同創(chuàng)新,,推動IPv6單棧大規(guī)模部署具有非常重要的意義,。 在此背景下,作為共性關(guān)鍵技術(shù)的IPv6單棧的演進(jìn)和北斗系統(tǒng)[2]的融合應(yīng)用變得尤其重要,。因此,,IPv6可視化測量系統(tǒng)需要兼顧支持IPv6單棧和高精度衛(wèi)星定位這兩方面的設(shè)計(jì)問題,系統(tǒng)自身也能在IPv6單棧環(huán)境下穩(wěn)定運(yùn)行,。 北斗三號導(dǎo)航定位系統(tǒng)作為全球?qū)Ш叫l(wèi)星系統(tǒng)[3](GlobalNavigation Satellite System,,GNSS),發(fā)射衛(wèi)星數(shù)量最多,,覆蓋120個國家和地區(qū),,軌道徑向精度6.6厘米[4]。北斗三號在高精度算法和高精度板卡制造方面,,運(yùn)用RTK(Real-time Kinematic,,實(shí)時動態(tài)差分 ) 技術(shù)能將精度提升至厘米級。 消息隊(duì)列遙測傳輸[5](Message Queuing Telemetry Transport,,MQTT)是ISO標(biāo)準(zhǔn)下基于發(fā)布/訂閱范式的消息協(xié)議,。它工作在TCP/IP協(xié)議族上,是為硬件性能低下的遠(yuǎn)程設(shè)備以及網(wǎng)絡(luò)狀況糟糕的情況而設(shè)計(jì)的發(fā)布 / 訂閱型消息協(xié)議,。 MQTT 協(xié)議在受限的環(huán)境中,,如衛(wèi)星鏈路通信傳感器、機(jī)器與機(jī)器通信和物聯(lián)網(wǎng)中已廣泛使用,。通過MQTT協(xié)議,,目前已經(jīng)擴(kuò)展出了數(shù)十個MQTT服務(wù)器端程序,可以通過PHP,、Java,、Python、C,、C#等編程語言來向MQTT發(fā)送相關(guān)消息,。 本文針對移動終端運(yùn)行關(guān)鍵數(shù)據(jù),與全球衛(wèi)星定位系統(tǒng)的經(jīng)緯度坐標(biāo)綁定,,基于MQTT協(xié)議進(jìn)行IPv6網(wǎng)絡(luò)發(fā)布和訂閱,,為指揮控制中心全面了解和監(jiān)測現(xiàn)場移動終端和被測對象的運(yùn)行狀態(tài),提供可視化測量系統(tǒng)并進(jìn)行驗(yàn)證和展示,。 01 系統(tǒng)設(shè)計(jì) 定位原理與技術(shù)平臺 全球衛(wèi)星定位系統(tǒng)的基本原理是:測量出已知位置的衛(wèi)星到用戶接收機(jī)之間的距離,,然后綜合多顆衛(wèi)星的數(shù)據(jù),就可知道接收機(jī)的具體位置,。 要達(dá)到這一目的,,衛(wèi)星的位置可以根據(jù)星載時鐘所記錄的時間在衛(wèi)星星歷中查出,。而用戶到衛(wèi)星的距離則通過記錄衛(wèi)星信號傳播到用戶所經(jīng)歷的時間,再將其乘以光速得到,。由于大氣層電離層的干擾,,這一距離并不是用戶與衛(wèi)星之間的真實(shí)距離,而是偽距(PR),。 當(dāng)GPS衛(wèi)星正常工作時,,會不斷地用1和0二進(jìn)制碼元組成的偽隨機(jī)碼(簡稱“偽碼”)發(fā)射導(dǎo)航電文。然而,,由于用戶接收機(jī)使用的時鐘與衛(wèi)星星載時鐘不可能總是同步,,所以除了用戶的三維坐標(biāo) x、y,、z 外,,還要引進(jìn)一個Δt,即衛(wèi)星與接收機(jī)之間的時間差作為未知數(shù),,然后用4個方程將這4個未知數(shù)解出來。因此,,如果想知道接收機(jī)所處的位置,,至少要能接收到4顆衛(wèi)星的信號[6]。 本文采用C/S結(jié)構(gòu)的python開發(fā)環(huán)境和ARM嵌入式開發(fā)環(huán)境相結(jié)合的方式實(shí)現(xiàn)IPv6可視化測量系統(tǒng),。 衛(wèi)星接收機(jī)通過GNSS室外天線,、基站和USB轉(zhuǎn)RS485 模塊接收RTCM(Radio Technical Commission for Maritime Services,航海無線電技術(shù)委員會差分信號格式)數(shù)據(jù),,RTCM服務(wù)器將衛(wèi)星RTCM信息編碼RTCMessage消息提交給MQTT Server程序,。 移動終端作為MQTT訂閱客戶端,本地鏈路地址訂閱RTCM信息解析衛(wèi)星信息,,結(jié)合GNSS基站作為固定站的位置,,計(jì)算移動終端作為移動站本身的位置。 DHCP服務(wù)器根據(jù)定位精度下發(fā)不同的IPv6地址前綴和后綴,。移動終端把經(jīng)緯度信息編碼為DeviceMessage消息發(fā)給MQTT服務(wù)器,。Web服務(wù)器訂閱DeviceMessage消息解析出經(jīng)緯度信息和技術(shù)參數(shù)。系統(tǒng)組成結(jié)構(gòu)如圖1所示,。 圖1 系統(tǒng)組成結(jié)構(gòu) 接收機(jī)與RTCM服務(wù)器為同一臺服務(wù)器,,移動終端設(shè)備由UM482基站、USB轉(zhuǎn)RS485模塊,、支持本地鏈路地址FE80::/10的通信模塊組成,,移動終端(傳感器 + 嵌入式 OS)和MQTT服務(wù)器之間采用MQTT協(xié)議通信,訂閱RTCMessage信息并發(fā)布DeviceMessage信息,。 IPv6 協(xié)議單棧部署設(shè)計(jì) IPv6協(xié)議單棧部署設(shè)計(jì)包括IPv6單棧網(wǎng)絡(luò)設(shè)計(jì)和 IPv6單棧站點(diǎn)設(shè)計(jì),。 IPv6單棧網(wǎng)絡(luò)設(shè)計(jì)的重點(diǎn)為基于DHCPv6的地址生成系統(tǒng),,此系統(tǒng)支持基于用戶信息和地理信息生成IPv6地址,系統(tǒng)組成原理如圖2所示,。 圖2 單棧IPv6地址生成系統(tǒng)原理 DHCPv6服務(wù)器接收IPv6地址請求,,并對所述 IPv6地址請求中的用戶信息和地理信息進(jìn)行壓縮處理,確定IPv6地址的后64位(可變),,從而確定IPv6地址,。其中,地理信息包括經(jīng)度信息,、緯度信息以及高度信息,;用戶信息包括賬號信息。 具體而言,,DHCPv6服務(wù)器確定所述地理信息與DHCPv6服務(wù)器的地理信息的差值,,并分別對該差值以及與所述用戶信息相關(guān)的賬號信息進(jìn)行壓縮處理。 由此確定與所述差值相關(guān)的5個字節(jié),,以及與賬號信息相關(guān)的3個字節(jié),。其中,5個字節(jié)包括與經(jīng)度信息相關(guān)的2個字節(jié),,與緯度信息相關(guān)的2個字節(jié)以及與高度信息相關(guān)的1個字節(jié),。 壓縮處理后,確定與該DHCPv6服務(wù)器單元通信的用戶端的IPv6地址的后64位,,并判斷該用戶端的IPv6地址是否與數(shù)據(jù)庫中存儲的已有IPv6地址相同,。 若相同,則DHCPv6服務(wù)器單元隨機(jī)生成一修正IPv6地址,,并將其下發(fā)至該用戶端,;若不同,則保留該用戶端的IPv6地址,,并將其下發(fā)至該用戶端,。 如需要更高精度的地址編碼,可調(diào)整后64位空間,,最長為后96位,,這時經(jīng)度信息可相應(yīng)調(diào)整為3個字節(jié),緯度信息可調(diào)整為3個字節(jié),,高度信息可調(diào)整為2個字節(jié),,用戶信息可調(diào)整為4個字節(jié)。 IPv6地址生成系統(tǒng)還包括中央管理服務(wù)器,,用于存儲多個DHCPv6服務(wù)器的地理信息和分配的對應(yīng)IPv6地址,,從而通過逆向解析逆向追溯,確定用戶端的地理信息和賬號信息。 IPv6單棧站點(diǎn)設(shè)計(jì)的重點(diǎn)在于禁止IPv4協(xié)議的運(yùn)行或在網(wǎng)卡上禁用IPv4地址,,本文基于ubuntu20.04和Apache2.4.48實(shí)現(xiàn),。 設(shè)備消息結(jié)構(gòu)體和流程設(shè)計(jì) 根據(jù)可視化測量系統(tǒng)的設(shè)計(jì)流程,通過MQTT服務(wù)器傳輸的消息結(jié)構(gòu)體主要包括RTCMessage 和DeviceMessage兩種,,其中RTCM主要是增加長度字段轉(zhuǎn)發(fā),。本文設(shè)計(jì)了移動終端設(shè)備到MQTT服務(wù)器的DeviceMessage數(shù)據(jù)結(jié)構(gòu),該結(jié)構(gòu)體為56字節(jié),,如下所示,,保留字段支持不同類型的時延地理敏感性指標(biāo)參數(shù)填充。 RTCMessage消 息 發(fā) 布 訂 閱 程 序 流 程 設(shè) 計(jì) 如 下:
圖3 RTCM發(fā)布流程和MQTT訂閱流程 DeviceMessage消息發(fā)布訂閱程序流程設(shè)計(jì)如下:
02 應(yīng)用效果 通過對單點(diǎn)定位和多點(diǎn)定位精度測量的對比可以發(fā)現(xiàn),多點(diǎn)定位時經(jīng)緯度位置偏移范圍更小,。接收的衛(wèi)星定位經(jīng)緯度信息可通過對保存的歷史數(shù)據(jù)進(jìn)行偏移分析來獲取,。在多點(diǎn)定位固定基站和移動站環(huán)境搭建完成后,可以部署 MQTT程序傳輸技術(shù)參數(shù)數(shù)據(jù)并進(jìn)行應(yīng)用展示,。MQTT程序需安裝開發(fā)庫以支持RTCMessage消息和DeviceMessage的發(fā)布和訂閱,。 MQTT程序包括RTCM消息與Device消息的發(fā)布和訂閱四個程序,本文主要以RTCM消息發(fā)布和Device消息訂閱為例說明程序的實(shí)現(xiàn)。 發(fā)布RTCM消息的客戶端在Python開發(fā)庫支持下,,通過serial.tools.list_ports.comports()函數(shù)枚舉設(shè)備串口列表,,查看可用的端口,獲得當(dāng)前有效的串口文件句柄,,調(diào)用serial.Serial(serialName1,115200,timeout=60)打開端口,,啟用定時器,在定時器中獲得串口數(shù)據(jù)狀態(tài),。 當(dāng)有數(shù)據(jù)觸發(fā)時,,讀取RTCM消息,增加衛(wèi)星數(shù)據(jù)的長度字段放在消息頭部,,編碼為二進(jìn)制流,,調(diào)用client.publish("RTCMessage",data)函數(shù)發(fā)布RTCM消息。RTCM消息發(fā)布程序MQTT模塊部分連接IPv6服務(wù)器的代碼如下所示,。 運(yùn)行RTCMessage訂閱程序,,通過Tcpdump抓包可以看到協(xié)議運(yùn)行在IPv6地址上。 DeviceMessage消息訂閱程序根據(jù)移動終端發(fā)布的內(nèi)容進(jìn)行訂閱,,消息內(nèi)容包括設(shè)備號,、參數(shù)大小、定位模式,、經(jīng)緯度,、設(shè)備狀態(tài)等信息,其中經(jīng)緯度信息是衛(wèi)星多系統(tǒng)聯(lián)合定位的結(jié)果,,聯(lián)合定位輸出信息包含GNSS接收機(jī)的時間和定位相關(guān)數(shù)據(jù),。語句以GNGGA[7]開頭,表示GNSS定位信息,,只有北斗參與時以BDGGA開頭,,有兩個衛(wèi)星系統(tǒng)及以上的衛(wèi)星參與定位解算都以GNGGA形式輸出。表1為GNGGA數(shù)據(jù)結(jié)構(gòu)表,。 表1 GNGGA數(shù)據(jù)結(jié)構(gòu) 其中,,GPS質(zhì)量指示符qual字段表示定位解算的狀態(tài),主要有:
GNGGA數(shù)據(jù)結(jié)構(gòu)經(jīng)度(DDDmm.mm)和緯度(DDmm.mm),,其中,D是度,,m是分,,小數(shù)點(diǎn)前有4~5位,與傳統(tǒng)的表示法不同,。移動終端設(shè)備在發(fā)布之前轉(zhuǎn)換成傳統(tǒng)表示法,,按小數(shù)點(diǎn)前兩位截取,把m部分都除以60,,放小數(shù)點(diǎn)后面,。緯度范圍是-90~+90,可能出現(xiàn)D在赤道上緯度接近于0的情況,,仍然按小數(shù)點(diǎn)前兩位,,沒有的位數(shù)補(bǔ)零,經(jīng)緯度方向有正負(fù),,北緯為正,,東經(jīng)為正。 Python編程語言通過格式化字符串(format strings)規(guī)定轉(zhuǎn)化的方法和格式,。根據(jù) Python 類型與格式和大小的對應(yīng)關(guān)系,,上述Device消息56字節(jié)的結(jié)構(gòu)體打包和解包的代碼為:struct.pack('>IfcddBBBHHLLQQ',message.payload)struct.unpack('<ifcddbbbh <="" span="">HLLQQ',message.payload),其中'>’為字節(jié)流大端序,,用于把數(shù)據(jù)發(fā)送到網(wǎng)絡(luò),'<’為字節(jié)流小端序,,用于從網(wǎng)絡(luò)解包字節(jié)流,。 其中連接回調(diào)函數(shù)on_connect在客戶端連接后被調(diào)用,依據(jù)返回值rc判斷客戶端是否連接成功,。同時創(chuàng)建一個MQTT客戶端,,該客戶端將連接到消息回調(diào)函數(shù)on_message,該函數(shù)將在客戶端收到消息后被調(diào)用,,在該函數(shù)中打印出訂閱的topic名稱以及接收到的消息內(nèi)容,。Device消息訂閱程序文件命名為:Mqtt-sub-device-message.py。運(yùn)行程序,整個系統(tǒng)正常工作,,經(jīng)緯度數(shù)據(jù)小數(shù)點(diǎn)后長度不同表示精度不同,,精度不同分配的IPv6地址前綴不同。 從顯示的信息順序可以看出,,定位狀態(tài)首先是0(不可用或無效),,過渡到RTCM消息還沒參與解算是1(單點(diǎn)定位),參數(shù)設(shè)備自身收到偽距差分信息后狀態(tài)為2(偽距差分),,然后根據(jù)RTCM消息和偽距差分消息結(jié)算為5(RTK 浮動解),,一分鐘后得到4(RTK 固定解),并保持穩(wěn)定,。固定解小數(shù)點(diǎn)后5位保持不變,,表示定位精度已達(dá)到厘米級。 參數(shù)的變化過程為:首先是未確定固定解時8NM 上下浮動的誤差值,,然后是7.82NM的設(shè)定目標(biāo)值,,中間校準(zhǔn)過程分別為6.07NM、5.94NM和6.05NM,,最后達(dá)到了7.82NM的設(shè)置目標(biāo)值,,參數(shù)校準(zhǔn)過程完成??深A(yù)先設(shè)置閾值進(jìn)行報(bào)警,。 定位狀態(tài)收斂過程為:首先是狀態(tài)1(單點(diǎn)定位)下的低精度范圍,然后是狀態(tài)5(RTK 浮動解)定位下的重精度范圍,,最后為狀態(tài)4(RTK 固定解)定位下的高精度范圍,。 Web服務(wù)器基于IPv6單棧技術(shù)建設(shè),支持IPv6單 棧訪問,。系統(tǒng)通過MQTT協(xié)議讀取不同精度的數(shù)據(jù)存入Web服務(wù)器,,調(diào)用百度地圖接口顯示經(jīng)緯度坐標(biāo),經(jīng)過坐標(biāo)轉(zhuǎn)換生成html頁面,。通過IPv6地址訪問http://[2402:e740::666]/site_ipv6/line.html站點(diǎn),,顯示圖4所示的效果,發(fā)現(xiàn)在100米長度的線路上,,移動設(shè)備技術(shù)參數(shù)大小與位置變化的過程,。 圖4 IPv6移動終端訂閱技術(shù)參數(shù)信息位置顯示 訪問http://[2402:e740::666]/site_ipv6/bpos.html站點(diǎn),顯示圖5所示的效果,,因百度地圖的精度為米或亞米級別,,基本看不出精度是厘米級的點(diǎn)的區(qū)別。 圖5 Web服務(wù)展示低精度參數(shù)信息位置顯示 通過高精度交互軟件轉(zhuǎn)換為離散軌跡圖,,顯示出圖6的效果,,可以看出精度范圍在6厘米內(nèi),,滿足測量場景中技術(shù)參數(shù)厘米級的要求。 圖6 高精度交互軟件訂閱高精度衛(wèi)星數(shù)據(jù)顯示 本文從IPv6創(chuàng)新應(yīng)用向IPv6單棧演進(jìn)的角度出發(fā),,設(shè)計(jì)并實(shí)現(xiàn)了一種支持IPv6的可視化測量系統(tǒng),。在系統(tǒng)中對經(jīng)緯度信息、高度信息和用戶身份信息如何映射到IPv6后64位(可變)進(jìn)行了詳細(xì)設(shè)計(jì),,提供了IPv6站點(diǎn)內(nèi)的位置查詢相關(guān)服務(wù),。嘗試解決可視化測量系統(tǒng)在推進(jìn)IPv6規(guī)模部署時面臨的擴(kuò)展性、實(shí)時性,、移動性,、管理性四個方面的重大挑戰(zhàn),提供一套綜合解決方案,。同時,,在面向工業(yè)互聯(lián)網(wǎng)環(huán)境下,嘗試從信息物理系統(tǒng)的角度出發(fā),,為基于IPv6網(wǎng)絡(luò)測量物理世界技術(shù)參數(shù)的安全性方面提供了參考,,在IPv6創(chuàng)新應(yīng)用領(lǐng)域中起到一定的應(yīng)用示范作用。 參考文獻(xiàn)(上下滑動查看全部內(nèi)容) 作者:黃友?。ㄇ迦A大學(xué)網(wǎng)絡(luò)科學(xué)與網(wǎng)絡(luò)空間研究院,、賽爾網(wǎng)絡(luò)有限公司),李想,、徐繪凱,、劉保君、張甲(清華大學(xué)網(wǎng)絡(luò)科學(xué)與網(wǎng)絡(luò)空間研究院) |
|