石賤弟,孫家奇
(1.中國電子科技集團公司第七研究所,廣東 廣州 510310;2.中國人民解放軍91966部隊,北京 100000)
美軍的戰術互聯網[1-2]和戰術級指戰人員信息網(WIN-T,Warfighter Information Network-Tactical)[3-4]將陸地、海面和空中的通信節點互連互通,形成一個寬帶的、動中通的未來戰役/戰術骨干通信系統,主要由四部分構成:網絡基礎設施、信息保障、網絡管理和用戶接口,其中網絡基礎設施綜合了交換、路由及無線傳輸系統。WIN-T實現“動中通”最具代表性的電臺是Harris公司的微波網絡電臺(HNR,Highband Networking Radio)。HNR電臺是空地一體化信息網絡的重要組成部分,是陸基網絡與空基網絡融合與鉸鏈的關鍵設備,可動態接入陸、空通信平臺用戶,為陸、空通信平臺提供廣覆蓋、大容量、動中通的接入能力。HNR電臺作為寬帶無線自組網設備與路由交換設備互聯,構成了無線自組網與有線網絡的融合基礎。電臺與路由交換設備間的信令交互協議一般在網絡層IP協議之上實現。這就需要為HNR電臺和路由交換設備的網絡接口預先分配和設置固定IP地址,然后才能基于IP進行信令交互。當HNR電臺或路由交換設備數量眾多、設備更換頻繁甚至網絡拓撲發生變化時,都需要重新對各設備的IP地址進行配置。這種繁瑣的手工配置操作往往容易導致錯誤發生,使得網絡無法進行正常的業務通信。目前國內外SDN網絡設備與電臺間的信令交互普遍采用上述基于網絡層IP協議之上通過socket實現,需要對電臺設置IP地址。
本文研究在網絡層IP協議之下實現信令交互,首先對HNR電臺以及網絡拓撲結構及信令交互協議的作用進行了簡單闡述,然后描述了LCP協議以及基于LCP協議的HNR電臺與路由交換設備間信令交互協議設計和實現。結果表明,該協議可以簡單、高效、穩定地實現HNR與路由交換設備間信令交互。
HNR電臺采用多種無線傳輸手段,為地面、空中、海上的各類機動用戶提供動態隨遇接入服務,適用于戰場環境下的多種類型應用,包括傳真、靜態和動態圖像、話音、數據、野戰視頻會議等。美軍的戰術級指戰員信息網(WIN-T)增量3[5]主要通過增加控制通信節點來構建立體覆蓋網絡,使得美軍具備全面“動中通”能力,增量4為了滿足網絡中心戰對構建多媒體信息網絡的需求,增加了動中通網絡數據吞吐量。Harris公司的HNR電臺為WIN-T實現“動中通”功能發揮了重要的作用。Harris公司為HNR電臺設計了HNW波形作為空中接口[6],HNW波形的物理層支持兩種配置:單載波調制解調器和OFDM調制解調器,分別支持兩種信道編碼速率,采用的調制解調方式16QAM、64QAM、O-QPSK等。HNW波形通過采用時隙自動分配技術和方向性天線組網技術實現頻率資源復用,并根據無線通信鏈路條件自動調節吞吐量。在美軍的FCS-C和WIN-T網絡中均采用HNW波形作為無線骨干網的傳輸波形。HNW能夠根據無線鏈路狀態自動選擇最佳的通信路徑,節點的入網和脫網不需要人員干預,HNR電臺具有多組方向性天線,發射端能夠依據空分多址機制動態的通過各定向天線在不同時隙連接不同通信終端。HNR電臺工作頻段為C頻段(4—8 GHz)和Ku頻段(12—180 GHz),支持移動環境和固定環境的應用。
HNR電臺自組網由于機動性強、通信距離遠、覆蓋穩定性強、傳輸帶寬大、自組網等優勢,常被用于鏈接多個高速有線網絡使用,如圖1所示。它甚至可以作為骨干網絡的一部分使用。

