QoS和延迟时间
在消费类VoIP中讨论最多的话题也许是服务质量(QoS)。虽然除消费类VoIP订户之外还有许多其它实现策略想法,理解QoS的限制和意图是非常重要的。由于最终要在公共网络上进行传输,VoIP服务易于产生延迟抖动或数据包丢失等各种类型的中断,这些中断将会影响服务质量。虽然对于数据传输而言这并不是一个焦点问题,但要满足用户对长话级音质期望,ATA必须配备有效的抖动缓冲器。QoS只能辅助但无法完全解决这个问题。
QoS意味着给“高优先级”数据包加标志以免由于“低优先级”传输产生的拥挤造成延时或数据包丢失。实现这个目标的一种理想方法是非常简单地在ATA和宽带连接之间使用带宽保留协议(如RSVP)。通过从宽带连接申请预定数量的带宽,音频流在本地不会遇到瓶颈,从而质量得到更好的保证(但只是在它进入公共互联网之前)。
另一个同QoS相关的问题是同数据包的大小有关的延迟。在低质量ADSL的128kb上行连接中,最大长度为1,500字节的以太网帧需占用接近2个语音帧的时间长度。为解决这个问题,直接连接到宽带调制解调器的带有集成NAT和集成路由器功能的ATA器件可以在VoIP呼叫期间减少MSS(最大片规模)或在外发数据包信息流中周期性地插入断点,从而不管数据负载是否沉重都可以插入语音包。类似地,对于ATA正在传送数据流、终止或启动数据包的情况,该器件可以使用流量整形方法。这包括对某些特殊类型的数据包进行带宽限制并在其它等待发送的数据包之前优先发送对时间有严格要求的数据包。这种方式允许对数据包进行动态分类,包括最小最大带宽及进入和输出数据流的优先级。如果发生数据包丢失,被激活的位于两端的TCP流控制机制将降低发送速率。
许多的互联网结构也将对嵌入在TCP数据包报头ToS域中的“提示”做出响应。数据包的“区分服务(DiffServ)”类别被用来表明应如何来处理数据包,通过授予和产生这个域我们可以获得一些QoS。路由器将使用DiffServ域把语音包放置在更高优先级的队列中,从而保证它们得到更大比例的可用带宽和经历更少的延迟和丢失。
我们可以以多种方式来完成流量整形。流量整形的HTB理论及其它方法几乎可以使用任何准则把数据包分成各种队列。使用“标记”和“桶”的概念以及基于类的系统和过滤器,HTB允许对数据流进行复杂的颗粒控制。HTB允许最小和最大带宽分配。它也允许“较低”优先级队列暂时从较高优先级队列借用当前并未使用的带宽。HTB的主要优点之一是队列被组织成“树”,每个分类从父节点继承带宽限制,从而有能力以高度颗粒化的方式对流量施加控制。这是使用成熟的操作系统而不是定制或专有RTOS的另一个优点。
防火墙和穿越技术
NAT已经使互联网发展到IPv4不可能达到的水平。当试图达到在一个或多个NAT防火墙后面的终端用户设备时,穿越NAT也是需要解决的最具挑战性问题。NAT有4个典型的类型:全圆锥(cone)、地址受限的圆锥、端口受限的圆锥和对称NAT,穿越它们的方法包括ALG、媒体隧道、第三方代理或STUN。因为提供ALG、隧道或第三方代理的前提条件是与NAT或其它设备进行合作,要把这种方案在消费类设备中推广是极不现实的,因而作为ATA制造商,我们正在依靠自己的力量来解决NAT问题。
STUN是得到最广泛应用的方案并可以穿越大多数NAT防火墙。STUN使用一种轻量级UDP协议并使用外部STUN服务器来识别NAT防火墙所完成的变换种类。然后,在特定UDP连接上,它将确切地识别出NAT已经选定要做的用于RTP或SIP的变换。这些信息是在没有NAT防火墙专门合作的情况下收集得到的,此后这些信息被用于建立SIP和RTP进程。虽然实际上所有消费者都假定设备使用某种圆锥NAT,但在公司环境中更可能遇到的是对称NAT。在这个情况下,需要使用ALG或本地代理。