前面提到过TCP对网络乱序不宽容以及乱序传输:
TCP和宽容
TCP乱序传输

但也只提到了保序导致的不宽容。但拥塞控制对网络也不宽容。

传统拥塞控制的基本假设是拥塞点位于到达接收端的固定路径上。这个假设使路径调度很难展开。

  • 基于包的负载均衡无法实施,不仅因乱序问题,还因一条流的数据包分散在多条路径,拥塞更难识别。

  • flowlet调度无法实施,若捕捉到流的flowlet gap,并将其调度到另外路径,则影响拥塞控制所做测量的准确性。

  • SDN无法实施调度流量,原因同上,这会影响发送端测量值的准确性。

若一条流在一个buffer发生了溢出,而该溢出并非该流主动所为,可能是其它突发流量导致,若SDN控制器将该流实时调度到其它路径,此前的溢出事件依然会被发送端捕获并实施收敛。这并不是所希望的行为。

在一条固定路径上堵到死,这是传统拥塞控制的基本假设,几乎所有拥塞控制措施都基于此而定,比如BBR的lt限速,这种后天的假设本身就与分组交换网的基本属性相悖。

纵容固定路径假设的除了TCP保序传输,还有最短路径路由。若只有最短路径可选,即使最短路径已经开始拥塞,次优路径以及次次优路径资源也只能浪费,没有任何临时绕路的措施。

TCP保序和最短路径路由减少了传输的很多可能性。

有一种办法可随时启用次优路径,使用流体渗透路由模型替代最短路径模型,所有的路径均可被充分利用:
IDC网络传输新方法-流体渗透原理
IDC网络低时延无阻塞拥塞控制随想

但在公网,除非采用具有全局视角的SDN控制器,否则依靠分布式洪泛,实时排队延时参与加权的路由算法很难快速收敛,还是滞后性难题,等待路由重新收敛时,拥塞可能已经结束。

说完网络再说端。

传统拥塞控制旨在获得最大单流吞吐,最高总带宽利用率,最佳公平性,但这仅仅是文件下载场景的需求。
其它场景,比如音视频流传输只需适配码率,数据同步需求只需适配直到落盘整个过程的最慢环节。

以音视频传输为例,传统拥塞控制的AI,MD,probe 25%,drain 25%,probertt 4 inflights,这些主动的探测和收敛行为与固定编解码速率相冲突,需要buffer来平滑主动引入的抖动。

无论在网络还是在端,buffer都是拥塞控制所必须。网络buffer检测拥塞,端buffer平滑检测拥塞所做的收敛,二者神奇抵消。这本质上是由于拥塞控制既不认识网络,也不认识端。

拥塞控制自决是另一种方案。初始传输速率由应用显式指定,网络尽力传输,若无法满足,由端识别并协商降速或降级。按照编码速率传输,若不成,一起降低编码速率,就好过多了。

底层仅做兜底收敛,用于惩戒恶意连接。

TCP虽可恶,但已经成为事实上的传输标准,没办法。竟然有(我可没说全部)音视频流采用这种丢一个包就卡一个RTT的协议,对于很多业务流,真是一个字节也不能丢吗?我想是CDN纵容了HTTP。虽然HTTP本不限用TCP传输,但大家已经默认HTTP下面是TCP了,因此HTTP-Based基本也就是TCP-Based了。当大家都在无条件使用TCP的时候,也就接受了它的一切,包括缺陷,甚至新的QUIC协议也copy很多TCP feature,所谓优化版TCP。本系列专门抓一些TCP的不好,说说看。

浙江温州皮鞋湿,下雨进水不会胖。

