Creating cross-service chains of virtual network functions in a wide area network

Concepts and technologies are disclosed herein for creating cross-service chains of virtual network functions in a wide area network. A controller can receive a chain request from a requestor. The chain request can specify functionality that is to be included in a service chain. The functionality can include a first function and a second function. The controller can compute a route associated with the service chain. The route can specify a first site that hosts a first service that provides the first function and a second site that hosts a second service that provides the second function. A first virtual network function can be located at the first site and a second virtual network function can be located at the second site. The controller can configure edge devices and forwarding devices to various entities at the two sites to enable the cross-service virtual network function chain.

BACKGROUND

In some communications networks, services can be formed by tightly coupling multiple virtual network functions together. These services can include an ingress point, one or more virtual network functions, and an egress point. In some instances, the services can include an edge router or server that can act as an ingress point for the service, one or more virtual network functions that can provide specific functionality associated with the service, and another edge router or server that can act as an egress point for the service.

The virtual network functions of these services are tightly coupled, meaning the virtual network functions cooperate to provide a service. Some custom services can be created by determining functionality that is desired for the service and chaining together virtual network functions that provide that functionality to create a custom service. Data flows into the service via the ingress point, through the virtual network functions of that service, and out of the service via an egress point. Data cannot be injected into the service other than through the ingress point, and data cannot be extracted from the service other than through the egress point.

SUMMARY

The present disclosure is directed to creating cross-service chains of virtual network functions in a wide area network. A controller (e.g., a controller executed by a server computer or other device) can receive a request to create a cross-service chain of virtual network functions. The request can be generated by a requestor and can identify functionality desired in the cross-service virtual network function chain; specific types of virtual network functions that should be used or accessed to provide the desired functionality; types of virtual network functions that data associated with the cross-service chain should traverse and/or be routed through; and/or otherwise can specify information that can be used to determine what virtual network functions and/or services will be used to provide the functionality associated with the desired cross-service virtual network function chain. The request can include at least information that identifies or can be used to identify two or more types of functionality that is associated with two or more virtual network functions that are to be accessed to provide the functionality requested by way of the request, where at least one of the two or more virtual network functions is associated with a first of two or more services, and where a second one of the two or more virtual network functions is associated with a second of the two or more services.

The controller can determine which sites' virtual network functions are to be included in the cross-service virtual network function chain. This determination can be based on network data that can include network topology information, network availability information, availability information associated with the virtual network functions and/or data that describes functions associated with the virtual network functions, data that identifies and/or describes the services, data that identifies and/or describes the various edge servers and/or routers, other information, and/or the like. The controller can determine a high level route for the requested chain based on these or other types of data. The high level route can identify the two or more sites that the traffic should be routed to, but may not identify the actual virtual network functions that are to be accessed. The controller can configure edge devices using labeling rules. The controller can provide the labeling rules to the edge devices, and can provide routing instructions to one or more forwarders and/or other entities to provide instructions for creating and/or operating the cross-service virtual network function chains, where the forwarders can be associated with one or more of the edge devices and/or virtual network functions. The routing instructions can identify the sites to which the traffic is to be routed if the traffic is determined to be associated with the cross-service virtual network function chain.

The controller also can configure one or more virtual network functions associated with the cross-service chain of virtual network functions. The routing instructions can be provided to forwarders associated with the virtual network functions to configure the forwarders to act on the traffic in accordance with the cross-service virtual network function chain. The controller also can be configured to provide, to the edge devices, labeling rules that can be used by the edge devices to configure labeling of traffic and/or removing of labels from the traffic. The labeling rules can instruct devices as to how the traffic should be labeled and/or how labels should be removed.

A packet can arrive at an edge device and the edge device can label the packet. After labeling, the packet can flow to a forwarder associated with the edge device. The forwarder can be executed by its own virtual machine and/or by a virtual machine that hosts the edge device. Either way, the forwarder can route the packet to the first virtual network function of the cross-service chain of virtual network functions. After being routed to and/or through the virtual network function, the packet can flow to the forwarder or other device that provides forwarding functionality for the virtual network function. The forwarder (associated with the virtual network function) can route the packet to another virtual network function within the same site or to another site. Either way, the packet can be routed to a next virtual network function in the cross-service virtual network function chain. At another site, the flow can be similar, and after the packet has traversed all of the two or more virtual network functions (on two or more sites) associated with the cross-service chain of virtual network functions, the packet can flow to an egress edge server, which can remove the labels. Thus, the header of the packet can be modified by an egress edge server to remove the routing information associated with the cross-service virtual network function chain, and the packet can be returned to an access network.

According to one aspect of the concepts and technologies disclosed herein, a system is disclosed. The system can include a processor and a memory. The memory can store computer-executable instructions that, when executed by the processor, cause the processor to perform operations. The operations can include receiving a chain request that can specify functionality to be included in a service chain. The functionality can include a first function and a second function. The operations also can include identifying a first virtual network function that provides the first function and a second virtual network function that provides the second function, and computing a route associated with the service chain. The route can specify a first site that hosts a first service that can include the first virtual network function, and the route can also specify a second site that hosts a second service that can include the second virtual network function. The operations also can include configuring a first edge device associated with the first site by providing routing instructions and labeling rules to the first edge device, configuring a forwarding device associated with the first site by providing the routing instructions and the labeling rules to the forwarding device, and configuring the first virtual network function and the second virtual network function by providing the routing instructions to the first virtual network function and to the second virtual network function. A packet can traverse the service chain by traversing the first edge device, the first virtual network function, the second virtual network function, and the forwarding device.

In some embodiments, computing the route can include obtaining, from a network device, network information that can include a network topology; querying the first virtual network function and the second virtual network function to determine capacities associated with the first virtual network function and the second virtual network function; and computing, based on the network information and the capacities, the route. In some embodiments, the network device can include a network monitor, and the network information can include information that indicates availability associated with the first virtual network function and the second virtual network function.

In some embodiments, the forwarding device can be a component of a second edge device that can be associated with the second service. In some embodiments, the second edge device can include an edge server that can be associated with the second site. In some embodiments, the first service can include an ingress edge server, a plurality of virtual network functions can include the first virtual network function, and an egress edge server. In some embodiments, the first edge device can be configured to receive a packet associated with the service chain, to label the packet, and to route the packet to the first virtual network function. In some embodiments, labeling the packet can include adding the routing instructions to a header of the packet. In some embodiments, the forwarding device can be configured to remove the routing instructions from the header of the packet.

According to another aspect of the concepts and technologies disclosed herein, a method is disclosed. The method can include receiving, by a server computer that can include a processor, a chain request that can specify functionality to be included in a service chain. The functionality can include a first function and a second function. The method also can include identifying, by the processor, a first virtual network function that provides the first function and a second virtual network function that provides the second function, and computing, by the processor, a route associated with the service chain. The route can specify a first site that hosts a first service that can include the first virtual network function and a second site that hosts a second service that can include the second virtual network function. The method also can include configuring, by the processor, a first edge device associated with the first site by providing routing instructions and labeling rules to the first edge device; configuring, by the processor, a forwarding device associated with the first site by providing the routing instructions and the labeling rules to the forwarding device; and configuring, by the processor, the first virtual network function and the second virtual network function by providing the routing instructions to the first virtual network function and to the second virtual network function. A packet can traverse the service chain by traversing the first edge device, the first virtual network function, the second virtual network function, and the forwarding device.

