Top > CentOS6上のKVMでipv6を使う時の注意

キーワード CentOS6 KVM bridge ipv6 MTU e1000 virtio 速度 ロス


ハマったのでメモ

問題の発生条件:

  • ホストマシン: CentOS6-x86_64
  • ゲストマシン: KVM-CentOS6-x86_64
    • NIC: br0 (virtio)
    • IPv6を有効化
    • Apache2.2を稼働
  • 外からゲストのApacheにリクエストする

この条件で, IPv6通信するとやたらと速度が遅い. 400Kbpsくらいしか出ない. そのうえ受け取ったデータが壊れている.

最初はMTUの問題を疑い, ゲストのeth0のMTUを1480に設定してみたところ, Linuxサーバからの通信は速くなった(データが壊れたかは検証していない).
ところがWindowsXPからの通信は改悪して全く見えない状態になっていた.

試行錯誤の結果, 仮想マシンの設定でNICドライバをvirtioからe1000に 変えたところ, 嘘のように解決.

どうやらvirtioドライバに何らかの欠陥(バグ)があるようだ.

IPv6通信のトラブルが解決したのは良いが, ドライバを変えたことで 最大の通信速度が 約600Mbps → 約100Mbps に低下してしまった.

IPv4の通信速度を損なわず、加えてIPv6で安定通信する解決

  • 仮想マシン設定でNICを追加(br0にeth0, eth1両方を繋げる)
  • 仮想マシンのNICドライバ設定:
    • eth0=e1000
    • eth1=virtio
  • IP設定:
    • eth0-IPv4: 127.1.1.1/32
    • eth0-IPv6: 使いたいIPv6アドレス
    • eth1-IPv4: 使いたいIPv4アドレス
    • eth1-IPv6: 未定義

eth0側にIPv6を持ってくるのがポイントで, この設定でIPv4の通信速度を犠牲にすることなく IPv6で100Mbpsの安定通信ができるようになった.




新規 編集 添付 名前変更 バックアップ   ホーム バックアップ リンク元   最終更新のRSS