SIP协议的NAT穿越技术

合集下载

几种方式解决SIP穿越NAT总结讲解

几种方式解决SIP穿越NAT总结讲解

SIP穿越NAT的几种方式多媒体会话信令协议是在准备建立媒体流传输的代理之间交换信息的协议,媒体流与信令流截然不同,它们所采用的网络通道也不一致。

由于协议自身设计上的原因,使得媒体流无法直接穿透网络地址转换/防火墙(NAT/Firewall)。

因为它们生存期的目标只是为了建立一个在信息中携带IP地址的分组流,这在遇到NAT/Firewall 时会带来许多问题。

而且这些协议的目标是通过建立P2P(Peer to Peer)媒体流以减小时延,而协议本身很多方面却与NAT存在兼容性问题,这也是穿透 NAT/Firewall的困难所在。

而NAT仍是解决当前公用IP地址紧缺和网络安全问题的最有力手段,所以解决NAT穿越成为首要问题。

以SIP通信为例,呼叫建立和媒体通信的建立是依赖SIP消息首部和SDP消息所描述的地址和端口信息进行的,呼叫双方分别在内网和外网上,内网是通过NAT设备连接到外网,由于NAT设备工作在IP和TCP/UDP层,所以它不对SDP 等应用层数据进行NAT变换,因此会造成寻址失败,从而导致呼叫无法正常建立。

另外,VOIP设备的主要通信协议(如SIP和H.323)要求终端之间使用IP地址和端口号来建立端到端的数据侦听外来的呼叫,而防火墙却通常被配置阻止任何不请自到的数据分组通过。

需要网络管理者打开防火墙上的一个端口来接收呼叫建立数据分组,例如5060端口(SIP的通信端口),但IP语音和视频通信协议还要求打开许多别的端口接收呼叫控制信息来建立语音和视频通信,这些端口号事先并不知道,是动态分配的,也就是说网络管理者为了允许语音和视频通信将不得不打开防火墙上所有的端口,防火墙就失去了存在的意义。

所以当前的问题还有需要解决监听端口的问题。

如下图SIP呼叫不成功示意图分析:1 d:211.83.100.100:23766 s:192.168.1.166:10102 d:211.83.100.100:23766 s:211.83.100.166:99933.d:211.83.100.166:9993 s:211.83.100.100:237664.d:192.168.1.166:1010 s:211.83.100.100:237665.d:211.83.100.110:23788 s:211.83.100.100:20206.d:211.83.100.100:3399 s:211.83.100.110:237887.d:211.83.100.166:9993 s:211.83.100.100:237668.d:192.168.1.166:1010 s:211.83.100.100:237669.d:211.83.100.100:3399 s:211.83.100.110:2378810.d:211.83.100.166:9993 s:211.83.100.100:2376611.d:192.168.1.166:1010 s:211.83.100.100:2376612.d:211.83.100.110:23788 s:192.168.1.166:1010d:211.83.100.110:23788 s:211.83.100.166:999313.d:192.168.1.166 s:211.83.100.110:23788 A对B invite 时在SDP中带上了RTP协商的端口和私网IP,B回复200OK时告知RTP时的端口和私网地址,B 收到A的RTP包后回复,因为RTP包记录是私网地址,所以RTP包被丢弃。

图解 SIP 穿透NAT的问题

图解 SIP 穿透NAT的问题

图解 SIP 穿透NAT的问题NAT是指网络地址转换。

它是这样一种技术,在Internet公网的IP 不够的情况下,让公司或者家庭的多台电脑,共用一个公网的IP地址上网。

常见的宽带路由器,就有这样的功能。

如下面的示意图。

RTP 协议RTP 即实时传输协议(Real-Time Transport Protocol)。

RTP是传输语音、视频图像等实时数据的协议。

使用RTP传输时,需要知道对方的IP地址和端口。

SIP协议SIP协议,就是帮助呼叫双方,找到对方的IP地址和端口,及协商多媒体的类型和格式等信息。

如图。

你与朋友打电话,你的 IP是1.2.3.4 , RTP端口是 8000。

朋友的IP是193.226.0.1 ,用的RTP 端口是9000。

这样,知道了双方的IP地址与端口,双方就能够通信。

SIP+RTP 穿透问题SIP穿透NAT时,遇到的问题,实际上不是SIP穿不过NAT,本质上是RTP的问题,是RTP的数据穿不过NAT。

SIP设备要在SIP消息包中,声明它所使用的RTP端口。

当SIP设备在NAT后面时,它难以准确地预知 NAT分给它的公网的RTP端口;也就是说,SIP设备难以知道它使用RTP端口(NAT公网IP上分给RTP的端口)是多少。

