MPLS Japan 2012	

OpenStackにおけるネットワーク抽象化	

2012/10/15	
ＮＴＴセキュアプラットフォーム研究所	

1© 2012 NTT Secure Platform Laboratories目次	

1. はじめに	
2. OpenStackの概要	
3. OpenStackにおけるネットワーク抽象化	 L2ネットワークの抽象化（Quantum v1）	
 L3ネットワークの抽象化（Quantum v2）	4. 今後の展開	
 OpenFlowコントローラAPIの標準化動向	
5. おわりに	2© 2012 NTT Secure Platform Laboratories

はじめに	
• OpenStack等のIssS基盤では、クラウドコントローラと仮想ネットワークコントローラを連携させることで、仮想マシン、仮想ストレージ、およびそれらを接続する仮想ネットワークを統合管理し、お客様にセルフオンデマンドにサービスを提供可能となる。	
• OpenStackにおけるクラウドと仮想ＮＷの連携を例に、ネットワークの抽象化の検討状況を紹介します。	
ユーザI/F	

クラウド	コントローラ	

ポータル	
お客様	カスタマ	コントロール	

課金処理	

ネットワークの抽象化	
仮想	仮想	ｽﾄﾚｰｼﾞ	 ｱﾌﾟﾗｲ	
ｱﾝｽ	（LB、FW）	
仮想	マシン	
仮想SW	Hypervisor	

3

クラウド	
ビジネス基盤	

仮想NW	
コントローラ	

トンネル	

仮想	
仮想	
ｱﾌﾟﾗｲ	
ｽﾄﾚｰｼﾞ	
ｱﾝｽ	（LB、FW）	 仮想	マシン	

顧客管理	
ＳＯ	
監視・制御	
資産管理	
等	

仮想SW	
Hypervisor	© 2012 NTT Secure Platform Laboratories

OpenStack概要	
IssSを構築するオープンソースソフトウェアを開発するプロジェクト	
•2010年6月、米Rackspace社が立ち上げ	
•全世界で170社以上が参加	
•日本からはNEC,、NTTデータ、Midokura、 NTTなどが参加	

特徴：オープンであること	
•コミュニティに開発プロセスをすべて公開	•ソースもすべてオープンソースで提供	
– Apache License 2.0 （OSI承認オープンソースライセンス）	
•Open Core戦略は採らず、クローズドなエンタープライズ版を作らない方針	

4© 2012 NTT Secure Platform Laboratories

OpenStackプロジェクト	
• 最新版は2012年9月にリリースされたFolsom	• 当初、NovaとSwiftからスタートしたが、仮想ネットワークとの連携を実現するNetStackプロジェクトが早くから立ち上がり（2011年4月）、現在L2サービスを実現するQuantum、IPアドレス管理を実現するMelangeが利用可能	
※NetStackプロジェクトは今月正式にクローズ ⇒ Quantumに集約	
Horizon	

Dashboard 	(GUI)	
認証サービス	Keystone	
Donabe （現在休止）	 NWコンテナサービス	
Melange	(Quantum	に吸収)	

Quantum	IPアドレ
L2サービス	
ス	
管理	
NetStackプロジェクト	

5

利用	 Swift	

Nova	

Glance	

仮想マシン(VM)	
貸出サービス	
（EC2相当）	

VMイメージ	
管理サービス	

オブジェクト	ストレージサービス	
（S3相当）	

上記の他に以下のプロジェクトが進行中	
LBaaS (Load Balancer as a Service)	
DBaaS (Database as a Service)	
© 2012 NTT Secure Platform Laboratories

ネットワークのモデル	
•Quantumで扱うネットワークのモデル例	
•データセンタ内の仮想化サーバ上に作成される仮想マシンに対して、L2接続をサービスする	
•テナント毎に分離されたL2ネットワークが作成できる	
•外部ネットワークと接続する為のGW機能との接続を持つ	

CMS	
DB	

APL	

Web	

Quantum	
GW	

R	Internet/
VPN	Logical L2-SW	

vNW controller	

