All modern data networks rely on one simple process: packet routing. Let’s deconstruct this process.
Step 1) Read the packet, look at the ‘to’ address
Step 2) Look in the ‘routing table’ to find how to get the packet to its destination
Step 3) Move the packet onto the path that goes to its destination
This one process is applied in a multitude of ways to basically create all of the other network functions.
Packet filtering steps:
Read the packet, look at the 'to' address
Look in the 'routing table' to find out IF the packet should be sent
Move good packets onto the path that goes to its destination and drop the bad packets
Network address translation steps:
Read the packet, look at the ‘to’ address
Look in the ‘routing table’ to find the new ‘to’ address
Add the new ‘to’ address, move packets onto the path that goes to its destination
Packet routing is a rather simple process. So, why does it take a village to route a packet?
Modern routers contain more than 36 MILLION lines of software code. It takes hundreds, if not thousands, of people to maintain this code. National Geographic tells us that the typical village contains between 500 – 2,500 inhabitants. So quite literally, there is a village of information technology (IT) professionals maintaining the code that executes a simple three-step process.
So, you might be saying to yourself, “Self, those IT folks must not be all that sharp”. But the truth is that those IT professionals are some of the most talented software developers in the world. So, why does it take a village to route a packet?
The Problem is "State"
Because of the thing hidden in ‘Step 2’: the routing table. The routing table is a form of ‘state’. State, in this instance, is a stored condition or status.
The trouble with state in a networking context is that it becomes very complex very quickly when we layer on all the different processes that we need our modern networks to execute. State in the networking world isn’t a simple from:to lookup table. It’s a complicated, massive amount of information and in most networking devices, there’s only one copy of the state. What happens if that copy gets corrupted or that device fails? The network fails and it won’t start working again until we rebuild the state. Packet routing is simple. The problem is the STATE.
What if we could make dealing with state simple? Well, that’s exactly what we did! We pulled state into a high speed, ultra-reliable database distributed across multiple servers. Now, these network functions can run faster and can be configured and scaled easily so networks can be built and run more efficiently. IT shouldn’t take a village to route a packet. And thanks to Stateless now it doesn’t.