OpenStack Neutron网络状态详解

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状态。

你可能感兴趣的:(OpenStack)