WALL-E / tcp-ip-labs

tcp ip labs
2 stars 1 forks source link

TCP拥塞控制 #10

Open WALL-E opened 7 years ago

WALL-E commented 7 years ago

关键参数

内核参数

WALL-E commented 7 years ago

窥探连接

ss -ti sport == :22

State      Recv-Q Send-Q Local Address:Port                 Peer Address:Port
ESTAB      0      0      172.28.32.101:ssh                  172.28.66.22:63527
     cubic wscale:5,7 rto:201 rtt:0.888/0.845 ato:40 mss:1448 cwnd:10 ssthresh:136 send 130.5Mbps lastsnd:3 lastrcv:5 lastack:3 pacing_rate 260.8Mbps retrans:0/1 reordering:6 rcv_rtt:4 rcv_space:28960

几个关键值

按每条路由进行度量

[root@dockerHost-102 ~]# ip tcpmetrics|grep ss
23.23.78.154 age 541419.983sec rtt 349500us rttvar 349500us ssthresh 2 cwnd 1 metric_5 2796353 metric_6 1398176

自定义路由度量

ip route replace 172.28.32.102/32 via 172.28.32.101 ssthresh 24 initcwnd 10 initrwnd 65535 congctl reno
WALL-E commented 7 years ago

拥塞算法

Linux中不能关闭tcp拥塞算法。当前内核,默认的拥塞算法是cubic,可用的拥塞算法有:

设置方式

查看内核支持哪些拥塞算法

[root@vagrant-172-28-32-101 linux-3.10.107]# cat /boot/config-`uname -r`|grep "CONFIG_TCP_CONG"
CONFIG_TCP_CONG_BIC=m
CONFIG_TCP_CONG_CUBIC=y
CONFIG_TCP_CONG_WESTWOOD=m
CONFIG_TCP_CONG_HTCP=m
CONFIG_TCP_CONG_HSTCP=m
CONFIG_TCP_CONG_HYBLA=m
CONFIG_TCP_CONG_VEGAS=m
CONFIG_TCP_CONG_SCALABLE=m
CONFIG_TCP_CONG_LP=m
CONFIG_TCP_CONG_VENO=m
CONFIG_TCP_CONG_YEAH=m
CONFIG_TCP_CONG_ILLINOIS=m
CONFIG_TCP_CONG_DCTCP=m
WALL-E commented 7 years ago

实验前置条件

  1. 两台主机
    • 172.28.32.101 (服务端)
    • 172.28.32.102(客户端)
  2. 安装sock程序(两个服务器) 参见 https://github.com/WALL-E/sock
  3. 安装iproute2(172.28.32.102) 参见 https://github.com/WALL-E/static
  4. 安装tcpdump
  5. 前置条件, 关闭网卡offload特性(两个主机)
    ethtool -K eth0 tso off gso off gro off
  6. 配置TCP拥塞控制参数(172.28.32.102)
    ip route replace 172.28.32.101/32 via 172.28.32.101 ssthresh 32 initcwnd 1 initrwnd 65535 congctl reno
WALL-E commented 7 years ago

吾生也有涯,而知也无涯。以有涯随无涯,殆已;已而为知者,殆而已矣!