织梦CMS - 轻松建站从此开始!

罗索实验室

当前位置: 主页 > 流媒体开发 > 流媒体开发 >

基于Sip的P2P设计和原理分析

落鹤生 发布于 2013-03-08 17:43 点击:次 
P2P技术本身并不是新的概念或技术,它的原理是将网络上的通信节点作为平等的通信终端,任意两个通信节点之间既互为“服务器”又互为“客户端”。这一点与互联网的基础协议TCP/IP一致,TCP/IP也没有服务器或客户端的概念,任意两个节点之间是平等通信的。
TAG:

  1. 1.            SIP网络
  2. 2.            P2P技术在互联网上的应用
  3. 3.            P2P网络架构
    1. 3.1.    集中目录式网络架构
    2. 3.2.    纯P2P网络架构
    3. 3.3.    混合式P2P网络架构
    4. 3.4.    结构化P2P网络架构
    5. 3.5.     三种结构的P2P(DHT,树形,网状)
    6. 3.6.     BitTorrent工作原理
    7. 3.7.     eMule工作原理
    8. 3.8.     迅雷工作原理
    9. 3.9.     PPLive工作原理
    10. 3.10.           Skype工作原理
  4. 4.            SIP协议和voip
    1. 4.1.     SIP:会话初始化协议(Session Initiation Protocol)
    2. 4.2.     SDP:会话描述协议(Session Description Protocol)
    3. 4.3.     SAP:会话通知协议(Session Announcement Protocol)
    4. 4.4.     RTP(Real-timeTransportProtocol)
    5. 4.5.     RTCP(Realtime Transport Control Protocol)
  5. 5.            ICE(Interactive Connectivity Establishment)
    1. 5.1.       ICE基于SIP工作方法
  6. 6.            基于SIP的P2P网络架构
    1. 6.1.    P2PSIP节点操作
    2. 6.2.    P2PSIP用户注册操作
    3. 6.3.    P2PSIP会话建立操作
  7. 7.            基于ICE的SIP NAT解决方案设计和实现
  8. 8.            结束语

1.            SIP网络

    会话发起协议(SIP)是互联网工程任务组(IETF)制定的多媒体通信应用层控制协议,用于建立、修改和终止多媒体会话。SIP协议借鉴了超文本传输协议(HTTP)、简单邮件传输协议(SMTP)等,采用基于文本协议控制方式,支持代理、重定向、登记定位用户等功能[1]。

    SIP凭借其简单、易于扩展、便于实现等诸多优点而得到了广泛应用。3GPP等标准化组织已经选择SIP作为下一代网络(NGN)和3G多媒体子系统(IMS)中的通信协议,业界已广泛应用了多种基于SIP的多媒体业务[2]。

    SIP网络采用客户端/服务器(C/S)的网络架构,按域划分用户。每个域的SIP服务器管理着本域内的用户,用户在使用SIP业务时,需要注册到SIP服务器。各用户之间的通信需要由SIP服务器来进行路由,因此存在SIP服务器的“单点故障”和“性能瓶颈”等问题。

    目前有多种提升SIP服务器处理能力的方案,如采用高处理能力的服务器、采用多服务器间的N+1或热备份方案,或者采用多服务器负载均衡技术。

2.            P2P技术在互联网上的应用

   P2P技术本身并不是新的概念或技术,它的原理是将网络上的通信节点作为平等的通信终端,任意两个通信节点之间既互为“服务器”又互为“客户端”。这一点与互联网的基础协议TCP/IP一致,TCP/IP也没有服务器或客户端的概念,任意两个节点之间是平等通信的。随着互联网应用的扩展,P2P技术得到了广泛的应用。P2P网络采用分布式对象定位机制,使得信息或媒体流在节点之间直接传送,降低了中转开销,从而提高了网络的可扩展性,节省了网络带宽。

    很多基于P2P技术如共享MP3格式音乐文件的Napster服务、SETI@Home计划,尤其是Skype应用的成功,使得P2P技术成为业界关注的焦点。

3.            P2P网络架构

P2P 网络的技术核心是解决分布式节点之间的资源定位,这需要合适的网络架构,发展至今共经历了3代网络架构。

3.1.    集中目录式网络架构

最早出现的P2P应用模式就是集中目录式P2P网络,Napster是该架构模型最典型的代表。用户需要登录到中心目录服务器,通过目录服务器查询存储各个节点的资源信息。这种结构的最大特点是所有的资料都是存贮在各个用户节点中。用户获取资源时,节点根据网络流量和延迟等信息选择合适的节点建立直接连接,而不必经过中央服务器。

