我们都知道在移动网络环境下是由终端以无线形式和附近的基站交互数据 , 之后数据传输至核心网 , 最后落到具体的服务器所在的有线网络 , 其中最后一公里的区域属于高延时场景 , 有线网络属于低延时高带宽场景 。
在国外有相关实验证明弱网环境下RTT的变化对于使用传统拥塞控制算法下网络吞吐量的影响 , 数据和曲线如图所示:
文章插图
文章插图
实验含义:RTT的增大影响了比如CUBIC这类拥塞控制算法的慢启动等阶段 , 我们知道慢启动阶段每经过1个RTT周期拥塞窗口cwnd将加倍 , 但是更大的RTT就意味着发送方以很低的速率发送数据 , 更多的时间是空闲的 , 发包的加速度极大降低了 , 所以整个吞吐量就下降很明显 。
看下实验者的原文表述:
The delay before acknowledgment packets are received (= latency) will have an impact on how fast the TCP congestion window increases (hence the throughput).
When latency is high, it means that the sender spends more time idle (not sending any new packets), which reduces how fast throughput grows.六.强悍的BBR算法BBR算法是个主动的闭环反馈系统 , 通俗来说就是根据带宽和RTT延时来不断动态探索寻找合适的发送速率和发送量 。
看下维基百科对BBR算法的说明和资料:
相关文献:
https://queue.acm.org/detail.cfm?id=3022184
TCP BBR(Bottleneck Bandwidth and Round-trip propagation time)是由Google设计 , 并于2016年发布的拥塞算法 , 以往大部分拥塞算法是基于丢包来作为降低传输速率的信号 , 而BBR基于模型主动探测 。
该算法使用网络最近出站数据分组当时的最大带宽和往返时间来创建网络的显式模型 。数据包传输的每个累积或选择性确认用于生成记录在数据包传输过程和确认返回期间的时间内所传送数据量的采样率 。
该算法认为随着网络接口控制器逐渐进入千兆速度时 , 分组丢失不应该被认为是识别拥塞的主要决定因素 , 所以基于模型的拥塞控制算法能有更高的吞吐量和更低的延迟 , 可以用BBR来替代其他流行的拥塞算法例如CUBIC 。
Google在YouTube上应用该算法 , 将全球平均的YouTube网络吞吐量提高了4% , 在一些国家超过了14% 。BBR之后移植入Linux内核4.9版本 , 并且对于QUIC可用 。6.1 丢包反馈策略存在的问题基于丢包反馈属于被动式机制 , 根源在于这些拥塞控制算法依据是否出现丢包事件来判断网络拥塞做减窗调整 , 这样就可能会出现一些问题:
- 丢包即拥塞现实中网络环境很复杂会存在错误丢包 , 很多算法无法很好区分拥塞丢包和错误丢包 , 因此在存在一定错误丢包的前提下在某些网络场景中并不能充分利用带宽 。
- 缓冲区膨胀问题BufferBloat网络连接中路由器、交换机、核心网设备等等为了平滑网络波动而存在缓冲区 , 这些缓存区就像输液管的膨胀部分让数据更加平稳 , 但是Loss-Based策略在最初就像网络中发生数据类似于灌水 , 此时是将Buffer全部算在内的 , 一旦buffer满了 , 就可能出现RTT增加丢包等问题 , 就相当于有的容量本不该算在其中 , 但是策略是基于包含Buffer进行预测的 , 特别地在深缓冲区网络就会出现一些问题 。
- 网络负载高但无丢包事件假设网络中的负载已经很高了 , 只要没有丢包事件出现 , 算法就不会主动减窗降低发送速率 , 这种情况下虽然充分利用了网络带宽 , 同时由于一直没有丢包事件出现发送方仍然在加窗 , 表现出了较强的网络带宽侵略性 , 加重了网络负载压力 。
- 高负载丢包高负载无丢包情况下算法一直加窗 , 这样可以预测丢包事件可能很快就出现了 , 一旦丢包出现窗口将呈现乘性减少 , 由高位发送速率迅速降低会造成整个网络的瞬时抖动性 , 总体呈现较大的锯齿状波动 。
- 低负载高延时丢包在某些弱网环境下RTT会增加甚至出现非拥塞引起丢包 , 此时基于丢包反馈的拥塞算法的窗口会比较小 , 对带宽的利用率很低 , 吞吐量下降很明显 , 但是实际上网络负载并不高 , 所以在弱网环境下效果并不是非常理想 。
推荐阅读
- 轻松学习http知识让枯燥的内容变得生动有趣:TCP/IP四层模型
- Java中的BigDecimal,你真的会用吗?最强指南
- 为何视频流/网游大都使用UDP协议,而不用TCP协议?
- TCP粘包、拆包与解决方案
- 地球最强悍的生物 超级地球上有生命
- ICMP ARP协议 TCP&UDP协议相关介绍,两分钟快速掌握
- TCP粘包的解决方案
- TCP 拥塞避免算法
- 看一遍忘一遍的网络七层模型与TCP/UDP,重新总结出来
- 世界上最烈的啤酒排名是什么?