In some embodiments, computing the route can include obtaining, from a network device, network information that can include a network topology; querying the first virtual network function and the second virtual network function to determine capacities associated with the first virtual network function and the second virtual network function; and computing, based on the network information and the capacities, the route. In some embodiments, the second edge device can include an edge server associated with the second site, and the forwarding device can be a module of the edge server. In some embodiments, the first service can include an ingress edge server, a plurality of virtual network functions can include the first virtual network function, and an egress edge server. In some embodiments, the first edge can be configured to receive a packet associated with the service chain, to add the routing instructions to a header of the packet, and route the packet to the first virtual network function.

According to yet another aspect of the concepts and technologies disclosed herein, a computer storage medium is disclosed. The computer storage medium can store computer-executable instructions that, when executed by a processor, cause the processor to perform operations. The operations can include receiving a chain request that can specify functionality to be included in a service chain. The functionality can include a first function and a second function. The operations also can include identifying a first virtual network function that provides the first function and a second virtual network function that provides the second function, and computing a route associated with the service chain. The route can specify a first site that hosts a first service that can include the first virtual network function, and the route can also specify a second site that hosts a second service that can include the second virtual network function. The operations also can include configuring a first edge device associated with the first site by providing routing instructions and labeling rules to the first edge device, configuring a forwarding device associated with the first site by providing the routing instructions and the labeling rules to the forwarding device, and configuring the first virtual network function and the second virtual network function by providing the routing instructions to the first virtual network function and to the second virtual network function. A packet can traverse the service chain by traversing the first edge device, the first virtual network function, the second virtual network function, and the forwarding device.

In some embodiments, computing the route can include obtaining, from a network device, network information that can include a network topology; querying the first virtual network function and the second virtual network function to determine capacities associated with the first virtual network function and the second virtual network function; and computing, based on the network information and the capacities, the route. In some embodiments, the second edge device can include an edge server associated with the second site, and the forwarding device can be a module of the edge server. In some embodiments, the first service can include an ingress edge server, a plurality of virtual network functions that can include the first virtual network function, and an egress edge server. In some embodiments, the first edge device can be configured to receive a packet associated with the service chain, to add the routing instructions to a header of the packet, and to route the packet to the first virtual network function.

DETAILED DESCRIPTION

The following detailed description is directed to creating cross-service chains of virtual network functions in a wide area network. A controller (e.g., a controller executed by a server computer or other device) can receive a request to create a cross-service chain of virtual network functions. The request can be generated by a requestor and can identify functionality desired in the cross-service virtual network function chain; specific types of virtual network functions that should be used or accessed to provide the desired functionality; types of virtual network functions that data associated with the cross-service chain should traverse and/or be routed through; and/or otherwise can specify information that can be used to determine what virtual network functions and/or services will be used to provide the functionality associated with the desired cross-service virtual network function chain. The request can include at least information that identifies or can be used to identify two or more types of functionality that is associated with two or more virtual network functions that are to be accessed to provide the functionality requested by way of the request, where at least one of the two or more virtual network functions is associated with a first of two or more services, and where a second one of the two or more virtual network functions is associated with a second of the two or more services.

The controller can determine which sites' virtual network functions are to be included in the cross-service virtual network function chain. This determination can be based on network data that can include network topology information, network availability information, availability information associated with the virtual network functions and/or data that describes functions associated with the virtual network functions, data that identifies and/or describes the services, data that identifies and/or describes the various edge servers and/or routers, other information, and/or the like. The controller can determine a high level route for the requested chain based on these or other types of data. The high level route can identify the sites that the traffic should be routed to, but may not identify the actual virtual network functions that are to be accessed. The controller can configure edge devices using labeling rules. The controller can provide the labeling rules to the edge devices, and can provide routing instructions to one or more forwarders and/or other entities to provide instructions for creating and/or operating the cross-service virtual network function chains, where the forwarders can be associated with one or more of the edge devices and/or virtual network functions. The routing instructions can identify the sites to which the traffic is to be routed if the traffic is determined to be associated with the cross-service virtual network function chain.

The controller also can configure one or more virtual network functions associated with the cross-service chain of virtual network functions. The routing instructions can be provided to forwarders associated with the virtual network functions to configure the forwarders to act on the traffic in accordance with the cross-service virtual network function chain. The controller also can be configured to provide, to the edge devices, labeling rules that can be used by the edge devices to configure labeling of traffic and/or removing of labels from the traffic. The labeling rules can instruct devices as to how the traffic should be labeled and/or how labels should be removed.

A packet can arrive at an edge device and the edge device can label the packet. After labeling, the packet can flow to a forwarder associated with the edge device. The forwarder can be executed by its own virtual machine and/or by a virtual machine that hosts the edge device. Either way, the forwarder can route the packet to the first virtual network function of the cross-service chain of virtual network functions. After being routed to and/or through the virtual network function, the packet can flow to the forwarder or other device that provides forwarding functionality for the virtual network function. The forwarder (associated with the virtual network function) can route the packet to another virtual network function within the same site or to another site. Either way, the packet can be routed to a next virtual network function in the cross-service virtual network function chain. At another site, the flow can be similar, and after the packet has traversed all virtual network functions associated with the cross-service chain of virtual network functions, the packet can flow to an egress edge server, which can remove the labels. Thus, the header of the packet can be modified by an egress edge server to remove the routing information associated with the cross-service virtual network function chain, and the packet can be returned to an access network.

Referring now toFIG. 1, aspects of an operating environment100for various embodiments of the concepts and technologies disclosed herein for creating cross-service chains of virtual network functions in a wide area network will be described, according to an illustrative embodiment. The operating environment100shown inFIG. 1can include a server computer102. The server computer102can operate in communication with and/or as part of a communications network (“network”)104. It should be understood that the network104can be and/or can include a wide area network and one or more other networks that are in communication with the wide area network such as transport networks, private networks, and the like. It therefore should be understood that the illustrated embodiment is illustrative and therefore should not be construed as being limiting in any way.

According to various embodiments, the functionality of the server computer102may be provided by one or more server computers, desktop computers, laptop computers, other computing systems, combinations thereof, or the like. It should be understood that the functionality of the server computer102can be provided by a single device, by two similar devices, and/or by two or more dissimilar devices. For purposes of describing the concepts and technologies disclosed herein, the server computer102is described herein as a server computer having a data storage device (not labeled inFIG. 1) and a processor (not labeled inFIG. 1). It should be understood that this embodiment is illustrative, and should not be construed as being limiting in any way.

