docker docker 网络中的 tcp 重传
docker tcp retransmission in docker network
TCP 重新传输发生在任何 docker 网络上。
简单测试:在Azure、centos 7,7中创建VM
yum update
yum install docker
systemctl start docker
docker run --name mynginx1 -P -d nginx
tshark -tad -i any -Y "tcp.analysis.retransmission"
curl localhost:32768
这导致发生 TCP 重传。
[root@vm1 ~]# tshark -tad -i any -Y "tcp.analysis.retransmission"
Running as user "root" and group "root". This could be dangerous.
Capturing on 'any'
121 2020-04-24 07:26:55.504210673 109.81.211.189 -> 10.0.0.4 SSH 92 [TCP Retransmission] Encrypted request packet len=36
418 2020-04-24 07:27:04.982215355 109.81.211.189 -> 10.0.0.4 SSH 92 [TCP Retransmission] Encrypted request packet len=36
572 2020-04-24 07:27:10.746826933 172.17.0.1 -> 172.17.0.2 HTTP 147 [TCP Retransmission] GET / HTTP/1.1
576 2020-04-24 07:27:10.747858244 172.17.0.2 -> 172.17.0.1 TCP 307 [TCP Retransmission] http > 40514 [PSH, ACK] Seq=1 Ack=80 Win=29056 Len=239 TSval=1217913 TSecr=1217912
580 2020-04-24 07:27:10.747930345 172.17.0.2 -> 172.17.0.1 TCP 680 [TCP Retransmission] http > 40514 [PSH, ACK] Seq=240 Ack=80 Win=29056 Len=612 TSval=1217914 TSecr=1217913[Reassembly error, protocol TCP: New fragment overlaps old data (retransmission?)]
Kubernetes 上同样的问题(使用 flannel 插件测试)
这个问题显着降低了容器的性能,在我们的例子中,docker 中的高性能消息解析器的结果减少了 4 倍。使用 docker 主机网络可以解决问题。但是使用桥接网络会导致这个问题。
请问advice/help?
供参考-重传的原因从wireshark中看到为outoforder/duplicate
enter image wireshark trace detail
最终我们确定了基于Alpine的使用图像中的问题。在我们将 docker 基本映像移动到 debian/ubuntu 后,重传问题消失了。
TCP 重新传输发生在任何 docker 网络上。
简单测试:在Azure、centos 7,7中创建VM
yum update
yum install docker
systemctl start docker
docker run --name mynginx1 -P -d nginx
tshark -tad -i any -Y "tcp.analysis.retransmission"
curl localhost:32768
这导致发生 TCP 重传。
[root@vm1 ~]# tshark -tad -i any -Y "tcp.analysis.retransmission"
Running as user "root" and group "root". This could be dangerous.
Capturing on 'any'
121 2020-04-24 07:26:55.504210673 109.81.211.189 -> 10.0.0.4 SSH 92 [TCP Retransmission] Encrypted request packet len=36
418 2020-04-24 07:27:04.982215355 109.81.211.189 -> 10.0.0.4 SSH 92 [TCP Retransmission] Encrypted request packet len=36
572 2020-04-24 07:27:10.746826933 172.17.0.1 -> 172.17.0.2 HTTP 147 [TCP Retransmission] GET / HTTP/1.1
576 2020-04-24 07:27:10.747858244 172.17.0.2 -> 172.17.0.1 TCP 307 [TCP Retransmission] http > 40514 [PSH, ACK] Seq=1 Ack=80 Win=29056 Len=239 TSval=1217913 TSecr=1217912
580 2020-04-24 07:27:10.747930345 172.17.0.2 -> 172.17.0.1 TCP 680 [TCP Retransmission] http > 40514 [PSH, ACK] Seq=240 Ack=80 Win=29056 Len=612 TSval=1217914 TSecr=1217913[Reassembly error, protocol TCP: New fragment overlaps old data (retransmission?)]
Kubernetes 上同样的问题(使用 flannel 插件测试)
这个问题显着降低了容器的性能,在我们的例子中,docker 中的高性能消息解析器的结果减少了 4 倍。使用 docker 主机网络可以解决问题。但是使用桥接网络会导致这个问题。
请问advice/help? 供参考-重传的原因从wireshark中看到为outoforder/duplicate enter image wireshark trace detail
最终我们确定了基于Alpine的使用图像中的问题。在我们将 docker 基本映像移动到 debian/ubuntu 后,重传问题消失了。