KVMネットワーキングを行うためのさまざまな方法を見つけました。しかし、私はそれを行うための正しい方法は何かにこだわっています。 openstackがmacvtapを使用してneutronネットワーキングを行うことを発見しました。そしてそれはよさそうだ。
しかし、違いは何であり、各方法を使用する理由は何ですか。
方法1 [古い? TUN/TAP]
http://www.shakthimaan.com/installs/debian-tun-tap-setup.html
/--------\ /----\ /----\ /----\ /--------\
|Internet|---|eth0|---|br0 |---|tap0|---|Guest NIC
\--------/ \----/ \----/ \----/ \--------/
非推奨ですよね?
方法2 [Bridge + Vnet] <-それがvirt-managerのすることです
http://www.linux-kvm.com/content/using-bridged-networking-virt-manager
基本的に、物理インターフェイスを内部に持つブリッジインターフェイスを作成し、
auto br0
#iface br0 inet dhcp
iface br0 inet static
address 172.16.0.100
network 172.16.0.0
netmask 255.255.0.0
broadcast 172.16.255.255
gateway 172.16.0.1
bridge_ports eth2
bridge_stp off
bridge_fd 0
bridge_maxwait 0
また、virt-managerから仮想マシンを起動すると、vnetインターフェースが作成され、ブリッジに追加されます。少なくとも私の知るところまで。 tun/tapインターフェイスは必要ありません。
それは長い間非常にうまく機能しましたが、今では生意気で私は問題を見つけました。
https://bugs.launchpad.net/ubuntu/+source/core-network/+bug/1255516
TAPインターフェイスなしで新しいvnetインターフェイスをブリッジに追加できるのはなぜですか?
方法3 [MACVTAP]
最後はmacvtapインターフェースです。
http://virt.kernelnewbies.org/MacVTap
TUN/TAPソフトウェアインターフェイスをコピーしますが、より良い方法で行います。どのような方法がわからないが、それは良いようです。
2番目の方法に対するmacvtapの利点は何ですか?
何がいいですか?
これに関する助けはありますか?
本当に何を達成したいかによって異なります
VMまたは物理マシンは関係ありません。 TUNはトンネル化されたネットワークをもたらし、デバイスをTAPします。つまり、トンネル化されたネットワークを経由して別のネットワークに到達します。
たとえば、OpenVPNネットワークを構成すると、クライアントに10.8.0.6が与えられます。 VPNサーバー10.8.0.1は、リクエストを背後の別のネットワーク(192.168.x.xなど)にルーティングします。 TAPを使用する場合、ターゲットネットワーク(192.168.10.x/24)から直接IP(192.168.10.10/24)を受け取ります。シンプル。
「Linux Bridge」は、VNET(VMから)を物理イーサネットにブリッジします。 VM(KVMベース)が必要な場合、ブリッジはホスト上のvnetとイーサネットの間で必須です
ユースケースに依存すると思います。
仮想ホストの自動追加/削除?
Macvtapを試してみてください。 Shouldまた、macvtapがネットワークスタックをバイパスし、タップキャラクターデバイスを直接エクスポートします。しかし、それに私を釘付けしないでください。両方(macvlan/macvtap)が同じ利用可能なモード(VEPA /ヘアピン、ブリッジング、プライベート)を共有することに加えて、スイッチが反射リレーモードをサポートしている場合にのみヘアピニングが機能します。 (ポートxの物理スイッチに到着したパケットは、同じポートxで再びスイッチを離れることができなければなりません。)
Eth0(または使用する方)はブリッジを使用すると無差別モードになるため、macvXXXモードはスループットが高いと言われています。
モードは分離の「量」も定義します(vhostはお互いのトラフィックを見ることができますか?hvはどうですか?)。これが内部でどのように機能するかはまだわかりません。
veth(仮想イーサネットペア)は分離に関して多少似ています。2つの仮想インターフェイスを定義します。1つはブリッジに接続され、もう1つはVMに接続されます。そこで、vm-interfaceを独自の名前空間に配置することで分離が行われるため、デバイスはある程度分離されます。すべてのトラフィックはブリッジでまとめられますが、ある仮想ホストは別の仮想ホストを見ることができません。
ブリッジを使用する場合、追加の設定が必要です。ブリッジがダウンすると、すべての接続もダウンします。ブリッジを再起動するとき、すべての仮想インターフェイスをブリッジに再接続する必要があります(または、完全なhv ...を再起動するだけです)。
結論:トポロジを頻繁に変更しない場合は、オンラインで最も多くの情報を見つけるので、ブリッジングを行ってください。カーネルコードを読むよりも優れています。ちなみに、iproute2-docパッケージ自体でさえ、bleeding-Edgeバージョンを実行していても、iproute2が実際に持っている情報のほとんどが欠けています。利用可能なマンページまたはip-crefs.psからman ip-tcp_metrics
について調べてみてください...