20121216 osc cloud openstack quantum

27
OpenStack が実現する仮想ネットワーク OpenStack Quantum の紹介~ Akihiro Motoki (@ritchey98) OpenStack Quantum Core Developer Japan OpenStack Users Group Dec 16 th , 2012

Upload: akihiro-motoki

Post on 12-May-2015

2.877 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: 20121216 OSC Cloud OpenStack Quantum

OpenStack が実現する仮想ネットワーク~OpenStack Quantum の紹介~

Akihiro Motoki (@ritchey98)OpenStack Quantum Core Developer

Japan OpenStack Users GroupDec 16th, 2012

Page 2: 20121216 OSC Cloud OpenStack Quantum

自己紹介

• 元木顕弘 Twiter: @ritchey98

• 某電気系メーカの研究所に所属– IPルータ、広域Ethernet装置、迷惑メールフィルタなどの開発をやっていました。の開発をやっていました。

– 最近は OpenStack, OpenFlow 周りで活動しています。

• Linux JM Project– 皆さん日本語マニュアル必要ですか。いつやめてもいいです (^^;

• OpenStack Quantum Core Developer

Page 3: 20121216 OSC Cloud OpenStack Quantum

OpenStack Project と Quantum

Compute Nova

Swift (Objects)

*-as-a-Service Capability OpenStack Service

Storage

Network

Glance (Images)

Quantum

Cinder (Block)

identity Keystone

Page 4: 20121216 OSC Cloud OpenStack Quantum

Quantum の目的 #1

• Network-as-a-Service (NaaS) を提供する

–テナントが自由なネットワーク操作を提供

• 複数のプライベートなネットワークの作成

• IPアドレスの制御• IPアドレスの制御

–論理ネットワーク操作API• 論理操作と物理操作を分離

• 物理レイヤーは Quantum (Plugin) が設定する

Page 5: 20121216 OSC Cloud OpenStack Quantum

Quantum の目的 #2

• 複数のネットワーク技術に対応

– データセンタでは新たな要件が発生• multi tenancy, remote data center, VM mobility, advanced

network services, …

– Nova は VLAN + Linux iptables のみが利用可能– Nova は VLAN + Linux iptables のみが利用可能

– 新しいネットワーク技術に対応できるアーキテクチャ• SDN/OpenFlow-based network

• Overlay tunneling (VXLAN, NVGRE, STT, …)

• L2 Fabric (Fabric Path, QFabric, …)

Page 6: 20121216 OSC Cloud OpenStack Quantum

Quantum 仮想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

VM110.0.0.2Nova

Quantum L2 virtual network

VM210.0.0.3

virtual port

virtual server

virtual interface (VIF)

virtual subnet10.0.0.0/24 IPv6

Page 7: 20121216 OSC Cloud OpenStack Quantum

Quantum でできることTenantA-VM1

10.0.0.2TenantA-VM1

10.0.0.2

TenantA-VM3TenantA-VM39.0.0.2

TenantA-VM210.0.0.3

TenantA-VM210.0.0.3

Tenant-A Net110.0.0.0/24

Tenant-A Net29.0.0.0/24

L2 virtual network

virtual port

virtual server

virtual interface (VIF)

virtual subnet

• ネットワークの自由な作成• IP overlapping Tenant Networks

External

88.0.0.0/18

External Net

88.0.0.0/18

SNAT for external trafficFloating IP

• 複数 NIC を持った VM の)作成

• ルータ経由で Subnet 間通信• Floating IP での外部からの接続 (Elastic IP@AWS)

Page 8: 20121216 OSC Cloud OpenStack Quantum

Tenant View vs Infra ViewTenant-A

VM

VMnet2

VM

VMnet1 R

Tenant-A

VM

VMnet1 R

Internet

Infra (Provider) View

VM

Tenatn View

Data Center Network

Internet

GW

vSwitch

VM VM

vSwitch

VM VM

vSwitch

VM VM

SW SW

Page 9: 20121216 OSC Cloud OpenStack Quantum

Tenant View vs Infra View

Tenant-A

VM

VMnet2

VM

VMnet1 R

Tenant-A

VMnet1 R

Internet

User

• Quantum は論理操作をユーザに提供• 物理操作はプラグイン or NW Controller が行う

REST API

Infra (Provider) View

VM

VMnet1 R

Tenatn View

Data Center Network