The server computer102can execute an operating system (not labeled inFIG. 1) and one or more application programs such as, for example, a controller application, module, service, or the like (“controller”)106. The operating system can include a computer program that can be executed by the server computer102(e.g., by the processor of the server computer102) to control operations of the server computer102. The controller106can include an executable program that can be configured to execute on top of the operating system to provide various functionality illustrated and described herein.

More particularly, the controller106can be configured to create and manage cross-service chains of functions, as will be illustrated and described in more detail herein. The controller106can be configured to receive a request108from a requestor110. The request108can correspond to a chain request. As used herein, a “chain request” can correspond to a request to create a cross-service chain of multiple virtual network functions. As used herein, a cross-service chain includes routing or flows through at least two virtual network functions that can be associated with at least two different services and/or locations, in some embodiments. In some other embodiments, the virtual network functions can be components of a multi-site service and therefore can span multiple sites, as will be explained in more detail below. It should be noted that a cross-service chain of virtual network functions can include any number of virtual network functions over any number of sites and/or locations, though the concepts and technologies disclosed herein are described as being directed to cross-service chains of at least two virtual network functions from at least two sites. The cross-service chain can be used to enable routing of data across at least these two virtual network functions at different services and/or locations. According to various embodiments of the concepts and technologies disclosed herein, the requested cross-service chain can correspond to a flow or route through or across at least two virtual network functions112A-A,112A-B, . . . ,112A-N,112B-A,112B-B, . . . , and112B-N (hereinafter collectively and/or generically referred to as “virtual network functions112”). It should be noted that although the virtual network functions112are given the same reference numeral, that each of the virtual network functions112can have a different function relative to another virtual network function112. In some other embodiments, the virtual network functions112can have similar or even identical functions relative to one another. For example, two or more of the virtual network functions112can be components of a multi-site service such as a firewall. It should be understood that this example is illustrative, and therefore should not be construed as being limiting in any way.

In some embodiments, the request108can also include a request for (or can prompt creation of) routing instructions114and/or labeling rules116to effect the cross-service chain requested. The server computer102can be configured to provide the routing instructions114and/or the labeling rules116to various entities operating on and/or in communication with the server computer102(and/or the network104). The entities can be configured to use the routing instructions114and/or the labeling rules116to provide the desired data flow and/or routing associated with the cross-service chain, as will be illustrated and described in more detail herein.

Before explaining the functionality illustrated and described herein for chaining the virtual network functions112and/or creating, providing, and/or implementing the routing instructions114and/or labeling rules116to achieve the desired chaining, other elements of the operating environment100will be defined. As shown inFIG. 1, the operating environment100can include a first site118A and a second site118B (hereinafter collectively and/or generically referred to as “sites118”). As will be appreciated with reference to the description herein, any number of sites118can be included in the operating environment100, though in various embodiments at least two sites118are included. The illustrated embodiment of two sites118as shown inFIG. 1is purely illustrative. The sites118can include data centers, server farms, or other computing resources that can operate on and/or in communication with the network104. In some embodiments, though not separately labeled inFIG. 1, the sites118can be connected to the network104via one or more access networks. Thus, in the illustrated embodiment ofFIG. 1, it should be understood that the network104includes one or more access networks, though this is not labeled inFIG. 1. It should be understood that this example is illustrative, and therefore should not be construed as being limiting in any way.

The sites118can include one or more virtual machines120A-B (hereinafter collectively and/or generically referred to as “virtual machines120”). Only two virtual machines120are shown inFIG. 1due to space limitations, but as will be explained in more detail below, each component illustrated in the sites118can be deployed within its own virtual machine120, and as such, the illustrated embodiment is illustrative and should not be construed as being limiting in any way. The virtual machines120can include virtual processing components (e.g., virtual processors) and virtual data storage components (e.g., virtual memory). Thus, it can be appreciated that the sites118can include one or more special purpose physical computing devices (e.g., computing devices that include at least a processor and a memory that are configured to provide the functionality associated with the virtual machines). The physical computing devices can execute and/or host the virtual machines120. It should be understood that this example is illustrative, and therefore should not be construed as being limiting in any way.

The virtual machines120can be configured to host one or more components of one or more services122A-B (hereinafter collectively and/or generically referred to as “services122”). Each of the services122can include and/or can be provided by one or more virtual network function112. As shown inFIG. 1, the services122and/or the virtual machines120can be in communication with one or more other physical network components to provide the functionality illustrated and described herein. Also, as shown, the services122can include cross-site services, meaning virtual network functions112associated with the services122can span multiple sites, in various embodiments. Again, each of the services122can include any number of virtual network functions112. As such, it should be understood that the illustrated embodiment is illustrative and should not be construed as being limiting in any way.

In some embodiments, the services122and/or the virtual machines120can communicate with one or more devices such as one or more ingress edge servers126A-B (hereinafter collectively and/or generically referred to as “ingress edge servers126”). The ingress edge servers126can correspond to physical devices and/or virtual devices (e.g., hosted by a virtual machine120(not shown inFIG. 1)) that can receive data and/or other traffic that can be fed to the service122, e.g., for data processing by the one or more virtual network functions112. The ingress edge servers126can be configured to label traffic associated with the cross-service chains of virtual network functions as will be explained in more detail below. According to various embodiments of the concepts and technologies disclosed herein, the functionality of the ingress edge servers126can be invoked only one time in the lifetime of a packet that traverses a cross-site virtual network function chain, namely the first time the packet enters the chain (e.g., via an access network) as will be illustrated and described in more detail below.

In some embodiments, the services122and/or the virtual machines120also can communicate with one or more other devices such as one or more egress edge servers128A-B (hereinafter collectively and/or generically referred to as “egress edge servers128”). The egress edge servers128can correspond to physical devices and/or virtual devices (e.g., hosted by a virtual machine120(not shown inFIG. 1)) that can receive data and/or other traffic from the services122and/or the virtual machines120. The egress edge servers128can be configured to remove labels from the traffic and/or the data. In various embodiments of the concepts and technologies disclosed herein, the ingress edge servers126, the virtual network functions112, and the egress edge servers128can be coupled to and/or can include their own routing functionality to route traffic associated with the cross-service chains of virtual network functions112to other devices such as, for example, other services122, other virtual machines120, and/or other entities. This forwarding functionality is illustrated inFIG. 1as forwarding devices, modules, and/or functionality (hereinafter referred to simply as “forwarders”)124. As noted above, the forwarders124can be configured to route the traffic and/or data to other sites118, other virtual machines120, other services122, and/or other entities such as virtual network functions112. It should be understood that these examples are illustrative, and therefore should not be construed as being limiting in any way. According to various embodiments of the concepts and technologies disclosed herein, the functionality of the egress edge servers128can be invoked only one time in the lifetime of a packet that traverses a cross-site virtual network function chain, namely just before the packet exits the chain (e.g., is returned to the access network) as will be illustrated and described in more detail below.

It should be understood that although only two virtual machines120are shown inFIG. 1, it should be understood that each of the virtual network functions112and other components shown inFIG. 1such as the forwarders124, the ingress edge servers126, the egress edge servers128, and/or other components can be deployed in separate virtual machines120. The illustrated arrangement is for simplicity only, as multiple virtual network functions112generally may not be deployed within a single virtual machine120as shown inFIG. 1. Therefore, the illustrated embodiment is illustrative only and should not be construed as being limiting in any way.

