Download as pdf or txt
Download as pdf or txt
You are on page 1of 27

对等会话初始协议技术要求

Technology Requirements for P2P SIP

目录

1. P2P SIP 概述.................................................................................................................... 4

2. 高级描述................................................................................................................................... 4

2.1. 服务............................................................................................................................... 5

2.2. 客户............................................................................................................................... 5

2.3. 协议............................................................................................................................... 5

2.4. 对等体协议和客户协议的关系 ................................................................................... 5


2.5. P2PSIP 和传统 SIP 的关系 .......................................................................................... 5

2.6. P2PSIP 和其他 AOR 关联方法之间的关系 ............................................................... 5

2.7. NAT 问题 ...................................................................................................................... 6

3. 定义和缩略语................................................................................................................... 6

3.1. 定义............................................................................................................................... 6

3.2. 缩略语........................................................................................................................... 8

4. P2P SIP 参考模型 .......................................................................................................... 10

5. P2PSIP 协议及其操作方法 ............................................................................................ 11

5.1. P2PSIP 对等体协议和 P2PSIP 客户协议 ................................................................. 11

5.2. P2PSIP 操作方法 ....................................................................................................... 12

5.2.1. 注册和插入 P2PSIP 对等体........................................................................... 12

5.2.2. 资源注册 ......................................................................................................... 12

5.2.3. 引导................................................................................................................. 13

6. 分布式数据库................................................................................................................. 13

6.1. 分布式数据库的应用 ................................................................................................. 14

7. 两种 P2PSIP 实现方式 ................................................................................................... 17

7.1. 采用 P2P 方式实现 SIP 注册和资源定位................................................................. 17

7.1.1. 对等体注册 ..................................................................................................... 18

7.1.2. 会话建立 ......................................................................................................... 18

7.2. 采用独立的 P2P 叠加网为 SIP 实现分布式资源存贮和业务查询 ......................... 18

7.2.1. P2P 叠加网 API .............................................................................................. 19

7.2.2. SIP 实体操作 ................................................................................................. 20


7.2.3. P2P UA 行为................................................................................................... 21

7.2.4. P2P Proxy 行为 ............................................................................................... 21

7.2.5. P2P registrar 行为 ........................................................................................... 22

8. P2P SIP NAT 穿越问题 .................................................................................................. 22

8.1. 网络地址转换............................................................................................................. 22

9. 安全问题......................................................................................................................... 23

9.1. 启动............................................................................................................................. 23

9.2. 节点认证..................................................................................................................... 23

9.3. 对等体消息传送......................................................................................................... 24

9.4. 注册............................................................................................................................. 24

9.5. 会话端点的发现......................................................................................................... 24

9.6. 客户结点的行为......................................................................................................... 24

9.7. 对等体结点的行为 ..................................................................................................... 24

10. 其他................................................................................................................................. 25

10.1. 如何在提供相同服务的多个对等体之间选择 ..................................................... 25

10.2. 中间对等体对消息的可见性 ................................................................................. 25

10.3. 在同一用户代理中同时采用传统 SIP 和 P2PSIP ............................................... 25

10.4. 客户,对等体和服务 ............................................................................................. 25

10.5. 域和叠加网的关系 ................................................................................................. 26

10.6. 协议层次和对 SIP 扩展的考虑 ............................................................................. 26

11. 参考文献......................................................................................................................... 27
对等会话初始协议技术要求

1. P2P SIP 概述

在互联网节点之间进行多媒体通信的主要问题是找到通信双方的 IP 地址。通信双方通

常通过各自的特征名进行标识,一种可能的情况就是采用通用资源标识符(URI)的形式。

SIP 协议(RFC3261)一般是通过 URI 的域部分指示一个互联网主机地址,或一个采用 DNS

方式的域名;SIP 的定位过程则是通过 URI 的主机部分指示目标 SIP 用户代理;或者指示一

个知道如何到达目标用户代理的代理服务器,而相关信息是通过 SIP 用户注册过程获取的。

“传统 SIP”或者“客户/服务器 SIP”方式是假设在 SIP 代理服务器和 SIP 用户代理结构相

对固定的情况下进行的。代理服务器通常设定静态 IP 地址或者通过 DNS 来解析,但是该方

式在很多场合中不一定实用,比如自组织网络,无服务器和缺少管理的系统等。

在 P2P 网络模型中,参与的结点或者对等体共享他们的计算和网络资源,采用分布式

的方式执行部分或者全部服务器功能,因此全部或者部分消除了对服务器的需求。

2. 高级描述

P2PSIP 叠加网是采用对等方式组织的节点的集合,它为采用 SIP 协议进行实时多媒体

通信的节点提供服务。叠加网中的节点共同提供分布式的机制实现名字到网络位置的映射。

它提供地址记录(AOR)到 URI 联系地址的映射,因此提供了 RFC3261 中“定位服务器”

功能。P2PSIP 叠加网同时提供 SIP 消息在叠加网任意节点之间的传送功能。

P2PSIP 叠加网由多个称为 P2PSIP 对等体的节点组成。叠加网中的对等体运行分布式数

据库算法。该算法允许数据存储在对等体中并能高效获取。它也可以将数据同时存在多个对

等体中,因此某个对等体的丢失不会导致叠加网中数据的丢失。

分布式数据库的用途之一就是存储提供 AOR 到 URI 联系地址之间的映射关系,以实现

分布式定位功能。每个叠加网中的定位功能都是 RFC3263 定位功能的另一种实现,不同的

叠加网之间用户定位则采用 RFC3263 的方法。


2.1. 服务

对等计算的实质是每个对等体提为其他对等体供服务,因此整个叠加网可以提供更大的

功能。在 P2PSIP 中,对等体提供存储和传送服务,实现分布式数据库功能和分布式传送功

能。单个对等体也可以提供其他服务。某些附加服务(比如 STUN 服务)可能是必须的,

以便形成和运行叠加网,其他的服务(比如语音邮件)仅用来增强 P2PSIP 功能。

为了允许对等体提供附加服务,分布式数据库必须能存储服务的信息。比如:存储那个

对等体提供什么样的服务,甚至每个对等体都有什么样的容量以提供相关的服务等。

