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::Registerwhile 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:
- Query the ingresses endpoint to find the (newly introduced)
bgpOuttype, 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
}
]
}
- use the
idto look into all the stored routes:
curl "http://localhost:8080/api/v1/ribs/ipv4unicast/routes?ingressId=3"
Discussion points
- for the
rawendpoints, 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 theserawAPI calls.