`
javatoyou
  • 浏览: 1013626 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

SIP消息路由机制

 
阅读更多

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

松散路由是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头域,并且是指向自己的,否则就应该丢弃。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/niino/archive/2010/06/30/5705102.aspx

分享到:
评论

相关推荐

    3-IMS培训教程---SIP协议.pdf

    询问/应答机制 广泛应用于internet 可以基于UDP、TCP和SCTP传输,目前最常用UDP 4 协议簇 信令协议 – 注册、定位用户、路由 – 建立,修改,释放会话 媒体传输协议 – 用于传输语音/视频包 SIP – 信令协议 会话的...

    sip RFC3261 中文版

    7.5 分帧的SIP消息(Framing SIP Messages) 40 8 一般用户代理行为 40 8.1 UAC特性 41 8.1.1 产生一个请求 41 8.1.1.1 Request-URI 42 8.1.1.2 TO 42 8.1.1.3 From 43 8.1.1.4 Call-ID 44 8.1.1.5 Cseq 45 8.1.1.6 ...

    Handbook on Session Initiation Protocol(part1)

    SIP协议开发手册,详细介绍了SIP协议开发的各个细节,包括SIP路由、媒体能力协商、SIP安全机制等,是SIP协议开发人员非常有用的工具书。

    Handbook on Session Initiation Protocol(part2)

    SIP协议开发手册,详细介绍了SIP协议开发的各个细节,包括SIP路由、媒体能力协商、SIP安全机制等,是SIP协议开发人员非常有用的工具书。

    omnidial:找到不同的方式拨打联系人

    Omnidial是一个旨在改善对通过Internet路由呼叫或消息的机制的实时发现的项目。 作为Android应用程序和Java库提供,可集成到其他Android和桌面应用程序中。 将电话号码或地址簿数据作为输入。 使用电话号码(可能...

    网通交换培训教材

    8.4.1 信令路由分类和含义消息传递部分(MTP)路由 267 8.4.2 信令连接控制部分(SCCP)路由 268 第9章 信令网的结构 269 9.1 信令网的分类 269 9.1.1 无级信令网 269 9.1.2 分级信令网 270 9.2 影响信令网分级的...

    P2P网络技术原理与C++开发案例 源代码和第五章电子书 Peercast(王浩聪注释版)

    第3章 P2P网络的基础——搜索和路由算法 36 3.1 传统搜索技术 36 3.2 P2P搜索技术的发展 37 3.3 DHT网络(结构化P2P网络)的搜索技术 39 3.3.1 DHT路由原理 39 3.3.2 Chord 40 3.3.3 Pastry 44 3.3.4 ...

    rfc中文文档目录,包含部分翻译

    RFC516 丢失消息的检测 RFC591 在 NVT ASCII UCSB和在线系统之间的实验输入映象 RFC621 “注意圣诞节的时候要把长袜挂在烟囱下面” RFC628 更深的数据语言的设计观念 RFC634 最近的网络图 RFC637 SU-DSL网络...

    中文版RFC,共456

    RFC1998 BGP 社区属性在多本地路由中的应用 RFC2002 IP移动性支持 RFC2003 在IP内封装IP RFC2004 IP最小封装 RFC2005 IP移动性的适用性陈述 RFC2011 SNMPv2 管理信息基础用于Internet 协议使用SMIv2 RFC2012 SNMPv2 ...

    RFC中文文档-txt

    RFC1998 BGP 社区属性在多本地路由中的应用 RFC2002 IP移动性支持 RFC2003 在IP内封装IP RFC2004 IP最小封装 RFC2005 IP移动性的适用性陈述 RFC2011 SNMPv2 管理信息基础用于Internet 协议使用SMIv2 RFC2012 SNMPv2 ...

    企业网VOIP设计方案.pdf

    三、方案设计拓扑图 常州信息职业技术学院 VOIP 电话的配置与应用 李志华 第 3 页 2017/4/18 四、方案的具体实施 本方案主要采用 MSR 系路由,设计主要以 SIP 代理服务器的方式组建的 VOIP 企业语音通信网络。...

    3G的标准与原理相关资料

    6. 3GPP R4版本为什么使用BICC协议而不是SIP-T? 4 7. 在R4中使用的扩展的H.248与H.248有什么不同? 5 8. 3GPP R99和R4核心网电路域差异 5 9. 承载与控制分离的结构有什么好处? 8 10. 3GPP R4相对于R99的优势 9 11....

    linux网路编程 中文 23M 版

    第1 章Linux操作系统概述................... .......................................................................... 2 1.1 Linux发展历史...........................................................

Global site tag (gtag.js) - Google Analytics