Border gateway protocol (BGP)
The BGPaaS allows establishment of BGP sessions from virtual machines to known addresses, gateways and DNS servers in the subnet where is is deployed.
In Boron, BGPaaS is implemented with either of the two supported speakers (route server), BIRD or ExaBGP.
BGPaaS is needed for load balancing with ECMP. Activation of BGPaaS needs configuration by https://pannet.atlassian.net/l/c/mAnNiir5
BGP is a path-vector routing protocol and makes routing decisions based on paths, network policies and pre-defined rules. It maintains routes that are in some sense optimal, based on availability, distance, network policies and other factors, and which are updated dynamically. This requires the protocol to perform regular link availability checks. BGP is using TCP as transport protocol.
The typical use cases for BGPaaS are
Controlling network traffic - load balancing
Managing the location of endpoints (for moving endpoints or high availability deployments)
Managing endpoints that are hidden from the network by an additional overlay (for example IPSec high-availability configurations).
The primary function of the BGP protocol is to facilitate routing between networks by exchanging network reachability information - the BGP routes - between BGP speakers. Such routes are announced between BGP peers in the BGP update messages.
BGP does not make sense when your VPC is connected only to one peer, because there is only one path to other networks. However, when connected to multiple networks at the same time, from a number of possible paths BGP finds the shorter, faster or more reliable ones.
A BGP speaker is a route server for the BGP routing protocol. It is used to set up sessions between BGP peers by first performing a peering handshake, when optional session capability negotiations take place.
When a session is opened, the speaker announces (advertises) its routes to its BGP peer, which are stored in the speaker.
The BGP routes consists of a set of destination IP address block in CIDR format and attributes of the path to these destinations. This information is contained in the Network Layer Reachability Information (NLRI) and in the path attribute fields of the BGP update message.
Bidirectional Forwarding Detection (BFD)
The BFD protocol is a link failure detection mechanism that detects failures in a network by sending packets at pre-defined regular intervals. A neighbor failure is detected when the speaker no longer receives a reply to the sent packages. The failure detection timers for BFD can be set dynamically.
BGP uses periodic "hello" messages to monitor the link state to its neighbors, but with relatively long detection times (in the magnitude of seconds). BFD complements this with a faster failure detection, with detection time in the magnitude of milliseconds.
The ExaBGP supports a health check script which controls the announcement of routes based on the status of network health checks.