3.2.    纯P2P网络架构

    纯P2P网络架构采用的是广播式的P2P模型。在这种架构下,没有集中的中央服务器,每个用户节点随机接入到网络,并与自己相邻的一组节点通过端到端连接构成一个逻辑覆盖的网络。节点之间的内容查询和内容共享都是直接通过相邻节点以广播方式接力传递。为了避免循环搜索现象,每个节点会记录其搜索轨迹。

Gnutella模型是现在应用最广泛的纯P2P网络架构,采用泛洪式的节点搜索算法,解决了网络结构中心化的问题,扩展性和容错性较好。但是Gnutella网络可用性较差,易被病毒攻击,并且极大地消耗了网络带宽,很容易造成网络拥塞与不稳定。

3.3.    混合式P2P网络架构

    混合式P2P网络在纯P2P网络架构基础上加入了超级节点的概念。在这种网络下,将节点按能力 (计算能力、内存大小、连接带宽、网络滞留时间等)不同区分为普通节点和超级节点两类。超级节点与其临近的若干普通节点之间构成一个自治的簇,簇内采用基于集中目录式的P2P模式,而整个P2P网络中各个不同的簇之间再通过纯P2P的模式将超级节点相连。有时甚至也可以在各个超级节点之间再次选取性能最优的节点,或者另外引入一新的性能最优的节点作为索引节点来保存整个网络中可以利用的超级节点信息,并且负责维护整个网络的结构。

    普通节点的文件搜索先在本簇内进行,只有查询结果不充分时再通过超级节点之间进行有限的泛洪。同时,每个簇中的超级节点监控着所有普通节点的行为,从而确保一些恶意的攻击行为能在网络局部得到控制,也在一定程度上提高了整个网络的负载平衡。

    混合式P2P网络架构综合了集中目录式P2P快速查找和纯P2P去中心化的优势,Kazaa模型是P2P混合模型的典型代表。

    然而,由于超级节点本身的脆弱性也可能导致其簇内的节点处于孤立状态,因此这种局部索引的方法仍然存在一定的局限性。这导致了结构化的P2P网络模型的出现。

3.4.    结构化P2P网络架构

    结构化P2P架构采用纯分布式的消息传递机制,根据关键字进行节点查找定位。目前结构化网络的主流查询定位方法是采用分布式哈希表(DHT)技术,这也是目前扩展性最好的P2P路由方式之一。

   DHT将节点管理的资源或文档作为“关键字”,将节点的IP地址作为“数值”,组成关键字-数值对,并能根据关键字查找数值。DHT技术中的存储和查询是分布在多个节点上进行的,对单一节点的依赖性低,容易实现网络上任一节点的无序加入或退出,对整个网络性能影响较低。

    DHT各节点并不要维护整个网络的信息,只需存储其临近后继节点信息,因此通过较少的路由就可以到达目标节点。DHT又取消了泛洪算法,有效地减少了节点信息的发送操作数量,增强了P2P网络的扩展性。

    在实际应用中,出于冗余度以及延时的考虑,大部分DHT总是在节点的虚拟标识与关键字最接近的节点上备份冗余信息,这样也避免了单一节点失效的问题。

    但是基于DHT的网络拓扑结构的维护和修复也比Gnutella模型和Kazaa模型等无结构的系统要复杂得多,有时甚至出现“绕路”的问题。

目前基于DHT的研究项目主要还集中在具有相同能力的较小规模的网络中,对于大规模的Internet部署还在研究中。同时大量实际的P2P应用还大都是基于无结构的拓扑和泛洪广播机制,采用DHT方式的P2P系统缺乏在Internet中大规模真实部署的成功实例。