In practice, a user or other entity such as the requestor110shown inFIG. 1can create and/or transmit a request108that is received by the server computer102. As noted above, the request108can correspond to a request to create a cross-service chain of virtual network functions112. In various embodiments, a user or other entity can access a device to create the request108. Thus, the requestor110shown inFIG. 1can correspond to a hardware device (having at least a processor and a data storage device such as a memory) that can be used to create the request108, in some embodiments. In some other embodiments, the requestor110can correspond to an application that can generate the request108without interaction with a user or other entity.

The request108can be generated by the requestor110. The request108can identify functionality desired in the cross-service chain of virtual network functions112; specific types of virtual network functions112that the user or other entity would like to access and/or use for the desired functionality; types of virtual network functions112that data associated with the cross-service chain should traverse and/or be routed through; and/or otherwise can specify information that can be used to determine what sites118, virtual network functions112, and/or services122will be used to provide the functionality associated with the desired cross-service virtual network function chain. According to various embodiments, the request108can include at least information that identifies or can be used to identify two or more virtual network functions112that are to be accessed to provide the functionality requested by way of the request108, where at least one of the two or more virtual network functions112is associated with a first of two or more services122, and where a second one of the two or more virtual network functions112is associated with a second of the two or more services122. It should be understood that this example is illustrative, and therefore should not be construed as being limiting in any way.

The server computer102can determine, via execution of the controller106and based upon the request108, what sites118are to be included in the cross-service virtual network function chain. As explained above, the request108can indicate (or can be analyzed to determine) what functionality is to be included in the cross-service virtual network function chain. The server computer102also can obtain, from one or more network monitoring devices (“network monitor”)130or other entities, network data and availability data (“network data”)132to use in determining the cross-service chain and/or its associated flow. The network data132can include network topology information, network availability information, availability information associated with the virtual network functions112and/or data that describes functions associated with the virtual network functions112, data that identifies and/or describes the services122, data that identifies and/or describes the various edge servers and/or routers (e.g., the ingress edge servers126and/or the egress edge servers128), other information, and/or the like. Based on the analysis, by the server computer102, of the request108and the network data132, the server computer102can determine a high level route for the requested chain.

As used herein, the phrase “high level route” can be used to refer to a route that specifies the sites118(and not necessarily the actual virtual network functions112that are to be accessed). As will be explained in more detail below, the sites118can be configured (e.g., by way of a local manager/controller (not shown inFIG. 1)) to assign the specific virtual network function112within the site118that will be used to provide functionality associated with the cross-service chain of virtual network functions112. Thus, the server computer102can identify the sites118that will be included in the cross-service virtual network function chain. Of course, the identification of the sites118can be based on the network data132(e.g., by way of identifying the virtual network functions112and their respective sites118), but the actual assignment of the virtual network function112can be left to the site118and/or the service122in various embodiments. This can be advantageous, in some embodiments, because the local controller or manager (or similar functionality) can be intimately aware of capabilities, capacities, and the like, and therefore can assign the virtual network functions112that most efficiently provide the requested functionality. Also, where multiple redundant services122and/or virtual network functions112exist, the local manager or controller can load balance and/or otherwise manage traffic within a site118. It should be understood that this example is illustrative, and therefore should not be construed as being limiting in any way.

The server computer102can configure edge devices such as the ingress edge servers126and/or the egress edge servers128based on the high level route. According to various embodiments, the server computer102can generate routing instructions114and labeling rules116. The labeling rules116can instruct the ingress edge servers126regarding labeling traffic associated with the cross-service virtual network function chain and/or can instruct the egress edge servers128regarding removing labels associated with the cross-service virtual network function chain. The routing instructions114can be generated to inform and/or instruct various entities (e.g., forwarders124associated with the ingress edge servers126, virtual network functions112, and/or the egress edge servers128) of how traffic (e.g., a packet134or other data) will be or is to be routed through and/or among the sites118, the services122, and/or the virtual network functions112if traffic received by the ingress edge servers126and/or the egress edge servers128is associated with a particular cross-service chain of virtual network functions112. Thus, for example, the routing instructions114can inform various entities of where traffic is to be routed in various embodiments. It should be understood that this example is illustrative, and therefore should not be construed as being limiting in any way.

According to various embodiments, the routing instructions114can be transmitted by the server computer102to the forwarders124associated with various entities to provide instructions for routing traffic associated with the cross-service virtual network function chains. Although the routing instructions114are only shown going to forwarders124associated with the site118B, it should be understood that this is for simplicity of illustration only and that the routing instructions114can also be provided to other devices shown inFIG. 1such as, for example, the forwarders124at the site118A and/or other entities, as explained above. Thus, the illustrated embodiment should be understood as being illustrative and should not be construed as being limiting in any way.

In some embodiments, the routing instructions114can identify the sites118to which the traffic is to be routed if the traffic is determined to be associated with the cross-service virtual network function chain. Thus, the routing instructions114can, for example, list the sites118to which the traffic (e.g., the packet134) is to be routed if the packet134(or other traffic) is determined to be associated with the cross-service chain of virtual network functions112. According to various embodiments, the traffic can be determined to be associated with the cross-service chain of virtual network functions112by way of examining a header or other data that can be included with and/or can be a part of the traffic. It should be understood that this example is illustrative, and therefore should not be construed as being limiting in any way.

As explained herein, the virtual network functions112can be controlled by a local (“local” as used here refers to being local to a service122, a virtual machine120, and/or a site118) controller or manager, but the server computer102can be configured to configure the virtual network functions112to act on the traffic (e.g., the packet134) in accordance with the cross-service virtual network function chain. In some embodiments, as will be explained in more detail herein, the packet134and/or other traffic can be labeled and/or can be routed with information that identifies the sites118, virtual machines120, and/or virtual network functions112to and/or through which the packet134and/or traffic is to be routed to provide the routing instructions114to the virtual network functions112. An ingress edge server126at a particular site118associated with a beginning of a cross-site virtual network function chain can also label the packet134to identify virtual network functions112at the sites118that will be used to provide functionality associated with the cross-service virtual network function chain. It should be understood that this example is illustrative, and therefore should not be construed as being limiting in any way.

As noted above, the server computer102can be configured to provide, to the edge devices (e.g., the ingress edge servers126and/or the egress edge servers128) labeling rules116. The labeling rules116can be used by the edge devices to configure labeling of the traffic (e.g., the packet134). Thus, for example, a packet134can arrive at an edge device such as, for example, the ingress edge server126A and the ingress edge server126A can be configured to label the packet134. In some embodiments, the ingress edge server126A can label the packet134by adding or editing the header of the packet134. In some embodiments, the header can be edited to include the route associated with the cross-service chain of virtual network functions112. Thus, the labeling rules116can instruct the edge devices (e.g., the ingress edge servers126and/or the egress edge servers128) regarding how the edge devices should label traffic such as the packet134and/or how to remove the labels after the packet134or other traffic has traversed the cross-service virtual network function chain. It should be understood that this example is illustrative, and therefore should not be construed as being limiting in any way.

