20131011_openstack-neutron-vyattameeting
Upcoming SlideShare
Loading in...5
×
 

20131011_openstack-neutron-vyattameeting

on

  • 2,596 views

 

Statistics

Views

Total Views
2,596
Views on SlideShare
2,542
Embed Views
54

Actions

Likes
5
Downloads
56
Comments
1

1 Embed 54

https://twitter.com 54

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    20131011_openstack-neutron-vyattameeting 20131011_openstack-neutron-vyattameeting Presentation Transcript

    • OpenStack の仮想ネットワーク ~Neutron の今~ Akihiro Motoki (@ritchey98) NEC / 日本 OpenStack ユーザー会 Oct 11st , 2013
    • 自己紹介 • 元木 顕弘 (@ritchey98) – NEC 情報・ナレッジ研究所 – IPルータ、広域Ethernet装置、迷惑メールフィルタなど の開発をやっていました。 – ここ数年は、ネットワーク仮想化、OpenStack, OpenFlow 周りで活動しています。 • OpenStack Developer – Neutron and Horizon Core Developer – I18N team • Linux JM (日本語マニュアル) Project Maintainer
    • OpenStack Networking (Neutron) • Network-as-a-Service (NaaS) を提供する – テナントが自由なネットワーク操作を提供 • 複数のプライベートなネットワークの作成 • IPアドレスの制御 – L2/L3 に限らず、さまざまなネットワークサービス の提供 • Neutron API – API は論理操作のみを定義。物理操作を分離。 – 物理操作は Neutron Plugin が行う
    • 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
    • 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 } 管理者ユーザー
    • Network Service Insertion Service Insertion Network 2 Network 1 External Network VPN Connection
    • 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
    • 仮想ルータの実現方法 • 現状の 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
    • 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
    • おまけ
    • 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} | +--------------------------------------+---------+--------------------------------------------------------+
    • 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
    • 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