読者です 読者をやめる 読者になる 読者になる

Xenテスト 1

Xenの実験。
日本語のXenの情報は少なすぎる気がする。
※以下の情報はデタラメな可能性が高いので信用しないでください


まずインストール。
インストールは、最近はrpmでサクッとできてしまうので面白くない。


次にネットワーク。
これがうまくいかない。


Xenのネットワークの構築手段はブリッジとNATとルーティングがあるが、VIVER的にブロードキャストが届かないと困るので、必然的にブリッジになる。
xendの設定ファイルでブリッジを行うように設定しておくと、xendの起動時に自動的にブリッジが構築される。(/etc/xen/scripts/network-bridgeスクリプトが実行される)


ただその構築方法が非常にトリッキー。
Xenカーネルで起動すると、veth0やvif0.0といったネットワークインターフェースが現れる。
いろいろ調べると、veth0はeth0のループバックインターフェースとか言うもので、eth0のコピーとして動くのではないかと思われる。つまりeth0に入ってくるパケットはveth0にもコピーされ、eth0から出ていくパケットはveth0からも出ていく。
vif0.*は、VMのNICに繋がる。
1番めのVMのNICは、vif0.1に繋がる。


/etc/xen/scripts/network-bridgeを解析すると、動作は大まかに以下の様になっている。

ネットワークブリッジ「xenbr0」を作成
eth0のMACアドレスや、割り振られたIPアドレスをveth0に移す
eth0の名前をpeth0に変更
veth0の名前をeth0に変更
xenbr0にpeth0(中身はeth0)を登録
xenbr0にvif0.0を登録

eth0という名前はブリッジを構築する前と後で同じように使え、かつpeth0(eth0)がxenbr0に登録されているので、今後起動するVMのNIC(vif0.1とかvif0.2とか)をxenbr0に登録することで、eth0のネットワークにブリッジすることができる。


…と言う狙いなのだと思う。
が、うまくいかない。


自動設定スクリプトに頼らずに、自分でブリッジした方が良さそうな気がする。
それから、veth0と言うのはどうも微妙な気がする。


ということで、以下の戦略で行こうと思う。

ネットワークブリッジ「xenbr0」を作成
eth0に割り振られているIPアドレスを記録しておく
eth0の名前をpeth0に変更
xenbr0の名前をeth0に変更
eth0(中身はxenbr0)にpeth0(中身はeth0)を登録
eth0(中身はxenbr0)にvif0.0を登録
記録しておいたIPアドレスをeth0(中身はxenbr0)に割り振る

ネットワークブリッジのMACアドレスは、それに一番最初に登録したNICと同じになる、と言う記憶があるので、これでeth0という名前をブリッジする前と後で同じように使えるはず。veth0は使っていない。


ネットワークブートしたマシンでブリッジを構築すると、一瞬ネットワークが断絶するので、そこでハングアップしてしまうと思う。
VIVERのネットワークブートしたマシンをXenのDom0にするには、VIVER本体プログラムの中(正確にはpivot_rootする前)でブリッジを構築しないといけない。