当 link VoIP 和 TCP 同时工作时发生丢包?

When packet drop occurs in a link with VoIP and TCP working concurrently?

让我们假设 TCP Reno 版本

我遇到这种情况:同一主机上的 VoIP (UDP) 流和 TCP 会话。 假设在 t=10s 时,TCP 打开与 TCP 接收方(另一台主机)的会话,他们在 3 次握手 期间交换最大值 window 然后他们开始使用 慢启动 方法进行流式传输。

在 t=25 秒时,VoIP 流开始。由于它是一个 UDP 流,目的是使接收器饱和。没有任何拥塞控制,它应该尽可能多地突发数据包。

由于在同一通道中存在这种并发,并且我们假设在网络拓扑中没有路由器出现故障等(因此没有异常),我的问题是: 有什么方法可以实现 VoIP 流的丢包吗?

我在想,由于 VoIP 对抖动很敏感,而 TCP 的慢启动方法并不是很慢,因此可以实现丢包,因为路由器队列增加了延迟的变化,它们是 "flooded" 由 TCP 早期数据包。

还有其他原因吗?

先来几条评论:

  • VoIP 通常不会 'saturate' 接收方(或网络)- 它只会根据您使用的特定编解码器的需要发送尽可能多的数据包。换句话说,它不会一直增长直到填满网络。
  • 如您所述,VoIP 系统对抖动很敏感。数据包丢失实际上与此有关,因为如果数据包到达抖动缓冲区 window 之外,VoIP 系统通常会认为数据包丢失。因此,即使数据包实际上可能没有丢失,只是延迟了,但如果它到达抖动缓冲区之外window,就 VoIP 系统而言,它实际上已经丢失了。

回答您的具体问题:是的,其他流量会产生延迟的数据包,这些数据包可能对 VoIP 接收器来说似乎丢失了。值得一提的是,在 UDP 和 TCP 共享带宽的 link 中,TCP 比 UDP 更好 'behaved' 因为它会尝试限制自己以避免拥塞。 UDP 没有,因此与 TCP 流量相比,UDP 实际上可能获得超过其公平份额的带宽。