OpenStack neutron網絡Kilo-Newton版本區別


作者: 趙怡

上次發表了一篇有關neutron kilo/liberty/mitaka各版本的主要區別, 這次來總結一下網絡和NFV方面, kilo版和newton之間的版本變化:

一、Neutron Kilo版和Newton版本功能區別:

L2-二層

功能點

功能變化類型

描述

支持管理員手動調度agent

新增

在添加新的agent時支持新的選項: enable_new_agents, 針對以下agent: l3-agent, dhcp-agent, lbaas-agent。當admin_state_up=True和enable_new_agents=True時, 爲傳統的默認行爲, 資源可以自動調度到該agent。當admin_state_up=False和enable_new_agents=False, 爲維護模式(測試模式), 資源將不能自動調度到該agent, 直到管理員將admin_state_up置爲True。該模式主要用於新增節點時, 管理員不想讓用戶資源調度到該節點, 需要經過一段時間做測試。

改進默認MTU配置

修改

默認把path_mtu置爲1500, 'advertise_mtu'置爲True, 通過DHCP可以考慮到VXLAN overhead問題, 自動設置爲1450.

自動創建網絡

新增

“get-me-a-network” , 即Automatic allocation of network topologies, 簡化創建虛擬機時需要配置網絡信息的步驟。

只需要事先指定默認的外部網絡和subnet pools, 創建虛擬機時, 可以讓neutron自動根據默認配置, 創建網絡,子網,分配ip, 路由器, 連接外網。

改進l2-agent下線後導致port-bind失敗

bug修復

當port bind fail是由於l2 agent下線導致的話, 當l2 agent上線時, port bind將會恢復

ovs實現allowed_address_pairs

新增

虛擬機只允許Neutron給它分配的IP地址和MAC地址對外發包,這一特性之前在iptables實現,現在在OVS上也實現了

ovs默認openflow/ovsdb接口驅動默認改爲native方式

新增

neutron-openvswitch-agent原來默認使用'ovs-ofctl'和'ovsdb'接口驅動, 現在改爲'native'接口驅動, 提高了性能。

注:

ovs-ofctl驅動: 即調用ovs-ofctl命令進行openflow流表下發, 啓動ovs-ofctl命令需要花很多時間, 而'native'驅動是通過調用ryu控制器接口, 通過openflow協議下發openflow流表。

ovs-vsctl驅動: 即調用ovs-vsctl命令進行端口、bridge的增刪, 啓動ovs-vsctl命令需要花很多時間, 而'native'驅動是通過調用ovs提供的python api接口, 通過ovsdb協議來操作。

支持查詢網絡及其子網的所有ip個數和使用過的ip個數

新增

支持查詢網絡下所有ip個數, 使用過的ip個數。網絡下每個子網的所有ip個數, 使用過的ip個數

支持IP分配選項

新增

port多了一個ip_allocation的屬性, 可選值有: ‘immediate’, ‘deferred’, or ‘none’。當創建port時, 'immediate'爲: 立即分配和配置IP地址。'deferred'爲: 延後分配IP, 等到port能夠bind到host時再分配。'none'爲: 暫不分配ip

subnet增加類型屬性: ‘service_types’

新增

subnet增加類型屬性: ‘service_types’, 爲手動指定的device_owner的列表, 如: network:floatingip_agent_gateway, network:router_gateway。

port分配IP時, 通過port的device_owner匹配subnet的service_type, 來決定在哪個subnet中分配IP。

廠商驅動被移除

廢棄

廠商的ML2 plugin/agent被移除出neutron代碼。 廠商代碼被挪到各自的networking-XXX項目中, 其中XXX爲廠商驅動名稱。

 

安全組

功能點

功能變化類型

(新增/修改/廢棄/重大bug修復/性能改進)

描述

OVS-agent驅動支持connection track連接跟蹤

新增

新的安全組防火牆驅動引入。基於OpenFlow,使用了connection track

  

L3-三層

功能點

功能變化類型

(新增/修改/廢棄/重大bug修復/性能改進)

描述

支持IPAM

新增

默認使用可插拔式的IP address management框架, 可使用第三方IPAM, 用來管理IP地址。

L3 HA使用keepalived引發的問題

bug修復

解決L3 HA使用keepalived引發的問題

開啓keepalived時會記錄進程的pid,如果節點意外關機或者發生故障等,那麼這個文件不會清除,下次再開啓keepalived時如果這個文件保存的pid恰好被用了,那麼keepalived將無法啓動

支持DVR SNAT上的HA

新增

支持DVR SNAT上的HA

支持subnetpool

新增

在K版時引入subnet-pools來防止ip地址重疊, 每個subnet-pools裏所添加的subnet地址範圍不能重疊。

