带宽估计需要带宽侦测

Posted on Sun 26 March 2023 in Journal

Abstract 带宽估计需要带宽侦测
Authors Walter Fan
 Category    learning note  
Status v1.0
Updated 2023-03-26
License CC-BY-NC-ND 4.0

带宽估算是拥塞控制中非常重要的技术, 避免拥塞是重要手段就是根据发送比特率, 接收比特率, 丢包和延迟估算出大致的带宽, 以小于这个带宽的速率发送数据.

我写过几篇相关的笔记

在WebRTC中,带宽侦测是非常重要的,因为它可以帮助决定网络的可用带宽,以便在实时通信中动态调整音频和视频流的质量。

在WebRTC中,带宽侦测是通过周期性地发送数据包并测量其到达时间来完成的。WebRTC中的带宽侦测通常涉及以下步骤:

  1. 发送数据包: WebRTC会周期性地向对方发送一些数据包,通常称为“probe packets”。这些数据包的大小和发送间隔可以根据应用程序需求进行调整。
  2. 计算延迟: 当对方收到数据包时,会立即将其回传到发送方。发送方会测量从发送数据包到收到回传数据包所需的时间,从而计算出延迟。
  3. 计算数据传输速度: 根据延迟和数据包大小,WebRTC可以计算出网络连接的实际带宽。可以在多个时段进行带宽侦测,以确定带宽的平均值。
  4. 动态调整数据传输速率: 在WebRTC中,根据实时带宽侦测的结果,可以动态调整音频和视频流的数据传输速率。这可以确保在网络质量变差时,WebRTC应用程序仍然可以保持稳定的通信。

需要注意的是,WebRTC中的带宽侦测是自适应的,并且会根据网络条件动态地调整数据传输速率。这可以确保WebRTC应用程序在不同的网络环境中都能够提供高质量的实时通信体验

ALR是指“Application-Limited Region”,它是一种网络拥塞控制算法,用于帮助WebRTC应用程序在低带宽或高延迟的网络环境下更好地适应网络条件。

当WebRTC应用程序检测到网络带宽不足时,它会将自己标记为“应用程序受限区域”(Application-Limited Region,ALR)。在ALR中,WebRTC应用程序将限制数据传输速率,以减少对网络带宽的使用,从而避免网络拥塞的发生。

在WebRTC中,ALR的实现方式是通过动态调整数据传输速率来实现的。当WebRTC应用程序进入ALR时,它会暂停数据传输,等待一段时间后再重新开始发送数据,但是速率会低于之前的速率。在这个过程中,WebRTC应用程序会周期性地进行带宽侦测,以确定是否可以增加数据传输速率。

需要注意的是,ALR算法在WebRTC中是一种自适应算法,它会根据网络条件和应用程序需求动态地调整数据传输速率。在网络条件变化时,WebRTC应用程序会自动进入或退出ALR,以确保网络拥塞控制的有效性和稳定性。

带宽侦测的常见的技术有

  1. Ping测试:Ping测试是一种最简单的带宽侦测方法,它是通过发送一个小的数据包到目标地址,并等待响应的时间来判断网络延迟和网络状况。Ping测试可以用来测试网络是否正常工作,但并不能提供准确的带宽信息。
  2. Speedtest测速:Speedtest是一种广泛使用的测速工具,它通过下载和上传大文件来测量网络的带宽。Speedtest可以提供准确的下载和上传速度,并且可以分析网络状况,但它不能提供实时的带宽侦测。
  3. TCP窗口扫描:TCP窗口扫描是一种通过发送一系列的TCP SYN数据包并测量它们的响应时间来检测网络带宽的方法。TCP窗口扫描可以提供准确的带宽信息,但它的测试结果可能会受到网络拥塞、数据包丢失和路由问题的影响。
  4. UDP带宽测试:UDP带宽测试是一种通过发送一系列的UDP数据包并测量它们的到达时间来检测网络带宽的方法。UDP带宽测试可以提供实时的带宽侦测,并且不会受到TCP拥塞控制的影响,但它可能会导致网络拥塞,并且不能提供延迟和丢包率等信息。
  5. WebRTC带宽侦测:WebRTC是一种实时通信技术,它可以通过周期性地发送数据包并测量其到达时间来进行带宽侦测。WebRTC带宽侦测可以提供实时的带宽信息,并且可以动态地调整数据传输速率,以适应不同的网络环境。

WebRTC使用了一种名为REMB(Receiver Estimated Max Bitrate,接收方估计的最大比特率)的机制来进行带宽侦测。在WebRTC中,每个参与通信的客户端都会周期性地向对方发送一个RTCP Feedback包,并在该包中包含自己对对方视频流的带宽需求,即期望的最大比特率。接收方收到RTCP Feedback包后,会根据其中包含的带宽需求和自身的网络状况,发送一个Feedback包回复发送方,告诉其可以发送的最大比特率。

通过这种方式,WebRTC可以在客户端之间交换网络状况和带宽需求信息,从而动态地调整数据传输速率,以适应不同的网络环境。

WebRTC中的TWCC(Transport Wide Congestion Control,传输层拥塞控制)是一种新的拥塞控制机制,与传统的基于REMB的带宽侦测相比,具有更好的性能和鲁棒性。

在传统的REMB机制中,发送方发送一个Feedback包给接收方,接收方根据其中包含的带宽需求和自身的网络状况,发送一个Feedback包回复发送方,告诉其可以发送的最大比特率。这种机制对网络状况的响应速度较慢,容易出现拥塞控制不够及时的情况,从而影响通信质量。

TWCC机制引入了一种新的拥塞控制机制,使用了一种名为“Feedback Packet Information”(FPI)的机制来收集数据。通过在Feedback包中包含FPI信息,TWCC可以更准确地估计网络的拥塞程度,并及时地调整发送速率,以避免网络拥塞。

TWCC机制的另一个优势是可以对每个视频流进行独立的拥塞控制。这样,在多路视频通信的情况下,TWCC可以更准确地调整每个视频流的发送速率,以适应不同的网络环境,从而提高通信质量和稳定性。

总之,WebRTC的TWCC机制相比传统的REMB机制,具有更好的性能和鲁棒性。但需要注意的是,TWCC机制在一些老旧的网络环境下可能会遇到兼容性问题,因此在实际应用中需要进行充分的测试和评估。


本笔记由 Chatgpt 辅助编写