Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1757750
  • 博文数量: 413
  • 博客积分: 8399
  • 博客等级: 中将
  • 技术积分: 4325
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-09 10:44
文章分类

全部博文(413)

文章存档

2015年(1)

2014年(18)

2013年(39)

2012年(163)

2011年(192)

分类: LINUX

2012-01-22 02:37:33

第28章——IP上的话音和视频传输(RTP,RSVP和 QoS)

1. 数字化和编码技术
在话音或视频能够通过分组网络发送之前,必须使用一些硬件设备将模拟信号转换为数字形式(即数字化),这些硬件设备称为编码/解码器(coder/decoder,简称 codec) 。最常见的编码器是波形编码器(waveform coder),它以一定的时间间隔测量输入信号的振幅,并把每个采样值转换成数字值。在接收端,解码器接受整数序列输入,重新建立与数字值相匹配的连续模拟信号。

目前存在多种数字编码标准,主要是在再现品质的高低和数字表现的大小之间取得不同的平衡。

常规的电话系统使用脉码调制(Pulse Code Modulation,简称PCM)标准,指明每125微秒即每秒 8000次)采样一个8位值。结果得到的数字电话数据的速率是 64kbps。PCM 编码会产生惊人的输出量,存储128秒的音频剪辑需要1MB内存。

有三种方法可以降低数字编码产生的数据量:每秒采集较少的样值、每个样值使用较少的位编码,或者使用数字压缩方案来减小最后的输出。

2. 因为IP互联网不是等时系统,所以在发送数字化的实时数据时需要额外的协议支持。除了一些用来检测重复或对分组重排序的基本序号信息之外,每个分组还必须携带一个独立的时间戳,用于告诉接收方分组中的数据应该在何时播放。

3. 抖动和回放延迟
IP数据报可以重复、延迟或无序到达。无规律的延迟称为抖动(jitter)。

如果网络中有抖动,接收方应该如何准确地重建信号呢?接收方必须实现一个回放缓冲区(playback buffer),如图所示:
当会话开始时,接收方先要推迟回放,将传入的数据存放在缓冲区中。当缓冲区中的数据达到预先约定的称为回放点(playback point)的阈值时,输出开始。

在图中标记为K的回放点表示要播放的数据有K个时间单位长。这样,当接收方已经累积了K个时间单位长度的数据时,回放开始。

在回放的同时,数据报连续不断地到达。如果没有抖动,则新数据抵达的速率和提取以及播放旧数据的速率完全一样,意味着缓冲区总是准确地包含K 个时间单位的未播放数据。如果有一个数据报经历了短时间的延迟,回放也不受影响。在数据提取时,缓冲区的大小稳定地递减,回放可以保持K个时间单位不被打断。当延迟的数据报抵达时,重新填满缓冲区。

4. 实时运输协议
在IP互联网上传输数字音频或视频信号所用的协议称为实时运输协议(Real-Time Transport Protocol,简称RTP)。有趣的是,RTP不包含确保及时交付的机制,而必须由底层系统来保证。RTP提供了两个关键特性:每个分组中有一个序号,以允许接收方检测无序交付或丢失,另外还有一个时间戳,以允许接收方控制回放

因为设计RTP是为了让它传送包括音频和视频等广泛的实时数据,所以RTP不强制统一的语义解释。事实上,每个分组以一个固定的首部开头,首部中的字段指明了如何解释其余的首部字段以及如何解释有效载荷。下图所示为RTP固定首部的格式:

1)每个分组的开始是版(VER字段,其中包含的是 2 位 RTP 版本号,当前的版本号为2。
2)在16位序号(SEQUENCE NUM)字段中包含了分组的序号。某个会话的第一个序号是随机选择的。
3)一些应用程序定义了可选的首部扩展,放在固定首部和有效载荷之间。如果应用类型允许扩展,则使用X位来指明分组中是否存在扩展。
4)对首部中的大多数其他字段的解释依赖于指明了有效载荷类型的7位PTYPE字段
5)P位指明在有效载荷后是否需要补零填充。当要求把数据分配在固定大小的块中,以便进行加密时,会用到P位。
6)对M(代表marker标记)位的解释取决于应用程序,应用程序如果需要标记数据流中的点(例如,在发送视频时每帧的开头),就会使用M位
7)有效载荷的类型也会影响对时间戳(TIMESTAMP)字段的解释。时间戳是一个32 位的值,它给出了数字数据的第一个八位组的采样时间,会话的初始时间戳是随机选择的。
8)RTP的关键之处在于它对转换(translation)(即在中间站改变数据流的编码)或混合(mixing)
(即从多个源站接收数据流,把它们合并成一个数据流,然后发送)的支持。
RTP首部中的字段对发送方进行了标识,并指示是否发生过混合。同步源标识(SYNCHRONIZATION SOURCE IDENTIFIER)字段指明了数据流的源。
9)如果经过混合器合并了多个数据流,混合器就变成新的数据流的同步源。但是,有关初始源的信息并没有丢失,这是因为混合器使用了变长的参与源ID(CONTRIBUTING SOURCE IP)字段,提供被混合的数据流的同步源ID。
10)4位的CC字段给出参与源的数目,最多可以列15 个源。

5. RTP封装
RTP运行在UDP之上,这意味着每个RTP 报文被封装到一个UDP 数据报中。使用UDP 的主要优点在于并发性,也就是说,在一台计算机上可以有多个使用RTP的应用程序,并且不会互相干扰。

6. RTP控制协议
作为RTP的伴生协议及其不可分割的一部分,RTP控制协议(RTP Control Protocol,简称RTCP)提供了所需的控制功能。RTCP允许发送方和接收方之间相互传输一系列报告,其内容是有关正在传送的数据以及网络性能的额外信息。RTCP报文封装在UDP中进行传输,并且发送时使用的端口号比它们所属的RTP流的端口号大1。

7. RTCP 操作
发送方和接收方之间交换有关会话信息的五种基本报文类型:
1)发送方若想关闭一条数据流,就传输一个(bye)结束报文
2)应用程序特定报文(application specific)定义了一种的报文类型。例如,应用程序为了伴随视频流发送结尾字幕信息,可以选择定义一种新的RTCP报文。
3)接收方会定期传输接收方报告(receiver report)报文,向源站汇报它的接收状态。
4)发送方会定期传输发送方报告(sender report)报文,提供一个绝对时间戳。
5)发送方除了要周期性地传输发送方报告报文以外,还要传输(source description)源描述报文,以提供有关拥有或控制源的用户的常规信息。

8. IP电话和信令
实时传输有一个方面的用途特别重要:将IP作为电话服务的底层技术。这种思想称为IP电话(IP telephony)或IP话音传输(voice over IP),已被许多电话公司实现。

在电话行业中用术语信令(signaling)来表示建立电话通话的过程。特别地,在传统的公共交换电话网(Public Switched Telephone Network,简称PSTN)中使用的信令机制是7号信令(Signaling System 7,简称SS7)。SS7 在发送任何音频之前先要执行呼叫例程。在拨出电话号码之后,SS7 在网络上形成一个电话回路,使被叫电话振铃,当电话被接听时连通该回路。SS7 还要处理一些诸如呼叫转移和错误状况(如被叫电话忙)等细节问题。

在可以使用IP进行电话通话之前,必须能够使用信令功能。此外,为了让电话公司采用,IP电话必须和现有的电话标准兼容,必须让IP 电话系统和传统的电话系统在所有级别上都能进行互操作。因此,除了必须在IP使用的话音编码和标准PCM编码之间做到互相转换之外,还必须做到在IP使用的信令和SS7之间相互转换。结果是这两种信令机制将具有同样的功能性。

取得这种互操作性的常规方法是在IP电话系统和传统电话系统之间使用一个网关(gateway)。

已经有两个工作小组提出了IP电话的标准。ITU定义了一个协议族,称为H.323,而IETF提议的信令协议称为会话发起协议(Session Initiation Protocol,简称SIP)。

9.  H.323协议
ITU最初创建H.323 是为了在局域网技术上实现话音的传输。现在这个标准已经扩展到允许在IP互联网上传输话音,并且电话公司很有可能会采用该标准。H.323 不是单独的一个协议,而是指明了多个协议应当如何组合起来,形成一个实用的IP电话系统。
这个协议族里的协议涵盖了IP 电话的各个方面,包括电话注册信令实时数据编码传送(音频和视频)以及控制
下图说明了组成H.323的协议之间的关系。如图所示,整个协议族最终依赖于IP上运行的UDP和TCP
10. SIP协议
IETF 已建议了另一种可以代替H.323 的协议,称为会话发起协议(SIP),它只涉及信令,不推荐具体的编码/解码器,也不要求对实时传输使用RTP。因此,SIP没有提供H.323 的所有功能。

11. 服务质量(QoS)之争
服务质量(Quality of Service,简称QoS)这个术语指的是网络系统对丢失、延迟、吞吐量和抖动等方面在统计性能上的保证

IETF 在研究IntServ 时,开发出两个能够提供QoS的协议:资源预留协议(Resource ReSerVation Protocol,简称RSVP)和公共开放策略服务(CommonOpen Policy Services,简称COPS)协议。这两个协议都要求改变基本的底层结构,一对端点之间的所有路由器必须为每个流量针对预留资源(例如带宽)问题达成一致意见。


阅读(1800) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~