发新话题
打印

[网络转载] SIP相材料

SIP相材料

SIP协议简介

   SIP( Session Initiation Protocol ,RFC 3261)是由 IETF (国际互联网标准制定组织)制定的面向 Internet 会议和电话的信令协议。SIP是一个应用层的协议,可以建立,修改或者中止多媒体会话或者呼叫。它是一个基于ASCII的端到端的协议,它实际上是在因特网上提供“约会”服务。SIP协议是IETF制订的会话控制协议,负责建立和管理两个或多个用户间的会话连接,它主要用于对等模式(Peer to Peer)的实时业务,如VoIP、视频会议等应用,其功能类似于当前VoIP主要采用的信令协议H.323。SIP充分借鉴了HTTP、SMTP(简单 邮件传送协议)这两个互联网上最成功的应用层协议,其编码是文本方式的,继承了互联网协议简单、开放、灵活的特点。
用来实现VoIP的开放协议,最常用的有三种,SIP、MGCP(Media Gateway Control
Protocol)和H.323。
  SIP协议是专门为 IP 电话,尤其是结合 Internet 设计的协议,同传统的 H.323 协议相比,SIP 拥有明显的优越性:优异的可扩展性--大大提高了系统的处理能力;与 Internet 紧密结合--使通讯更加轻松便捷的;卓越的开放性--不仅能够对手机、 PDA 等移动设备提供良好的支持,对于在线即时交流、语音和视频数据传输等多媒体应用也能够很好地完成。

SIP协议的特性和优势

特性

优势

简洁性 SIP的协议栈比其它的VoIP协议都要小。SIP可以看作是一个简单的工具箱,利用它便于实现智能终端、网关、进程和客户端软件。
可扩展性 端到端(点到点)的结构,使得它比较容易扩展。当要增加新的用户到基于SIP协议的系统中时,与其它的VoIP协议相比,需要增加的软件和硬件要少得多。
分布式的功能 非集中式的智能,这样可以在每个组件中实现更多的功能。而要修改某个组件时,对系统其余部分的影响很小。在以太网上,两个SIP电话机可以直接互相呼叫,而不需要系统中任何其它服务模块的帮助。当网络中有多于二个电话机时,系统中的其它模块就发挥作用了。
支持因特网 基于SIP的系统,可以利用因特网不断增长的优势。转换网关可以将基于SIP的系统连接到公众电话网(PSTN)上去,而不用被历史遗留的标准所阻碍。
与SIP兼容的协议
SIP协议可以单独地工作,也可以与下面的协议一起工作。
协议缩写

协议名字

描述

DHCP Dynamic Host Configuration Protocol 动态主机配置协议,帮助系统自动地配置网络IP地址。
DNS Domain Name System 域名系统,解释主机名字为IP地址。
HTTP Hypertext Transfer Protocol 超文本传输协议,因特网上传输Web页面的标准协议。
RADIUS Remote Authentication Dial-In User Service 远程认证拨入用户服务,一个可以自由(免费)获取的分布式的安全系统,可以用来将呼叫的详细记录,传送给记费系统。
RTP Real-time Transport Protocol 实时传输协议,在通话的两端提供语音通道。
SDP Session Description Protocol 会话描述协议 描述多媒体会话的内容。SDP消息是作为MIME(Multi-Purpose Internet Mail Extensions)扩展附在SIP消息上的。
TCP Transmission Control Protocol 传输控制协议,在基于SIP协议的系统中,用于传输控制。
UDP User Datagram Protocol 用户数据报协议,用最小的开销和延迟,尽力传送数据报文

SIP协议与多媒体会话
   在多媒体通信协议中,SIP协议是一个相对简单的、但是很重要协议。SIP是一种应用级控制协议,用于在IP数据网络上建立、改变和结束多媒体会话。SIP可以实现多种业务服务,如IP电话、多媒体会议、注册和重定向服务,并可以简化对VPN的连接。
