2017年2月8日星期三

Neutron Kilo-Liberty-Mitaka各版本区别

一、Neutron Kilo版和Liberty版本主要区别:

新增的特性:
1. neutron支持IPv6前缀委托授权为IPv6子网分配CIDR
2. neutron支持QoS API, 初期只支持端口带宽限制
3.路由器HA (L3 HA/VRRP)在L2 population(l2_pop)设置为enable时, 可以正常工作了。
4. VPNaaS参考驱动现在可以和HA router一起正常工作了
5. HA路由器上使用的VRRP网络, 可以配置为特定的segmentation类型或者物理网络tag。
6. OVS agent重启, 不会影响数据网络的连接。
7. 新增基于角色的网络访问控制(role based access control (RBAC) for networks)
8. LBaaS V2参考驱动现在基于Octavia平台
9. LBaaS V2 API不再是实验性的, 而是稳定版本了
10. neutron给管理员提供手动调度agent, 便于测试
11. 提供可插拔式的IP address management框架, 可使用第三方IPAM。

废弃和删除的plugins和驱动:
1. metaplugin被移除
2. IBM SDN-VE monolithic plugin被移除
3. Cisco N1kV monolithic plugin被移除, 被ML2机制驱动取代
4. Embrane plugin被废弃, 在Mitaka版本会被移除

废弃的特性:
1. FWaaS API被标为实验性质的, M版将会被移除, 新版的FWaaS API将会在M版取代老版的。
2. LBaaS V1 API被标记为废弃的, 准备在未来版本中移除, 并将被LBaaS V2 API取代。
3. L3 agent中的'external_network_bridge'选项将被废弃

性能:
1. Linux kernel(3.13): 'ip netns exec'命令在namespace增长的情况下, 性能表现出了明显下降。3.19版本以上版本修复该问题。
2. 使用Octavia驱动创建LBaaS负载均衡时, 如果不使用硬件虚拟化, 会很慢。原因是在不使用硬件虚拟化的场景下, QEMU使用TCG加速器而不是KVM加速器。尽量在计算节点上使用硬件虚拟化。


其他相关模块状态:
1. 从自研的WSGI框架转为pecan wsgi框架。
2. 发布正式项目: aodh v1.0.0. 为ceilometer的一个报警引擎。
3. 发布正式项目: barbican v1.0.0: 密钥管理
4. 发布正式项目: designate v1.0.0. 提供DNS服务。
5. 发布正式项目: manila v1.0.0: 云端共享文件服务
6. 发布正式项目: zaqar v1.0.0: 消息队列服务。开发者可以在不同的SaaS模块或移动应用之间发送消息。
7. 容器编排项目: magnum. 在kilo版时发布了第一个版本。
L版目前没有发布版本。Magnum 在设计上,希望调用其它的容器管理平台的 API 来实现功能,自身作为一套API 框架,目前支持 Docker、Kubernetes、Swarm 等。主要优势包括多租户、多后端框架、完善的容器功能、支持资源调度等。如果说 Nova 是一套支持不同Hypervisor (KVM、VMWare 等虚拟机平台)的 API 框架,那么 Magnum 则是支持不同容器机制的 API 框架。
8. Dragonflow还未发布版本, 文档上看到准备在L版发布版本。
 华为以色列团队开发 , 在网络节点上集成一个controller agent作为控制器 , 计算节点上取消l3-agent, 通过控制器给计算节点 l2-agent下发三层openflow 流表来实现。
9. puppet-neutron发布6.10版, 没有更新CHANGELOG.用来自动部署openstackneutron.

二、Neutron Liberty版和Mitaka版本主要区别:

l  增加SSL连接选项到designate external dns driver
l  支持配置WSGI greenthreads pool
l  各物理网络上的多个NIC可以用于SR-IOV
l  改进默认MTU配置。默认把path_mtu置为1500, 'advertise_mtu'置为True, 通过DHCP可以考虑到VXLAN overhead问题, 自动设置为1450.
l  LinuxBridge agent可以支持基本的port, network QoS限速功能
l  外部网络可以被RBAC框架所控制
l  DHCP agent可以被指定到一个可用域中
l  L3 agent可以被指定到一个可用域中。HA router可以使用, 但DVR目前不支持, 因为L3HA和DVR集成工作还未完成。
l  nova可以自动创建网络, 不需要人为手动创建网络资源。
l  浮动IP可以关联dns_name和dns_domain属性
l  Port可以关联dns_name属性, Network可以关联dns_domain属性
l  浮动IP和端口会在外部DNS service中发布, 如果它们有关联dns_name和dns_domain属性的话
l  提供可以集成neutron和designate的参考驱动
l  当port bind fail是由于l2 agent下线导致的话, 当l2 agent上线时, port bind将会恢复
l  支持QoS策略在不同租户的subnet之间共享
l  安全组策略, 网络, 端口, 路由器, 浮动IP, subnet pools现在可以有一个可选的描述信息供用户填写
l  用户可以在网络资源上配置tag标签
l  网络资源可以使用tag来过滤. 支持"tags", "tags-any", "not-tags"和"not-tags-any"
l  对neutron核心网络资源network, subnet, port,subnetpool加入创建, 更新的时间戳
l  允许非管理员用户定义"外部"自定义路由。
l  租户子网,浮动ip主机路由通过BGP发布. BGP 支持:Neutron 目前支持将租户子网和浮动 IP 以及路由网关或者浮动 IP 代理网关(DVR 情况下)发布为 BGP 的下一跳;
l  对address scope加入额外属性告诉用户address scope在哪个网络里
l  支持DVR SNAT上的HA
l  qemu/kvm实力可以通过MaVtap桥模式添加到网络上
l  支持获得网络上可用的ip和使用过的ip个数
l  RPC和通知消息放入不同的队列中
l  neutron服务支持相应SIGUSR2消息,打印内部调试信息到标准错误输出
l  新的安全组防火墙驱动引入。基于OpenFlow,使用了connection track
l  neutron支持keystone v3

