kvmが大好きな僕です。
今回、ホストとゲストで高速ネットワーク通信を行う必要がでまして、NATとブリッジではどっちが速いのか、気になったので確かめてみました。

予想

  • NATが速いんじゃないの?kvmの機能だし。
  • ブリッジは、なんかルータ介して通信しそうだから遅そう。
  • NATで10Gbps, ブリッジで1Gbpsが妥当かな。

測定条件

以下の条件で測定しました。

  • ホスト
    • OS : Ubuntu Server 14.10
    • CPU : Intel Core i5-4460
    • メモリ : 16GB
    • NIC : Intel Gigabit CT Desktop Adapter EXPI9301CT
  • ゲスト
    • OS : Ubuntu Server 14.10
    • NIC : NAT(192.168.112.xx), Bridge(192.168.0.xxx)
  • 測定ソフトウェア
    • iperf 2.0.5

測定方法

ホスト上でiperfをサーバモードで起動する

1
$ iperf -s

ゲスト上でiperfをクライアントモードで起動する

まずはNAT接続

1
$ iperf -c 192.168.122.1 -i 10

次にブリッジ接続

1
$ iperf -c 192.168.0.xxx -i 10

測定結果

NAT接続

1
2
3
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   359 MBytes   301 Mbits/sec
[  3]  0.0-10.0 sec   359 MBytes   301 Mbits/sec

ブリッジ接続

1
2
3
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  38.1 GBytes  32.7 Gbits/sec
[  3]  0.0-10.0 sec  38.1 GBytes  32.7 Gbits/sec

ブリッジ速すぎわろた。
キャッシュが効きまくってる可能性がありますね。
怪しかったので、もう一つ実験。

scpでファイル転送

VMのイメージファイル(4GBくらい)を転送してみる。

1
2
# ブリッジ
docker                                                                    100% 4537MB 133.4MB/s   00:34
1
2
# NAT
docker                                                                    100% 4537MB 100.8MB/s   00:45

ブリッジのほうが速い。けど、iperfでの測定よりも差は小さい。

結論

ブリッジが速いから、ブリッジを使おう。NATはいらない子???
NATのほうが速いべ!!!って思って、OSの再インストールまでして設定した時間が無駄になった、、、