re individ- ual features. This calls for developing variety of configuration tools or scripts and troubleshooting becomes extremely challenging. While this approach has served the networking industry for many years now, today network engineers are moving toward a service-model-based approach that uses the concept of abstraction to help modularize the network design and implementation process. As shown in Figure 10.13, the network design gets abstracted into three different layers: The service abstraction layer essentially focuses on the service definition that is offered to the customer. Data models associated with this layer include service-specific objects, their parameters and constraints exposed to external customers and applications. The network abstraction layer captures a common informational model and data store that are used to abstract an up-to-date view of the network to the service layer. This facili- tates powerful concepts such as centralized network control and centralized monitoring, and provides a real-time current view of network state on which different services can be instantiated. Data models for the network layer contain information about functions or ser- vices that are currently in use on the network elements and can apply specific engineering rules that allow or restrict certain functions based on available resources (like a bandwidth upgrade can be blocked if the underlying device does not support that bandwidth level). The device layer focuses on specific devices and is responsible for taking the information from the network data model and populating specific parameters using the specific device's configuration language. This layer essentially captures the attributes that must be configured on the device to enable a specific service, and how it should be configured for a given vendor. The above approach enables designers to catch errors and oversights early in the cycle, when they are easy to fix. In addition, this basic abstraction approach also simplifies several tasks of the network 