微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > SIP协议栈在嵌入式环境下的设计方法

SIP协议栈在嵌入式环境下的设计方法

时间:08-18 来源:互联网 点击:

、提供登录协议栈和进行管理的命令以及所有其他层的初始化和关闭。应用程序使用该协议栈前,必须先调用该层的初始化接口以初始化要使用的层,在结束应用程序前,必须调用该层的关闭接口关闭相应的层。

SIP编码解析是协议栈运行过程中比较耗费时间的一个模块,为满足嵌入式环境,该协议栈使用了一种“懒汉”解析策略,当从网络上收到一个原始的SIP消息时,消息被解析成很多“关键字和关键字值对”,关键字是请求行或SIP头域名,关键字值是没有解析的请求行和头域值。到事务层,在应用程序要访问请求行或某个头域时,才会对其完全解析,这种策略可有效提高SIP解码的速度,极大提高那些需要处理繁重网络流量的应用。

2.3 事务层和传输层的实现

图2为事务层和传输层的软件结构。这2层都使用SIP消息编码解析层的功能处理SIP消息。其中传输层包含3个模块:1)TcpConn模块使用TCP实现收发消息功能;2)UdpConn模块使用UDP现收发消息功能;3)SipMessageSendRcv模块利用TcpConn和UdpConn向应用程序提供统一的消息收发接口。在TcpConn和UdpConn中,都会创建2个线程,分别负责接收和发送SIP消息。

事务层创建并管理事务对象。TransacTIonSendRcv提供发送不同SIP消息的接口,并以回调函数的方式在收到消息时通知应用程序。Tr-ansactionSendRcv使用传输SipMessageSendRcv提供的收发消息功能收发SIP消息,并根据收发的消息类型产生事件,将事件以及事件体(主要是SIP消息)作为参数传递给相应模块UACTransactFSM和UASTransactlFSM。事务层的核心就是这2个模块,分别表示UA客户端和服务器端收到不同消息的处理流程,具体的状态转换如图3所示。

3 SIP协议栈的测试结果

本文实现的系统将在ARM9平台的设备终端上运行,将交叉调试好的程序烧写到ARM9的Flash存储模块中,再进行调试和运行测试。其测试方法是在ARM9平台上实现一个简单的SIP终端系统,该系统利用SIP侦听程序,当一段用户发起呼叫时,双发的SIP模块开始通信。利用SIP信令主动发起呼叫或接收对方呼叫建立会话连接,连接建立好后传送RTP数据,直到一方用户提出结束请求,终止该次会话,系统恢复SIP侦听状态。SIP终端之间呼叫流程如图4所示,开始时主叫(IP=192.168.36.1)向代理服务器(IP=192.168.51.24)发起呼叫,当主叫与被叫的链路搭建成功后,主叫与被叫开始语音通信,语音通信采用的标准是G.729,主叫发送SIP信令给代理服务器采用UDP传输协议,主叫与代理服务器之间在SIP呼叫过程中也同时进行媒体协商,采用网络协议分析工具Ethereal抓包分析,结果如表l~表3所示。

由表2可见,代理服务器向被叫发起呼叫,并同时对主叫作出响应。被叫对呼叫代理作出响应主要采用SIP/SDP协议,是为了使主叫和被叫的媒体协商达成一致。由表3可见,被叫对主叫所发起的呼叫能够作出响应,主叫与被叫之间能够实现SIP呼叫,并进行语音通信。测试结果证明,SIP协议栈在嵌入式Linux系统平台下,运行良好,基本满足设计需要。

4 结束语

本文探讨了SIP协议在嵌入式环境下的应用,讨论了嵌入式SIP协议栈的设计方法。完成了在ARMSYS2410-B的实验室开发板上建立嵌入式Linux系统并在其上实现SIP协议栈主要模块的主要工作。测试结果表明:该协议栈占用空间小,呼叫建立时间短,呼叫成功率高,满足嵌入式式设备对实时性、可靠性和存储空间小的要求,具有良好的性能。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top