QUIC with CUBIC or BBR

拥塞控制

拥塞控制算法是 TCP/QUIC 协议的一个基础部分,多年来经过一个个版本的迭代(如 Tahoe、Reno、Vegas 等),拥塞控制算法得到了持续的提升。由于篇幅有限,本文就目前比较流行的两种拥塞控制算法(CUBIC,BBR),也是 MSQUIC 目前支持的拥塞控制算法进行介绍。

太多太快的分组(包含着 TCP 段以及 UDP 数据报等) 需要网络传输,超过网络 (具体来可能是部分节点、链路) 的处理能力,网络中的某个(某些)路由器队列溢出,开始丢弃分组。 从源端的角度来看:

  • 分组丢失,源端超时了
  • 在源端,收到某 TCP 段的多个冗余ACK
  • 延迟增加
  • 拥塞情况加速变坏
  • 不加控制网络将无法使用

CUBIC 拥塞控制思路

CUBIC 是一种拥塞控制协议。TCP CUBIC 版本目前已经作为默认的拥塞控制算法被应用在 linux/unix 系统中,微软在 Win10/Windows Server 2019 系统也对 CUBIC 做了支持。CUBIC 的提出得益于当今通信链路往往具有越来越高的带宽水平这一事实。在由高带宽链路组成的网络中,缓慢增加传输速率的拥塞控制算法可能最终会浪费链路的容量。CUBIC 改变了现有 TCP 标准中的线性拥塞窗口增长函数为三次函数,以提高 TCP 在快速和长距离网络上的可扩展性。它还通过使窗口增长独立

NS-3是一个广泛使用的网络模拟器,而QUIC-BBRQuick UDP Internet Connections with BBR)是一种基于Google的BBR算法的QUIC实现。要在NS-3中配置QUIC-BBR,你需要安装相关的模块并设置适当的参数。以下是基本步骤: 1. **安装QUIC支持**:首先,确保你的NS-3版本包含了QUIC的支持,你可以从NS-3官方GitHub仓库获取最新版本,并启用相应的模块。通常,`ns3-quic`模块包含QUIC的相关功能。 2. **配置应用层协议**:在你的NS-3场景文件(`.cc`或`.xml`)中,创建一个QUIC的应用层协议实例,比如`QuicApplication`,并指定你想要使用的BBR算法作为拥塞控制器: ```cpp QuicApplication quicApp("quic-bbr"); ``` 3. **创建QUIC会话**:创建一个QUIC会话并连接到网络接口: ```cpp QuicSession session(sessionHandler); session.AddApplicationProtocol(&quicApp); session.SetQuicConfig(quicConfig); // 配置QUIC参数 session.ConnectTo(remoteEndpoint); ``` 4. **配置BBR参数**:通过`QuicCongestionController`的API,如`SetMaxStreamData Burstiness`,可以调整BBR的具体参数。例如,设置最大数据突发窗口: ```cpp uint32_t maxBurst = ...; // 根据需求设定值 quicApp.GetCongestionController().SetMaxStreamDataBurst(maxBurst); ``` 5. **运行模拟**:最后,在你的模拟环境中启动并运行模型。 注意:具体的配置细节可能会因NS-3版本的不同而有所变化,建议查阅最新的NS-3文档或者参考示例代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值