Csep-561-Reading-5A

The road to SDN: an intellectual history of programmable networks

The defining characteristic of SDN is that it separates the control plane (how to handle traffic) from the data plane (forwarding traffic according to control plane decisions). These ideas can be traced back over twenty years, to early telephone networks. Some of the historical threads that have led to SDN today are the following:

  • Active Networking: The idea was to expose an API on the network nodes to support custom packet processing. It's an interesting historical note that having a concerted funding push from DARPA (without near-term use cases for AN) might have been detrimental to its research on the whole. I know I often feel some skepticism about open source technologies released from and pushed by the FAANG gang today (i.e. Go)
  • Separating control/data planes: The projects that constitute this line of work differed from Active Networking in that they were focused on pressing problems in network management at the time. They emphasized:
    • allowing network admins to innovate, rather than end users
    • programming the control plane, rather than data plane
    • network-wide visibility/control, rather than at the device level.
      Again there is an interesting historical note about how critics of this separation were, in hindsight, dead wrong! Many felt that having a central controller would compromise the simple model of distributed consensus of the state of the network; however this separation ultimately led to a more consistent view of the network state.
  • OpenFlow and Network OSes: Before OpenFlow, most of the research projects behind SDN were not seen as realistic in the near term. However, OpenFlow's decision to build on existing commodity switch hardware allowed it to be immediately deployable, and its industry adoption was a boon for SDN.