3.5.     三种结构的P2P(DHT,树形,网状)

    (1)DHT结构

    分布式哈希表(DHT)[1]是一种功能强大的工具,它的提出引起了学术界一股研究DHT的热潮。虽然DHT具有各种各样的实现方式,但是具有共同的特征,即都是一个环行拓扑结构,在这个结构里每个节点具有一个唯一的节点标识(ID),节点ID是一个128位的哈希值。每个节点都在路由表里保存了其他前驱、后继节点的ID。如图1(a)所示。通过这些路由信息,可以方便地找到其他节点。这种结构多用于文件共享和作为底层结构用于流媒体传输[2]。

    (2)树形结构

    P2P网络树形结构如图1(b)所示。在这种结构中,所有的节点都被组织在一棵树中,树根只有子节点,树叶只有父节点,其他节点既有子节点也有父节点。信息的流向沿着树枝流动。最初的树形结构多用于P2P流媒体直播[3-4]。

    (3)网状结构

    网状结构如图1(c)所示,又叫无结构。顾名思义,这种结构中,所有的节点无规则地连在一起,没有稳定的关系,没有父子关系。网状结构[5]为P2P提供了最大的容忍性、动态适应性,在流媒体直播和点播应用中取得了极大的成功。当网络变得很大时,常常会引入超级节点的概念,超级节点可以和任何一种以上结构结合起来组成新的结构,如KaZaA[6]。

3.6.     BitTorrent工作原理

BitTorrent软件用户首先从Web服务器上获得下载文件的种子文件,种子文件中包含下载文件名及数据部分的哈希值,还包含一个或者多个的索引(Tracker)服务器地址。它的工作过程如下:客户端向索引服务器发一个超文本传输协议(HTTP)的GET请求,并把它自己的私有信息和下载文件的哈希值放在GET的参数中;索引服务器根据请求的哈希值查找内部的数据字典,随机地返回正在下载该文件的一组节点,客户端连接这些节点,下载需要的文件片段。因此可以将索引服务器的文件下载过程简单地分成两个部分:与索引服务器通信的HTTP,与其他客户端通信并传输数据的协议,我们称为BitTorrent对等协议。BitTorrent软件的工作原理如图4所示。BitTorrent协议也处在不断变化中,可以通过数据报协议(UDP)和DHT的方法获得可用的传输节点信息,而不是仅仅通过原有的HTTP,这种方法使得BitTorrent应用更加灵活,提高BitTorrent用户的下载体验。

 

3.7.     eMule工作原理

eMule软件基于eDonkey协议改进后的协议,同时兼容eDonkey协议。每个eMule客户端都预先设置好了一个服务器列表和一个本地共享文件列表,客户端通过TCP连接到eMule服务器进行登录,得到想要的文件的信息以及可用的客户端的信息。一个客户端可以从多个其他的EMule客户端下载同一个文件,并从不同的客户端取得不同的数据片段。eMule同时扩展了eDonkey的能力,允许客户端之间互相交换关于服务器、其他客户端和文件的信息。eMule服务器不保存任何文件,它只是文件位置信息的中心索引。eMule客户端一启动就会自动使用传输控制协议(TCP)连接到eMule服务器上。服务器给客户端提供一个客户端标识(ID),它仅在客户端服务器连接的生命周期内有效。连接建立后,客户端把其共享的文件列表发送给服务器。服务器将这个列表保存在内部数据库内。eMule客户端也会发送请求下载列表。连接建立以后,eMule服务器给客户端返回一个列表,包括哪些客户端可以提供请求文件的下载。然后,客户端再和它们主动建立连接下载文件。图5所示为eMule的工作原理。

 

3.8.     迅雷工作原理

   迅雷是一款新型的基于多资源多线程技术的下载软件,迅雷拥有比目前用户常用的下载软件快7~10倍的下载速度。迅雷的技术主要分成两个部分,一部分是对现有Internet下载资源的搜索和整合,将现有Internet上的下载资源进行校验,将相同校验值的统一资源定位(URL)信息进行聚合。当用户点击某个下载连接时,迅雷服务器按照一定的策略返回该URL信 息所在聚合的子集,并将该用户的信息返回给迅雷服务器。另一部分是迅雷客户端通过多资源多线程下载所需要的文件,提高下载速率。迅雷高速稳定下载的根本原 因在于同时整合多个稳定服务器的资源实现多资源多线程的数据传输。多资源多线程技术使得迅雷在不降低用户体验的前提下,对服务器资源进行均衡,有效降低了 服务器负载。

    每个用户在网上下载的文件都会在迅雷的服务器中进行数据记录,如有其他用户再下载同样的文件,迅雷的服务器会在它的数据库中搜索曾经下载过这些文件的用户,服务器再连接这些用户,通过用户已下载文件中的记录进行判断,如用户下载文件中仍存在此文件(文件如改名或改变保存位置则无效),用户将在不知不觉中扮演下载中间服务角色,上传文件。

 

