Show notes
Fulvio Risso is an associate professor at Politecnico di Torino in Turin, Italy. His research is in the area of high-speed (10+ Gbps) packet processing and especially in programmable networks. This interview was prompted by Fulvio's presentation “A Control and Management Plane for IO Modules” at the IO Visor Summit held on Feb. 27 in Mountain View (see Quentin Monnet's excellent summary of the summit for more information). The episode begins with a few words about OSSN 2017, the 2nd International Workshop on Open-Source Software Networking, which Fulvio co-chairs. The interview occurred long before the workshop, which took place in early July. See also the workshop schedule. An IO Module, according to Fulvio, is a kind of marketing term for an eBPF program. In turn, eBPF is an abstract, portable, safe virtual machine that Linux allows userspace programs to install into the kernel to monitor, augment, or control kernel behavior. OVS Orbit has previously covered eBPF in episode 4 on Cilium, episode 23 on the IO Visor project, and other episodes. According to Fulvio, for NFV packet processing, IO Modules have three primary advantages over other approaches. First, they cab directly injected into a kernel. Second, potentially, IO Modules can be injected at different layers, for example in the main networking stack or in a networking driver. Third, eBPF programs are more portable than native code, which can be an important advantage for heterogeneous telco environment. Fulvio gives an example of the use of IO Modules for implementing the functionality of a residential network gateway. IO Modules implement DHCP, routing, NAT, deep packet inspection, etc. The advantage of an IO Module architecture over the traditional home gateway design is modularity: the IO Module design can be easily changed and adapted to suit a new use case. The IO Modules repository includes a controller named Hover that is the main method proposed for IO Module deployment and (re)configuration. Northbound, Hover provides a high-level REST API that accepts IO Modules or C code that can be transformed into eBPF; southbound, it talks to the Linux kernel to enable and connect IO Modules. In addition, it provides some helpers that allow IO Modules to handle points of eBPF programming that are currently tricky. There is a clear analogy between Open vSwitch/OpenFlow and IO Modules/Hover. In both cases, there is a kernel-based fast path, that sometimes needs to consult a userspace-based slow path, which occasionally needs to consult a controller over the network. Open vSwitch uses OpenFlow for communication with the controller; for Hover, the protocol is yet to be determined. Fulvio is considering whether to use an existing controller such as ONOS. Ben and Fulvio discuss how to divide the implementation between fast path and slow path, with ARP as an example. Fulvio briefly discusses the performance of IO Modules, which is generally competitive with related technologies. The goal, however, is not performance, but flexibility. In the future, Fulvio plans to dedicate resources to bringing IO Modules into the larger IO Visor community. Fulvio is also concerned that the IO Visor community is tied too tightly to individual companies. He hopes for the community to expand further into university and research environments. OVS Orbit is produced by Ben Pfaff. The intro music in this episode is Drive, featuring cdk and DarrylJ, copyright 2013, 2016 by Alex. The bumper music is Yeah Ant featuring Wired Ant and Javolenus, copyright 2013 by Speck. The outro music is Space Bazooka featuring Doxen Zsigmond, copyright 2013 by Kirkoid. All content is licensed under a Creative Commons Attribution 3.0 Unported (CC BY 3.0) license.