2.2. 客户

叠加网中可能包括或不包括称为 P2PSIP 客户的节点。现在人们对客户的角色还有很大

的争议,许多人认为不需要客户。如果存在客户的话,客户能够在叠加网中存贮和获取信息。

2.3. 协议

叠加网对等体之间要运行协议存储和获取信息,称为 P2PSIP 对等体协议。

2.4. 对等体协议和客户协议的关系

如果 P2PSIP 中包括客户,那么客户和对等体之间也要采用协议通信,称为 P2PSIP 客

户协议。如果该协议存在的话,逻辑上它是 P2PSIP 对等体协议的子集。换句话说,对等体

协议和客户协议的语法可以完全不同,但是客户协议的所有操作对等体协议也应支持。

2.5. P2PSIP 和传统 SIP 的关系

P2PSIP 的目标是在对等网络中实现实时通信,因此大多数的对等体和客户都要和 SIP

实体耦合在一起。比如,某个对等体和 SIP UA 耦合,或者和 SIP 代理服务器耦合等。对这

些节点而言,对等体,客户部分和 SIP 实体部分是完全分离的。当然,也不要求所有的节点

一定和 SIP 实体耦合。

2.6. P2PSIP 和其他 AOR 关联方法之间的关系

P2PSIP 的基本任务是把地址记录 AOR 转换成联系地址。我们也可以采用其他零配置技

术,比如组播 DNS,动态 DNS 等。基于扩展性,恢复能力等各方面的考虑,以上的方法都

不被认为是通用的解决方案。然而,有可能采用 DNS 组播技术作为 P2PSIP 叠加网引导的

方法。
2.7. NAT 问题

NAT 对于建立和维护 P2P 网络是个障碍,因为 NAT 阻碍了对等体之间的直接通信。在

P2PSIP 模型中,对等体之间可以通过 NAT 相连的多个地址空间连接。即对等体协议必须能

穿越 NAT,同时也意味着对等体必须提供分布式传送功能,以允许某个对等体在叠加网中

发送 SIP 消息到其他对等体;否则不同地址空间中的两个对等体可能无法交换 SIP 消息。

3. 定义和缩略语

3.1. 定义

叠加网络:叠加网络是指构建于其它网络之上的网络。叠加网络中的节点通过虚拟的或

者逻辑的链路进行连接,每一条链路都对应于一个路径,这些路径可能是下层网络的物理链

路。

对等网络:对等网络的特征是:网络主要依赖于网络参与者的计算能力和带宽而并非相

对较少的中央服务器。例如,对等网络可以通过大量的自组织网络链路对节点进行连接。它

的应用包括:音频,视频,数据及任何以数据格式存储的内容的文件进行共享;实时数据,

如电话业务,也都可以通过 P2P 技术实现。对等网络也可以被称为“P2P 叠加网”

P2PSIP:和 SIP 协议相关的通信协议族,该协议使得 SIP 可以利用 P2P 技术实现对 SIP

请求目标的解析,SIP 消息的传送以及其他 SIP 相关功能。它包括 P2PSIP 对等体协议和

P2PSIP 客户协议。

P2PSIP 叠加网: P2PSIP 叠加网是一些特定结点的联合,集合或者说是联盟。这些节

点能够提供 SIP 注册,SIP 消息传送,及以上定义的对等网络中的其他类似功能。

P2PSIP 叠加网标识:标识一个特定 P2PSIP 叠加网的信息。所有在一个特定 P2PSIP 叠

加网中的 P2PSIP 对等体都具有同样的 P2PSIP 叠加网标识。

P2PSIP 对等体:指能够给同一 P2PSIP 叠加网中其它节点提供存储和传送服务的节点。

每一个 P2PSIP 对等体在 P2PSIP 叠加网中都有一个唯一标识。每一个 P2PSIP 对等体或许会

与一个或多个 SIP 用户代理相关联。在 P2PSIP 叠加网中,对等体能够执行几种不同的操作,

包括:加入,退出叠加网,在叠加网中进行消息传送,存储叠加网中的信息,在叠加网中插

入以及获得信息等。
P2PSIP 对等体标识符:在一个给定 P2PSIP 叠加网中用来唯一标识一个 P2PSIP 对等体

的信息。对等体标识符完全独立于在一个对等体上所关联的用户代理的任何用户标识。

P2PSIP 客户:在 P2PSIP 叠加网中既不提供信息传送又不具备信息直接存储和获取功能

的节点。P2PSIP 客户通过与一个或多个 P2PSIP 对等体进行关联而与 P2PSIP 叠加网进行交

互。通过对等体,客户能够请求插入信息(放置一个联系方式)或者请求得到一个信息(获

取一个联系方式)。不像 P2PSIP 对等体,客户在叠加网中是没有唯一标识的。在传统的 SIP

被用来做为 P2PSIP 客户协议的情况下,该实体可能等同于一个标准的 SIP 实体(例如:用

户代理或者代理服务器)。P2PSIP 客户是 P2PSIP 对等体的逻辑子集;任何 P2PSIP 客户的功

能,P2PSIP 对等体都能实现。P2PSIP 客户不必是一个 SIP 的用户代理客户端。

用户:通过对等体或者客户所关联的 SIP UA 和叠加网交互的人,用户由对等体或者客

户帮助其完成注册或请求路由。

P2PSIP 用户名:P2PSIP 用户的名称,在叠加网中用户名是唯一的。

P2PSIP 服务:对等体提供给叠加网或者叠加网成员的能力。并非所有的对等体和客户

都将提供相同的服务。服务包括对请求的路由,路由数据和其他数据的存储,STUN 发现,

STUN 中继等。

P2PSIP 资源:任何可以存储在 P2PSIP 叠加网中的信息。比如用户,服务。

P2PSIP 资源标识符:用来唯一确定哪一个 P2PSIP 对等体负责存储该资源信息的键值。

分布式数据库算法采用该资源标识符来确定存储相应数据的叠加网对等体。由于资源标识符

与 P2PSIP 对等体标识符在同一个哈希空间中,所以可以在两个值之间进行映射。

P2PSIP 资源记录:使用 P2PSIP 叠加网数据机制存储的,包含有特定资源相关信息的数

