石贱弟,孙家奇
(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电台与路由交换设备间的互和和信令交互。