正如其名称的含意那样,SIP负责会话信令如语音、视频或多媒体信息初始化数据的交换。SIP的历史可追溯到多项Internet工程任务组(IETF)的建议,并与Web和电子邮件技术与标准有着密切的关系。 为保证性能,SIP需要使用用户数据报协议(UDP),TCP则是可选协议。因为UDP传输不能得到百分之百的保证,所以SIP中包含数据重新传输机制,其中还包括建立三方会话的交换机制。
在SIP 邀请参与者加入一次会话时,会话描述协议(SDP)编码的SIP信息主体包含有关参与者可以使用和将使用哪种媒体类型的信息。这种信息一旦交换和确认后, 所有参与者就知道其他各方的IP地址、可用带宽和媒体类型。然后,数据利用合适的传输协议开始传输。在整个会话过程中,参与者可以通过发送新的SIP信息 随时进行更新(指示新的媒体类型集合、添加新的参与者或其他变化)。
SIP中的目的地是用统一资源指标符(URI)表示的。URI具有与电子邮件地址相同的格式。这意味着URI可以延用DNS将主机和域名映射为IP地址的方法,将URI和其映射对象对应起来。
在IETF ENUM工作组的努力下,DNS电子编号系统支持国际电信联盟标准E.164;因此,这种SIP与DNS之间的互通性与电话系统和地址机制的互操作性之间的关系越来越紧密,这种紧密的联系可以使SIP服务器和客户机能够发送、收入和路由电话号码。
SIP 一般分为两类: 用户端组件和网络组件。用户代理程序安装在参与者所选择的设备上(PC机上的软件、嵌入在手机操作系统或PDA/掌上机操作系统中的软件、IP电话的固 件)。用户代理程序包括服务器部件和客户机部件。重定向服务器和代理服务器执行路由和搜索树功能。这两种服务器一般为网络服务器,第三种基于网络的资源服 务器是注册服务器,它保存和接收参与者的位置数据。
SIP可以实现多种增强型通信,包括“寻找/跟踪(find me/follow me)”服务、即时消息、远程电话与视频会议、中央交换机类型服务(呼叫人ID、呼叫等待和呼叫保持)、多玩家游戏、实时集体创作和远程白板。使用SIP还可以使连接VPN更加容易。
利用SIP,人们还可以方便地将多媒体服务与其他类型的服务组合在一起,如目录信息、Web浏览、定位和列席服务。
由 于SIP是应用层协议,因此它是相对独立的,IP网络上任何类型的参与者都可以被SIP连接起来。例如,SIP 可以提供固定和移动网络之间的无缝服务功能,这是实现固定与移动业务融合的关键要素,而且,这种功能将随着2.5G和3G移动网络在世界各地的部署而变得 越来越重要。

SIP实现号码移动

   目前的通信方式要求人们在进行通信时要针对不同的通 信服务记住一个特定的通信号码,如传真号码、移动电话号码、办公电话号码等等。那么,怎样才能从根本上改变这一特性真正实现理想的通信模式呢?即人们只需 要记住一个号码,就可以与拥有该号码的个人进行通信,而不论通信服务的性质如何,也不管该用户位于世界上的哪个地方。目前科学家们正在致力于对该项工作的 研究,SIP就是其中的一项研发课题。
  会话初始化协议(SIP)(Session Initiation Protocol)是一个应用层控制协议,它能够建立、修改、终止多媒体会话或者呼叫。SIP主要有两种结构元素:用户代理UA和网络服务器。UA 驻留在SIP的终端站中,它包含两个部分:用户代理客户(UAC),该部分负责发布SIP请求;用户代理服务器(UAS),它负责响应SIP请求。其中用 户代理服务器有三种不同的类型:重定向服务器,代理服务器和注册服务器(register)。基本SIP 呼叫不需要服务器,但是其他一些增强特性需要服务器的支持。
  重定向服务器 作为用户代理服务器的三种类型之一,它是通过发送被呼叫者可获得的SIP URL地址来处理INVITE消息的。代理服务器执行应用层的SIP请求和响应路由。代理服务器可以是记忆的或者无记忆的,有记忆的代理服务器拥有整个呼 叫建立过程中的相关信息,而无记忆的代理服务器则在处理完一个呼叫后将完全忘记有关该呼叫的所有信息直到下一个消息的到达。另外,代理可以是有分支代理或 者无分支代理,例如,有分支代理可以在同时让几个电话都振铃直到有人拿起其中的一个电话为止。注册服务器一般用于记录SIP地址(SIP URL)和相关的IP地址。注册服务器经常用作启动后的注册,由于在REGISTER消息中使用了SIP URL地址的缘故,因此,当INVITE请求到达时,代理服务器或者重定向服务器可以直接正确地转发请求信息。这一基于注册服务器的转发特性形成了网络对 支持真正的号码移动性服务的基础。在此,我们需要注意的是,通常一个SIP网络服务器能够实现对不同种类服务器的组合。
