Hatena::ブログ(Diary)

驟雨のカーネル探検隊(只今遭難中w このページをアンテナに追加 RSSフィード Twitter

2011-11-28

[][]libvirtで色々な仮想NICの設定を使い分ける

virtio-netとvhost-net

参考:CentOS 6 - KVM - Enable vhost-net : Server World

modprobe vhost_net

VM起動時までにvhost_netがロードされているとvhost-netで、ロードされていないとvirtio-netで起動する模様。

ps ax|grep vhost

とかやると、vhost-netが有効なKVMプロセス引数にvhost=onが入っているので見分けられる。

tap

参考:libvirt: Domain XML format

typeがbridgenetworkになっている。

標準的な構成。

    <interface type='bridge'>
      <mac address='52:54:00:94:9a:a0'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>

macvtap

参考;libvirt: Domain XML format

(少なくとも0.9.0 on Ubuntu 11.10の)virt-managerには項目が無かったりするが、XMLを直に書けば対応できる。

libvirt的にはmacvtapと呼ばずにDirect attachmentらしい。

そういうのわかりにくくなるからやめて欲しい。

    <interface type='direct'>
      <mac address='52:54:00:94:9a:a0'/>
      <source dev='eth0' mode='bridge'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>

macvtapのモード

bridge

NICに属するノード間の通信をブリッジする。 bridge + tapとほぼ同じ動作。

vepa

VEPA対応スイッチパケットヘアピンフォワードしてくれる事を期待して全てのトラフィックスイッチに投げる、VEPAモード

private

macvtapインタフェースデフォルトゲートウェイとのみ通信出来る。

インタフェースとの通信を許可しない。

passthrough

macvtapと親デバイスの間の通信を単純なパススルーにする。

SR-IOVのVFをtap経由でVM提供するようなケースで使える。


感想

何度見ても、bridgeとmacvlan/macvtapが別の機能としてカーネル存在するのは設計がアレだから、な気がしてくる。

あと、カーネル内でKVMでの仮想ネットワークIOを解決するのにtapを通す必要ってあるのかな。何か無駄があるような…

VFをmacvtapでフックしてKVMに流すというのも、それはVMDqの仕事ではないのかしら、と。

SR-IOVで使える、みたいな書き方だけどVMDqを念頭においてたりするのかな。

defiantdefiant 2011/12/13 17:50 Ubuntu11.10のvirt-manager 0.9.0でmacvtapの設定GUIで出来ています.仮想NICを追加して,ソースデバイスのメニューの中にmacvtapという選択肢が.選択すると,モードを選択するメニューも出現します.このメニューは若干バグってる感じですが,ちゃんとbridgeとかVEPAとか選択出来て,xmlにも反映されてます.:-)

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

リンク元