web-dev-qa-db-ja.com

名前空間間のOpenVSwitch

Linuxで、それぞれが独自のネットワーク名前空間内に作成された2つのTAPインターフェイス間のブリッジを構成しようとしています。私はソフトウェアブリッジとしてOpenVSwitchを使用しています。

これらは私がうまくいくと信じているステップです:

ip netns add test_ns1
ip netns exec test_ns1 ip tuntap add mode tap testif1
ip netns exec test_ns1 ip addr add 192.168.1.1/24 dev testif1
ip netns exec test_ns1 ip link set testif1 up

ip netns add test_ns2
ip netns exec test_ns2 ip tuntap add mode tap testif2
ip netns exec test_ns2 ip addr add 192.168.1.2/24 dev testif2
ip netns exec test_ns2 ip link set testif2 up

ovs-vsctl add-br test_br
ip netns exec test_ns1 ovs-vsctl add-port test_br testif1
ip netns exec test_ns2 ovs-vsctl add-port test_br testif2

ip netns exec test_ns1 ping -c 2 192.168.1.1
ip netns exec test_ns2 ping -c 2 192.168.1.2
ip netns exec test_ns1 ping -c 2 192.168.1.2
ip netns exec test_ns2 ping -c 2 192.168.1.1

4つのpingコマンドすべてが機能せず、100%のパケット損失が報告されます。

独自の名前空間内からインターフェイスにpingを実行できると期待しています(たとえば、test_ns1のtestif1)。私はクォンタムインターフェースでそれを行うことができますが、私のものではできません、なぜですか?

次に、標準のUbuntuバージョンを実行していて、同じマシンでOpenStack Quantumを実行しているため、OpenVSwitchが正しくインストールされていることを確信しています。

2
Daniele Venzano

OpenStackは、ip tuntap addを使用してタップデバイスを作成しません。代わりに、ovs-vsctl add-portコマンドを使用してopenvswitchブリッジに内部ポートを作成します。 openvswitchは内部ポートをタップデバイスとして実装しているため、OpenStackはこれらのポートに「tapXXXX」というラベルを付けます。

Openvswitchブリッジにtestif1インターフェイスを作成し、それをtest_ns1名前空間に配置するには、代わりにこれを実行してみてください。

ovs-vsctl add-port test_br testif1 -- set interface testif1 type=internal
ip link set testif1 netns test_ns1
ip netns exec test_ns1 ip addr add 192.168.1.1/24 dev testif1
ip netns exec test_ns1 ip link set testif1 up
2
Lorin Hochstein