据块。可能存在许多种资源记录类型。一些数据是关于用户的,另外一些是关于业务的,将

来也可能定义其他的类型。记录类型,使用方法和格式有待研究。

P2PSIP 对等体协议:用于在 P2PSIP 叠加网对等体之间进行通信,以共享信息和组织

P2PSIP 叠加网络的协议。

P2PSIP 客户协议:用于在 P2PSIP 客户和 P2PSIP 对等体之间进行通信,并且用以在 P2P

叠加网中存储和获取信息的协议。这个协议是 P2P 对等体协议的功能子集,但是在语义和协

议使用上可能存在差别。
P2PSIP 对等体协议连接/P2PSIP 客户协议连接:TCP,UDP 或者其他传送层协议连接用

来传送 P2PSIP 对等体协议/P2PSIP 客户协议。

P2PSIP 邻居:一个 P2PSIP 对等体的集合,该集合中,不论是 P2PSIP 对等体还是 P2PSIP

客户,它们之间都相互认识并且不需要查表就可互通。

P2PSIP 引导对等体:P2PSIP 叠加网中的 P2PSIP 对等体,它是新的对等体加入叠加网的

第一个联系点。它选择 P2PSIP 准入对等体,并帮助 P2PSIP 加入对等体联系 P2PSIP 准入对

等体。

P2PSIP 引导服务器:通过该节点,其它节点能够与一个 P2PSIP 引导对等体取得联络。

该节点可以返回一个 P2PSIP 引导对等体的地址,或者做为一个代理来转发引导对等体的消

息,或者自身做为一个引导对等体。P2PSIP 引导对等体自身应该是相当的稳定的,并且是

众所周知的主机。为了使用方便,其它的节点必须能够很方便的定位该节点。一种方式是在

DNS 中有众所周知的记录。

P2PSIP 加入对等体:准备加入 P2PSIP 叠加网的 P2PSIP 对等体。

P2PSIP 准入对等体:帮助 P2PSIP 加入对等体加入到 P2PSIP 叠加网的对等体。一般而

言,
P2PSIP 准入对等体是由 P2PSIP 引导对等体选择的在逻辑上最靠近加入对等体的对等体。

P2PSIP 对等体接入允许:准许 P2PSIP 加入对等体进入 P2PSIP 叠加网成为 P2PSIP 对等

体的行为。接入允许完成之后,加入对等体成为叠加网中的完整功能对等体。在接入允许过

程中,加入对等体可能要进行安全认证。

P2PSIP 资源记录插入:在分布式数据库中插入 P2PSIP 资源记录。在插入之后,相关的

数据存储在单个或多个对等体中。通过 P2PSIP 资源标识符作为键值可以更新或者获得相关

数据。

3.2. 缩略语

SIP Session Initiation Protocol 会话初始协议

P2P Peer to Peer 对等

P2PSIP Peer to Peer Session Initiation Protocol 对等会话初始协议

DNS Domain Name System 域名系统


DHT Distributed Hash Table 分布式哈希表

SIP UA SIP User Agent SIP 用户代理

AOR Address of Record 地址记录

URI Universal Resource Identifier 通用资源标识符

NAT Network Address Traversal 网络地址穿越

STUN Simple Traversal of UDP over NATs NAT 的 UDP 简单穿越

TURN Traversal Using Relay NAT 采用中继的地址穿越

ICE Interactive Connection Establishment 交互式连接建立方法


4. P2P SIP 参考模型

图 1 P2PSIP 参考模型

在 P2PSIP 叠加网四周,我们列举了很多的 P2PSIP 对等体,有 PSTN 网关对等体“G”,

三个用户代理对等体“D”,“E”和“F”,两个代理对等体 “P”和“Q”,和一个重定向

器对等体“R”。注意,因为它们都是 P2PSIP 对等体,每一个都负责存储一些 P2PSIP 叠加

网的信息。

在左边,“D”和“E”对等体都在 NAT 设备的后面。它们都包含在 P2PSIP 叠加网内,


并且参与存储信息。在 P2PSIP 叠加网之下,
有一个传统的 SIP 用户代理“A”,
它不是 P2PSIP

叠加网的一部分,既不直接做为一个对等体又不间接做为一个客户。它既不使用 P2PSIP 对

等协议又不使用 P2PSIP 客户协议。它使用纯(未修改/扩展)SIP 协议来与 P2PSIP 叠加网

进行交互。

P2PSIP 用户代理客户“C”,它使用 P2PSIP 客户协议(用“=”表示的路径)来与代

理对等体“Q”进行通信。P2PSIP 客户协议仅允许对叠加网进行“获取”和“放置”操作,

因此“C”不能够直接参与叠加网信息的存储。如果 P2PSIP 客户协议是 SIP 的话,那么在用

户代理客户“C”和标准 SIP 用户代理“A”之间没有差别。

“代理对等体”和“重定向对等体”能够做为一般 SIP 设备和 P2PSIP 叠加网之间的适

配器。它们都接收标准的 SIP 请求消息,并且通过 P2PSIP 叠加网对等体协议获取 P2PSIP

叠加网中的路由信息,从而解析出下一跳,然后正确的处理 SIP 请求(转发或者重定向到下

一跳)

代理操作是双向的--代理能够转发一个请求从一个普通的 SIP 设备到 P2PSIP 叠加网,

或者从 P2PSIP 叠加网到一个普通的 SIP 设备。 网关对等体与 PSTN 之间提供一个相似的适

配过程。不同类型的对等体(重定向,用户代理,代理,网关)功能都是逻辑上的,单个实

体能够支持一种,数种,或者所有功能。

5. P2PSIP 协议及其操作方法

5.1. P2PSIP 对等体协议和 P2PSIP 客户协议

P2PSIP 对等体协议用在对等体之间进行通信,该协议至少要能够支持以下的行为:

o 注册对等体到叠加网

o 插入 P2PSIP 对等体到叠加网

o 注册资源或者用户到叠加网

o 插入资源或者用户到叠加网

o 从叠加网中获取资源或者用户的信息

P2PSIP 客户协议 是在客户和对等 体之间进行通信的协议 。客户使用该协议来 向

