Openstack Dynamic routing with BGP

There are two options for OVS;

  • BGP Dynamic Routing: https://docs.openstack.org/neutron/rocky/admin/config-bgp-dynamic-routing.html : Centralized approach for routing. Using DVR for tenant routes is not possible. Mainly for floaintg ip.
  • BGP floating IPs over l2 segmented network: https://docs.openstack.org/neutron/latest/admin/config-bgp-floating-ip-over-l2-segmented-network.html: Seems a better approach as it levereges Layer 2 domain into single a rack or to a segment. But still there problems;
    • You need a seperate network establising BGP session with the switch. The BGP establishment is not very clear in the documantation. DRagent runs on the kernel looks for the peer ip address in its routin table. Its up to the user how it will connect to the switch. In my lab, I simple add a logical SVI interface to the br-ex for the provider vlan. Also assign an ip addresses to the SVI interface. So every host needs an unique ip address on that segment for establing BGP session.
    • When I red the document, I though that every DRagent in different segments will announce the routes assosiated with that segment but which is not so. Every dragent will annnounce all prefefixes related to the setup. The announcement will be the same for each of them. For  a big setup this will cause scaling issues.
    • Its also possible to advertise tenant network, just add the tenant network pool the address scope as its shown in the first option and enable advertisement of tenant networks. But again this will cause scaling issues from the dragent perspective.
    • I thouht its possible to use same provider prefix for each of the segment. As the nexthops will be used between the TOR and the host. If the TOR will override the nexthop towards the spine there will be no problem. But as the dragent is anouncing the all prefixes for every segment this is not possible. Every segment need its own provider prefixes to be used as nexthop.

During the setup I faced a problem while creating segments. Openstack gives error like unknow project. sudo neutron-db-manage upgrade head solved my problem.