SlideShare a Scribd company logo
OpenStack が実現する仮想ネットワーク
~OpenStack Neutron~ [Havana Update]
Akihiro Motoki (@ritchey98)
OpenStack Neutron Core Developer
Japan OpenStack Users Group
Dec 11th, 2013
はじめに
• 本資料は 2012年12月の OSC Cloud での資料を
2013年12月時点での情報に更新したものです。
• LBaaS などの Network Advanced Service の情報を追
加しています。
自己紹介
• 元木 顕弘 (@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
OpenStack Project と Neutron
*-as-a-Service Capability

Compute

OpenStack Service

Nova
Swift (Objects)

Storage

Cinder (Block)
Glance (Images)

identity

Keystone

Network

Neutron
???
Neutron の目的 #1
• Network-as-a-Service (NaaS) を提供する
– テナントが自由なネットワーク操作を提供
• 複数のプライベートなネットワークの作成
• IPアドレスの制御

– 論理ネットワーク操作API
• 論理操作と物理操作を分離
• 物理レイヤーは Neutron (Plugin) が設定する
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, …)
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 と関連付けられる。

Nova

VM1
10.0.0.2

VM2
10.0.0.3

virtual server
virtual interface (VIF)

virtual port

Neutron

Net1
10.0.0.0/24

L2 virtual network
IPv6

virtual subnet
Neutron でできること
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
Tenant View vs Infra View
Tenant-A
VM

VM

net2
VM

R

net1
VM

Internet

Tenant-A
VM

net1

R

VM

Tenatn View
Infra (Provider) View
VM

VM

vSwitch

VM

VM

vSwitch

VM

VM

vSwitch
Internet

SW

Data Center Network

SW

GW
Tenant View vs Infra View
• Neutron は論理操作をユーザに提供
• 物理操作はプラグイン or NW Controller が行う
Tenant-A
VM

User

VM

net2
VM

R

net1
VM

Internet

Tenant-A

REST API

VM

net1

R

VM

Neutron

Tenatn View
Nova

Infra (Provider) View

Plugin

NW
Controller

VM

VM

vSwitch

VM

VM

vSwitch

VM

VM

vSwitch
Internet

SW

Data Center Network

SW

GW
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
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
}

}

一般ユーザー

}

管理者ユーザー
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
|
+-----------------+--------------------------------------+
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
|
+------------------+------------------------------------------------+
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
|
+----------------+--------------------------------------------------------+
Neutron Architecture
• 物理ネットワークの制御は Neutron Plugin が行う。
• Plugin を切り替えることで、様々なネットワーク技術を利用
できる。現在は同時には一種類のみ利用可。
CLI / Dashboard (Horizon) / Orchestration Tool
Nova API

Neutron API

Nova

Neutron

Nova Compute

Nova Compute

VM

VM

Neutron Plugin

agent

Physical Network

VM

Virtual Switch

agent

HW Switch

VM

Virtual Switch
CLI / Dashboard (Horizon) / Orchestration Tool

Nova API

Neutron API

Nova
Neutron

Nova Compute

Nova Compute

VM

VM

Neutron Plugin

agent

Physical Network

VM

Virtual Switch

agent

HW Switch

VM

Virtual Switch
OpenStack と OpenFlow の連携
CLI / Dashboard (Horizon) / Orchestration Tool
Neutron API

Nova API

Neutron

Nova

NEC OpenFlow Plugin

Nova Compute
VM

OFC API
OpenFlow Controller

agent

Nova Compute
VM

VM
agent

Virtual Switch

Virtual Switch

OpenFlow Protocol
Network

VM

HW Switch
最近の構造

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 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 もあわせて制御
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 に展開し、ブロードキャストを削減する
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 にプロキ
シーする。
機能ブロックと配置
External network
Management Network
eth0

eth2

eth0

eth0

eth0

Compute Node

Controller
Node

Nova
Compute

Nova
Compute

Plugin Agent

Plugin Agent

OVS
(br-int)

Neutron
Server

DHCP agent
L3 agent
metadata agt
Network Node
Plugin Agent

Nova(CC)

Compute Node

OVS
(br-int)

OVS
(br-int)

eth1

eth1

eth1

OVS
(br-ex)

Data Network
機能ブロックと配置
• Plugin Agent
– データトラフィックを扱うノードで動作させる必要あり
• Nova-compute ノード
• DHCP-agent が動作するノード
• L3-agent が動作するノード

• DHCP-agent, L3-agent
– いずれか一つのノードで動作させる必要あり
– L3-agent は外部ネットワークとの通信を行うため、専
用ノードにするのが望ましい。
– 現状、Nova-network の multi_host 構成は未対応
ADVANCED NETWORK SERVICE
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)
サービス配置パターン
Firewall
Network 1

FW on Port
(security group?)

Network 2

Network 1
FW on Router
External
Network

FW on network
サービス配置パターン
Load Balancer

2-arm LB
1-arm LB
Network 1

Network 1
- terminated
- Router
Network 1
Direct Return

Network 2
Network Service Insertion

Service Insertion

Network 2

Network 1

External
Network
VPN Connection
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
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
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
Neutron API の位置付け
Horizon, Heat or Orchestration

LBaaS API
HW
Appliance

Process
Based LB
(HAProxy)

LB
Service
VM

Compute API

L2/L3 API
Virtual Router
VM

VM

VM

Virtual Network

OpenStack が提供するのは Abstraction と Integration (≠ Virtualization)
Neutron には L2/L3 API と Advanced Service API が両方存在している。
両者を区別してみると、理解しやすいと思います。
おまけ
Neutron を使う上でのTips (1)
• Network Namespace
– Linuxが持つネットワーク仮想化の機能で、1つの物理ホスト上に、
複数の独立したネットワーク機能を構成できる。
他の Namespace の影響を受けない。
– Neutronでは、IPアドレスが重複したネットワークを扱うために、
Network Namespace を利用しています。
起動したVMの動作確認に ping を打とうとした際に、
制御サーバから Ping を打っても届きません。
 Network Namespace 内からコマンドを実行する必要があります。
ip netns exec <netns-name> ping 192.168.1.10

– 詳しくは “network namespace” で検索してください。
– 新しめのカーネルが使用されている Linux (Ubuntu 12.04など)では問
題なく動作します。 RHEL6/CentOS6系ではそのままでは動作しないた
め、RDO で配布されているカーネルを使用する必要があります。
– 基本的には Network Namespace を有効にして Neutron を使うことを
推奨します。
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",
]

More Related Content

PDF
Neutron Icehouse Update (Japanese)
PDF
20131011_openstack-neutron-vyattameeting
PDF
20161129 neutron recent topic
PDF
20150713-OpenStack-5thbirthday-kilo-liberty-and-towards
PDF
20131212 Okinawa OpenDays OpenStack
PDF
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月
PDF
OpenStack Atlanta Summit Report: Neutron, Nova and design summit sessions
PPTX
ミドクラ様講演 OpenStack最新情報セミナー 2014年4月
Neutron Icehouse Update (Japanese)
20131011_openstack-neutron-vyattameeting
20161129 neutron recent topic
20150713-OpenStack-5thbirthday-kilo-liberty-and-towards
20131212 Okinawa OpenDays OpenStack
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月
OpenStack Atlanta Summit Report: Neutron, Nova and design summit sessions
ミドクラ様講演 OpenStack最新情報セミナー 2014年4月

What's hot (20)

