OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料

10,783 views

Published on

0 Comments
28 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
10,783
On SlideShare
0
From Embeds
0
Number of Embeds
87
Actions
Shares
0
Downloads
257
Comments
0
Likes
28
Embeds 0
No embeds

No notes for slide

OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料

  1. 1. オープンクラウド・キャンパスOpenStack Quantum LinuxBridge Plugin OpenStackのQuantum(LinuxBridge Plugin)が 実際どうやって仮想ネットワークを 構成するのか説明する資料 ver1.1 中井悦司 Twitter @enakai00
  2. 2. OpenStack Quantum LinuxBridge Plugin 自己紹介  中井悦司(なかいえつじ) – Twitter @enakai00  日々の仕事 – Senior Solution Architect and Cloud Evangelist at Red Hat K.K. 好評発売中 企業システムでオープンソースの活用を希望される お客様を全力でご支援させていただきます。  昔とった杵柄 – 素粒子論の研究(超弦理論とか) – 予備校講師(物理担当) – インフラエンジニア(Unix/Linux専門) Open Cloud Campus2
  3. 3. OpenStack Quantum LinuxBridge Plugin 前提環境 Open Cloud Campus3
  4. 4. OpenStack Quantum LinuxBridge Plugin 物理ネットワーク構成とQuantum Agentの配置 L2 AgentはPluginを選択可能 ここでは、LinuxBridge Pluginを使用 パブリック ネットワーク 管理ネットワーク インスタンスが 仮想ルータが 起動するノード 構成されるノード eth0 eth2 eth0 eth0 Network Node Quantum Server Compute Node Compute Node L2 Agent L2 Agent L2 Agent DHCP Agent L3 Agent Quantum Serverは eth1 eth1 eth1 別ノードに外出しも可能 プライベートネットワーク Open Cloud Campus4
  5. 5. OpenStack Quantum LinuxBridge Plugin この資料で説明する仮想ネットワークの論理構成 特定テナント専用の ネットワークも用意可能 インスタンスごとに接続する プライベートネットワークを選択 パブリックネットワークとの (複数選択可能) 通信はNATを使用 ファイアウォール機能付き NATルータ パブリック ネットワーク 異なるサブネットからの通信は セキュリティグループでフィルタリング net01 net02 プライベートネットワーク プライベートネットワーク (サブネット01) (サブネット02) 同一サブネット内の通信は フィルタリングされない Open Cloud Campus5
  6. 6. OpenStack Quantum LinuxBridge Plugin (参考)テナントごとに独立ネットワークを提供する構成例  テナントごとにIPアドレスの範囲を自由に設定可能で、テナント間でIPアドレス が重複しても問題になりません。  下図の「サブネット」は、テナントごとに自由に追加することができます。 パブリック ネットワーク テナント外との通信はNATで行う テナントA テナントB 専用ルータ 専用ルータ サブネット1 サブネット2 サブネット1 サブネット2 192.168.1.0/24 192.168.2.0/24 192.168.1.0/24 192.168.2.0/24 Open Cloud Campus6
  7. 7. OpenStack Quantum LinuxBridge Plugin まずは完成形を見てみましょう Open Cloud Campus7
  8. 8. OpenStack Quantum LinuxBridge Plugin Compute Nodeの完成形 Nova Computeが構成 vm01 vm02 vm03 IP IP IP IP eth0 eth0 eth1 eth0 Network Node上の dnsmasqからIPを割り当て tapXXX tapXXX tapXXX tapXXX brqxxxx brqxxxx net01 net02 プライベートネットワーク eth1.101 eth1.102 ごとにVLANデバイスを構成 eth1 L2 Agentが構成 プライベートネットワーク用 VLAN101 L2スイッチ VLAN102 Open Cloud Campus8
  9. 9. OpenStack Quantum LinuxBridge Plugin Network Nodeの完成形 パブリックネットワークへ L3 Agentが構成 eth0 tapVVV brqxxxx iptablesで NAT&フィルタリング IP qg-VVV dnsmasq dnsmasq サブネットごとに dnsmasqが起動 IP IP IP IP ns-XXX qr-YYY ns-ZZZ qr-WWW ここはvethで直結 (TAPデバイスではない) tapXXX tapYYY tapZZZ tapWWW DHCP Agentが構成 brqxxxx brqxxxx net01 net02 eth1.101 eth1.102 eth1 L2 Agentが構成 プライベートネットワーク用スイッチへ Open Cloud Campus9
  10. 10. OpenStack Quantum LinuxBridge Plugin iptablesによるフィルタリングとNATの設定内容 Open Cloud Campus10
  11. 11. OpenStack Quantum LinuxBridge Plugin Compute Nodeにおけるパケットフィルタリング filter table インスタンスに対する パケットフィルタリングは 各Compute Nodeで実施 FORWARD nova-filter-top インスタンス個別に nova-compute-local フィルタリングチェーンを用意 nova-compute-inst-xx 同じサブネットからは 無条件に通信可能 nova-compute-provider Security Groupの 同じサブネットからのパケット ACCEPT 適用はココ Security Groupによるフィルタ ACCEPT nova-compute-sg-fallback DROP nova-compute-FORWARD ※ これらはNova Computeが設定します。 ACCEPT (Security GroupはNovaの機能) Open Cloud Campus11
  12. 12. OpenStack Quantum LinuxBridge Plugin Network NodeにおけるNAT処理 (1/2) パブリックネットワーク接続時の nat table POSTROUTING NAT処理はNetwork Nodeで実施 quantum-l3-agent-POSTROUTING パブリックNWとの出入り以外 ACCEPT quantum-postrouting-bottom パブリックNWに出入りする タイミングでNATを適用 quantum-l3-agent-snat 送信元IPを仮想ルータの quantum-l3-agent-float-snat パブリックIPに変換 Floating IPからの送信 SNAT プライベートNWからの送信 SNAT nova-api-POSTROUTING 送信元IPを対応する Floating IPに変換 nova-api-postrouting-bottom ※ これらは主にL3 Agentが設定します。 ACCEPT Open Cloud Campus12
  13. 13. OpenStack Quantum LinuxBridge Plugin Network NodeにおけるNAT処理 (1/2) nat table PREROUTING quantum-l3-agent-PREROUTING Floating IP宛の受信 DNAT nova-api-PREROUTING 宛先IPをFloating IPから 対応するプライベートIPに変換 ACCEPT ※ これらは主にL3 Agentが設定します。 Open Cloud Campus13
  14. 14. OpenStack Quantum LinuxBridge Plugin 仮想ネットワークの構成手順にしたがって 実際の構成の様子を追ってみましょう Open Cloud Campus14
  15. 15. OpenStack Quantum LinuxBridge Plugin 仮想ルータの定義  仮想ルータは定義しただけでは、実際の構成は何も行われません。 # quantum router-create router01 Open Cloud Campus15
  16. 16. OpenStack Quantum LinuxBridge Plugin プラベートネットワークの定義  プラベートネットワークとサブネットを定義すると、Network Node上で次の構成が行われ ます。(Compute Nodeでは、まだ何も行われません。) – プライベートネットワーク用ブリッジ brxxxxを作成 – プラベートネットワーク用の物理NIC上のVLANデバイスethX.XXXを作成して、ブリッジに接続 – vethで直結された仮想NICペア [tapXXXX --- ns-XXXX] を作成して、tapXXXXをブリッジに接続 – nsXXXXにIPを割り当てて、これをListenインターフェースとするdnsmasqを起動 # tenant=$(keystone tenant-list|awk /redhat/ {print $2}) # quantum net-create --tenant-id $tenant net01 --provider:network_type vlan --provider:physical_network physnet2 --provider:segmentation_id 101 # quantum subnet-create --tenant-id $tenant --name subnet01 net01 192.168.101.0/24 # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.101.0 0.0.0.0 255.255.255.0 U 0 0 0 ns-ca045488-1e ・・・ # ip addr show ns-ca045488-1e 20: ns-ca045488-1e: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 vethで直結 link/ether e6:3b:bd:07:11:42 brd ff:ff:ff:ff:ff:ff inet 192.168.101.2/24 brd 192.168.101.255 scope global ns-ca045488-1e ・・・ # brctl show bridge name bridge id STP enabled interfaces brq6c6cc680-a8 8000.e89a8fbe1f79 no eth1.101 tapca045488-1e # ps -ef | grep dnsmasq nobody 14920 1 0 15:22 ? 00:00:00 /usr/sbin/dnsmasq --no-hosts --no-resolv --strict-order --bind-interfaces --interface=ns-ca045488-1e --except-interface=lo --domain=openstacklocal --pid- file=/var/lib/quantum/dhcp/6c6cc680-a8fc-4f96-a8ae-1e88eabffec3/pid ・・・ Open Cloud Campus16
  17. 17. OpenStack Quantum LinuxBridge Plugin パブリックネットワークの定義とルータ接続  パブリックネットワークは定義しただけでは、実際の構成は何も行われません。 # tenant=$(keystone tenant-list|awk /service/ {print $2}) # quantum net-create --tenant-id $tenant public01 --provider:network_type flat --provider:physical_network physnet1 --router:external=True # quantum subnet-create --tenant-id $tenant --name pub_subnet01 --gateway 10.64.201.254 public01 10.64.201.0/24 --enable_dhcp False  仮想ルータの外部ゲートウェイにパブリックネットワークを指定すると、Network Node上 で次の構成が行われます。 – パブリックネットワーク用ブリッジ brxxxxを作成して、パブリックネットワークの物理NICを接続 – vethで直結された仮想NICペア [tapXXXX --- qg-XXXX] を作成して、tapXXXXをブリッジに接続 – qgXXXXにIPを割り当てて、これをパブリックネットワーク接続用にルーティングテーブルを構成 # quantum router-gateway-set router01 public01 # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface ・・・ 0.0.0.0 10.64.201.254 0.0.0.0 UG 0 0 0 qg-3faf6516-c1 # ip addr show qg-3faf6516-c1 32: qg-3faf6516-c1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 vethで直結 link/ether 4a:d4:a3:46:12:5c brd ff:ff:ff:ff:ff:ff inet 10.64.201.1/24 brd 10.64.201.255 scope global qg-3faf6516-c1 ・・・ [root@opst01 work(keystone_admin)]$ brctl show bridge name bridge id STP enabled interfaces brq01092489-9f 8000.e89a8fbe1f78 no eth0 tap3faf6516-c1 ・・・ Open Cloud Campus17
  18. 18. OpenStack Quantum LinuxBridge Plugin プライベートネットワークのルータ接続  プライベートネットワークを仮想ルータに接続すると、Network Node上で次の構成が行わ れます。(Compute Nodeでは、まだ何も行われません。) – vethで直結された仮想NICペア [tapXXXX --- qr-XXXX] を作成して、tapXXXXをブリッジに接続 – qr-XXXXにIPを割り当てる(プライベートネットワークのデフォルトゲートウェイに利用可能(*1)) – iptablesのnatテーブルにSNAT(Masquerade)接続用のエントリを作成 # quantum router-interface-add router01 subnet01 # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.101.0 0.0.0.0 255.255.255.0 U 0 0 0 ns-ca045488-1e 192.168.101.0 0.0.0.0 255.255.255.0 U 0 0 0 qr-0339046d-b6 ・・・ # ip addr show qr-0339046d-b6 35: qr-0339046d-b6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether aa:06:4e:fb:5c:86 brd ff:ff:ff:ff:ff:ff vethで直結 inet 192.168.101.1/24 brd 192.168.101.255 scope global qr-0339046d-b6 ・・・ # brctl show bridge name bridge id STP enabled interfaces ・・・ brq6c6cc680-a8 8000.e89a8fbe1f79 no eth1.101 tap0339046d-b6 tapca045488-1e $ iptables -t nat -L quantum-l3-agent-snat -v Chain quantum-l3-agent-snat (1 references) pkts bytes target prot opt in out source destination 3 216 quantum-l3-agent-float-snat all -- any any anywhere anywhere 0 0 SNAT all -- any any 192.168.101.0/24 anywhere to:10.64.201.118 *1) dnsmasqを使用する場合は、実際には、dnsmasq用のポートns-XXXXがゲートウェイになります。 Open Cloud Campus
  19. 19. OpenStack Quantum LinuxBridge Plugin インスタンスの起動  インスタンスを起動してプライベートネットワークに接続すると、該当インスタンスが起動 するCompute Node上で次の構成がおこなわれます。 – プライベートネットワーク用ブリッジ brxxxxを作成 – プラベートネットワーク用の物理NIC上のVLANデバイスethX.XXXを作成して、ブリッジに接続 – iptablesのfilterテーブルにdnsmasq接続/同一サブネット接続/Security Group用のエントリを作成 – Nova Computeが作成した仮想マシンのtapデバイスをブリッジに接続 # brctl show bridge name bridge id STP enabled interfaces brq6c6cc680-a8 8000.6aa83b0c369f no eth1.101 tap10007fbc-f2 # iptables -nL nova-compute-local -v Chain nova-compute-local (1 references) pkts bytes target prot opt in out source destination 0 0 nova-compute-inst-74 all -- * * 0.0.0.0/0 192.168.101.3 # iptables -nL nova-compute-inst-74 -v Chain nova-compute-inst-74 (1 references) pkts bytes target prot opt in out source destination 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 nova-compute-provider all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT udp -- * * 192.168.101.2 0.0.0.0/0 udp spt:67 dpt:68 0 0 ACCEPT all -- * * 192.168.101.0/24 0.0.0.0/0 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 0 0 nova-compute-sg-fallback all -- * * 0.0.0.0/0 0.0.0.0/0 Open Cloud Campus19
  20. 20. OpenStack Quantum LinuxBridge Plugin Floating IPの割り当て  Floating Ipをインスタンスのポートに割り当てると、Network Node上で次の構成がおこな われます。 – iptablesのnatテーブルにFloating IPに対応するDNAT/SNATのエントリを作成 # tenant=$(keystone tenant-list|awk /redhat/ {print $2}) # quantum floatingip-create --tenant-id $tenant public01 # quantum floatingip-associate a56c9247-6155-418f-b418-650ac021743f 10007fbc-f2e5-4688-9979-9acfd253b444 # iptables -t nat -nL quantum-l3-agent-float-snat -v Chain quantum-l3-agent-float-snat (1 references) pkts bytes target prot opt in out source destination 0 0 SNAT all -- * * 192.168.101.3 0.0.0.0/0 to:10.64.201.4 # iptables -t nat -nL quantum-l3-agent-OUTPUT -v Chain quantum-l3-agent-OUTPUT (1 references) pkts bytes target prot opt in out source destination 0 0 DNAT all -- * * 0.0.0.0/0 10.64.201.4 to:192.168.101.3 Open Cloud Campus20
  21. 21. OpenStack Quantum LinuxBridge Plugin 参考資料 Open Cloud Campus21
  22. 22. OpenStack Quantum LinuxBridge Plugin 参考書 仮想ネットワークと KVM全般の勉強に iptablesの勉強に Open Cloud Campus22
  23. 23. OpenStack Quantum LinuxBridge Plugin 参考資料  KVM勉強会! – http://www.slideshare.net/enakai/ljstudy-kvm  Eucalyputsの仮想ネットワーク構成 – http://cloud.watch.impress.co.jp/docs/column/euca_iaas/20110817_466963.html  OpenStack Network (Quantum) Administration Guide – http://docs.openstack.org/trunk/openstack-network/admin/content/index.html  Quantum L2 Linux Bridge Plugin – http://wiki.openstack.org/Quantum-Linux-Bridge-Plugin  QuickStart with RHOS(Red Hat OpenStack) Folsom Preview – http://d.hatena.ne.jp/enakai00/20121118/1353226066 Open Cloud Campus23
  24. 24. オープンクラウド・キャンパスOpenStack Quantum LinuxBridge Plugin Euaclyptusユーザ会もよろしくね! 中井悦司 Twitter @enakai00

×