Router Extension for Dynamic Routing Using BGP

Registered by Artem Dmytrenko on 2013-10-17

Add dynamic routing capability to Neutron L3 router. BGP route discovery and advertisement are discussed. The document also tries to lay foundation to generic dynamic routing capability.

Blueprint information

Status:
Complete
Approver:
Carl Baldwin
Priority:
Low
Drafter:
Artem Dmytrenko
Direction:
Approved
Assignee:
Ryan Tidwell
Definition:
Approved
Series goal:
Accepted for mitaka
Implementation:
Implemented
Milestone target:
milestone icon mitaka-rc1
Started by
Armando Migliaccio on 2016-02-02
Completed by
Armando Migliaccio on 2016-03-10

Related branches

Sprints

Whiteboard

Mar-9-2016(armax): code complete, doc pending

Mar-01-2016 (carl_baldwin): Much of this code has merged. There are two more patches before things start working. Starting with: https://review.openstack.org/#/c/242192 . Both are very close. Ryan is putting the final touches on a third patch to wrap up DVR awareness.

There are issues announcing N/S DVR host routes due to issues with the DVR data plane (fip namespace especially) not being fully implemented. So, the scope is slightly reduced so that in Mitaka, BGP will announce host routes (/32s) for IPv4 floating IPs (with and without DVR) but will announce central routes to the network for tenant networks, both v4 and v6. This means routes to tenant networks behind a DVR will still go through the central part of the router.

Jan-24-2016(armax): actively worked on.

Dec-15-2015(armax): this needs love, the queue of changes does not seem current as of today.

https://review.openstack.org/#/q/topic:bp/bgp-dynamic-routing+status:open,n,z

September-8 (mestery): Moving to Mitaka.

June-15 (mestery): Welcome to Liberty!

August-28 (mestery): Per discussion with Carl, this one won't make Juno, so moving out.

>> We need to start using years here

Sept 1-2015 (armax): Talked to Ryan -> aiming Mitaka 1

14-July (mestery): Approved as low priority for Juno-3.

30-May-2014 (yamamoto): as per a discussion on l3 subteam meeting today,
i started bgp speakers comparison wiki page.
https://wiki.openstack.org/wiki/Neutron/BGPSpeakersComparison

28-Mar (nextone92): After discussion with L3 subteam, the document was re-arranged. The main change is to move dynamic routing functionality from L3 Neutron router objects to a GatewaySpec object that describes how to connect OpenStack to the outside networks.

19-Nov (markmcclain): Dynamic routing was discussed at the design summit. The consensus was that this feature should be deferred until a later release cycle. Placing into backlog for future consideration.

13-Feb (carl_baldwin): I'd like to flesh this out for the Atlanta summit. I think the use case(s) should be clarified and more concrete. My guess is that there are a handful of concrete use cases here. For example, it might be wise to consider learning routes from upstream separately from announcing routes upstream. Some may be interested in one and not the other.

Might also separate out BGP as an implementation detail. Let's talk about concrete use cases where dynamic routing in general can be useful within neutron and then BGP could be plugged in as a driver to a proper framework.

13-Mar (carl_baldwin) I attempted a higher level description of dynamic routing use cases at. https://wiki.openstack.org/wiki/Neutron/DynamicRoutingUseCases. It does not -- by any means -- supersede or invalidate this blue print. However, it is more comprehensive.

Gerrit topic: https://review.openstack.org/#q,topic:bp/bgp-dynamic-routing,n,z

BP:
===
Addressed by: https://review.openstack.org/90833
    BGP dynamic routing [Abandoned]

Addressed by: https://review.openstack.org/125401
    Dynamically advertise routes via BGP

Previous Code Changes [All are Abandoned]:
==================================
Addressed by: https://review.openstack.org/115554
    [WIP] BGP Dynamic Routing: introduce entities

Addressed by: https://review.openstack.org/115667
    [WIP] BGP Dynamic Routing: adding agent and scheduling

Addressed by: https://review.openstack.org/115938
    [WIP] BGP Dynamic Routing: adding BGP driver

Addressed by: https://review.openstack.org/111318
    BGP Dynamic Routing neutron-client changes

Addressed by: https://review.openstack.org/111311
    [WIP] Add dr-agent service. (Devstack Changes)

New Code Changes proposed for Liberty:
===============================
Addressed by: https://review.openstack.org/196452
    Add devref for BGP Speaker API extension

Addressed by: https://review.openstack.org/#/c/205756/
    BGP Dynamic Routing: neutronclient changes

Addressed by: https://review.openstack.org/201621
    BGP Dynamic Routing: introduce entities and model

Addressed by: https://review.openstack.org/207607
    BGP Dynamic Routing: introduce dragent

Addressed by: https://review.openstack.org/207625
    BGP Dynamic Routing: introduce BgpDrAgent

Addressed by: https://review.openstack.org/207635
    BGP Dynamic Routing: introduce driver

Addressed by: https://review.openstack.org/216994
    [WIP] Add BGP Speaker Service Plugin RPC Calls

Addressed by: https://review.openstack.org/241061
    Add BGP Dynamic Routing Extension

Addressed by: https://review.openstack.org/241062
    Add L3 Notifications To Enable BGP Dynamic Routing

Addressed by: https://review.openstack.org/242192
    Add Queries For BGP Route Lookups

Gerrit topic: https://review.openstack.org/#q,topic:bug/1529022,n,z

Addressed by: https://review.openstack.org/269868
    Rename new_network to new_network_id

Addressed by: https://review.openstack.org/270971
    [WIP] DB Queries For DVR Host Route Lookups

Addressed by: https://review.openstack.org/276945
    Test fixtures to facilitate testing BGP dynamic routing.

Addressed by: https://review.openstack.org/279951
    Add Auto-scheduling support

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.