支持bgp

新增

向支持動態路由協議的設備,  通告內部網絡的前綴, 目前只支持bgp。這樣外部網絡訪問內部網絡虛擬機時, 可以不用綁定浮動ip了。涉及到自治域AS, 需要引入address scope, 而address scope依賴於subnet pools。

  

防火牆FWAAS

功能點

功能變化類型

(新增/修改/廢棄/重大bug修復/性能改進)

描述

FWaaS API

新增

FWaaS v1 API計劃將被廢棄, 由FWaaS v2替代。已經在Newton的rc1版本支持, 但是還有部分功能bug, 文檔和tempest測試未完成。

目前默認還是用的v1。v1和v2不能同時使用。FWaaS v2代碼已經存在, 增加了對port和方向等功能的支持。

支持OVS的Firewalls驅動

新增

使用ovs-firewall driver實現安全組功能,需要依賴native OVS。通過openflow流表實現安全組。還有點小問題, 不成熟。

防火牆配額修改

修改

默認firewall的租戶配額從無限制改爲10個

默認firewall_policy的租戶配額從無限制改爲10個

默認firewall_rule的租戶配額從無限制改爲100個

 

負載均衡器LBAAS

功能點

功能變化類型

(新增/修改/廢棄/重大bug修復/性能改進)

描述

LB V1 API

廢棄

廢棄存在功能缺陷的LB V1 API

LB V2 API

修改

提供功能更全面的LB V2 API。主要是支持多listener,支持7層策略轉發

7層策略轉發: 一個l7policy可以包含多個l7rule,而l7policy是關聯在listener上的,即可以根據策略做報文轉發

策略類型包括5種:host_name,  path,  file_type,  header,  cookie

轉發動作有3種:reject,redirect to pool,redirect to URL

Octavia

新增

新增了一個octavia driver,可以支持HA。


VPNAAS

功能點

功能變化類型

(新增/修改/廢棄/重大bug修復/性能改進)

描述

VPNaaS高可用

新增

VPNaaS基於HA Router實現IPSec高可用功能

VPNaaS Endpoint

新增

VPNaas Endpoint組用於實現支持本地多子網、遠端多子網創建IPsec連接

  

DNS(Designate)

功能點

功能變化類型

(新增/修改/廢棄/重大bug修復/性能改進)

描述

廢棄2個服務

廢棄

架構上微調,廢棄2個服務 designate-zone-manager 和 designate-pool-manager

新增後端DNS

新增

後端DNS新增支持 TinyDNS, Knot DNS 2

架構優化

優化

架構優化, 新增2個服務 designate-worker 和 designate-producer

底層命令行操作,由openstack xxx 統一管理dns資源, REST API官方建議使用v2代替v1

消息上報優化

優化

優化狀態和統計信息上報

  

TACKER

功能點

功能變化類型

(新增/修改/廢棄/重大bug修復/性能改進)

描述

安全組 TOSCA 模板

新增

支持安全組 TOSCA 模板

獲取 VNFC 詳細信息

新增

新增API接口, 獲取 VNFC (VNF catalog)詳細信息

試驗功能VNF Forwarding Graph

新增

試驗功能 VNF Forwarding Graph(轉發圖功能), 構建多種虛擬數據中心的場景; 所謂轉發圖是NFV的術語,構建多個VNF,同時包含VNF之間的轉發路徑,所以稱之爲FG,一個網絡服務可能由一個或多個FG組成

支持sfc

新增

支持 Neutron 的 networking-sfc driver

支持ceilometer收集event/alarm

新增

通過 Ceilometer 模塊觸發, 收集 event/alarm

支持VNF擴展

新增

支持VNF 的自動/手動 橫向(數量擴展)和縱向(虛擬機資源)擴展

在tacker資源的命名字段, 引入唯一條件約束

新增

tacker數據庫中, tacker資源的命名字段, 引入唯一條件約束。即資源名稱不能重複。

支持 keystone v3

新增

修復1個Bug, 支持 keystone v3

  

其他Neutron功能

功能點

功能變化類型

(新增/修改/廢棄/重大bug修復/性能改進)

描述

支持QoS

新增

新增QoS功能, 支持對虛擬機端口、網絡的限速和dscp marking。目前支持qos的ml2驅動有: ovs, linuxbridge, sriov。對網絡的限速是指對該網絡下所有端口進行限速。

支持RBAC

新增

新增基於角色的網絡訪問控制(RBAC), 允許其他項目訪問自己的資源。通過創建RBAC策略,指定access_as_shared操作來完成。使用RBAC,其他項目能夠在可訪問的網絡上創建端口(L版已支持);向可訪問的網絡或端口綁定QoS策略(M版支持);向網絡綁定router gateway(M版支持)

