Let’s start with a brief overview of Software Defined Networking, or SDN. We’ll first start by defining SDN, and in particular we’ll talk about what is a Software Defined Network, then well talk about what are the advantages of SDN over a conventional network architecture. We’ll overview the history of SDN, the infrastructure that supports it, in particular how SDNs are designed and built and the applications of SDN. Specifically, what they can be used for and how they can be used to simplify various network management tasks. Perhaps the best way to understand what an SDN is Is to compare it to the behavior of today’s networks. Today’s networks have two functions. The first is the Data Plane, whose task it is to forward packets to their ultimate destination. But in order for the Data Plane to work, we also need a way of computing the state that each of these routers has that allows the routers to make the right decision in forwarding traffic to the destination. The state that lives in each of these routers that allows the routers to make these decisions about how to forward packets are called routing tables. It’s the job of the network’s Control Plane to compute these routing tables. In conventional networks, the Control and Data Plane both run on the routers that are distributed across the network. In an SDN, the Control Plane runs in a logically centralized controller. Additionally, the controller typically controls multiple routers across the network and often, the control program exerts control over all the routers in the network, thus facilitating network-wide control. These two characteristics are the defining features of a Software Defined Network. The separation of data and control allows a network operator to build a network with commodity devices, where the control, resides in a separate control program. This re-factoring allows us to move from a network where devices are vertically integrated making it very tough to innovate to a network where the devices have open interfaces that can be controlled by software. Thus, allowing for much more rapid innovation. Let’s survey a brief history of SDN. Previous to 2004, configuration was distributed, leading to buggy and unpredictable behavior. Around 2004, we had the idea to control the network from a logically centralized high level program. That logically centralized controller focused on the border gateway protocol, and was called the routing control platform, or RCP. In 2005, researchers generalized the notion of the RCP for different planes. The decision plane which computed the forwarding state for devices in the network, the Data Plane, which forwarded traffic based on decisions made by the decision plane. And the dissemination and discovery planes, which provide the decision plane the information that it needs to compute the forwarding state, which ultimately gets pushed to the data plane. Around 2008, these concepts effectively hit the mainstream, through a product called OpenFlow. OpenFlow’s intellectual roots are with the RCP and 4D. But OpenFlow has made practical when merchant silicon vendors open their APIs, so that switch chipsets could be controlled from software. So suddenly there was an emergence of cheap switches that were build based on open chip sets that could be controlled from software. This development effectively allowed us to decouple the control plane and the data plane in commodity switching hardware.