目標:
掌握neutron資源模型以及主要表的表結構。
目錄:
1 Neutron資源的租戶隔離
2 Network
1 Neutron資源的租戶隔離
實現:通過字段tenant_id實現資源的租戶隔離
數據隔離: 不同租戶的網絡之間不能打通,
br-int,br-ethx通過VLAN來隔離各個租戶網絡數據流量
br-tun通過tunnel隔離租戶網絡流量
一個計算節點有:
一個br-int
一個br-ethx/br-tun
多個qbr(qbr綁定了安全組)
多個router/dvr(運行在namespace中)
2 Network
2.1 Network基礎
含義: 二層網絡的資源模型,支持的網絡有: Local, VLAN, Flat, VXLAN, GRE, Geneve等
種類:
Local: 主機內的網絡類型
VXLAN, GRE, Geneve: 隧道型網絡
Flat, VLAN: 非隧道型網絡
2.2 Network表結構
名稱 類型 描述
admin_state_up boolean Network管理狀態,true: up
availability_zone_hints array 指定該Network的DHCP服務可以部署的AZ列表
availability_zones array 指明Network的DHCP實際部署在哪些AZ中
created_at string 網絡創建時間
id string 網絡的ID
mtu integer 最大傳輸單元,以字節爲單位
name string 網絡名稱
port_security_enabled boolean 網絡的端口安全狀態,true: enabled。
project_id string 項目id
provider:network_type string 物理網絡類型,比如: flat,vlan,gre。
provider:physical_network string 物理網絡
provider:segmentation_id integer 物理網絡進行分片後的分片id。含義取決於: provider:network_type
若網絡類型是vlan,那麼該字段表示vlan id;如果是gre,表示gre key
qos_policy_id string Network關聯的qos policy id
router:external boolean 表示這個網絡是否關聯到路由器上的外部網絡
segments array 一組運營商分片網絡
shared boolean 表示網絡是否可以被所有租戶共享,默認只有管理員纔可以修改這個值
status string 網絡的狀態: ACTIVE, DOWN, BUILD, ERROR
subnets array 網絡關聯的子網列表
tenant_id string 項目id
updated_at string 網絡修改的時間,UTC
vlan_transparent boolean 標識網絡的VLAN透傳模式,true: VLAN透傳,false: 不透傳
description string 描述信息
分析:
Subnet和Port都隸屬於Network。
Subnet有一個字段network_id指向其所屬的Network
Port有一個字段network_id指向其所屬的Network
2.3 運營商網絡和租戶網絡
租戶網絡: 租戶創建的網絡,其信息配置在文件etc/neutron/plugins/ml2/ml2_conf.ini中,舉例如下:
#[etc/neutron/plugins/ml2/m12_conf.ini]
tenant network types=vxlan
[ml2_type_vxlan]
vni_ranges = 1:1000
解釋:租戶網絡的網絡類型是VXLAN,而相應的VNI是由Neutron分配,不過VNI的取值要落在範圍1~1000
運營商網絡: 運營商管理員創建的網絡,創建網絡傳入參數:
provider:network_type, provider:physical_network, provider:segmentation_id
使用場景: 映射一個不在neutron管理範圍內的網絡
物理網絡: provider:physical_network,即運營商網絡需要匹配的網絡。
VLAN和Flat網絡需要改參數,VXLAN網絡不需要該參數。
本質: 非隧道型網絡br-int連接的網橋爲br-ethx -->br-ethx與host的物理網口對接
br-ethx提前創建好,與物理網口對接也建立好。
實現: 用戶創建網絡時,指定該字段(例如"市場部網絡"),neutron做正確轉發。
對於隧道型網絡: 報文外面有隧道Header(包含隧道的源IP和目的IP),主機IP協議棧根據
目的IP找合適的網卡將報文發送出去。
創建非隧道型運營商網絡無需該字段。
Neutron選擇br-ethx方案:
假設br-ethx 的實現方法是 OVS (Open vSwitch ),那麼這個配置文件就是 etc/neutron/plugins/m12/
open vs witch_ agent.ini 其內容舉例如下:
# [etc / neutron/ plugins/ml2 / openvswitch_agent.ini)
bridge_mappings = physnetl:br-ethxl, physnet 2 :br-ethx2
這個內容表明,要想連接 physnetl ,就得先連接 br-ethxl
實現過程: 根據創建運營商網絡的provider:physical_network,找到對應配置文件,
就知道選擇哪個br-ethx
創建租戶網絡: 配置文件etc/neutron/plugins/ml2/ml2_conf.ini 假設網絡類型是VLAN ,配置文件的內容例如:
[ml2_type_vlan)
network_vlan_ranges = physnetl:l000:2999,physnet2:3000:4000
該配置信息表明有兩個物理網絡,其中physnetl VLAN 範圍是1000到2999, physnet2
VLAN 範圍是3000到4000。
2.4 Bridge的VLAN接口模式
參考:
深入理解OpenStack Neutron