yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #93914
[Bug 2064120] [NEW] [RFE] BGP Dynamic Routing for IPv4 AND IPv6 routes not possible with just one dragent (really make use of MP-BGP or support multiple BGP speakers / sessions per dragent)
Public bug reported:
When setting up Neutron BGP Dynamic Routing to advertise IPv4 floating
IPs and also IPv6 tenant networks I ran into some issues.
I then asked on the ML [1] and also found an 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 bug ....
It's very common to use distinct (read: NON multi protocol) BGP sessions
to exchange routes for IPv4 and IPv6 individually and this poses no
issue in itself.
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 involved (one with `ip_version=4` the other with
`ip_version=6`) running per individual (control plane, networking) host.
So on a single control plane host it seems not even possible to setup
and use BGP dynamic routing for IPv4 and IPv6 routes.
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(TM) does `ip_version in ('4','6')`. There also is a bug open [7] about the filtering currently being broken.
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
[1] https://lists.openstack.org/archives/list/openstack-discuss@xxxxxxxxxxxxxxxxxxx/thread/ZRDT2W53GWSB5DPCDGW6CJWFULSGKU6Z/
[2] https://lists.openstack.org/archives/list/openstack-discuss@xxxxxxxxxxxxxxxxxxx/thread/CM3MOEIAMJ7YSVL5FRDCL5DIT5PYGT2R/#CM3MOEIAMJ7YSVL5FRDCL5DIT5PYGT2R
[3] https://review.opendev.org/c/openstack/neutron-dynamic-routing/+/608302
[4] https://lists.openstack.org/archives/list/openstack-discuss@xxxxxxxxxxxxxxxxxxx/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
[7] https://bugs.launchpad.net/neutron/+bug/2023632
** Affects: neutron
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/2064120
Title:
[RFE] BGP Dynamic Routing for IPv4 AND IPv6 routes not possible with
just one dragent (really make use of MP-BGP or support multiple BGP
speakers / sessions per dragent)
Status in neutron:
New
Bug description:
When setting up Neutron BGP Dynamic Routing to advertise IPv4 floating
IPs and also IPv6 tenant networks I ran into some issues.
I then asked on the ML [1] and also found an 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 bug ....
It's very common to use distinct (read: NON multi protocol) BGP
sessions to exchange routes for IPv4 and IPv6 individually and this
poses no issue in itself.
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 involved (one with `ip_version=4` the other with
`ip_version=6`) running per individual (control plane, networking)
host. So on a single control plane host it seems not even possible to
setup and use BGP dynamic routing for IPv4 and IPv6 routes.
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(TM) does `ip_version in ('4','6')`. There also is a bug open [7] about the filtering currently being broken.
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
[1] https://lists.openstack.org/archives/list/openstack-discuss@xxxxxxxxxxxxxxxxxxx/thread/ZRDT2W53GWSB5DPCDGW6CJWFULSGKU6Z/
[2] https://lists.openstack.org/archives/list/openstack-discuss@xxxxxxxxxxxxxxxxxxx/thread/CM3MOEIAMJ7YSVL5FRDCL5DIT5PYGT2R/#CM3MOEIAMJ7YSVL5FRDCL5DIT5PYGT2R
[3] https://review.opendev.org/c/openstack/neutron-dynamic-routing/+/608302
[4] https://lists.openstack.org/archives/list/openstack-discuss@xxxxxxxxxxxxxxxxxxx/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
[7] https://bugs.launchpad.net/neutron/+bug/2023632
To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/2064120/+subscriptions