PDF
openstack_neutron-ovs_osc2014tf_20141019
PDF
OpenStack Neutronの機能概要 - OpenStack最新情報セミナー 2014年12月
PPTX
OpenStack管理者入門 - OpenStack最新情報セミナー 2014年12月
PDF
NFV標準化動向 NFVの適用範囲と標準化 – OpenStack最新情報セミナー 2015年4月
PPTX
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
PPTX
OpenStackネットワーク入門 – OpenStack最新情報セミナー 2015年4月
PDF
20130724 openstack-3rd-anniversary-amotoki
PDF
「Neutronになって理解するOpenStack Network」~Neutron/Open vSwitchなどNeutronと周辺技術の解説~ - ...
PDF
君にもできる! にゅーとろん君になってみよー!! 「Neutronになって理解するOpenStack Net - OpenStack最新情報セミナー ...
PDF
入門!Software Defined Network
PPTX
RDOを使ったOpenStack Havana - Neutron 構築編
PDF
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
PDF
OpenStackネットワーキング管理者入門 - OpenStack最新情報セミナー 2014年8月
PDF
OpenStack 向けネットワーク入門
PPTX
OpenStack概要 ~仮想ネットワーク~
PDF
OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料
PDF
サイバーエージェント様 導入事例:OpenStack Fast Track – 若葉マークStackerのStacker教習所 - OpenStack最新...
PDF
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
PDF
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
PDF
エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第二部 OpenStackの内部構造
openstack_neutron-ovs_osc2014tf_20141019
OpenStack Neutronの機能概要 - OpenStack最新情報セミナー 2014年12月
OpenStack管理者入門 - OpenStack最新情報セミナー 2014年12月
NFV標準化動向 NFVの適用範囲と標準化 – OpenStack最新情報セミナー 2015年4月
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
OpenStackネットワーク入門 – OpenStack最新情報セミナー 2015年4月
20130724 openstack-3rd-anniversary-amotoki
「Neutronになって理解するOpenStack Network」~Neutron/Open vSwitchなどNeutronと周辺技術の解説~ - ...
君にもできる! にゅーとろん君になってみよー!! 「Neutronになって理解するOpenStack Net - OpenStack最新情報セミナー ...
入門!Software Defined Network
RDOを使ったOpenStack Havana - Neutron 構築編
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
OpenStackネットワーキング管理者入門 - OpenStack最新情報セミナー 2014年8月
OpenStack 向けネットワーク入門
OpenStack概要 ~仮想ネットワーク~
OpenStackのQuantum(LinuxBridge Plugin)が実際どうやって仮想ネットワークを構成するのか説明する資料
サイバーエージェント様 導入事例:OpenStack Fast Track – 若葉マークStackerのStacker教習所 - OpenStack最新...
OpenStack + OpenContrailで実現するマルチテナントIaaSのご紹介
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第二部 OpenStackの内部構造
Ad

Viewers also liked (7)

ODP
VPC Implementation In OpenStack Heat
PDF
Quantum-grizzly-packet-filtering
PDF
neutron_icehouse_update
PDF
Horizon quantum-integration-grizzly
PDF
20150713 OpenStack Translation in Japan
PDF
Neutron: br-ex is now deprecated! what is modern way?
PDF
最近のJuju/MAASについて 〜 15分版 - OpenStack最新情報セミナー 2017年11月
VPC Implementation In OpenStack Heat
Quantum-grizzly-packet-filtering
neutron_icehouse_update
Horizon quantum-integration-grizzly
20150713 OpenStack Translation in Japan
Neutron: br-ex is now deprecated! what is modern way?
最近のJuju/MAASについて 〜 15分版 - OpenStack最新情報セミナー 2017年11月
Ad

Similar to 20131211 Neutron Havana (20)

PDF
CloudStack Ecosystem Day - OpenStack/Swift
PDF
OpenStack概要
PPTX
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
PDF
Open stack reference architecture v1 2
PDF
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
PDF
20130714 July Tech Festa 日本CloudStackユーザー会
PPTX
Cloudstack user group meeting in osaka
PDF
OSC2012-Fukuoka-CloudStack-Update
PDF
OpenStackで始めるクラウド環境構築入門
PDF
Whats new Apache CloudStack
PDF
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PDF
OSC2011 Tokyo/Fall JOSUG
PDF
[G-Tech2014講演資料] シスコのSDN最新動向とITインフラエンジニアに求められるスキル - シスコシステムズ合同会社
PDF
【Brocade OpenStack ソリューション】LBaaS プラグイン
PDF
OpenStack QuickStart - Icehouse
PDF
Lagopus Switch Usecases
PPTX
20140927 azure pack_slideshare
PDF
IOS/IOS-XE 運用管理機能アップデート
PPTX
20170804 IOS/IOS-XE運用管理機能アップデート
PDF
Cloudstack networking の内側
CloudStack Ecosystem Day - OpenStack/Swift
OpenStack概要
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
Open stack reference architecture v1 2
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
20130714 July Tech Festa 日本CloudStackユーザー会
Cloudstack user group meeting in osaka
OSC2012-Fukuoka-CloudStack-Update
OpenStackで始めるクラウド環境構築入門
Whats new Apache CloudStack
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
OSC2011 Tokyo/Fall JOSUG
[G-Tech2014講演資料] シスコのSDN最新動向とITインフラエンジニアに求められるスキル - シスコシステムズ合同会社
【Brocade OpenStack ソリューション】LBaaS プラグイン
OpenStack QuickStart - Icehouse
Lagopus Switch Usecases
20140927 azure pack_slideshare
IOS/IOS-XE 運用管理機能アップデート
20170804 IOS/IOS-XE運用管理機能アップデート
Cloudstack networking の内側

