Я пытаюсь отладить низкую скорость передачи TCP на хосте (lowHost).
Для справки я сравниваю его со вторым хостом («highHost»).
Я делаю два измерения скорости:
lowHost проходит через дополнительный сетевой переход («маршрутизатор») по сравнению с highHost.
lowHost ---(router)----->(fw)----> internet ----> webserver
highHost ---------------->(fw)----> internet ----> webserver
«Router» - это хост Linux, который nat’s (iptables) маршрутизирует трафик между группой сетевых интерфейсов.
Я пытаюсь понять, не является ли этот маршрутизатор причиной низкой скорости TCP.
Я предполагаю, что низкая скорость вызвана всплесками задержки, которые ограничивают tcp cwnd.
| lowHost | highHost
--------------------------------------------------------------------------------
curl rate | 40Mbps rate | 400Mbps rate
curl wshark “rtt” | ~100 pkts with rtt>100ms | ~5 pkts with rtt>100ms
curl rwnd | 3MB | 3MB
curl cwnd | 0.2MB | 2.5MB
--------------------------------------------------------------------------------
iperf tcp rate | 100Mbps | 700Mbps
iperf tcp wshark “rtt” | 0 pkts with rtt>100ms |
iperf tcp cwnd | 0.5MB |
--------------------------------------------------------------------------------
iperf udp rate | 350Mbps |
ping stats:
lowHost --> webserver
79 packets transmitted, 79 received, 0% packet loss, time 78077ms
rtt min/avg/max/mdev = 33.285/33.664/38.176/0.800 ms
highHost --> webserver
108 packets transmitted, 108 received, 0% packet loss, time 106949ms
rtt min/avg/max/mdev = 32.684/32.855/39.706/0.689 ms
Я использовал systemtap, чтобы проверить продолжительность вызова ip_forward в ядре, чтобы увидеть, не является ли он источником всплесков задержки.
При выборке более 60 секунд максимальная длительность вызова ip_forward составляет 8 мс, что недостаточно для учета задержки, наблюдаемой в wirehark «rtt».
Если это не маршрутизатор, что это может быть еще?
Если это маршрутизатор, а не задержка, что еще это может быть?
Есть ли статистика сокетов, которая может указать мне на проблему (/ bin / ss)?
почему скорость iperf в два раза выше скорости завивки?
Графики производительности wirehark / rtt / rwnd / cwnd: