OpenKeel's Go implementation of OpenStack ovn-bgp-agent (stable/2026.2, f770768b41dc), written from the reverse-spec reverse-spec-ovn-bgp-agent/.
The agent runs on every node whose FRR peers with the BGP fabric. It watches the OVN Northbound database (read-only) and, for every IP reachable through this node, it does two things:
- it wires the kernel and OVS so that traffic reaches OVN: ip rule and route in a per-bridge routing table, permanent neighbour, NDP proxy, and the MAC-tweak flow (cookie 999);
- it announces the IP by adding it to the dummy
bgp-nic in VRF bgp-vrf, which the local FRR redistributes.
The IPs it covers are provider-network VM IPs, floating IPs (distributed and centralized, switched at run time by NB_Global external_ids:neutron:fip-distributed), router gateways, tenant subnets (host or subnet advertisement, SNAT filter, address scopes, GUA-only), OVN load-balancer VIPs and VIP-FIPs, and port-forwarding FIPs.
| |
|---|
| Module | github.com/openkeel/openkeel-ovn-bgp-agent |
| Executable | ovn-bgp-agent (cmd/ovn-bgp-agent) |
| Driver / exposing method | nb_ovn_bgp_driver / underlay (the others are refused at start: docs/CONFORMANCE.md) |
| API | none; :9750 serves /healthz, /readyz, /metrics |
| State | none (derived from OVN and the node); /etc/iproute2/rt_tables keeps the table numbers |
| Delivery | DaemonSet, host network, NET_ADMIN SYS_ADMIN DAC_OVERRIDE (docs/SECURITY.md) |