对SIP服务的运营商来说,如果中转语音数据,则这个问题就比较好解决。

如使用SIP会话边界控制器SBC。

用SIP SBC 来中转语音、视频数据流,因为SBC总是在公网的IP地址上运行,则SIP设备把RTP数据发送到公网上的SBC上,是不会有问题的。

Skype 解决NAT穿透的方法Skype 解决NAT穿透的方法很聪明,它是利用在公网上运行的Skype软件,来中转在 NAT 后面的Skype软件语音数据流。

也就是说,如果你使用 Skype 软件且用的是公网IP地址,可能你的电脑在中转其它的 Skype 用户的语音数据,而你自己并不知道。

基于ICE的SIP的NAT穿透技术

基于ICE的SIP的NAT穿透技术

基于ICE方式SIP信令穿透Symmetric NAT技术研究曾立吴平高万林武文娟摘要基于IP的语音、数据、视频等业务在NGN网络中所面临的一个实际困难就是如何有效地穿透各种NAT/FW的问题。

对此,会话初始化协议SIP以往的解决方法有ALGs,STUN,TURN等方式。

本文探讨了一种新的媒体会话信令穿透NAT/FW的解决方案—交互式连通建立方式(ICE)。

它通过综合利用现有协议,以一种更有效的方式来组织会话建立过程,使之在不增加任何延迟同时比STUN等单一协议更具有健壮性、灵活性。

本文详细介绍了ICE算法,并设计一个实例针对SIP信令协议穿透Symmetric NAT流程进行了描述,最后总结了ICE的优势及应用前景。

关键词ICE;Symmetric NA T;STUN;TURN;SIP1 问题背景多媒体会话信令协议是在准备建立媒体流传输的代理之间交换信息的协议,例如SIP、RTSP、H.323等。

媒体流与信令流截然不同,它们所采用的网络通道也不一致。

由于协议自身设计上的原因,使得媒体流无法直接穿透网络地址转换/防火墙(NAT/FW)。

因为它们生存期的勘曛皇俏 私 ⒁桓鲈谛畔⒅行 鳬P地址的分组流,这在遇到NA T/FW 时会带来许多问题。

而且这些协议的目标是通过建立P2P(Peer to Peer)媒体流以减小时延,而协议本身很多方面却与NA T存在兼容性问题,这也是穿透NA T/FW的困难所在。

而NA T仍是解决当前公用IP地址紧缺和网络安全问题的最有力手段,它主要有四种类型:完全圆锥型NAT(Full Cone NAT),地址限制圆锥型NA T (Address Restricted Cone NAT),端口限制圆锥型NAT (Port Restricted Cone NAT),对称型NA T (Symmetric NA T)。

前三种NAT,映射与目的地址无关,只要源地址相同,映射就相同,而对称型NAT的映射则同时关联源地址和目的地址,所以穿透问题最为复杂。

SIP软交换系统中的NAT穿越技术

SIP软交换系统中的NAT穿越技术
象和 目前存 在的缺陷 ,并展望 了这几种技术未来 的发展方 向。
关键词:会话初 始化协议;网络地址转换
Ah 嘣

S me 隹d哪 哪 o c
l eov o rs le NAT U yT il  ̄lm n S 1 a  ̄m be i o .wi h s se b sd i S P ae ito u e h sp p r m t y tm a e Ol I r nr d c d i ti a e. c n
了SP 用 研 究 领 域 的 一 个 重 要 课 题 。 I应
台 主机 的地 址和 某 一外 部地 址 的 映射 建立 之 后 ,任 何 外部 网络 的主 机 均 可 以通 过 该 外 部 地 址 将 数 据 包 发 送 给该 主 机 。举 例 来说 ,一 台 内部地 址 为1 ...的 主机在 其 13 端 0001 24 口 收 发 数 据 包 ,NA 为 其 映 射 的 外 部 地 址 和 端 口 为 T 2 2121 .7 :3 5 那 么 在 F l C n 方 式 下 , 所 有 0 .1 .41 32 4 , ul o e
Co e n ,R sr tdCo e P rR s itdC n  ̄ y et ce n , ot et ce o e D mmer 四 i r S ti c
于 ,NA  ̄ 建 的映 射 项 目中 包含 了 内部 主机 发 送 的数 据包 T I J 的 目的地 址 ,因此 只有 该地 址 的 主机 能 够通 过NA 与 内部 T
1既哪 1

