What is SDN? In short, software-defined networking is a methodology to manage a network so that you can do as much as possible automatically, with software, and with limited or no human intervention. There are many different flavors of SDN, and people will have different opinions of what SDN is in practice. Today, I want to give you a brief overview so that you can understand all the different shades of SDN, and truly answer the “what is SDN?” question.
What is SDN?
Before we can answer “What is SDN?”, we should probably answer “What is a network?”. If we know what a network is, then it will be easier to explain how we can make it software defined. Even here, we can have multiple definitions and different flavors. Here’s one I like.
A network is a physical and logical infrastructure that allows devices to communicate with each other and defines how that communication happens.
To make a practical explanation, let’s say you are scrolling Instagram for yet another video of a cat doing dumb things. The network between you and Instagram is made up of your Wi-Fi signal, all the cables and intermediary devices in the provider network that connect your home router to Instagram’s servers, and the network equipment in the Instagram’s data center (where servers are). That is for the physical part.
On the logical part, it has all the rules to make this communication happen – and block unwanted communications. It will include your password and authentication method for Wi-Fi, the rules in the provider that prioritize your traffic (or don’t), and many other obscure rules in the Instagram DC.
Software-defined network means using software to define the logical part of the network. And now, I have some bad news for all the sales folks out there. You can’t really software-define the physical network. If the provider has a cable going from New York to Continental Europe and you want to connect it to Miami now, you can’t do that with a click of a button. Someone needs to go there and lay another cable between Europe and Miami.
Long story short, software-defined network works well when your physical network does not need to change and can stay as it is. More on this later, but now let’s give a formal definition.
Software-defined network is an entire network where you can interact with the network as a whole and configure it end-to-end with software, and not configure individual devices.
This is the key difference between SDN and traditional network, and it really answers the “What is SDN?” question.
How SDN Differs from Traditional Networks?
Hardware and software go hand in hand. With no software, hardware is useless, and with no hardware software simply can’t run. So, we have been using software to define networks for decades, even with ARPA net in the 70’s (the precursor of the Internet).
But there is a key difference. We know that a network is made up of many devices: the router in your house, all the routers in the provider network, and so on. In the past, people (network engineers) had to configure each device manually. They connected to each device, and the device ran a software that allows the engineer to configure it.
Even today, we still need to configure network devices, because those are the devices that make the connection happen. The “what” is not changing, it is the “how” that is. We don’t like to connect with console cable to switches, or even remotely connect with SSH and give them terminal commands manually.
If we want a network where “device A talks to device B”, we want to state simply that, the desired state. We don’t want to connect to device A and explain how to talk with device B, and then connect to device B and explain how to talk back with A. We just want to declare the desired final state of the whole network. In the end, devices will still be configured individually, but this happens under the hood.
To make this happen, SDN introduces the idea of a controller. A controller is a central device to which you can tell the desired state for your network. It will configure the network devices on your behalf. This can happen through REST APIs, gRPC, SSH or other machine-to-machine protocols.
SDN Controllers and Dynamic Routing
If you ask me “what is SDN?” I could answer that it is a shift of paradigm in where the network intelligence resides. The less SDN you have, the more your network devices need to be intelligent as they need to support special configurations to handle special cases. Since you will have many network devices – as those forward traffic and are the ones you really can’t get rid of – this is expensive. Intelligence means software, and it means CPU power, neither of which is free.
On the other side of the spectrum, you have network devices with no intelligence at all. Only the bare minimum needed to forward traffic. If a problem in the network happens, or if you need the network to behave in a different way, the controller changes the configuration of the network device to reflect the new desired state.
This may even mean not using dynamic routing protocols at all when you have fully-fledged SDN capabilities. Routing protocols are tools that network devices use to exchange information and be aware of the state of the network, for example to understand if another network device goes offline and re-route traffic to bypass it. If the controller has full visibility in the network, they don’t need this intelligence anymore. They can just follow static rules, and the controller will update those rules as needed.
Once caveat is transitioning from traditional to SDN infrastructure. If you don’t plan for a transition phase in which “dumb” devices can coexist with traditional intelligent devices you will need to do a “big bang” migration, flipping your entire network to SDN at once. Considering most software is customized and cannot be fully tested in a real-world scenario as you can’t afford to buy a test physical network the same size of your production once, are you really willing to take the risk?
Where SDN Makes the Difference
SDN makes the difference in the data center. A data center is basically a warehouse that hosts huge computational power in the form of servers. Those servers are stacked together into racks, which are chained in rows and connected with a network. There, the physical network is normally a spine-and-leaf architecture that allows any-to-any communication between servers with a predictable latency and number of intermediary devices you need to traverse.
In other words, you don’t need to change the physical network to add or remove cables. It is fine as it is and can support any type of configuration at the logical layer. This is where SDN thrives. Mostly, it works with tunneling between servers – a bunch of servers come together and create a logical network (or more!) between them. If those servers run virtual machines, as they should in the modern datacenter, you can easily have virtual machines across multiple physical servers sharing the same network. This enables load balancing and application scaling.
One popular product to do so is VXLAN, where networks are virtualized by sending network packets inside of UDP packets that then travel on the physical “real” network. That is a good thing to learn next, now that you can answer “what is SDN?”.