The Internet is becoming a fundamental tool used in our personal and professional lives on a daily basis. As such, the bandwidth demands placed on network elements that underpin the Internet are rapidly increasing. In order to feed the seemingly insatiable hunger for bandwidth, parallel processing techniques have been developed to scale compute power in a cost effective manner.
As our reliance on the Internet deepens, industry innovators are continually developing new and diverse applications for providing a variety of services to subscribers. However, supporting a large diversity of services and applications using parallel processing techniques within a distributed compute environment introduces a number of complexities. One such complexity is to ensure that all available compute resources in the distributed environment are efficiently shared and effectively deployed. Ensuring efficient sharing of distributed resources requires scheduling workloads amongst the distributed resources in an intelligent manner so as to avoid situations where some resources are overburdened, while others lay idle. Another such complexity is how to support new and unexpected behavior demanded by the growing diversity of services within the infrastructure of a distributed environment that has already been deployed in the field.
FIG. 1 illustrates a modern metro area network 100 for providing network services to end users or subscribers. Metro area network 100 is composed of two types of networks: a core network 102 and one of more access networks 106. Core network 102 communicates data traffic from one or more service providers 104A-104N in order to provide services to one or more subscribers 108A-108M. Services supported by the core network 102 include, but are not limited to, (1) a branded service, such as a Voice over Internet Protocol (VoIP), from a branded service provider; (2) a licensed service, such as Video on Demand (VoD) or Internet Protocol Television (IPTV), through a licensed service provider and (3) traditional Internet access through an Internet Service Provider (ISP).
Core network 102 may support a variety of protocols (Synchronous Optical Networking (SONET), Internet Protocol (IP), Packet over SONET (POS), Dense Wave Division Multiplexing (DWDM), Border Gateway Protocol (BGP), etc.) using various types of equipment (core routers, SONET add-drop multiplexers, DWDM equipment, etc.). Furthermore, core network 102 communicates data traffic from the service providers 104A-104N to access network(s) 106 across link(s) 112. In general, link(s) 112 may be a single optical, copper or wireless link or may comprise several such optical, copper or wireless link(s).
On the other hand, the access network(s) 106 complements core network 102 by aggregating the data traffic from the subscribers 108A-108M. Access network(s) 106 may support data traffic to and from a variety of types of subscribers 108A-108M, (e.g. residential, corporate, mobile, wireless, etc.). Although access network(s) 106 may not comprise of each of the types of subscriber (residential, corporate, mobile, etc), access(s) network 106 will comprise at least one subscriber. Typically, access network(s) 106 supports thousands of subscribers 108A-108M. Access networks 106 may support a variety of protocols (e.g., IP, Asynchronous Transfer Mode (ATM), Frame Relay, Ethernet, Digital Subscriber Line (DSL), Point-to-Point Protocol (PPP), PPP over Ethernet (PPPoE), etc.) using various types of equipment (Edge routers, Broadband Remote Access Servers (BRAS), Digital Subscriber Line Access Multiplexers (DSLAM), Switches, etc). Access network(s) 106 uses a subscriber policy manager(s) 110 to set policies for individual ones and/or groups of subscribers. Policies stored in a subscriber policy manager(s) 110 allow subscribers access to different ones of the service providers 104A-N. Examples of subscriber policies are bandwidth limitations, traffic flow characteristics, amount of data, allowable services, etc.
Subscriber traffic flows across access network(s) 106 and core network 102 in data packets. A data packet (also known as a “packet”) is a block of user data with necessary address and administration information attached, usually in a packet header and/or footer, which allows the data network to deliver the data packet to the correct destination. Examples of data packets include, but are not limited to, IP packets, ATM cells, Ethernet frames, SONET frames and Frame Relay packets. Typically, data packets having similar characteristics (e.g., common source and destination) are referred to as a flow.
FIG. 2 represents the Open Systems Interconnect (OSI) model of a layered protocol stack 200 for transmitting data packets. Each layer installs its own header in the data packet being transmitted to control the packet through the network. The physical layer (layer 1) 202 is used for the physical signaling. The next layer, data link layer (layer 2) 204, enables transferring of data between network entities. The network layer (layer 3) 206 contains information for transferring variable length data packet between one or more networks. For example, IP addresses are contained in the network layer 206, which allows network devices (also commonly referred to a network elements) to route the data packet. Layer 4, the transport layer 208, provides transparent data transfer between end users. The session layer (layer 5) 210, provides the mechanism for managing the dialogue between end-user applications. The presentation layer (layer 6) 212 provides independence from difference in data representation (e.g. encryption, data encoding, etc.). The final layer is the application layer (layer 7) 212, which contains the actual data used by the application sending or receiving the packet. While most protocol stacks do not exactly follow the OSI model, it is commonly used to describe networks.