SIP松散路由机制漫谈(以OpenSIPS为例)

前言

OpenSIPS基本上只是一个基于事务的有状态代理,没有任何内置的对话支持。有许多特性、服务实际上需要感知对话的,例如在对话创建阶段存储信息,在整个对话存在期间将使用这些信息。

最迫切的例子是在处理对话的INVITE请求(re-INVITE)时的NAT遍历。在处理初始INVITE时,代理会检测主叫或被叫是否在某些NAT网络背后,并修复信令和媒体部分。因为不是所有的检测机制都可用于对话请求(如usrloc),所以为了能够相应地修复顺序请求,代理必须记住原始请求是NAT处理的。还有许多其他应用场景的情况,感知对话可以修复问题或帮助处理。

解决方案是在路由集合中存储额外的与对话相关的信息(Record-Route/Route headers),headers在相继的所有请求中展示。因此,添加到Record-Route头部的任何信息都将在Route头部(对应于代理地址)中找到(没有方向依赖性)。

函数:loose_route()

该函数对包含路由集的SIP请求执行路由。

这个函数的名称有一点迷惑人,因为这个函数还会对“strict router” 格式的请求进行路由。

此函数通常用于处理在对话中(in-dialog)的请求,如ACK、BYE、reINVITE等。尽管如此,对话外请求也可以有一个“预加载的路由集”,并且可以使用loose_route路由。它还负责严格路由器和松散路由器之间的转换。

loose_route()函数的作用是分析请求中的Route头部。如果没有Route头部,则函数返回FALSE,并且应该通过RURI以独占方式进行路由。如果找到Route头部,则函数返回TRUE,并按照RFC 3261第16.12节所述进行操作。唯一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值