OpenStack Security GroupとL3-agentの挙動でハマっていた
OpenStack memo
Security Groupの設定
Floating IPを利用した通信ができないのでNeutronのモードをGREにしたり、VLANにしたりと色々試行錯誤していたらやっと原因がわかった。*Security Group*の設定が間違っていた。まさかFirewallの設定なんて基本的なところで引っかかっているとは。
OpenvSwtichの構成(VLANモード)
通常OpenvSwitchでVLANを設定するとポートにtag:VLANID
のようにタグが着くのだが、
OpenStackではどうやらovsから通信が出て行く瞬間にOpen Flowの仕組みでタグが付けられるようだ。故に、構築しているNW下記のようなovs構成をしている。
Bridge br-int
Port "tapb5a5e7c4-9d"
tag: 4095
Interface "tapb5a5e7c4-9d"
type: internal
Port "qvo7f7c766f-02"
tag: 5
Interface "qvo7f7c766f-02"
Port br-int
Interface br-int
type: internal
Port "int-br-bond0"
Interface "int-br-bond0"
Port "qr-de5001b3-30"
tag: 5
Interface "qr-de5001b3-30"
type: internal
Bridge br-ex
Port "patch-bond0"
Interface "patch-bond0"
type: patch
options: {peer=patch-ex}
Port "qg-35b87733-90"
Interface "qg-35b87733-90"
type: internal
Port br-ex
Interface br-ex
type: internal
Bridge "br-bond0"
Port patch-ex
tag: 201
Interface patch-ex
type: patch
options: {peer="patch-bond0"}
Port "phy-br-bond0"
Interface "phy-br-bond0"
Port "bond0"
Interface "p1p2"
Interface "p1p1"
Port "br-bond0"
Interface "br-bond0"
type: internal
ovs_version: "2.0.1"
そろそろ、Neutronのコード読まないと。
L3-agentの設定を確認したい
OpenStackのL3 agentはNetwork Namespaceという技術によって実現されている。Network NamespaceとはLinuxが持つネットワーク仮想化の機能で、1つの物理ホスト上に複数の独立したネットワーク機能を構成できる。また、他の Namespaceの影響を受けない。Neutronでは、IPアドレスが重複したネットワークを扱うため、Network Namespaceを利用している。
ホストが保持するNW Namespaceの確認
ip netns
対象のNamespaceにてbash,ifconfig,tcpdumpを実行したいコマンド
$ ip netns exec <id> bash $ ip netns exec <id> ifconfig $ ip netns exec <id> tcpdump