This post summarizes How SDN will Shape Networking by Nick McKeown, The Future of Networking, and the Past of Protocols by Scott Shenker, the paper OpenFlow: Enabling Innovation in Campus Networks, and CS268 on-site guest lecture delivered by Scott Shenker. These provocative talks focus on the fundamental philosophy of SDN — Is SDN the right solution? Why we ended up here?
A Powerful Trick: Abstraction
Abstraction is the key to dividing the problem into tractable pieces and extracting simplicity. If we want to build a system we use abstractions which lead to interfaces and modularity, i.e., we define some abstractions that lead to some interfaces, those interafaces lead to a modular system. And only with such a modular systems we could write millions LoC and get it to work and seperate concerns and maintain it and reason about it.
Modularity based on abstraction is the way things get done. - Barbara Liskov
What Makes the Internet So Great?
The layering abstraction. It decomposes the data delivery into fundamental components and it enables innovation independently but keep conherent systems.
Why Networking Lagging Behind?
Software systems continue to evolve much faster than networking. How to increase the pace of innovation at software speed? Abstraction! Compared to OS, database, distributed systems, there are few fundamental disciplines to teach but a big bag of protocols in networking. In networking, we build excellet Internet artifact and we are good at mastering complexity, however, we don’t put much emphasis on extracting simplicy in networking! There is a clear distinction between the ability of mastering complexity and the ability to extract simplicy. We have layering abstraction in networking data plane, but we have no powerful control plane abstractions!
How to Find Those Abstractions?
Define the network control problem and decompose it. From these requirements, we have the corresponding abstractions. (Think of the programming analogy)
- Compute the configuration of each physical device, e.g., forwarding tables, ACLs… => Specification abstraction
- Operate without communication guarantees => Distributed state abstraction
- Operate within given network-level protocol => Forwarding abstraction
How to realize the above abstractions?
- Control program: specify the behavior on abstract model (operator requirements)
- Network virtualization: map abstract model to global view (specification abstraction)
- Network OS: map global view to physical devices (forwarding & distrbuted state abstraction)
SDN in a Nutshell
- SDN is defined precisely by the above 3 abstractions.
- SDN is not a random idea, it can be derived from decomposing the network control problem.
- Fundamental ties between abstraction and innovations are the core to why SDN is the right answer.
Keep an Open Mind
- It takes time to settle down on the right abstraction and evolve
- MPLS problem (there is no IP-based forwarding inside the MPLS network) => Seperate the network into fabric + edge SDN
- Middle boxes configurations appeared right after SDN and was not considered (SDN considers only switch packet forwarding)
- After OpenFlow we have P4 => differences
OF is architecturally a minor piece of the SDN elephant which focuses on the realization of the forwarding abstraction (<Match, Action>).