Mailing Lists
从 Neutron 社区的最近动态中可以看出,目前的工作重点依旧是关于 Neutron 的升级问题。本期我们主要关注 Neutron 中关于 MTU 的问题。
1、OVO 是其中非常重要的一方面
最近一周中,关于 subnetpools(https://review.openstack.org/300056) 和 allowedaddresspairs(https://review.openstack.org/327249) 的 OVO 改造已经完成。
关于 DNSNameServer(https://review.openstack.org/326477) Security Groups (https://review.openstack.org/284738) 和Port Security(https://review.openstack.org/327257) 的 OVO 改造还在审核确认中。
2、测试方面
完善了一些关于 Neutron 资源的排序、分页的单元测试,具体的 Gerrit 链接可以参考:
– next/prev href links tests: https://review.openstack.org/318270
– subnet tests: https://review.openstack.org/329340
– subnetpools tests: https://review.openstack.org/327081
3、关于 Neutron 中的 QoS
目前,Neutron 只针对虚拟网卡做了 QoS 限制。具体的配置做法是,在 Neutron Server 的 service_plugins 中配置添加 qos,在使用 ml2 的场景下,在 extension_drivers 中添加 qos 选项,对于 l2 agent 侧,在 [agent] 下添加qos 的扩展。关于目前实现的 QoS 本质上是通过 OVS 对在 br-int 上的虚拟网卡进行限速,具体命令如下:
ovs-vsctl set interface tap0 ingress_policing_rate=1000
ovs-vsctl set interface tap0 ingress_policing_burst=100
但是对于目前的实现,肯定无法满足需求,客户需要的往往是针对 FloatingIP 的限速。
4、关于 Neutron 中的 MTU
什么是 MTU ?MTU 是数据链路层的概念,指数据链路层对数据帧长度的限制。以以太网为例,MTU 指的是包含 IP 头在内的数据帧长度。
在 Neutron 中定义了很多关于 MTU 的参数,比如 path_mtu, segment_mtu 和 physical_network_mtus。
在介绍上述关于 MTU 的参数意义之前,首先了解下数据帧的格式,对于未封包的数据帧,格式如下:
对于封包的数据帧,格式如下(刚才说到的『MTU』指的就是 IP + Payload 部分):
因此,Neutron 中各个 MTU 的意义分别是:
对于创建 physical network 来说,其 mtu 是 segment_mtu 和对应的physical_network_mtus 最小值;对于创建 vxlan network 来说,其 mtu 是 path_mtu 和 segment_mtu – 50 (vxlan) 的最小值;对于创建 gre network 来说,其 mtu 是 path_mtu 和 segment_mtu – 42 (gre) 的最小值;而 network 的 mtu 值,最终会通过推送 DHCP option 的方式,推送给虚拟机:
值得注意的是,Neutron 的 DHCP agent 可以指定读取的 dnsmasq 配置文件(默认是 /etc/neutron/dnsmasq-neutron.conf ),作为 dnsmasq 进程的一个配置项。如果该配置文件中也配置了 MTU 相关配置,那么相当于,一个 dnsmasq 进程中有两个关于 MTU 的配置项,通过在该 network 中创建虚拟机,观察虚拟机获取的 MTU可知,当一个dnsmasq 进程中有两个关于 MTU 的配置项时,以配置文件(/etc/neutron/dnsmasq-neutron.conf)中配置的 MTU 为准。
然而在 OVS bridge 中,当添加一个 port 时,如果该 port 的 MTU 比 bridge MTU 大时,添加完成后, port 的 MTU 以 bridge 为准。
目前该问题已经得到了 OVS 社区的回复,OVS 社区表示这是 ovs-vswitchd 在实现时的 bug。当前 workaround 的方法(https://review.openstack.org/#/c/327651)是,先将该 port 添加到 namspace 中,在调整 port 的 MTU,最后在将该 port 添加到 OVS bridge 上。
Merged Patches
1.废弃了 mac_generation_retries 参数
该参数用于在生成 mac 地址时避免重复,在该 Patch 中废弃了该参数。默认的重试次数是10。Link: https://review.openstack.org/#/c/330273
2. 优化了创建 router 时的代码逻辑
本 patch 针对 https://bugs.launchpad.net/neutron/+bug/1543094 的fix
Link: https://review.openstack.org/#/c/303638
3. QoS 支持 policy 和 rules 的排序和分页
Link:https://review.openstack.org/#/c/328273