[RFE] Enhancement to Neutron BGPaaS to directly support Neutron Routers & bgp-peering from such routers over internal & external Neutron Networks

Bug #1921461 reported by Manu
This bug affects 1 person
Affects Status Importance Assigned to Milestone

Bug Description

#Problem Description

There are good foundation APIs in Neutron BGPaaS that brought in BGP service functionality into Neutron through Neutron Dynamic Routing.

However there are telco use cases which requires “multiple service-addresses hosted by a VNF” to be advertised via BGP Control Plane towards peers which are ISP-PE-Routers. These “service-addresses” are typically Non-Neutron-IP-Networks and/or Non-Neutron-IP-Prefixes that are used internally inside the VNF applications. This advertisement enables the ISP-PE-Routers to learn such “service-addresses hosted by VNF”, thus enabling L3 connectivity towards such service-endpoints-hosted-by-VNF from ISP networks.

The above requires BGPaaS APIs to support BGP-Peering directly towards the VNFs from a Neutron Router hosting the internal-networks of the VNF. In addition, we also require the BGPaaS API to support BGP-Peering towards the ISP-PE-Routers directly over the Neutron External Networks.

Both of the above are not feasible today within existing BGPaaS, because
a. Existing BGPaaaS supports only peering over special networks which are not managed via Neutron
b. Similarly there is a non-availability of APIs to make the BGPSpeaker directly peer with VNFs over Neutron Internal Networks.

There is a another use-case where we wanted to automate multiple-BGP-Peering towards VNFs from a given BGPSpeaker, as and when a VNF Cluster is scaled-out/scaled-in. For this we will be bringing in the bgp-peer-group concepts and API for use with Neutron BGPaaS.

So through Specification we wanted to address the above 3 use-cases by :
a. Enhancing BGPaaS API support within “bgp” extension under neutron-dynamic-routing
b. Enhance BGPaaS Reference implementations to support the enhanced APIs.

#Proposed Change

Proposal is to enhance existing BGPaaS, allow neutron router to be associated to a BGP Speaker and allow BGP Speaker to peer with both the internal-Networks and External-Networks present on that Neutron Router. This will be implemented using enhancements to the neutron-service and neutron-dynamic-routing. A BGP speaker will be associated to a router. BGP speaker will be running inside the L3 router namespace which enables access to all the neutron-router-interfaces i.e.. both internal/external interfaces. BGP functionality provided by OS-Ken will be reused to excite BGP speaker functionality to run only within the neutron router namespace.

“Enhanced-L3-Plugin” will be running in Neutron-Server on controller-host and “Enhanced-L3-agent” on compute-host. Once router is associated to bgpspeaker, the ‘Enhanced BGP Service Plugin’ will schedule the request to create a BGPSpeaker towards ‘Enhanced-L3-Plugin’. ‘Enhanced-L3-Plugin’ in turn will realize the scheduling of the BGP Speaker towards the ‘Enhanced-L3-Agent’ that is already hosting the router. ‘Enhanced-L3-Agent’ realizes bgpspeaker inside the router-namespace and now bgpspeaker can peer with anybody reachable for router, through the router-interface-ip-address of router.​

The proposal is to provide the below functionalities
Use-case 1.a)
              1. Provide the ability to associate a single neutron router to a BGP Speaker (along with optional address-scope)
              2. Provide the ability to disassociate that single neutron router from a BGP Speaker
              3. Provide the ability to implicitly make a bgp-speaker highly-available whenever the bgp-speaker is associated with a HA capable neutron-router.
              4. Provide the ability for the BGP Speaker to expose the entire list of routes it is currently managing (be it multiple bgp-peers)

Use-case 1.b)
              1.Provide the ability to create a BGP Peer Group with BFD & other parameters
              2.Provide the ability to delete a BGP Peer Group (when its not in use by any BGPPeer)
              3.Provide the ability to create a bgp-peer using an existing bgp-peeer-group
              4.Provide the ability to create BGP peers with update-source and next-hop-self parameters

* Add the following new APIs to Neutron: (more details in the spec)
PUT /v2.0/bgp-speakers/<bgp-speaker-id>/add_router
PUT /v2.0/bgp-speakers/<bgp-speaker-id>/remove_router
GET /v2.0/bgp-speakers/<bgp-speaker-id>/get_routes
POST /v2.0/bgp-peer-groups/
DELETE /v2.0/bgp-peer-groups/<bgp-peer-group-id>

