ise by creating concepts such as a Network Function App Store. These network functions can be offered as value-added service for customers. Programmability enables even more benefits for managed LAN and WAN services, whereby service providers can provide a unified multivendor solution for devices embedded in a customer's LAN environment. This chapter will discuss how one can leverage these technologies for creating next-generation customer premise equipment (CPE) products and managed services for enterprise customers. 10.1 EVOLUTION OF NETWORK COMPLEXITY The very basic role of a "network" of any size is to enable users to access services and resources in a reliable, timely, and secure manner. However, over time, the functional requirement associated with a "network" has grown signifi- cantly. Many new functions are now considered core requirements along with enablement of user access. Examples of some of these functions include the following: Functions to mitigate security threats-firewalls, intrusion prevention system (IPS)/intru- sion detection system (IDS), malware/virus protection, web proxies, etc. Functions to authorize and authenticate users Functions to enable transport-level security Functions to optimize traffic such as WAN acceleration solutions, content caching solu- tions, etc. Functions to load balance the traffic across different locations, different servers, and dif- ferent networks Functions to optimize the cost for using the networks Functions to manage remote access and bring your own device (BYOD) and their security Functions to provide high availability of networks and services In the past decade, the complexity of the network has grown significantly as each new func- tion was developed and deployed using a hardware centric model. Each new functional require- ment served as an innovation opportunity that resulted in the invention of a new box (sometimes referred to as middle box). These middle-box functions implemented a specific function using a "dedicated appliance" with proprietary hardwar