StateAlyzr accepted at NSDI 2016
March 16, 2016
StateAlyzr is accepted at NSDI 2016.
May 13, 2015
Follow the OpenNF tutorial to learn how to use OpenNF.
OpenNF presented at IETF 92
March 24, 2015
Watch the presentation of OpenNF at IETF 92.
OpenNF receives 2015 ANRP
January 7, 2015
OpenNF was awarded the 2015 Applied Networking Research Prize.
OpenNF presented at SIGCOMM 2014
August 19, 2014
OpenNF was presented at SIGCOMM 2014.
Network functions, or middleboxes, are systems that examine and modify packets and flows in sophisticated ways: e.g., network address translators (NATs), intrusion detection systems (IDSs), load balancers, caching proxies, etc. Network functions play a critical role in ensuring security, improving performance, and providing other novel functionality in enterprise and service provider networks.
Recently, operators have expressed interest in replacing dedicated hardware appliances with software-based network functions running on generic compute resources---a trend known as network functions virtualization (NFV). In parallel, operators are using software-defined networking (SDN) to steer flows through appropriate network function instances to enforce high-level policies and jointly manage network and network function load.
NFV and SDN together have the potential to help operators achieve three important goals: (1) offer and satisfy tight service level agreements (SLAs); (2) accurately monitor and manipulate network traffic; and (3) minimize operating expenses. However, operators need additional control mechanisms to be able to satisfy these goals in scenarios where packet processing must be redistributed across a collection of network function instances: e.g., elastic network function scaling, rapid network function upgrades, and selective invocation of advanced remote processing. If any flow can quickly and safely be reallocated to any network function instance at any time, then operators can optimally satisfy a combination of objectives pertaining to performance, availability, security, cost, etc. Otherwise, operators must make trade-offs among key goals.
We present a control plane architecture that allows such quick and safe allocation of flows across network function instances. Our architecture, called OpenNF, provides efficient, coordinated control of both internal network function state and network forwarding state. Crucially, we address three major challenges in our control plane design: (1) dealing with race conditions, (2) bounding overhead, and (3) accommodating a variety of network functions with minimal changes.
Evaluations of OpenNF show that: (1) OpenNF can eliminate spurious alerts from IDSs and cut network function scale-in time by tens of minutes compared to using current control frameworks; (2) internal network function state can be moved, copied, and shared efficiently even when certain guarantees are requested--e.g., a loss-free move involving state for 750 flows takes only 221ms and imposes only 22ms of additional latency on packets received during the operation; and (3) additions to network functions to support OpenNF increase code size by at most 8%, and packet processing time at network functions increases by less than 10% during state transfers.
For middleboxes to work with OpenNF or similar frameworks, middlebox developers must modify, or at least annotate, their code to perform custom state allocation, track updates to state, and (de)serialize state objects. However, three factors make such modifications difficult today: (i) middlebox software is extremely complex, and the logic to update/create different pieces of state can be intricate; (ii) there may be 10s-100s of object types that correspond to state that needs explicit handling; and (iii) middleboxes are extremely diverse. Factors i and ii make it difficult to reason about the completeness or correctness of manual modifications. And, iii means manual techniques that apply to one middlebox may not extend to another.
To reduce manual effort and ease adoption, we develop StateAlyzr, a system that relies on data and control-flow analysis to automate identification of state objects that need explicit handling. Using StateAlyzr's output, developers can easily make framework-compliant changes to arbitrary middleboxes, e.g., identify which state to allocate using custom libraries, determine where to track updates to state, (de)serialize relevant state objects for transfer/cloning, and merge externally provided state with internal structures.
We find StateAlyzr to reduce the manual effort by 20x. For example, leveraging StateAlyzr to make PRADS OpenNF-compliant took under 6 man-hours of work.