toe 晒 ∞1 hs 0
a a al ed v i be ojc ad l ln r w n i t h i dv lp n v i be f l l i .aal l bet n i a o ̄ e idc e te e eome t a mi a r

sip协议的nat穿越

sip协议的nat穿越

SIP协议的NAT穿越技术翻译:Karl Ma原文:/articles/view/2079/NAT 指的是网络地址转换(Netword Address Translation)。

这一技术使得大部分人可以在家里用多于一台的计算机上网但只用一个IP地址。

多半时间里,一台有NAT功能的路由器支持从内部网络(带有内部IP地址)中取得数据,并将其发送到Internet,同时将每一个包的内部IP地址替换为外部地址。

如下图所示:什么是RTP?RTP 指的是实时传输协议(Real-Time Transport Protocol),这个协议的目的是在主叫和被叫之间传输语音数据。

问题是,当你试图用RTP协议呼叫一个人的时候,你要事先知道他的IP地址和端口号(PORT),这使得RTP协议单独使用起来有相当的困难,因为呼叫的双方没有办法事先知道彼此的IP和端口。

这就是为什么人们还需要SIP。

什么是SIP?SIP 也就是会话初始协议(Session Initiation Protocol),语法上很象HTTP协议,是可读的文本。

它的目的是让主叫方可以找到被叫方的IP和端口,同时它也帮助双方协商媒体的类型和格式。

比如,你想通过家里的一台PC机上运行的Free World Diadup(它使用SIP协议)来呼叫你远在罗马尼亚的朋友,如下图:SIP发送一个INVITE包到FWD SERVER,其中包含有主叫方的RTP的IP地址和端口,FWD 将这个包转到对应的被叫方,被叫方接受了呼叫并将它自己的RTP的IP地址和端口返回来。

SIP+NAT,一个不能解决的问题?SIP的NAT的问题,其实不是SIP的问题,而是RTP的问题。

SIP来声明RTP的地址和端口,但是如果客户端在NAT之后的话,它声明的端口就会与NAT在外部分配的不同。

如下图:即使很多SIP的实现都基于NAT总是分配一个与内网端口相同的一个外部端口这样一个假设,但这个假设是错误的。

SIP协议解析实现语音和视频通信的协议

SIP协议解析实现语音和视频通信的协议

SIP协议解析实现语音和视频通信的协议SIP(Session Initiation Protocol)是一种用于建立、管理和终止多媒体会话的通信协议。

它是一种基于IP网络的协议,可实现语音、视频以及其他多媒体应用程序之间的通信。

本文将对SIP协议进行解析,并讨论它如何实现语音和视频通信。

一、SIP协议的基本结构SIP协议采用了一种客户端/服务器架构,其中客户端被称为SIP用户代理(SIP User Agent),服务器被称为SIP服务器。

SIP协议主要包含以下几个组成部分:1. SIP消息格式:SIP消息由请求和响应组成。

请求消息用于发起会话、修改会话和终止会话等操作,响应消息用于回应请求消息。

2. SIP请求方法:SIP定义了一系列的请求方法,如INVITE(邀请对方参与会话)、ACK(确认请求消息已被接收)和BYE(终止会话)等。

3. SIP状态码:SIP状态码用于指示请求的处理状态,如200表示请求成功,404表示未找到资源等。

4. SIP头部字段:SIP头部字段包含了一些用于描述会话的元数据,如Call-ID(会话标识符)、From(发起方标识)和To(接收方标识)等。

5. SIP会话描述协议(SDP):SDP用于在SIP会话中协商媒体类型、编码方式和传输参数等。

6. SIP代理:SIP代理用于处理SIP消息的传输和路由。

它可以将消息转发给下一个代理或目标终端,并负责处理各种网络地址转换等。

二、SIP协议的工作流程SIP协议的工作流程通常包括以下几个步骤:1. 注册:SIP用户代理向SIP服务器发送注册请求,以告知服务器其可用性和位置信息。

2. 呼叫建立:SIP用户代理向服务器发送INVITE请求,请求建立通话。

服务器根据请求中的目标地址找到被叫用户代理,并向其发送INVITE请求。

3. 呼叫传输:被叫用户代理发送响应消息,表示接受或拒绝通话。

如果接受通话,双方开始通过SDP协商媒体类型和传输参数。

一种基于SBC的SIP穿越NAT技术的研究