To provide the routing as illustrated and described herein, a packet134can arrive at an edge device such as the ingress edge server126B (as shown inFIG. 1). The ingress edge server126B can label the packet134(e.g., by adding and/or editing the header to obtain a new header). The format of the header can be based on the routing instructions114and/or the labeling rules116, in various embodiments. The packet134can be routed to the first virtual network function112in the cross-service chain of virtual network functions112(also referred to herein as a “cross-service virtual network function chain”). As noted above, the site118(e.g., a controller or manager located at the site118and/or otherwise associated with the site118) can assign the specific virtual network function112to which the traffic is to be routed. Information that identifies the specific virtual network function112can be included in the header, if desired. In the example embodiment illustrated inFIG. 1, the packet134can be routed from the ingress edge server126B (by a forwarder124associated with the ingress edge server126B) to the virtual network function112B-A. It should be understood that this example is illustrative, and therefore should not be construed as being limiting in any way. As will be more clearly understood hereinbelow, all forwarding within a cross-site virtual network function chain can be done by a forwarder124. It should be understood that this example is illustrative, and therefore should not be construed as being limiting in any way.

After being routed to and/or through the virtual network function112B-A, the packet134can be routed by the forwarder124associated with the virtual network function112B-A to the forwarder124associated with the virtual network function112A-B. The forwarder124of the virtual network function112B-A can route the packet134to another site, e.g., the site118A as shown inFIG. 1. In some embodiments, the packet134can be routed to a next virtual network function112in the cross-service virtual network function chain.

In the illustrated example embodiment, the packet134can be routed to the virtual network function112A-B. The virtual network function112A-B can process the packet134and the packet134can then flow to a forwarder124associated with the virtual network function112A-B. The forwarder124can route the packet134to the egress edge server128A. The egress edge server128A can remove the labels (as in this example the flow through the cross-site virtual network function chain is finished). It should again be noted that the example shown inFIG. 1, wherein the packet134is routed to only two virtual network functions across only two sites118, is illustrative and therefore should not be construed as being limiting in any way. Cross-service virtual network function chains as illustrated and described herein can include two or more virtual network functions112over two or more sites118. In some embodiments, the header of the packet134can be modified by the egress edge server128A to remove the routing information associated with the cross-service virtual network function chain, though this is not necessarily the case. It should be understood that this example is illustrative, and therefore should not be construed as being limiting in any way.

As shown inFIG. 1, a cross-service chain of virtual network functions112(labeled “cross-service chain136” inFIG. 1) can schematically be shown as a list of all of the entities traversed by the packet134. In the illustrated embodiment shown inFIG. 1, the cross-service chain136lists the ingress edge server126B, the forwarder124(associated with the ingress edge server126B); the virtual network function112B-A, the forwarder124(associated with the virtual network function112B-A); the virtual network function112A-B, the forwarder124(associated with the virtual network function112A-B); and the egress edge server128A. It should be understood that this example is illustrative, and therefore should not be construed as being limiting in any way.

As shown inFIG. 1, the operating environment also can include a global event bus138. It can be appreciated that the concepts and technologies disclosed herein may need, require, or desire to exchange control plane information across the various entities involved in providing the cross-service chain of virtual network functions112. Thus, for example, the global event bus138can be used to support cross-site exchange of data and/or information. The global event bus138also can be configured to filter, restrict, and/or suppress some messages to prevent all recipients from being overwhelmed with messages. Thus, the global event bus138comprises hardware and/or software that can allow the exchange of messages and/or data between all entities involved in the cross-service chain of virtual network functions112, as well as functionality for determining what messages and/or information should (or should not) be shared among the various entities. It should be understood that this example is illustrative, and therefore should not be construed as being limiting in any way.

FIG. 1illustrates one server computer102, one network104, one requestor110, two sites118, two virtual machines120, two services122, and two forwarders124. It should be understood, however, that various implementations of the operating environment100can include zero, one, or more than one server computer102; zero, one, or more than one network104; zero, one, or more than one requestor110; zero, one, two, or more than two sites118; zero, one, two, or more than two virtual machines120; zero, one, two, or more than two services122; and zero, one, two, or more than two forwarders124. As such, the illustrated embodiment should be understood as being illustrative, and should not be construed as being limiting in any way.

Turning now toFIG. 2, aspects of a method200for creating cross-service chains of virtual network functions112in a wide area network will be described in detail, according to an illustrative embodiment. It should be understood that the operations of the methods disclosed herein are not necessarily presented in any particular order and that performance of some or all of the operations in an alternative order(s) is possible and is contemplated. The operations have been presented in the demonstrated order for ease of description and illustration. Operations may be added, omitted, and/or performed simultaneously, without departing from the scope of the concepts and technologies disclosed herein.

Thus, it should be appreciated that the logical operations described herein are implemented (1) as a sequence of computer implemented acts or program modules running on a computing system and/or (2) as interconnected machine logic circuits or circuit modules within the computing system. The implementation is a matter of choice dependent on the performance and other requirements of the computing system. Accordingly, the logical operations described herein are referred to variously as states, operations, structural devices, acts, or modules. These states, operations, structural devices, acts, and modules may be implemented in software, in firmware, in special purpose digital logic, and any combination thereof. As used herein, the phrase “cause a processor to perform operations” and variants thereof is used to refer to causing a processor of a computing system or device, such as the server computer102, to perform one or more operations and/or causing the processor to direct other components of the computing system or device to perform one or more of the operations.

For purposes of illustrating and describing the concepts of the present disclosure, the method200is described herein as being performed by the server computer102via execution of one or more software modules such as, for example, the controller106. It should be understood that additional and/or alternative devices and/or network nodes can provide the functionality described herein via execution of one or more modules, applications, and/or other software including, but not limited to, the controller106. Thus, the illustrated embodiments are illustrative, and should not be viewed as being limiting in any way.

The method200begins at operation202. At operation202, the server computer102can receive a chain request or other request for chaining of virtual network functions112. In some embodiments, the request received in operation202can be similar or even identical to the request108illustrated and described inFIG. 1. As explained with reference to the request108inFIG. 1, the request received in operation202can be received from hardware, software, and/or a combination thereof, which can be associated with one or more entities such as the requestor110. In some embodiments, the request received in operation202can define functionality desired in a cross-service virtual network function chain. In some other embodiments, the request received in operation202can identify specific virtual network functions112that should be traversed in accordance with the cross-service virtual network function chain. It should be understood that these examples are illustrative, and therefore should not be construed as being limiting in any way.