DB	

APL	vSW	

6Web	vSW	GW	vSW	

R	

Internet/VPN	© 2012 NTT Secure Platform Laboratories

Quantum v1 の論理ネットワークモデル	• Tenant内に複数のNetworkを作成できる	
• 各Networkは1つ以上のPortを持つ	
• PortはACTIVE/DOWNの状態を持つ	
• Entity（VM、Firewall、Router等）は1つ以上のVIF（Virtual Interface）を持つ	
• VIFをPortに接続する (Attach)ことができる	
Tenant	Network	
Port	

7

Network	

Port	

Port	

Port	

Port	

VIF	

VIF	

VIF	

VIF	

VM	

VM	

Fire Wall	

Port	

Port	

VIF	

Router	外部	ネットワーク	© 2012 NTT Secure Platform Laboratories

Quantum v1のアーキテクチャ	
• Quantumコンテナ	– Quantum APIの提供（ユーザ向け）	
– プラグインの管理	User	• Quantumプラグイン	
– 各社ネットワークコントローラとのアダプタ	
（ベンダ各社が実装）	
– 複数のプラグインの中から1つを選択してデプロイ	

• プラグイン固有機能の拡張	

Quantum API	

Quantum	Plug-in	A	

Plug-in	B	

Plug-in	C	– key-value形式のパラメータ拡張	• 現在、実装されているプラグイン	
– OpenVSwitch （by Nicira）	
– Nicira NVP (by Nicira)	
– Cisco UCS/Nexus （by Cisco）	
– Trema (by NEC) 等	

8Plug-inは1つを選択	選択可能	

仮想ネットワーク	コントローラ	© 2012 NTT Secure Platform Laboratories

OpenStackとOpenFlowコントローラの連携例	
ポータル	OpenStack API 	
EC2 API 	

Nova	

データセンタ	
VM	 VM	 VM	VM	 VM	 VM	VM	 VMOVS	 	 VM	OVS	 	
HyperVisorOVS	 	
HyperVisor
HyperVisor	
DC 内 NW	

9Glance API	

Quantum API	

Quantum
Plug-inGlance	

Swift			S3 API

OpenFlow	Controller	

OpenFlow	Protocol	

コアネットワーク		

データセンタ	
VM	 VM	 VM	VM	 VM	 VM	VM	 VMOVS	 	 VM	OVS	 	
HyperVisorOVS	 	
HyperVisor
HyperVisor	
DC 内 NW	
© 2012 NTT Secure Platform Laboratories

OpenStackによる仮想環境の実現例	
OpenStack (Nova)	
VIF	

仮想マシン	 仮想マシン（VM）作成	
複数のVIFを作成	
VIF	

お客様２	
192.168.2.99	

お客様１	
192.168.2.101	

仮想マシン	IPアドレス付与	

VIF	
192.168.1.100	

②仮想マシンが複数仮想ネット
ワークと接続	192.168.2.101	

認証	
サーバ	

192.168.2.103	

認証	サーバ	FW	192.168.2.100	

LB	 FW	
Web	 Web	①複数の隔離された
仮想ネットワーク	

192.168.1.100	

LB	
192.168.1.1	

OpenStack（Quantum）	

192.168.2.102	

トランザクション	DB	
処理サーバ	

OpenStack (Melange)	
VIF	
192.168.2.100	

192.168.2.100	

トランザクション	DB	
処理サーバ	

Web	
192.168.1.101	

Web	FW	

192.168.1.102	

FW	

仮想NW作成	
192.168.2.100	
VIF	
仮想マシン	
VIF	
192.168.1.100	

10

仮想NWと	VMを接続	

仮想マシン	

仮想NW	VIF: Virtual InterFace	
© 2012 NTT Secure Platform Laboratories

Quantum V2 最新情報	

11© 2012 NTT Secure Platform Laboratories