一种基于SBC的SIP穿越NAT技术的研究
术 , IE SsinIiai rtc l会 话 初 始 协 议 ) 一 SP (es nt t nP ooo, o i o 是
种新型 的 SP穿越 NA I T方案 。S C方案的优点在于 , B 只在 服务端进行 部署 , 而不 用对 NAT设备及 私 网 内终 进 行
改造升级_ J 4 。
写 入 S P, 送 至 主 叫 终 端 。 建 立 成 功 后 , 端 1通 过 D 发 终 NA 上 的端 口 A 向 MR 发 送 R P包 , T1 T MR记 录 下 此 地 址 作为终端 2 T R P包 的 目的 地 址 。 同 理 , NAT 将 2的端 口 B 作为终端 1 T R P包 的 目的地 址 。至 此 , 通过 MR 的 转 发 , 双
总第 2 3期 1
舰 船 电 子 工 程
S i e to i n i e r g h p Elc r n c E g n e i n
Vo_ 2No 3 l3 .
6 1
21 0 2年第 3期

种 基 于 S C 的 S P 穿 越 NAT技 术 的 研 究 B I
于 中华 李含辉
于 中华 等 : 种基 于 S C的 SP穿 越 N 一 B I AT技 术 的研 究
M R

总第 2 3 1 期
I VI N TE
N T A 设备2 S S  ̄2 I . P
I I
握呼 叫号码隶属于哪个私网 , 便可完成信令接续 ( 网 S C 公 B 可 以通过预设 号码段 或者 判 断号码 前 缀等 方式 获取 该信 息) 。这样 , 网 S C的 S P将管 理用 户注册 信息 的负 担 公 B S 转移到各私 网 S C, B 实现 了 网络 负载 的均衡 , 网 S C负 公 B 担大大减轻l 】 。 当网内两个终端进行通信时 , 网 S C的 S P只扮 演 私 B S 普通信令代理 的角色 , MR不 分配媒 体资 源。当某 一私 网

几种方式解决SIP穿越NAT总结

几种方式解决SIP穿越NAT总结

几种方式解决SIP穿越NAT总结SIP穿越NAT的几种方式多媒体会话信令协议是在准备建立媒体流传输的代理之间交换信息的协议,媒体流与信令流截然不同,它们所采用的网络通道也不一致。

由于协议自身设计上的原因,使得媒体流无法直接穿透网络地址转换/防火墙(NAT/Firewall)。

因为它们生存期的目标只是为了建立一个在信息中携带IP地址的分组流,这在遇到NAT/Firewall 时会带来许多问题。

而且这些协议的目标是通过建立P2P(Peer to Peer)媒体流以减小时延,而协议本身很多方面却与NAT存在兼容性问题,这也是穿透 NAT/Firewall的困难所在。

而NAT仍是解决当前公用IP地址紧缺和网络安全问题的最有力手段,所以解决NAT穿越成为首要问题。

以SIP通信为例,呼叫建立和媒体通信的建立是依赖SIP消息首部和SDP 消息所描述的地址和端口信息进行的,呼叫双方分别在内网和外网上,内网是通过NAT设备连接到外网,由于NAT设备工作在IP和TCP/UDP层,所以它不对SDP等应用层数据进行NAT变换,因此会造成寻址失败,从而导致呼叫无法正常建立。

另外,VOIP设备的主要通信协议(如SIP和H.323)要求终端之间使用IP地址和端口号来建立端到端的数据侦听外来的呼叫,而防火墙却通常被配置阻止任何不请自到的数据分组通过。

需要网络管理者打开防火墙上的一个端口来接收呼叫建立数据分组,例如5060端口(SIP的通信端口),但IP语音和视频通信协议还要求打开许多别的端口接收呼叫控制信息来建立语音和视频通信,这些端口号事先并不知道,是动态分配的,也就是说网络管理者为了允许语音和视频通信将不得不打开防火墙上所有的端口,防火墙就失去了存在的意义。

所以当前的问题还有需要解决监听端口的问题。

如下图SIP呼叫不成功示意图分析:1 d:211.83.100.100:23766 s:192.168.1.166:10102 d:211.83.100.100:23766 s:211.83.100.166:99933.d:211.83.100.166:9993 s:211.83.100.100:237664.d:192.168.1.166:1010 s:211.83.100.100:237665.d:211.83.100.110:23788 s:211.83.100.100:20206.d:211.83.100.100:3399 s:211.83.100.110:237887.d:211.83.100.166:9993 s:211.83.100.100:237668.d:192.168.1.166:1010 s:211.83.100.100:237669.d:211.83.100.100:3399 s:211.83.100.110:2378810.d:211.83.100.166:9993 s:211.83.100.100:2376611.d:192.168.1.166:1010 s:211.83.100.100:2376612.d:211.83.100.110:23788 s:192.168.1.166:1010d:211.83.100.110:23788 s:211.83.100.166:999313.d:192.168.1.166 s:211.83.100.110:23788 A对B invite 时在SDP中带上了RTP协商的端口和私网IP,B回复200OK时告知RTP时的端口和私网地址,B 收到A的RTP包后回复,因为RTP包记录是私网地址,所以RTP包被丢弃。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

NAT 指的是网络地址转换(Netword Address Translation)。

这一技术使得大部分人可以在家里用多于一台的计算机上网但只用一个IP地址。

多半时间里,一台有NAT功能的路由器支持从内部网络(带有内部IP地址)中取得数据,并将其发送到Internet,同时将每一个包的内部IP地址替换为外部地址。

如下图所示:
什么是RTP?
RTP 指的是实时传输协议(Real-Time Transport Protocol),这个协议的目的是在主叫和被叫之间传输语音数据。

问题是,当你试图用RTP协议呼叫一个人的时候,你要事先知道他的IP地址和端口号(PORT),这使得RTP协议单独使用起来有相当的困难,因为呼叫的双方没有办法事先知道彼此的IP和端口。

这就是为什么人们还需要SIP。

什么是SIP?
SIP 也就是会话初始协议(Session Initiation Protocol),语法上很象HTTP协议,是可读的文本。

它的目的是让主叫方可以找到被叫方的IP和端口,同时它也帮助双方协商媒体的类型和格式。

比如,你想通过家里的一台PC机上运行的Free World Diadup(它使用SIP协议)来呼叫你远在罗马尼亚的朋友,如下图:
SIP发送一个INVITE包到FWD SERVER,其中包含有主叫方的RTP的IP地址和端口,FWD 将这个包转到对应的被叫方,被叫方接受了呼叫并将它自己的RTP的IP地址和端口返回来。

SIP+NAT,一个不能解决的问题?
SIP的NA T的问题,其实不是SIP的问题,而是RTP的问题。

SIP来声明RTP的地址和端口,但是如果客户端在NA T之后的话,它声明的端口就会与NA T在外部分配的不同。

如下图:
即使很多SIP的实现都基于NA T总是分配一个与内网端口相同的一个外部端口这样一个假设,但这个假设是错误的。

在产品环境下,你不能告诉奶奶说她不能与孙子说话是因为有些路由器分配了一个不同的端口号。

如果你是一个carrier,解决办法要简单一点,因为你要代理所有的数据,就是用SIP会话边界控制器(SIP Session Border Controller),简称SIP SBC。

SIP SBC通常位于carrier的内部SIP网络的前面,它来解决NA T穿越问题,同时也保护SIP网络。

这种情况下解决NA T穿越问题需要一些小技巧。

第一个小技巧是让NA T上从客户端到服务器的洞保持打开状态,这通常是让SIP客户端至少每隔30发送一个两个字节的包到服务器。

一些路由器会将30秒内没用的映射显式的删除掉,GNU/Linux通常是3分钟后才删除。

第二个小技巧是在我们在yate项目中用到的,就是从到达服务器本地的RTP IP和端口的第一个包中计算客户端的RTP IP和端口,而不是用在SDP中声明的那个IP和端口。

这个技巧可以解决NA T的穿越问题,不论客户端在多少层NA T之后。

这个方法的主要缺点是,在一些情况下,客户端不能收到起初的媒体流(since at that point, it sends out no voice packets)并将听不到振铃音。

如果你不是一个carrier,你想实现一个Peer to Peer的呼叫,并且呼叫的双方都在NA T之后,你必须用一个外部的SIP代理或网关来在两点之间传递SIP,希望NA T们一个接一个的为RTP接连打开合适的端口。

然而,对于这种情况,没有最终的解决方案。

两个建议的解决方案是STUN和ICE,但是当前每个解决方案有时都可能达到的你目的。

Skype 发现了一种非常简单好用的解决这个问题的方法:他们用没在NA T内的客户端来做在NA T内的客户端
的代理。

这个解决方案从技术上讲是非常好的。

但是,有一些道义和政策上的原因不能用Skype的方法。

原因之一是,如果你是一个在NA T外的客户端,你不知道谁的数据从你这里传递过去了。

另一个原因是,这会占用你的带宽。

最后,你不得不为代理语音流而为多余的带宽付费。

我个人希望在不久的将来有更多的SIP实现用Y A TE现在用的这两个小技巧来实现NA T的穿越。

Skype或许在长时间内还会在家庭用户中广为流传,但是企业用户会慢慢的移向V oip 提供者,随着大量的努力和一点运气,他们将会像PSTN提供者一个可靠,因为技术会越来越好。

相关文档
最新文档