Junoに向けた開発動向(Neutron)・・・・日本電気株式会社 元木 顕弘氏

Junoに向けた開発動向(Neutron)
Sep 19th, 2014
Akihiro Motoki, NEC
Agenda
• Neutron のネットワークモデルと考え方
• Icehouse Update
• 次リリース Juno でのトピック
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 と関連付けられる。
TenantA-VM1
10.0.0.2
TenantA-VM2
10.0.0.3
Tenant-A Net1
10.0.0.0/24
TenantA-VM3
9.0.0.2
virtual server
virtual interface (VIF)
Tenant-A Net2
9.0.0.0/24
virtual port
L2 virtual network
virtual subnet
Neutron
External
Net
88.0.0.0/18
SNAT for external traffic
Floating IP
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 の位置付け
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 の基本構造
• 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 Server
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 ML2 Plugin
• ML2 = Modular Layer 2
OVS/Linux Bridge Plugin の機能は凍結。機能追加は
ML2 Plugin に対して行われる。ML2 に移行しましょう
– 複数のプラグインを統合する目的で開発
– デフォルトの 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, …..
– L2 population driver
• MAC アドレス情報を OVS に展開し、ブロードキャストを削減する
Icehouse Update
Icehouse Release Notes
Key New Features
During Icehouse cycle the team focused on stability and testing of the
Neutron codebase. Many of the existing plugins and drivers were revised to
address known performance and stability issues.
• 性能、安定性の向上が中心
–
–
–
–
•
Multiple API worker / RPC worker
Improvements in dhcp-agent, l3-agent, OVS agent …
Scenario test / API test coverage in tempest
Third party testing (vendor driver testing)
nova event callback
– Notify nova of port status changes when fixed_ips/floatingips change
– It ensure a VM is launched after network connection is available.
•
Deprecate OVS Plugin and Linux Bridge plugin
– Migration to ML2 plugin is recommended.
•
機能面の変更は少なめ
– これまでの機能追加中心だったが、一度立ち止まって底上げ
– 次の機能追加に向けた充電期間と考えるべき
Multiple API/RPC Worker
API request
Neutron server
DB
RPC message
Message queue
API
worker
API
worker
API
worker
RPC
worker
RPC
worker
RPC
worker
Message queue
OVS
Dhcp
l3OVS
Dhcp
l3OVS
Dhcp
l3agent
agent
agent
agent
agent
agent
agent
agent
agent
OVS
Dhcp
l3OVS
Dhcp
l3OVS
Dhcp
l3agent
agent
agent
agent
agent
agent
agent
agent
agent
https://www.openstack.org/assets/presentation-media/junohpneutronatscalefinal.pdf
DB
Nova event callbacks
• Neutron のポートの状態変更を Nova に通知する仕組み
• Nova 側では、確実に、ネットワーク接続の準備が整ってか
ら VM 起動を行えるようになる。
– これまでは、Nova は Neutron ポートを作成すると、状態を確認
せずに VM 起動を行っていたので、DHCP の IP アドレス割り当
て等に失敗することがあった。
Compute host
nova-compute
(5) Notify Nova
(4) 準備完了通知
OVS
agent
(3) ネットワーク
接続準備
Dhcp
server
(6) VM Launch
VM
VIF
Neutron
Server
(1) Create Port
Neutronから通知
があるまで待つ
(2) Tap-dev作成
OVS
Network
Neutron topics in “Juno”
• Migration from “nova-network”
– OpenStack には nova-network と neutron の二つのネットワーク
機能が存在するが、将来的には neutron に統合されることは
合意ができている。
– nova-network との機能互換性の実現
– nova-network からの運用環境での移行サポート
• Network/Port/ Security Group などのデータの nova から neutron へ
の移行
• D-Plane トラフィックはダウンさせずに移行する方法が検討中。
TCP セッションが切れないレベルが当面の目標。
• API の停止は伴う見込み。
– Weekly Meeting でもステータスを確認中
• Distributed Virtual Router (DVR)
• L3-agent HA
• IPv6 full support
Neutron topics in “Juno”
• Distributed Virtual Router with Open vSwitch
– 現在は OSS 実装では、仮想ルーターをまたぐトラフィックは必ず l3agent が動作するノードを経由
– Compute Node で動作する分散ルータを OVS ベースで実装
– nova-network の multi_host 機能 (ネットワークの HA 方法) の代替と
期待されている。
https://docs.google.com/document/d/1iXMAyVMf42FTahExmGdYNGOBFyeA4e74sAO3pvr_RjA/edit?usp=sharing
Neutron topics in “Juno”
Network Services
• Flavor Framework
どうやって進めるかを議論している段階
– 複数の Load Balancer のサービスレベル、実装などを
選択可能にする仕組み。サービス品質に応じて、物
理アプライアンス、仮想アプライアンスなどを使い分
けることが可能になる。
• Service Insertion / Service Chaining
• Traffic Steering
– L2 Transparent な Network Service を実現するため、
条件にマッチしたトラフィックを特定のポートに
Redirect する仕組みを提案
• Group-based Policy Framework
Neutron topics in “Juno”
Network Services
• Service VM
– VM でネットワーク機能を実現する枠組み
– Service VM 自体は Neutron/Nova など複数プロ
ジェクトにまたがるため、独立したプロジェクト
(stackforge) で進めることになった。
– Service VM を実現する上での Neutron に必要機
能を整理し、Neutron 側と連携して実装していく。
– https://etherpad.openstack.org/p/servicevm
最近のトピック
•
•
•
•
NFV Sub-team
Cross-Project design summit session
Ops-Dev Meetup
Blueprint Spec Review
• Neutron Development Process
– Review Burden/Delay
– Neutron Incubator Proposal
• E.g., LBaaS, Group-based Policy, …
– Vendor Plugins out of tree?