Skip to content

BGPFull

jfuruness edited this page Feb 24, 2024 · 1 revision

Home

Tutorial

BGPFull

BGPFull, located here, is the more complicated version of BGP that we just discussed. Most simulations require only 1 round of propagation, since the AS graph converges after only 1 round of propagation. Typically a victim announces a prefix, an attacker attacks the prefix, and metrics are used to determine how successful the attacker is.

However, some simulations require more in depth, complex attacks and require multiple rounds of propagation. Multiple rounds of propagation are required whenever the AS Graph does not converge after a single round of propagation.

NOTE: if this doesn't pertain to you, just skip to the next section!

Additionally, since the graph has not converged, some ASes may want to __ withdraw __ their previous announcements from earlier propagation rounds. To do this, withdrawals are implemented, and more data structures, such as the RIBsIn, RIBsOut, are also implemented.

Honestly, adding these data structures drastically increases the complexity of this class. If you're not familiar with a RIBsIn and RIBout, or what a withdrawal is, I won't describe it here, because those are also fairly complex topics and just require a background in BGP. Don't fret though - most of the time, your custom routing policy will never touch this code, and can simply override basic hook functions used such as _valid_ann.

It's also important to note that adding these extra data structures and accommodating the extra logic of withdrawals drastically increases the runtime and RAM usage of the simulator. If you can frame your problem in a way that only requires one round of propagation, and can use the BGP class instead, that will make your life a lot simpler.

Caveat

We have had publications using these policies, but it turns out that every single time it was actually unnecessary. In almost every case we can think of, BGP (rather than BGPFull) will do. Even for Route Leaks, which don't even follow valley free routing, there's some tricks that can be used to make the attack require only BGP. If you think you need classes derived from BGPFull, if you'd like some help you can reach out to jfuruness@gmail.com and we can see if we can rephrase your attack/scenario/simulation to work with classes derived only from BGP.

Next: Announcement

Clone this wiki locally