当前位置: 首页 > news >正文

计算机网络自顶向下方法30——运输层 网络拥塞控制中的公平性

网络拥塞控制中的公平性详解

一、什么是公平性?

1. 核心思想
在共享同一网络瓶颈的多个数据流之间,公平地分配可用的带宽资源。理想情况下,N个相同特性的流竞争同一链路,每个流应获得 1/N 的链路带宽。

2. 公平性的衡量

  • max-min公平性:这是一种经典的公平性定义。它要求在满足所有流的最小需求后,将剩余带宽公平地分配给那些需要更多带宽的流。这通常被认为是网络中最理想的公平分配方式。

二、TCP的公平性:AIMD的魔力

TCP通过其AIMD 的核心机制,在宏观上实现了公平性。

  • AIMD解释

    • AI - 加法增大:在拥塞避免阶段,每个RTT将 cwnd 增加1 MSS。这使得流的发送速率线性增长

    • MD - 乘法减小:当检测到拥塞时(超时或收到ECN),将 cwnd 减半。这使得流的发送速率断崖式下降

  • AIMD如何导致公平?
    下图通过两个TCP流的竞争,直观地展示了AIMD如何神奇地引导它们收敛到公平的平衡点:

  • 过程分析

    1. 初始:流1的窗口为30,流2的窗口为10。流1占用更多带宽。

    2. 加法增大:两者窗口都线性增长,但差距保持不变。

    3. 拥塞发生:当它们的窗口之和超过瓶颈带宽时,发生拥塞(如丢包)。

    4. 乘法减小两个流同时将窗口减半。流1从32减至16,流2从16减至8。注意:此时两者的差距从16缩小到了8!

    5. 再次加法增大:两者又从新的起点开始线性增长。

    6. 收敛:经过几次AIMD循环后,两个流的窗口值会越来越接近,最终在公平点(各25个单位)附近达到动态平衡。

    结论:AIMD就像一个“奖惩分明”的系统,做得好大家一起慢慢奖励(AI),出问题大家一起受罚(MD),而且罚的是比例(乘法),这使得占便宜多的流罚得更疼,从而迅速拉平大家的起点。

三、公平性的挑战与破坏者

1. 挑战一:RTT不公平性

  • 问题具有较小RTT的TCP连接比具有大RTT的连接能获得更多的带宽份额。

  • 根源:TCP的窗口增长是基于ACK的。RTT小的连接能更快地收到ACK,从而更快地增加其 cwnd。在AIMD的“赛跑”中,RTT小的连接起跑更频繁,增长更快。

  • 举例:两个流共享10Mbps链路。流1的RTT=10ms,流2的RTT=100ms。在同样的时间内,流1完成的AIMD周期数是流2的10倍,其平均窗口和吞吐量将远高于流2。

  • 现代算法的改进:像CUBIC这样的算法,其窗口增长更多地依赖于真实时间而非ACK计数,从而在一定程度上缓解了RTT不公平性问题。

2. 挑战二:UDP的“不公平性”

  • 问题UDP本身不实现任何拥塞控制。

  • 机制:UDP发送方可以按照恒定的、很高的速率发送数据包,而完全不理会网络的拥塞状况。当网络中出现UDP流量时(如视频流、语音通话),它会无情地占满路由器缓冲区,导致TCP流检测到丢包并不断进行“乘法减小”,最终TCP流被“饿死”

  • 本质:这就像在一個所有人都排队(TCP)的场合,突然来了一个不排队的人(UDP),他总能抢到资源。

  • 解决方案

    • 应用层控制:鼓励基于UDP的应用在应用层实现拥塞控制。例如,QUIC协议在UDP之上实现了类似TCP的拥塞控制。

    • 网络层管理:在网络设备上部署公平队列 等机制,在不同流之间公平地调度分组,防止任何一个流独占队列。

3. 挑战三:并行TCP连接的“侵略性”

  • 问题:一个应用(如早期的下载管理器、某些BitTorrent客户端)可以同时打开多个TCP连接来传输同一个对象。

  • 机制:从网络的角度看,这是多个独立的流。如果一个应用打开10个连接,那么在公平队列看来,它就像是10个不同的用户。在分配带宽时,这个应用将获得10份,而其他使用单个连接的应用只能获得1份。

  • 影响:这严重破坏了“每流公平性” 的原则。一个“贪婪”的应用可以通过这种方式霸占绝大部分带宽。

  • 解决方案

    • 应用自律:开发者应遵守网络礼仪,避免滥用并行连接。

    • 网络识别与惩罚:更复杂的网络设备可以尝试识别属于同一对主机的多个连接,并将它们作为“一个流”来整体进行调度。

四、总结
场景对公平性的影响核心原因
多个TCP流竞争趋向公平AIMD 机制迫使所有流收敛到公平点。
不同RTT的TCP流不公平小RTT流增长更快,在AIMD循环中占优。
TCP vs. UDP极不公平UDP不遵守拥塞控制“社会契约”,挤占TCP资源。
单连接 vs. 多连接不公平网络设备通常按流调度,多连接应用被视作多个用户。

公平性是互联网能够健康发展、避免“公地悲剧”的基石。它不仅仅是一个技术问题,更是一个需要端系统(协议栈)、应用程序和网络核心共同协作和维护的“社会规范”。理解这些公平性问题,有助于我们设计出更友好、更高效的网络应用和协议。

http://www.dtcms.com/a/569202.html

相关文章:

  • 专门做隐形眼镜的网站seo的中文含义是什么意思
  • O2O行业风口下的运营策略与定制开发AI智能名片S2B2C商城小程序的应用研究
  • 新建代码仓库后,初始化仓库
  • 龙川做网站的wordpress 文章折叠
  • Glances服务器硬件资源监控工具
  • Docker(三)_容器打包
  • 专业做网站有哪些上海机械网站建设
  • Spring Boot异步接口性能优化:从单线程到高并发的优化历程
  • App通信:HTTP与JSON全解析
  • 网站推广什么意思资料网站怎么做的
  • win10本地部署weknora记录
  • 7、webgl 基本概念 + 前置数学知识点(向量 + 矩阵)
  • 寻花问柳专做男人的网站高端网站建设设计公司哪家好
  • Rust开发实战之RESTful API客户端开发
  • C++ 锁类型大全详解
  • 智慧园区:智能管理赋能未来发展新生态
  • 潮州 网站建设个人静态网站首页怎么做
  • 东莞网站建站推广wordpress导入演示数据
  • socket_udp
  • 基于单片机的智能家居窗帘控制系统设计(论文+源码)
  • Nestjs框架: 微服务架构拆分原则与实战指南
  • WinSCP的简单使用与SFTP自动备份 .bat脚本
  • iOS 虚拟位置设置实战,多工具协同打造精准调试与场景模拟环境
  • Qt 全球峰会 2025:中国站速递 —— 技术中立,拥抱更大生态
  • Android集成Unity避坑指南
  • 我的网站设计联盟网站推广营销应该怎么做
  • 从零开始刷算法-栈-括号匹配
  • 走进Linux的世界:初识进程(Task)
  • 首钢建设集团山东公司网站2017年网站建设公司
  • 让数据库更智能-大模型如何优化我们的SQL查询