tcp性能

慢启动、拥塞预防、快速重发和快速恢复
主要性能参数包括带宽,时延,抖动和丢包率,这些用一个名词代替,就是QOS(服务质量)

拥塞预防及控制

1.流量控制

流量控制是一种预防发送端过多向接收端发送数据的机制。为了实现流量控制,TCP连接的每一方都要通告自己的接收窗口(rwnd),其中包含能够保存数据的缓冲区空间大小信息。
如果网络实际传输率远低于理论值,则可能是rwnd设置不合理造成的;

rwnd的合理值取决于BDP的大小,也就是带宽和延迟的乘积。假设带宽是 100Mbps,延迟是 100ms,那么计算过程如下:

BDP = 100Mbps * 100ms = (100 / 8) * (100 / 1000) = 1.25MB

此问题下如果想最大限度提升吞度量,接收窗口rwnd的大小不应小于 1.25MB。
tcp性能_第1张图片
慢启动、拥塞预防、快速重传和快速恢复

拥塞预防
TCP调节性能依赖于丢包反馈机制。拥塞预防算法把丢包作为网络拥塞的标志,即路径中某个连接或者路由器已经拥堵,
以至于必须采取删包策略。因此,需要调整窗口大小,以避免更多的包丢失,保证网络畅通。
重置拥塞窗口后,拥塞预防机制按照自己的算法来增大窗口以及尽量避免丢包。
慢启动
新的TCP链接最大数据量取决于RWND和CWND的最小值。慢启动导致了客户端与服务器之间经过几百毫秒才能够达到接近最大速度的问题,
对于大型流式下载服务影响不显著,但对于大多数的HTTP连接,特别是一些短暂、突发的连接,常常会出现还没达到最大窗口请求就被终止的情况,
很多Web性能受到服务器与客户端之间往返时间的制约。慢启动限制了可用的吞吐量,对于小文件传输十分不利。

服务器配置调优
【1】增大TCP的初始拥塞窗口
加大拥塞窗口能够让TCP在第一次往返中就可以传输较多的数据,而随后的速度提升明显。对于突发性的短暂连接,这是一个很重要的优化的点。
【2】慢启动重启
在连接空闲时禁用慢启动可以改善瞬时发送数据的长TCP连接的性能。
【3】窗口缩放(RFC 1323)
启用窗口缩放可以增大最大接收窗口的大小,可以让高延迟的连接达到更好的吞吐量。
【4】CP快速打开
在某些条件下,允许在第一个SYN分组中发送应用程序数据。不过需要发送端和客户端同时支持TFO(TCP快速打开)

所谓的慢启动门限就是说,当拥塞窗口超过这个门限的时候,就使用拥塞避免算法,而在门限以内就采用慢启动算法。所以这个标准才叫做门限,通常,拥塞窗口记做cwnd,慢启动门限记做ssthresh。下面来看看拥塞避免和慢启动是怎么一起工作的。

算法概要

https://www.cnblogs.com/losbyday/p/5847041.html

TCP的拥塞控制由“慢启动(Slow start)”和“拥塞避免(Congestion avoidance)”组成,后来TCP Reno版本中又针对性地加入了“快速重传(Fast retransmit)”、“快速恢复(Fast Recovery)”算法,再后来在TCP NewReno中又对“快速恢复”算法进行了改进,出现了选择性应答(selective acknowledgement,SACK)算法,还有其他方面大大小小的改进。拥塞控制机制成为网络研究的一个热点。

拥塞现象是指到达通信子网中某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象,严重时甚至会导致网络通信业务陷入停顿即出现死锁现象。
(1)拥塞窗口(cwnd):拥塞控制的关键参数,控制源端在拥塞情况下一次最多能发送多少个数据包。
(2)接收窗口(rwnd):接收端对源端发送窗口大小所做的限制,在建立连接时接收方通过ACK确认带给源端。
(3)通告窗口(awnd):接收方TCP缓存当前的大小,此窗口就是TCP内核的缓冲区大小,通常要求其为MSS的偶数倍。
(4)慢启动阈值(ssthresh):拥塞控制中用来限制发送窗口大小的阈值,它是慢启动阶段与拥塞避免阶段的分界点,初始值设为65535B或awnd的大小。
(5)往返时延(RTT):从发送端发送数据开始,到发送端接收到来自接收端的确认(接收端接收到数据后便立即发送确认),总共经历的时延。
(6)超时重传计时器(RTO):描述数据包从发送到失效的时间间隔,是源端用来判断数据包是否丢失和网络拥塞的重要参数,通常设为2RTT或5RTT。
(7)带宽时延乘积(Bandwidth Delay Product,BDP):表示一个连接的通道容量,表示为BDP = Capacity(b) = Bandwidth(b/s)*RTT(s)。

你可能感兴趣的:(Linux)