1. 概述
对于多媒体信息而言:其与以前不包含声音图像的信息的特点有:1. 信息量巨大;2. 传输多媒体数据,对时延和时延抖动有较高要求;
在模拟信号的多媒体信号处理的时候,分组发送的时间间隔都是恒定的,这样的分组为等时的;这种等时分组进入互联网速率恒定,但是经过互联网传送到接收端,就变成了非等时的;
此处处理,可以在接收端设置适当大小缓存,当分组数达到一定数量,再以恒定速率按顺序将这些分组读出并且进行还原播放;
这样增加了一个播放时延,但是很大程度上消除了时延的抖动;再互联网上,运输层对这种数据传送,采用 UDP,对于实时数据,宁可丢失少量分组,也不要太晚到达的分组;丢失容忍时实时数据传输的一个重要特点;
目前主要提供三种类型:流式存储音频/视频、流式实况音频/视频、交互式音频\视频;
2. 流式存储音频/视频
传统浏览器,从服务器下载已存储的音频/视频文件如上图;需要等完全收下文件后,才可以播放;这样历时太长,下载者不愿意等待;
2.1. 具有元文件的万维网服务器
第一种:在万维网的服务器中,增加元文件,描述文件的重要信息;采用元文件下载音频/视频文件:
- 浏览器,点击 url 获取数据元文件,而非真是文件;
- 服务器返回元文件,并且在响应报文指出文件类型首部;
- 客户端得到响应,分析,调用相关媒体播放器,提出元文件传给媒体播放器;
- 媒体播放器采用元文件 url 与服务器建立连接;并且且发送报文,下载;
- 服务器响应;客户端存储若干秒后开始以流形式边下载,边解压,边播放;
2.2. 媒体服务器
为了更好提供服务,最流行是分开两个服务器,一个是普通万维网服务器,另一个是媒体服务器;
2.3. 实时流式协议 RTSP
目前是 RTSP 2.0 版本,为了给流式过程增加更多功能而设计的协议;本身并不传送数据,仅仅使媒体播放器能控制多媒体流的传送,类似文件传送协议 FTP 有一个控制信道;因此 RTSP 又称为带外协议;
RTSP 协议以客户-服务器方式工作,应用层的多媒体播放控制协议;用来使用户在播放从互联网下载的实时数据时能够进行控制,因此又称为:互联网录像机遥控协议;
- 浏览器采用 HTTP GET 请求音/视频文件;
- 万维网服务器,返回元文件响应;
- 浏览器接收到的元文件传送给媒体播放器;
- 媒体播放器 RTSP 发送 SETUP 报文和媒体服务器的 RTSP 服务器建立连接;
- 媒体服务器 RTSP 服务器发送响应 RESPONSE 报文;
- 媒体播放器 RTSP 客户发送 PLAY 报文下载音/视频文件;
- 媒体服务器 RTSP 服务器发送 RESPONSE 报文;
- 用户不想看了,发送 TEARDOWN 断开连接报文;
- RTSP 发送 RESPONSE 响应报文断开;
3. 交互式音频/视频
3.1. IP 电话概述
3.1.1. 狭义和广义的 IP 电话
- 狭义的 IP 电话就是指在:IP网络上打电话;
- 广义的 IP 电话,不仅是电话通信,而且还可以是 IP 网络上进行交互式多媒体实时通信(包括话音、视像等),甚至于包括即时通信;
- 对于最开始的 IP 电话,在 20 世纪 70 年代 ARPANET 刚开始,美国就研究如何在计算机网络上传送电话信息,即所谓的分组话音通信;但是很长时间内,发展很慢,原因有:
- 缺少廉价的高质量、低速率的话音信号编解码软件和相应芯片;
- 计算机网络的传输速率和路由器处理速率不够快,因而导致传输延迟大;
- 未保证实时通信服务质量 QoS 的网络协议;
- 计算机网络规模较小,无法产生经济效益;
3.1.2. IP 电话网关
在 20 世纪 90 年代中期,上述问题,得到好的解决,即退出了 IP 电话网管;是公用电话网与 IP 网络的接口设备; IP 电话网关的作用就是:1. 电话呼叫阶段和呼叫释放阶段进行电话信令的转换;2. 在通话期间进行话音编码的转换;自从有了该网关,即可实现 PC 用户到固定电话用户打 IP 电话,或者相反;
3.1.3. IP 电话的通话质量
IP 电话的通话质量与电路交换电话网的通话质量有很大差别;在电路交换电话网中,任何两端通话质量有保证,但 IP 电话不然,其通话质量由:通话双方端到端的时延和时延抖动 以及 话音分组的丢失率决定的;这两个因素不确定,取决于当前网络上的通信量;
经过证明,在电话交谈中,端到端的时延不应超过 250 ms,否则交谈者会感觉到不自然;陆地公用电话一般只有 50 - 70 ms,但是经过同步卫星的,超过 250 ms;IP 电话的时延,有时也会超过,因此 IP 电话必须努力减少端到端的时延;
其中 IP 端到端的时延由以下因素决定:
1. 话音信号进行模数转换要产生时延;
2. 已经数字化的话音比特流积累到一定数量才可以装配成一个话音分组;
3. 话音分组的发送需要时间,以及经过路由器的存储转发时延,在通信线路上的传播时延;
4. 到达接收端在缓存中暂存所引起的时延;
5. 话音分组还原成模拟话音信号的转换时延;
6. 终端设备的硬件和操作系统产生的接入时延;
显然,话音编码会带来很大时延影响,如上述 1,2,5 项;因此在保证通信质量前提,话音信号的数码率应该尽可能低些;目前适合的国际标准:G.729 以及 G.723.1;
标准 | 比特率(kbit/s) | 帧大小(ms) | 处理时延(ms) | 帧长(字节) | 数字信号处理 MIPS |
---|---|---|---|---|---|
G.729 | 8 | 10 | 10 | 10 | 20 |
G.723.1 | 5.3/6.3 | 30 | 30 | 20/24 | 16 |
同时,在网路发生拥塞的时候,造成话音分组的丢失,需要采用一定的策略(丢失掩蔽算法)对丢失的话音分组进行处理;近些年,IP 电话质量很高了,甚至优于固定通话;有一些厂家甚至采用 P2P 技术来提供快速路由选择机制来降低时延等;
3.2. IP 电话所需要的几种应用协议
在 IP 电话的通信中,至少需要两种应用协议;一种是信令协议,即如何找到互联网上被叫用户;另一种是话音分组的传送协议;
3.3. 实时运输协议 RTP
实时运输协议 RTP:Real-time Transport Protocol;是 IETF 的 AVT 工作组开发的协议;为实时应用提供端到端的运输,但不提供任何服务质量的保证;需要发送的多媒体数据块经过压缩编码处理后,先送给 RTP 封装成 RTP 分组;再装入运输层的 UDP 用户数据包,向下递交给 IP 层;RTP 是一个协议框架,只包含实时应用的一些共同功能,RTP 自己不对多媒体数据块做任何处理 ,只是向应用层提供一些附加的信息,让应用层知道应该如何进行处理;
RTP 协议从应用开发者角度看,是应用层的一部分,在应用层的发送端,开发者编写 RTP 封装分组的程序代码,然后将 RTP 分组交给 UDP 套接字接口;在接收端,RTP 分组通过 UDP 套接字接口进入应用层后,再将数据提取出来;RTP 又可以认为是一个运输层协议,因为 RTP 封装了多媒体应用的数据块,并且由于多媒体应用程序提供服务,可以将 RTP 看成 UDP 上的一个运输层子层的协议;
RTP 分组只包含 RTP 数据,而控制是由另一个配套使用的 RTCP 协议提供的;RTP 在端口号 1025 - 65535 之间选择一个未使用的偶数号 UDP 端口,而在同一次回话中 RTCP 则使用下一个奇数 UDP 的端口号;5004,5005 分别是 RTP 和 RTCP 的默认端口号;
3.4. 实时运输控制协议 RTCP
主要功能是:服务质量的监视与反馈、媒体间的同步(如某一个 RTP 发送的声音和图像的配合),以及多播组中成员的标志;RTCP 分组也可以用 UDP 来进行传送,但 RTCP 并不对音/视频分组进行封装;因为 RTCP 分组很短,因此可以多个封装在一个 UDP 用户数据报;RTCP 分组周期性地在网上传送,带有发送端和接收端对服务质量的统计信息报告;
RTCP 的五种分组类型:
类型 | 缩写表示 | 意义 |
---|---|---|
200 | SR | 发送端报告 |
201 | RR | 接收端报告 |
202 | SDES | 源点描述 |
203 | BYE | 结束 |
204 | APP | 特定应用 |
- 发送端报告分组 SR:用来发送周期性地向所有接收端用多播方式进行报告;发送端每发送一个 RTP 流,就需要发送一个 SR;其主要内容有:该 RTP 流的同步源标识符 SRRC;该 RTP 流中最新产生的 RTP 分组的时间戳和绝对时钟时间;该 RTP 流包含的分组数;该 RTP 流包含的字节数;
- 接收端报告分组 RR:用来让接收端周期性向所有的点用多播方式进行报告;接收端每收到一个 RTP 流就会产生一个 RR;RR 分组内容:收到的 RTP 的 SSRC,该 RTP 流的分组丢失率,在 RTP 流中的最后一个 RTP 分组的序号,分组到达时间间隔的抖动等;
- 源点描述分组 SDES:给出会话中参加者的描述,包含参加者的规范名;规范名是参加者的电子邮件地址的字符串;
- 结束分组 BYE:表示关闭一个数据流;
- 特定应用分组 APP:是应用程序能够定义新的分组类型;
3.5. H.323 协议组
电话信令标准有两套,一套是 ITU-T 定义的 H.323 协议,另一套是 IETE 提出的会话发起协议 SIP;
3.5.1. H.323 构件
H.323 包括系统和构件的描述、呼叫模型的描述、呼叫信令过程、控制报文、复用、话音解码器、视像编解码器,以及数据协议等;标准指明了四个构件:H.323 终端、网管、网闸、多点控制单元 MCU;其中网关、网闸、MCU 逻辑分离,但是可以实现在一个物理设备中,这叫做 H.323 端点;
1. H.323 终端:可以是 PC ,或者单个设备;
2. 网关:连接到两个不同的网络,使得 H.323 网络和非 H.323 网络可以进行通信;
3. 网闸:H.323 网络大脑,所有的呼叫需要通过其,提供地址转换、授权、带宽管理、计费功能等;还可以帮助 H.323 终端找到距离公用电话网上被叫用户的最近一个网关;
4. 多点控制单元 MCU:支持三个或者更多的 H.323 终端的音视频会议;管理会议资源,确定使用的编解码器;
3.5.2. H.323 协议
- 音视频编解码器:至少支持 G.711、建议支持 G.722、G.723.1、G.728、G.729;
- 视频编解码器:必须支持 H.261 标准;
- H.255.0 登记信令:即 登记、接纳、状态 RAS;H.323 终端和网闸使用 RAS 来完成登记、接纳控制和带宽转换等功能;
- H.255.0 呼叫信令:用来建立两个 H.233 端点之间连接;
- H.245 控制信令:用来交换端到端的控制保温,以便管理 H.323 端点的运行;
- T.120 数据传送协议:这是呼叫相关联的数据交换协议;
- 实时运输协议 RTP 以及 实时运输控制协议 RTCP;
3.6. 会话发起协议 SIP
虽然 H.323 系列被大部分生产 IP 电话的厂商采用,但是过于复杂,不便于发展基于 IP 的新业务,因此 IETF 又指定了一套较为简单且实用的标准,即 会话发起协议 SIP;使用 KISS (Keep It Simple and Stupid) 原则,即保持简单、傻瓜;
SIP 协议出发点以互联网为基础,而把 IP 电话视为互联网上的新应用;因此 SIP 协议只涉及 IP 电话需要的信令和有关服务质量的问题,未提供 H.323 那么多的功能;不强制使用特定编解码器、也不强制使用 RTP 协议;但,实际上大家还是选择 RTP 和 RTCP 作为配合使用的协议;
SIP 使用文本方式的客户-服务器协议;SIP 系统只有两个构件,即用户代理和网络服务器;用户代理包括:用户代理客户 UAC,用户代理服务器 UAS;前者用来发起呼叫,后者用来接受呼叫;网络服务器分为 代理服务器和重定向服务器,其中代理服务器接受主叫用户的呼叫请求;重定向服务器不接受呼叫,通过响应告诉用户下一跳代理服务器的地址,由客户按照此地址向下一跳代理服务器重新发起呼叫请求;
SIP 地址十分灵活,可以是电话号,也可以是电子邮件,ip 地址或者其他类型地址,但是一定要使用 SIP 地址格式;例如: 电话号:sip:zhangsan@855-555555;IPv4 地址:sip:zhangsan@201.12.34.45;电子邮件:sip:zhangsan@164.com;
和 HTTP 类似,SIP 是基于报文的协议;SIP 使用了 HTTP 的许多首部、编码规则、差错码以及一些鉴别机制;比 H.323 有更好的可扩缩性;
3.6.1. SIP 会话阶段
如上图,SIP 会话有三个阶段:建立会话、通信、终止会话;而中间通信则使用例如 RTP 这样的实时传送话音分组的协议;
3.6.2. SIP 跟踪用户机制
在 SIP 中,有一种跟踪用户的机制,可以找出被叫方使用 PC 的 IP 地址(例如对方采用 DHCP,未使用固定 IP 地址);为了实现跟踪,采用 SIP 登记器;每一个 SIP 用户都有一个相关联的 SIP 登记器,在任何时候发起 SIP 应用,应该给 SIP 登记器发送一个 SIP 注册报文;向登记器报告现在使用的 IP 地址;(SIP 登记器和代理服务器通常运行在一台主机);如果被叫没有在这个 SIP 登记器登记,那么 SIP 登记器发回重定向报文,指示 SIP 代理服务器向另一个 SIP 登记器重新进行 DNS 查询,知道找到位置;
同时,有一个配套协议:会话描述协议 SDP;为了让电话会议的参加者可以动态加入和退出;SDP 详细指明媒体编码、协议的端口号以及多播地址;
4. 改进 “尽最大努力交付” 的服务
4.1. 使互联网提供服务质量
服务质量 QoS 是服务性能的总效果,此效果决定了一个用户对服务的满意程度;服务质量可以用若干基本的性能指标来描述:包括可用性、差错率、响应时间、吞吐量、分组丢失率、连接建立时间、故障检测和改正时间等;服务提供者可向用户保证某一种登记的服务质量;
互联网的服务本身只可提供 “尽最大努力交付”的服务;而且为了使互联网可以提供一定服务质量,应该设法增加一些机制:即:分组的类别、管制、调度以及呼叫接纳等;
4.2. 调度和管制机制
4.2.1. 调度机制
这里的调度指的是排队的规则;如果不采用专门的调度规则,那么路由器默认队列则是:FIFO;当队列满,则丢弃;其最大缺点:不可以区分时间敏感分组和一般数据分组;且不公平,排在长分组的短分组需要等待很长时间;
因此,在 FIFO 上增加优先级;但是这又有一个问题,即高优先级如果一直有分组,那么低优先级,就无法得到服务;
因此 FQ,即:Fair Queuing 公平排队;对每个类别的分组流设置一个队列,然后轮流使每一个队列一次只能发送一个分组;对于空的队列跳过;但这样的话就无法区分优先级和不公平;长分组得到服务时间长;因此在此下,提出 WFQ:Weighted Fair Queuing 即:加权公平排队;
加权公平排队:分组到达之后,进行分类,送给对应队列;按照各类别优先级不同,分配时间不同;可以给队列增加权重 wi;所以得到的服务时间就是其 wi / w 全;
4.2.2. 管制机制
- 平均速率:在一定的时间间隔内通过的分组数;
- 峰值速率:限制数据流在非常短的时间间隔内的流量;
- 突发长度:网络限制非常短的时间间隔内连续注入到网络中的分组数;
对于网络中进入分组流按照三个指标进行管制,可以使用非常著名的漏桶管制器;其工作原理:
漏桶是一个抽象机制,在内部装入很多权标,但最多装入 b 个权标,只要漏桶中的权标数小于 b 个,新权标就以 r 的恒定速率加入,但如果装满,则新权标不在加入;其流入网络过程如下:分组进入网络前,先要在队列中等候漏桶的权标,只要有权标,就可以取走,准许一个分组从队列进入到网络;若漏桶无权标,就要等新权标进入;(准许进入,不等于已经进入);
假定在时间间隔 t 中,把漏桶的全部 b 个权标都取走,那么在这个时间间隔中又装入 rt 个新的权标;因此任何时间间隔 t 内准许进入网络分组数为 rt + b ;控制权标进入漏桶的速率 r 就可对分组进入网络的速率进行管制;
4.2.3. 漏桶机制与加权公平排队相结合
将漏桶机制和加权公平排队结合起来,可控制队列中最大时延;
WFQ 可以使分组得到有保证的数据率;那么当分组流过 WFQ 服务时,其一个分组经过最大的时延是: d_{\text{max}} = \frac{b_i \sum w_j}{R \times w_i};例如分组流 i :其漏桶油 bi 个权标;代表分组流 i 不需要等待即可拿走,其中最后一个分组所受到延迟最大,它等于传输这个 bi 个分组所需要的时间;即 bi 除以 传输速率;其中传输时间权重为权重占整个比重;R 为:整体速率;
4.3. 综合服务 IntServ 与资源预留协议 RSVP;
4.3.1. 对单个应用提供服务质量保证
- 资源预留:一个路由器需要知道给不断出现的会话已经预留了多少资源;
- 呼叫建立:一个需要服务器质量保证的会话,必须在源点到终点的路径上每一个路由器预留足够资源;
4.3.2. IntServ 定义的两种服务
- 有保证的服务:可保证一个分组在通过路由器时排队时延有一个严格的上限;
- 受控负载的服务:可以使应用程序得到比通常的“尽最大努力”更加可靠的服务;
4.3.3. IntServ 的四个组成部分
- 资源预留协议 RSVP,是 IntServ 的信令协议;
- 接纳控制:用来决定是否同意对某一资源的请求;
- 分类器:用来把进入路由器的分组进行分类,并且根据分类的结果把不同类别的分组放入特定的队列;
- 调度器:根据服务质量来决定分组的前后顺序;
会话必须要首先声明它所需的服务质量,以便使路由器可以有足够的资源来满足该会话的需求;资源预留协议 RSVP 在资源预留时采用多播树的方式;发送端发送 PATH 报文(即存储路径状态报文),给所有的接收端指明通信量的特性;每个中间路由都要转发 PATH 报文,而接收端则用 RESV 报文(资源预留请求报文)进行相应;路径每一个路由都可以对 RESV 报文进行接受或者拒绝;当请求被某个路由器拒绝时,链路带宽和缓存空间就被分配给这个分组流,相关的流状态信息就保存在路由器;(流:常被定义为:具有同样的源 IP 地址、源端口号、目的 IP 地址、目的端口号、协议标识符以及服务质量需求的一连串分组);
上图,H1 发送多播视频节目向 H2 ~ H5;主机旁数据率就是这些主机打算以这些速率接受;H1 先以多播方式向下游发送 PATH 报文;到达叶节点,返回 RESV 报文;路由器无法预留资源,返回差错报文;如果可以,则将下游传来的 RESV 报文合并成为新的 RESV 报文传递给上游;因此 REVP 协议是面向终点的;
注意的是:R4 收到两个 3 Mbit/s 的预留请求;不会要求 6 Mbit/s ,而是 3 Mbit/s ,向下游发送采用可以节省带宽的多播技术;R3 向 R2 也是预留 100 kbit/s;当 H1 收到返回的 RESV 报文,开始发送视频数据;
IntServ/RSVP 在有关服务质量的协议中,RSVP 是最复杂的;基于概念是端系统中与分组流有关的状态信息;各路由器中的预留信息只存储有限的时间;因而各终点需要对这些预留信息定期更新;RSVP 协议不是运输层协议,而是网络层控制协议;RSVP 不携带应用数据;
IntServ 体系结构分为前台和后台两个部分;前台包括:分类器与分组转发、分组的调度器;后台包含四各功能块和两个数据库;
其目前体系结构存在主要问题:1. 状态信息的数量与流的数目成正比;2. 体系结构复杂,所有的路由器都需要有接纳控制、分类器和调度器;否则,就变成尽最大努力交付;3. 服务质量登记少,不够灵活;
4.4. 区分服务DiffServ
4.4.1. 区分服务的基本概念
因为综合服务和资源预留协议过于复杂,很难在大规模的网络中实现;因此也有 DS(即区分服务)出现;要点如下:
- 力图不改变网络基础结构,但在路由器中增加区分服务的功能;将 IP 协议原有 8 位的 IPv4 的服务类型字段和 IPv6 的通信量类字段重新定义为 区分服务DS;利用其不同数值提供不同登记的服务质量;同时在使用 DS 字段钱,互联网 ISP 要和用户商定一个服务登记协议SLA;SLA 中指明被支持的服务类别(可包括吞吐量、分组丢失率、时延、时延抖动、网络可用性)和每一类所容许的通信量;
- 网络被划分多个 DS 域;DS 将所有的复杂性放在域边界节点中,内部路由器经可能工作简单;
- 边界路由器功能较多,可分为分类器、通信量调节器;调节器又分为:标记器、整形器、测定器;
- DS 提供一种聚合功能;不是为每个流维持转发使用的状态信息,而是聚合成少量的流;路由器对相同 DS 值的流,按照相同优先级转发,大大简化内部路由器转发机制;DS 不需要使用 RSVP 信令;
4.4.2. 每跳行为 PHB
DS 定义了转发分组时体现服务水平的每跳行为 PHB;
- 迅速转发 PHB
- 确保转发 PHB;