圖1 HNR電臺與路由交換設備互聯網絡拓撲圖
圖1中,HNR電臺通過自組網的方式把相距幾十公里,甚至上百公里遠的多個有線高速網絡互聯在一起,可以供語音、數據和圖像等通信網絡業務傳輸,解決遠距離通信的問題。HNR電臺與路由交換設備間通過網線相連。
在軟件定義網絡(SDN,Software Defined Network)網絡架構中共分三層:最上層為應用層,包括各種不同的業務和應用;中間層為控制層,負責處理數據平面資源的編排和維護網絡拓撲、狀態信息等;最底層為基礎設施層,負責基于流表的數據處理、轉發和狀態收集功能。路由交換設備就位于SDN架構的最底層。
HNR電臺與路由交換設備間存在業務數據傳輸和信令交互兩部分內容,本文主要對信令交互內容進行設計和實現。路由交換設備需要通過信令交互協議收集電臺和電臺網的工作參數和工作狀態信息,上報給SDN網絡的控制層,為上層的應用決策提供所需信息。路由交換設備也需要通過信令交互協議把SDN網絡控制層以及上層應用對物理層的參數控制信息,如電臺的收發頻率、發射功率、信道帶寬等傳送給HNR電臺。總之,路由交換設備通過信令交互協議可以完成對HNR電臺的參數設置、心跳感知、地址通告、鏈路資源申請和獲取無線電臺子網拓撲信息等功能。路由交換設備甚至可以把HNR電臺配置成一個單純的收發信道來進行網絡報文的收發。
鏈路控制協議(LCP,Link Control Protocol)[8-9]位于物理層之上,是PPP協議的一個子集。為了能適應復雜多變的網絡環境,PPP協議提供了LCP來負責設備之間鏈路的創建、維護和終止。
(1)LCP報文格式
LCP數據報文被封裝在PPP信息域中,PPP協議域0xc021表示鏈路控制協議。LCP報文格式如圖2所示。其中,代碼域說明LCP報文的類型,占用一個字節;標識域標明LCP報文的編號,占用一個字節;長度域表示LCP報文的長度,占用兩個字節;數據域包括多種交互信息。

圖2 LCP報文的格式
LCP報文代碼域code:占一個字節,用來標識LCP數據報文的類型。當數據接收方收到LCP數據報文的代碼域無法識別時,會向對方發送一個Code-Reject報文。
LCP報文標識 Indentifier:占一個字節,用來匹配請求報文和響應報文。當進入鏈路建立階段時,通信雙方都會連續發送幾個配置請求報文(Config-Request報文),而這些請求報文的數據域Data可能是相同的,僅僅是它們的標識域不同。配置請求報文的ID從0x01開始遞增加1,當對端接收到該配置請求報文后,回應報文中的ID要與接收報文中的ID相同,當通信設備收到回應后,就可以將該回應ID與發送時ID進行比較,以決定下一步的操作。
LCP長度域Length:占兩個字節,表示LCP報文的總字節數。
LCP報文數據域Data:不同的LCP數據報文的內容不一樣。
(2)LCP協議數據報文分類
1)鏈路配置報文
用來建立和配置一條鏈路,主要包括Configure-Request、Configure-Ack、Configure-Nak和Configure-Reject報文。Configure-Request用來發起鏈路的配置參數請求,若完全支持對端的LCP選項,則回應Config-ACK報文。若支持對端的協商選項,但不認可該項協商的內容,則回應Config-NAK報文,在Config-NAK的選項中填上自己期望的內容值,若不能支持對端的協商選項,則回應Config-Reject報文,報文中帶上不能支持的選項。
2)鏈路終止報文
鏈路終止報文用來終止一條鏈路,分為Terminate-Request和Terminate-Reply兩種報文。
LCP的鏈路終止報文的數據域與鏈路配置報文的數據域不一樣,鏈路終止報文中無需攜帶各配置參數選項
3)鏈路維護報文
用來管理和調試鏈路,主要包括Code-Reject、Protocol-Reject、Echo-Request、Echo-Reply和Discard-Request報文。當接收端檢測到LCP報文的代碼域code是一個非法值時,將會向發送端回應Code-Reject報文,在回應報文中會附加上所拒絕報文的內容,在Protocol-Reject報文的數據域中攜帶所拒絕報文的協議類型和報文內容。Echo-Request報文和Echo-Reply報文用來檢測雙向鏈路上是否存在自環,此外還可附帶做一些鏈路質量測試功能。
(1)信令交互內容及流程
HNR電臺與路由交換設備間信令交互的內容主要包括:路由交換設備通告MAC地址給電臺、電臺在線心跳感知、電臺IP地址分配、MTU協商、電臺信道參數設置和信道參數更新通告、鏈路質量更新通告、鏈路資源申請協商、無線子網拓撲信息通告等。
(2)路由交換設備通告其MAC地址給電臺
路由交換設備發送Config-Request,將其MAC地址通告給直接連接的電臺。電臺在接收到該信息后判斷MAC地址是否合法,如果合法則保存該MAC地址,然后發送Configure-Ack報文給路由交換設備。如果MAC地址不合法,則回復Configure-Reject報文給路由交換設備。這個MAC地址將用于后續以太網幀的收發。
路由交換設備通告MAC地址流程圖如圖3所示:

圖3 路由交換設備通告其MAC地址給電臺
(3)電臺在線心跳感知
路由交換設備定時向HNR電臺發送Echo-Request心跳感知報文,HNR電臺收到該報文后回復Echo-Reply報文,告知路由交換設備自己還在線,如圖4所示。如果HNR電臺掉線了,不能回復Echo-Reply報文,則路由交換設備會重復發送n次Echo-Request心跳感知報文,在超過一定時間仍未收到電臺的Echo-Reply報文后就不再發送Echo-Request心跳感知報文,轉而周期地發送config_request報文,通告其MAC地址給HNR電臺。如果HNR電臺再次上線,則會回復Configure-Ack報文給路由交換設備,如圖5所示。

圖4 電臺在線心跳感知正常

圖5 電臺在線心跳感知失敗
(4)電臺IP地址分配
路由交換設備通過發送Config-Request報文,將其重新分配給電臺的IP地址發送給直接連接的電臺。電臺在接收到該信息后判斷IP地址是否合法,如果合法則保存該IP地址,并將HNR電臺網絡接口IP地址設置為該值,然后發送Configure-Ack報文給路由交換設備。如果IP地址不合法,則回復Configure-Reject報文給路由交換設備。
(5)最大傳輸單元協商
路由交換設備通過發送Config-Request報文來向HNR電臺請求需要協商的MTU值,如果HNR電臺支持并接受該MTU值,則回復Config-Ack報文。如果HNR電臺支持協商選項,但是不認可MTU協商的內容值(比如1500),則回應Config-NAK報文,在Config-NAK的選項中填上自己期望的(比如1460)。路由交換設備再次通過發送Config-Request報文來向HNR電臺請求需要協商的MTU值,此時的MTU值變成了1460。HNR電臺支持并接受該MTU值,則回復Config-Ack報文,如圖6所示。

