tcp拥塞分析七(scalble)

news/2024/5/17 19:52:10 标签: tcp, 拥塞避免

本文分析linux-4.19.12代码的scalble拥塞算法

hstcp相对reno算法,通过两个固定的值TCP_SCALABLE_AI_CNT和TCP_SCALABLE_MD_SCALE改变了拥塞避免阶段窗口增长速度,以及丢包后ssthresh的设置.

/* These factors derived from the recommended values in the aer:
 * .01 and and 7/8. We use 50 instead of 100 to account for
 * delayed ack.
 */
#define TCP_SCALABLE_AI_CNT	50U
#define TCP_SCALABLE_MD_SCALE	3

AI阶段(拥塞避免阶段):reno算法窗口增长速度为1/snd_cwnd,与当前的发送窗口有关,一个rtt增长一个窗口(会考虑延迟ack,不是简单加1而是加acked).注释已经很清楚了,TCP_SCALABLE_AI_CNT也考虑到了ack延迟的情况,但只是固定认为acked=2, 控制拥塞避免阶段,每收到一次ack窗口增长1/50个窗口. 一个rtt大约增加 snd_cwnd*(1/100)个窗口

MD阶段(超时丢包)减小ssthresh为7/8*snd_cwnd 相比reno固定降为1/2*snd_cwnd会多占用些带宽.

static void tcp_scalable_cong_avoid(struct sock *sk, u32 ack, u32 acked)
{
	struct tcp_sock *tp = tcp_sk(sk);

	if (!tcp_is_cwnd_limited(sk))
		return;

	if (tcp_in_slow_start(tp))
		tcp_slow_start(tp, acked);
	else
		tcp_cong_avoid_ai(tp, min(tp->snd_cwnd, TCP_SCALABLE_AI_CNT),
				  1);
}

static u32 tcp_scalable_ssthresh(struct sock *sk)
{
	const struct tcp_sock *tp = tcp_sk(sk);

	return max(tp->snd_cwnd - (tp->snd_cwnd>>TCP_SCALABLE_MD_SCALE), 2U);
}

 
 


http://www.niftyadmin.cn/n/1000190.html

相关文章

leetcode解题报告:10 Regular Expression Matching

问题描述:给定字符串s与模式串p,其 p中.可以匹配s中任意字符,*可以匹配0个或者任意多个之前字符, 判断模式串p是否匹配全部字符串s(不是部分)。例子:isMatch("aa","a") → …

独立双 N 拥塞窗口的TCP单边加速思想

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!让TCP以流水线方式工作靠谱吗?也…

ABAP开发顾问必备:SAP ABAP开发技术总结

该文档是根据我过去多年学习与工作经验总结而成,项目开发过程中我都会参考此文档,主要ABAP很多细节上的东西还是还多,不可能你记得很牢固,或者你记得一时,但过不了几天就会忘记,毕竟同一东西你不可能一直做…

在VM上安装centOS后的网络配置

花了点时间,研究了下VM上的linux虚拟机的网络配置问题。1.环境主机:winXP SP2,家庭宽带,局域网连到路由器,ip地址为192.168.1.101。虚拟机:centOS(redhat linux的开源免费版本),纯文…

tcp拥塞分析八(HTCP)

本文分析linux-4.19.12代码的htcp拥塞算法 与reno拥塞算法不同处,慢启动超过阈值ssthresh的ack直接忽略了; 拥塞避免阶段多了个参数ca->alpha.  开始ca->alpha=1<<7,与标准的reno增长速…

Google's BBR拥塞控制算法如何对抗丢包

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!我不知道该怎么说。总之,便舍船&…

mysql密码策略修改(password does not satisfy the current policy requirements)

1.查看当前策略.SHOW VARIABLES LIKE validate_password%; 2.修改策略 等级改为最低:set global validate_password_policyLOW; 长度改为6:set global validate_password_length6;

java程序main方法的参数String[] args

public class ArgsTest {public static void main(String[] args){System.out.println(args.length);for(int i0;i<args.length;i){System.out.println(args[i]);}}}javac ArgsTest.java编译程序。 执行java ArgsTest运行程序。 此外&#xff0c;java中也可以使用Scanner从键…