3.9.     PPLive工作原理

   PPLive软件的工作机制和BitTorrent十分类似,PPLive将视频文件分成大小相等的片段,第三方提供播放的视频源,用户启矾PPLive以后,从PPLive服务器获得频道的列表,用户点击感兴趣的频道,然后从其他节点获得数据文件,使用流媒体实时传输协议(RTP)和实时传输控制协议(RTCP)进行数据的传输和控制。将数据下载到本地主机后,开放本地端口作为视频服务器,PPLive的客户端播放器连接此端口,任何同一个局域网内的用户都可以通过连接这个地址收看到点播的节目。图6所示为PPLive的工作原理示意图。

 

3.10.           Skype工作原理

   Skype是网络语音沟通工具。它可以提供免费高清晰的语音对话,也可以用来拨打国内国际长途,还具备即时通讯所需的其他功能,比如文件传输、文字聊天等。Skype是在KaZaA的基础上开发的,就像KaZaA一样,Skype本身也是基于覆盖层的P2P网络,在它里面有两种类型的节点:普通节点和超级节点。普通节点是能传输语音和消息的一个功能实体;超级节点则类似于普通节点的网络网关,所有的普通节点必须与超级节点连接,并向Skype的登陆服务器注册它自己来加入Skype网络。Skype的登陆服务器上存有用户名和密码,并且授权特定的用户加入Skype网络,图7所示为Skype的体系结构[18]。

    Skype的另一个突出特点就是能够穿越地址转换设备和防火墙。Skype能够在最小传输带宽32 kb/s的网络上提供高质量的语音。Skype是使用P2P语音服务的代表。由于其具有超清晰语音质量、极强的穿透防火墙能力、免费多方通话以及高保密性等优点,成为互联网上使用最多的P2P应用之一。

 

4.            SIP协议和voip

4.1.     SIP:会话初始化协议(Session Initiation Protocol)

会话初始化协议(SIP)是一种应用层控制协议,它可用来创建、修改或终止多媒体会话,如因特网电话呼叫。SIP 能够邀请参与者加入已存在的会话,如组播会议。现有的会话中可以添加或删除媒体。SIP 支持名称映射和重定向服务,其支持用户移动性。不管用户网络位置在哪,用户只需维持单一外部可视标识符。

SIP 在五个方面支持创建和终止多媒体通信:

·                   用户定位:决定用于通信的终端系统的确定;

·                   用户可用性:决定被叫方是否愿意加入通信;

·                   用户能力:媒体和媒体参数的确定;

·                   呼叫建立:“响铃“,主叫方和被叫方的会话参数的建立;

·                   呼叫管理:包括传输和终止会话、修改呼叫参数和调用服务。

SIP 可以结合其它 IETF 协议来建立完善的多媒体结构,如提供实时数据传输和服务质量(QOS)反馈的实时传输协议(RTP)、提供流媒体发送控制的实时流协议(RTSP)、为公用交换电话网络(PSTN)提供网关控制的媒体网关控制协议(MEGACO),以及描述多媒体会话的会话描述协议(SDP)。因此,SIP 需要与其它协议协同作用来为用户提供完善的服务。然而 SIP 的基本功能和操作并不依赖于这些协议。

SIP 提供了一组安全服务,包括防止拒绝服务攻击、认证(用户对用户和代理对用户)、完整性保护和加密及隐私服务。SIP 同时支持 IPv4 和 IPv6 。关于因特网电话会话,SIP 做如下工作:

通过 SIP 地址识别主叫方和被叫方。当建立一个 SIP 呼叫时,主叫方首先定位适合的服务器,然后发出一个 SIP 请求。最通常的 SIP 行为是邀请。SIP 请求会被代理重定向或者触发一系列的新 SIP 请求,而不是直接到达目的被叫方。用户可以通过 SIP 服务器注册他们的位置。SIP 地址(URL)可以嵌入到网页中,因此只要点击一下就可以和对方建立呼叫会话。

协议结构

SIP 信息可以在 TCP 上传输也可以在 UDP 上传输。SIP 信息是基于文本的,采用 UTF-8 编码中的 ISO 10646 字符集。信息的每一行必须通过 CRLF 终止。大多数信息语法和头字段类似于 HTTP。SIP 信息可以是请求信息也可以是响应信息。

一个请求信息具有以下格式:

Method

Request URI

SIP version

·                   Method ― 资源上所执行的方法。可能的方法有:Invite、Ack、Options、Bye、Cancel 和 Register。

·                   Request-URI ― 指一个 SIP URL 或一个通用 URI;是请求要被寻址到用户或服务。