圖6 MTU協商流程
(6)信道參數設置
路由交換設備通過發送Config-Request報文,將需要設置的信道參數值發送給直接連接的電臺。電臺在接收到該信息后判斷信道參數值是否合法,如果合法則配置HNR電臺的信道參數,設置成功后發送Configure-Ack報文給路由交換設備。如果信道參數值不合法,則回復Configure-Reject報文給路由交換設備。如果HNR電臺有多個信道,則通過多條“信道參數設置”消息完成設置。
(7)電臺信道參數更新通告
當HNR電臺的信道參數包括電臺頻率、功率等。當這些信息發生變化時,HNR電臺向路由交換設備發送Echo-Request報文來通告電臺信道參數信息,其中LCP數據域為信道參數改變的信息。
(8)電臺鏈路質量更新通告
HNR電臺的鏈路質量包括鏈路發速率、鏈路收速率、鏈路誤碼率、鏈路時延等信息。當這些信息發生變化時,HNR電臺向路由交換設備發送Echo-Request報文來通告鏈路質量信息,其中LCP數據域為這些鏈路質量改變的信息。
(9)鏈路資源請求
路由交換設備通過發送Config-Request報文來向HNR電臺請求需要協商分配鏈路資源,鏈路資源主要是鏈路帶寬。如果HNR電臺支持并接受該申請的鏈路資源值,則回復Config-Ack報文。如果HNR電臺支持協商選項,但是不認可鏈路資源協商的內容值,則回應Config-NAK報文,在Config-NAK的選項中填上自己期望的可分配鏈路資源值。
(10)無線子網拓撲信息更新通告
HNR電臺子網的拓撲信息包括網絡節點數、節點入網、脫網、網絡拓撲結構等。當這些信息發生變化時,HNR電臺向路由交換設備發送Echo-Request報文來通告無線子網拓撲信息,其中LCP數據域為網絡拓撲改變的信息。
HNR電臺與路由交換設備之間采用以太網接口互聯,信令消息采用以太幀格式進行封裝,利用鏈路控制協議LCP完成信令交互。
在以太幀格式中,幀頭部四個域中包括2個字節的幀類型域,該域設置為0x01EF表示該幀為信令消息承載幀,該以太幀的凈荷為PPP幀。PPP幀采用標準形式。在信令交互處理中因交互消息內容的不同,PPP幀的長度是靈活變化的,幀的識別定位主要靠幀頭和幀尾標記實現,以0x7E作為幀的開始和結束標記,占一個字節;地址域和控制域采用固定值,分別為0xFF和0x03,各占一個字節;協議域為兩個字節;信息域為LCP報文;校驗域為發送方對幀數據具有檢錯功能的校驗碼,接收時用于對數據的檢驗。協議交互參數信息放置在LCP報文的數據域中,其中數據域類型標識了交互類型,選項值中包含具體的交互參數值。
信令交互協議報文中以太幀、PPP幀、LCP報文以及LCP報文數據域之間的關系如圖7所示。