SIP电话机
   SIP电话机(硬件设备)是一种可以连接到以太网的电话装置。在大多数情况下,SIP电话机支持采用IP地址的IP协议,该IP地址可以是静态分配的 或者是通过动态主机配置协议(DHCP)获得的。SIP电话机主要有两大类型:信令栈和媒体引擎(media engine)。目前,虽然存在两种不同的标准(SIP 和H.323),但是信令栈现在已经有了几种自己的存在方式,媒体几乎都通过实时传输协议(Real?Time Transfer Protocol)独自传送,媒体本身是在用户数据报UDP内携带的。
  信令栈的目的是建立、管理并且断开呼叫连接。呼叫建立阶段需要查找端点的位置,需要交换诸如支持话音编码解码类型的通信能力。管理阶段建立话音信道,如果需要的话将邀请其他用户参与该通话过程。在连接断开阶段,呼叫就自然终止了。
SIP服务器
   中心注册/代理服务器,我们通常称之为主SIP服务器,是所有SIP消息的主要目的地,它在管理域中生成并试图建立一个连接。它同时也是在 LAN之外代表在LAN上的所有SIP电话机客户通知SIP的唯一一个目的点。主SIP服务器将所有的SIP INVITE消息传递给最后的相关目的站点(或者其他的SIP代理),并且针对这些消息进行基于数据库的查找。它允许所有的移动客户用目前的位置信息进行 注册,而将是否接收呼叫的决定留给客户自己决定。这一方法需要客户端的智能性,而客户端的智能性又符合IP电话设想。该方法的主要优点是它不需要将潜在的 大文件(例如,PDA中存有的地址簿和约会信息),传输到服务器端。
基于SIP的号码移动性
   在许多情况下,呼叫者在与被呼叫者通话前不想首先判断通过什么形式的通信方式可以找到被呼叫者(即连通哪个特定电话能与被呼叫者连通),而只是希望能 够与被呼叫者进行通信而不论被呼叫者的号码是哪种形式(移动电话号码或者办公电话号码等等),实现这种形式的通信也就是我们通常意义上所说的用户号码具有 移动性
  随着设备的移动性,真正的号码移动性是基于SIP 请求的REGISTER信息。为了使用这一特性,人们通过用SIP电话机同步PDA来对自己进行认证。在信息同步后,SIP电话机就知道PDA的拥有者的 身份。通过阅读使用者的地址簿目录,SIP电话机可以知道使用者的SIP URL。在这一阶段,SIP电话机通过主SIP 服务器注册用户,将该注册用户表示为可以访问的SIP电话机的SIP URL地址。由于每一个输入的SIP请求都需要通过主服务器,所以这些请求都发送到正确的SIP电话机上。如果用户在移动并且与另外一个SIP电话机进行 了注册,则旧的注册信息将被删除并且按照新的位置写入新的注册信息。这些活动都是在主服务器中完成的。这种情况不仅在公司里适合,在酒店或者会议室或者其 他的会议中心都是可用的。在此,我们需要注意的是,在SIP 以太电话与PDA取得同步后,系统操作不再需要两个设备之间的进一步通信。当用户之间的通话完毕后,该用户将拆线, 那么此时主SIP服务器所需做的工作就是在该用户与另外一个电话取得同步前将所有对它的呼叫转发到话音邮件中。
   除了以上提到的方法外,PSTN服务提供商们还能够通过另外的称之为Web站点的方法提供相同或者近似的服务,从而使得用户能够将呼叫转发到他们目前所 在的位置。但是,这种用法对于用户来说不很方便,由于计算机需要访问Web 站点,所以对于用户而言,当用户所在的地理位置不确定时(即用户的位置可以在任何可能的地方时),对PDA进行同步是一件很困难的事情。即使用户位于一个 固定的地点,要将用户连接到Web站点并且输入相关的转发信息也是一件耗时耗力的工作。但是如果能够使PDA 同步则将使得整个问题变得自动而且容易,因此,下一阶段人们所需要做的工作就是:怎样采取简单易行的方法来实现PDA同步。
   随着通信的发展,人们对通信质量要求越来越高。人们不要求对于每一种通信服务都需要单独的一个通信号码,也不管该人现在是静止的还是移动的,就希望做到 通过该号码与他进行通信。这就是我们通常意义上所说的号码移动性,也是将来个人通信的理想目标。在该目标实现之前,基于SIP的号码移动性无疑在很大程度 上推动了该项通信的发展。   

