微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > SIP应用层网关技术

SIP应用层网关技术

时间:04-23 来源:互联网 点击:

平台是Windows2000,开发工具是Visua1C++ 6.0,采用的是OSIP协议栈,开发的语言主要是C。

结构及工作流程

这里ALG被分成两个部分:ALG主体部分和SIP URI信息管理系统部分,这两部分被设计成是两个相互独立的程序。ALG主体部分的功能是处理各种流向上的SIP消息、管理呼叫环境以及跨网络呼叫时,在通信双方之间进行RTP数据包的转发;SIP URI信息管理系统部分的功能是负责私网内部SIP URI及其绑定信息的管理和维护,该系统及其维护的数据库放置在私网内部的其它主机上运行。两部分之间通过UDP/TCP进行通信,这样可以减小来自外网上攻击的风险,从而提高数据信息的安全性。 由于ALG主体无法直接对SIPURI的数据信息进行访问,因此必须在这两部分之间提供访问的接口,“信息数据库接口”模块就是为 ALG访问SIP URI信息管理系统的接口。

SIP应用层网关的主要工作由一个SIP消息的监听线程、一个与SIP URI信息管理系统进行通信的线程、一个SIP消息处理线程(包括对话的管理和维护)和数量不定的RTP数据包转发线程完成。RTP数据包转发线程能够根据需要而动态的生成和释放,因此数量不定。

SIP应用层网关的基本工作流程如下:

应用程序初始化完毕以后,启动SIP消息监听线程、URI信息数据库访问线程和SIP消息处理线程。SIP消息监听线程对ALG的所有SIP端口(包括私网和公网)进行监听,如果收到SIP消息,它把消息连同其源IP地址和端口以及消息本身的长度封装成一个简单的数据结构放入一个先入先出的队列(FIFO)当中,然后继续监听,它不对消息进行进一步的处理。

一旦FIFO中有了SIP消息,SIP消息处理线程就被唤醒,并投入运行,它从FIFO中取走消息,然后开始对这个消息进行处理:首先它对消息进行解析以及例行的语法检查,然后根据SIP消息的源地址和目的地址将其分成四类:

(1)内部消息,其源地址和目的地址都在私网内部。

(2)对外消息,其源地址是私网地址,目的地址是公网地址。

(3)对内消息,其源地址是公网地址,目的地址是ALG的公网地址。

(4)外部消息,其源地址和目的地址都是公网地址。

SIP消息被分成以上四类后,ALG对它们进行不同的处理。第(1)类消息称为“内部消息”,第(2)类和第(3)类消息统称为“跨网络消息”;第(4)类消息称为“外部消息”,它会被无条件丢弃,ALG不对其作进一步的处理。SIP消息处理线程在对“跨网络消息”消息进行处理的同时,对呼叫的上下文环境进行管理和维护,并在必要的时候,启动新的RTP数据包转发线程,使其完成对跨网络通信的RTP数据包的转发工作。

基于SOCKET消息接收与应答功能模块

由于UDP包的接收是异步的,ALG无法预测何时会有SIP消息到来,因此在SIP应用层网关的设计中,用单独的线程对SIP端口进行监听。由于SIP应用层网关处在两个网络的边界上,并在两网之间转发数据,因此ALG的SIP端口也相应的分为私网和公网两部分,在任何一边的网络上,都可以打开一个或者多个与套节字(SOCKET)相联系的SIP端口。并且每隔一定时间试图从所有监听的SIP端口相关联的SOCKET上读取数据,如果读到了数据,就对数据做简单的封装,然后把它放入应用层网关的SIP消息FIFO当中。

信息数据库接口模块

出于安全性的考虑,SIP URI信息管理系统从SIP应用层网关中分离出去,这个系统的功能并不复杂,一方面它接受来自ALG的访问;另一方面,它必须对自身的信息数据库进行维护。ALG本身必须通过信息数据库接口模块对其进行访问。

ALG需要从SIP URI信息管理系统得到的信息有两类:一类是用户信息,包括用户名和密码;另一类是SIP URI绑定信息,这一类信息的交互是双向的,不同的REGISTER请求会要求ALG添加、修改、删除或者仅仅是获取SIP URI的绑定信息。本文用统一的数据结构来表示这两类信息,这样只需要一次访问就能够获取所需全部信息,可以缩短ALG处理SIP消息所需的时间。

信息管理模块

SIP应用层网关需要很多信息才能完成工作,有些信息是动态的,例如SIP URI的绑定信息,不同用户不同时间的绑定信息是不同的,因此只有在需要的时候应用层网关才从数据库中进行动态的访问;而另外一些信息则是相对稳定的,如ALG本身的域名、IP地址等等。这些信息很多,但并不复杂,大多是字符串、数值或者布尔型的变量,信息管理模块的功能就是维护和管理它们。

“媒体会话”模块

当SIP应用层网关为跨网络呼叫的终端之间建立起媒体会话(视频、音频)的连接后,双方之间主要的交互将是RTP数据流(媒体数据被打包成RTP数据包)的交互,“媒体会话”模块的功

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

网站地图

Top