基于iperf的短视频带宽估算环境
动机
网络中对带宽的预测是一个很重要的问题。短视频环境下由于cc算法慢启动的影响会导致文件小的时候下载速度实际上是不等于链路可用带宽的,并且文件大小会影响最终统计到的平均速度。这会影响我们对带宽的估算,也就会影响之后的一系列的操作。
为了验证慢启动对平均估算带宽的影响,我们首先需要一个仿真环境。基于以往认知,我们基于iperf来实现这个环境。
实现
其实这里也就是基于iperf的一个脚本,主要的一点是需要获取到tcp的慢启动时间。这里因为目前客户端使用的是tcpbbr,所以我们需要获取的是tcp bbr的慢启动退出时间,方式采用tcp bbr的pacing gain不等于2.885的时候作为tcp_bbr退出慢启动的依据。
获取tcp bbr的pacing gain可以调用getsockopt使用TCP_CC_INFO获取tcp_bbr的内核结构(注意这里的pacing_gain是*256后的整型值)。 getsockopt(sp->socket, IPPROTO_TCP, TCP_CC_INFO, &info, &len)
另外外层为了模拟网络变化,我们使用了mahimahi作为限速环境。
结果
目前初步在稳定限速的场景下跑出了一些简单的结果。
TODO
将根据理论计算在慢启动环境下不同文件大小的速率并比较和实际的差别。