舰船装备多级链路设计与实现
2011-06-13董沛然
董沛然,贺 信
(中国人民解放军海军七○四工厂,山东青岛266109)
0 引言
在远程控制领域中,网络化控制技术已经成熟,一对一、一对多的控制实现较为方便。但在舰船通信装备控制网络中,需要具有串行和从属关系的多级链路的控制应用,在相对复杂的应用情况下,多级链路的状态维护非常麻烦。
利用SIP可以方便地建立起多级链路,SIP协议自带的状态机组足以应付复杂的多级链路控制;同时在链路建立的情况下,SIP协议中的INFO方法可以方便地传输、交换私有控制信息和反馈信息。
1 SIP协议
SIP是互联网工程任务组(Internet Engineering Task Force,IETF)标准体系中的一部分,是一个应用层的信令控制协议,用于创建、修改和释放一个或多个参与者的会话。这些会话可以好似Internet多媒体会议、IP电话或多媒体分发。会话的参与者可以通过组播(Multicast)、网状单播(Unicast)或二者的混合体进行通信。SIP的一个重要特点是它不定义要建立的会话的类型,而只定义应该如何管理会话。有了这种灵活性,也就意味着SIP可以用于众多应用和服务中,包括交互式游戏、音乐和视频点播以及语音、视频和Web会议。
SIP能成为软交换体系中的一个非常重要的协议,原因在于它被认为是一个标准组件或部件,可以非常灵活地搭配其他协议使用,比如SIP加上RTP协议就能方便地实现音视频等多媒体的传输控制。SIP独立工作于底层网络传输协议和媒体,底层传输可以是采用ATM的IP,传输协议可以是UDP或TCP。它规定1个或多个参与方的终端设备如何能够建立、修改和中断连接,而不论是语音、视频、数据或基于Web的内容。
SIP较为灵活,可扩展,而且是开放的。使用SIP协议,编程人员可以在不影响连接的情况下在消息中增加上层应用的新信息。
在安全性方面,SIP提供了一套完整的安全服务机制,包括防止拒绝服务、认证服务、完整性保证、加密和隐私服务。
2 舰船通信装备网络控制系统体系组成
由于作战勤务的需要,舰船通信装备一般构成一个多级的通信网络,前端用户终端为上级链路,完成对通信装备的集中调用、控制和使用;中间级链路为信道设备,提供信道为用户终端所选择;下级链路为辅助处理设备,如数据、报文处理和加密等设备。不同舰船可以根据装备配置的不同构成3级、4级甚至更多级的通信链路。
舰船通信装备网络控制系统用于实现舰船通信网络的多级通信链路,由多个用户终端(UU)和网络控制器(NCU)组成,用户终端是远程控制的终端设备,网络控制器是实现舰船通信装备网络接入的设备,多个用户终端和网络控制构成一个完整的IP网络。整个控制网络体系如图1所示。
图1 舰船通信装备网络控制系统体系结构
典型的通信装备多链路控制工作流程如下:
①UU作为上链设备发出控制指令至连接加密设备的NCU(中链设备),要求使用加密功能;
②中链设备的NCU在完成本链设备的控制后,发送控制指令至连接信道设备的NCU(下链设备),要求将加密后的语音数据发送出去;
③下链设备的NCU在完成设备控制后,需要将准备妥当(设备OK)的信息逐级回送至上链设备。
3 NCU设计
3.1 硬件设计
网络控制器硬件部分主要提供控制设备用的RS232/RS422串口、100M以太网接口以及用于语音输出的四线音频接口,同时提供软件运行的环境。具体可分为:电源模块、CPU主控模块、外围接口模块。
CPU主控模块完成对接口模块的硬件初始化控制和提供软件运行的环境。CPU选用MINDSPEED公司基于ARM9核的M82515,PBGA封装。此芯片的核电压为1.2 V,I/O口电压3.3 V。该模块CPU系统配置为:BOOTROM 512 K,SDRAM 64 M,FLASH 8 M。
外围接口模块,提供控制用接口,本系统提供4个RS232/422串行控制口,1路四线音频接口,1个FE网络接口,8路扩展并行I/O口。串口采用芯片SC16C654和MAX3160设计实现,网口PHY芯片为RT8201bl,外围接口与 CPU通信通过CPLD LCMXO256C桥接。
3.2 软件设计
3.2.1 整体结构设计
网络控制器软件部分基于VxWorks系统开发,采用C语言编写,控制主机软件部分基于Windows Xp系统开发,采用C++语言编写。
引导程序完成内存空间划分、时钟初始化,将程序代码复制到SDRAM后跳转到SDRAM中运行。在SDRAM中运行时,首先对MINDSPEED的RS232/FEC(快速以太网)进行初始化,包括MAC地址、IP地址;然后跳转到应用程序入口(main_proc)开始应用程序的运行。
应用程序分为SIP协议处理模块、综合处理模块和设备控制模块。SIP协议处理模块主要实现标准SIP协议流程,将INFO消息中BODY体取出交给综合处理模块;综合处理模块完成对 INFO消息BODY体的解析、处理和再生,同时驱动SIP协议处理模块和设备控制模块的运行;设备控制模块接受来自综合处理模块的消息,通过RS232/RS422串口、扩展I/O口、四线音频接口与设备进行控制、交互。
3.2.2 SIP协议处理模块实现
SIP协议处理模块的实现是基于SIP开源协议栈OSIP2和EXOSIP设计开发。
Osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,具有短小简洁的特点,专注于sip底层解析使得它的效率比较高。其缺点也很明显,首先就是可用性差,没有很好的api封装,使得上层应用在调用协议栈时很破碎;其次,只做到了transaction层次的协议过程解析,缺少call、session和dialog等过程的解析,这也增加了使用的难度;再次,缺少线程并发处理的机制,使得它的处理能力有限。
eXosip是Osip2的一个扩展协议集,部分封装了Osip2协议栈,使得更容易被使用。eXosip增加了call、dialog、registration 和 subscription 等过程的解析 ,使得实用性更强。综合来说,Osip2加上eXosip协议栈是实现Sip协议不错的选择。
OSIP2和EXOSIP初始化完成后,SIP协议处理模块中SIP信令实现流程如图2所示。
图2 SIPelse信令处理流程
核心代码如下:
void eXosipTask(void)
{
eXosip_event_ t *je=NULL;
je=eXosip_ event_wait( 0,SIP_MAX_WAIT_EVENT_
SECONDS);
eXosip_lock( );
eXosip_ default_action( je);
eXosip_automatic_ refresh();
eXosip_unlock();
if(je==NULL)
{
return;
}
if(je->type<=EXOSIP _REGISTRATION_TERMINATED)
{
eXosipRegisterMsgHdl(je);/*注册处理*/
}
else if(je->type<=EXOSIP_CALL_INVITE)
{
eXosipCallMsgHdl(je);/*呼叫处理*/
}
else if(je->type<=EXOSIP_CALL_RELEASED)
{
eXosipCallNoInviteMsgHdl(je);/*非INVITE处理*/
}
/*省略一些其他事件解析代码*/
else
{
Printf(“ ===eXosip:Unknown Event Type=%d” ,je->type);
}
if(je!=NULL)
{
eXosip event free(je);
}
应用层消息是通过INFO消息来传送的。SIP INFO方法是在rfc2976中定义的,INFO消息的目的是沿着SIP信令通路携带应用层消息,INFO方法并不改变SIP呼叫的状态。因此使用INFO方法传送应用层消息必须先建立SIP信令通路的连接,INFO消息是在非INVITE事件中处理的。建立和传送INFO的核心代码如下:
STATUS eXosipSendInfo(UI OsipFsmID,UC const*Info)
{
OSIP FSM ID pOsipFsm;
int iResult;
osip _ message _ t*pInfoMsg=NULL;
osip _cseq _ t*pCseq=NULL;
UL CSeq;
UI FsmID;
pOsipFsm=OsipFsmGetPtr(OsipFsmID);
eXosip_call_build _ info( pOsipFsm->did,&pInfoMsg);
osip_message_set_body( pInfoMsg,Info,strlen(Info));
osip _message _set _content _type (pInfoMsg,
“ application/sdp”);
{
pCseq=osip _ message _ get_cseq(pInfoMsg);
CSeq=atol(pCseq->number);
}
eXosip_ lock();
eXosip _call _send _request (pOsipFsm->did,
pInfoMsg);
eXosip_unlock( );
return 0;
}
接收到INFO后的处理流程如图3所示。
图3 接收INFO后的处理流程
4 结束语
舰船通信装备网络控制系统实现了SIP协议在多级链路控制系统中应用,通过SIP协议栈建立INFO传送的通道,避免了各级链路繁杂的状态处理,程序设计简洁方便,系统中各级链路均能按照预定的控制模型执行。该设计实现了SIP协议在舰船通信设备控制领域的应用,具有广泛的工程应用价值。
[1]徐培文,谢水珍,杨从保.软交换与SIP实用技术[M].北京:机械工业出版社,2007.
[2]周启平,张 杨.VxWorks下设备驱动程序及BSP开发指南[M].北京:中国电力出版社,2004.
[3]程敬原.VxWorks软件开发项目实例完全解析[M].北京:中国电力出版社,2005.
[4]黄永峰,李建庆.下一代网络核心控制协议:SIP及其应____用[M].北京:人民邮电出版社,2009.