·                   SIP version ― 正在使用的 SIP 版本。

响应信息头的格式见下图 :

SIP version

Status code

Reason phrase

·                   SIP version ―正在使用的 SIP 版本。

·                   Status-code ― 3 位整数结果代码,用于试图了解和满足请求要求。

·                   Reason-phrase ― status code 的原文描述。 

尽管sip有自己独特的用户代理和服务器,但是它并非自成一体封闭工作,Sip支持融合多媒体服务,与很多现有的协议协同工作。(SIP用户代理、SIP注册服务器、SIP代理服务器和 SIP重定向服务器)

              通常情况下,两个端点使用它来协商一次呼叫。这里的协商包括介质(文本、语音等)、传输途径(Real time protocol)、编码。一旦协商成功,两端就会使用该方法进行通信,呼叫完成后,sip指示断开连接。因此sip是一种信令机制。sip还提供即时消息等等。 

  SIP 用户代理 (UA) 是终端用户设备,如用于创建和管理 SIP 会话的移动电话、多媒体手持设备、PC、PDA 等。用户代理客户机发出消息。用户代理服务器对消息进行响应。

  SIP 注册服务器是包含域中所有用户代理的位置的数据库。在 SIP 通信中,这些服务器会检索参与方的 IP 地址和其他相关信息,并将其发送到 SIP 代理服务器。

  SIP 代理服务器接受 SIP UA 的会话请求并查询 SIP 注册服务器,获取收件方 UA 的地址信息。然后,它将会话邀请信息直接转发给收件方 UA(如果它位于同一域中)或代理服务器(如果 UA 位于另一域中)。

SIP 重定向服务器允许 SIP 代理服务器将 SIP 会话邀请信息定向到外部域。SIP 重定向服务器可以与 SIP 注册服务器和 SIP 代理服务器同在一个硬件上。

 

 

下 图说明了在预订同一个ISP从而使用同一域的两个用户之间建立SIP会话的过程。用户A使用SIP电话。用户B有一台PC,运行支持语音和视频的软客户程 序。加电后两个用户都在ISP网络中的SIP代理服务器上注册了他们的空闲情况和IP地址。用户A发起此呼叫,告诉SIP代理服务器要联系用户B。然 后,SIP代理服务器向SIP注册服务器发出请求,要求提供用户B的IP 地址,并收到用户B的IP地址。SIP代理服务器转发用户A与用户B进行通信的邀请信息(使用 SDP),包括用户A要使用的媒体。用户B通知 SIP 代理服务器可以接受用户 A 的邀请,且已做好接收消息的准备。SIP 代理服务器将此消息传达给用户 A,从而建立 SIP 会话。然后,用户创建一个点到点 RTP 连接,实现用户间的交互通信。

1.呼叫用户 B

2.查询没?>在哪里?>

3.响应没?SIP 地址?>

4.頂呼叫

5.响应

6.响应

7.多媒体通道已建立

 

sip

 

4.2.     SDP:会话描述协议(Session Description Protocol)

会话描述协议(SDP)为会话通知、会话邀请和其它形式的多媒体会话初始化等目的提供了多媒体会话描述。

会话目录用于协助多媒体会议的通告,并为会话参与者传送相关设置信息。SDP 即用于将这种信息传输到接收端。SDP 完全是一种会话描述格式 ― 它不属于传输协议 ― 它只使用不同的适当的传输协议,包括会话通知协议(SAP)、会话初始协议(SIP)、实时流协议(RTSP)、MIME 扩展协议的电子邮件以及超文本传输协议(HTTP)。

SDP 的设计宗旨是通用性,它可以应用于大范围的网络环境和应用程序,而不仅仅局限于组播会话目录,但 SDP 不支持会话内容或媒体编码的协商。

在因特网组播骨干网(Mbone)中,会话目录工具被用于通告多媒体会议,并为参与者传送会议地址和参与者所需的会议特定工具信息,这由 SDP 完成。SDP 连接好会话后,传送足够的信息给会话参与者。SDP 信息发送利用了会话通知协议(SAP),它周期性地组播通知数据包到已知组播地址和端口处。这些信息是 UDP 数据包,其中包含 SAP 协议头和文本有效载荷(text payload)。这里文本有效载荷指的是 SDP 会话描述。此外信息也可以通过电子邮件或 WWW (World Wide Web) 进行发送。

SDP 文本信息包括:

·                   会话名称和意图;

