Participatory Networking integrates end-users, hosts and applications in network management by supporting resource requests, traffic hints, and status queries.
PANE is a prototype OpenFlow controller which implements Participatory Networking, an API for end-users, hosts and applications to take part in network management. PANE allows these principals to directly contact the network control-plane to place requests for resources, provide hints about future traffic, or query the state of the network. PANE divides and delegates authority for network management using a hierarchy of “shares,” which are also managed by interacting with the PANE server.
Participatory Networking is designed for networks with a single logical administrator, such as datacenters, enterprise or campus networks, and home networks. The system’s broad design is motivated by multiple scenarios in which applications benefit from network re-configuration including smooth video playback, bulk data transfer, in-network service from middleboxes or software routers, and route setup or flow placement. Our papers include more detailed descriptions of these examples.
A diagram of PANE’s internals is shown at right. User requests enter at the top, where they are first checked against the share tree, which describes the privileges granted to each user. Valid requests are installed for their requested duration in the policy tree, which is then flattened into a single flow table for an idealized network consisting of a single switch. PANE’s runtime system then converts this Network Flow Table into individual tables for the distributed OpenFlow switches, using data about the network topology maintained in the Network Information Base.
Apache ZooKeeper is a coordination service used at Twitter, Yahoo!, Netflix and elsewhere, where it fills a similar role to Google's Chubby service or Paxos quorums. During write operations, servers in the ZooKeeper ensemble must agree to commit each operation, a task which is sensitive to increased network latency. By augmenting ZooKeeper with support for PANE, and granting it the necessary authority, our PANE-enabled ZooKeeper can request guaranteed bandwidth for its traffic, which, in turn, leads to lower latency as flows do not compete in switch queues with other traffic. In the plot on the right, the red line is a CDF of the latency of ZooKeeper CREATE operations when running on an unloaded network, the green line is the increased latency when the links used by ZooKeeper's traffic are heavily loaded, and the blue line represents the return to lower latency when ZooKeeper exercises its authority to isolate its traffic using PANE.
We currently use PANE's client library for Java applications to create and manage the necessary PANE requests. Implementing complete support for PANE in ZooKeeper, including introducing additional configuration parameters required only a few hundred lines of code. Further details of this experiment and its setup can be found in our SIGCOMM 2013 paper below, and we make our ZooKeeper benchmarking tool available for download.
To make exploring PANE and its potential use cases simpler, we are providing this demo virtual machine. The VM uses Mininet to create a virtual network topology with PANE functioning as the SDN controller, and can use either Open vSwitch or the OpenFlow 1.0 reference switch as the virtual switches. The VM also includes a PANE-enabled version of ZooKeeper, the ZooKeeper benchmark, and a script which launches the experiment described above. In addition, all of the tools needed to further develop PANE are also included.
Download link: PANEdemoVM.tar.gz (1.4 GB)
SHA1 checksum for VM download: 2481d078fdb3ecc2ffe6476d8e9d62e9498efb56
Members of the Particpatory Networking project include Andrew Ferguson, Arjun Guha, Chen Liang, Betsy Hilliard, Jordan Place, Rodrigo Fonseca, and Shriram Krishnamurthi. Please contact Andrew Ferguson (firstname.lastname@example.org) with any questions or comments.
The authors wish to thank Carleton Coffrin, Joe Politz, Jennifer Rexford, Scott Shenker, and Andreas Voellmy for helpful discussions, feedback, and assistance with this project. This work is partially supported by grants from the National Science Foundation, including NSF Award #1012060. Andrew Ferguson is supported by an NDSEG fellowship.