支持可用域AZ

新增

支持對DHCP和L3 agent的可用域, 允許用戶指定哪個節點上使用相關網絡服務。

在dhcp-agent, l3-agent配置文件裏指明該agent所屬的AZ名稱。然後在創建網絡或路由器時, 指明期望的AZ名, 那麼實際創建網絡、路由器時會調度到az所要求的agent上。

支持Address Scope

新增

通過把子網劃分到address scope, 可以把有通信需求的子網歸類到一起, 形成路由域(自治域AS)。

由於路由域不能有ip地址重疊, 在K版時引入subnet-pools來防止ip地址重疊, 每個subnet-pools裏所添加的subnet地址範圍不能重疊。

支持vlan-aware-vms

新增

目前虛擬機收發的是vlan untagged報文。但是有些虛擬機(如NFV), 需要收發vlan tagged報文, 這時可以用這個功能。

虛擬機鏡像需要創建vlan子接口,支持收發vlan tagged報文。 neutron需要創建新的trunk port, 並把原來的port作爲child port掛在trunk port下, 同時指定child port的vlan id, 再把trunk port掛在虛擬機上就可以了。類似於QinQ。

openstack network trunk create --parent-port port0 --subport port=port1,segmentation-type=vlan,segmentation-id=101 trunk0

openstack server create --flavor ds512M --image vlan-capable-image --nic port-id=port0 --wait vm0

支持l2 gateway

新增

通過service plugin實現, 用來打通虛擬網絡和物理網絡, 提供二層互聯。需要在網絡節點和計算節點運行l2-gateway-agent。

主要用來接入第三方網絡設備, 並分配vlan/vxlan id。

L2-gateway作爲Neutron的一種Service,neutron原有的功能不會有任何影響。

L2GW Service Plugin的作用爲接收用戶的l2-gateway rest api請求,操作l2gw數據庫,傳遞消息到l2gw agent使進行底層處理。

L2GW agent的作用類似一個消息中介,收到L2GW Service Plugin的消息後,轉換爲ovsdb消息對gateway進行配置;收到gateway發送的ovsdb數據變化消息後,轉換爲rpc消息通知L2GW Service Plugin。

支持在部分網絡資源上填寫描述信息

新增

安全組策略, 網絡, 端口, 路由器, 浮動IP, subnet pools現在可以有一個可選的描述信息供用戶填寫

支持在部分網絡資源上配置tag標籤

新增

用戶可以在網絡資源上配置tag標籤, 網絡資源可以使用tag來過濾. 支持"tags", "tags-any", "not-tags"和"not-tags-any"

其中:neutron net-list –tags TAG  表示只顯示標籤爲TAG的網絡;

Neutron net-list – tags-any TAG1,TAG2….   表示只顯示標籤爲TAG1或TAG2的網絡;

Neutron net-list –not-tags TAG  表示標籤爲TAG的網絡都不顯示,其餘網絡都顯示;

Neutron net-list –not-tags-any TAG1,TAG2  表示只要有TAG1或TAG2標籤的網絡都不顯示, 其餘網絡都顯示。

支持網絡核心資源加入創建、更新的時間戳

新增

對neutron核心網絡資源network, subnet, port, subnetpool加入創建, 更新的時間戳

RPC消息放入不同隊列, 提高收發性能

性能改進

RPC和通知消息放入不同的隊列中, 用來提高高優先級消息收發的性能

neutron的config文件通過腳本生成

新增

現在的config文件都是自動通過腳本生成的, RPM發佈版中已經提供了生成好的config文件

需要通過類似如下命令生成配置文件:

oslo-config-generator --namespace oslo.messaging \

                  --namespace nova.common \

                  --namespace nova.compute > nova-compute.conf

neutron資源排序分頁默認開啓

修改

Neutron 資源的排序分頁

之前此功能是在配置文件中配置的,且默認關閉;目前這兩個選項通過 extension 的形式進行管理,默認開啓,並且通過 API 檢查是否開啓了排序和分頁

neutron CLI將被OSC逐步替換

新增

neutron CLI將被OSC(OpenStack Client)逐步替代,相應的代碼移植到python-openstackclient,將不會更新python-neutronclient。

neutron-*aas cli也會進行遷移,所有新增API必須支持openstack-client。

創建網絡命令將會是:openstack network create [parameter1, 2…]

升級各組件, 服務不需要重啓

新增

升級各組件, 服務不需要重啓

還未正式發佈

  

二、extensions API區別:

模塊/文件名

K版和N版本區別

neutron

address_scope.py

新增

agent.py

無變化

allowedaddresspairs.py

無變化

auto_allocated_topology.py

新增

availability_zone.py

新增

default_subnetpools.py

