作者: 赵怡
一、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)] 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:
https://launchpad.net/neutron/liberty/7.0.0
实现了28个blueprint,解决了558个bug
五、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
具体配置区别暂略 ...