TCP拥塞控制和宽容相关推荐

  1. tcp拥塞控制编程实验c语言代码,C语言 计算机网络TCP拥塞控制模拟程序

    帮助你更好地认识TCP拥塞控制的机制 #include "stdio.h" #include "stdlib.h" void show() { //system ...

  2. TCP流量控制-TCP拥塞控制 拥塞控制与流量控制的区别

    拥塞控制与流量控制的区别: 拥塞控制是让网络能够承受现有的网络负荷,是一个全局性的过程,涉及所有的主机.所有的路由器,以及与降低网络传输性能有关的所有因素. 相反,流量控制往往是指点对点的通信量的控制 ...

  3. 5.3.5 TCP拥塞控制

    5.3.5 TCP拥塞控制

  4. 【计算机网络】传输层 : 总结 ( TCP / UDP 协议 | 寻址与端口 | UDP 协议 | TCP 协议特点 | TCP 连接释放 | TCP 流量控制 | TCP 拥塞控制 ) ★★★

    文章目录 一.传输层 TCP / UDP 协议 ★ 二.寻址端口号 ★ 三.UDP 协议特点 四.UDP 协议首部格式 五.UDP 校验 六.TCP 协议 特点 ★ 七.TCP 报文段首部格式 八.T ...

  5. 【计算机网络】传输层 : TCP 拥塞控制 ( 慢开始 | 拥塞避免 | 快重传 | 快恢复 )

    文章目录 一.TCP 拥塞控制 二.TCP 拥塞控制算法 三.慢开始 和 拥塞避免 算法 四.快重传 和 快回复 算法 一.TCP 拥塞控制 TCP 拥塞控制 : ① 拥塞出现表现 : 资源需求总和 ...

  6. 计算机网络-基本概念(9)【传输层】TCP拥塞控制 【网络层】拥塞避免

    TCP拥塞控制 对网络中某一资源的需求超过了该资源(带宽.交换节点中的缓存.处理机)所能提供的可用部分.防止过多的数据注入网络中,防止路由器或链路过载,是属于全局性的过程,包括主机.路由器.链路等设备 ...

  7. s6-8 TCP 拥塞控制

    TCP 拥塞控制  虽然网络层也试图管理拥塞,但是,大多数繁重的任务是由TCP来完成的,因为针对拥塞的真正解决方案是减慢数据率  分组守恒:当有一个老的分组离开之后才允许新的分组注入网络  TC ...

  8. ​TCP 拥塞控制详解

    作者:engleliu,腾讯 PCG 开发工程师 本文主要介绍 TCP 拥塞控制算法,内容多来自网上各个大佬的博客及<TCP/IP 详解>一书,在此基础上进行梳理总结,与大家分享.因水平有 ...

  9. tcp拥塞控制_网络TCP的拥塞控制算法简介

    作为网络中使用最广泛的传输协议,TCP的拥塞控制机制是学术界和工业界关注的焦点问题之.然而,目前广泛使用的TCP传输协议的拥塞控制算法仍然使用相对固定的窗口调节策略,无法根据动态变化的场景自适应地调整 ...

最新文章

  1. How to recover from 'programmers burnout(转)
  2. lovely desktop
  3. 服务器上flash不显示动画,win10电脑在线预览不能加载flash
  4. deb php7 fileinfo,linux安装php7.2扩展fileinfo
  5. UVA11876 N + NOD (N)【欧拉筛法+前缀和】
  6. 那些年,我考过的IT证书
  7. java web实现文件下载的注意事项
  8. Android Eclipse 处理重构“AndroidPackageNameRefactoring”时捕获到异常
  9. 阿里的Atlas组件化框架
  10. JAVA毕业设计婚纱摄影网设计计算机源码+lw文档+系统+调试部署+数据库
  11. 【建议收藏】三月份开始,二十二个爬虫项目,无套路,附上源码 全部拿走
  12. 课程设计:波形发生器
  13. 中国建设银行信息技术类校招笔试心得
  14. 利用vim编辑器创建和编辑正文文件
  15. python项目--O2O优惠券线下使用情况数据分析
  16. MiniUI Api 方法
  17. Tair分布式锁 实践经验
  18. 从头开始,彻底理解服务端渲染原理
  19. IEEE754 详点
  20. win7所有视频格式都不显示缩略图的解决方法

热门文章

  1. 转: 多益网络2013校园招聘第二轮笔试题目
  2. COMBINING LABEL PROPAGATION AND SIMPLE MODELS OUT-PERFORMS GRAPH NEURAL NETWORKS(CorrectSmooth)阅读笔记
  3. Scrapy中的item和pipline
  4. adams语句_ADAMS模态力 - MSC技术文章 - 中国仿真互动网(www.Simwe.com)
  5. 超级时尚炫酷快速图文展示PR2021模板MOGRT|AE模板
  6. linux磁盘阵列教程,RAID 磁盘阵列简述
  7. 一次控制文件control file sequential read 等待性能案例分析
  8. 让你的应用完美适配平板
  9. 怎么将知网论文caj导出word文件
  10. linux上使用FTP下载远程PTF远程文件