Oh, hi, you again? Well I am happy to see you, thanks for visiting my site 🙂 Today, I want to talk about a very interesting topic, especially if you are new to the service provider world and all its protocols.
As you might already know, there are a LOT of routing protocols in existence, but in todays networks, it comes down to the usual three suspects. I just want to talk about each of them and at the end, I want to give you a little teaser.
The heart of the internet: BGP
Let’s start this list with a big one. When I started in the networking industry, I always wondered how different service providers are interconnected and learn about the prefixes each one uses. The answer to this question is the Border Gateway Protocol, BGP for short. As BGP being a really old protocol (RFC 1163 from 1990), you might assume it being out of date but don’t get fooled. The interest for this protocol is quite high. But why?
BGP is widely used to interconnect different autonomous systems (AS for short), making it a so called exterior gateway protocol (EGP). Coincidentally, it is the only EGP currently available, so the choice, which protocol to use, is quite simple. But what exactly is an AS? Each service provider get’s an AS number. If you were an early bird, it would have been a 2-byte number. Due to the exhaustion, nowadys you would only get a 4-byte AS number, but there work in nearly the same way. This number identifies your network as well as all your prefixes you get from your LIR (that’s local internet registry). This combination of prefix and AS is not only used to verify, that a service provider is only using its assigned prefixes, but also used for routing.
BGP is a so called path vector protocol, which means that in addition to the distance, a path is also used to calculate the shortest path to a destination. And this path consists of the ASes you need to traverse in order to reach your destination.
BGP also allows you to have a fine control of how you exchange routes and giving them different preferences as well as introducing load-balancing and other fun features. There is a reason for it being the only EGP that everyone likes. In fact, it is so good, that most service provider use it internally with a little addition, the multi-protocol BGP (MP-BGP).
MP-BGP also allows you to generate different types of internet services, that use BGP at their heart. Some examples would be labeled-unicast, VPN and EVPN services.
You see, there is a lot to cover, which we eventually will, but for this post, we won’t get any further as there are some other protocols we want to look at.
Where’s EGP, there’s IGP
As you might have guessed, if there is an exterior gateway protocol, there also are (notice the plural) interior gateway protocols. Nowadays, there are two major IGPs that are used by service providers, namely OSPF (open shortest path first) and IS-IS (intermediate system to intermediate system; Yes I know, this name is somewhat critical when googling it).
But what makes those two protocols the ideal IGP? Well, they both are distance vector protocols, which means they calculate the shortest path to a destination based on cost between links. But why are there two IGPs that work in the same way? Let me quickly summarize how this happened:

You may laugh, but this is more or less what happend. As IS-IS was in its testing phase during development, some network engineers already wanted to use this protocol hence they developed their own version and called it OSPF.
At their core, both protocols use a shortest path algorithm which is based on the work of dutch mathematician Edsger W. Dijkstra. His algorithm uses a cost system to transform a meshed network into a tree, thus finding the shortest path from point A to point B.
But as you may have guessed, there are also some differences in those two protocols. The biggest one being that IS-IS is independant of the layer 3 routing protocol. It was designed for the CLNP protocol and extensions were build to support all different kinds of protocols. This makes IS-IS natively compatible with IPv4 and IPv6. OSPF was primarily built to support IPv4; if you want to use IPv6 you need to use OSPF version 3.
Both protocols also have a system to subdivide networks into different areas (OSPF) or levels (IS-IS). The idea behind was to minimize the amount of routes for a given physical network area (routers weren’t that powerful back then) and interconnecting them with bigger, more capable routers. Of course, in modern networks, we don’t have to limit ourselves based on the computing capacity of our routers, thus making the concept of areas / levels more or less obsolete (even though some providers are still using them).
One last thing, that made both OSPF and IS-IS so popular in contrast to RIP, for example, is the fact that both protocols are link-state protocols. You see, RIP used a time based model to advertise prefixes in a given interval. Thus making the time gap between a link failing an the rest of the network noticing this quite big. RIP uses a timer of 30 seconds and in the worst case, the network needed 30 seconds to converge. IS-IS and OSPF on the other hand have a mechanism, that notices a link failing and notifying the rest of the network about this situation using update packets. Leveraging this feature (and some others), you can achieve sub 30ms convergence times in modern networks, keeping the amount of dropped packets low.
In there also lays another advantage. RIP, for example, sending the complete routing table every 30 seconds creates a big overhead. IS-IS and OSPF, after the initial learning phase, only send updates so every router only get’s notified if something changes. This makes these protocols very useful in your networking environment.
And what is this MPLS?
MPLS (multi protocol label switching) is a more modern routing protocol, which uses a new type of information to make routing decisions, called labels. This also introduces more protocols to advertise labels and generate paths through networks. But we will get into this topic in a lot more detail in a future post 😉
As with BGP, we will get into a little bit more detail on OSPF an IS-IS in a bit. Other than that, that’s all for this post. I hope you enjoyed it and if you’ve got any questions or comments, please feel free to post them below. Until next time!