[neutron] Next step for BGP routed networks over segmented provider infrastructure segments

Thomas Goirand zigo at debian.org
Wed Jan 6 20:32:43 UTC 2021


Hi Ryan, and all of the Neutron team,

Today, I'm happy to let you know that I've been able to finish the patch
and that it's merged:

https://review.opendev.org/c/openstack/neutron/+/669395

I also managed to add some docs to Neutron about it:

https://docs.openstack.org/neutron/latest/admin/config-bgp-floating-ip-over-l2-segmented-network.html

We've used it in a pre-production environment, and it just works as
expected, it's kind of great.

However, there's some feature gaps that would need to be addressed. Namely:
- external-gateway of routers aren't advertized
- we can't do direct attach of public IPs to VMs
- I failed adding IPv6 dual stack to this setup

Let me go into more details for each of these 3 points.

1/ No BGP advertizing for the router default gateways

When doing:

openstack router set --external-gateway <provider-net> <router>

we then get this type of port:

# openstack port show <UUID> -c binding_vif_details -c binding_vif_type
+---------------------+-------------------------------------------------------------------------------------------------------------+
| Field               | Value
                                                           |
+---------------------+-------------------------------------------------------------------------------------------------------------+
| binding_vif_details | bridge_name='br-int', connectivity='l2',
datapath_type='system', ovs_hybrid_plug='True', port_filter='True' |
| binding_vif_type    | ovs
                                                           |
+---------------------+-------------------------------------------------------------------------------------------------------------+

which doesn't match the type of port we have for floating IPs:

# openstack port show <UUID> -c binding_vif_details -c binding_vif_type
+---------------------+---------+
| Field               | Value   |
+---------------------+---------+
| binding_vif_details |         |
| binding_vif_type    | unbound |
+---------------------+---------+

and then, the next HOP for the router gateway isn't advertized over BGP.

Do you know how we could get neutron-dynamic-routing to do that
advertizing, with the next HOP on the network node(s)? Where should that
code be patch? Inside Neutron, or in neutron-dynamic-routing? Is this
really related to the port type as I've showed above?

2/ No direct attach to VM ports

We can't attach a port with an IP network:routed directly to a VM. I
tried to add the subnet type "compute:nova" to the floating IP subnet,
but that didn't do it: Neutron refuses to attach the port to a VM.

Do you know why? How and what and where should we patch Neutron to fix this?

3/ IPv6 dual stack

I tried to setup a dual-stack network, and failed. How should this be
done? Should we add v6 subnets to segments and one subnet with the type
--service-type 'network:router_gateway' as well? This is what I tried
but it didn't work for me. Should tenants create their own v6 subnet out
of the v6 subnet pool I provisioned as admin?

Cheers,

Thomas Goirand (zigo)

P.S: Please keep my Infomaniak colleagues as Cc.




More information about the openstack-discuss mailing list