·                   会话持续时间;

·                   构成会话的媒体;

·                   有关接收媒体的信息(地址等)。

协议结构

SDP 信息是文本信息,采用 UTF-8 编 码中的 ISO 10646 字符集。SDP 会话描述如下:(标注 * 符号的表示可选字段):

·                   v = (协议版本)

·                   o = (所有者/创建者和会话标识符)

·                   s = (会话名称)

·                   i = * (会话信息)

·                   u = * (URI 描述)

·                   e = * (Email 地址)

·                   p = * (电话号码)

·                   c = * (连接信息 ― 如果包含在所有媒体中,则不需要该字段)

·                   b = * (带宽信息)

一个或更多时间描述(如下所示):

·                   z = * (时间区域调整)

·                   k = * (加密密钥)

·                   a = * (0 个或多个会话属性行)

·                   0个或多个媒体描述(如下所示)

时间描述

·                   t = (会话活动时间)

·                   r = * (0或多次重复次数)

媒体描述

·                   m = (媒体名称和传输地址)

·                   i = * (媒体标题)

·                   c = * (连接信息 — 如果包含在会话层则该字段可选)

·                   b = * (带宽信息)

·                   k = * (加密密钥)

·                   a = * (0 个或多个会话属性行)

4.3.     SAP:会话通知协议(Session Announcement Protocol)

会话通知协议(SAP)是一种通知协议,用于协助组播多媒体会议通告以及其它组播会话过程,并为会话参与者传送相关设置信息。

SAP 广播员周期性地向已知的组播地址和端口传送通知数据包。通知传送范围与会话范围相同,以确保通知接收端即为会话接收端。这对于协议的可扩展性来说也是很重要的,即确保本地会话通知在本地传送。

SAP 收听方(通过组播范围区域通知协议或其它协议)知道其所在的组播范围,并监听那些范围内的 SAP 地址和端口。如此,收听方最终会知道所有被通知会话,并允许那些会话加入。

(人们)希望会话过程可以通过多种不同机制进行通知,而不仅仅是 SAP。例如 ,会话的描述可以放置在一个 web 页上,通过电子邮件或会话初始协议发送。为增强与其它机制间互操作性,需要提供应用层安全机制,而不是使用 IPsec 认证协议头。

协议结构

3

4

5

6

7

8

16

32 bit

V=1

A

R

T

E

C

Auth len

Msg ID hash

Originating Source (32 or 128 bits)

Optional Authentication Data

Optional Timeout

Optional Payload Type

 

0

 

Payload

V ― 3位版本号字段,该字段必须设置为1。

A ― 地址类型,值为0或1:

·                   0:Originating Source字段包括一个32位的 IPv4 地址。

·                   1:Originating Source字段包括一个128位的 IPv6 地址。

R ― 预留。SAP 广播员将它设置为0。SAP 收听方忽略该字段的内容。

T ― 信息类型,值为0或1:

·                   0:会话通知数据包

·                   1:会话删除数据包

E ― 加密位,值为0或1:

·                   1:对 SAP 数据包的有效载荷进行加密,并且 Timeout 字段必须被添加到数据包头中。

·                   0:不对数据包进行加密且当前不存在 Timeout 字段。

C ― 压缩位。如果值为1,表示对有效载荷进行压缩。

Authentication Length ― 8位无符号数,跟在主要 SAP 头后面,包含认证数据。如果该值为0,表示当前没有认证头。

Message Identifier Hash ― 结合 Riginating Source,提供全球唯一标识符,说明该通知的精确版本。

Originating Source ― 该字段包含信息 Original Source 的 IP 地址。如果 A 字段值为0,该地址指 IPv4 地址;否则指 IPv6 地址。按照网络字节顺序存储该地址。

Timeout ― 当会话有效载荷进行加密处理后,有效载荷中的详细定时字段对不信任解密密钥的收听方而言已经不可利用。在这种情况下,当会话到指定时间时,头就包含另外32位的Timestamp F 字段状态。该值是无符号数,提供指定会话超时的 NTP 时间。按照网络字节顺序存储。

Payload Type ― 有效载荷类型字段是关于 MIME 内容类型的说明,描述有效载荷的格式。这是一个可变长 ASCII 文本串,其后是单个零字节(ASCII NUL)。

Payload ― Payload 字段包括各种子字段。

 

4.4.     RTP(Real-timeTransportProtocol)