（再掲） Quantum v1 (Essex)	
■ スコープ	“Layer2 connectivity”を提供するサービス。プラグインモデルを導入。	
Nova からネットワーク機能を一部分離した。	
論理的なネットワークのモデルと操作セットを規定する	
(実際に実現されるネットワーク機能は、プラグイン実装に依存する)	
■ 論理モデル	• Tenant 内に複数の Network を作成できる	
• 各Networkは1つ以上のPortを持つ	
• Portは ACTIVE/DOWNの状態を持つ	
• Entityは1つ以上のVIFを持つ	
• VIFをPortに接続する (Attach)ことができる	

Tenant	Network	Port	

12

Network	

Port	

Port	

Port	

Port	

VIF	

VIF	

VIF	

VIF	

VM	

VM	

Fire Wall	

Port	

Port	

VIF	

Router	外部	ネットワーク	© 2012 NTT Secure Platform Laboratories

Quantum v2	
■ スコープ	
従来の L2 に加え、L3 の機能を導入（サブネット、IPAM, Logical Router）。	
Novaからネットワークの機能を完全に分離	
(Quantumと組み合わせる場合、Nova-Networkは使わなくなる)	
Nova 同様、API 体系は Core と Extension とに分かれている。	
■ 論理モデル	• Tenant 内に複数の Network を作成できる	
• 各NetworkにはL3情報(CIDR, dgw, … )を表す Subnetを関連付けられる	
• 各ネットワークは1つ以上の Portを持つことができる	
Tenant	

CIDR	
デフォルトゲートウェイ	スタティックルート設定	
IP アドレスプール	

ＩＰアドレス	
ＭＡＣアドレス	

13

Network	Network	Subnet(v4)	

Subnet(v6)	

Port	

Port	

Port	

Subnet(v4)	

Port	

Port	

VIF	

VIF	

VIF	

VIF	

VM	

VM	

VM	

Port	

Port	

Provider	Network	

VIF	

Router	© 2012 NTT Secure Platform Laboratories

Quantum v2 のプロセス構成	
API	
Nova や	リソース管理	

Quantum	Server	Quantum	Plug-in	

Quantum Server:	
API を受け付け、プラグインにディスパッチするプロセス。	
Quantum Plug-in:	
API の実装を提供するモジュール。	
コミュニティには以下のプラグインが存在する	
OVS Plugin, NVP Plugin, CISCO Plugin, NEC Plugin,	
Ryu Plugin, Meta Plugin	

Network	
Controller	(NVPなど)	
L3	Agent	

DHCP	
Agent	

以下はプラグイン依存	
L3 Agent:	
Logical Router のプロビジョニングを行うプロセス。	
DHCP Agent:	
DHCP Server のプロビジョニングを行うプロセス。	

14© 2012 NTT Secure Platform Laboratories

（参考）Quantum v2のAPI	• ネットワーク作成	
• ネットワーク削除	• ネットワーク変更	
• ネットワーク一覧	
• ネットワーク詳細	• サブネット作成	
• サブネット更新	
• サブネット削除	
• サブネット一覧	
• サブネット詳細	

15• ポート作成	
• ポート削除	• ポート変更	
• ポート一覧	
• ポート詳細	© 2012 NTT Secure Platform Laboratories

Network	L2 Network を表すリソース。	
1つ以上の Subnet と関連付けることができる（典型的には1つ。複数関連付けるのは v4, v6 用だと思われる）。	
■ 共有ネットワーク	
ネットワークは、1) 特定のテナントからのみアクセス可能な非共有ネットワーク (shared=false)、2) 全テナントからアクセス可能な 共有ネットワークがある (shared=true)	
■ admin_state_up	
管理用の属性であり、False が設定されるとパケット転送をしなくなる。デフォルトは True.	
属性名	型	

説明	必須 	CRUD 	

デフォルト値	

id 	

uuid-str 	

ネットワークID	-	R 	

generated 	

tenant_id 	str (255)	

テナントID	

N 	

CR	

keystone-tenant 	

name 	str (255)	

ネットワーク名称。ユニーク性は不要。	

Y 	

CRU 	

- 	

admin_state_up 	bool 	

リンクアップを許可するか	

N 	

