BGP rarely breaks on its own. What breaks is policy: a missing prefix filter, an unfiltered customer session, a community that nobody documented, or a route leak that turns your transit port into someone else's backbone. In the South African market — where transit is expensive and IXP peering is abundant — good policy is also a direct cost saving.
1. Filter everything, in both directions
Every eBGP session should have an explicit inbound and outbound prefix policy. Default-deny is the only safe posture. Customer sessions get filters built from IRR objects and a maximum-prefix limit. Transit sessions reject your own prefixes, bogons and anything longer than /24 (IPv4) or /48 (IPv6).
# Sanity check before you commit
show route advertising-protocol bgp 196.x.x.x | count
# Does this number match your intended prefix count?2. Deploy RPKI ROV and publish ROAs
Route Origin Validation is now table stakes at NAPAfrica and most upstreams. Publish ROAs for every prefix you originate through AFRINIC, then validate inbound routes and drop invalids. Do it in stages: log invalids first, review for a week, then enforce.
3. Use communities as your control plane API
A documented community scheme lets you change traffic behaviour without touching route-maps under pressure. At minimum, define communities for local preference tiers, no-advertise-to-peer, blackhole (RFC 7999) and per-POP tagging.
- ASN:100 / 200 / 300 — local preference tiers for transit, peering and customer routes
- ASN:666 — customer-triggered blackhole
- ASN:1xx — POP or region origin tagging for troubleshooting
4. Peer at the IX, but engineer the fallback
NAPAfrica peering removes a large share of transit cost, but a peering route is not an SLA. Keep transit capacity sized to absorb a full IX failure, and test that failover during a maintenance window rather than discovering it at 20:00 on a Sunday.
5. Separate the underlay from the overlay
Run OSPF or IS-IS for loopback and next-hop reachability only, and carry customer and internet routes in BGP. Mixing them makes convergence unpredictable and turns a single flap into a network-wide event.
If you cannot explain why a prefix is preferred in one sentence, your policy is too complicated to operate at 2am.
6. Make convergence measurable
- Enable BFD on core and transit sessions for sub-second detection
- Tune graceful restart and BGP timers deliberately, not by copy-paste
- Log and graph prefix counts per session so leaks are visible immediately
Where to start
If your network is live and underperforming, start with an audit rather than a redesign. Baseline your latency and loss, dump your routing policy, and fix what the data points at. That sequence has cut peak-hour latency by more than half on networks that were convinced they needed more bandwidth.
- #BGP
- #RPKI
- #Peering
- #ISP