SIP的基本工作过程

  SIP IP电话系统定义了注册/注销、呼叫、重定向、能力查询四种工作过程。 注册/注销过程
  SIP为用户定义了注册和注销过程,其目的是可以动态建立用户的逻辑地址和其当前联系地址之间的对应关系,以方便实现呼叫路由和对用户移动性的支持。逻辑地址和联系地址的分离也方便了用户,它不论在何处、使用何种设备,都可以通过唯一的逻辑地址进行通信。
  注册/注销过程是通过REGISTER消息和200成功响应来实现的。在注册/注销时,用户将其逻辑地址和当前联系地址通过REGISTER消息发送给其注册服务器,注册服务器对该请求消息进行处理,并以200成功响应消息通知用户注册/注销成功。
呼叫过程
  SIP IP电话系统中的呼叫是通过INVITE邀请请求、成功响应和ACK确认请求的三次握手来实现的。即当主叫用户代理要发起呼叫时,它构造一个INVITE 消息,并发送给被叫。被叫收到邀请后决定接受该呼叫,就回送一个成功响应(状态码为200)。主叫方收到成功响应后,向对方发送ACK请求。被叫收到 ACK请求后,呼叫成功建立。
  呼叫的终止通过BYE请求消息来实现。当参与呼叫的任一方要终止呼叫时,它就构造一个BYE请求消息,并发送给对方。对方收到BYE请求后,释放与此呼叫相关的资源,回送一个成功响应,表示呼叫已经终止。
  当主被叫双方已建立呼叫,如果任一方想要修改当前的通信参数(通信类型、编码等),可以通过发送一个对话内的INVITE请求消息(称为re-INVITE)来实现。
重定向过程
   当重定向服务器(其功能可包含在代理服务器和用户终端中)收到主叫用户代理的INVITE邀请消息,它通过查找定位服务器发现该呼叫应该被重新定向(重 定向的原因有多种,如用户位置改变、实现负荷分担等等),就构造一个重定向响应消息(状态码为3xx),将新的目标地址回送给主叫用户代理。主叫用户代理 收到重定向响应消息后,将逐一向新的目标地址发送INVITE邀请,直至收到成功响应并建立呼叫。如果尝试了所有的新目标而无法建立呼叫,则本次呼叫失 败。
能力查询过程
  SIP IP电话系统还提供了一种让用户在不打扰对方用户的情况下查询对方通信能力的手段。可查询的内容包括:对方支持的请求方法(methods)、支持的内容类型、支持的扩展项、支持的编码等等。
   能力查询通过OPTION请求消息来实现。当用户代理想要查询对方的能力时,它构造一个OPTION请求消息,发送给对方。对方收到该请求消息后,将自 己支持的能力通过响应消息回送给查询者。如果此时自己可以接收呼叫,就发送成功响应(状态码为200),如果此时自己忙,就发送自身忙响应(状态码为 486)。因此,能力查询过程也可以用于查询对方的忙闲状态,看是否能够接受呼叫。  

