Software Defined Networking. What is it and why do we need it?

Over the past few decades computing has advanced very fast but networking has not kept pace with it. Traditional networks have become very closed and proprietary. The devices like routers and switches which run the Internet have become very complex because of the overly complex distributed protocols run by them.

I heard about SDN (Software Defined Networking) for the first time 2 years ago when HP was organising some conference related to networking in my campus but at that time I could not understand what exactly SDN was. But then in my 7th Semester I decided to take an elective on SDN because I had heard from all those conferences that SDN will change the world of networking (Later I found it to be true that it indeed has the potential of changing the whole networking world). This blog will give you a very brief overview of what SDN is and will hopefully help you understand it better.

First SDN lecture, my professor said, nobody wants to do research in networking because people think that networking is dead. There are plenty of reasons why people think like that, here’s one:

Testing the innovations require significant downtime. You want to replace TCP/IP with a new protocol? Where will you test it? Ok let’s say you make a Lab to test it out and you found that it was working really well – then – how will you test that it will work well also at scale? Maybe it will, maybe it won’t. Ok let’s suppose that using some magical innovative method you were indeed able to find that your protocol will perform much better than TCP/IP over large networks too then what? Will people deploy your solution? In the real Internet world, admins are too resistant to changes because small changes require a lot of configuration and downtime. Changing protocols overnight is impossible in current scenario. So what can we do? Should we stop innovating?

In 2008, a few researchers from Stanford, MIT, Princeton, Berkley and Washington University came up with a solution to this problem. They proposed Openflow : a way for researchers
to run experimental protocols in the networks they use every day[ref]McKeown, Nick, et al. “OpenFlow: enabling innovation in campus networks.” ACM SIGCOMM Computer Communication Review 38.2 (2008): 69-74.[/ref]. And this one paper changed the whole dynamics of Networking. Openflow gradually gave rise to the concept of SDN.

This is one of the problems which SDN tries to solve. Don’t worry networking is not dead and never will be dead.

What is SDN?

There is a lot of literature to help you understand SDN so I would cite them but just to understand where we are today in terms of networking today and where SDN is planning to take us let me use an analogy:

Imagine you want to go from A to B and you can’t use any map. So basically you have to follow the signs on road and go along. In your entire path signs have to be there so that you can navigate accordingly. Those signs have to be maintained by someone – maybe government but what if you could just sit in your car and say that you want to go to B and you want the path with least traffic and then you just sit back and relax and your car is driven and routed automatically – well the former analogy was the networking we have today and later analogy is what we get by SDN.

So in today’s network if a packet has to go from A to B, the entire path has to be provisioned either manually or by using Routing protocols which are not central but distributed (Which has its own merits and demerits). In SDN based network the path can be provisioned automatically by the controller (A software).  SDN has a central authority which has the full view of the whole network and hence it can make better decisions. The main advantage that we get in SDN is that the entire network is programmable so based on different requirements the network can adapt itself without manual intervention and hence it is called Software Defined Networking.

Now someone would ask me that don’t we do it today as well? Yes, we do. In fact we have a pile of scripts written in different languages for different devices to do exactly this (But they are nowhere near). The way we do it today is by finding work around in the existing network. Old networks were not made to be dynamic. Virtualisation has revolutionised the computing industry and it calls for revolution in Networking as well.

If you want to read more about what is SDN and why we need it? then here are some handpicked resources. -> Talks about problems with present day networks and how SDN can solve it. -> A good white paper on SDN by Cisco. -> SDN has a lot of issues, this article disucsses one of it – latency.

An advice to my juniors who are interested in networking, do take the SDN course. You will learn a lot about networking and its future.

Hope it helps 🙂