新增

dhcpagentscheduler.py

無變化

dns.py

新增

dvr.py

無變化

external_net.py

無變化

extra_dhcp_opt.py

無變化

extraroute.py

無變化

flavor.py

刪除文件

flavors.py

新增。用來定義service type和service profile。當前的service provider框架可以讓用戶選擇服務時使用多個底層驅動, 但其中是有一些問題。flavor提供了一個機制, 讓operator選擇驅動, 驅動metadata,  flag.

   Flavor

id: uuid name: string description: text service: LOADBALANCER, VPN, FIREWALL, L3_ROUTER, etc supported_extensions: comma separated value string selection_algorithm: Enum(random, available, least_used) service_profiles: [(uuid list, weight)] (JSON list) enabled: boolean

Service Profile

id: uuid description: text driver: string metainfo: string(json encoded dict) enabled: boolean

ip_allocation.py

新增. 用來表示某端口是否要分配ip或者延後分配ip

l2_adjacency.py

新增

l3_ext_gw_mode.py

無變化

l3_ext_ha_mode.py

無變化

l3_flavors.py

新增

l3.py

floatingips字段增加了subnet_id, 可以選擇subnet來創建floating ip (該特性已經合入蘇研分支)

l3agent_scheduler.py

無變化

metering.py

對tenant_id增加了必須爲string且長度爲TENANT_ID_MAX_LEN的驗證要求

multiprovidernet.py

無變化

netmtu.py

無變化

network_availability_zone.py

新增. 網絡可用域AZ

network_ip_availability.py

新增. 網絡下所有ip個數, 使用過的ip個數。網絡下每個子網的所有ip個數, 使用過的ip個數

pagination.py

新增。查詢結果是否分頁。

portbindings.py

增加了baremetal和direct-physical的vnic類型

portsecurity.py

無變化

project_id.py

新增. 查詢結果是否顯示project_id。

providernet.py

無變化

qos.py

新增文件。增加了qos限速相關API. 可以對network或者port做QoS限速。policy+rule方式, 目前只有限速:bandwidth_limit_rules, dscp_marking_rules.

quotasv2.py

無變化

rbac.py

新增文件。Role-Based Access Control for Networks. 新增基於角色訪問網絡, 網絡通過角色定義來共享給一組特定租戶。可以在企業和私有云部署中使用。

revisions.py

新增

router_availability_zone.py

新增. 路由器可用域AZ

routerservicetype.py

無變化

securitygroup.py

1.對tenant_id增加了必須爲string且長度爲TENANT_ID_MAX_LEN的驗證要求

2. sg支持的協議中增加了ICMP_V6協議。

3. sg rules方向的更新操作從"允許"變爲"不允許"

segment.py

新增

servicetype.py

無變化

sorting.py

新增。查詢結果是否排序。

standardattrdescription.py

新增。支持資源描述

subnet_service_types.py

新增。subnet增加類型: 如: network:floatingip_agent_gateway, network:router_gateway

subnetallocation.py

無變化

tag.py

新增。資源增加標籤做分類查找

timestamp.py

新增。資源創建、更新的時間戳

trunk_details.py

新增。port增加trunk屬性

trunk.py

新增。增加trunk

vlantrasparent.py

無變化

fwaas

fireall.py

1. FW action中除了ALLOW, DENY以外, 增加了REJECT

2. name, description字段增加了長度限制

firewallrouterinsertion.py

無變化

firewall_v2.py

新增。增加防火牆v2接口

lbaas

lbaas_agentscheduler.py

已刪除(廢棄vLB v1)

lbaas_agentschedulerv2.py

無變化

loadbalancer.py

無變化

 vLB API v1無變化。

loadbalancerv2.py

default_tls_container_id字段名改爲default_tls_container_ref

sni_container_ids字段名改爲sni_container_refs

vLB v2部分,L版比K版多了兩個API接口命令,分別是:

lbaas-agent-hosting-loadbalancer LOADBALANCER, 查看指定的loadbalancer又哪一個agent來監管。

lbaas-loadbalancer-list-on-agent LBAAS_AGENT, 查看指定的agent上監管了哪些loadbalancer。

l7.py

新增文件。新增基於7層的策略轉發功能。

lb_graph.py

新增文件。支持一個API創建出一個可用的負載均衡器,目前只支持octavia driver。

lb_network_vip.py

新增文件。支持創建LB時使用network_id,以適應一個net包含多個subnet的情況。

healthmonitor_max_retries_down.py

新增文件。增加一個fall threshold,和raise threshold相對應。

sharedpools.py

新增文件。允許pools在listeners中被共享。

vpnaas

vpnaas.py

vpnservices中增加了字段external_v4_ip,external_v6_ip

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章