Floating IP distributed¶
Launchpad Bug: https://bugs.launchpad.net/neutron/+bug/1978039
Neutron adds distributed attributes to each Floating IP. Users can set this attribute according to their actual environment and use requirements.
Problem Description¶
Neutron supports setting the floating IP to distributed. External traffic can go directly to the compute node without passing through the network node, and increases the network performance. This is very useful for the demand for high-performance networks.
However, we can decide whether floating ips are distributed or centralized by setting configuration option(ovn backend) or setting router’s “distributed” attribute(ovs dvr mode). This is global. After configuration, all floating ips are centralized or distributed.
The actual use may be complicated:
Not all vms with floating ip may require high-performance networks, and may only be exposed to the outside world to provide services.
Due to equipment conditions, some compute nodes are not equipped with external network card. If enable distributed, the vm of this compute node cannot allocate floating ip.
Proposed Change¶
Add new API extension to extend floatingip
resource in Neutron with
distributed
attribute.
If not set this attribute, the distributed
attribute of the router
will be used for the floating ip [1].
Server side changes¶
A new API extension of Neutron will be added with new attribute for the
floatingip
resource. This new attribute will be called distributed
:
RESOURCE_ATTRIBUTE_MAP = {
l3.FLOATINGIPS: {
"distributed": {
'allow_post': True,
'allow_put': True,
'convert_to': converters.convert_to_boolean_if_not_none,
'default': constants.ATTR_NOT_SPECIFIED,
'is_visible': True,
'is_filter': True
}
}
}
DB Impact¶
Extend the floatingips
table with boolean column distributed
.
REST API Impact¶
New API extension: floatingip-distributed
introducing new floatingip
attribute: distributed
.
Client Impact¶
Relevant changes in OSC and openstacksdk to add support for new floatingip’s attribute. To enable it for floatingip, it should be something like:
openstack floating ip create --distributed
and to disable it:
openstack floating ip create --centralized
and update it:
openstack floating ip update [--distributed | --centralized ]
Testing¶
Unit tests.
Functional test.
Tempest tests in neutron-tempest-plugin.
Assignee(s)¶
ZhouHeng <zhouhenglc@inspur.com>