20131211 neutron havana
TRANSCRIPT
![Page 1: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/1.jpg)
OpenStack が実現する仮想ネットワーク ~OpenStack Neutron~ [Havana Update]
Akihiro Motoki (@ritchey98) OpenStack Neutron Core Developer
Japan OpenStack Users Group Dec 11th, 2013
![Page 2: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/2.jpg)
はじめに
• 本資料は 2012年12月の OSC Cloud での資料を 2013年12月時点での情報に更新したものです。
• LBaaS などの Network Advanced Service の情報を追加しています。
![Page 3: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/3.jpg)
自己紹介
• 元木 顕弘 (@ritchey98)
– NEC 情報・ナレッジ研究所 – IPルータ、広域Ethernet装置、迷惑メールフィルタなどの開発をやっていました。
– ここ数年は、ネットワーク仮想化、OpenStack, OpenFlow 周りで活動しています。
• OpenStack Developer
– Neutron and Horizon Core Developer – I18N (国際化) team
• Linux JM (日本語マニュアル) Project Maintainer
2013/12/12 Okinawa OpenDays 2013 3
![Page 4: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/4.jpg)
??? Neutron
OpenStack Project と Neutron
Compute
Storage
Network
Nova
Swift (Objects)
Glance (Images)
Cinder (Block)
identity Keystone
*-as-a-Service Capability OpenStack Service
![Page 5: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/5.jpg)
Neutron の目的 #1
• Network-as-a-Service (NaaS) を提供する
–テナントが自由なネットワーク操作を提供
• 複数のプライベートなネットワークの作成
• IPアドレスの制御
–論理ネットワーク操作API
• 論理操作と物理操作を分離
• 物理レイヤーは Neutron (Plugin) が設定する
![Page 6: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/6.jpg)
Neutron の目的 #2
• 複数のネットワーク技術に対応
– データセンタでは新たな要件が発生 • multi tenancy, remote data center, VM mobility, advanced
network services, …
– Nova は VLAN + Linux iptables のみが利用可能
– 新しいネットワーク技術に対応できるアーキテクチャ • SDN/OpenFlow-based network
• Overlay tunneling (VXLAN, NVGRE, STT, …)
• L2 Fabric (Fabric Path, QFabric, …)
![Page 7: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/7.jpg)
Neutron 仮想NWモデル • テナントは複数の Network を作成できる • Network には Subnet (CIDR, GW等) を関連付ける。
– 1つのNWに複数のSubnetを関連付けできる。IPv4+IPv6, IPv4 Address pool 等 – IPアドレスの払い出し (IPAM) – テナント間での IP アドレス重複にも対応
• Networkに複数のPort を作成できる。(L2SWのポートのイメージ) – VM の仮想NICはやルータのINF は Port と関連付けられる。
Net1
VM1 10.0.0.2 Nova
Neutron L2 virtual network
VM2 10.0.0.3
virtual port
virtual server
virtual interface (VIF)
virtual subnet 10.0.0.0/24 IPv6
![Page 8: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/8.jpg)
Neutron でできること
• ネットワークの自由な作成 • IP overlapping Tenant Networks
TenantA-VM1 10.0.0.2
TenantA-VM3 9.0.0.2
TenantA-VM2 10.0.0.3
External Net
88.0.0.0/18
Tenant-A Net1 10.0.0.0/24
Tenant-A Net2 9.0.0.0/24
L2 virtual network
virtual port
virtual server
virtual interface (VIF)
virtual subnet
SNAT for external traffic Floating IP
• 複数 NIC を持った VM の)作成
• ルータ経由で Subnet 間通信 • Floating IP での外部からの接続 (Elastic IP@AWS)
![Page 9: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/9.jpg)
Tenant View vs Infra View
Infra (Provider) View
Tenant-A
VM
VMnet2
VM
VMnet1 R
Tenant-A
VM
VMnet1 R
Internet
Tenatn View
Data Center Network
Internet
GW
vSwitch
VM VM
vSwitch
VM VM
vSwitch
VM VM
SW SW
![Page 10: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/10.jpg)
Tenant View vs Infra View
Infra (Provider) View
Tenant-A
VM
VMnet2
VM
VMnet1 R
Tenant-A
VM
VMnet1 R
Internet
Tenatn View
Data Center Network
Internet
GW
vSwitch
VM VM
vSwitch
VM VM
vSwitch
VM VM
User
Neutron
NW Controller
SW SW
Nova
• Neutron は論理操作をユーザに提供 • 物理操作はプラグイン or NW Controller が行う
Plugin
REST API
![Page 11: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/11.jpg)
Neutron API
• Neutron で「正式に」規定されているリソースは Network, Subnet, Port の 3種類 (Core Resoruces) – それ以外は Extension として実装。Extension だが
Experimental 扱い以外はリソースモデルが変更されることは基本的にない。
• Network, Subnet, Port のそれぞれに対して List, Create, Read, Update, Delete 操作を REST API で行う。 – net-create, net-update, net-delete,
net-list, net-show – subnet-create, subnet-update, subnet-delete,
subnet-list, subnet-show – port-create, port-update, port-delete,
port-list, port-show
![Page 12: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/12.jpg)
Network API の例 • API モデルは基本的に REST • 一般ユーザー向けの API では、論理情報のみが見える • 管理者権限であれば、物理情報を指定した操作も一部では定義。
GET http://localhost:9696/v2.0/networks/20b49737-c718-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" } }
GET http://localhost:9696/v2.0/networks/20b49737-c718-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", "provider:network_type": "vlan", "provider:physical_network": "physnet_1", "provider:segmentation_id": 201 } } 一般ユーザー 管理者ユーザー
![Page 13: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/13.jpg)
Neutron API (network)
$ neutron net-create net1 Created a new network: +-----------------+--------------------------------------+ | Field | Value | +-----------------+--------------------------------------+ | admin_state_up | True | | id | a5d04085-3a15-470f-adca-b67c0958a829 | | name | net1 | | router:external | False | | shared | False | | status | ACTIVE | | subnets | | | tenant_id | c3ed8c16308642de9b15647759d9e5e9 | +-----------------+--------------------------------------+
![Page 14: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/14.jpg)
Neutron API (subnet)
$ neutron subnet-create –name subnet1 net1 172.16.1.0/24 Created a new subnet: +------------------+------------------------------------------------+ | Field | Value | +------------------+------------------------------------------------+ | allocation_pools | {"start": "172.16.1.2", "end": "172.16.1.254"} | | cidr | 172.16.1.0/24 | | dns_nameservers | | | enable_dhcp | True | | gateway_ip | 172.16.1.1 | | host_routes | | | id | 736b30c1-5b83-4b52-b5ac-a397273cb240 | | ip_version | 4 | | name | subnet1 | | network_id | a5d04085-3a15-470f-adca-b67c0958a829 | | tenant_id | c3ed8c16308642de9b15647759d9e5e9 | +------------------+------------------------------------------------+
![Page 15: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/15.jpg)
Neutron API (port)
$ neutron port-show 332d3288-5d7a-4ea9-8af6-9b5c82615bb2 +----------------+--------------------------------------------------------+ | Field | Value | +----------------+--------------------------------------------------------+ | admin_state_up | True | | device_id | d8b5dc3c-f73c-44bf-9c04-13f986cf5e6b | | device_owner | compute:nova | | fixed_ips | {"subnet_id": "d9054ffb-1a0d-41d1-835b-8758d11f0060", | | | "ip_address": "10.0.0.3"} | | id | 332d3288-5d7a-4ea9-8af6-9b5c82615bb2 | | mac_address | fa:16:3e:20:b9:f6 | | name | port1 | | network_id | 6d013e3f-7ea9-402c-9725-9cb693809988 | | status | ACTIVE | | tenant_id | 34657b6768184444af7b5081213e6e73 | +----------------+--------------------------------------------------------+
![Page 16: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/16.jpg)
Neutron Architecture • 物理ネットワークの制御は Neutron Plugin が行う。 • Plugin を切り替えることで、様々なネットワーク技術を利用できる。現在は同時には一種類のみ利用可。
Neutron
Nova
Neutron Plugin
Nova Compute
Virtual Switch
VM VM
Nova Compute
Virtual Switch
VM VM
HW Switch
CLI / Dashboard (Horizon) / Orchestration Tool
Physical Network
Neutron APINova API
agent agent
![Page 17: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/17.jpg)
Neutron
Nova
Neutron Plugin
Nova Compute
Virtual Switch
VM VM
Nova Compute
Virtual Switch
VM VM
HW Switch
CLI / Dashboard (Horizon) / Orchestration Tool
Physical Network
Neutron API Nova API
agent agent
![Page 18: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/18.jpg)
Neutron
OpenStack と OpenFlow の連携
Nova
NEC OpenFlow Plugin Nova Compute
Virtual Switch
VM VM
Nova Compute
Virtual Switch
VM VM
HW Switch
CLI / Dashboard (Horizon) / Orchestration Tool
OpenFlow Controller
Network
OFC API
Neutron API
OpenFlow Protocol
Nova API
agent agent
![Page 19: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/19.jpg)
Nova
Neutron の基本構造 • API に対応して、物理操作を行う Plugin が存在
– Plugin を切り替えることで、様々なネットワーク技術を利用可能 – 複数のPlugin (Core + Service *N) が併存。一つのPluginで複数のAPIも対応可
• OpenStack の一部だが、Neutron 単体でも利用可能 – Neutron API を使うことで、特定のベンダーAPI に Lock-In されにくくなるかも
Neutron Compute Node
VM VM
vSwitch
HW Switch
L2/L3 Plugin FWaaS Plugin
LBaaS Plugin
Agent
L2 API L3 API FWaaS
API LBaaS
API
Network Controller
OpenFlow Controller など
Neutron API
L3 Agent
HAProxy Agent
Compute API
XXX Driver
最近の構造
![Page 20: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/20.jpg)
Neutron Plugin (Core) • ML2 (Modular Layer 2) plugin
• Open vSwitch plugin (VLAN, GRE, VXLAN) • Linux Bridge plugin (VLAN, VXLAN) • Hyper-V plugin • Brocade plugin • Mellanox plugin
• Nicira NVP Plugin
– Will be renamed to Vmware NSX plugin
• Ryu Plugin • NEC OpenFlow Plugin
– Trema SliceableSwitch (OSS), ProgrammableFlow
• Big Switch plugin • Midonet plugin • PLUGGrid plugin • Cisco Plugin
– Cisco UCS, Nexus 1000V . Open vSwitch もあわせて制御
![Page 21: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/21.jpg)
Neutron ML2 Plugin • ML2 = Modular Layer 2
– 複数のプラグインを統合する目的で開発 – デフォルトの Reference Implementation となり、OVS / Linux Bridge plugin は今後削除される。
– 複数のネットワーク技術を同時に使えるようになる予定 – Type Driver と Mechanism Driver の2種類のドライバー
• Type Driver – ネットワーク種別に応じたリソースの管理を行う。VLAN の ID 払い出しなど。 – ネットワーク種別は、ネットワーク作成時に provider_network extension の
network_type で指定する – VLAN, VXLAN, GRE, Local, Flat
• Mechanism Driver – 実際のデバイスの操作を行う。複数の mechanism driver を同時に有効にできる (ordered list)。各 mechanism driver は自分が対応しているネットワーク種別であれば処理を行う。
– Open vSwitch agent driver, Linux Bridge agent driver, Hyper-V agent driver – Cisco Nexus 1000V driver, Arista driver, Tail-f driver – L2 population driver
• MAC アドレス情報を OVS に展開し、ブロードキャストを削減する
![Page 22: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/22.jpg)
Neutron の機能ブロック • Neutron Server
– 論理ネットワークの管理を行う – Plugin は Neutron Server の一部
• Agent – Neutron Server 以外のサービスプロセス。Neutron Server 以外のサーバでも動作可能。
– Plugin の実現方式に応じて、必要に応じて使用する。 実現方式によっては Agent は不要。
• Agent
– Plugin Agent • 仮想スイッチの情報取得、設定を行う
– DHCP Agent • 仮想ネットワーク単位のDHCPサーバの管理を行う
– L3 Agent • 論理ルータの操作を行う。論理ルータは、iptables を利用して実現
– Metadata Agent • Neutron 環境において Metadata サーバへのアクセスを Nova metadata server にプロキシーする。
![Page 23: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/23.jpg)
Nova(CC)
Neutron Server
Compute Node
Compute Node
Data Network
eth1 eth1
eth0 eth0 eth0
OVS (br-int)
OVS (br-int)
Nova Compute
Nova Compute
Plugin Agent Plugin Agent
Management Network
機能ブロックと配置
Controller Node
eth0
eth1
OVS (br-int)
DHCP agent
L3 agent
Plugin Agent
OVS (br-ex)
Network Node
eth2
External network
metadata agt
![Page 24: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/24.jpg)
機能ブロックと配置
• Plugin Agent
– データトラフィックを扱うノードで動作させる必要あり
• Nova-compute ノード
• DHCP-agent が動作するノード
• L3-agent が動作するノード
• DHCP-agent, L3-agent
– いずれか一つのノードで動作させる必要あり
– L3-agent は外部ネットワークとの通信を行うため、専用ノードにするのが望ましい。
– 現状、Nova-network の multi_host 構成は未対応
![Page 25: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/25.jpg)
ADVANCED NETWORK SERVICE
![Page 26: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/26.jpg)
Advanced Network Services
• LBaaS – Grizzly で追加
– 複数の Load Balancer 実装への対応
– 現状は 1-arm Load Balancer のみの対応
Havana で追加
• FWaaS – Iptables table OSS implementation (+ vendor plugin)
• VPNaaS – IPSec VPN (L3-VPN) support (Openswan based)
![Page 27: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/27.jpg)
サービス配置パターン
Network 1
External Network
Network 2
Network 1
FW on network
FW on Port (security group?)
FW on Router
Firewall
![Page 28: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/28.jpg)
サービス配置パターン
Load Balancer
Network 1
Network 1
Network 1
Network 2
Direct Return
2-arm LB
1-arm LB
- terminated - Router
![Page 29: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/29.jpg)
Network Service Insertion
Network 1 Network 2
External Network
VPN Connection
Service Insertion
![Page 30: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/30.jpg)
LBaaS • Grizzly で追加
– LBaaS API (tenant API) 策定 – HAProxy reference implementation のみ
• Havana – Service Type Framework
• Backend が指定可能に。複数のドライバーを選択して LB pool を作成できる
– Vendor Driver, LB Plugin の追加
• Icehouse – Multiple VIPs per pool, VIP の pool 間での移動 – Layer7 support – SSL termination – Routed Service Insertion (LVS based) ? – https://etherpad.openstack.org/p/icehouse-neutron-lbaas
![Page 31: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/31.jpg)
FWaaS • Havana で追加
– Horizon, Heat support – FWaaS API (rule, policy, firewall resource) – L3-agent based impl, some vendor plugin – 制限事項
• 1 firewall per tenant (with l3-agent) • Firewall applies to all routers
• Icehouse – Service Insertion/Service Type Framework – Zone – Apply Operation – Counters – https://etherpad.openstack.org/p/icehouse-neutron-fwaas
![Page 32: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/32.jpg)
VPNaaS
• Havana で追加 – IPSec VPN (L3 VPN) のみサポート – Horizon, Heat support
• Icehouse – Service Type Framework
• 複数種類のVPNのサポート
– SSL-VPN – IPSec Certification Support – MPLS/BGP – (L2-VPN?) – https://etherpad.openstack.org/p/NeutronVPNaaSIce
House
![Page 33: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/33.jpg)
Neutron API の位置付け
Virtual Network
Virtual Router VM VM VM
Compute API L2/L3 API
Horizon, Heat or Orchestration
LB Service
VM
Process Based LB (HAProxy)
HW Appliance
LBaaS API
OpenStack が提供するのは Abstraction と Integration (≠ Virtualization)
Neutron には L2/L3 API と Advanced Service API が両方存在している。 両者を区別してみると、理解しやすいと思います。
![Page 34: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/34.jpg)
おまけ
![Page 35: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/35.jpg)
Neutron を使う上でのTips (1) • Network Namespace
– Linuxが持つネットワーク仮想化の機能で、1つの物理ホスト上に、 複数の独立したネットワーク機能を構成できる。 他の Namespace の影響を受けない。
– Neutronでは、IPアドレスが重複したネットワークを扱うために、Network Namespace を利用しています。
起動したVMの動作確認に ping を打とうとした際に、 制御サーバから Ping を打っても届きません。
Network Namespace 内からコマンドを実行する必要があります。
– 詳しくは “network namespace” で検索してください。 – 新しめのカーネルが使用されている Linux (Ubuntu 12.04など)では問題なく動作します。 RHEL6/CentOS6系ではそのままでは動作しないため、RDO で配布されているカーネルを使用する必要があります。
– 基本的には Network Namespace を有効にして Neutron を使うことを推奨します。
ip netns exec <netns-name> ping 192.168.1.10
![Page 36: 20131211 Neutron Havana](https://reader034.vdocuments.site/reader034/viewer/2022052522/554a129db4c9058c5d8b4bdd/html5/thumbnails/36.jpg)
Neutron を使う上での Tips (2) • ネットワークの操作は neutron コマンドで
– nova-manage network は使わないで下さい。 create コマンド自体は成功して、list でも表示されますが、何の意味もありません。Nova DBに書き込んでいるだけなので。
• KVM – (おそらく) /etc/libvirt/qemu.conf に以下の設定が必要です。 – Neutron では作成済みの tap device を指定してVMを起動します。そのため、QEMU が tap device を操作できるように設定が必要。 cgroup_device_acl = [
"/dev/null", "/dev/full", "/dev/zero", "/dev/random", "/dev/urandom", "/dev/ptmx", "/dev/kvm", "/dev/kqemu", "/dev/rtc", "/dev/hpet", "/dev/net/tun", ]