From operation202, the method200can proceed to operation204. At operation204, the server computer102can obtain network data and availability data such as the network data132shown inFIG. 1. The network data and availability data obtained in operation204can indicate, for example, a network topology, network resource availability, topology and availability associated with virtual network functions112, functionality associated with virtual network functions112, identifications of sites118, identifications of virtual machines120, identifications of services122, other information, combinations thereof, or the like. Thus, the network and availability data obtained in operation204can be used to identify virtual network functions112to be included in a cross-service virtual network function chain, availability associated with the virtual network functions112, site locations associated with the virtual network functions112, virtual machines120associated with the virtual network functions112, combinations thereof, or the like.

From operation204, the method200can proceed to operation206. At operation206, the server computer102can analyze the chain request received in operation202and the network data and availability data obtained in operation204. The server computer102can analyze the chain request received in operation202to identify two or more virtual network functions112that are to be included in a cross-service virtual network function chain to satisfy the chain request (or the requested or specified functionality associated with the chain request). It should be understood that the identification of the virtual network functions112can include identifying a type of virtual network function112and/or a service122, but not necessarily the actual virtual network function112as explained above. The server computer102can analyze the network data and the availability data to identify sites118that include virtual network functions112that can or will provide the requested functionality (or that are specified by the chain request), as well as to identify the virtual machines120and/or services122that include the type of virtual network functions112identified. Thus, in operation206the server computer102can determine how to satisfy the chain request as well as what sites118, virtual machines120, services122, and/or virtual network functions112are to be included in the cross-service virtual network function chain. It should be understood that this example is illustrative, and therefore should not be construed as being limiting in any way.

From operation206, the method200can proceed to operation208. At operation208, the server computer102can compute a high level route for the cross-service virtual network function chain that was requested by way of the chain request received in operation202. As explained herein, the computation of a “high level route” can include the identification of the sites118to and/or via which traffic associated with the chain is to be routed. According to various embodiments of the concepts and technologies disclosed herein, computation of the high level route can omit identification of the specific virtual network functions112and/or other entities associated with those virtual network functions112. Thus, the computation of operation208can include the identification of the sites118, but not necessarily the identification of the virtual machines120, the services122, and/or the virtual network functions112to and/or through which the traffic is to be routed if associated with the chain requested by way of the chain request received in operation202.

As explained above, the sites118and/or controllers, managers, and/or other entities associated with the sites118can be configured to identify the specific virtual machines120, services122, and/or virtual network functions112associated with the cross-service virtual network function chain. Thus, the high level route determined in operation208can be used to route traffic to a particular site118, and entities associated with and/or located at the particular site118can be configured to identify the specific virtual network functions112, virtual machines120, and/or services122as illustrated and described herein. It should be understood that this example is illustrative, and therefore should not be construed as being limiting in any way.

In some embodiments of the operation208, the server computer102also can determine and/or generate routing instructions114and/or labeling rules116. The routing instructions114and/or the labeling rules116can be based on the high level route generated in operation208, in some embodiments. For example, the routing instructions114can identify, for a specific cross-service virtual network function chain, that a packet134should go from Site A to Site B. It should be understood that this example is illustrative, and therefore should not be construed as being limiting in any way.

From operation208, the method200can proceed to operation210. At operation210, the server computer102can configure two or more edge devices such as, for example, the ingress edge servers126and/or the egress edge servers128. The server computer102can configure the edge devices to provide the functionality associated with the cross-service virtual network function chain. According to various embodiments, the server computer102can be configured to transmit the labeling rules116to the edge devices such as, for example, the ingress edge servers126and/or the egress edge servers128. In some embodiments, the server computer102can be configured to transmit the labeling rules116directly to the edge devices. In some other embodiments, the server computer102can be configured to transmit the labeling rules116directed to the edge devices, for example by routing labeling rules116to the edge devices via one or more network devices, or the like. Because the server computer102can be configured to transmit or communicate the labeling rules116to the edge devices in additional and/or alternative ways, it should be understood that these examples are illustrative, and therefore should not be construed as being limiting in any way.

From operation210, the method200can proceed to operation212. At operation212, the server computer102can configure two or more routing and/or forwarding elements associated with the edge devices and/or the virtual network functions112. The server computer102can configure the two or more forwarders124associated with the edge devices and/or the virtual network functions112to provide the functionality associated with the cross-service virtual network function chain. According to some embodiments, the server computer102can be configured to transmit, to the forwarders124, or directed to the forwarders124, the routing instructions114. The routing instructions114can inform the forwarders124how to route traffic (e.g., a packet134) when the traffic is associated with the cross-service virtual network function chain. It should be understood that in some embodiments, the local controller or manager can add additional routing instructions114(e.g., identifying the specific virtual network functions112at the sites118, etc.), and these routing instructions114can be provided to forwarders124as well to enable routing to the virtual network functions112. Thus, it can be appreciated that the routing instructions114may indicate, for example, that traffic should be routed to a first virtual network function112and from there to a second virtual network function112. Thus, the forwarders124can be configured by the server computer102(and/or the local manager or controller, etc.) to route traffic a particular way when the traffic is determined by the virtual network functions112to be associated with a cross-service virtual network function chain. It should be understood that this example is illustrative, and therefore should not be construed as being limiting in any way.

According to various embodiments of the concepts and technologies disclosed herein, the forwarding elements (e.g., the forwarders124) can be provided by modules hosted by virtual machines120located at the sites118; by modules included in the ingress edge servers126, the egress edge servers128, and/or the virtual network functions112; and/or otherwise provided by various hardware and/or software associated with the site118. The forwarders124can be instructed by the server computer102to route traffic associated with the cross-service virtual network function chain to an appropriate next hop (e.g., a virtual network function112, an ingress edge server126, a transport network or other part of the network104, or the like). Thus, in operation212the server computer102can instruct the forwarding elements regarding how traffic associated with the cross-service virtual network function chain should be routed. It should be understood that this example is illustrative, and therefore should not be construed as being limiting in any way.

From operation212, the method200can proceed to operation214. The method200can end at operation214.

Turning now toFIG. 3, aspects of a method300for labeling and routing traffic in a cross-service chain of virtual network functions in a wide area network will be described in detail, according to an illustrative embodiment. For purposes of illustrating and describing the concepts of the present disclosure, the method300is described herein as being performed by the ingress edge server126and/or a forwarder124associated with the ingress edge server126. It should be understood that additional and/or alternative devices and/or network nodes can provide the functionality described herein via execution of one or more modules, applications, and/or other software. Thus, the illustrated embodiments are illustrative, and should not be viewed as being limiting in any way.

The method300begins at operation302. At operation302, the ingress edge server126(or multiple ingress edge servers126) and associated forwarders124can receive routing instructions and labeling rules, e.g., the forwarders124associated with the ingress edge servers126can receive the routing instructions114illustrated and described inFIG. 1and ingress edge servers126can receive the labeling rules116illustrated and described with reference toFIG. 1. It can be appreciated that the routing instructions and labeling rules received in operation302by the ingress edge server126can be sent by the server computer102as illustrated and described above with reference to operation210of the method200illustrated inFIG. 2. Because the routing instructions and labeling rules can be sent at other times and/or by other devices, it should be understood that this example is illustrative and therefore should not be construed as being limiting in any way.

