Neutron/ML2
- Neutron ML2
模塊層2(ml2)插件是一種允許OpenStack網絡同時地利用在復雜現實數據中心發現的各種第二層網絡技術的框架。目前它與存在的openvswitch、linuxbridge和hyperv L2代理共同存在,而且想要替換和否決與那些L2代理相關聯的巨大插件。ml2框架也想要大大簡化增加對新L2網絡技術的支持,並且比那些要求添加新的巨大核心插件需要更少的初始和持續的努力。模塊化代理可能作為后續開發工作。
1.1. ML2驅動
ml2驅動分別實現可擴展的網絡類型和訪問那些類型網絡機制的集合。與metaplugin不同的是,多種機制被同時地用於訪問相同虛擬網絡的不同端口。這些機制能通過RPC和/或使用驅動原理利用L2代理來與外部設備或者控制器相互聯系。類型和進程驅動程序被加載為python入口點使用stevedore庫。
1.1.1. 驅動類型
每個可用的網絡類型被ml2驅動類型管理。驅動類型維持任何需要指定類型的網絡狀態,並且執行供應商網絡驗證和租戶網絡配置。Ml2插件同時包含本地、扁平、vlan、gre和vxlan網絡類型的驅動程序。
1.1.2. 驅動機制
每個網絡進程被ml2驅動機制管理。驅動機制對已建立的類型驅動獲取的信息有責任,以及確保能夠恰當的應用到所給的能工作的網絡進程。
驅動機制接口同時支持創建、更新和刪除網絡和端口資源。對每個在資源上采取行動,進程驅動使用兩種方法——ACTION_RESOURCE_precommit,一種稱為數據庫事務處理上下文和ACTION_RESOURCE_postcommit,稱為數據庫事務完成后。Precommit方法被驅動機制用於驗證采取的行動和做任何需要改變驅動機制的私有數據庫。Precommit方法不應該阻塞以及因此不能和任何外部Neutron通信。Postcommit方法負責適當推動改變資源的實體負責應用改變。例如,postcommit方法將推動一個外部網絡控制器改變,那負責適當地更新網絡資源基於這些改變。
支持驅動機制目前在先行版本Havana中是半成品,同時它的接口在Havana推行前會發生改變。在未來的版本中,驅動機制接口也被稱為用來建立端口綁定,決定VIF類型和網段。
1.2. 多區段網絡
虛擬網絡有多段相同或者不同類型組成的。數據庫決策和驅動程序APIs支持多區段網絡,但是對於多區段網絡的客戶端APIs現在還沒有實現。
2. ML2配置
2.1. 在Devstack中使用ML2
ML2插件在Devstack中完全支持。支持配置VLAN、GRE和VXLAN網絡模式。配置這些模式如下:
2.2. 用VLANs模式的ML2配置Devstack
為配置ML2使用控制和計算結點的localrc文件如下所述,用來運行VLANs模式的Devstack。這等價於運行OVS或者LinuxBridge插件在VLAN模式下。
如下在你的控制節點添加如下的localrc文件:
Q_PLUGIN=ml2 ENABLE_TENANT_VLANS=True ML2_VLAN_RANGES=mynetwork:100:200 |
為VLAN類型驅動程序設置指定的VLAN參數,在localrc下列變量被使用。這是一個空間獨立的分配值列表:
Q_ML2_PLUGIN_VLAN_TYPE_OPTIONS=(network_vlan_ranges=600:700) |
2.3. 用隧道網絡模式的ML2配置Devstack
一個控制和計算結點localrc文件顯示在這里為了配置ML2運行隧道網絡的Devstack。這是最基本的配置ML2的形式,而且等價於運行GRE隧道的OVS插件。
在控制節點localrc添加如下:
Q_PLUGIN=ml2 ENABLE_TENANT_TUNNELS=True |
在計算結點,添加到你的localrc中:
Q_PLUGIN=ml2 ENABLE_TENANT_TUNNELS=True |
改變GRE關鍵的范圍使用隧道關鍵,添加到localrc:
TENANT_TUNNEL_RANGE=50:100 |
上面將啟用OVS的GRE隧道。如果你想要使用OVS的VXLAN,確保你正在運行至少1.10版本的OVS,包括從上游領域的OVS項目中的Open vSwitch KLM。一旦你有了,下面就可以啟用VXLAN隧道模式的ML2:
在控制節點上添加下列到localrc:
Q_PLUGIN=ml2 Q_ML2_TENANT_NETWORK_TYPE=vxlan |
計算結點上添加下列代碼到localrc中:
Q_PLUGIN=ml2 Q_ML2_TENANT_NETWORK_TYPE=vxlan |
改變VXLAN VNIs的范圍到使用,添加到localrc:
Q_ML2_PLUGIN_VXLAN_TYPE_OPTIONS=(vni_ranges=400:500) |
2.4. 在Devstack中高級ML2配置
Devstack缺省運行OVS代理的ML2.使用不同的代理,在localrc中如下設置:
Q_AGENT=linuxbridge
ML2缺省不加載任何進程驅動程序,僅與OVS、LinuxBridge和Hyper-V代理共存。為了改變這個,在localrc中設置如下。有效參數是你想要使用的進程驅動程序的名字:
Q_ML2_PLUGIN_MECHANISM_DRIVERS=<list of MechansimDrivers>
默認地,所有的ML2類型驅動被加載。改變這個行為,在localrc設置如下。有效選項如下設置:local、flat、vlan、gre、vxlan。
Q_ML2_PLUGIN_TYPE_DRIVERS=vlan,gre