P2PSIP 叠加网请求服务。对于能力有限的终端,比如智能手机,由于电池容量和带宽的限
制必须减少消息的传送,因此客户协议可以避免终端参与叠加网的维护。不过目前还不清楚

是否一定要设计新的客户协议,或许 SIP 协议可以胜任该角色。关于对等体和客户之间的关

系,可以确定的是:

o 对等体具有客户的所有能力。

o 可能存在仅包含对等体的 P2PSIP 叠加网。然而,不存在仅由客户组成的 P2PSIP 叠

加网,因为客户只能关联到对等体。

5.2. P2PSIP 操作方法

5.2.1. 注册和插入 P2PSIP 对等体

对等体是 P2PSIP 叠加网的全功能“路由和存储”节点。当新的节点产生时,它首先在

P2PSIP 叠加网中进行注册。注册过程完成后,新的对等体将至少拥有一个 P2PSIP 对等体标

识和相关的信任书。之后,每一次对等体连接上叠加网,它必须将插入叠加网。加入对等体

与一个 P2PSIP 引导对等体进行连接(可能在对等体引导服务器的帮助下)并进行认证,在

与其它 P2PSIP 对等体完成消息的交换之后,最终加入到叠加网。接下来它将识别邻居(后

继节点,前置节点等)并且能够存储 P2PSIP 叠加网中其它节点的数据或者将请求信息路由

给它们。

5.2.2. 资源注册

一旦对等体加入叠加网,对等体所负责的用户和服务必须向系统进行注册。该注册过程

类似于传统的 SIP 注册。所不同的是由于没有中心服务器, 一些叠加网中的对等体将代表

用户保存注册信息。

资源注册的路由过程与对等体注册相似。拥有资源的对等体通过分布式算法计算资源的

标识符并且将其注册到负责该资源的对等体处。

为了保险起见,资源可以备份到叠加网中的其他对等体上。备份资源的标识符是通过对

资源名加入备份号再进行哈希计算而得到的。通过这种方式,备份资源就可以存储在分布式

数据库其他节点上,消除单点失效的危险。
5.2.3. 引导

如果客户或者对等体正在初始化而且想加入到叠加网,那么它首先需要找到 P2PSIP 引

导对等体。定位 P2PSIP 引导对等体可以通过很多的方式来进行:

o 通过组播发现机制;

o 通过手工配置;

o 通过联络 P2PSIP 引导服务器,并使用其定位引导对等体。

客户或者对等体可能会依次或者同时尝试每一种方式(可能还会有其它的方式)直到最

终成功的找到引导对等体。

象引导对等体一样,对等体或者客户有很多的方式能够定位 P2PSIP 引导服务器。在发

现对等体的地址之后,节点的行为依赖于它是否想成为对等体还是客户。 如果它想成为对

等体,那么它进入 P2PSIP 对等体插入进程,加入到目标叠加网,并且能够路由请求和代表

P2PSIP 叠加网存储资源记录。如果它想成为客户,它不用叠加网插入,而只是联络已经被

发现的对等体,进而使用叠加网。

一般而言,对等体或者客户同时也是带有一个或者多个关联 P2PSIP 资源标识的 P2PSIP

用户代理,因此接下来将把 P2PSIP 记录插入到 P2PSIP 叠加网中。

对等体,客户和 P2PSIP 用户代理的混合和配置都依赖于应用场景。例如, 自组织网络

可能仅使用 P2PSIP 对等体,每个 P2PSIP 对等体关联一个 P2PSIP 用户代理,使用广播或者

组播引导机制。有的方案中提出使用 SIP 做为 P2PSIP 客户协议。它采用标准 SIP 消息和

P2PSIP 代理或者 P2PSIP 重定向服务器通信。

6. 分布式数据库

P2PSIP 叠加网具有分布式数据库的功能。数据库主要用来存储资源信息,其中的信息

块称为资源记录,并且可以通过称作资源标识符的键值从数据库中检索。资源标识符除了用

来唯一标识资源,它还可以被分布式数据库算法用来决定对等体或者对等体在叠加网中存储

的资源记录。与用户关联的资源记录中的信息包括用户的全名和用户使用的用户代理的位

置。

用户信息能够被存储在叠加网之前,用户需要一个用户名。用户名是一个可读的标识符,
该标识符能够唯一的标识叠加网中的用户。用户名不是资源标识符,而资源标识符却可以通

过叠加网使用的分布式数据库算法从用户名得到,比如加密的哈希算法。

叠加网可能还需要用户具有信任书。通过信任关系,用户可以用来鉴权和/或者证明自

己是叠加网授权用户。

拥有业务的对等体能够向叠加网中的其它对等体和客户提供服务。存储在与业务相关联

的资源记录中的信息包括对等体能够提供的业务。

每个业务拥有一个可读的业务名称用来唯一标识业务本身。和用户名一样,业务名不是

资源标识符,但是资源标识符却可以通过叠加网中采用的分布式数据库算法从业务名称中得

到。

6.1. 分布式数据库的应用

以下是分布式数据库应用的例子:

第一个例子是将用户的联络信息存储在资源记录中。对等体 Y 是该用户的联络点,它

把联络信息存到资源记录中去。而资源记录本身是存储在由分布式数据库算法得到的对等体

Z 上。当对等体 X 上的 SIP 实体发送 INVTITE 消息到达该用户时,它从对等体 Z 获得资源

记录,然后从资源记录中获得用户的不同的联络点信息(包括对等体 Y)
,并且将 INVITE

消息转发到相应的联络点。

消息交换过程如下图所示。
“Put(U@Y)”表示分布式数据库操作--更新联络点 Y 上

的用户 U 的资源记录。
“Get(U)”表示分布式数据库操作--获取用户 U 的资源记录。注意,

X,Y 和 Z 之间的消息实际上可能穿越了中间对等体(没有显示出来)或者 NAT 设备。


图 2 分布式数据库例一

第二个例子同样演示了用户如何存储他们的联络信息到资源记录中去。然而,对等体 X

上的 SIP 实体并没有去对等体 Z 上取得资源记录,而是将 INVITE 消息转发到 Z 上的代理,

然后由 Z 上的代理根据资源记录的信息将消息再转发到对等体 Y 和其它联络点上的 SIP 实

