opensips学习(一)

关于opensips.cfg中的路由脚本

先记录下路由基础

1.路由请求与应答

请求的路由是用opensips 脚本中的一些mechanism来实现的;跨域的呼叫,opensips使用DNS来找到路由目的地;域内呼叫使用用户位置表来实现。呼叫应答根据VIA头字段中的信息进行回路路由。在有状态路由中,transaction根据VIA头中的分支参数来匹配。
opensips学习(一)_第1张图片

通过观察VIA头字段内容,它给出了足够的可以进行应答回路的信息。另一个重要的参数就是branch,branch用来在stateful模式下匹配transaction。received和rport用来进行RFC3581的nat穿越。

初始和顺序请求
initial request和sequential request在路由逻辑上还是不同的。
initial request基于discovering mechanism来进行路由的,为了定位目的地,一般利用location表或者DNS。initial request在路由路径中记录sip代理,利用的是record routing,下面是一个例子关于initial INVITE的例子
opensips学习(一)_第2张图片

sequential requests是在initial request收集的信息基础之上进行路由的,叫做route set。这脚本中,你可以利用loose_route()函数来进行路由。sequential request一般来说是ACK,BYE和re-INVITE.我们可以通过TO 头域中的TAG参数来区分initial request和sequential request。sequential request在route header和URI基础之上路由。换句话说,UAC接收route set是基于record-route和contact头域。

你可能感兴趣的:(opensips)