石賤弟,孫家奇
(1.中國電子科技集團(tuán)公司第七研究所,廣東 廣州 510310;2.中國人民解放軍91966部隊(duì),北京 100000)
美軍的戰(zhàn)術(shù)互聯(lián)網(wǎng)[1-2]和戰(zhàn)術(shù)級指戰(zhàn)人員信息網(wǎng)(WIN-T,Warfighter Information Network-Tactical)[3-4]將陸地、海面和空中的通信節(jié)點(diǎn)互連互通,形成一個(gè)寬帶的、動(dòng)中通的未來戰(zhàn)役/戰(zhàn)術(shù)骨干通信系統(tǒng),主要由四部分構(gòu)成:網(wǎng)絡(luò)基礎(chǔ)設(shè)施、信息保障、網(wǎng)絡(luò)管理和用戶接口,其中網(wǎng)絡(luò)基礎(chǔ)設(shè)施綜合了交換、路由及無線傳輸系統(tǒng)。WIN-T實(shí)現(xiàn)“動(dòng)中通”最具代表性的電臺(tái)是Harris公司的微波網(wǎng)絡(luò)電臺(tái)(HNR,Highband Networking Radio)。HNR電臺(tái)是空地一體化信息網(wǎng)絡(luò)的重要組成部分,是陸基網(wǎng)絡(luò)與空基網(wǎng)絡(luò)融合與鉸鏈的關(guān)鍵設(shè)備,可動(dòng)態(tài)接入陸、空通信平臺(tái)用戶,為陸、空通信平臺(tái)提供廣覆蓋、大容量、動(dòng)中通的接入能力。HNR電臺(tái)作為寬帶無線自組網(wǎng)設(shè)備與路由交換設(shè)備互聯(lián),構(gòu)成了無線自組網(wǎng)與有線網(wǎng)絡(luò)的融合基礎(chǔ)。電臺(tái)與路由交換設(shè)備間的信令交互協(xié)議一般在網(wǎng)絡(luò)層IP協(xié)議之上實(shí)現(xiàn)。這就需要為HNR電臺(tái)和路由交換設(shè)備的網(wǎng)絡(luò)接口預(yù)先分配和設(shè)置固定IP地址,然后才能基于IP進(jìn)行信令交互。當(dāng)HNR電臺(tái)或路由交換設(shè)備數(shù)量眾多、設(shè)備更換頻繁甚至網(wǎng)絡(luò)拓?fù)浒l(fā)生變化時(shí),都需要重新對各設(shè)備的IP地址進(jìn)行配置。這種繁瑣的手工配置操作往往容易導(dǎo)致錯(cuò)誤發(fā)生,使得網(wǎng)絡(luò)無法進(jìn)行正常的業(yè)務(wù)通信。目前國內(nèi)外SDN網(wǎng)絡(luò)設(shè)備與電臺(tái)間的信令交互普遍采用上述基于網(wǎng)絡(luò)層IP協(xié)議之上通過socket實(shí)現(xiàn),需要對電臺(tái)設(shè)置IP地址。
本文研究在網(wǎng)絡(luò)層IP協(xié)議之下實(shí)現(xiàn)信令交互,首先對HNR電臺(tái)以及網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)及信令交互協(xié)議的作用進(jìn)行了簡單闡述,然后描述了LCP協(xié)議以及基于LCP協(xié)議的HNR電臺(tái)與路由交換設(shè)備間信令交互協(xié)議設(shè)計(jì)和實(shí)現(xiàn)。結(jié)果表明,該協(xié)議可以簡單、高效、穩(wěn)定地實(shí)現(xiàn)HNR與路由交換設(shè)備間信令交互。
HNR電臺(tái)采用多種無線傳輸手段,為地面、空中、海上的各類機(jī)動(dòng)用戶提供動(dòng)態(tài)隨遇接入服務(wù),適用于戰(zhàn)場環(huán)境下的多種類型應(yīng)用,包括傳真、靜態(tài)和動(dòng)態(tài)圖像、話音、數(shù)據(jù)、野戰(zhàn)視頻會(huì)議等。美軍的戰(zhàn)術(shù)級指戰(zhàn)員信息網(wǎng)(WIN-T)增量3[5]主要通過增加控制通信節(jié)點(diǎn)來構(gòu)建立體覆蓋網(wǎng)絡(luò),使得美軍具備全面“動(dòng)中通”能力,增量4為了滿足網(wǎng)絡(luò)中心戰(zhàn)對構(gòu)建多媒體信息網(wǎng)絡(luò)的需求,增加了動(dòng)中通網(wǎng)絡(luò)數(shù)據(jù)吞吐量。Harris公司的HNR電臺(tái)為WIN-T實(shí)現(xiàn)“動(dòng)中通”功能發(fā)揮了重要的作用。Harris公司為HNR電臺(tái)設(shè)計(jì)了HNW波形作為空中接口[6],HNW波形的物理層支持兩種配置:單載波調(diào)制解調(diào)器和OFDM調(diào)制解調(diào)器,分別支持兩種信道編碼速率,采用的調(diào)制解調(diào)方式16QAM、64QAM、O-QPSK等。HNW波形通過采用時(shí)隙自動(dòng)分配技術(shù)和方向性天線組網(wǎng)技術(shù)實(shí)現(xiàn)頻率資源復(fù)用,并根據(jù)無線通信鏈路條件自動(dòng)調(diào)節(jié)吞吐量。在美軍的FCS-C和WIN-T網(wǎng)絡(luò)中均采用HNW波形作為無線骨干網(wǎng)的傳輸波形。HNW能夠根據(jù)無線鏈路狀態(tài)自動(dòng)選擇最佳的通信路徑,節(jié)點(diǎn)的入網(wǎng)和脫網(wǎng)不需要人員干預(yù),HNR電臺(tái)具有多組方向性天線,發(fā)射端能夠依據(jù)空分多址機(jī)制動(dòng)態(tài)的通過各定向天線在不同時(shí)隙連接不同通信終端。HNR電臺(tái)工作頻段為C頻段(4—8 GHz)和Ku頻段(12—180 GHz),支持移動(dòng)環(huán)境和固定環(huán)境的應(yīng)用。
HNR電臺(tái)自組網(wǎng)由于機(jī)動(dòng)性強(qiáng)、通信距離遠(yuǎn)、覆蓋穩(wěn)定性強(qiáng)、傳輸帶寬大、自組網(wǎng)等優(yōu)勢,常被用于鏈接多個(gè)高速有線網(wǎng)絡(luò)使用,如圖1所示。它甚至可以作為骨干網(wǎng)絡(luò)的一部分使用。
圖1 HNR電臺(tái)與路由交換設(shè)備互聯(lián)網(wǎng)絡(luò)拓?fù)鋱D
圖1中,HNR電臺(tái)通過自組網(wǎng)的方式把相距幾十公里,甚至上百公里遠(yuǎn)的多個(gè)有線高速網(wǎng)絡(luò)互聯(lián)在一起,可以供語音、數(shù)據(jù)和圖像等通信網(wǎng)絡(luò)業(yè)務(wù)傳輸,解決遠(yuǎn)距離通信的問題。HNR電臺(tái)與路由交換設(shè)備間通過網(wǎng)線相連。
在軟件定義網(wǎng)絡(luò)(SDN,Software Defined Network)網(wǎng)絡(luò)架構(gòu)中共分三層:最上層為應(yīng)用層,包括各種不同的業(yè)務(wù)和應(yīng)用;中間層為控制層,負(fù)責(zé)處理數(shù)據(jù)平面資源的編排和維護(hù)網(wǎng)絡(luò)拓?fù)?、狀態(tài)信息等;最底層為基礎(chǔ)設(shè)施層,負(fù)責(zé)基于流表的數(shù)據(jù)處理、轉(zhuǎn)發(fā)和狀態(tài)收集功能。路由交換設(shè)備就位于SDN架構(gòu)的最底層。
HNR電臺(tái)與路由交換設(shè)備間存在業(yè)務(wù)數(shù)據(jù)傳輸和信令交互兩部分內(nèi)容,本文主要對信令交互內(nèi)容進(jìn)行設(shè)計(jì)和實(shí)現(xiàn)。路由交換設(shè)備需要通過信令交互協(xié)議收集電臺(tái)和電臺(tái)網(wǎng)的工作參數(shù)和工作狀態(tài)信息,上報(bào)給SDN網(wǎng)絡(luò)的控制層,為上層的應(yīng)用決策提供所需信息。路由交換設(shè)備也需要通過信令交互協(xié)議把SDN網(wǎng)絡(luò)控制層以及上層應(yīng)用對物理層的參數(shù)控制信息,如電臺(tái)的收發(fā)頻率、發(fā)射功率、信道帶寬等傳送給HNR電臺(tái)??傊?,路由交換設(shè)備通過信令交互協(xié)議可以完成對HNR電臺(tái)的參數(shù)設(shè)置、心跳感知、地址通告、鏈路資源申請和獲取無線電臺(tái)子網(wǎng)拓?fù)湫畔⒌裙δ?。路由交換設(shè)備甚至可以把HNR電臺(tái)配置成一個(gè)單純的收發(fā)信道來進(jìn)行網(wǎng)絡(luò)報(bào)文的收發(fā)。
鏈路控制協(xié)議(LCP,Link Control Protocol)[8-9]位于物理層之上,是PPP協(xié)議的一個(gè)子集。為了能適應(yīng)復(fù)雜多變的網(wǎng)絡(luò)環(huán)境,PPP協(xié)議提供了LCP來負(fù)責(zé)設(shè)備之間鏈路的創(chuàng)建、維護(hù)和終止。
(1)LCP報(bào)文格式
LCP數(shù)據(jù)報(bào)文被封裝在PPP信息域中,PPP協(xié)議域0xc021表示鏈路控制協(xié)議。LCP報(bào)文格式如圖2所示。其中,代碼域說明LCP報(bào)文的類型,占用一個(gè)字節(jié);標(biāo)識(shí)域標(biāo)明LCP報(bào)文的編號(hào),占用一個(gè)字節(jié);長度域表示LCP報(bào)文的長度,占用兩個(gè)字節(jié);數(shù)據(jù)域包括多種交互信息。
圖2 LCP報(bào)文的格式
LCP報(bào)文代碼域code:占一個(gè)字節(jié),用來標(biāo)識(shí)LCP數(shù)據(jù)報(bào)文的類型。當(dāng)數(shù)據(jù)接收方收到LCP數(shù)據(jù)報(bào)文的代碼域無法識(shí)別時(shí),會(huì)向?qū)Ψ桨l(fā)送一個(gè)Code-Reject報(bào)文。
LCP報(bào)文標(biāo)識(shí) Indentifier:占一個(gè)字節(jié),用來匹配請求報(bào)文和響應(yīng)報(bào)文。當(dāng)進(jìn)入鏈路建立階段時(shí),通信雙方都會(huì)連續(xù)發(fā)送幾個(gè)配置請求報(bào)文(Config-Request報(bào)文),而這些請求報(bào)文的數(shù)據(jù)域Data可能是相同的,僅僅是它們的標(biāo)識(shí)域不同。配置請求報(bào)文的ID從0x01開始遞增加1,當(dāng)對端接收到該配置請求報(bào)文后,回應(yīng)報(bào)文中的ID要與接收報(bào)文中的ID相同,當(dāng)通信設(shè)備收到回應(yīng)后,就可以將該回應(yīng)ID與發(fā)送時(shí)ID進(jìn)行比較,以決定下一步的操作。
LCP長度域Length:占兩個(gè)字節(jié),表示LCP報(bào)文的總字節(jié)數(shù)。
LCP報(bào)文數(shù)據(jù)域Data:不同的LCP數(shù)據(jù)報(bào)文的內(nèi)容不一樣。
(2)LCP協(xié)議數(shù)據(jù)報(bào)文分類
1)鏈路配置報(bào)文
用來建立和配置一條鏈路,主要包括Configure-Request、Configure-Ack、Configure-Nak和Configure-Reject報(bào)文。Configure-Request用來發(fā)起鏈路的配置參數(shù)請求,若完全支持對端的LCP選項(xiàng),則回應(yīng)Config-ACK報(bào)文。若支持對端的協(xié)商選項(xiàng),但不認(rèn)可該項(xiàng)協(xié)商的內(nèi)容,則回應(yīng)Config-NAK報(bào)文,在Config-NAK的選項(xiàng)中填上自己期望的內(nèi)容值,若不能支持對端的協(xié)商選項(xiàng),則回應(yīng)Config-Reject報(bào)文,報(bào)文中帶上不能支持的選項(xiàng)。
2)鏈路終止報(bào)文
鏈路終止報(bào)文用來終止一條鏈路,分為Terminate-Request和Terminate-Reply兩種報(bào)文。
LCP的鏈路終止報(bào)文的數(shù)據(jù)域與鏈路配置報(bào)文的數(shù)據(jù)域不一樣,鏈路終止報(bào)文中無需攜帶各配置參數(shù)選項(xiàng)
3)鏈路維護(hù)報(bào)文
用來管理和調(diào)試鏈路,主要包括Code-Reject、Protocol-Reject、Echo-Request、Echo-Reply和Discard-Request報(bào)文。當(dāng)接收端檢測到LCP報(bào)文的代碼域code是一個(gè)非法值時(shí),將會(huì)向發(fā)送端回應(yīng)Code-Reject報(bào)文,在回應(yīng)報(bào)文中會(huì)附加上所拒絕報(bào)文的內(nèi)容,在Protocol-Reject報(bào)文的數(shù)據(jù)域中攜帶所拒絕報(bào)文的協(xié)議類型和報(bào)文內(nèi)容。Echo-Request報(bào)文和Echo-Reply報(bào)文用來檢測雙向鏈路上是否存在自環(huán),此外還可附帶做一些鏈路質(zhì)量測試功能。
(1)信令交互內(nèi)容及流程
HNR電臺(tái)與路由交換設(shè)備間信令交互的內(nèi)容主要包括:路由交換設(shè)備通告MAC地址給電臺(tái)、電臺(tái)在線心跳感知、電臺(tái)IP地址分配、MTU協(xié)商、電臺(tái)信道參數(shù)設(shè)置和信道參數(shù)更新通告、鏈路質(zhì)量更新通告、鏈路資源申請協(xié)商、無線子網(wǎng)拓?fù)湫畔⑼ǜ娴取?/p>
(2)路由交換設(shè)備通告其MAC地址給電臺(tái)
路由交換設(shè)備發(fā)送Config-Request,將其MAC地址通告給直接連接的電臺(tái)。電臺(tái)在接收到該信息后判斷MAC地址是否合法,如果合法則保存該MAC地址,然后發(fā)送Configure-Ack報(bào)文給路由交換設(shè)備。如果MAC地址不合法,則回復(fù)Configure-Reject報(bào)文給路由交換設(shè)備。這個(gè)MAC地址將用于后續(xù)以太網(wǎng)幀的收發(fā)。
路由交換設(shè)備通告MAC地址流程圖如圖3所示:
圖3 路由交換設(shè)備通告其MAC地址給電臺(tái)
(3)電臺(tái)在線心跳感知
路由交換設(shè)備定時(shí)向HNR電臺(tái)發(fā)送Echo-Request心跳感知報(bào)文,HNR電臺(tái)收到該報(bào)文后回復(fù)Echo-Reply報(bào)文,告知路由交換設(shè)備自己還在線,如圖4所示。如果HNR電臺(tái)掉線了,不能回復(fù)Echo-Reply報(bào)文,則路由交換設(shè)備會(huì)重復(fù)發(fā)送n次Echo-Request心跳感知報(bào)文,在超過一定時(shí)間仍未收到電臺(tái)的Echo-Reply報(bào)文后就不再發(fā)送Echo-Request心跳感知報(bào)文,轉(zhuǎn)而周期地發(fā)送config_request報(bào)文,通告其MAC地址給HNR電臺(tái)。如果HNR電臺(tái)再次上線,則會(huì)回復(fù)Configure-Ack報(bào)文給路由交換設(shè)備,如圖5所示。
圖4 電臺(tái)在線心跳感知正常
圖5 電臺(tái)在線心跳感知失敗
(4)電臺(tái)IP地址分配
路由交換設(shè)備通過發(fā)送Config-Request報(bào)文,將其重新分配給電臺(tái)的IP地址發(fā)送給直接連接的電臺(tái)。電臺(tái)在接收到該信息后判斷IP地址是否合法,如果合法則保存該IP地址,并將HNR電臺(tái)網(wǎng)絡(luò)接口IP地址設(shè)置為該值,然后發(fā)送Configure-Ack報(bào)文給路由交換設(shè)備。如果IP地址不合法,則回復(fù)Configure-Reject報(bào)文給路由交換設(shè)備。
(5)最大傳輸單元協(xié)商
路由交換設(shè)備通過發(fā)送Config-Request報(bào)文來向HNR電臺(tái)請求需要協(xié)商的MTU值,如果HNR電臺(tái)支持并接受該MTU值,則回復(fù)Config-Ack報(bào)文。如果HNR電臺(tái)支持協(xié)商選項(xiàng),但是不認(rèn)可MTU協(xié)商的內(nèi)容值(比如1500),則回應(yīng)Config-NAK報(bào)文,在Config-NAK的選項(xiàng)中填上自己期望的(比如1460)。路由交換設(shè)備再次通過發(fā)送Config-Request報(bào)文來向HNR電臺(tái)請求需要協(xié)商的MTU值,此時(shí)的MTU值變成了1460。HNR電臺(tái)支持并接受該MTU值,則回復(fù)Config-Ack報(bào)文,如圖6所示。
圖6 MTU協(xié)商流程
(6)信道參數(shù)設(shè)置
路由交換設(shè)備通過發(fā)送Config-Request報(bào)文,將需要設(shè)置的信道參數(shù)值發(fā)送給直接連接的電臺(tái)。電臺(tái)在接收到該信息后判斷信道參數(shù)值是否合法,如果合法則配置HNR電臺(tái)的信道參數(shù),設(shè)置成功后發(fā)送Configure-Ack報(bào)文給路由交換設(shè)備。如果信道參數(shù)值不合法,則回復(fù)Configure-Reject報(bào)文給路由交換設(shè)備。如果HNR電臺(tái)有多個(gè)信道,則通過多條“信道參數(shù)設(shè)置”消息完成設(shè)置。
(7)電臺(tái)信道參數(shù)更新通告
當(dāng)HNR電臺(tái)的信道參數(shù)包括電臺(tái)頻率、功率等。當(dāng)這些信息發(fā)生變化時(shí),HNR電臺(tái)向路由交換設(shè)備發(fā)送Echo-Request報(bào)文來通告電臺(tái)信道參數(shù)信息,其中LCP數(shù)據(jù)域?yàn)樾诺绤?shù)改變的信息。
(8)電臺(tái)鏈路質(zhì)量更新通告
HNR電臺(tái)的鏈路質(zhì)量包括鏈路發(fā)速率、鏈路收速率、鏈路誤碼率、鏈路時(shí)延等信息。當(dāng)這些信息發(fā)生變化時(shí),HNR電臺(tái)向路由交換設(shè)備發(fā)送Echo-Request報(bào)文來通告鏈路質(zhì)量信息,其中LCP數(shù)據(jù)域?yàn)檫@些鏈路質(zhì)量改變的信息。
(9)鏈路資源請求
路由交換設(shè)備通過發(fā)送Config-Request報(bào)文來向HNR電臺(tái)請求需要協(xié)商分配鏈路資源,鏈路資源主要是鏈路帶寬。如果HNR電臺(tái)支持并接受該申請的鏈路資源值,則回復(fù)Config-Ack報(bào)文。如果HNR電臺(tái)支持協(xié)商選項(xiàng),但是不認(rèn)可鏈路資源協(xié)商的內(nèi)容值,則回應(yīng)Config-NAK報(bào)文,在Config-NAK的選項(xiàng)中填上自己期望的可分配鏈路資源值。
(10)無線子網(wǎng)拓?fù)湫畔⒏峦ǜ?/p>
HNR電臺(tái)子網(wǎng)的拓?fù)湫畔ňW(wǎng)絡(luò)節(jié)點(diǎn)數(shù)、節(jié)點(diǎn)入網(wǎng)、脫網(wǎng)、網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)等。當(dāng)這些信息發(fā)生變化時(shí),HNR電臺(tái)向路由交換設(shè)備發(fā)送Echo-Request報(bào)文來通告無線子網(wǎng)拓?fù)湫畔?,其中LCP數(shù)據(jù)域?yàn)榫W(wǎng)絡(luò)拓?fù)涓淖兊男畔ⅰ?/p>
HNR電臺(tái)與路由交換設(shè)備之間采用以太網(wǎng)接口互聯(lián),信令消息采用以太幀格式進(jìn)行封裝,利用鏈路控制協(xié)議LCP完成信令交互。
在以太幀格式中,幀頭部四個(gè)域中包括2個(gè)字節(jié)的幀類型域,該域設(shè)置為0x01EF表示該幀為信令消息承載幀,該以太幀的凈荷為PPP幀。PPP幀采用標(biāo)準(zhǔn)形式。在信令交互處理中因交互消息內(nèi)容的不同,PPP幀的長度是靈活變化的,幀的識(shí)別定位主要靠幀頭和幀尾標(biāo)記實(shí)現(xiàn),以0x7E作為幀的開始和結(jié)束標(biāo)記,占一個(gè)字節(jié);地址域和控制域采用固定值,分別為0xFF和0x03,各占一個(gè)字節(jié);協(xié)議域?yàn)閮蓚€(gè)字節(jié);信息域?yàn)長CP報(bào)文;校驗(yàn)域?yàn)榘l(fā)送方對幀數(shù)據(jù)具有檢錯(cuò)功能的校驗(yàn)碼,接收時(shí)用于對數(shù)據(jù)的檢驗(yàn)。協(xié)議交互參數(shù)信息放置在LCP報(bào)文的數(shù)據(jù)域中,其中數(shù)據(jù)域類型標(biāo)識(shí)了交互類型,選項(xiàng)值中包含具體的交互參數(shù)值。
信令交互協(xié)議報(bào)文中以太幀、PPP幀、LCP報(bào)文以及LCP報(bào)文數(shù)據(jù)域之間的關(guān)系如圖7所示。
圖7 以太幀、PPP幀、LCP報(bào)文以及LCP報(bào)文數(shù)據(jù)域間的關(guān)系
要在linux和vxWorks下實(shí)現(xiàn)該信令交互協(xié)議,首先需要知道鏈路層數(shù)據(jù)幀在兩種系統(tǒng)中的不同收發(fā)方法。
在linux系統(tǒng)中,為了實(shí)現(xiàn)直接從鏈路層收發(fā)數(shù)據(jù)幀,要用到原始套接字的如下形式:socket(PF_PACKET,SOCK_RAW,protocol),其中SOCK_RAW使用一種與設(shè)備無關(guān)的標(biāo)準(zhǔn)物理層地址結(jié)構(gòu)structsockaddr_ll{},SOCK_RAW直接向網(wǎng)絡(luò)硬件驅(qū)動(dòng)程序發(fā)送或接收有完整的數(shù)據(jù)報(bào)文包括MAC頭部。protocol字段可取ETH_P_ARP、ETH_P_IP、ETH_RARP、ETH_P_ALL。其中:ETH_P_IP表示只接收發(fā)往目的MAC地址是本機(jī)硬件地址的IP類型的數(shù)據(jù)幀;ETH_P_ARP表示只接收發(fā)往目的MAC地址是本機(jī)硬件地址的ARP類型數(shù)據(jù)幀;ETH_P_RARP表示只接收發(fā)往目的MAC地址是本機(jī)硬件地址的RARP類型數(shù)據(jù)幀;ETH_P_ALL表示只接收發(fā)往目的MAC地址是本機(jī)硬件地址的所有類型的數(shù)據(jù)幀,同時(shí)還可以接收從本機(jī)發(fā)出的所有數(shù)據(jù)幀。如果打開混雜模式,還會(huì)接收到發(fā)往目的MAC為非本機(jī)硬件地址的數(shù)據(jù)幀。缺省情況下,從任何接口收到的符合指定協(xié)議的所有數(shù)據(jù)報(bào)文都會(huì)被傳送到原始套接字口,而使用bind系統(tǒng)調(diào)用并以一個(gè)sockaddr_ll{}結(jié)構(gòu)體對象將PACKET套接字與某個(gè)網(wǎng)絡(luò)接口綁定,就可使原始套接字只接收指定接口的數(shù)據(jù)報(bào)文。
在vxWorks6.9系統(tǒng)中,采用vxWorks系統(tǒng)中特有的MUX層實(shí)現(xiàn)以太幀的收發(fā)。MUX層位于數(shù)據(jù)鏈路層和網(wǎng)絡(luò)層之間,負(fù)責(zé)管理網(wǎng)絡(luò)協(xié)議接口和低層硬件接口之間的交互。使用muxBind()函數(shù)將協(xié)議類型與特定的網(wǎng)絡(luò)接口綁定就可以在特定的回調(diào)函數(shù)收到相關(guān)的數(shù)據(jù)幀。muxBind()函數(shù)使用如下形式:
muxBind(ifName,unit,(FUNCPTR)stackRcvRtn,NULL,NULL,NULL,type,NULL,NUL);
其中:ifName為網(wǎng)絡(luò)接口的名,unit為接口,stackRcvRtn為協(xié)議數(shù)據(jù)處理函數(shù),type為指定的協(xié)議類型,協(xié)議類型及含義如下:
MUX_PROTO_SNAR:先調(diào)用stackRcvRtn()處理函數(shù),再傳送到所有標(biāo)準(zhǔn)協(xié)議處理;
MUX_PROTO_PROMIS :先傳送到所有標(biāo)準(zhǔn)協(xié)議處理之后再調(diào)用stackRcvRtn()處理函數(shù);
MUX_PROTO_OUTPU:先調(diào)用stackRcvRtn()函數(shù),在傳送到物理層驅(qū)動(dòng)程序處理。
由于要在所有標(biāo)準(zhǔn)協(xié)議接收之前處理以太幀,所以采用協(xié)議類型MUX_PROTO_SNARF。而以太幀數(shù)據(jù)的發(fā)送在vxWorks中我們使用muxSend()函數(shù)。發(fā)送過程如下:(1)首先進(jìn)行綁定muxBind(),將需要發(fā)送接收的接口綁定到程序中;(2)根據(jù)綁定的結(jié)果獲取發(fā)送MUX_ID;(3)申請發(fā)送數(shù)據(jù)的數(shù)據(jù)緩沖區(qū),同時(shí)進(jìn)行緩沖區(qū)的設(shè)置,將報(bào)文復(fù)制之后,該緩沖區(qū)可以直接發(fā)送;(4)數(shù)據(jù)的發(fā)送,首先進(jìn)行發(fā)送報(bào)文內(nèi)容的復(fù)制,再將報(bào)文通過muxSend()發(fā)送,如果發(fā)送成功將不需要進(jìn)行報(bào)文的釋放,而如果發(fā)送失敗,則需要手動(dòng)釋放緩沖區(qū)。
HNR端信令交互協(xié)議實(shí)現(xiàn)主線程如圖8所示,HNR電臺(tái)啟動(dòng)后首先進(jìn)行系統(tǒng)初始化和打開以太網(wǎng)接口,接收以太幀。如果接收到路由交換設(shè)備發(fā)來的廣播包,且LCP報(bào)文的代碼域?yàn)閏onfigure-request,則給路由交換設(shè)備回復(fù)configure-ack報(bào)文且記錄MAC地址,然后創(chuàng)建接收線程和上報(bào)線程。
圖8 HNR端主線程流程圖
上報(bào)線程流程圖如圖9所示,首先初始化上報(bào)線程,然后監(jiān)測電臺(tái)鏈路或網(wǎng)絡(luò)狀態(tài)改變信息,如果是鏈路質(zhì)量資料更新信息或無線子網(wǎng)拓?fù)湫畔⒏滦畔?,則給路由交換設(shè)備發(fā)送echo-request報(bào)文,其中LCP數(shù)據(jù)域?yàn)闋顟B(tài)改變的信息。
圖9 HNR端上報(bào)線程流程圖
接收線程流程圖如圖10所示,首先初始化接收線程,然后從網(wǎng)口接收以太幀,如果是PPP報(bào)文,則判斷報(bào)文的代碼域類型,如果是configure-request報(bào)文,則根據(jù)報(bào)文數(shù)據(jù)域參數(shù)類型分別是MAC地址通告、IP地址分配、信道參數(shù)設(shè)置、鏈路資源請求、MTU協(xié)商分別進(jìn)行相應(yīng)處理,然后回復(fù)configure-ack報(bào)文給路由交換設(shè)備;如果報(bào)文代碼域類型是echo-request,則回復(fù)echo-reply報(bào)文給路由交換設(shè)備,對端以此作為心跳包判斷電臺(tái)是否在線。如果報(bào)文代碼域類型是其它類型則不需要處理。
圖10 HNR端接收線程流程圖
本文對HNR電臺(tái)以及HNR電臺(tái)與路由交換設(shè)備間的網(wǎng)絡(luò)互聯(lián)關(guān)系進(jìn)行了介紹,提出了一種基于鏈路控制協(xié)議LCP的HNR電臺(tái)與路由交換設(shè)備間信令交互的方法,并且在vxWorks和Linux系統(tǒng)中設(shè)計(jì)和實(shí)現(xiàn)了該協(xié)議。用通信網(wǎng)絡(luò)演示系統(tǒng)中的SDN網(wǎng)絡(luò)交換機(jī)與HNR電臺(tái)間應(yīng)用了該信令交互協(xié)議,通過測試,路由交換設(shè)備通告MAC地址給電臺(tái)、電臺(tái)IP地址分配、電臺(tái)在線心跳感知、電臺(tái)信道參數(shù)設(shè)置和信道參數(shù)更新通告、鏈路質(zhì)量更新通告、無線子網(wǎng)拓?fù)湫畔⑼ǜ?、MTU協(xié)商、鏈路資源申請協(xié)內(nèi)等都可以高效完成,成功率100%。結(jié)果表明,該信令協(xié)議能方便、高效、穩(wěn)定的實(shí)現(xiàn)HNR電臺(tái)與路由交換設(shè)備間的互和和信令交互。