RTP(Real-timeTransportProtocol)是用于Internet上针对多媒体数据流的一种传输协议。RTP被定义为在一对一或一对多的传输情况下工作,其目的是提供时间信息和实现流同步。RTP通常使用UDP来传送数据

 

4.5.     RTCP(Realtime Transport Control Protocol)

实时传输控制协议:负责管理传输质量在当前应用进程之间交换控制信息。在RTP会话期间,各参与者周期性地传送RTCP包,包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料,因此,服务器可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。RTP和RTCP配合使用,能以有效的反馈和最小的开销使传输效率最佳化,故特别适合传送网上的实时数据。

 

5.            ICE(Interactive Connectivity Establishment)

IETF网络工程任务(Internet Engineering Task Force)

STUN(Session Traversal Using NAT)

TURN(Traversal Using Relay NAT)

ICE (Interactive Connectivity Establishment)

 

5.1.       ICE基于SIP工作方法

冰的方法概述如图所示:

每个candidate是能接受别的节点发送数据的IP地址和端口,candidate有三种类型:

1.本地候选:本地私有IP和端口

2.NAT候选:Nat地址和端口

3.relay候选:relay地址和端口

 

 

ICE建立通信通道的步骤:

1.caller收集候选人:客户端发送ALLocate请求给服务器,指示服务器分配IP/port,服务器会将地址返回给客户端。。。

2.caller发送sip的invite命令:收集候选人,caller将他们编入invite消息中,并发送给被叫方。

3.callee收集候选人:在收到sip的invite请求后,收集候选人(同第一步);

4.callee响应invite请求:被叫方发送临时的响应(包含候选人)给呼叫方,例如sip 183会话过程,该消息是转发的。

5.检查ICE的连通性:一旦caller收到对方的候选人后,双方都开始检查可使用的链路。

   首先检查本地候选人(可分析NAT候选人,判断是否操作此步)、检查Nat候选人、检查relay候选人.

6.Callee发送180 Ringing: 表示被叫的电话开始响铃

7.Callee发送200 OK:如果用户接受呼叫,被叫者发送给呼叫者的最后答复

8.呼叫者发送re-invite的sip命令:如果某一个选择的链路和对方不不同则需要重新选择链路,必须重新发送invite命令

9.Callee发送200 Ok来回应re-invite

10.caller发送ACK:表示最后的确认发送给被叫者,表示呼叫链路建立成功。

11.语音/视频媒体开始传输:双方都可以发送数据给对方,采用RTP协议!

 

6.            基于SIP的P2P网络架构

    P2P网络[3]的优点是没有中心服务器,节点间直接通信、交换资源和文档,并且可以扩展到分布式的负载分担网络。从理论分析看,P2P网络可以降低C/S结构网络中的“单点故障”和“性能瓶颈”问题。作为C/S结构网络一种的SIP网络也可以利用P2P技术来实现,并且具有以下特点:

    去中心化,避免中心SIP服务器的单点故障隐患;

    增强SIP网络的扩展性,降低网络中的存储、计算、带宽等性能瓶颈;

    提高网络的高可用性,采用P2P网络全分布的架构来提高网络的健壮性;

    降低成本,充分利用节点闲置的处理能力、存储和带宽资源。

    P2P SIP网络利用SIP协议的扩展和承载来完成P2P层叠加网络节点的加入、定位、查找和路由,降低P2P私有协议带来的扩展性和兼容性问题,实现不同P2P网络的互通。

    P2P SIP网络以SIP协议为基础,无需大规模改动现有设备,并且无需改动VoIP终端设备,只要升级现有SIP服务器的软件,即可实现SIP网络的P2P化,提升网络的处理能力和可用性。

    在P2P SIP网络中,原来管理一个域的单节点SIP服务器变成多台P2P SIP服务器(称为PN节点),PN之间通过P2P机制互联,彼此分担负载,构成一个逻辑上的重叠网络。每个节点将和它相连的下一节点当作下一跳PN可以承担原来服务中压力最大的部分,比如注册、代理和计费。用户连接到任一PN,都可以有效使用服务。部分PN的宕机或故障不会影响到整个P2P SIP网络的正常运行。当需要扩大P2P SIP网络的容量,加入新的PN就可以了[4]。

    P2P SIP网络有两个重要操作:一是对P2P节点的操作,包括节点注册和离开,实现重叠网络的维护[5];另一个是用户层面的操作,包括用户的注册、资源定位、会话建立等。

