IP电话机、视频可视电话通信产品及组网方案

IP电话之信令穿越技术加媒体代理方式

时间:2020-01-14 13:19 作者:admin 分享到:
        前面提到的几种解决方案都需要增加有关的设备来解决私网穿越问题,另一种思路是通过对相关信令协议进行补充,通过增加有关参数来解决信令协议的私网穿越问题。 如果能单纯通过在协议中增加消息或参数的方式来解决NAT穿越问题,叫以减少中间 设备,减少互通性和业务升级等问题。但由于没有合适的消息参数可以解决NAT之后 用户的媒体通信问题,协议扩展的方式还需要与媒体代理设备一起使用。下面简单介绍 SIP协议解决信令协议的私网穿越问题需增加的参数。
        目前SIP消息基本上都是在UDP上传送的,SIP信令穿越需要考虑内网终端为主叫和被叫两种情况。
(1)内网终端为主叫用户
这种情况需要解决的问题是SIP响应如何穿越NAT送回主叫。SIP响应是根据 Via头部决定下一跳地址的,内网中韵主叫在Via头部放置的是自己的私有地址,如果不 作修改的话,当响应回传到位于公网中的第一跳SIP代理服务器时,看到的顶端Via头部 将是内网地址,就无法继续前传了。为此,SIP定义了两个扩展参数received和rport。 SIP代理服务器收到请求消息后,通过比较消息IP报头的源IP地址和UDP报头的源端 口地址(公有地址)和Via头部中的地址(私有地址)是否一致,就可确定该请求消息是否 经过了 NAT。如果不一致,代理服务器将在Via头部中加上扩展字段received和rport, 分别记录由NAT为该请求消息分配的公有IP地址和端口号。为了向代理服务器表明 必须执行该操作,内网用户发出INVITE请求时,在指示自身地址的Via头部的最后必 须加上rport参数,但该参数没有值。
当该SIP代理服务器收到回送的响应消息时,只要将该响应转发至received和rport 指示的IP地址和端口号,就可通过NAT绑定的地址映射将响应送达内网中的主叫终 端。在图9-6-4所示的SIP响应的NAT穿越中.fe机X位于私网中.其IP地址是10.10. 146. 188,发送INVITE消息时分配的源端口地址是4540.主机X发送的INVITE消 息中的 Via 头部为“Via:SIP/2. 0 UDP 10. 10. 146. 188:4540;”,该消息经过 NAT 时的 映射关系是“10. 10. 146. 188:4540-218. 2. 118. 70:20841”代理服务器在收到 INVITE 消 息后.发现消息的IP报头的源IP地址和UDP报头的源端口地址(公有地址)和Via头部 屮的地址(私有地址)不一致,就在Via头部中加上扩展字段received和rport,分别记录 由NAT为该请求消息分配的公有IP地址和端口号“Via:SIP/2. 0 UDP 10. 10. 146. 188:4540;received=218. 2. 118. 70:rport = 20848”,在回送响应消息是就通过 NAT 绑定 的地址映射“218. 2.118. 70: 20848”将响应送达内网中的主叫终端。
图一     SIP响应的NAT穿越
(2)私网终端为被叫用户
这种情况需要解决的问题的是如何发现被叫用户,解决方法是在被叫用户登记时,在 注册服务器中保存其私有地址和公有地址的映射关系。为此,SIP定义了新的Translate 头部字段,用于REGISTER消息。该头部的内容必须和Contact头部屮的某一个地址 (私有地址)相同,表示要求注册服务器根据NAT分配的公有地址对该Contact地址进行 变换。
设注册服务器和第一跳SIP代理服务器位于一起,当注册服务器收到含冇Translate 字段的登记请求时,发现消息的IP报头的源IP地址和UDP报头的源端口地址(公有地 址)和Via头部中的地址(私有地址)不-致,就判知该请求经过了 NAT设备,于是就将 相应的Contact字段(私有地址)更换为登记消息的源地址(公有地址),并储存在服务器 的数据库中。其后.当呼叫该用户的INVITE请求到来时,代理服务器査找注册服务器, 就可获得保存的公冇IP:端口 >地址。INVITE请求转发至该地址后,NAT就会将其 转换为被叫用户的私有地址,从而送达被叫用户。例如,在图9-6-5所示的SIP请求的 NAT穿越示例中•主机X位于私网中,其IP地址是10. 10. 146. 188,发送REGISRER消 息时分配的源端口地址是4540•主机X发送的REGISRER消息屮的Via头部为“Via: SIP2. 0 UDP 10.10. 146. 188:4540;”,该消息经过 NAT 时的映射关系是“10. 10. 146. 188:4540-218. 2. 118. 70:20848”代理服务器在收到REGISRER消息后,发现消息的IP 报头的源IP地址和UDP报头的源端口地址(公有地址)和Via头部中的地址(私有地址) 不一致,就将相应的Contact字段(私有地址)更换为登记消息的源地址(公有地址) “Contact: sip:a@218. 2. 118. 70: 20848”,并在服务器的数据库中记录下列表项“ a@ 2.
com@218. 2. 118. 70:20848”。当呼叫该用户的INVITE请求到来时,代理服务器査找注 册服务器,就可获得保存的公有CIP:端口 >地址“218. 2. 118. 70:20848”,将消息的IP报 头的源IP地址和UDP报头的源端口地址分别修改为以上值,INVITE请求转发至NAT 后,NAT就会将其转换为被叫用户的私有地址,从而送达被叫用户。
图二     SIP请求的NAT穿越
版权所有:IP电话:http://www.g3voip.com 转载请注明出处

热销IP电话产品hot products