我在一家 VoIP 提供商工作,我处理的最大麻烦之一是下游流量管理。
我们的旗舰产品是支持 QoS 的绑定 T1 或 SHDSL 捆绑包,配置为支持我们自己的 VoIP 服务。我们在边缘路由器上构建了 QoS 策略,将我们的语音流量分类到最高优先级队列中,该产品非常有效。当电路构建正确时,客户无法做任何事情来干扰他们的音频质量。
困扰我的是,其他网络工程师、IT 技术人员等对我提出了很多批评,他们认为可以在没有边缘路由器 QoS 的情况下提供这样的服务。我觉得这不太实用。我想解释一下我的理解,如果有的话,我希望有人有时间在其中戳破洞。请原谅这个冗长的问题。
让我们以康卡斯特电路为例。我不为 Comcast 工作,所以我在推测他们的网络构建,但我想它是这样的:
Comcast 的光纤备份到 Cisco 边缘路由器,并从那里连接到他们的电缆头端。每个客户的 IP 都建立在具有给定下行带宽(例如 30 兆位)的边缘路由器上,这为他们分配了一个 30 兆位的队列加上一定比例的开销(我不知道这通常是多少)。
假设订阅者要从大型企业服务器下载 40 兆字节的文件。他们点击下载,TCP 连接建立并启动慢启动过程,但几秒钟后服务器推送了超过 30 兆位的数据。这会填满边缘路由器上的队列并开始丢弃数据包。
此时 TCP 拥塞避免开始并开始减慢传输速度以适应可用带宽,但显然语音已经被破坏了。
现在,有人告诉我,具有入站 QoS 策略的路由器能够通过丢弃 ACK 来利用 TCP 拥塞避免机制,以便对入站流量进行速率调整。我在实践中从未见过这样做过,或者至少从未见过它起作用;这是真的吗?如果是这样,它有效吗?在拥塞算法开始减慢速度之前,每次新连接加速时,难道不会导致大量丢包吗?
然而,除此之外,如果使用该电路的流量主要是 UDP 呢?如果对大量 UDP 数据的请求被发送到服务器,它自然会尽可能快地发送数据,淹没队列并导致语音数据包丢失 - 但也许我对这种情况反应过度。如今,UDP 是否用于任何高吞吐量的互联网技术?
更具体地说,您是否曾经亲眼见过一种 QoS 方法,它可以让 VoIP 在没有 ISP 提供的 QoS 的情况下在频繁饱和的互联网连接上正常工作而不会出现持续的质量问题?您是否听说过 DSL 或电缆提供商为此类应用实施边缘路由器 QoS?我只听说过它作为 MPLS 产品的一部分提供,如果有人想要下游 QoS,这几乎是必需的吗?