  Software Defined Networking (SDN) promises greater flexibility for directing
packet flows, and Network Function Virtualization promises to enable dynamic
management of software-based network functions. However, the current divide
between an intelligent control plane and an overly simple, stateless data plane
results in the inability to exploit the flexibility of a software based
network. In this paper we propose SDNFV, a framework that expands the
capabilities of network processing-and-forwarding elements to flexibly manage
packet flows, while retaining both a high performance data plane and an easily
managed control plane.
  SDNFV proposes a hierarchical control framework where decisions are made
across the SDN controller, a host-level manager, and individual VMs to best
exploit state available at each level. This increases the network's flexibility
compared to existing SDNs where controllers often make decisions solely based
on the first packet header of a flow. SDNFV intelligently places network
services across hosts and connects them in sequential and parallel chains,
giving both the SDN controller and individual network functions the ability to
enhance and update flow rules to adapt to changing conditions. Our prototype
demonstrates how to efficiently and flexibly reroute flows based on data plane
state such as packet payloads and traffic characteristics.
