Docker Network Tests under Host/Bridge Mode · Weiwei’s Blog

Docker Network Tests under Host/Bridge Mode

Recently we are considering to dockernize our computation slots and integrate them
into a Kubernetes like container management system. There are two network models
in docker, Host vs Bridge, and we have some debates on which one to adopt. This
post introduces some performance testing result to support our decision.

If you don’t know about docker network types, please see this docker document. I am testing
network performance with following scenarios.

  1. Docker container with Bridge mode
  2. Docker container with Host mode
  3. Physical machines without docker container

To measure the network performance, I am leveraging a Linux tool qperf.
The tests are really simple, in each scenario, use qperf to measure the network
bandwidth and latency between two hosts, where the a host can be a docker container
or a physical machine.

# install qperf
yum install qperf.x86_64

# On one host, start qperf server
qperf

# On the other host, run
qperf <host/ip> tcp_bw tcp_lat conf

Each case, I’ve run qperf for 5 times and counted an average value, see following result,

Env
bandwidth(Bridge)
bandwidth(Host)
bandwidth(Physical)
latency(Bridge)
latency(Host)
latency(Physical)

Same physical machine
4024
4639
4874
9.04
7.9
6.73

Two different physical machines
1010
1013
1035
20
17.5
17.1

Summary:

  1. If containers are running on same physical machine, network bandwidth under Host mode is
    15% bigger than Bridge mode, but 5% slower than just physical machine. Regarding of latency,
    it is 14% faster than Bridge mode but 17% slower than physical machine.
  2. If containers are running on two different physical machine, network bandwidth under Host mode is
    0.3% bigger than Bridge mode, but 2.2% slower than just physical machine. Regarding of latency,
    it is 14% faster than Bridge mode but 2.3% slower than physical machine.

Simply speaking, if running on same physical machine, Host mode is a lot better than Bridge;
however, if running on two different machines, Host mode is only slightly better, the performance
can both achieve nearly to what physical machine’s limit.