Hi Christian,
I suggest to open a launchpad bug for this, perhaps even mark it as an RFE (Request for Enhancement, kind of lightweight blueprint for Neutron).
The Neutron drivers team discuss these topics on Fridays 1400 UTC if there's open agenda (open RFEs :-))
If I understand well the technical bottleneck here is os-ken, am I right?

Best wishes
Lajos Katona (lajoskatona)

Christian Rohmann <christian.rohmann@inovex.de> ezt írta (időpont: 2024. ápr. 25., Cs, 13:22):
Hello OpenStack-Discuss,

when setting up Neutron Dynamic Routing [1] to advertise IPV4 floating
IPs and also IPv6 tenant networks I ran into some questions / issues.
I was just about to ask about them here on the ML, when I found the
older thread [2] discussing the advertising of IPv6 routes (e.g. from
tenant networks).
There Sean mentioned [4] that even with MP-BGP support [3] it's required
to have two BGP speakers.
While [3] means IPv4 or IPv6 can be used to establish the BGP session
itself to then advertise routes for either address family,
it's not possible to advertise IPv4 AND IPv6 routes via the same session.


To cut to the chase of this threat ....

It's not uncommon to simply use individual (non Multi-Protocol) BGP
sessions to exchange routes for IPv4 and IPv6 individually and to me
this poses no issue to me.
The problem with Neutron is though, that the os_ken dragent driver only
supports one BGP speaker [5] per agent. This leads to only one of the
BGP speakers (IPv4 or IPv6)
running per individual (control plane, networking) host.


Or am I not seeing something or am misreading the capabilities of the
components involved?
If not, I see two options for improvement here:


1) Enabling a BGP speaker to have more than one address family (dragent
driver already has MP-BGP support via [3]), so
the query fetching the routes [6] simply returns them both.

2) Somehow get more than one BGP speaker per dragent working by ...
   a) ... extending the driver to host more than one BGP speaker
   b) ... extending dragent to have more than one driver instance



Would love to hear how others have set up their dynamic routing and what
your ideas are!
Regards


Christian



[1] https://github.com/openstack/neutron-dynamic-routing
[2]
https://lists.openstack.org/archives/list/openstack-discuss@lists.openstack.org/thread/CM3MOEIAMJ7YSVL5FRDCL5DIT5PYGT2R/#CM3MOEIAMJ7YSVL5FRDCL5DIT5PYGT2R
[3] https://review.opendev.org/c/openstack/neutron-dynamic-routing/+/608302
[4]
https://lists.openstack.org/archives/list/openstack-discuss@lists.openstack.org/message/MQPEXJFQNQLI2KNJYP3O5CGF5COJR7Y7/
[5]
https://github.com/openstack/neutron-dynamic-routing/blob/ffaaf5a25d846feadc589b83281c783b10ae7684/neutron_dynamic_routing/services/bgp/agent/driver/os_ken/driver.py#L77
[6]
https://github.com/openstack/neutron-dynamic-routing/blob/ffaaf5a25d846feadc589b83281c783b10ae7684/neutron_dynamic_routing/db/bgp_db.py#L859