三、extensions API区别:

模块/文件名
L版本与K版本区别
M版本与L版本区别
Neutron
address_scope.py
新增功能。用于区分和标示subnetpools, 同一个address scope下的subnetpools不能重叠, 同时必须为同一个地址族。
增加ip_version字段以及Networks(包括IPV4_ADDRESS_SCOPE和IPV6_ADDRESS_SCOPE)
agent.py
"description"字段, 改为string_or_none, 可以为none. 原来是string.
无区别
allowedaddresspairs.py
无区别
无区别
auto_allocated_topology.py
L版无该功能
自动通过auto_allocated_topology获得一个network id, 用来当作启动虚拟机的网络, 简化操作, 省去了用户自己创建网络,子网,选择网络这些操作。
availability_zone.py
L版无该功能
支持对DHCP和L3 agent的可用域, 允许用户指定哪个节点上使用相关网络服务。
bgp_dragenscheduler.py
L版无该功能
L3 router中加入动态路由, 支持BGP路由发现和通告
bgp.py
L版无该功能
同上
default_subnetpools.py
L版无该功能
支持在subnet中标记默认subnetpool
dhcpagentscheduler.py
无区别
无区别
dns.py
新增功能。 ports api上新增配置DNSNAME, DNSASSIGMENT
增加了对浮动IP和网络的接口, 并增加了对DNS name的字符串合法性检查
dvr.py
无区别
无区别
external_net.py
无区别
无区别
extra_dhcp_opt.py
无区别
无明显区别, 改进了对extra dhcp opt的合法性检查
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
无区别
l3_ext_gw_mode.py
无区别
无区别
l3_ext_ha_mode.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
L版无该功能
Network中支持可用域
network_ip_availability.py
L版无该功能
提供IP可达性信息
portbindings.py
增加了baremetal的vnic类型
无区别
portsecurity.py
无区别
无区别
providernet.py
无区别
无区别
qos.py
新增文件。增加了qos限速相关API. 可以对network或者port做QoS限速。policy+rule方式, 目前只有限速:bandwidth_limit_rules.
无区别
quotasv2.py
无区别
无区别
rbac.py
新增文件。Role-Based Access Control for Networks. 新增基于角色访问网络, 网络通过角色定义来共享给一组特定租户。可以在企业和私有云部署中使用。
无区别
router_availability_zone.py
L版无该功能
Router中支持可用域
routerservicetype.py
无区别
无区别
securitygroup.py
1. 对tenant_id增加了必须为string且长度为TENANT_ID_MAX_LEN的验证要求
2. sg支持的协议中增加了ICMP_V6协议。
无区别
servicetype.py
无区别
无区别
standardattrdescription.py
L版无该功能
对以下资源表项增加了标准的描述: security_group_rules, security_groups, ports, subnets,networks, routers, floatingips, subnetpools
subnetallocation.py
无区别
无区别
tag.py
L版无该功能
支持对network资源配置tag标签
timestamp_core.py
L版无该功能
对neutron的一些核心资源(如net, subnet, port and subnetpool), 支持保存创建和更新时间, 用于DEBUG
vlantrasparent.py
无区别
无区别
fwaas
fireall.py
1. FW action中除了ALLOW, DENY以外, 增加了REJECT
2. name, description字段增加了长度限制
默认firewall的租户配额从无限制改为10个
默认firewall_policy的租户配额从无限制改为10个
默认firewall_rule的租户配额从无限制改为100个
firewallrouterinsertion.py
无区别
无区别
Lbaas
l7.py
L版无该功能
增加了对7层policy的支持
lbaas_agentscheduler.py
无区别
无区别
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。
loadbalancers中增加了flavor_id
members中增加了name

shared_pools.py
L版无该功能
允许pools在listeners中被共享
vpnaas

vpn_endpoint_groups.py
L版无该功能
支持VPN endpoint组
vpnaas.py
vpnservices中增加了字段external_v4_ip,external_v6_ip
ipsec_site_connections中支持local_ep_group_id, peer_ep_group_id