Internet

GW

vSwitch

VM VM

vSwitch

VM VM

vSwitch

VM VM

Quantum

NWController

SW SW

NovaPlugin

REST API

Page 10: 20121216 OSC Cloud OpenStack Quantum

Quantum API

• Network, Subnet, Port のそれぞれに対してList, Create, Read, Update, Delete 操作をREST API で行う。

– net-create, net-update, net-delete,net-list, net-shownet-list, net-show

– subnet-create, subnet-update, subnet-delete,subnet-list, subnet-show

– port-create, port-update, port-delete,port-list, port-show

Page 11: 20121216 OSC Cloud OpenStack Quantum

Quantum API (network)

$ quantum net-create net1Created a new network:+-----------------+--------------------------------------+| Field | Value |+-----------------+--------------------------------------+| admin_state_up | True || admin_state_up | True || id | a5d04085-3a15-470f-adca-b67c0958a829 || name | net1 || router:external | False || shared | False || status | ACTIVE || subnets | || tenant_id | c3ed8c16308642de9b15647759d9e5e9 |+-----------------+--------------------------------------+

Page 12: 20121216 OSC Cloud OpenStack Quantum

Quantum API (subnet)

$ quantum subnet-create net1 172.16.1.0/24Created 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 | || dns_nameservers | || enable_dhcp | True || gateway_ip | 172.16.1.1 || host_routes | || id | 736b30c1-5b83-4b52-b5ac-a397273cb240 || ip_version | 4 || name | || network_id | a5d04085-3a15-470f-adca-b67c0958a829 || tenant_id | c3ed8c16308642de9b15647759d9e5e9 |+------------------+------------------------------------------------+

Page 13: 20121216 OSC Cloud OpenStack Quantum

Quantum API (port)

$ quantum port-show 332d3288-5d7a-4ea9-8af6-9b5c82615bb2+----------------+--------------------------------------------------------+| Field | Value |+----------------+--------------------------------------------------------+| admin_state_up | True || device_id | d8b5dc3c-f73c-44bf-9c04-13f986cf5e6b || device_owner | compute:nova || 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 | || network_id | 6d013e3f-7ea9-402c-9725-9cb693809988 || status | ACTIVE || tenant_id | 34657b6768184444af7b5081213e6e73 |+----------------+--------------------------------------------------------+

Page 14: 20121216 OSC Cloud OpenStack Quantum

Tenant Network Control (Horizon)

Page 15: 20121216 OSC Cloud OpenStack Quantum

Tenant Network Control (Horizon)

Page 16: 20121216 OSC Cloud OpenStack Quantum

VM Launching (1)

Page 17: 20121216 OSC Cloud OpenStack Quantum

VM Launching (2)

nova boot --flavor 1 --image 58ba017b-dd22-492f-a826-b8c72a133be0--nic net-id=45fe25eb-f5ef-43b1-b006-6878c1643111 server1

Page 18: 20121216 OSC Cloud OpenStack Quantum

Quantum Architecture• 物理ネットワークの制御は Quantum Plugin が行う。• Plugin を切り替えることで、様々なネットワーク技術を利用

できる。現在は同時には一種類のみ利用可。

CLI / Dashboard (Horizon) / Orchestration Tool

Quantum API Nova API

Quantum

Nova

Quantum Plugin

Nova Compute

Virtual Switch

VM VM

Nova Compute

Virtual Switch

VM VM

HW SwitchPhysical Network

agent agent

Page 19: 20121216 OSC Cloud OpenStack Quantum

Quantum

OpenStack と OpenFlow の連携

Nova

NEC OpenFlow PluginNova Compute Nova Compute

CLI / Dashboard (Horizon) / Orchestration Tool

Quantum API Nova API

Nova Compute

Virtual Switch

VM VM

Nova Compute

Virtual Switch

VM VM

HW Switch

OpenFlow Controller

Network

OFC API

OpenFlow Protocol

agent agent

Page 20: 20121216 OSC Cloud OpenStack Quantum

Quantum Plugin• 現在 Mainline に入っているもの• NW Controller なし

– Open vSwitch Plugin (VLAN, GRE)– Linux Bridge Plugin (VLAN)

• SDN/OpenFlow 系– Nicira NVP Plugin– Nicira NVP Plugin– Ryu Plugin– NEC OpenFlow Plugin

