Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

20131011_openstack-neutron-vyattameeting

2.726 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie
  • I have done a couple of papers through ⇒⇒⇒WRITE-MY-PAPER.net ⇐⇐⇐ they have always been great! They are always in touch with you to let you know the status of paper and always meet the deadline!
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier

20131011_openstack-neutron-vyattameeting

  1. 1. OpenStack の仮想ネットワーク ~Neutron の今~ Akihiro Motoki (@ritchey98) NEC / 日本 OpenStack ユーザー会 Oct 11st , 2013
  2. 2. 自己紹介 • 元木 顕弘 (@ritchey98) – NEC 情報・ナレッジ研究所 – IPルータ、広域Ethernet装置、迷惑メールフィルタなど の開発をやっていました。 – ここ数年は、ネットワーク仮想化、OpenStack, OpenFlow 周りで活動しています。 • OpenStack Developer – Neutron and Horizon Core Developer – I18N team • Linux JM (日本語マニュアル) Project Maintainer
  3. 3. OpenStack Networking (Neutron) • Network-as-a-Service (NaaS) を提供する – テナントが自由なネットワーク操作を提供 • 複数のプライベートなネットワークの作成 • IPアドレスの制御 – L2/L3 に限らず、さまざまなネットワークサービス の提供 • Neutron API – API は論理操作のみを定義。物理操作を分離。 – 物理操作は Neutron Plugin が行う
  4. 4. OpenStack の仮想ネットワークモデル TenantA-VM1 10.0.0.2 TenantA-VM2 10.0.0.3 Tenant-A Net1 10.0.0.0/24 External Net 88.0.0.0/18 • • • • • TenantA-VM3 9.0.0.2 virtual server virtual interface (VIF) Tenant-A Net2 9.0.0.0/24 SNAT for external traffic Floating IP ネットワークの自由な作成 IP overlapping Tenant Networks 複数 NIC を持った VM の)作成 ルータ経由で Subnet 間通信 Floating IP での外部からの接続 (Elastic IP@AWS) virtual port L2 virtual network virtual subnet
  5. 5. Network API の例 • • • API モデルは基本的に REST 一般ユーザー向けの API では、論理情報のみが見える 管理者権限であれば、物理情報を指定した操作も一部では定義。 GET http://localhost:9696/v2.0/networks/20b49737c718-4f10-8edc-7fe9f8ee7cfd GET http://localhost:9696/v2.0/networks/20b49737c718-4f10-8edc-7fe9f8ee7cfd { { } "network": { "admin_state_up": true, "id": "20b49737-c718-4f10-8edc-7fe9f8ee7cfd", "name": "net1", "router:external": false, "shared": false, "status": "ACTIVE", "subnets": [ "644f729f-1c86-48b3-91a2-761e29398e81" ], "tenant_id": "be11ce3cabc74ee68d4f22253ffbb5e8" } 一般ユーザー } "network": { "admin_state_up": true, "id": "20b49737-c718-4f10-8edc-7fe9f8ee7cfd", "name": "net1", "router:external": false, "shared": false, "status": "ACTIVE", "subnets": [ "644f729f-1c86-48b3-91a2-761e29398e81" ], "tenant_id": "be11ce3cabc74ee68d4f22253ffbb5e8", "provider:network_type": "vlan", "provider:physical_network": "physnet_1", "provider:segmentation_id": 201 } 管理者ユーザー
  6. 6. Network Service Insertion Service Insertion Network 2 Network 1 External Network VPN Connection
  7. 7. Neutron の基本構造 • API に対応して、物理操作を行う Plugin が存在 – Plugin を切り替えることで、様々なネットワーク技術を利用可能 – 複数のPlugin (Core + Service *N) が併存。一つのPluginで複数のAPIも対応可 • OpenStack の一部だが、Neutron 単体でも利用可能 – Neutron API を使うことで、特定のベンダーAPI に Lock-In されにくくなるかも Neutron API LBaaS API FWaaS API L3 API Compute API Neutron LBaaS Plugin FWaaS Plugin Nova L2 API Compute Node L2/L3 Plugin VM Agent XXX HAProxy Driver Agent L3 Agent Network Controller OpenFlow Controller など VM vSwitch HW Switch
  8. 8. 仮想ルータの実現方法 • 現状の Neutron では 下線付きのものが存在 Network Namespace (l3-agent) – Linux Kernel の名前空間機能を利用 • Distributed Router – 仮想スイッチ、OpenFlow スイッチをコントローラで制御して実現 • Router as Service VM – 仮想ルータ単位に VM を用意する。通常の VM と同じ。 • VRF on normal router – いわゆるハードウェアルータで、複数の論理ルーティングテーブルがあるものを利用 VM net1 VM R net2 VM 分散ルータの例 ルータの振りをして nexthopのARPに応答 VM VM vSW 同じサブネットなら そのまま転送 Controller vSW VM VM
  9. 9. L3-agent での仮想ルータ • Linux Kernel の機能を組み合わせて実現 – Network Namespace + iptables • Network Namespace (netns) – ネットワークのプロトコル・スタックを一つの OS 上に複数持つ仕組み。 IPアドレスや NW インタフェース等が分離した空間を複数構成可能。 – LXC などのコンテナ技術で発展 netns for router1 netns for router2 Routing + iptables Routing + iptables qg-xxx qr-yz1 qr-yz2 qr-zz1 qr-zz2 veth pair qg-xxx qr-yz1 qr-yz2 qr-zz1 Open vSwitch eth1 eth2 qr-zz2
  10. 10. おまけ
  11. 11. l3-agent netns example (1/3) ubuntu@ostack02:~$ ip netns qdhcp-07b6df1f-bb88-4cc5-8903-45c543143f9f qdhcp-373ed983-b2e9-4c6b-90f2-92c347302675 qrouter-6ce6df1a-0eb8-4bf8-8ad6-fe6855d5e648 qrouter-b920913b-22ca-48ad-843b-e8ab78ae22a7 qdhcp-20b49737-c718-4f10-8edc-7fe9f8ee7cfd ubuntu@ostack02:~$ neutron router-list +--------------------------------------+---------+--------------------------------------------------------+ | id | name | external_gateway_info | +--------------------------------------+---------+--------------------------------------------------------+ | 6ce6df1a-0eb8-4bf8-8ad6-fe6855d5e648 | router2 | null | | b920913b-22ca-48ad-843b-e8ab78ae22a7 | router1 | {"network_id": "e4ad0d48-d0ee-42f8-889b-72283fdd607f", | | | | "enable_snat": true} | +--------------------------------------+---------+--------------------------------------------------------+
  12. 12. l3-agent netns example (2/3) (router1) ubuntu@ostack02:~$ sudo ip netns exec qrouter-b920913b-22ca-48ad-843b-e8ab78ae22a7 ip link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: qr-656aebdc-61: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether fa:16:3e:a2:1b:62 brd ff:ff:ff:ff:ff:ff 3: qg-215b9b04-9e: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether fa:16:3e:f3:c9:4c brd ff:ff:ff:ff:ff:ff 4: qr-8357d717-fa: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether fa:16:3e:c9:c9:41 brd ff:ff:ff:ff:ff:ff ubuntu@ostack02:~$ sudo ip netns exec qrouter-b920913b-22ca-48ad-843b-e8ab78ae22a7 netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 172.24.4.225 0.0.0.0 UG 0 0 0 qg-215b9b04-9e 10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 qr-656aebdc-61 10.2.2.0 0.0.0.0 255.255.255.0 U 0 0 0 qr-8357d717-fa 172.24.4.224 0.0.0.0 255.255.255.240 U 0 0 0 qg-215b9b04-9e
  13. 13. l3-agent netns example (3/3) (router2) ubuntu@ostack02:~$ sudo ip netns exec qrouter-6ce6df1a-0eb8-4bf8-8ad6-fe6855d5e648 ip link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: qr-04c3c871-55: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether fa:16:3e:ef:af:b6 brd ff:ff:ff:ff:ff:ff 4: qr-1b1091ed-41: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether fa:16:3e:da:9e:50 brd ff:ff:ff:ff:ff:ff ubuntu@ostack02:~$ sudo ip netns exec qrouter-6ce6df1a-0eb8-4bf8-8ad6-fe6855d5e648 ip route 10.2.2.0/24 dev qr-1b1091ed-41 proto kernel scope link src 10.2.2.2 10.3.3.0/24 dev qr-04c3c871-55 proto kernel scope link src 10.3.3.1

×