SIP和H.323的比较

  H.323和SIP设计之初都是作为多媒体通信的应用层控制(信令)协议,目前一般用于IP电话。
  它们能实现的信令功能基本相同,也都利用RTP作为媒体传输的协议。但两者的设计风格截然不同,这是由于其推出的两大阵营(电信领域与Internet领 域)都想沿袭自己的传统。H.323是由国际电联提出来的,它企图把IP电话当作是众所周知的传统电话,只是传输方式由电路交换变成了分组交换,就如同模 拟传输变成数字传输、同轴电缆传输变成了光纤传输。而SIP侧重于将IP电话作为Internet上的一个应用,较其他应用(如FTP,E-mail等) 增加了信令和QoS的要求。 H.323推出较早,协议发展得比较成熟;由于其采用的是传统的实现电话信令的模式,便于与现有的电话网互通,但相对复杂得多。SIP借鉴了其他 Internet标准和协议的设计思想,有其突出的优点。   首先,它是基于文本的协议,而H.323采用基于ASN.1和压缩编码规则的二 进制方法表示其消 息,因此,SIP对以文本形式表示的消息的词法和语法分析就比较简单。其次,SIP会话请求过程和媒体协商过程等是一起进行的,因此呼叫建立时间短,而在 H.323中呼叫建立过程和进行媒体 参数等协商的信令控制过程是分开进行的。再次,H.323为实现补充业务定义了专门的协议,如 H.450.1、H.450.2和H.450.3等,而SIP只要充分利用已定义的头域,必要时对头域进行简单扩展 就能很方便地支持补充业务或智能业务。最后,H.323进行集中、层次式控制。尽管集中控制便 于管理(如便于计费和带宽管理等),但是当用于控制大型会议电话时,H.323中执行会议控制 功能的多点控制单元很可能成为瓶颈。而SIP类似于其他的Internet协议,设计上就为分布式的呼叫模型服务的,具有分布式的组播功能。
  我国的IP电话领域,多采用H.323协议。但SIP协议简单灵活,且是分布式控制,容易实现。用H.323实现IP电话,设备投资昂贵,只有电信运营商或大企业集团才能实现或使用。而SIP协议实现的IP电话系统,中小企业或个人都可以实现,可以进入平常百姓家。

SIP常见的问题与解答

  1、什么是Outbound proxy(外出代理服务器)?应当设置Outbound proxy 吗?
Outbound proxy通常是在有防火墙/NAT时用,用于处理信号及帮助多媒体数据流通过防火墙。如果用户有Outbound proxy,并且没有使用STUN或者其它的穿过防火墙/NAT的机制,则应当使用Outbound proxy。但是已经使用了STUN或者其它的穿过防火墙/NAT的工具,则不同时使用Outbound proxy。   2、用户ID(User ID)和认证ID(Authentication ID)有什么区别?
用户ID是电话的SIP地址中用户部分,而且通常是作为呼叫者ID的信息,显示在SIP软件或者电话机的LCD上。典型的情况下,用户ID是一个电话号码 或者是扩展了的数字,或者是一个用户的名字。而认证ID则是严格地用于认证目的之ID,是电话机联系SIP服务器时验证用户身份用的ID。认证ID可以与 用户ID相同,也可以不一样。
 3、应当选用哪种语音编码方法?
通常的情况下,所有的编码方法,都能够提供良好的语音。但是低比特速率的编码,对音乐来说质量可能有些差。DTMF(双音多频传输法)音调或者传真信号在 音频通道上传输(带宽不够时),有可能在远端不能解码。所以,如果带宽允许,选用G.711编码方法,G.722甚至能够给出更好的音质。
带宽允许的情况下,使用PCMU(G711u)编码。PCMU and PCMA都能够达到CD音质,但是它们消耗的带宽也最多(64kbps)。如果网络带宽比较低,可以选用低比特速率的编码方法,如G.723或 G.729,这两种编码的方法也能达到传统长途电话的音质,但是需要很少的带宽(G723需要5.3/6.3kbps,G729需要8kbps)。
如果带宽足够并且需要更好的语音质量,就使用PCMU 和 PCMA,甚至可以使用宽带的编码方法G722(64kbps),这可以提供有高保真度的音质。
 4、"Voice_Frames_Per_TX"是什么意思?它与以太网的流量有什么关系?
