| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 计算机网络学习笔记15--拥塞控制&TCP性能分析&传输层总结 -> 正文阅读 |
|
[系统运维]计算机网络学习笔记15--拥塞控制&TCP性能分析&传输层总结 |
https://www.bilibili.com/video/BV1Up411Z7hC?p=4&spm_id_from=pageDriver 如有错误之处请指出,谢谢! p53-p57 拥塞控制拥塞(Congestion)非正式定义: 太多发送主机发送了太多数据或者发送速度太快,以至于网络无法处理 表现: 分组丢失(路由器缓存溢出) 分组延迟过大(在路由器缓存中排队) 拥塞控制VS流量控制 可靠数据传输根据端到端符合个体利益,拥塞控制像是一个社会问题 流量控制是不要让接收方溢出,而拥塞控制是不要让网络溢出 A top-10 problem 用色的成因和代价场景1:分组时延太大路由器向C、D主机总带宽未C? 由于路由器有无限的缓存,不存在丢包,所以没有重传机制 左边的图表示吞吐率 因为共享带宽,输出最大带宽为C/2 右边的图表示时延 输入接近C/2时时延接近无限 ?因为一直在排队,形成排队的速度大于处理的速度,越后面的分组等的时间越久 场景2:吞吐率降低一个路由器有有限的buffer Sender重传分组 ?因为重传造成了资源的浪费 定时器与丢失叠加造成了更多的重传 场景3?多跳产生了多个主机传输间的竞争 ?Q为什么拥塞控制在传输层做A应该是单个应用不知道其他应用是否也在发数据,所以就不能控制自己的发送速率。而多个应用的数据是汇总到传输层,所以传输层才知道数据是否太多 拥塞控制的方法端到端拥塞控制网络层不需要显式地提供支持 端系统通过观察loss,delay等网络行为判断是否发生拥塞 TCP采取这种方法 网络辅助的拥塞控制路由器向发送方显式地反馈网络拥塞信息(端系统利用信息来调节) 简单的拥塞指示(1bit):SNA,DECbit,TCP/IP ECN,ATM 指示发送方应该采取何种速率 ATM ABR拥塞控制ABR:available bit rate弹性服务 如果发送方路径“underloaded”负载低:使用可用带宽 如果发送方路径拥塞:将发送方速率降到最低保障速率 RM(resource management )cells穿插在data cells中间 发送方发送 交换机设置RM cell位(网络辅助) ? ? ? NI bit:rate不许增长 ? ? ? CI bit:拥塞指示 RM cell由接收方返回给发送方(得到了路径上所有的交换机RM cell,并返回给发送方) ? 在RM cell中有显式地速率(ER)字段:两个字节 ? ? ? 拥塞的交换机可以将ER置为更低的值 ? ? ?发送方获知路径所能支持的最小速率 数据cell中的EFCI位:拥塞的交换机将其设为1 如果RMcell前面的data cell的EFCI位被设为1,那么发送方在返回RM cell中置CI位 TCP拥塞控制TCP拥塞控制的基本原理Sender限制发送速率 设置一个变量叫拥塞窗口CongWin ?CongWin: 动态调整以改变发送速率 反应所感知到的网络拥塞 Q如何感知网络拥塞? A Loss事件=timeout或3个重复的ACK 发生loss事件后,发送方降低速率 Q如何合理的调整发送速率 A 加性增-乘性减:AIMD 拥塞避免机制 慢启动:SS 加性增-乘性减:AIMD原理:逐渐增加发送速率,谨慎探测可用带宽,知道发生loss 方法:AIMD Additive Increase:每个RTT将CongWin增大一个MSS-----拥塞避免 Multiplicative Decrease:发生loss后将CongWin减半 ?慢启动:SSTCP建立时,CongWin=1 eg:MSS=500 byte,RTT=200ms 初始速率=20kbps 可用带宽可能远远高于初始速率 希望快速增长 原理: ?当连接开始时,指数型增长 ?每个RTT将CongWin翻倍 收到每个ACK进行操作 初始速率很慢,但是快速攀升 Q何时应该指数性增长切换线性增长(拥塞避免)? 当CongWin达到Loss事件前值的1/2时? 实现方法: 变量Threshold Loss事件发生时,Threshold被设为Loss事件前CongWin值的1/2 蓝色为TCP早期版本:重新进入慢启动 黑色为后来版本:慢启动后,执行加性增-乘性减 Loss事件的处理?3个重复的ACKs: CongWin切到一半 然后线性增长 Timeout事件: CongWin直接设为1个MSS 然后指数增长 到达threshold后,再线性增长 Q为什么两个处理不同 3个重复ACKs表示网络还能够传输一些segments timeout事件表明拥塞更为严重 总结当CongWin低于Threshold,发送方处于慢启动阶段,CongWin指数增长 当CongWin大于Threshold,发送方处于拥塞避免阶段,CongWin线性增长 当收到3个重复ACKs时,Threshold减为原来CongWin的一半,CongWin=Threshold 当timeout时,Threshold减为原来CongWin的一半,CongWin=1 ?TCP拥塞控制算法rate≈CongWin/RTT,流水线机制一个RTT可能收到多个ACK,对于每个ACKCongWin+1,速率就成倍增长了 ?例题?TCP性能分析TCP吞吐率例子?Q:TCP在未来是否还适用 ?TCP连接丢包率极低,对链路的设计要求极高 TCP的设计有些参数不满足当今某些硬件需求了 高速网络下需要设计新的TCP TCP的公平性TCP是公平的 ?细线:最终TCP吞吐率相等 粗线:限制了整个带宽的瓶颈带宽R ? ?公平性与UDP(TCP吃亏)多媒体应用通常不使用TCP,以免被拥塞控制机制限制速率 使用UDP:以恒定速率发送,能够容忍丢失 产生了不公平 研究:对TCP有好的UDP公平性与并发性TCP连接?某些应用会打开多个并发连接 Web浏览器 产生公平性问题 例子:链路速率为R,已有9个连接新来的应用请求1个TCP,获得R/10的速率 新来的应用请求11个TCP,获得R/2的速率 传输层总结? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 8:45:36- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |