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

长肥网络与TCP的长肥管道

本文目录

  • 1、简化的理解网络模型
  • 2、时延带宽积的定义
  • 3、长肥网络与TCP长肥管道的定义
  • 4、TCP长肥管道的特征及对TCP性能的影响
    • 4.1、TCP长肥管道的二大特征:
    • 4.2、TCP长肥管道对TCP性能的影响:
  • 5、TCP长肥管道中如何正确设置iperf3的参数

从文章ip网络的时延:传输时延(发送时延),传播时延,处理时延,排队时延我们已经知道了发送时延(传输时延)的定义: 传输时延=数据帧长度(b)/信道带宽(b/s),所以可知传输时延(发送时延)和带宽成反比

1、简化的理解网络模型

所以我们可以将一个不丢包,不抖动,不误码(出错误包),没有排队时延,没有处理时延的理想网络模型简化为二个特征:

  • 带宽(和传输时延(发送时延)成反比)
  • 传播时延

2、时延带宽积的定义

时延带宽积=传播时延*带宽

3、长肥网络与TCP长肥管道的定义

  • 长肥网络:
    时延带宽积很大的网络叫做长肥网络(LFN,long fat network的缩写)。
  • TCP长肥管道
    在LFN中建立的TCP链接叫做长肥管道。这里注意了,长肥管道是TCP专有的,UDP不具备这个概念。

可以将TCP的长肥管道理解为高速公路,而每个被传输的数据包都是一辆行驶的小汽车,如果一辆接一辆的排满汽车,并且所有汽车都以相同的速度开行,则高速公路上可以容纳很多的小汽车,但如果高速公路很长,每个小汽车从起点到终点还是要花费很多时间。

在这里插入图片描述

4、TCP长肥管道的特征及对TCP性能的影响

4.1、TCP长肥管道的二大特征:

  • 传输时延(发送时延)很小
    收发包速度很快,非常短的时间就能把大量的数据发送到网络上。
  • 传播时延很大
    数据包从发送到网络上开始,要给过很长的时间(相比于发送时延)才能传送到接收端

4.2、TCP长肥管道对TCP性能的影响:

  • 长肥管的带宽延时积很大(发送很快,传播到另外一端需要很长时间),
    导致会有大量的数据包正在传输途中,我们都知道,TCP流控算法会在窗口变成0时停止发送。但原始的TCP头部的窗口大小字段是16位的,因此窗口大小最大为65535字节,这就将发送方发送但未被确认的数据的总长度限制到了65536字节。参考计算 65535*8/1024/1024 = 0.5Mbps,那么假设发送速度足够快的前提下,在传播时延为100毫秒的网络里,只要5Mbps的带宽就可以做到在第一个bit还没有到达接收端时,发送端就已经发送完了最后一个bit, 然后窗口变成0,停止发送数据,还要等待至少100毫秒发送端才能收到接收端发回来的接收窗口通告,然后才能打开窗口继续发送,意味着最多只能使用到5Mbps的带宽,因此不能充分利用网络。------由此提出了窗口扩大选项以声明更大的窗口.

  • 长肥管的延时较高
    据TCP的拥塞控制,丢失分组会导致连接进行拥塞控制,即便是由于冗余ACK而进入了快速恢复,也会使得拥塞窗口降低一半,而如果是由于超时进入了慢启动,则拥塞窗口会变为1,无论是哪一种情形,发送方允许被发送的数据量都大量减小了,这会会使得管道枯竭(即网络通信速度急剧下降), 采用快重传快恢复算法可以部分解决这个问题。

  • 提高长肥管的吞吐量, 长肥管一般声明很大的窗口值, 而这样不利于RTT的测量
    按TCP协议,每个TCP连接只有一个RTT计时器, 同一时间,只有一个报文做RTT测量,启动RTT计时的数据在没有被ACK前, TCP无法进行下一次RTT的测量。而在长肥管道中,传播时延很大,这意味着RTT的测试周期很大。-----引入时间戳选项提高测试RTT的频率

  • 长肥管的发送速度非常快(发送时延)
    TCP对每个字节数据使用一个32bit无符号的序号来进行标识。TCP定义了最大的报文段生存时间(MSL)来限制报文段在网络中的生存时间。但是在LFN网络上,由于序号空间是有限的,在已经传输了4294967296个字节以后序号会被重用。如果网络快到在不到一个MSL的时候序号就发生了回绕,网络中就会有两个具有相同序号的不同的报文段,接收方将无法区分它们的顺序。在一个千兆比特网络(1000Mb/s)中只需要34秒就可以完成4294967296个字节的发送。------引入TCP的时间戳选项的PAWS(ProtectionAgainstWrappedSequencenumbers)算法(保护回绕的序号)。

5、TCP长肥管道中如何正确设置iperf3的参数

现在的网络,通常是大带宽的,如果有中间一些设备产生的延时,则很容易产生长肥管道的问题,通过本文,我们已经知道了TCP长肥管道中,TCP的性能很差,很难充分利用网络带宽,那么如果要对这样的网络进行测试,得到网络的最大吞吐量,我们应该如何设置iperf3的参数呢。
其实逻辑很简单,主要就是二个思路:

  1. 扩大TCP窗口,停止拥塞控制算法,以提高网络利用率
  2. 一条TCP连接无法占满整个带宽,那么就考虑同时使用多条TCP连接,使用更多的TCP连接去占满带宽
    具体参见文章长肥网络中如何正确的使用iperf3进行TCP最大吞吐量测试

http://www.kler.cn/a/1306.html

相关文章:

  • 金融项目实战 01|功能测试分析与设计
  • Flink三种集群部署模型
  • 基于华为ENSP的OSPF状态机、工作过程、配置保姆级别详解(2)
  • MiniMind - 从0训练语言模型
  • 获得PostgreSQL中级认证后,可以从事哪些工作岗位?
  • 消息中间件类型介绍
  • 漫画:什么是选择排序?
  • 比df更好用的命令!
  • 一行代码“黑”掉任意网站
  • 关键字 const
  • 没有关系的话,那就去建立关系吧
  • 各种交叉编译工具链的区别
  • 【宝塔面板部署nodeJs项目】网易云nodeJs部署在云服务器上,保姆级教程,写网易云接口用自己的接口不受制于人
  • 第一个 Qt 程序
  • 数论作业 —— 公约数公倍数问题
  • 【数据结构】还不懂算法复杂度?一文带你速解
  • 【linux】多线程概念详述
  • OpenCV实战——拟合直线
  • 7个最受欢迎的Python库,大大提高开发效率
  • 设计模式之单例模式~
  • 9. C#面向对象基础
  • 同一片天空共眠,同一个梦想奋斗《大抠车始歌》(1)
  • Nacos 注册中心 - 健康检查机制源码
  • jupyter的安装和使用
  • 10 个超赞的 C 语言开源项目
  • Cocoa-EventHandle