for-linux icon indicating copy to clipboard operation
for-linux copied to clipboard

TCP restransmissions appear when I connect a docker container to macvlan

Open fojminc opened this issue 7 years ago • 2 comments

  • [x] This is a bug report
  • [ ] This is a feature request
  • [x ] I searched existing issues before opening this one

Expected behavior

When I send data through docker containers there is no TCP retransmission.

Actual behavior

I have containers which are attached to bridge (docker default) and also macvlan network. During tests I've found out that if I'm doing a tcpdump on eth0 interface of the docker host machine I see many TCP re-transmissions. To analyse the problem I've used the following image: networkstatic/iperf3.

Steps to reproduce the behavior

  1. create a macvlan on docker host: docker network create -d macvlan --subnet=${SUBNET} --gateway=${GW} -o parent=${PARENT} ${NETWORK_NAME}

2.docker run -it --rm --name=iperf3-server -p 5201:5201 networkstatic/iperf3 -s

  1. docker network connect ${NETWORK_NAME} --ip={IP FROM SUBNET} iperf3-server

  2. LOCAL_IP=$(docker inspect --format "{{ .NetworkSettings.IPAddress }}" iperf3-server)

  3. docker run -it --rm networkstatic/iperf3 -c $LOCAL_IP

See output: docker run -it --rm networkstatic/iperf3 -c 192.168.204.9 Connecting to host 192.168.204.9, port 5201 [ 4] local 192.168.204.10 port 36518 connected to 192.168.204.9 port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-1.00 sec 1.50 GBytes 12.9 Gbits/sec 0 451 KBytes [ 4] 1.00-2.00 sec 1.84 GBytes 15.8 Gbits/sec 0 560 KBytes [ 4] 2.00-3.00 sec 1.86 GBytes 16.0 Gbits/sec 0 560 KBytes [ 4] 3.00-4.00 sec 1.66 GBytes 14.2 Gbits/sec 0 1.97 MBytes [ 4] 4.00-5.00 sec 1.84 GBytes 15.8 Gbits/sec 0 1.97 MBytes [ 4] 5.00-6.00 sec 1.30 GBytes 11.1 Gbits/sec 0 1.97 MBytes [ 4] 6.00-7.00 sec 1.70 GBytes 14.6 Gbits/sec 1171 1.02 MBytes [ 4] 7.00-8.00 sec 1.89 GBytes 16.2 Gbits/sec 423 1.24 MBytes [ 4] 8.00-9.00 sec 1.91 GBytes 16.4 Gbits/sec 0 1.24 MBytes [ 4] 9.00-10.00 sec 1.84 GBytes 15.9 Gbits/sec 0 1.24 MBytes


[ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.00 sec 17.3 GBytes 14.9 Gbits/sec 1594 sender [ 4] 0.00-10.00 sec 17.3 GBytes 14.9 Gbits/sec receiver

Please observe: RETR 1594

If I try to measure the performance from another VM on the same network through the macvlan interface I also have TCP re-transmissions.

  1. If I remove the container from macvlan no re-transmission appears. docker network disconnect ${NETWORK_NAME} iperf3-server

  2. docker run -it --rm networkstatic/iperf3 -c 192.168.204.9 Connecting to host 192.168.204.9, port 5201 [ 4] local 192.168.204.10 port 39320 connected to 192.168.204.9 port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-1.00 sec 1.30 GBytes 11.2 Gbits/sec 0 468 KBytes [ 4] 1.00-2.00 sec 1.72 GBytes 14.8 Gbits/sec 0 662 KBytes [ 4] 2.00-3.00 sec 1.62 GBytes 13.9 Gbits/sec 0 850 KBytes [ 4] 3.00-4.00 sec 1.75 GBytes 15.1 Gbits/sec 0 1.11 MBytes [ 4] 4.00-5.00 sec 1.88 GBytes 16.2 Gbits/sec 0 1.11 MBytes [ 4] 5.00-6.00 sec 1.84 GBytes 15.8 Gbits/sec 0 1.17 MBytes [ 4] 6.00-7.00 sec 1.87 GBytes 16.1 Gbits/sec 0 1.17 MBytes [ 4] 7.00-8.00 sec 1.89 GBytes 16.2 Gbits/sec 0 1.17 MBytes [ 4] 8.00-9.00 sec 1.89 GBytes 16.2 Gbits/sec 0 1.17 MBytes [ 4] 9.00-10.00 sec 1.87 GBytes 16.1 Gbits/sec 0 1.42 MBytes


[ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.00 sec 17.6 GBytes 15.2 Gbits/sec 0 sender [ 4] 0.00-10.00 sec 17.6 GBytes 15.2 Gbits/sec receiver

Please observ: RETR 0

Output of docker version:

Client:
 Version:      1.12.1
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   23cf638
 Built:        Thu Aug 18 17:52:38 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.1
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   23cf638
 Built:        Thu Aug 18 17:52:38 2016
 OS/Arch:      linux/amd64

output docker info

Containers: 8
 Running: 8
 Paused: 0
 Stopped: 0
Images: 23
Server Version: 1.12.1
Storage Driver: overlay
 Backing Filesystem: extfs
Logging Driver: syslog
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge macvlan null host overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 4.4.8
Operating System: VMware Photon/Linux
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 7.796 GiB
Name: TestServicelink-1
ID: FSS2:2UXX:7Y26:RLC7:GHI5:XYWR:MANT:DBXC:OVOL:DWVC:OCHO:TV7X
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Http Proxy:
Https Proxy: 
Registry: https://index.docker.io/v1/
Insecure Registries:
 

I am using docker on Photon OS as VM in ESXI 5.5

fojminc avatar Sep 15 '17 12:09 fojminc

resurrecting this thread as I'm seeing the same thing. Did you ever get to the bottom of it?

barbequesauce avatar Apr 30 '23 23:04 barbequesauce

Same here

Adam7288 avatar Aug 03 '23 21:08 Adam7288