Active BGP sessions

update:

adj-RIB-out functionality

For the announce and withdraw endpoints (so, not the raw endpoint), the announced/withdrawn routes are now maintained in the main store.

Pros:

  • not yet another custom data structure to maintain
  • leverage all current functionality, e.g. HTTP JSON API support with all the searching and filtering.
  • easy to create dedicated views in the web UI for anything announced by Rotonda itself
  • eventually, with the new store (routedb), we get all the goodies such as writing to persistent storage, resuming, serialisation and transfer via rotoro, etc.

Cons:

  • not all the current machinery/naming is fully suited yet. Most notably, information for the adj-RIB-out view is stored in the ingress::Register while it’s not really an ingress.

So far, the pros seem to outweigh the cons, because the latter seem quite fixable.

Querying the adj-RIB-out

We probably should think about dedicated endpoints or enhanced filters, but for now:

  1. Query the ingresses endpoint to find the (newly introduced) bgpOut type, e.g.
$ curl "http://localhost:8080/api/v1/ingresses?filter\[type\]=bgpOut" | jq .

{
  "data": [
    {
      "id": 3,
      "ingress_type": "bgpOut",
      "parent_ingress": 2,
      "remote_addr": "10.1.0.2",
      "remote_asn": 200
    }
  ]
}
  1. use the id to look into all the stored routes:
curl "http://localhost:8080/api/v1/ribs/ipv4unicast/routes?ingressId=3"

Discussion points

  • for the raw endpoints, currently nothing is stored. Part of the challenge is that non-unicast AFISAFIs can not be stored in the current store. As soon as we refactored to use the new routedb, we’ll have options to store the announcements from these raw API calls.