体。

图 3 分布式数据库例二

第三个例子中,对等体 W 将它自己的联络信息放置到用户的资源记录中(在 Z 上)。

对等体 Y 是用户的联络点,用户从对等体 Z 上得到资源记录,然后获取对等体 W 的联络信

息,并且采用标准的 SIP 注册机制注册到对等体 W 上。当 X 上的 SIP 实体发送 INVITE 请

求消息时,它通过资源记录得到 W 的联络信息,然后转发 INVITE 消息道 W 的代理处,再

由代理转发到对等体 Y 和其它联络点。
图 4 分布式数据库例三

第四个例子和第三个例子的工作流程相似,只是 X 并没有到 Z 处获得资源记录,而是

将 INVITE 消息转发到 Z 上的 SIP 代理,再由该代理进行下一步的转发。


图 5 分布式数据库例四

7. 两种 P2PSIP 实现方式

目前主要有两种方式实现 P2PSIP,即采用 P2P 方式实现 SIP 注册和资源定位的方法,

也称为 P2P Over SIP;和采用独立 P2P 叠加网方式,也称为 SIP Over P2P。以下简要介绍两

种实现方式。

7.1. 采用 P2P 方式实现 SIP 注册和资源定位

该方式采用 SIP 消息机制实现 P2PSIP 对等体协议, 不需要 P2PSIP 客户协议,对于非对

等体而言,采用标准 SIP 协议即可。其目标是尽可能保持标准的 SIP 消息不改变。所有的用

来维持分布式数据库和用来进行信息请求操作的消息都使用 SIP 消息来传送。SIP 消息的交

换有两个目的。第一个目的是用来维护分布式数据库,该类消息用来管理对等体加入和离开

叠加网以及在对等体之间进行信息的传送。第二个目的是用来完成注册用户、邀请其他用户

加入会话等基本的会话建立动作。由于分布式数据库被用作分布式注册器,注册和搜索都在

分布式数据库中完成。一旦目标资源被锁定,接下来的通信过程就直接在用户代理之间进行,

和传统的 SIP 通信方式一样。

用来操作分布式数据库的消息是 SIP REGISTER 消息。RFC 3261 中规定了 REGISTER

消息用来“增加,删除,和请求绑定”。因此可以选择 REGISTER 方法来增加、删除和请求


绑定。在分布式数据库维护操作中使用 REGISTER 将主机绑定成为邻居,同时也使用

REGISTER 消息对资源名和其位置进行绑定。

当一个对等体发送一个消息到分布式数据库中,它就开始计算目标标识符,该目标标识

符很可能就是他自己。对等体自己的标识符可以通过哈希自己的用户注册信息而得到的。接

下来它就查询自己的路由表以找到他所知道的离目标标识符最近的对等体。通常在启动的时

候,应用仅知道一个启动对等体。消息被送到一个对等体后,如果该对等体负责这个标识符

的话,那么它就执行请求的操作。如果联络的对等体不负责这个标识符的话,那么这个对等

体产生一个重定向消息,告诉这个正在搜寻的对等体去往一个离负责该目标标识符对等体最

近的对等体。接下来搜索对等体就联络这个指定的对等体,该过程不断重复,直到最终找到

目标对等体。

7.1.1. 对等体注册

当一个对等体(加入对等体)希望加入叠加网,它生成自己的对等体标识符并且发送

REGISTER 消息到引导对等体,请求加入叠加网。任何在分布式数据库中的对等体都可以作

为引导对等体。按照以上的路由机制,引导对等体查找他所知道的离加入对等体标识符最近

的对等体,并且返回重定向消息给加入对等体,告诉它去往最近对等体。然后,加入对等体

会发送一个新的 REGISTER 消息给目标对等体,该目标对等体就是准入对等体,认证之后

加入对等体通过准入对等体学习到叠加网中的其他对等体,并且获得由自己维护的资源信

息。

此后,当有对等体加入或者离开时,都会产生消息交换用以维护叠加网。

7.1.2. 会话建立

会话建立第一步是通过资源搜索而定位对等体。目标资源的名字被用来计算出资源标识

符,一个不带 contact 信息的 REGISTER 消息被送到最近的知道资源的对等体处。该搜索过

程可以不断的重复直到找到目标对等体。目标对等体则返回带 Contact 信息的 OK 消息或者

404 消息――表示没有找到。接下来的会话可以在用户代理之间直接建立。

7.2. 采用独立的 P2P 叠加网为 SIP 实现分布式资源存贮和业务查询

采用独立 P2P 叠加网方式的实现中,P2PSIP 系统中的对等体包含两层:下层 P2P 叠加

网和上层 SIP 层。P2P 叠加网用来处理所有的 P2P 叠加网功能。P2P 叠加网不解释高层包括


SIP 在内对资源的放置和查询的语义。但是它的设计目标是为 SIP 和基于 SIP 的实时多媒体

业务服务。即,其他的应用也可以使用 P2P 叠加网功能,但是 P2P 叠加网功能对其他应用

而言并不一定是优化的。

从 SIP 的角度看,P2P 叠加网主要提供对 SIP 资源的定位服务。SIP 操作中最重要的资

源和信息是用户的定位信息,比如 SIP URI 对应的地址记录。一般而言,在呼叫之前,主叫

需要精确地知道被叫的 SIP URI 信息。基于 DHT 的分布式数据库支持基于资源名字的精确

查询,因此满足了 P2P SIP 的需求。可以采用 DHT 实现 P2P 叠加网。

P2P 叠加网可以看成是在各种不同网络环境中,具有不同物理资源的对等体组成的网

络。P2P 叠加网越大,对等体的异质性也越大。为了使整个 P2P 叠加网络的性能更好,对于

那些不具备合适的物理资源的结点,应该免于被迫提供资源。

因此网络中节点被分为两种类型:对等体结点和客户结点。对基于分布式数据库的 P2P

叠加网而言,对等体结点参与建设和维护分布式数据库。客户结点不参与分布式数据库操作。

对等体结点通过查询请求路由和回复来提供查询服务。为了发现其他对等体的资源,客户结

