# The Future of Networking, and the Past of Protocols

### SDN

* Is SDN the right solution?&#x20;
* Talk is not about what SDN is, but why SDN is&#x20;

### Key to Internet success: layers

* Multiple layers of networking
* The importance of layerings&#x20;
  * Decomposed delivery to fundamental components&#x20;
  * It enables independent but compatible innovation at each layer&#x20;
* SDN <--> Internet&#x20;
* An amazing success but an academic failure&#x20;
  * Build an artifact, not a discipline&#x20;
    * Other fields in "systems": OS, DB, etc.&#x20;
      * Teach basic principles&#x20;
      * Are easily managed
      * Continue to evolve&#x20;
    * Networking&#x20;
      * Teach big bags of protocols&#x20;
      * No principles to teach lol !&#x20;
      * Notoriously difficult to manage&#x20;
      * Evolves very slowly&#x20;

#### Why does networking lag behind?&#x20;

* Networks used to be simple&#x20;
  * IP is incredibly simple protocol, ethernet...&#x20;
* New **control** requirements led to great complexity&#x20;
* &#x20;Fortunately, the infrastructure still works...&#x20;
  * Only because of your great ability to master complexity&#x20;
    * Lowest level (how much you have to keep in your head)&#x20;
* The ability to master complexity is both a blessing and a curse&#x20;

#### A simple story about complexity&#x20;

* \~1985: Don Norman&#x20;
  * Talks about user interfaces and stick shifts&#x20;
  * Stick shift! None of you should manage the interface!&#x20;
* <mark style="color:red;">The ability to</mark> <mark style="color:red;"></mark><mark style="color:red;">**master complexity**</mark> <mark style="color:red;"></mark><mark style="color:red;">is not the same as the ability to</mark> <mark style="color:red;"></mark><mark style="color:red;">**extract simplicity**</mark>&#x20;
* When first getting systems to work: focus on mastering complexity&#x20;
* When making system easy to use and understand: focus on extracting simplicity&#x20;

#### What is the point

* Networking has never made the distinction
* And therefore has never made the transition&#x20;
  * Still focused on mastering complexity&#x20;
  * Little emphasis on extracting simplicity from control plane&#x20;
* Intellectual foundations&#x20;
  * Necessary for creating a discipline&#x20;
* Other example: programming&#x20;
  * Machine language
  * OS and other abstraction
  * Modern langauges: object orietnation, garbage collection&#x20;

#### The power of abstraction

* "Modularity based on abstraction is the way things get done" - Barbara Liskov&#x20;
* Abstractions --> Interfaces --> Modularity&#x20;
* What can we do in Networking&#x20;
  * Layering: only deal with the data plane&#x20;
  * We have no powerful control plane abstractions&#x20;
  * How do we find those abstractions
  * Define our problem, and then decompose it&#x20;
    * **The network control problem**&#x20;
      * Compute the configuration of each physical device (e.g. forwarding tables, ACLs)&#x20;
      * Operate without communication guarantees (e.g. fields in packet headers, losses)
      * Operate within given network-level protocol&#x20;
      * Only people who love complexity would find this a reasonable request&#x20;
    * Programming analogy&#x20;
      * What if programmers had to: specify where each bit was stored; explicitly deal with all internal communication errors; within a programming language with limited expressibility&#x20;
      * Programmers would redefine problem: higher level abstraction for memory, build on reliable communication abstractions, use a more general language&#x20;
      * **Abstractions** divide problem into tractable pieces: make task of control program easier&#x20;

#### From requirements to abstractions

1. Operate without communication guarantees&#x20;
   1. Need an abstraction for **distributed states**&#x20;
      1. Shield mechanisms from vagaries of distributed state&#x20;
         1. While allowing access to this state
      2. Natural abstraction: global network view&#x20;
         1. Annotated network graph provided through an API&#x20;
      3. Control mechanism is now program using API
         1. No longer a distributed protocol, now just a graph algorithm
         2. E.g. Use Dijkstra rather than Bellman-Ford&#x20;
         3. "logically centralized"&#x20;
