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中被共享。

aas

aas.py

services中增加了字段external_v4_ip,external_v6_ip

 

你可能感兴趣的:(neutron,云计算,openstack)