CRU 	

True 	

status 	str (16)	

ネットワーク状態	

- 	R 	- 	shared	bool	

共有ネットワークにするか？	

N	

CRU	

False	

subnets 	list(uuid) 	

関連づけられたサブネット	

N 	

CRU 	

[] 	

16

(ACTIVE, DOWN, BUILD, ERROR)	

© 2012 NTT Secure Platform Laboratories

Subnet	L2 Network に付与される CIDR 等の L3 情報を付与し、サブネットを表すリソース。	
属性名	

型	

説明	必須 	CRUD 	

デフォルト値	

id 	

uuid-str 	

サブネットID	

-	R 	

generated 	name	

str (255)	

サブネット名称。ユニーク性は不要。	

N	

CRU	

-	

tenant_id 	

str (255)	

テナントID	Y	CR	

keystone-tenant 	

network-id	

uuid-str	

ネットワークID	

Y 	CR	- 	

ip_version	

int	

IP のバージョン	

Y	CR	4	

cidr	

string (64)	

CIDR 情報	Y	CR	-	

gateway_ip	

string or null	

デフォルトGW	
null の場合、配布しない	N	CRUD	CIDRの先頭アドレス	

dns_nameservers	

list (str)	

DNS NameServer	

N	

CRU	

-	

allocation_pools	

list (dict)	

本サブネットで使用してよい IP アドレスレンジ	例）	
ports [ { "start": "10.0.0.2", "end": "10.0.0.254"} ]	

N	

CR	

Gateway IP を除く CIDR 内の全 IP アドレス。	

host_routes	

list (dict)	

Host Route 情報。最大20エントリまで	
{'destination': <CIDR>, "nexthop": <valid IP address>}.	

N	CRU	

Gateway IP に対するデフォル
トルート。	

enable_dhcp	

Bool	

DHCPを利用するかいなか。	

N	

CRU	

True	

17

<network_address>/<prefix>	

© 2012 NTT Secure Platform Laboratories

Port	
Network の接続点を表すリソース。	
属性名	

型	

説明	

必須 	

CRUD 	

デフォルト値	

id 	

uuid-str 	

ポートID	

-	R 	generated 	name	

str (255)	

ポート名称。ユニーク性は不要。	

N	

CRU	

-	

tenant_id 	

str (255)	

テナントID	Y	CR (U?) 	

keystone-tenant 	

network-id	

uuid-str	

ネットワークID	

Y 	

CR	

- 	

admin_state_up	

bool	

リンクアップを許可するか	

N	

CRU	

True	

status	string (16)	

ネットワーク状態	

-	

R	-	

mac_address	

string (32)	

N	

CR	

Generated	

fixed_ips	

list (dict)	

IP アドレス。指定しなかった場合、subnet から払い出される。	

N	CRU	

-	device_id	

str (255)	

本ポートを使用しているデバイスの ID	
例）virtual server	

N	CRUD	-	

device_owner	

str (255)	

本ポートを使用しているデバイスの名称	
例） dhcp agent	

N	

CRUD	-	18(ACTIVE, DOWN, BUILD, ERROR)	

MAC アドレス。コロン (:) 区切りの 6 octet で指定する。	
システムで払い出す場合のプレフィクスは 3 OCTET, 4 OCTETのいずれかで、一つの接頭語を quantum.conf で定義できる。	

© 2012 NTT Secure Platform Laboratories

VM と Port の接続	• VM 起動時 (BootFromVolume) に		ネットワークの属性として、Port を指定する。	
Port に IP や MAC 等の情報	が設定されている	

VM 起動（BootFromVolume）	
....	
// NIC の設定	"networks" : [	{ "port" : "<port-id>" }, // NIC 1	
{ "port" : "<port-id>" }, // NIC 2	
【繰り返し】 ...	
]	

Port	
VIF	

VM	

Network	

Port	

Subnet(v4)	

Subnet(v6)	

Port	

VIF	
VIF	

Port	

Network	

Port	

Subnet(v4)	

Port	

Network	

Port	

