Subnet与IP分配的一些细节Neutron现在不支持更新Subnet的网络地址范围,就是说一旦你创建Subnet完成之后,那么这个Subnet的可用地址范围就固定了,无法扩展或者缩小。
那么,如果有更新Subnet的网络地址范围的需求,应该如何去做呢? 这里就介绍一下Subnet与IP分配的一些细节。
Neutron数据库中有三个和Subnet关系紧密的表:ipallocationpools(IP池),ipavailabilityranges(可用IP段),ipallocations(已分配IP)。
每个Subnet包含多个ip allocation pool,合法的ip allocation pool需满足三个限制条件:- ip allocation pool的地址段不可重叠
- ip allocation pool的地址段不可超出Subnet子网CIDR确定的子网范围
- Subnet的Gateway IP不包含在ip allocation pool中
Subnet的可分配IP范围是所有ip allocation pool的集合,是CIDR确定的子网范围的子集。只有在ip allocation pool范围内的IP才会被分配给虚拟机。
每个ip allocation pool可以划分为多个ip availability range。ip availablity range和ipallocations的并集等于ip allocation pooll。
Subnet中未分配的IP属于ip availability range集合。
Subnet中已经分配出去的IP属于ip allocations集合。
一图胜千言
在哪里修改代码?如果你想要实现更新Subnet网络地址范围的功能,请修改db/db_base_plugin_v2.py中update_subnet方法的代码。另外,需要修改api/v2/attributes.py文件中的代码
复制代码
- 'allocation_pools': {'allow_post': True, 'allow_put': False,
- 'default': ATTR_NOT_SPECIFIED,
- 'validate': {'type:ip_pools': None},
- 'is_visible': True},
复制代码
Neutron现在为虚拟机分配IP地址的规则是不可配置的。社区已经提交了使IP分配规则可配置的blueprint,Icehouse版本发布之后应该可以看到这个功能。上面希望对大家有所帮助。
|