传统以太网如何传输实时数据流(音、视频流)?
以太网通过RTP(Real-time Transport Protocol)实时传输协议为数据提供了具有实时特征的端对端传送服务。RTP 本身并不能保证传送,也不能保证防止无序传送。因此,想要对所有的数据流进行排序,就离不开对数据的缓冲(Buffer)。但是,一旦采用缓冲的机制就又会带来新的问题——延时。所以我们在网络上听歌、看电影的时候,都会缓冲后才开始播放。但这个缓冲时间,在专业音、视频传输领域里是不能被接受的。
数字音频信号对以太网的要求
我们以CD为例,它的采样频率是44.1kHz,量化位数是16bit。每次采样的时间是1÷44.1×1000≈22.7μs。我们对声音的要求是连续不间断的,也就是要求每个采样下的数据传输间隔不能大于22.7μs。而在千兆网(1Gbit/s)里,两帧之间的最小时间间隔只有96ns,远小于我们所要求的22.7μs,那么在这个带宽下,我们是完全可以传输连续不间断的音频信号的。
如果我们在1Mbit/s的带宽下传输数据,那么1bit所占用的时间是1÷1,000,000=1μs,两帧之间的间隔是96μs,这时候如果传输CD数字音频信号就会存在断断续续的问题了。
从上面两个例子不难看出,只要网速足够快,也就是网络有足够的带宽,我们就可以很顺利的在网络上传输数字音频信号。但大多数情况下,由于带宽通常是由多个设备共享的,我们不单单只用它去传输一路数字音频信号,我们会同时传送多路数字音频信号,还会传输邮件、网页、图片等等其它的数据。而所有的发送端没有基于时间的流量控制,那么这些发送端永远是尽最大可能发送数据。这样来自不同设备的数据流就会在时间上产生重叠,即我们前文所说的冲突。这一定会影响数字音频信号的传输,为了改善这种传输机制,提高部分数据传输效率,以太网通过QoS优先机制进行转发,可以保证一部分数据的传输。
什么是QoS?
QoS(Quality of Service)是服务质量的简称,它包括保证传输的带宽,降低传输的延时,降低数据的丢失率以及延时抖动等。按照其工作的能力可分为以下几种模型:
1、DiffServ(Differentiated Service,区分服务)模型,根据服务要求对不同业务的数据进行分类,对数据按类进行优先级标记,然后有差别地提供服务。先行转发优先级高的数据,并将优先级低的数据做端口缓存,待网络中无高级别数据时再转发低级别数据,如图9所示。
图9
AVB 标准定义了两个流量类型,A类和B类。A类流优先级是5,B类流优先级是4,这两种数据相比较,A类数据流会被先行转发。
图10
2、IntServ(Integrated Service,综合服务)模型,在节点发送数据前,需要向网络申请资源预留,确保网络能够满足数据流的特定服务要求。它可以提供保证服务和负载控制服务两种服务。保证服务,提供保证的延迟和带宽来满足应用程序的要求;负载控制服务,保证即使在网络过载的情况下,也能对数据提供与网络未过载时类似的服务。
在网络中大量的数据极有可能在一瞬间抵达端口,保证服务如果要为每一个数据流提供QoS服务就变得不可想象了。因此,IntServ模型很难独立应用于大规模的网络,需要与流量整形(Traffic Shaping)结合使用。
流量整形(Traffic Shaping)
流量整形是为了避免在以太网中发生丢弃数据的情况,通常采用漏桶算法(Leaky Bucket)来完成流量整形或速率限制(Rate Limiting)。它的主要目的是控制数据注入到网络的速率,平滑网络上的突发流量。
图11流量整形示意图
漏桶算法提供了一种机制,通过它突发流量可以被整形,以便为网络提供一个稳定的流量。在概念上,漏桶算法可以作如下理解:到达的数据被放置在底部具有漏孔的桶中(数据缓存);数据从漏桶中漏出,以常量速率注入网络,因此平滑了突发流量,如图12所示。
图12漏桶算法
主机在每经过一个时间间隔向网络输出一个数据包,因此产生了一致的数据流,平滑了突发的流量。AVB 标准定义了两个流量类型,A类和B类。A类的时间间隔为125μs,B类的时间间隔为250μs。A类要求流具有更紧密的等待时间,并且具有较短的观察间隔,这意味着其数据包更小并且更频繁地传输。
图13
当数据流具有相同尺寸的时候,每个时间间隔传输一个数据的工作机制没有任何问题。但对于可变长度的数据来说,这种工作机制可能存在一点问题,此时,最好每个时间间隔传输固定数目的字节。
AVB有两种流格式:AM824和AAF。AM824支持24bit音频,iec60958音频编码(SPDIF和AES3),SMPTE时间码和MIDI。对于发送端AM824有三个选项“non-blocking(sync)”、“non-blocking(aync)”和“blocking”。
AM824(non-blocking,synchronous),典型的AVB音频设备使用此模式进行传输。每个观察周期发送一帧,每个以太网帧总发送相同数量的采样,在48kHz采样时,每帧包含6个采样;在96kHz时,每帧包含12个采样。
AM824 (non-blocking, async packetization),此模式由于打包器和发送器的观测间隔不同步,有可能发送一个临时的以太网帧,其中包含一个或多个采样。一个打包器处理多个时钟域的设备通常采用此格式。因为它可以发送临时的以太网帧,在48kHz采样时,每帧包含7个采样;在96kHz时,每帧包含13个采样,它需要预留足够的带宽。苹果Mac采用此模式。
AM824 (blocking)是一些火线设备使用的模式,因为它更容易打包和拆包。在48kHz采样时,每帧包含8个采样;在96kHz时,每帧包含16个采样。
AAF是IEEE p1722a中定义的新的打包格式。它比AM824开销低,要求数据流中每个帧具有相同的大小和格式,并允许16bit、24bit和32bit的量化,以及每个帧的采样数量选择。每个帧的大小和格式总是相同的。
图14
从图14中我们可以看出几个典型的AVB流在万兆网(10Gbps)中的传输规律。比如:48kHz采样32bit的立体声音频流,实际需要的带宽大约是3Mbps,采用Class A的传输间隔,1秒钟发送8000组数据(1÷8000=0.000125s=125μs),其中每组数据最多由80个帧组成。如果每帧都按照最大数据来传输,在前文中提到过最大帧是1526Byte(如图7中所示),再加上每帧的帧间隔12Byte,共1538Byte,相当于12,304bit(1Byte=8bit),每组80个帧相当于12,304×80=984,320bit,每秒传输8000组相当于984,320×8000=7,874,560,000bit/s≈7.87Mbps。那么在10Gbps的带宽下,如果保留75%的带宽用于传输AVB流,可以传输952个这样的数据流。
AVB可以实现全双工的工作模式,每帧的数据量和传输的数据类型有关,也和时间间隔有关,从图14中不难看出,不同类型的数据所占用的字节并不是一个绝对的固定值。流量整形固定了实时数据流(音、视频流)的发送时间间隔和帧大小,当传统的异步以太网数据流(邮件、网页等)进入网络时,会不会对实时数据流有所影响呢?
802.1Qav:排队及转发协议(Queuing and Forwarding Protocol,简称Qav)
Qav协议的作用是确保传统的异步以太网数据流不会干扰到AVB的实时数据流。AVB交换机把收到的各种数据分类,分别进入不同的转发队列,并重新赋予优先级,其中实时音视频流数据拥有最高优先级。为了避免冲突需要两种调度算法,一种是基于可信因子的整形算法CBS(credit based shaper transmission selection algorithm),一种是严格的优先级选择算法。各种不同的普通数据按照严格的优先级算法进行调度,当与流数据发生冲突时,则调用CBS算法。
对时间敏感的实时数据流转发采用伪同步模式(Pseudo-synchronous),这个机制依赖于精准时间同步协议(PTP)提供的8kHz时钟。在每隔125μs的时间间隙(1÷8000=0.000125s=125μs),包含AVB数据的以太网等时帧就会被进行转发。在优先保证等时帧数据传输的条件下,继续提供普通异步传输的服务,这就是Qav的优先级管理(Prioritize)及流量整形(Traffic Shaping)。
当数据经过多个交换机进行传输时,即使在相同的带宽下,也会因为路径不同导致传输时间的偏差,如何保证在整个网络里都具备相同的时间间隔呢?还需要一个时钟同步机制,将网络中的所有设备同步到相同的时钟上,来提高AVB流量整形的精准度。
802.1AS:精准时间同步协议(Precision Time Protocol,简称PTP)
时钟同步的目的是维护一个全局一致的物理或逻辑时钟,或者说把分布在各地的时钟对准(同步起来),使得系统中的信息、事件有一个全局一致的解释。IEEE802.1AS采用点对点的工作模式,时间同步过程只在相邻设备之间进行,设备自己通过外带方式实现接口之间的时间同步,不经过内部交换板。它定义了主时钟选择与协商算法、路径延时测算与补偿算法、以及时钟频率匹配与调节的机制,可用于生成时钟以及对网络音视频系统的修复。PTP定义了一个自动协商网络主时钟的方法,即最优主时钟算法(Best Master Clock Algorithm,简称BMCA)。BMCA定义了底层的协商和信令机制,用于标识出AVB局域网内的主时钟(Grandmaster)。
IEEE802.1AS的核心在于时间戳机制(Timestamping)。PTP消息在进出具备IEEE802.1AS功能的端口时,会根据协议触发对本地实时时钟(RTC)的采样,将自己的RTC值与来自该端口相对应的主时钟(Master)的信息进行比较,利用路径延迟测算和补偿技术,将其RTC时钟值匹配到PTP域的时间。当PTP同步机制覆盖了整个AVB局域网,各网络节点设备间就可以通过周期性的PTP消息交换精确的实时时钟调整和频率匹配算法。最终,所有的PTP节点都将同步到相同的“挂钟”(Wall Clock)时间,即Grandmaster时间。消息交换过程如下:
1. Master发送Sync消息,记下该消息的本地发送时间t1。
2. Slave接收到Sync消息,并记下其接收到该消息的本地时间t2。
3. Master有两种方式告诉Slave该Sync消息的发送时间t1。
1) 将t1时间嵌入到Sync消息中,这需要某种硬件处理以获得高精度。
2)在后续的Follow_Up消息中发送
4. Slave发送Delay_Req消息往Master,并记下发送时间t3。
5. Master接收到Delay_Req,并记下该消息到达时间t4。
6. Master发送Delay_Resp消息告知Slave t4。
利用这四个时间可以算出Master和Slave之间的时钟差值,前提是链路是对称的,即发送和接收延时一样。计算公式为:
offset = ((t2 - t1) - (t4 - t3))/2
one_way_delay = ((t2 - t1) + (t4 - t3))/2
图15
在最大7跳的网络环境中,理论上PTP能够保证时钟同步误差在1μs以内。由于串行连接交换机会影响延时的对称性,使同步精度降低,因此在构架AVB网络时建议采用对称的链路设计。
一旦主时钟被选定,所有局域网节点的PTP设备将以此主时钟为参考值,如果Grandmaster发生变化,整个AVB网络也能通过BMCA在最短时间内确定新的主时钟,确保整个网络保持时间同步。
该标准所规范的协议严格保证了实时数据流在基于以太网延时固定或对称的传输媒质中的同步传送。其内容包括在网络正常运行或添加、移除或重新配置网络组件和网络故障时,对时间同步机制的维护,为以太网提供完美的低延迟、低抖动的时钟,保证高质量的带宽,使服务快速抵达。
在确保了时间精准之后,如果带宽不充足会导致漏桶很快存满并且有数据溢出,如果是音、视频数据溢出被丢弃,就会出现断断续续的问题,还有可能丢失掉一部分声音或画面,因此我们还需要保证有足够的带宽可以传输实时音视频数据流。
802.1Qat:流预留协议(Stream Reservation Protocol,简称SRP)
为了提供有保障的QoS,流预留协议确保了实时数据流设备间端到端的带宽可用性。如果所需的路径带宽可用,整个路径上的所有设备(包括交换机和终端设备)将会对此资源进行锁定。符合SRP标准的交换机能够将整个网络可用带宽资源的75%用于AVB链路,剩下25%的带宽留给传统的以太网流量。
在SRP中,流服务的提供者叫做Talker,流服务的接收者叫做Listener。同一个Talker提供的流服务可同时被多个Listener接收,SRP允许只保障从Talker到Listener的单向数据流流动。
只要从Talker到多个Listener中的任意一条路径上的带宽资源能够协商并锁定,Talker就可以开始提供实时数据流传输服务。SRP内部周期性的状态机制维护着Talker及Listener的注册信息,能够动态的对网络节点状态进行监测并更新其内部注册信息数据库,以适应网络拓扑的动态改变。无论Talker还是Listener,都可以随时加入或者离开AVB的网络,而不会对AVB网络的整体功能和状态造成不可恢复的影响。
1722:音视频桥接传输协议(Audio/Video Bridging TransportProtocol,简称AVBTP)
AVBTP定义了局域网内提供实时数据流服务所需的二层数据格式,实时数据流的建立、控制及关闭协议。AVBTP为物理上分隔的音、视频编解码器之间建立了一条带有低延迟的虚拟链路。
各种压缩的与非压缩的原始音频、视频数据流经由AVBTP协议进行打包(填充由SRP保留的流ID,打上PTP产生的时间戳以及媒体类型等相关信息),通过AVBTP专用的以太网帧类型进行组播,从流服务的提供者(Talker)发出,由AVB交换机进行转发,再被注册过此实时数据流服务的接收者(Listener)接收并解包、解码然后输出。
AVBTP每125µs发送一次这个帧,它总是相同大小的数据流。每个流中可以由1-60个通道组成,最多可支持64个流。
AVB——以太网音视频桥接技术(Ethernet Audio Video Bridging)是IEEE的802.1任务组于2005开始制定的一套基于新的以太网架构的协议,用于实时音视频的传输协议集。除了以上描述的相关协议之外,还包括:
802.1BA:音视频桥接系统(Audio Video Bridging Systems)
AVB系统标准定义了一系列在生产制造AVB兼容设备过程中使用的预设值和设定,使得不具备网络经验的用户也能够去建立、使用AVB网络,而不必对其进行繁琐的配置。
1733:实时传输协议(Real-Time Transport Protocol,简称RTP)
RTP是一种基于三层UDP/IP网络的协议,为了在基于IP的三层应用上利用二层AVB的性能,IEEE 1733对RTP进行了扩展,在通过桥接及路由的局域网内提供时间同步、延迟保障和带宽预留的服务,以提供实时数据频流的传输。其中涉及到封包格式,流的建立、控制、同步及关闭等协议。
1722.1:负责设备搜寻、列举、连接管理、以及基于1722的设备之间的相互控制。用于AVB设备的发现,枚举,连接管理,固件升级等。
TSN (Time Sensitive Network)时间敏感网络IEEE 802.1任务组在2012年11月的时候正式将AVB更名为TSN——Time Sensitive Network时间敏感网络。也就是说,AVB只是TSN中的一个应用。
此外,TSN还应用在汽车控制领域、商用电子领域、实时监控或实时反馈的工业领域。
(编辑:bingjiling)