Tags: rfe-approved
Manu (manubk2003)
description: updated
tags: added: rfe
Revision history for this message
Balazs Gibizer (balazs-gibizer) wrote :
Manu B (manubk2020)
description: updated
Revision history for this message
Slawek Kaplonski (slaweq) wrote :

I would like to discuss it on next Neutron drivers meeting which will be on Friday 09.04.2019: http://eavesdrop.openstack.org/#Neutron_drivers_Meeting - so it would be great if You could join there if there would be any additional questions. But RFE should be discussed even if You will not be able to attend this meeting.

tags: added: rfe-triaged
removed: rfe
Revision history for this message
Manu B (manubk2020) wrote :

Sure, will attend the meeting

Revision history for this message
Slawek Kaplonski (slaweq) wrote :

On the last drivers meeting we discussed that proposal http://eavesdrop.openstack.org/meetings/neutron_drivers/2021/neutron_drivers.2021-04-09-14.01.log.html#l-94 and we decided to approve it. Please now work on the details in spec and then implementation.

tags: added: rfe-approved
removed: rfe-triaged
Revision history for this message
Manu B (manubk2020) wrote :

A prototype of this RFE is available at https://www.youtube.com/watch?v=vXulyfxG0aI

Revision history for this message
Manu B (manubk2020) wrote :

Attached the slide which covers high level use cases, RFEs that will enhance neutron to support neutron gateway router

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to neutron-specs (master)

Reviewed: https://review.opendev.org/c/openstack/neutron-specs/+/783791
Committed: https://opendev.org/openstack/neutron-specs/commit/3bba00dea2e26b9afd43393a724136bb30d64b23
Submitter: "Zuul (22348)"
Branch: master

commit 3bba00dea2e26b9afd43393a724136bb30d64b23
Author: Manu B <email address hidden>
Date: Sun Mar 28 13:56:20 2021 +0530

    BGPaaS enhancements

    Related-Bug: #1921461

    Signed-off-by: Manu B <email address hidden>

    Change-Id: I0d69aff98ee00d01fe2e4142b87ae39beae01adf

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to neutron-lib (master)

Reviewed: https://review.opendev.org/c/openstack/neutron-lib/+/792774
Committed: https://opendev.org/openstack/neutron-lib/commit/6df74e063dc239e820df72f39b20a2165d6b1e88
Submitter: "Zuul (22348)"
Branch: master

commit 6df74e063dc239e820df72f39b20a2165d6b1e88
Author: Manu B <email address hidden>
Date: Mon May 24 05:07:20 2021 +0000

    Introduce new bgp_associations API definition

    Related-Bug: #1921461
    Related-Change: https://review.opendev.org/783791 (spec)

    Signed-off-by: Manu B <email address hidden>
    Change-Id: If80cf13417dca40de127fbac52ebaa8169be9422

Revision history for this message
LIU Yulong (dragon889) wrote :

What's the status of this now? We have some projects want to learn internal routes via bgp between NFV VMs and
 Neutron router.

Revision history for this message
Lajos Katona (lajos-katona) wrote :
Revision history for this message
LIU Yulong (dragon889) wrote :

Thanks Lajos.

This should be the codes for this bug:

I wonder how this statement [1] is implemented? The associated BGP speaker of a router will write routes to router namespace? I did not find any code related to this.
[1] https://review.opendev.org/c/openstack/neutron-specs/+/783791/32/specs/xena/bgpaas-enhancements.rst#114

Revision history for this message
Manu B (manubk2020) wrote :

Writing routes to router namespace (and other route handling operations) are handled in the below review.
The topic was not set for this, I have just added it.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Reviewed: https://review.opendev.org/c/openstack/neutron-lib/+/813557
Committed: https://opendev.org/openstack/neutron-lib/commit/d5195d8c965f8b7536a4ea32ef7c64a30b6c4e28
Submitter: "Zuul (22348)"
Branch: master

commit d5195d8c965f8b7536a4ea32ef7c64a30b6c4e28
Author: Manu B <email address hidden>
Date: Tue Oct 12 05:09:01 2021 +0000

    Addition of status and name field to bgp_associations API

    Related-Bug: #1921461

    Signed-off-by: Manu B <email address hidden>
    Change-Id: I3478950acb99f686a5ae3758729862b48cc9bd7f

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Change abandoned on neutron-dynamic-routing (master)

Change abandoned by "Dr. Jens Harbott <email address hidden>" on branch: master
Review: https://review.opendev.org/c/openstack/neutron-dynamic-routing/+/792338
Reason: It seems that work on this topic has stalled, feel free to reopen if needed.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers