作者:蒋趁心,EasyStack工程师

Neutron里面很多对象都有admin_state_up和status两个属性,并且看上去很难搞清楚二者的区别,本文将详细介绍这两个属性在Network, Port和Router上的含义。

Network

admin_state_up

表示Network的管理状态,如果设置为False,则网络不再转发IP包。在创建网络的时候这个属性的值默认为True. 管理员可以通过API来修改admin_state_up(True|False).

在代码中是如何实现当admin_state_up为False时,不再转发IP包的呢?通过分析代码可以发现,当Network的 admin_state_up值变为False时,针对该Network的DHCP服务会被停止,用于监听DHCP请求的tap设备会被销毁,新建的虚机 将无法获得IP。那么对于已经获得IP地址的虚机呢?Neutron的DHCP Driver使用的是dnsmasq,并且为dnsmasq设置了lease time,在Grizzly里这个值为2分钟,这意味着最多两分钟之后,虚机将无法续租IP,继而无法转发IP包。对于没用使用DHCP的情况 (static),没看到代码中所做的处理。

status

表示Network的运行状态,亦即Network的实际状态。在创建Network时status默认为ACTIVE。Neutron中对Network的status属性定义了ACTIVE,BUILD,DOWN和ERROR四个状态,对于ML2 + OVS agent,目前只有ACTIVE被用到。status属性无法通过API进行修改。

Port

admin_state_up

表示Port的管理状态,如果设置为False,则该端口将不再转发网络包。代码中具体做法是,当Port的admin_state_up变为False时,OVS agent会将对应的OVS port的local vlan id会被设置为4095,并且在br-int上增加flow规则drop所有这个port收到网络包。

status

表示Port当前的运行状态。在创建Port时status默认为DOWN。此属性不能通过API修改。OVS agent在port创建后会将status设置成与admin_state_up一直的状态(ACTIVE or DOWN)。在此之前OVS agent根据admin_state_up设置其临时状态为BUILD或者DOWN。status共具有ACTIVE,DOWN,BUILD,ERROR四种状态,ML2 & OVS agent没有用到ERROR。

Router

admin_state_up

表示Router的管理状态,缺省值为True,管理员可以通过API修改。当属性值变为False时,Router将不再转发IP包,L3 Agent会清空router对应的nat rules, filter rules, 销毁对应的namespace等。

status

表示Router当前的运行状态。缺省值为ACTIVIE,并且不允许通过API进行修改。目前Neutron只用到了ACTIVE状态。

 

参考资料

[1] https://answers.launchpad.net/neutron/+question/230508

[2] http://osdir.com/ml/openstack-dev/2014-02/msg01807.html

[3] https://bugs.launchpad.net/neutron/+bug/1237807

  1. A货货源⬅奢侈品⬅1:1包包 加微Xin:LoveMeJck劳力士PTiffanyPRolexP万宝龙P蔻驰P卡地亚P路易威登P

  2. 源头货ぬ精品原单ぬ原单奢侈品 VX:LoveMeJck古驰ለBvlgariለLVለCartierለHermesለ

  3. 高仿包包ᮇ复刻手表ᮇ高仿原单 V:LoveMeJck阿玛尼べ阿玛尼べ江诗丹顿べ劳力士べMontblancべ

  4. 复刻手表@奢侈品@外贸高仿 加微Xin:LoveMeJckchanelᬇIWCᬇ博柏利ᬇDiorᬇMontblancᬇ普拉达ᬇ博柏利ᬇ范思哲Versaceᬇ阿玛尼ᬇ

  5. 我看另外一本关于neutron的英文书写的好像不是网络不通,而是说设备不可管理,原文如下:the admin-state-up attribute is a Boolean, which when set to false, does not allow Neutron to update interface within the router, This includes not adding floating IP’s or additional internal interface to the router, Setting the value to true will allow queued changes to be applied.

  6. 如果ml2+vlan的neutron配置,创建虚拟网络后,dhcp服务的vnic上tag id被设置为4095应该是哪方面的原因呢?plugin.ini配置文件与官方文档核对过好多遍了,是一致的。

  7. Pingback: OpenStack中国社区周报 (4/7-4/13) « OpenStack中国社区

  8. 文章不错,印象中一个月前邮件列表里还有讨论这个的