As explained above, the routing instructions and labeling rules received in operation302can be used to configure the ingress edge servers126and the forwarders124to recognize traffic as being associated with a cross-service virtual network function chain, to label the traffic, and/or to route the traffic. In particular, labeling rules can be used to inform the ingress edge servers126that traffic associated with a cross-service virtual network function chain should be expected and/or how to label traffic associated with the cross-service virtual network function chain. Similarly, the routing instructions can instruct the forwarders124regarding how to route traffic associated with the cross-service virtual network function chain. In various embodiments, the labeling rules can instruct the ingress edge servers126to label traffic (e.g., create or modify a header associated with a packet134), and the routing instructions can instruct the forwarders124regarding routing associated with the cross-service virtual network function chain and/or how to route a packet134or other traffic associated with the cross-service virtual network function chain. Because the ingress edge servers126can be instructed to label traffic associated with the cross-service virtual network function chain in additional and/or alternative ways, and because the forwarders124can be instructed to route traffic associated with the cross-service virtual network function in additional and/or alternative ways, it should be understood that these examples are illustrative, and therefore should not be construed as being limiting in any way.

From operation302, the method300can proceed to operation304. At operation304, the ingress edge server126can receive a packet such as the packet134. The packet134can be associated with a cross-service virtual network function chain. The packet134can be received with information that indicates the association with the cross-service virtual network function chain (e.g., a header of the packet134can indicate the relationship; other information provided with the packet134can indicate the relationship, or the like). Thus, the ingress edge server126can receive the packet134in operation304, and in some embodiments, the server computer102also can determine, in operation304or in other operations, that the packet134is associated with a cross-service virtual network function chain, though this is not explicitly labeled inFIG. 3. It should be understood that this example is illustrative, and therefore should not be construed as being limiting in any way.

From operation304, the method300can proceed to operation306. At operation306, the ingress edge server126can label the packet received in operation304, for example the packet134. The ingress edge server126can label the packet134by adding information to a header, by creating a header, by modifying or adding data to the packet134, by adding metadata to the packet134, and/or in other ways. According to various embodiments, the ingress edge server126can label the packet received in operation304by adding a header or modifying an existing header. It should be understood that this example is illustrative, and therefore should not be construed as being limiting in any way.

From operation306, the method300can proceed to operation308. After operation306, the packet134and/or other traffic associated with the cross-service virtual network function chain can flow to the forwarder124associated with the ingress edge server126(e.g., the ingress edge server126can process the traffic and then the traffic flows out of the ingress edge server126to the forwarder124). At operation308, the forwarder124can route the packet that was received in operation304and labeled in operation306. According to various embodiments, the forwarder124can use the routing instructions114received in operation302to route the packet received in operation304. In some other embodiments, the forwarder124can route the packet received in operation304based on the labeling completed in operation306(e.g., a new or modified header, etc.). Thus, in operation308, the forwarder124can route the packet received in operation304to a next virtual network function112associated with the cross-service virtual network function chain or another entity (e.g., to an egress edge server128, to another virtual network function112, or the like). It should be understood that this example is illustrative, and therefore should not be construed as being limiting in any way.

While operations304-308have been described as occurring at an ingress edge server126and a forwarder124at one site118, it should be understood that respective portions of the functionality illustrated and described herein with reference to operations304-308can be performed by various ingress edge servers126and/or various forwarders124that receive a packet associated with a cross-service virtual network function chain. Thus, it can be appreciated with reference toFIG. 1that operations304-308(or similar operations) can be performed by the ingress edge server126A, the ingress edge server126B, other ingress edge servers126, and various forwarders124. It should be understood that this example is illustrative, and therefore should not be construed as being limiting in any way.

From operation308, the method300can proceed to operation310. The method300can end at operation310.

Turning now toFIG. 4, aspects of a method400for routing traffic in a cross-service chain of virtual network functions in a wide area network will be described in detail, according to an illustrative embodiment. For purposes of illustrating and describing the concepts of the present disclosure, the method400is described herein as being performed by the forwarder124. It should be understood that additional and/or alternative devices and/or network nodes can provide the functionality described herein via execution of one or more modules, applications, and/or by other software and/or hardware including, but not limited to, one of the edge devices such as the ingress edge servers126, the egress edge servers128, the virtual network functions112, or other devices. Thus, the illustrated embodiments are illustrative, and should not be viewed as being limiting in any way.

The method400begins at operation402. At operation402, the forwarder124can receive a packet such as a packet134. In some embodiments, the forwarder124can receive the packet from an ingress edge server126, from a virtual network function112, from an egress edge server128, and/or from another device. Thus, for example, a packet received at operation402can be received after routing through a virtual network function112. It should be understood that this example is illustrative, and therefore should not be construed as being limiting in any way.

In some instances, a forwarder124associated with a virtual network function112may receive a packet flowing from a virtual network function112. Similarly, a forwarder124may receive a packet flowing from an ingress edge server126. In some other instances, a forwarder124may receive a packet flowing from an egress edge server128. Regardless of the source of the packet received in operation402, the forwarder124can be configured to route packets to various destinations. Because the packet received in operation402can be received from various entities, it should be understood that these examples are illustrative, and therefore should not be construed as being limiting in any way.

From operation402, the method400can proceed to operation404. At operation404, the forwarder124can forward the packet134to a destination such as, for example, a virtual network function112, an egress edge server128, another site118, or the like. In some instances, the forwarder124can analyze a header of the packet134and forward the packet134to a next hop in the cross-service chain of virtual network functions112. In some embodiments, for example, a forwarder associated with a virtual network function112can analyze a header or other information that describes routing of the traffic and route the traffic to another entity (e.g., a virtual network function112, an ingress edge server126, an egress edge server128, or other entity) in accordance with the header or other information. It should be understood that these examples are illustrative, and therefore should not be construed as being limiting in any way.

From operation404, the method400can proceed to operation406. The method400can end at operation406.

Turning now toFIG. 5, additional details of the network104are illustrated, according to an illustrative embodiment. The network104includes a cellular network502, a packet data network504, for example, the Internet, and a circuit switched network506, for example, a publicly switched telephone network (“PSTN”). The cellular network502includes various components such as, but not limited to, base transceiver stations (“BTSs”), Node-B's or e-Node-B's, base station controllers (“BSCs”), radio network controllers (“RNCs”), mobile switching centers (“MSCs”), mobile management entities (“MMEs”), short message service centers (“SMSCs”), multimedia messaging service centers (“MMSCs”), home location registers (“HLRs”), home subscriber servers (“HSSs”), visitor location registers (“VLRs”), charging platforms, billing platforms, voicemail platforms, GPRS core network components, location service nodes, an IP Multimedia Subsystem (“IMS”), and the like. The cellular network502also includes radios and nodes for receiving and transmitting voice, data, and combinations thereof to and from radio transceivers, networks, the packet data network504, and the circuit switched network506.