More from Akihiro Motoki (8)

PDF
Kubernetes Upgrade survey (Dec 2023) results
PDF
20190722 OpenStack community past present future
PDF
20190722 Building handy CI with zuul and OpenStack
PDF
20190118-josug-open stack-community-goals
PDF
OpenStack Neutron IPv6 Lessons
PDF
OpenStack Contribution Howto
PDF
20121216 OSC Cloud OpenStack Quantum
PDF
Horizon Quantum Integration grizzly
Kubernetes Upgrade survey (Dec 2023) results
20190722 OpenStack community past present future
20190722 Building handy CI with zuul and OpenStack
20190118-josug-open stack-community-goals
OpenStack Neutron IPv6 Lessons
OpenStack Contribution Howto
20121216 OSC Cloud OpenStack Quantum
Horizon Quantum Integration grizzly

20131211 Neutron Havana

  • 1. OpenStack が実現する仮想ネットワーク ~OpenStack Neutron~ [Havana Update] Akihiro Motoki (@ritchey98) OpenStack Neutron Core Developer Japan OpenStack Users Group Dec 11th, 2013
  • 2. はじめに • 本資料は 2012年12月の OSC Cloud での資料を 2013年12月時点での情報に更新したものです。 • LBaaS などの Network Advanced Service の情報を追 加しています。
  • 3. 自己紹介 • 元木 顕弘 (@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
  • 4. OpenStack Project と Neutron *-as-a-Service Capability Compute OpenStack Service Nova Swift (Objects) Storage Cinder (Block) Glance (Images) identity Keystone Network Neutron ???
  • 5. Neutron の目的 #1 • Network-as-a-Service (NaaS) を提供する – テナントが自由なネットワーク操作を提供 • 複数のプライベートなネットワークの作成 • IPアドレスの制御 – 論理ネットワーク操作API • 論理操作と物理操作を分離 • 物理レイヤーは Neutron (Plugin) が設定する
  • 6. 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, …)
  • 7. 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 と関連付けられる。 Nova VM1 10.0.0.2 VM2 10.0.0.3 virtual server virtual interface (VIF) virtual port Neutron Net1 10.0.0.0/24 L2 virtual network IPv6 virtual subnet
  • 8. Neutron でできること 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
  • 9. Tenant View vs Infra View Tenant-A VM VM net2 VM R net1 VM Internet Tenant-A VM net1 R VM Tenatn View Infra (Provider) View VM VM vSwitch VM VM vSwitch VM VM vSwitch Internet SW Data Center Network SW GW
  • 10. Tenant View vs Infra View • Neutron は論理操作をユーザに提供 • 物理操作はプラグイン or NW Controller が行う Tenant-A VM User VM net2 VM R net1 VM Internet Tenant-A REST API VM net1 R VM Neutron Tenatn View Nova Infra (Provider) View Plugin NW Controller VM VM vSwitch VM VM vSwitch VM VM vSwitch Internet SW Data Center Network SW GW
  • 11. 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
  • 12. 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 } } 一般ユーザー } 管理者ユーザー
  • 13. 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 | +-----------------+--------------------------------------+
  • 14. 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 | +------------------+------------------------------------------------+
  • 15. 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 | +----------------+--------------------------------------------------------+
  • 16. Neutron Architecture • 物理ネットワークの制御は Neutron Plugin が行う。 • Plugin を切り替えることで、様々なネットワーク技術を利用 できる。現在は同時には一種類のみ利用可。 CLI / Dashboard (Horizon) / Orchestration Tool Nova API Neutron API Nova Neutron Nova Compute Nova Compute VM VM Neutron Plugin agent Physical Network VM Virtual Switch agent HW Switch VM Virtual Switch
  • 17. CLI / Dashboard (Horizon) / Orchestration Tool Nova API Neutron API Nova Neutron Nova Compute Nova Compute VM VM Neutron Plugin agent Physical Network VM Virtual Switch agent HW Switch VM Virtual Switch
  • 18. OpenStack と OpenFlow の連携 CLI / Dashboard (Horizon) / Orchestration Tool Neutron API Nova API Neutron Nova NEC OpenFlow Plugin Nova Compute VM OFC API OpenFlow Controller agent Nova Compute VM VM agent Virtual Switch Virtual Switch OpenFlow Protocol Network VM HW Switch
  • 19. 最近の構造 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
  • 20. 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 もあわせて制御
  • 21. 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 に展開し、ブロードキャストを削減する
  • 22. 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 にプロキ シーする。
  • 23. 機能ブロックと配置 External network Management Network eth0 eth2 eth0 eth0 eth0 Compute Node Controller Node Nova Compute Nova Compute Plugin Agent Plugin Agent OVS (br-int) Neutron Server DHCP agent L3 agent metadata agt Network Node Plugin Agent Nova(CC) Compute Node OVS (br-int) OVS (br-int) eth1 eth1 eth1 OVS (br-ex) Data Network
  • 24. 機能ブロックと配置 • Plugin Agent – データトラフィックを扱うノードで動作させる必要あり • Nova-compute ノード • DHCP-agent が動作するノード • L3-agent が動作するノード • DHCP-agent, L3-agent – いずれか一つのノードで動作させる必要あり – L3-agent は外部ネットワークとの通信を行うため、専 用ノードにするのが望ましい。 – 現状、Nova-network の multi_host 構成は未対応
  • 26. 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)
  • 27. サービス配置パターン Firewall Network 1 FW on Port (security group?) Network 2 Network 1 FW on Router External Network FW on network
  • 28. サービス配置パターン Load Balancer 2-arm LB 1-arm LB Network 1 Network 1 - terminated - Router Network 1 Direct Return Network 2
  • 29. Network Service Insertion Service Insertion Network 2 Network 1 External Network VPN Connection
  • 30. 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
  • 31. 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
  • 32. 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
  • 33. Neutron API の位置付け Horizon, Heat or Orchestration LBaaS API HW Appliance Process Based LB (HAProxy) LB Service VM Compute API L2/L3 API Virtual Router VM VM VM Virtual Network OpenStack が提供するのは Abstraction と Integration (≠ Virtualization) Neutron には L2/L3 API と Advanced Service API が両方存在している。 両者を区別してみると、理解しやすいと思います。
  • 35. Neutron を使う上でのTips (1) • Network Namespace – Linuxが持つネットワーク仮想化の機能で、1つの物理ホスト上に、 複数の独立したネットワーク機能を構成できる。 他の Namespace の影響を受けない。 – Neutronでは、IPアドレスが重複したネットワークを扱うために、 Network Namespace を利用しています。 起動したVMの動作確認に ping を打とうとした際に、 制御サーバから Ping を打っても届きません。  Network Namespace 内からコマンドを実行する必要があります。 ip netns exec <netns-name> ping 192.168.1.10 – 詳しくは “network namespace” で検索してください。 – 新しめのカーネルが使用されている Linux (Ubuntu 12.04など)では問 題なく動作します。 RHEL6/CentOS6系ではそのままでは動作しないた め、RDO で配布されているカーネルを使用する必要があります。 – 基本的には Network Namespace を有効にして Neutron を使うことを 推奨します。
  • 36. 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", ]