of the texts and illustrations are taken from the talks/lectures given by these networking professors/gurus/ninjas: Scott Shenker, Nick McKeown, Jennifer Rexford, Mike Freedman, Nick Feamster, Guido Appenzeller, Marco Cello, Li Erran Li.
…built on… …built on… Reliable (or unreliable) transport Best-effort global packet delivery Best-effort local packet delivery Physical transfer of bits
Software bundled with hardware – Vendor-specific interfaces • Over specified – Slow protocol standardization • Few people can innovate – Equipment vendors write the code – Long delays to introduce new features
“systems”: OS, DB, DS, etc. – Teach basic principles – Are easily managed – Continue to evolve • Networking: – Teach big bag of protocols – Notoriously difficult to manage – Evolves very slowly
– Plethora of protocols – Heaps of header formats – Big bunch of boxes – Tons of tools • Teaching networking – Practitioners: certification courses, on the job – Undergraduates: how the Internet works
complexity – Little emphasis on extracting simplicity from control plane – No recognition that there’s a difference…. • Extracting simplicity builds intellectual foundations – Necessary for creating a discipline …. – That’s why networking lags behind
– Mastering complexity was crucial – Had to deal with low-level details • Higher-level languages: OS and other abstractions – File system, virtual memory, abstract data types, ... • Modern languages: even more abstractions – Object orientation, garbage collection,… Abstractions key to extracting simplicity
manage – Network administrators large share of sysadmin staff • Computation and storage have been virtualized – Creating a more flexible and manageable infrastructure – Need skills to manage virtualized assets
New languages, operating systems, etc. • Networks are stuck in the past – Routing algorithms change very slowly – Network management extremely primitive
– Mutual exclusion and other synchronization primitives – Files, file systems, threads, and other building blocks • Networking courses teach a big bag of protocols • No formal principles, just general design guidelines
– Basic Ethernet/IP straightforward, easy to manage • New control requirements have led to complexity – ACLs, VLANs, TE, Middleboxes, DPI,… • The infrastructure still works... – Only because of our great ability to master complexity • Ability to master complexity both blessing and curse
abstractions • Higher-level languages: OS and other abstractions • Modern languages: even more abstractions Abstractions simplify programming Easier to write, maintain, reason about programs Abstractions are the way we extracted simplicity So, what role do abstractions play in networking?
of packets with local forwarding state – Forwarding state + packet header forwarding decision • Control plane: compute the state in routers (forwarding state) – Determines how and where packets are forwarded – Routing, traffic engineering, firewall state, … – Implemented with distributed protocols, manual configuration (and scripting) or centralized computation • These different planes require different abstractions
other fields • Networking is about the mastery of complexity • Good abstractions tame complexity • Interfaces are instances of those abstractions • No abstraction => increasing complexity • We are now at the complexity limit
Past of Protocols • Nick McKeown, Stanford University, Many Talks/Articles • Jennifer Rexford, COS 597E, Princeton University • Mike Freedman, COS 461, Princeton University • Nick Feamster, https://www.coursera.org/course/sdn • Li Erran Li, COMS 6998-10, Univ. of Columbia • Marco Cello, SDN Talk @ CNR, Univ. Genova • Guido Appenzeller, Network Virtualization in Multi- tenant Datacenters, VMware