2. Compute the configuration of each physical device
   1. Need an abstraction that **simplifies configuration**&#x20;
      1. Network virtualization&#x20;
      2. E.g. "access control"&#x20;
         1. A can or cannot happen to B: don't care about switches&#x20;
3. Operate within given network-level protocol&#x20;
   1. Need an abstraction for general **forwarding model**&#x20;
      1. Abstraction should not constrain control program
      2. But it should hide details of underlying hardware&#x20;
         1. Crucial for evolving beyond vendor-specific things&#x20;

### One sentence

* SDN is defined precisely by these three abstractions: distribution, forwarding, configuration&#x20;
* SDN can be derived from decomposing network control
* Fundamental validity and general applicability&#x20;

### Realizing these abstractions

* Core challenge&#x20;
  * **Make distributed control problem a logically centralized one**&#x20;
  * Design a common distribution layer
    * Gathers information from network elements (topology)
    * Disseminates control commands to network elements&#x20;
  * This is done by network operating system&#x20;
* Traditional control mechanisms&#x20;
  * ![](https://2097630930-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVORxAomcgtzVVUqmws%2Fuploads%2FQm2S89WdLQvSRmNgMrqc%2Fimage.png?alt=media\&token=8b6372e3-067c-4e71-8c81-572d00ac3aad)
* SDN
  * ![](https://2097630930-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVORxAomcgtzVVUqmws%2Fuploads%2FdVUvuRIjRpUgXh7HT9dN%2Fimage.png?alt=media\&token=80338f88-787e-4a35-9a88-3ccb490c19ee)
* Major change in paradigm&#x20;
  * No longer designing distributed control protocols
  * Now just defining a centralized control function: configuration = function(view)
  * This spells the end for distributed protocols&#x20;
    * Easier to write, reason about, and maintain&#x20;
  * Beginning of "software era" of networking
    * Rate of change, nature of standards, different culture, etc.&#x20;
* Other challenges&#x20;
  * Requires a shared control layer
    * Map abstract configuration to physical configuration&#x20;
    * ![](https://2097630930-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVORxAomcgtzVVUqmws%2Fuploads%2Frsp3aTto0xWwuIZyptwE%2Fimage.png?alt=media\&token=559a1027-1322-4796-8800-8d3d67da7185)
      * Add network virtualization layer&#x20;
  * Forwarding abstraction&#x20;
    * Switches have two brians: management cpu (smart but slow), forwarding asic (fast but dumb)
    * Need a forwarding abstraction for both
      * CPU abstraction can be almost anything&#x20;
    * ASIC abstraction is much more subtle: OpenFlow&#x20;
    * All this assumes switches are unit of abstraction
      * Why not fast, cheap fabrics? (in datacenters)&#x20;

### Keep in mind

* OpenFlow: of is a detail in the overall SDN architecture
  * Crucial for industry; but minor piece architecturally&#x20;
  * Don't let the tail wag the dog&#x20;
* Dog: clean separation of concerns
  * Control program: specify behavior on abstract model
    * Driven by operator requirements
  * Network virtualization: map abstract model to global view&#x20;
    * Driven by specification abstraction
  * NOS: map global view to physical switches
    * API: driven by distributed state abstraction
    * Switch / fabric interface: driven by forwarding abstractions&#x20;
* SDN: value proposition&#x20;
  * build ecosystem that we can have progress going on in all pieces&#x20;
  * maintain an overall coherent system&#x20;

### Final words

* Future of networking lies in finding right abstractions
  * The era of "a new protocol per problem" is over&#x20;
* Takes years to internalize and evaluate abstractions
  * Even longer to adjust to software-oriented culture&#x20;
* Early stages of an intellectual voyage&#x20;
  * We should keep our minds open while charting our course&#x20;