点向对等体结点发送查询请求消息,对等体结点在分布式数据库中对查询请求路由。也就是

说,对等体结点组成分布式存储和查询服务网络;而客户结点和对等体结点都可以使用叠加

网的服务。基于系统的需求,有些 P2PSIP 系统可能只有对等体结点。

因为只有对等体结点参与分布式数据库,P2P 叠加网具有层次架构:核心层包括对等体

结点,他们之间形成分布式数据库,边缘是客户结点。每个客户结点和一个对等体结点相关

联。客户结点和对等体结点之间的关系类似主机和路由器之间的客户服务器关系。客户结点

通过对等体结点使用叠加网核心的存储和查询服务。SIP 具有自身的层次架构。SIP 代理服

务器组成基础架构为 SIP 用户代理提供呼叫请求的路由服务。一般而言,P2P 叠加网中对等

体的层次架构和 SIP 的层次架构是相互独立的。

7.2.1. P2P 叠加网 API

P2P 叠加网提供 API 为上层服务,服务包括存储资源和资源查询等。API 核心功能定义

如下:

Get ( in overlay_id, in key, out records, out error)

根据叠加网标识符合 verlay_id 查询 P2P 叠加网中的资源


Add (in overlay_id, in key, in records, out error)

向 P2P 叠加网添加资源记录。Add 不能用来改变现有 P2P 叠加网中的资源,如果所添加的

资源和现有的资源有相同的键值,新的资源会附加到现有的 P2P 叠加网。即 add 不能用来

改变现有叠加网中的资源。

Update(in overlay_id, in key, in records, out error)

更新 P2P 叠加网中的现有资源,如果给定键值的资源不存在,它将会创建新的资源记录。

更新操作仅仅允许现有资源的所有者(创建者)执行。如果存储的资源不和任何认证信任相

关联,该操作失败。

Remove (in overlay_id, in key, out errors)

从 P2P 叠加网中删除给定键值的资源。和更新操作类似,它仅允许现有资源的所有者或创

建者执行。如果认证不成功或者没有关联的安全信任,该操作失败。

如果任何人都允许删除或者更新其他人的位置记录,那么很容易阻塞或者干扰特定用户

的呼叫。因此必须要求资源记录的所有者有权利设置对记录的访问控制策略,特别是对于删

除和更新操作。为了支持以上 API,P2P 叠加网基于资源键值和资源所有者标识管理资源记

录。总体而言,叠加网存储资源记录和相关的控制信息记录,包括资源的键值,所有者标识,

和所有者设置的访问控制策略等。

7.2.2. SIP 实体操作

P2P 叠加网和 SIP 层的分离允许 P2PSIP 网络由多个 P2P 叠加网组成,其中 P2P Proxy

可以把 SIP 信令消息从一个叠加网路由到其他的叠加网。单独的 P2P 叠加网可能对应单个

SIP 域,其中所有的 P2PSIP 实体都来自同一个 SIP 域;也可能在一个 P2P 叠加网中 P2PSIP

实体来自多个 SIP 域。
当 P2P UA 和同一个 P2P 叠加网中的另一个 P2P UA 建立呼叫的时候,

通过查询 P2P 叠加网,Invite 消息直接送到另一个 P2P UA 实体。如果 P2P UA 试图和另外

P2P 叠加网中的 P2P UA 建立呼叫,本地叠加网中的 P2P Proxy 会把 Invite 消息转发到远端

域中的 P2P Proxy。

SIP 可以采用各种形式使用 P2P 业务功能,分别对应不同的场景。SIP 中主要有三个逻

辑实体用户代理 UA,代理服务器 Proxy,和注册服务器 Registrar。每个 SIP 实体都有可能

引入 P2P 叠加网,并成为 P2P 叠加网的一部分。对应的 SIP 实体我们称为 P2P UA,P2P Proxy


和 P2P Registrar。不同的 P2P 和 CS SIP 实体的组合可以在 SIP 域中产生更多的网络单元。

7.2.3. P2P UA 行为

P2P UA 使用 P2P 业务功能在 P2P 叠加网中存储用户位置信息或者查询目标 UA 的位置

信息。对用户注册而言,P2P UA 创建用户位置记录,然后通过调用 P2P 叠加网 API 功能,

add 或者 update,请求本地的 P2P 叠加网把用户位置记录放入 P2P 叠加网。基于用户位置记

录中的生命周期,P2P UA 周期性更新用户位置记录。P2P UA 所要求的配置信息是一个或多

个相关联的 SIP URI,以及在 P2P 叠加网中标识 P2P UA 自己的标识符。

在呼叫过程中,P2P UA 采用如下次序获取资源记录:

-关联被叫的目标 UA

-本域中的本地代理服务器 Proxy

位置记录可以通过基于信任的安全数字签名验证,信任书来自认证服务器。如果俩个查

询都失败了,P2P UA 可以尝试 DNS 查询本域中的本地 Proxy 服务器。

一旦找到下一跳,并且 Invite 消息到达目标结点,P2P UA 的行为和传统 SIP 中 UA 的

行为完全一致。对入呼叫,P2P UA 行为和传统 SIP 中 UA 完全一致。

7.2.4. P2P Proxy 行为

P2P Proxy 在两个 P2P 叠加网之间扮演网关角色。因此,P2P Proxy 可能属于多个 P2P

叠加网。对同一个域而言,可能有多个 P2P Proxy,P2P Proxy 使用 add 来放置位置记录。P2P

Proxy 负责在 P2P 叠加网中保持位置记录的更新,如果旧记录即将到期,P2P Proxy 会增加

新的记录。P2P SIP 所需要的配置信息包括相关的域名和域中的标识符。

当接受到 Invite 消息时候,P2P Proxy 判断被叫 URI 是否属于它所支持的域还是远端域。

前一种情况下,P2P Proxy 必须在相关叠加网中查询用户位置记录然后转发 Invite 消息到被

叫用户。如果发现一个或者多个被叫用户的位置信息,P2P Proxy 行为和传统 SIP 中 Proxy

行为相同。如果 P2P 叠加网中的查询失败,并且它知道本域中的 SIP 定位服务器,P2P Proxy

可以联系 SIP 定位服务器获取被叫位置信息。

如果被叫 URI 属于远端域, P2P Proxy 必须通过 DNS,定位 URI 关联的远端 Proxy,

其行为和传统 SIP 中 Proxy 一致


该体系架构允许在 P2P Proxy 之间建立转接 P2P 叠加网,它用来定位远端 P2P Proxy。

为了达到目标,必须在 P2P Proxy 中配置转接网的叠加标识符。在该场景中,P2P Proxy 会

在 DNS 查询之前,在叠加网中查询远端 Proxy。

7.2.5. P2P registrar 行为

当 P2P 叠加网用来存储传统 SIP UA 的位置信息时,Registrar 加人到 P2P 叠加网并且为

传统 SIPUA 服务,因此称为 P2P registrar。如果配置了 P2P Registrar,它的功能是作为 P2P

叠加网的前端。当 SIP 注册消息到达的时候,P2P Registrar 产生用户位置记录并且请求 P2P

叠加网把位置记录放在叠加网中。

8. P2P SIP NAT 穿越问题

8.1. 网络地址转换

由于 NAT 的存在,使得对等体之间不能进行直接的通信。在实际的网络当中,很多的

对等体都是在 NAT 之后使用私有地址。在 P2PSIP 的模型中,对等体允许分布在不同的地址

空间中,这就意味着对等体之间的通信要能够穿越 NAT,并且对等体要能够提供分布式传

送功能,使 SIP 消息能够在叠加网的任何对等体之间进行传递。

目前关于 P2PSIP 对等协议的 NAT 穿越方法有两种。


一种方法是将网络节点分成两个组:

具有公网地址的节点为一个组,不具有公网地址的节点为另外一组。然后网络将具有公网地

址的对等体挑选出来作为“对等体节点”,剩下的所有对等体则成为“客户节点”。由于对等

体节点都具有公网地址,他们之间的通信不会受到 NAT 的影响。网络将每一个客户节点与

对等体节点以客户/服务器模式进行关联。一旦关联建立成功,客户节点 X 就可以将要发送

给 Y 的消息首先通过 X 关联的对等体节点 X'转发给 Y 的关联对等体对等体 Y',然后再由

Y'转发给 Y。在客户节点和对等体对等体之间的连接是由客户对等体发起的,后续的消息都

能够很容易的穿越中间的 NAT。通过这种方法,两个节点之间的跳数最多只有 3 跳。

第二种方法就是将所有的对等体视为平等的关系,并且在他们之间建立部分网络连接。

从一个对等体发往另一个对等体的消息沿着连接进行路由,最后到达目的地。为了进行高效

的路由,部分网络连接连接采用结构化的组织方式。如果连接结构是基于通用的分布式数据

库算法,那么在一个拥有 N 个对等体的叠加网中,两个对等体之间的最大跳数就是 LogN。


在网络中对等体数目比较多的时候,第一个方法比第二种方法更加高效。然而,第一种

方法是假设大多数的对等体都具有公网地址,并能够参与到对等体对等体中,但是在一些应

用场景中,这种假设往往是不成立的。特别地,如果所有对等体都在 NAT 之后,第一种方

法就失效了。

第二种方法虽然只适合于小规模的网络,但是可以在很多应用场合使用,特别是在第一

种方法失效的场景下。

以上的讨论都是针对对等体协议连接的 NAT 穿越。对于客户协议连接而言,取决于

客户的角色定位。

除了对等体协议消息和客户协议消息之外,P2PSIP 叠加网必须还要能为 SIP 消息提供

NAT 穿越的解决办法。否则在 NAT 之后的对等体就不能将 SIP INVEITE 消息送到另一个

NAT 之后的对等体。可能的解决办法是通过对等体和客户协议连接来传递 SIP 消息,这可

以通过封装 SIP 消息到对等体和客户协议消息中,或者在对等体协议连接上将 SIP 和对等体

协议进行复用而实现。

9. 安全问题

对等网络需要在提供合适的信任和减少中心认证方面做出平衡。 它的目标不是去解决

广义分布信任问题,而是关注终端识别和会话建立的合适方式。

9.1. 启动

成为一个客户结点,需要使用动态配置的对等体结点信息。由于对等体结点的信息是从

不受信任的源或者不安全的途径获得的,因此在和相关结点联系的时候必须谨慎。

此外,将信任扩展到新发现的设备的时候同样必须保持谨慎,即使对等体结点的信息源

是可信任的。因为在收集对等体信息和客户用来启动期间,结点的信任关系可能发生改变。

9.2. 节点认证

当连接到网络的时候,结点要认证它选择的对等体是可信任的,并且它们之间可以直接

通信。同样,对等体要了解客户是网络中合法的参与者,并被授权执行查找,记录更新等操

作。
9.3. 对等体消息传送

在对等体网络中,必须在结点之间传递认证消息。对非 P2P 参与者而言,如果要保证

私密性,必须采用加密。采用加密套件进行密匙交换不仅可以进行双方的验证,同时还可以

保证数据传送的安全。

9.4. 注册

当 SIP 实体在 P2P 叠加网中放置位置记录注册 URI 的时候,记录中的信息控制谁可以

和它联系。对该信息的修改要进行认证,以保证通信没有被重定向,或者中间人攻击。

9.5. 会话端点的发现

对等体应该通过信任机制验证其他对等体在分布式数据库中通告的 SIP URI 地址,端

口,和在线信息。Get 命令的内容可能泄漏请求者的标识或者位置信息。为了保持私密性,

当代表其他对等体请求的时候,对等体结点可以删除标识信息。对源请求速率的限制是有必

要的,可以防止对 P2P 网络的滥用或者过载。

9.6. 客户结点的行为

客户结点并不直接和分布式数据库相连,但是他们可以从分布式数据库读取和放置数

据。因此,他们获得了许多叠加网中的好处,但是并不贡献资源来维护。维护分布式数据库

需要带宽,计算和存储资源。虽然网络鼓励结点成为对等体结点,但是实际中还没有办法强

制他们扮演对等体结点角色。

任何结点都可以在叠加网中放置无用或者分散的信息。除非使用用户的信任作为检查,

否则其他用户的合法数据有可能被删除,而这会导致更多的安全问题。如果两个设备都声称

