  Enterprises want their in-cloud services to leverage the performance and
security benefits that middleboxes offer in traditional deployments. Such
virtualized deployments create new opportunities (e.g., flexible scaling) as
well as new challenges (e.g., dynamics, multiplexing) for middlebox management
tasks such as service composition and provisioning. Unfortunately, enterprises
lack systematic tools to efficiently compose and provision in-the-cloud
middleboxes and thus fall short of achieving the benefits that cloud-based
deployments can offer. To this end, we present the design and implementation of
Stratos, an orchestration layer for virtual middleboxes. Stratos provides
efficient and correct composition in the presence of dynamic scaling via
software-defined networking mechanisms. It ensures efficient and scalable
provisioning by combining middlebox-specific traffic engineering, placement,
and horizontal scaling strategies. We demonstrate the effectiveness of Stratos
using an experimental prototype testbed and large-scale simulations.