A mobile communications device508, such as, for example, a cellular telephone, a user equipment, a mobile terminal, a PDA, a laptop computer, a handheld computer, and combinations thereof, can be operatively connected to the cellular network502. The cellular network502can be configured as a 2G GSM network and can provide data communications via GPRS and/or EDGE. Additionally, or alternatively, the cellular network502can be configured as a 3G UMTS network and can provide data communications via the HSPA protocol family, for example, HSDPA, EUL (also referred to as HSDPA), and HSPA+. The cellular network502also is compatible with 4G mobile communications standards as well as evolved and future mobile standards.

The packet data network504includes various devices, for example, servers, computers, databases, and other devices in communication with one another, as is generally known. The packet data network504devices are accessible via one or more network links. The servers often store various files that are provided to a requesting device such as, for example, a computer, a terminal, a smartphone, or the like. Typically, the requesting device includes software (a “browser”) for executing a web page in a format readable by the browser or other software. Other files and/or data may be accessible via “links” in the retrieved files, as is generally known. In some embodiments, the packet data network504includes or is in communication with the Internet. The circuit switched network506includes various hardware and software for providing circuit switched communications. The circuit switched network506may include, or may be, what is often referred to as a plain old telephone system (POTS). The functionality of a circuit switched network506or other circuit-switched network are generally known and will not be described herein in detail.

The illustrated cellular network502is shown in communication with the packet data network504and a circuit switched network506, though it should be appreciated that this is not necessarily the case. One or more Internet-capable devices510, for example, a PC, a laptop, a portable device, or another suitable device, can communicate with one or more cellular networks502, and devices connected thereto, through the packet data network504. It also should be appreciated that the Internet-capable device510can communicate with the packet data network504through the circuit switched network506, the cellular network502, and/or via other networks (not illustrated).

As illustrated, a communications device512, for example, a telephone, facsimile machine, modem, computer, or the like, can be in communication with the circuit switched network506, and therethrough to the packet data network504and/or the cellular network502. It should be appreciated that the communications device512can be an Internet-capable device, and can be substantially similar to the Internet-capable device510. In the specification, the network104is used to refer broadly to any combination of the networks502,504,506. It should be appreciated that substantially all of the functionality described with reference to the network104can be performed by the cellular network502, the packet data network504, and/or the circuit switched network506, alone or in combination with other networks, network elements, and the like.

FIG. 6is a block diagram illustrating a computer system600configured to provide the functionality described herein for creating cross-service chains of virtual network functions in a wide area network, in accordance with various embodiments of the concepts and technologies disclosed herein. The computer system600includes a processing unit602, a memory604, one or more user interface devices606, one or more input/output (“I/O”) devices608, and one or more network devices610, each of which is operatively connected to a system bus612. The bus612enables bi-directional communication between the processing unit602, the memory604, the user interface devices606, the I/O devices608, and the network devices610.

The processing unit602may be a standard central processor that performs arithmetic and logical operations, a more specific purpose programmable logic controller (“PLC”), a programmable gate array, or other type of processor known to those skilled in the art and suitable for controlling the operation of the server computer. As used herein, the word “processor” and/or the phrase “processing unit” when used with regard to any architecture or system can include multiple processors or processing units distributed across and/or operating in parallel in a single machine or in multiple machines. Furthermore, processors and/or processing units can be used to support virtual processing environments. Processors and processing units also can include state machines, application-specific integrated circuits (“ASICs”), combinations thereof, or the like. Because processors and/or processing units are generally known, the processors and processing units disclosed herein will not be described in further detail herein.

The memory604communicates with the processing unit602via the system bus612. In some embodiments, the memory604is operatively connected to a memory controller (not shown) that enables communication with the processing unit602via the system bus612. The memory604includes an operating system614and one or more program modules616. The operating system614can include, but is not limited to, members of the WINDOWS, WINDOWS CE, and/or WINDOWS MOBILE families of operating systems from MICROSOFT CORPORATION, the LINUX family of operating systems, the SYMBIAN family of operating systems from SYMBIAN LIMITED, the BREW family of operating systems from QUALCOMM CORPORATION, the MAC OS, iOS, and/or LEOPARD families of operating systems from APPLE CORPORATION, the FREEBSD family of operating systems, the SOLARIS family of operating systems from ORACLE CORPORATION, other operating systems, and the like.

The program modules616may include various software and/or program modules described herein. In some embodiments, for example, the program modules616include the controller106and/or modules for providing functionality associated with the ingress edge servers126, the virtual network functions112, the egress edge servers128, the forwarders124, the virtual machines120, the services122, combinations thereof, or the like. These and/or other programs can be embodied in computer-readable media containing instructions that, when executed by the processing unit602, perform one or more of the methods200,300, and400described in detail above with respect toFIGS. 2-4and/or other functionality as illustrated and described herein. It can be appreciated that, at least by virtue of the instructions embodying the methods200,300,400, and/or other functionality illustrated and described herein being stored in the memory604and/or accessed and/or executed by the processing unit602, the computer system600is a special-purpose computing system that can facilitate providing the functionality illustrated and described herein. According to embodiments, the program modules616may be embodied in hardware, software, firmware, or any combination thereof. Although not shown inFIG. 6, it should be understood that the memory604also can be configured to store the request108, the routing instructions114, the labeling rules116, the network data132, the packet134, and/or other data, if desired.

The user interface devices606may include one or more devices with which a user accesses the computer system600. The user interface devices606may include, but are not limited to, computers, servers, personal digital assistants, cellular phones, or any suitable computing devices. The I/O devices608enable a user to interface with the program modules616. In one embodiment, the I/O devices608are operatively connected to an I/O controller (not shown) that enables communication with the processing unit602via the system bus612. The I/O devices608may include one or more input devices, such as, but not limited to, a keyboard, a mouse, or an electronic stylus. Further, the I/O devices608may include one or more output devices, such as, but not limited to, a display screen or a printer.

The network devices610enable the computer system600to communicate with other networks or remote systems via a network, such as the network104. Examples of the network devices610include, but are not limited to, a modem, a radio frequency (“RF”) or infrared (“IR”) transceiver, a telephonic interface, a bridge, a router, or a network card. The network104may include a wireless network such as, but not limited to, a Wireless Local Area Network (“WLAN”) such as a WI-FI network, a Wireless Wide Area Network (“WWAN”), a Wireless Personal Area Network (“WPAN”) such as BLUETOOTH, a Wireless Metropolitan Area Network (“WMAN”) such a WiMAX network, or a cellular network. Alternatively, the network104may be a wired network such as, but not limited to, a Wide Area Network (“WAN”) such as the Internet, a Local Area Network (“LAN”) such as the Ethernet, a wired Personal Area Network (“PAN”), or a wired Metropolitan Area Network (“MAN”).

Based on the foregoing, it should be appreciated that systems and methods for creating cross-service chains of virtual network functions in a wide area network have been disclosed herein. Although the subject matter presented herein has been described in language specific to computer structural features, methodological and transformative acts, specific computing machinery, and computer-readable media, it is to be understood that the concepts and technologies disclosed herein are not necessarily limited to the specific features, acts, or media described herein. Rather, the specific features, acts and mediums are disclosed as example forms of implementing the concepts and technologies disclosed herein.