> On 8 Dec 2025, at 17:41, Mike Neo <[email protected]> wrote:
> 
> Hi,
> 
> I have one operator with a full BGP table (one BGP session) and one IX (two 
> BGP sessions, one BGP session each, to two different ISP routers).
> 
> I need to configure two BGP routers based on Ubuntu + Bird 2/3 with iBGP.
> 
> Could someone share this configuration and point out what to watch out for 
> when traffic is ~1-2 Gbps?

The exact configuration comes mostly down to taste. You can get inspiration 
from https://github.com/coloclue/kees which has a good set of examples.
And yes, automate from day 1, you and others will thank yourself in the years 
ahead ;)

If you have specific questions do not hesitate to ask, many folks started 
either from scratch or build up their configs over the years.


Most defaults will mostly just work given you have enough CPU, some memory and 
decent NIC(s).

You could for fun look at Pim's VPP setup 
(https://ipng.ch/s/articles/2023/12/17/debian-on-ipngs-vpp-routers/ and other 
articles he wrote about it), though that is not needed unless you want to 
squeeze latency to a minimum.

But without VPP one could also dedicate CPUs to interupts (avoid irqbalance for 
that matter) and to NIC queues.

At 1-2 Gbps, it will mostly help you with latency/jitter though, not much with 
speed.


Definitely look at https://bgpfilterguide.nlnog.net 
<https://bgpfilterguide.nlnog.net/> and implement the policies that make sense 
for you.

Signup for peeringdb.com <http://peeringdb.com/> so that your contacts can be 
found easily and others can peer better with you.

Use bgpq4 for generating BGP prefix lists.
Use RPKI ROV and per bgpfilterguide filter these + ensure you got ROA for your 
own prefixes.
Use OTC attribute to avoid accidental route leaks from/to peers/transits.

For BCP38 if you can setup a Spoofer node: 
https://www.caida.org/projects/spoofer/
and then sign up for https://www.manrs.org/

Note that with nftables, if you have full table you can do something like:
```
# Drop when the source route is incorrect
fib saddr . iif oif eq 0 log prefix "RPF: " counter drop
```
But be aware the moment you have multiple interfaces where the packets can come 
from/to and only 1 route is installed, that would cause issues with the other 
interface.


Sign up for https://bgp.tools/ so that you get monitoring from the outside and 
one can publish BGP Communities there and in NLNOG Ring: 
https://github.com/NLNOG/lg.ring.nlnog.net
and when you send BGP updates there it will nicely show up in their interace: 
https://lg.ring.nlnog.net <https://lg.ring.nlnog.net/>

RIPE Atlas and RIS clients in your network will also allow one to easily 
spot-check connectivity, or even set up permanent alerts (by having nodes in 
your network you earn credits, thus you can automate queries with those earned 
credits)



Do not forget monitoring, bgp.tools helps there, but definitely check that all 
your peers are in a happy state with a monitoring tool. Exposing a looking 
glass web interface can be useful. I wrote a custom one https://lg.as57777.net 
<https://lg.as57777.net/> but pre-packaged ones are available and allow easy 
debugging (I need to publish the code for mine properly one day though).
A quick 'connectivity check from multiple points' like I have for 
https://debug.massars.net <https://debug.massars.net/> can also be useful to 
spot check if things are working, yes, just some javascript polling a few 
distributed http servers, but that allows one to quickly see what works and 
what does not from your client vantage point. Smokeping and alike can be great 
too for figuring out which links might be showing issues.


See https://massars.net/details/ for a long list of things I have done with 
links to the projects involved. Also https://massars.net/design/ has some more 
details on how/what I did.

Regards,
 Jeroen


Reply via email to