编者的话:Neutron作为OpenStack网络模块,是核心组件之一。作为OpenStack发展的重点,社区每周都有一些新变化。UnitedStack有云网络组的同事将梳理这些变化,每周分享给大家。欢迎评论,一起探讨社区发展的方向!
1、最奇葩-改名?
上周有一件很奇葩的事情,就是 Neutron 由于与一个漫威一个漫画形象的名字相重复,Jimmy(肯尼迪航天中心的 CIO)发了一封邮件讨论是否需要再更换名字的问题,Armando(现任 PTL)提议回到 Quantum 的名字(编者注:网络组件在Austin版本包含在Nova中,称为Nova-network;在Folsom版本正式更名Quantum;因为商标侵权的原因,Openstack在Havana版本上将Quantum更名为Neutron)……
2、最焦心-老坑:
鉴于 OVN 计划在 Newton 版成为 OpenStack Networking 的一个 Production-ready 的版本,Russell 提议 networking-ovn 进入 OpenStack 的 Release 计划,随 OpenStack 大社区的 Milestone 来 release。
使用 Neutron 在大规模环境中生产的系统管理员应该都不大敢重启节点的特别是网络节点的 ovs-agent,一方面,存在了很久的流量终端的问题,另一方面,执行单个 ovs 命令看起来很快,实际上重启 ovs 遇到承载大量 port 的 agent 时,其实很花时间。因为每个 port 都需要拉取 security group 的信息、2 层信息(vlan)、详细信息(device_owner、network_type、……),这样算下来,在 RPC 和服务器理想的情况下,假设一个 port 花费 1s 时间,1500 个 port(往往存在于网络节点上)至少需要 25 min,如果碰上了因为 fork 的性能问题或者因为消息太大(这又是一个老坑,当然现在基本修复了)而拖长,那么接近一个小时都有可能了……
在很久以前大概 14 年底,Terry 曾经研究过使用 OVSDB 与 OVS-VSCTL(之前主流方法就是直接调 ovs-vsctl 这么 low)的性能区别:
大家说,哇,超越这么多,要换 ovsdb 啊!于是 kilo 版本通过了 spec(https://specs.openstack.org/openstack/neutron-specs/specs/kilo/vsctl-to-ovsdb.html),大家吭哧吭哧完成了 ovsdb 版本的编码工作(大概到 Liberty 版),现在大概 openvswitch_agent.ini,你可以看到 ovsdb_interface 这个配置,默认还是 vsctl。背景说完了,说上周发生的事情,Inessa 说,我发现 ovsdb 这个很好啊,为什么没用在默认的 gateway 测试上呢?IWAMOTO 很严肃的 research 和回复了这个问题,首先呢,有定时测试去做这个事情,其次呢,他发现 ovsdb 虽然快,但并没有解决 ovs-agent 的执行速度瓶颈!他尝试启动 160 个虚拟机测试,ovs-agent 的使用时间大概都在 60s 左右。
3、最有趣-过滤!
再说个比较有意思的问题,我们知道 Neutron 的 anti-spoof 做了很多方面——在 qbr 上做 ip、mac 的过滤(allowed address pair 和 port security)、在 qbr 上过滤 dhcp 相关的报文、在 ovs 上过滤 arp 报文。
这个思路本来没什么问题,但是最近发现先执行 DHCP 的放行规则(需要先放行虚拟机自己对外的 dhcp discovery)再执行 IP、MAC 过滤的规则,这样 IP 和 MAC 可能被 spoof。见这个 bug:https://bugs.launchpad.net/neutron/+bug/1558658
特别在 Vlan 网络,恶意的虚拟机可能造成交换机学习到大量错误的 MAC 造成问题。此外 OVS 上过滤 ARP 导致使用 linuxbridge 的网络可能无法过滤 arp。解决方法很简单,就是在 iptables 上加强规则,在 ebtables 上和 ovs 上再加 mac 过滤,一共三个 Patch,并不很复杂。
4、一周更新列表:
1.合入了一个 QoS DSCP 的 spec。目前 QoS 只有 limit,对于一些用户可能有视频、VoIP 等等需求,所以计划 Mitaka 加入 QoS DSCP 的功能,这个可能会在 Mitaka design summit 继续讨论。此外,原来 QoS 只能限制对外流量,Slawek 正在撰写对内流量的 limiting(https://review.openstack.org/#/c/303626/)。
2.garyk 提了一个 patch 减少 list networks 时,fields 的 iterate。这对管理员来说还有一件比较好的事,虽然目前没有定量测试,但是确实应该有提升:https://review.openstack.org/#/c/302266/1
3.开启 Pluggable IPAM 时,create_port 会有一些并发的问题,Pavel、Carl 一起做了一些讨论,特别是 CAS 与 locking,有兴趣的同学可以看下:https://bugs.launchpad.net/neutron/+bug/1543094,这是个比较老的事了,但是最近 Kevin 开始写 patch。
最后,还有一些 OVO、DVR、Pecan、测试等相关的 Patch,这里就不详述了。
本周的 Weekly Meeting 讨论了一些测试问题和 Newton 版本的 spec,见 http://eavesdrop.openstack.org/meetings/networking/2016/networking.2016-04-04-21.00.log.html