TCP/IP RTT算法比较
TCP重传机制Timeout特点:
- 设长了,重发就慢,效率和性能差;
- 设短了,重发就快,可能导致没有丢就重发,增加网络拥塞,导致更多的超时,更多的超时导致更多的重发。
TCP协议引入2个概念:
RTT——Round Trip Time(一个数据包从发出去到回来的时间)
RTO---Retransmission TimeOut(重传超时时间)
1 经典算法
RFC793 经典算法:
- 采样RTT,记下最近好几次的RTT值。
- 做平滑计算SRTT(α 取值在0.8 到 0.9之间,α -加权移动平均),公式为:
SRTT = ( α * SRTT ) + ((1- α) * RTT) - 计算RTO(β 值一般在1.3到2.0之间)。公式为:
RTO = min [ UBOUND, max [ LBOUND, (β * SRTT) ] ]
说明:
- UBOUND是最大的timeout时间,上限值
- LBOUND是最小的timeout时间,下限值
优点:
- 算法简单
- RTT连续采样(包括正常和重传),采样简单
缺点:
- RTT采样方案,不能反应真实网络,即正常和重传区分不开
- 参数α是为了平滑SRTT。小的α值可以感受到 RTT 的微小变化,但可能会容易受到暂时波动的影响。大的α值更稳定,但可能不够快,无法适应真正的变化。
2 Karn / Partridge 算法
经典算法问题:
- 情况(a)是ack没回来,计算第一次发送和重传ACK的时间,算大了。
- 情况(b)是ack回来慢,计算重传时间和第一次ACK的时间,算小了。
Karn/Partridge算法:
- 不采样重传RTT,即仅采样正常传输TCP。
- TCP重传,RTO设置为当前RTO的2倍。公式为:
RTO=2 * RTO_cur
优点:
- 解决经典RTT采样问题
缺点:
- 参数α是为了平滑SRTT。小的α值可以感受到 RTT 的微小变化,但可能会容易受到暂时波动的影响。大的α值更稳定,但可能不够快,无法适应真正的变化。
- TCP重传退避算法固定。网络较差情况,RTO持续翻倍,重发就慢,效率和性能差,不能反应网络真实情况
3 Jacobson / Karels 算法
Jacobson/Karels算法:(其中的DevRTT是Deviation RTT)
- SRTT = SRTT + α (RTT – SRTT) :计算平滑RTT;
- DevRTT = (1-β)*DevRTT + β*(|RTT-SRTT|) :计算平滑RTT和真实的差距(加权移动平均);
- RTO= μ * SRTT + ∂ *DevRTT : 加权平均公式。
说明:
- 在Linux下,α=0.125,β=0.25,μ =1,∂=4
优点:
- 解决RTT不被感知问题,考虑RTT方差。方差较小,RTO接近SRTT;方差较大,导致DevRTT主导计算
TCP/IP RTT算法比较的更多相关文章
- tcp|ip nagle算法
在TCP传输数据流中,存在两种类型的TCP报文段,一种包含成块数据(通常是满长度的,携带一个报文段最多容纳的字节数),另一种则包含交互数据(通常只有携带几个字节数据). 对于成块数据的报文段,TCP采 ...
- Python Web学习笔记之图解TCP/IP协议和浅析算法
本文通过两个图来梳理TCP-IP协议相关知识.TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道.如图1所示,给出了TCP通信过程的示意图. 图1主要包括三部分:建立连接.传 ...
- TCP/IP详解 (转)
TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中 ...
- TCP IP详解(转)
大学学习网络基础的时候老师讲过,网络由下往上分为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 网络七层协议简称OSI.TCP/IP刨除了物理层,并把上三层(会话层.表示层和应用层)统称 ...
- 《TCP/IP详解卷1:协议》第19章 TCP的交互数据流-读书笔记
章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...
- TCP/IP Four Layer Protocol Format Learning
相关学习资料 tcp-ip详解卷1:协议.pdf 目录 . 引言 . 应用层 . 传输层 . 网络层 0. 引言 协议中的网络字节序问题 在学习协议格式之前,有一点必须明白,否则我们在观察抓包数据的时 ...
- RTSP RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议
RTSP 编辑 RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学.网景和RealNetwo ...
- 计算机网络及TCP/IP知识点(全面,慢慢看)
TCP/IP网络知识点总结 一.总述 1.定义:计算机网络是一些互相连接的.自治的计算机的集合.因特网是网络的网络. 2.分类: 根据作用范围分类: 广域网 WAN (Wide Area Networ ...
- TCP/IP详解之:TCP
第17章 TCP:传输控制协议 TCP提供了一种可靠的面向连接的字节流运输层服务 TCP的服务 尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务. TCP通过下 ...
- TCP/IP详解学习笔记 这位仁兄写得太好了
TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣 ...
随机推荐
- Python基础阶段总结:ATM项目实战
目录 ATM逻辑描述 三层框架简介 1.第一层(src.py) 2.第二层(interface文件夹下内容) 3.第三层(db_hanlder) 启动函数 用户注册功能 用户登录 common中的小功 ...
- EasyPoi大数据导入导出百万级实例
EasyPoi介绍: 利用注解的方式简化了Excel.Word.PDF等格式的导入导出,而且是百万级数据的导入导出.EasyPoi官方网址:EasyPoi教程_V1.0 (mydoc.io).下面我写 ...
- WebSocket心跳检测和重连机制
1. 心跳重连原由 心跳和重连的目的用一句话概括就是客户端和服务端保证彼此还活着,避免丢包发生. websocket连接断开有以下两证情况: 前端断开 在使用websocket过程中,可能会出现网络断 ...
- MYSQL5.7 保姆级安装教程
现在要是说mysql是什么东西,就不礼貌了 虽然有的同学没有进行系统的深入学习,但应该也有个基本概念 [不了解也没关系,后续会进行mysql专栏讲解]简单来说,存储数据的 学习mysql,就要先安装它 ...
- Go语言核心36讲02
你好,我是郝林,今天我分享的主题是,学习专栏的正确姿势. 到了这里,专栏的全部内容已经都推送到你的面前了.如果你已经同步学习完了,那么我要给你点一个大大的赞! 还没有看完的同学也不要着急,因为推送的速 ...
- hashlib/subprocess/logging模块
内容概要 hashlib加密模块 subprocess模块 logging日志模块 软件开发主要流程 加密详情 1.加密的意义: 加密是指将明文数据转化程密文数据>>>>为了保 ...
- Aspose.Cells设置单元格背景色不生效
Style.BackgroundColor property 获取或设置样式的背景颜色.public Color BackgroundColor { get; set; } 评论 如果要设置单元格的颜 ...
- kubernetes数据持久化PV-PVC详解(一)
官方文档地址: https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes/ 1. 什么是PV,PVC? 1.1 什么是P ...
- <十>关于菱形继承
代码1 #include <iostream> using namespace std; class A{ public: A(int _a):ma(_a){ cout<<&q ...
- IdentityServer4的最佳使用
简介 本人做微服务项目也有一段时间了,在微服务中让我感触颇深的就是这个IdentityServer4了,ID4(IdentityServer4的简称)中涉及的概念颇多,本文不谈概念(我怕读者没耐心 ...