思考源头:
遇到一道很有意思的题,关于带宽分配的最大最小公平性(Max-min Fairness)原则。如图1所示
解决思路:
众所周知,关于发送方的流量控制,就是滑动窗口机制了,但只知窗口,还是得不到速率。拥塞避免也是在解决窗口的问题,同样得不到速率。查了很多资料了,最后发现其实还是与拥塞控制相关,引起带宽竞争。这就要用到最大最小公平性原则
最大最小公平性原则的核心思想:
最小流量的最大化
分配流程:
(中学老师说以水流类比电流,这里同样可以用水流理解)
1. 所有数据流的速率从零开始
2. 增加速率,直到任何一个数据流的速率到瓶颈
3. 调整已到瓶颈的速率(这里是不带权的调整,即均分)
4. 回到第二步循环
Example:
这里有4条数据流。这里特别注意,是4条逻辑上的线路,实际与图一的原题目连接一致。
(例:若已确定数据流D在R4和R5两跳之间速率为1bps,整条数据流D的速率均为1bps)
我的思路是:由于R4-R5“竞争最激烈”,所以要从此开始先“填满”R4-R5。达到瓶颈后,速率平均分配,为1/3个单位的带宽。
(本例将1个单位的速率均等分配三份,BCD各为1/3个单位,如30Mbps三等分后为10Mbps)
随着BCD流的确定,R5和R6两跳之间最大为C与D流之和:1/3 + 1/3 = 2/3
因整条数据流B均为1/3个单位,所以在R2-R3两跳之间剩余2/3个单位。增大流A,当其达到2/3个单位后,R2-R3两跳达到瓶颈。此时流A也确定了。
老师的模拟的适应过程更接近真实情况,网络的流量基本上都是突发的,带宽是都是动态变化的。
回到思考源头:
按以上思路:R5-R6两跳含3个数据流,30Mbps三等分后得10Mbps。R1-R2-R3能分得20Mbps。
故最高为R1-R2-R3: 20Mbps;其他均为最低: 10Mbps。选D。
融入了很多个人理解,若有不足之处还望指正。
引用:
https://baike.baidu.com/item/%E5%B8%A6%E5%AE%BD%E5%88%86%E9%85%8D
https://www.cnblogs.com/JAVALLiuLei/p/9510233.html
https://youtu.be/wRX7o4xuwRc