首页 > 代码库 > 基于oSIP开源库的SIP代理服务器PartySIP
基于oSIP开源库的SIP代理服务器PartySIP
***************************************************************************************************************************
作者:EasyWave 时间:2014.09.14
类别:Linux应用-SIP代理服务器PartySIP 声明:转载,请保留链接
注意:如有错误,欢迎指正。这些是我学习的日志文章......
***************************************************************************************************************************
一:PartySIP代理服务器简介
partysip是一个SIP代理服务器的实现。SIP协议是会话发起协议是由RFC2543描述(很快就被新的修订过时的),partysip是一个模块化的应用,通过插件添加和删除,partysip及其插件可以作为一个“SIP注册”,“SIP重定向服务器”和“SIP有状态代理服务器”。Partysip 是基于osip实现的的sip服务器。实现了注册服务、重定向、定位、事务状态/无状态机。和eXosip框架思路一样,只是模块实现上面由于功能有所不同而区别。
二:PartySIP代理服务器官网
PartySIP代理服务器官网, 如下图所示:
开源的网址为:http://www.nongnu.org/partysip/partysip.html
三:oSIP开源库简介
oSIP 最大的特点就是小巧灵活,它是基于标准C 编写而成,可以应用于任何支持POSIX 的系统当中,所以即使在嵌入式系统中也可以得到广泛的应用。以下列出了oSIP 协议栈的主要特点:
- 纯C语言开发的开源库。
- 支持操作系统:Solaris,HP unix,RTOS VxWorks,Windows,GNU/Linux,POSIX 兼容系统。
- 支持的RFC 标准 : RFC 3261,RFC 2327,RFC 3264,RFC 3263,RFC 3311。
- 支持的传输协议:TCP,UDP。
- 支持单线程及多线程编程。
- 模块之间采用松耦合,模块独立性高。
- 兼容性高,可以与多种SIP 协议栈互通。
oSIP 主要提供了解析SIP/SDP 消息的API 和事务处理的状态机,它并没有提供高层的SIP 会话控制的API,利用oSIP 可以开发User Agent,IPsoft-phone 和SIP Proxy 等。下图为oSIP的结构图:
在具体构建SIP应用的时候,不同的应用类型对应的应用模型也不会相同,对oSIP的研究和实践的基础上,这里给出了POSIX 兼容系统中oSIP的一般应用模型,如下图所示:
四:PartySIP程序代码简介
PartySIP的main函数中主体功能分为几部分:
- 命令行解析
- 配置文件读取psp_config_load();
- core代码的初始化、即:sip协议中提到的事务状态/无状态的处理psp_core_init ();启一线程。
- 注册用户信息读取到内存、该信息处理可以用数据库代替,所以该函数可以根据需要修改或移除;
- 处理模块的加载,相关函数 main_load_plugins (),根据配置文件的plugins、plugins_config进行加载,参数来自于操作时,保存在psp_config.c的全局变量:
static config_element_t *elements = NULL;
static config_element_t *sub_elements = NULL; - psp_core_start()启动处理接收sip信令的resolv线程、底层网络数据包组织线程tlp、和sip事务处理线程sfp。
- 主进程管理函数main_run (),处理用户输入参数
Partysip的参数分析对于程序修改不重要,需要提出的是:可以把其中的解析处理提出来,用于处理整个程序的退出操作。
五:PartySIP的移植
PartySIP的移植,请继续关注本博客......
基于oSIP开源库的SIP代理服务器PartySIP