Nov 29, 2016 Japan OpenStack Users Group 31st meetup presentation.
This presentation covers newer concepts introduced into Neutron recently and their use cases, for example, subnet pool, address scope, VLAN aware VMs (trunk port), Get-Me-A-Network, RBAC.
7. Address Scope
管理者が許可されたアドレス範囲のみを外部と通信させる方法
外部と通信可能な shared の Subnet Pool を作成しておく
External Network の Subnet を Address Scope に関連付けておく
テナントユーザーは外部と通信したい場合は shared Subnet Pool からSubnetを作成
テナントユーザーが CIDR を直接指定したサブネットでは、
同じアドレス帯であっても外部と通信不可
Net1
R
Net2
Net3違う Address Scope
に属すネットワーク
間は通信不可
Subnet
pool
Address
Scope
Subnet
pool
Address
Scope
(or CIDR直接指定) CIDR直接指定の場合は
Implicit Address Scope
として扱われる
External Net
8. BGP Dynamic Routing
BGP を使って、テナントNWのCIDR情報を Upstream Router に広告する
フラットなアドレスデザインを行っているケースで有効
Self Service
Network 1
10.1.1.0/24
Self Service
Network 2
10.2.2.0/24
Self Service
Network 3
10.3.3.0/24
Router1
203.0.113.1
10.1.1.1
Router2
203.0.113.2
10.2.2.1
Router3
203.0.113.3
10.3.3.1
Address Scope
Upstream
Router
Provider
Network
(router:e
xternal)
L3 agent
BGP agent
BGP peering
Internet
AS 4321
AS 1234
9. Get Me A Network
シンプルなクラウドユースケースにおいて、単に VM を作りたいだけなのに、
わざわざ、ネットワークを作って、ルーターを接続して、、、というのは面倒、
という声あり。
VM 起動時に、プロジェクトに Neutron ネットワークがなければ自動的に作成し、
VM をそのネットワークに接続できるようになった。
Newton で Nova 側の対応が完了。Neutron: auto-allocated-topology
従来 Get me a network
# create network
# create subnet
# nova boot --nic net-id
#nova boot --nic auto
--nic noneを指定すると、ネットワークのな
いVMを起動することも可能になった
10. VLAN aware VM (trunk port)
VLAN Tag は VM に入ってくる前に削除されていたため、VMではつなぐネット
ワーク数の vNIC を作成する必要があり、スケーラビリティに課題。
ネットワークを動的に増やす際には vNIC を増やす hotplug 対応が必要だった。
VLAN aware VM 機能により、VLAN タグで識別できるようになり、VM に接続
する vNIC を削減し、ネットワークの動的な拡張も容易になった。
VM
vNIC1
vNIC2
vNIC3
vNIC4
Network1
Network2
Network3
Network4
VM
Network1
Network2
Network3
Network4
Trunk
VLAN1
VLAN2
VLAN3
VLAN4
従来 VLAN aware VM
11. VLAN aware VM
Check “trunk” and “trunk-details” extensions are enabled.
openstack extension list –network | grep trunk
Trunk の作成
openstack port create --network trunk-net trunk-port
openstack network trunk create --parent-port <port ID> trunk
サブポートの Trunk への追加
openstack port create --network trunked-net trunked-port
openstack network trunk set --subport ¥
port=<trunked-port ID>,segmentation-type=vlan,segmentation-id=100 ¥
trunk
インスタンスの起動
openstack server create --nic port-id=<parent-port ID>
12. RBAC
RBAC = Role Based Access Control
従来の Neutron では、リソースは Private か Shared のみ
RBAC 機能を使うと、指定したプロジェクトとだけリソースを共有できる
あるプロジェクトとだけネットワークを共有する、など
現在サポートされているのは “Network” と “QoS policy” のみ