今天来说说mod_soifa,它就是FreeSWITCH中的SIP模块。 FreeSWITCH并没有自己开发新的SIP协议栈,而是使用了比较成熟的开源SIP协议栈Sofia-SIP,以避免“重复发明轮子”。Sofia-SIP是由诺基亚公司开发的SIP 协议栈,它以开源的许可证LGPL发布。参见 http://sofia-sip.sourceforge.net/ 。 在FreeSWITCH中,实现一些互联协议接口的模块称为Endpoint。FreeSWITH支持很多类型的Endpoint,如SIP、H232等。这些不同的Endpoint主要是使用不同的控制协议跟其他的Endpoint通话。所以说,Endpoint一般是跟通话相关的。 有的读者可能会问,那么实现SIP的模块为什么不支持叫mod_sip呢?这是由于 FreeSWITCH的Endpoint是一个抽象的概念,你可以用任何的技术来实现。实际上mod_sofia只是对Sofia-SIP库的一个粘合和封装。除Sofia-SIP外,还有很多开源的SIP协议栈,如pjsip、osip等。最初选型的时候,FreeSWITCH 的开发团队也对比过许多不同的SIP协议栈,最终选用了Sofia-SIP。FreeSWITCH 是一个高度模块化的结构,如果你喜欢其他协议栈,可以自己实现如mod_pjsip或mod_osip等,它们是互不影响的。这也正是FreeSWITCH架构设计的精巧之处。 mod_sofia实现了SIP中的注册服务器,重定向服务器,媒体服务器、呈现服务器、SBC等各种功能。它的定位是一个B2BUA,它不能实现SIP代理服务器的功能。实现SIP代理服务器的开源软件有OpenSIPS、Kamailio等。它们可以很好的与FreeSWITCH配合工作。 在mod_sofia中,有一个概念是SIP Profile,它相当于一个SIP UA,通过各种不同的配置参数可以配置一个UA的行为。一个系统中可以有多个Profile,每个Profile都可以监听不同的IP地址和端口对。 一个Profile中有多个Gateway,Gateway可以直译为网关,它主要用于定义一个远端的SIP服务器,使FreeSWITCH可以与其他服务器通信。FreeSWITCH可以作为一个SIP客户端(UAC)向远端的网关进行“注册”;当然也可以不注册,而是使用与远端服务器对等的方式(俗称SIP Trunk,即SIP中继)相互通信(我们将在第14章讲到FreeSWITCH与与它系统相连的各种拓扑结构)。 FreeSWITCH可以作为注册服务器,这时候,其他的SIP客户端就可以向它注册。FreeSWITCH将通过用户目录(Directory)中的配置信息对注册用户进行鉴权。这些SIP客户端所代表的用户就称为本地SIP用户、简称本地用户。 牢记FreeSWITCH是一个B2BUA。如果Alice通过FreeSWITCH给Bob打电话,Alice首先向FreeSWITCH发起呼叫,对FreeSWITCH而言,这路通话就称为来话(Inbound Call);然后FreeSWITCH再去呼叫B,这路通话称为去话(Oubtound Call)。如果来、去话都是在与本地用户之间的,又称为本地来话和本地去话。 如果来、去话的发起者和目的地不是本的用户。而是以中继方式进行的,就称为中继来话或中继去话。但是,中继的叫法只是沿用传统的PSTN网络中的概念,在SIP术语中,本来是没有中继的概念的。 FreeSWITCH默认配置了internal和external以及internal-ipv6等三个Profile。其中internal主要用于本地用户的注册,它与external的区别除了使用的端口号不同外,它们之间最大的区别就是发送到internal这个Profile上的呼叫(INVITE请求)是需要鉴权的,但发送到external上的INVITE请求却不需要鉴权。这一点,用户在使用中可以慢慢体会。只要不被它们的名字所迷惑,知道所有的Profile其实都是一样的,这两个Profile只是FreeSWITCH默认提供的两个例子而已,它们之间的不同在于使用了不同的配置参数。 该模块是FreeSWITCH中最大的一个模块,也是最主要的一个模块,它的功能和配置都很多,留待我们日后慢慢讲。点击左下角的「查看原文」也可以看到更多的信息。 ---------------------------------------- 题图:Sofia 来自wikipedia Sofia是保加利亚的首都和最大城市,跟我们的mod_sofia可没有半毛钱关系啊。 ---------------------------------------- FreeSWITCH-CN是什么? FreeSWITCH-CN是FreeSWITCH中文社区,我们的官方网站是 http://www.freeswitch.org.cn 。FreeSWITCH-CN同时也是一个微信公共账号,可以通过点击本页最顶端的“FreeSWITCH中文社... ”,或在通迅录->订阅号中搜索“FreeSWITCH-CN”来订阅,也可以到官方网站上扫描二维码。当然,不管是新用户还是老用户,随时都可以输入m或1显示本账号的主菜单。 FreeSWITCH-CN的账号维护者是Seven Du,在此,他会分享多年的FreeSWITCH使用经验,分享一些对开源VoIP软件以及软件社区的思考,并隔三差五的解答一些粉丝关心的问题。Seven Du于2007年听说、2008年开始使用FreeSWITCH,2009年创办FreeSWITCH-CN中文社区,2011~2013连续三年参加了在美国芝加哥举办的ClueCon全球VoIP开发者大会,该会议是由FreeSWITCH核心团队主办的。 如果你在学习和使用FreeSWITCH的过程中,有什么有趣的故事,也欢迎与我分享。移动设备上打字不方便,如果想写长的留言可以发邮件到 wechat@freeswitch.org.cn 。
本文分享自 FreeSWITCH中文社区 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!