Subnet(v4)	

19© 2012 NTT Secure Platform Laboratories

Provider Network （拡張機能）	

• Network の属性として VLAN ID を保持する Extension		
To create a provider VLAN network using the CLI with admin rights:	
shell> net-create --tenant_id <tenant-id> <net-name> \	--provider:segmentation_id <vlan-id>	

Network (G-L2)	
VM	 VIF	Port	 Subnet (v4)	

Provider	Network	(VLAN 101)	• 外部ネットワークとの接続を想定したものと考えられるが、具体的な VLAN へ抜ける実装方式は未定義。		
本仕様は VLAN を Network の属性に持つのみ。	

20© 2012 NTT Secure Platform Laboratories

Logical Router / Provider Network （拡張機能）	
Quantum v2 では Extension として、Logical Router の仕様が導入された。	
- Logical Router をオンデマンドにテナント内に作成可能	
- Logical Router はNetwork と接続され、接続したネットワーク間はデフォルトで	ルーティングされる	
Provider Network は、テナント共用の外部ネットワークを定義できる拡張仕様。	
INTERNET	
Provider Network	(vlan)	
VLAN	

L3	
Agent	

CRUD	

GRE	

Network	
Subnet	192.168.0.1/24	

21

Logical	Router	GRE	Network	
Subnet	192.168.1.1	
192.168.1.1/24	

GRE	

Network	
Subnet	192.168.2.1	
192.168.2.1/24	

© 2012 NTT Secure Platform Laboratories

Meta Plugin （拡張機能）• メタプラグインは複数のプラグインを呼び分けるプラグイン。今回は L2 / L3 APIの分離用に用いる。	

Quantum	Server	Meta	
Plug-in	
L2 関連の API	NVP	Plug-in	

22

L3 関連の API	
その他の	Plug-in	© 2012 NTT Secure Platform Laboratories

OpenFlowコントローラAPIの標準化動向	
 OpenFlowコントローラAPIの分類		 Low level APIs:
OpenFlowプロトコルを直接制御できるAPI	
Middle level APIs: OpenFlowアプリケーション開発用のライブラリを提供するAPI	High Level APIs: 既存物理アプライアンス（L2SW、ルータ、FW、LB等）が提供する機能をエミュレートするAPI	 OpenStackのQuantum（L2）、Melange（L3）はHigh level APIに相当	 OpenFlowコントローラAPIの標準化は現時点では進んでいない（ベンダ独自API）	
L2 API :Quantum	 L3 API :Melange	
OpenStackで	議論・標準化	

議論が進んでいない	

L4-L7 API : eg., LBaaS	High level features	
Logical	
L2	

Logical L4-L7	

Logical	
L3	

LB	

FW	

IDS/IPS	

論物管理	

経路管理	

トポロジ
管理	

テナント
管理	

プロトコルハンドラ (eg., ARP, Multicast, Broadcast, etc.)	

Low level features	
OpenFlowプロトコルハンドラ (rule, action)	

23

OpenFlow	Controller	

Middle level features	
状態
管理	

議論が進んでいない	

Cloud Controller	
(OpenStack)	

ONFで議論	
標準化	

OpenFlow	
OpenFlow	
Switches	
Switches	© 2012 NTT Secure Platform Laboratories

将来イメージ	•FW, LBなど、Ｌ４～７のネットワーク機能に対応	
•IDS/IPS等のセキュリティアプライアンス	

CMS	
DB	

APL	Web	Web	

Quantum	
LB/ FW	
Logical L2-SW	

Logical L2-SW	

R	Internet/VPN	

Logical L2-SW	

vNW controller	

DB	

APL	vSW	

24

Web	Web	vSW	LB/ FW	vSW	R	Internet/VPN	© 2012 NTT Secure Platform Laboratories

おわりに	
• OpenStackにおけるクラウドと仮想ＮＷの連携を例に、ネットワークの抽象化の検討状況を紹介	
• 今後はL4～L7の抽象化が課題	

25© 2012 NTT Secure Platform Laboratories