四、L版合入的BP:

实现了28个blueprint,解决了558个bug
支持与第三方IPAM系统集成。
将IPAM代码重构,不改逻辑。
用Pecan替代WSGI架构
添加配置项,不进行初始化,用于测试新部署的网络节点。
集成测试。
之前虚拟机的host name是neutron自动分配的,通过dnsmasq配置到虚拟机中。现在host name可以是虚拟机的名字。port中新增dns_name字段。
实现qos功能
支持在线迁移
subnet可以配置一个ipv4子网范围,而且使可以重复的。但是ipv6不行,因为ipv6是全局路由,不能重叠。所以为了方便使用提出了prefix delegation机制实现prefix自动分配。
支持DPDK加速OVS实现ML2。
qos
支持baremetal环境中TOR switch实现的端口绑定LAG,通过将LLDP信息和LAG信息送给Neutron,使其感知provider network。
支持python 3。
OVS 2.4支持option:csum以提高vxlan性能。
安全组支持conntrack,提高安全性。
qos
在SRIOV端口上支持配置MAC欺骗检查。使用ip link命令。在bond端口上配置时比较有用。
在networking-onos项目中,实现ml2的onos driver。onos控制器北向接口与neutron集成。
用ofctl存在缺陷:1.性能低;2.不支持异步消息。改用ryu控制器实现ofagent监听TCP端口。ovs中与控制器建立长连接。支持openflow v1.3和nicira扩展。配置of_interface为ovs-ofctl或native(即ofagent)。
支持利用原有的接口(用户定义的接口)实现ext-bridge(以前要新创建个)。在linuxbridge中新增配置项bridge_mappings,默认为空。检查端口如果存在,使用这个端口,否则创建一个这样的端口。
dns nameserver配置支持优先级:
neutron subnet-update [subnet_id] --dns_nameservers list=true 1.1.1.1 2.2.2.2 3.3.3.3
onos

五、M版合入的BP:

Provide better user-facing mechanism to choose service capabilities
LBaaS plugin can delegate VIP allocation to drivers
allow multiple subnets to connect to vpn
enable vhost-user support with ovs agent
Add Guru Meditation Report Functionality to Neutron
Add availability zones for agents
Automatically generate etc/neutron.conf file
Clean up resources when a tenant is deleted
External DNS Resolution
Get Me a Network
Modular L2 Agent
Restructure L2 agent
Improve DVR router sheduling mechanism for better performance/scalability
Introduce Address Scopes
ML2/LinuxBridge QoS support with bandwidth limiting
Add tags to core resources
Add timestamp to neutron resources
Adds a network-ip-usage api to fetch network and subnet IP usage counts
LBaaS Layer 7 rules
Role-based Access Control for QoS policies
Router Extension for Dynamic Routing Using BGP

六、L版的配置项改动:

L2相关配置项改动:
   ovs-agent:
       新增:  of_interface, 可选:ovs-ofctl, native,默认ovs-ofctl, OpenFlow interface to use.
                   datapath_type, 可选system, netdev,默认system,OVS datapath to use.
                  of_listen_address, 默认127.0.0.1,只给native用, Address tolisten on for OpenFlow connections.
                   of_listen_port,默认6633, 只给native用, Port to listenon for OpenFlow connections.
                  of_connect_timeout,默认30,只给native用, Timeout in seconds to wait forthe local switch connecting the controller.
                  of_request_timeout,默认10,只给native用,Timeout in seconds to wait for asingle OpenFlow request. 
                  drop_flows_on_start, 默认False, Reset flow table on start.Setting this to True will cause brief traffic interruption.
                   tunnel_csum,默认False, Set or un-set the tunnelheader checksum  on outgoing IP packet carrying GRE/VXLAN tunnel.
                   agent_type, 默认Open vSwitch agent,即将被删除,Selects the Agent Typereported

   dhcp-agent:
       新增:
               force_metadata, 默认False, Force to use DHCP to get Metadata on all networks.
               dnsmasq_base_log_dir, 保存dhcp和dns日志,即dnsmasq日志。
       废弃:
               dhcp_domain, openstacklocal,挪到neutron.conf,并更名为dns_domain
               dhcp_delete_namespaces, 默认值修改为True,即将废弃

   metda-agent:
       新增:
               endpoint_url,默认值None, Neutron endpoint URL, ifnot set will use endpoint     from the keystone catalog along withendpoint_type

   neutron:
       新增:
               dns_domain, 默认值openstacklocal, Domain to use for building the hostnames
               ipam_driver, 默认值None,IPAM driverto use

七、M版的配置项改动:

       现在M版的config文件都是自动通过脚本生成的。
       neutron项目中, 增加了如下配置文件: bgp_dragent.ini, macvtap_agent.ini, ml2_conf_sriov.ini,sriov_agent.ini
       需要通过类似如下命令生成配置文件:
       oslo-config-generator--namespace oslo.messaging \
                         --namespace nova.common \
                         --namespacenova.compute > nova-compute.conf
地点: 中国四川省成都市