• Trema SliceableSwitch (OSS)• ProgrammableFlow

– Big Switch Plugin• その他

– Cisco Plugin : Cisco UCS と Nexus スイッチを利用

Page 21: 20121216 OSC Cloud OpenStack Quantum

Quantum の機能ブロック• Quantum Server

– 論理ネットワークの管理を行う– Plugin は Quantum Server の一部

• Agent – Quantum Server 以外のサービスプロセス。Quantum Server 以外の

サーバでも動作可能。– Plugin– Plugin の実現方式に応じて、必要に応じて使用する。

実現方式次第では Agent は不要。

• Plugin Agent– vSwitch の情報取得、設定を行う

• DHCP Agent– 仮想NW単位のDHCPサーバの管理を行う

• L3 Agent– 論理ルータの操作を行う。論理ルータは、iptables を利用して実現

Page 22: 20121216 OSC Cloud OpenStack Quantum

Nova(CC)Quantum

Server

Compute Node Compute Node

eth0eth0eth0

NovaCompute

NovaCompute

Management Network

機能ブロックと配置

eth0

DHCP agentL3 agent

OVS(br-ex)

eth2

External network

Server

Data Network

eth1 eth1

OVS(br-int)

OVS(br-int)

Compute Compute

Plugin Agent Plugin Agent

ControllerNode

eth1

OVS(br-int)

L3 agentPlugin Agent

Network Node

Page 23: 20121216 OSC Cloud OpenStack Quantum

機能ブロックと配置

• Plugin Agent– データトラフィックを扱うノードで動作させる必要あり

• Nova-compute ノード

• DHCP-agent が動作するノード

• L3-agent が動作するノード

• DHCP-agent, L3-agent• DHCP-agent, L3-agent– いずれか一つのノードで動作させる必要あり

– L3-agent は外部ネットワークとの通信を行うため、Nova-Compute ノードとは別ノードにするのが望ましい。

– 現状、Nova-network の multi_host 構成は未対応

Page 24: 20121216 OSC Cloud OpenStack Quantum

Quantum を使う上での注意点 (1)• Network Namespace

– Linuxが持つネットワーク仮想化の機能で、1つの物理ホスト上に、複数の独立したネットワーク機能を構成できる。他の Namespace の影響を受けない。

– Quantumでは、IPアドレスが重複したネットワークを扱うために、Network Namespace を利用しています。

起動したVMの動作確認に ping を打とうとした際に、起動したVMの動作確認に ping を打とうとした際に、制御サーバから Ping を打っても届きません。

Network Namespace 内からコマンドを実行する必要があります。

– 詳しくは “network namespace” で検索してください。

– 最近のUbuntu(12.04など)では問題なく動作しますが、RHEL6/CentOS6系では現状は動作しません。• Quantumの設定で Network Namespace を使用しないようにすることもできま

す。

ip netns exec <netns-name> ping 192.168.1.10

Page 25: 20121216 OSC Cloud OpenStack Quantum

Quantum を使う上での注意点 (2)• ネットワークの操作は quantum コマンドで。

– nova-manage network は使わないで下さい。create コマンド自体は成功して、list でも表示されますが、何の意味もありません。Nova DBに書き込んでいるだけなので。

– Grizzly で、Quantum が有効になっていると、nova-manage network でエラーが出るようになるかもしれません。

• KVM• KVM– /etc/libvirt/qemu.conf に設定が必要です。– Quantum では作成済みの 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",]

Page 26: 20121216 OSC Cloud OpenStack Quantum

次期リリース Grizzly に向けて

• Closing gaps– Nova との連携が十分でない機能の実現

– Quantum Security groups & metadata service with overlapping IPs

– L3 forwarding 、DHCP機能の scalability 確保– L3 forwarding 、DHCP機能の scalability 確保

• 負荷分散, nova “multi_host” flag 相当

• Advanced Services– Load-balancing (LBaaS)

– VPN

Page 27: 20121216 OSC Cloud OpenStack Quantum

最後に

• Quantum を使うと、–仮想ネットワークを自由に作れるようになります。自由なネットワークトポロジー。

– SDN/OpenFlow といった新しいネットワーク技術と組み合わせて、従来のネットワーク制限を克服で組み合わせて、従来のネットワーク制限を克服できます。

• 情報不足、機能不足な点も多いです。–日本OpenStackユーザ会の勉強会などもご利用下さい。