6.1.    P2PSIP节点操作

    P2P节点在地理上散布各处,逻辑上根据选用的P2P机制的不同可以是环形的(Chord协议)、矩阵的(CAN协议)、网状的(Pastry协议和Tapestry协议)。基本的P2P节点至少包括注册和代理两种功能。从运营角度出发,还需要部署全局认证服务器、全局账务服务器和网管服务器等等,用于管理全部用户和所有节点。

    每个节点在网络中都有一个节点ID号,该ID号由节点IP地址和端口号进行哈希运算获得,节点信息被存储在一张DHT表中。每个节点负责存储对应信息,如用户注册信息等。

    当一个节点申请加入网络中时,先定位一个缺省的网络节点,并发送SIP REGISTER消息给该缺省节点,申请加入网络。如果该缺省节点是负责对应区域的节点,则响应200OK消息,并允许新加入节点加入网络。响应消息中包含邻近节点的信息。

    如果缺省节点不是负责对应信息区域的节点,则通过SIP 302响应提供新加入节点前转的网络节点。新加入节点向前转节点发送SIP REGISTER消息,申请加入。前转节点根据自己是否是负责该区域的节点对REGISTER消息进行处理。上述过程一直持续到找到对应的节点为止。

    当新加入节点成功加入网络后,新加入节点存储所需要负责的用户信息如用户注册信息,同时通知网络中其它节点更新自己的信息。

6.2.    P2PSIP用户注册操作

    在P2P SIP网络中,每个用户被看成是一个资源,以资源ID标识,资源ID由资源名称经哈希运算获得。

    当用户申请注册时,首先生成对应的资源ID。用户所在的节点通过查找路由表,找到一个资源ID和节点ID最接近的节点,并向该节点发送REGISTER消息。如果该最近节点是负责该资源ID的节点,它会将用户名称和IP地址存储在注册表中,并回送200OK消息给用户节点。

    如果该最近节点不是负责该资源ID的节点,则通过302消息通知用户节点需要注册到下一节点。下一节点按照和上一节点同样的方式进行处理,直至找到对应的处理节点。对应的处理节点发送200OK消息给用户节点,并存储用户的名字和IP地址。

6.3.    P2PSIP会话建立操作

    用户注册成功后,可以和其他用户进行会话。在会话前,会议发起方需要确定会话接收方的地址。发起方首先生成接收方的资源ID,并确定一个和资源ID最近的节点。然后发送INVITE消息给该最近节点,直到查找到负责接收方的节点。如果接收方用户没有注册,则负责节点通知发送方停止会话;如果接收方已正常注册,负责节点将接收方用户的IP地址通过302响应通过发送方。

在获得了接收方的IP地址后,发起方和接收方就可以按照传统SIP协议的方式建立会议。

7.            基于ICE的SIP NAT解决方案设计和实现

Methodology for NAT Traversal for the SIP Using ICE

 

8.            结束语

   利用P2P技术的分布处理和无中心的架构来建设SIP网络是网络发展的一个重要方向。从现在的P2P SIP网络的应用和实践看,这种结合方案还有很多挑战,主要表现在:

    P2P技术还不成熟,资源动态分布的优化,资源恢复技术还在进一步研究中。现有的P2P应用主要还是集中在非实时的互联网数据应用上,对于实时的通信节点,以及资源的快速分配定位,还有很多需要P2PSIP网络研究的领域。

    P2P的成功应用目前还只是在互联网领域的非实时应用,对于SIP应用,特别是实时通信要求高的呼叫处理而言,基于P2P的SIP网络还需要进行优化。P2PSIP网络利用在去中心化的节点群集来代替原SIP网络中的服务器,现有的P2P技术发现,在P2PSIP网络中对等通信方的查找时间原大于普通SIP网络的对等通信方查找时间。实验发现,两种网络的查找实验时间比超过4倍。

    P2P对于带宽和资源的消耗,路由效率低下是P2P技术取得成功应用的难点。现有的成功的P2P应用大都利用“免费”的互联网资源,包括带宽、存储、计算能力等。对于一个可运营可管理的P2PSIP网络而言,需要提高P2P网络技术对资源的使用效率。

    P2PSIP网络结构复杂,对于运营商的管理带来了很大的困难。如何实现可运营可管理的P2PSIP网络是目前业界的一个重要课题。

(miky_sun)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www1.rosoo.net/a/201303/16539.html]
本文出处:CSDN博客 作者:miky_sun 原文
顶一下
(3)
75%
踩一下
(1)
25%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容