2017年2月8日星期三

OpenStack neutron网络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

地点: 中国四川省成都市