要对同一个记录添加信息,则两个记录都要维持,并通过他们的信任来区分,因为执行分布

式数据库操作的对等体通常不能区分谁是对的。

由于对哈希表的更新是计算上费力的事情,因此对等体结点要进行验证保证修改记录的

合法性。通过持续发送对等体消息有可能对部分哈希表进行拒绝服务攻击。

9.7. 对等体结点的行为

对等体结点可以直接改变叠加网的拓扑。它可以接受网络中的只读和修改操作,也可以

插入,修改,丢弃或者选择性发送它收到的消息。它有责任维持发送给它的数据的完整性,
并且在加人或者离开网络时候,把部分哈希表发送给其他对等体。因此,对等体是强有力的

结点,对整个叠加网有很大的影响。某个对等体可能(或部分对等体合谋)会毁坏整个网络

的运行。

因此,有必要采用强的认证和授权保证加人分布式数据库的对等体是合法的。另外,对

于可能出问题的对等体所关联的数据维持备份也是很重要的。原始认证,完整性和更新检查

至少可以保证存储在分布式数据库中的表项没有被改变。

10. 其他

10.1. 如何在提供相同服务的多个对等体之间选择

如果在 P2PSIP 网络中,有两个或多个对等体提供相同服务,对等体或者客户怎样进行

选择是需要考虑的问题。比如如下两种情况:

1. 当两个或多个对等体愿意作为 STUN 服务中继时,怎样选择一个就网络路径而

言更近的对等体,因此对呼叫也更有利?

2. 当两个或多个对等体愿意作为 PSTN 网关时,怎样选择合适的网关,就网络路

径效率,所提供的话音质量,或者成本更便宜而言更优?

目前的考虑,P2PSIP 至少返回对等体列表及相关服务。

10.2. 中间对等体对消息的可见性

在叠加网中传送 SIP 消息的时候,消息头和消息体是否对中间对等体可见?如果可见的

话,存在哪些安全隐患?

10.3. 在同一用户代理中同时采用传统 SIP 和 P2PSIP

如果一个用户代理可以同时工作在 P2PSIP 和传统的 SIP 网络中,是否可以采用同一地

址记录 AOR?即一方面用户注册到传统 SIP 网络中,同时又在 P2PSIP 中插入相同的资源记

录,因此 P2PSIP 和传统 SIP 中的用户都可以直接找到该用户而不用通过任何网关。

10.4. 客户,对等体和服务

1. 是否所有的对等体提供路由,存储和其他相关服务?还是某些对等体提供特定

服务?
2. 所有对等体必须提供什么服务?如果存在的话。

3. 到底是否需要 P2PSIP 客户,或者 SIP UA 完全可以胜任相关需求?

10.5. 域和叠加网的关系

1.在单个叠加网中,是否存在多个域的名字?

2.单个域中的名字是否可以存在多个叠加网中?如果可以,怎样从传统的 SIP 网络路

由到正确的叠加网?

3.地址记录(AOR)对应的域是否可以存在多个叠加网中?

4.是否要指定缺省的叠加网?

10.6. 协议层次和对 SIP 扩展的考虑

采用 SIP 消息实现分布式 P2P 叠加网的维护,以及存储,获取和路由消息,需要定义

新的 SIP 头字段,但是不用增加新的 SIP 方法。它的好处是:传统的 SIP 中的机制,如 NAT

穿越,包括 STUN,TURN 和 ICE 都可以重用。因此大多数的在 NAT 后的对等体都可以加

入叠加网。对于由于某些原因不能加入叠加网的节点,可以采用传统的 SIP,通过对等体代

理的方式连接到网络中,因此 P2PSIP 客户协议是不需要的。

采用独立的 P2P 叠加网,而不采用 SIP 实现,主要考虑以下因素:

1.SIP 是用来建立会话的协议,而对等体节点之间通信用来维护叠加网,并不是交互

式的会话。

2.SIP 扩展原则中禁止将 SIP 作为远程过程调用(RPC)使用。如果 P2P 协议建立在

SIP 之上,那么很可能把 SIP 作为 RPC 使用。SIP 并不是通用的传送协议,如果把 P2P 协议

放入 SIP 消息体中实现,而保持 SIP 头不变的话;那么通过 SIP 传送的大量 P2P 数据实际上

和 SIP 操作无关,因此不符合 SIP 的扩展原则。

3. SIP 并不是查询协议,它依赖 DNS 定位 SIP 服务器。如果把查询的功能引入到 SIP

中,违反 SIP 的设计原则。

4.SIP 中存在头字段,比如 Call ID,Contact 对于对等体协议是不必要的,因此引入新

的开销。
现实的考虑取决于对功能,简单性,通用性和效率的折中。

11. 参考文献

[1] D.Bryan, P.Matthews, E.Shim, D.Willis, “Concepts and Terminology for Peer to

Peer SIP ”, Draft-ietf-p2psip-concepts-00.

[2] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Petersen,

J., Sparks, R., Handley, M., and E. Schooler, "SIP: Session Initiation Protocol",

RFC 3261, June 2002.

[3] Singh, K. and H. Schulzrinne, "Peer-to-peer Internet Telephony using SIP",

Proceedings of the 2005 Network and Operating Systems Support for Digital Audio

and Video Workshop (NOSSDAV) , June 2005.

[4] Johnston, A., "SIP, P2P, and Internet Communications",

draft-johnston-sipping-p2p-ipcom-01 (work in progress), March 2005.

[5] Bryan, D. and C. Jennings, "A P2P Approach to SIP Registration

[6] E. Shim , S. Narayanan, G. Daley “ An Architecture for Peer-to-Peer Session

Initiation Protocol (P2P SIP)” draft-shim-sipping-p2p-arch-00 Feb 2006

[7] Matthews, P. and B. Poustchi, "Industrial-Strength P2P SIP",

draft-matthews-sipping-p2p-industrial-strength-00 (work in progress), February

2005.

[8] Rosenberg, J., Weinberger, J., Huitema, C., and R. Mahy, "STUN - Simple Traversal

of User Datagram Protocol (UDP) Through Network Address Translators (NATs)", RFC 3489,

March 2003.

You might also like