圖7 以太幀、PPP幀、LCP報文以及LCP報文數據域間的關系
要在linux和vxWorks下實現該信令交互協議,首先需要知道鏈路層數據幀在兩種系統中的不同收發方法。
在linux系統中,為了實現直接從鏈路層收發數據幀,要用到原始套接字的如下形式:socket(PF_PACKET,SOCK_RAW,protocol),其中SOCK_RAW使用一種與設備無關的標準物理層地址結構structsockaddr_ll{},SOCK_RAW直接向網絡硬件驅動程序發送或接收有完整的數據報文包括MAC頭部。protocol字段可取ETH_P_ARP、ETH_P_IP、ETH_RARP、ETH_P_ALL。其中:ETH_P_IP表示只接收發往目的MAC地址是本機硬件地址的IP類型的數據幀;ETH_P_ARP表示只接收發往目的MAC地址是本機硬件地址的ARP類型數據幀;ETH_P_RARP表示只接收發往目的MAC地址是本機硬件地址的RARP類型數據幀;ETH_P_ALL表示只接收發往目的MAC地址是本機硬件地址的所有類型的數據幀,同時還可以接收從本機發出的所有數據幀。如果打開混雜模式,還會接收到發往目的MAC為非本機硬件地址的數據幀。缺省情況下,從任何接口收到的符合指定協議的所有數據報文都會被傳送到原始套接字口,而使用bind系統調用并以一個sockaddr_ll{}結構體對象將PACKET套接字與某個網絡接口綁定,就可使原始套接字只接收指定接口的數據報文。
在vxWorks6.9系統中,采用vxWorks系統中特有的MUX層實現以太幀的收發。MUX層位于數據鏈路層和網絡層之間,負責管理網絡協議接口和低層硬件接口之間的交互。使用muxBind()函數將協議類型與特定的網絡接口綁定就可以在特定的回調函數收到相關的數據幀。muxBind()函數使用如下形式:
muxBind(ifName,unit,(FUNCPTR)stackRcvRtn,NULL,NULL,NULL,type,NULL,NUL);
其中:ifName為網絡接口的名,unit為接口,stackRcvRtn為協議數據處理函數,type為指定的協議類型,協議類型及含義如下:
MUX_PROTO_SNAR:先調用stackRcvRtn()處理函數,再傳送到所有標準協議處理;
MUX_PROTO_PROMIS :先傳送到所有標準協議處理之后再調用stackRcvRtn()處理函數;
MUX_PROTO_OUTPU:先調用stackRcvRtn()函數,在傳送到物理層驅動程序處理。
由于要在所有標準協議接收之前處理以太幀,所以采用協議類型MUX_PROTO_SNARF。而以太幀數據的發送在vxWorks中我們使用muxSend()函數。發送過程如下:(1)首先進行綁定muxBind(),將需要發送接收的接口綁定到程序中;(2)根據綁定的結果獲取發送MUX_ID;(3)申請發送數據的數據緩沖區,同時進行緩沖區的設置,將報文復制之后,該緩沖區可以直接發送;(4)數據的發送,首先進行發送報文內容的復制,再將報文通過muxSend()發送,如果發送成功將不需要進行報文的釋放,而如果發送失敗,則需要手動釋放緩沖區。
HNR端信令交互協議實現主線程如圖8所示,HNR電臺啟動后首先進行系統初始化和打開以太網接口,接收以太幀。如果接收到路由交換設備發來的廣播包,且LCP報文的代碼域為configure-request,則給路由交換設備回復configure-ack報文且記錄MAC地址,然后創建接收線程和上報線程。

圖8 HNR端主線程流程圖
上報線程流程圖如圖9所示,首先初始化上報線程,然后監測電臺鏈路或網絡狀態改變信息,如果是鏈路質量資料更新信息或無線子網拓撲信息更新信息,則給路由交換設備發送echo-request報文,其中LCP數據域為狀態改變的信息。

圖9 HNR端上報線程流程圖
接收線程流程圖如圖10所示,首先初始化接收線程,然后從網口接收以太幀,如果是PPP報文,則判斷報文的代碼域類型,如果是configure-request報文,則根據報文數據域參數類型分別是MAC地址通告、IP地址分配、信道參數設置、鏈路資源請求、MTU協商分別進行相應處理,然后回復configure-ack報文給路由交換設備;如果報文代碼域類型是echo-request,則回復echo-reply報文給路由交換設備,對端以此作為心跳包判斷電臺是否在線。如果報文代碼域類型是其它類型則不需要處理。

圖10 HNR端接收線程流程圖
本文對HNR電臺以及HNR電臺與路由交換設備間的網絡互聯關系進行了介紹,提出了一種基于鏈路控制協議LCP的HNR電臺與路由交換設備間信令交互的方法,并且在vxWorks和Linux系統中設計和實現了該協議。用通信網絡演示系統中的SDN網絡交換機與HNR電臺間應用了該信令交互協議,通過測試,路由交換設備通告MAC地址給電臺、電臺IP地址分配、電臺在線心跳感知、電臺信道參數設置和信道參數更新通告、鏈路質量更新通告、無線子網拓撲信息通告、MTU協商、鏈路資源申請協內等都可以高效完成,成功率100%。結果表明,該信令協議能方便、高效、穩定的實現HNR電臺與路由交換設備間的互和和信令交互。