为了减少整个 以太网/IP/RTP 的开销(这些开销是由54字节的报文头引起的),多个语音帧可以包在单个以太网帧中发送。不过,这会引起语音延迟。在网络带宽比较紧的时候,增加这个数量,可以提高整个语音质量。
如果RTP数据包每2.5ms发送一个(G.728),则整个以太网/IP/RTP的开销是
0.432*400 = 172.8kbps
这在公共Internet上,将会不太好。但是,如果RTP数据包每10ms发送一个,则总的以太网/IP/RTP的开销是
0.432*100=43.2kbps
如果RTP数据包每20ms发送一个,则总的以太网/IP/RTP的开销是
0.432*50=21.6kbps
推荐对G.723/iLBC编码,每30ms发送一个数据包,所有其它的编码则每20ms发送一个包。所以,对G.723/iLBC编码,Voice_Frames_Per_TX的值设置为1,对G.728设为8,对所有其它的编码设为2。
 5、Voice_Frames_Per_TX应当设置为什么值?
这取决于选用什么样的编码方法,及在带宽利用率与丢包影响之间的折衷。这个值越大,则带宽利用率越高,因为更多的语音帧放到一个UDP/RTP数据包中,这样数据报文头的开销减少了。但是丢失了一个数据包,对语音质量的影响比较大。
对PCMU/PCMA,默认值是2,最大值是10
对G.723,默认值是1,最大值是32
对G726-32,默认值是2,最大值是20
对G729,默认值是2,最大值是64
对G728,默认值是4,最大值是64

 6、以太网加到RTP数据包上的开销是多少?
对于语音数据,在以太网的IP网上传输,一个RTP数据包包含54字节(或者432比特)的报文头。这54字节包含14字节的以太网头,20字节的IP头,8字节的UDP头,和12字节的RTP头。
 7、各种编码方法的帧的速率及比特速率是多少?
G.711 是10ms的帧长度, 64kbps的比特速率
G.722 是10ms的帧长度, 64kbps的比特速率
G.726-32 (也叫 G.721)是10ms的帧长度,32kbps的比特速率
G.728 是2.5ms的帧长度, 16kbps的比特速率
G.729 是10ms的帧长度, 10kbps的比特速率
G.723 是30ms的帧长度, 5.3kbps或者6.4kbps的比特速率
iLBC 是20ms或者30ms的帧长度,15.2kbps 或者 13.3kbps 的比特速率
 8、为什么G.723是低带宽的IP通信中最佳的选择?
对G.723,其帧速率是30ms发一个数据包,编码的速率是5.3kbps (20 bytes 每 30ms)或者6.4kbps (24 bytes 每 30ms)。其总的比特速率是
5.3 + 0.432*33.3 = 19.7kbps,
或者 6.4 +0.432*33.3 =20.8kbps。
如此低的比特速率,很适合于在28.8kbps拔号上网的时使用。再与其它的技术配合,如数据链路层压缩、静默抑制,及舒适的噪声产生,总的带宽可能更低。
 9、什么是STUN服务,我是否需要使用STUN服务?
STUN代表UDP数据包简单地穿过NAT(Simple Traversal of UDP over NAT)。这是一个协议,当一个IP电话机在NAT后面时,IP电话机可以使用这个协议检测到NAT的存在,并判断NAT的类型。一个IP电话机如果支持 STUN协议,它就可以发送一系列的STUN查询,到公共的因特网上的STUN服务器,这样就可以得到NAT上映射到话机的公网IP地址和端口。IP电话 机就可以智能地修改SIP/SDP消息中的私有IP地址。这样SIP信令和RTP多媒体数据就可以成功地穿过NAT,而不需要修改NAT的任何配置。
STUN代表了对大多数NAT的解决方法,但是不适合于对称的NAT。也就是说,绝大多数的SOHO路由器都是非对称的NAT,在这种情况下,使用 STUN是成功的。但是STUN协议不能穿过对称的NAT。如果你的路由器是对称的NAT,则不要使用STUN。
 10、如果我的电话机使用了STUN服务,能够正常地工作,我还需要设置外出代理服务器(Outbound proxy)吗?
不需要设置Outbound proxy。

TOP

发新话题