SIP消息路由机制

网友投稿 1287 2022-10-03

SIP消息路由机制

SIP消息路由机制

一:请求路由    松散路由(Loose Router)和严格路由(Strict Router),这是SIP协议(RFC3261)中的一个非常重要的概念。    在SIP消息的Route头域或Record-route头域中,携带的域值是SIP URI或SIPS URI,如果这个URI带有”lr”属性值,那么,就表示URI的地址所标识的SIP PROXY是松散路由的,否则,是严格路由的。如Record-Route: 、Route:

松散路由是RFC3261所定义的消息路由规则,而严格路由则是RFC2543中所定义的路由规则。松散路由提供了对严格路由的兼容机制。路由规则中,涉及了对Request URI域值的处理。严格路由时,要求Request URI为路由地址。     严格路由是一种比较“死板”的理由机制,这种路由机制在SIP协议的前身RFC 2534中定义,其机制非常简单。它要求收到的消息的request-URI必须是自己的URI,然后它会把第一个Route头域“弹”出来,并把其中的URI作为新的request-RUI,然后把该消息路由给该URI。而松散路由则提供了一种更为灵活的机制。处理步骤:

Proxy首先会检查消息的request-URI是不是自己属于自己所负责的域。如果是,它就会通过定位服务将该地址“翻译”成具体的联系地址并以此替换掉原来的request-URI;否则,它不会动request-URI。 PROXY首先检查路由表中的第一个地址是否为自己,如果是则从表中删除。 严格路由在发往下一跳前,将Request URI的域值更新为路由表中的表头地址(下一跳)。 松散路由将路由如果发现Request URI是自己插入到路由表中的地址。从路由表中取出最后一个地址更新Request URI,并删除最后一个地址。 松散路由检查下一跳是否为严格路由。如果不是,不处理;否则,将Request URI插入到路由表表尾,并用下一跳地址(严格路由的地址)更新Request URI。 如果路由表为空,则路由给Request URI。      路由机制用于请求消息的路由,其中Route头域携带路由表信息,而Record-Route头域则是SIP PROXY想让自己保留在后续dialog中而插入的记录。也就是说,通常初始化时,发起终端是没有路由表的(当然也可以强制配置,这样局限性太强),完成第一次消息交互后,双方根据Record-Route信息,各自更新路由表。二:应答消息路由     SIP应答消息的路由机制,相对请求来说,比较简单,基本思想就是,请求从哪里来,应答回哪里去。那是如何实现的呢?很简单,Via头域就是完成这个差事的。Via头域表说明了SIP请求实际的路由过程,用于应答消息的回程路由。下面是一个via的示例(注意,换行仅是为了增强可读性,没其它意思)        Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8        ;received=192.0.2.1

其中pc33.atlanta.com部分称为sent-by属性,表明了消息在本站点的具体发送地址。每个SIP PROXY在前转SIP请求消息时,都必须在Via表前端插入自己的via(称为top VIA)并说明sent-by。而“received=192.0.2.1”这一参数则说明了消息到达本站点时的源地址。      当UAS发送应答时,往top VIA所指示的地址发送(received优先于sent-by)。当SIP PROXY路由应答消息时,首先检查top VIA是不是自己,不是则不处理,是则删除top VIA,并继续前转。所以,当源发起端收到应答时,应答消息中应该只有一个VIA头域,并且是指向自己的,否则就应该丢弃。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微信小程序首页打不开怎么办(小程序微信打不开怎么回事)
下一篇:MQ的分类组成优缺点测试点入门教程
相关文章

 发表评论

暂时没有评论,来抢沙发吧~