"Hot" topics in networking research: SDN and NFV. * Revise basics of networking: when a client communicates with a server, what are all the boxes that lie on the path from a client to the server? Layer 2 switches, layer 3 routers, security appliances like firewalls, load balancers, and so on. * Software defined networking (SDN): the concept of the control plane and data plane of a networking element, and what it means to separate them. For example, consider a simple router. The control plane is the routing protocol that decides how to forward a packet to a destination. The dataplane does the actual job of implementing the control's plane decision, by matching every packet to the forwarding table entries. * SDN version 1: The control plane is run in a centralized software controller. The controller makes decisions on what the dataplane should do, and communicates them to the dataplane switches via a standard protocol (Open Flow). SDN switches are very simple with a set of tables that specify what fields of a packet header to match, and what action to take for matched packets (match-action tables). * What are the advantages of such a method? Controller is centralized and in software: can make smarter decisions with network wide view, can implement complex control plane protocols easily, and so on. Disadvantages: centralized controller can become bottleneck. Not many compelling usecases. * Hardware SDN switches vs. software SDN switches like OVS. Hardware SDN switches are not widely available, so a software switch running on a Linux box can approximate a hardware SDN switch by implementing match action tables efficiently in software. Software SDN switches have made SDN adoption easier. * With this version of SDN, the switches themselves are still constrained to run with existing/well known headers and protocols. For example, you can use a new routing algorithm to compute the path in the SDN controller. However, in order to convey the decision to the switch, the decision should still be based on looking up the standard header fields. For example, you cannot do routing based on application payload, but only using some field in the TCP/IP header. * SDN version 2: programmable dataplanes. The dataplane switches no longer match on fixed header fields. Instead the protocols can be defined in a high level language (e.g., P4) and compiled to run on programmable switches. Now, one can define their own headers and protocols in software, and the hardware switch can be programmed to match on those headers. * Software SDN controller + programmable dataplane switches = highly programmable 'software defined' network. The network protocols are no longer fixed but configurable by the user. The networking hardware only provides basic primitives like match-action tables, and how the matching is done is completely specified by software. * New research topics: discovering the power of programmable dataplanes. What all can you do with it? People are just discovering the flexibility and power of this idea. * Another recent topic: Network Function Virtualization (NFV) = running various network 'functions' like firewalls and load balancers in software rather than hardware. * Why would a network function run in hardware? Performance. We have seen how inefficient network I/O is in a user space program running over regular operating systems. Doing packet processing in the kernel is better, but hard to write/maintain kernel code. However, with kernel bypass techniques and such, one can write user space code (e.g., a firewall) to process network packets efficiently. Hence, there is a renewed interest to run packet processing elements in software instead of over custom hardware. For easy portability, these software network functions are run in virtual machines on high-end servers. * What are some of the challenges in NFV? How do we get good performance in software, especially inside a VM? How do we easily write such software? How do we efficiently communicate packets across VMs? How do we decide which servers the various VMs should be placed on? A lot of research overlaps with research done in the virtualization/cloud computing space, but with focus on networking applications.