The present application relates to techniques for handling source-routed content in communication networks.
Nodes in a computer network exchange formatted data units referred to as packets. Packets may carry a content payload. In a controlled network (or subnet), central routing of traffic can be employed. A source node is a node that is either the source of the data to be transmitted or an ingress node in a controlled network segment through which the data packets enter.
Source routing is a routing method where at least a portion of the route that a packet takes through the network is controlled by the source node. Typically, the source node embeds the route as control information in a header of the packet. This may be done by including a list of network addresses constituting the path in the packet header. The source node then forwards the packet along a first hop of the route. When a node (other than a destination node) receives a packet, the node determines the next hop of the route by examining the control information, and then forwards the packet along the next hop. Alternatively, in place of a list of network addresses, the source route can include a node-by-node list of egress ports. A node in the route will receive the packet, examine the associated source route and determine based on the source routing instructions which output port to forward the packet through.
It is possible for a node that receives a packet to act as a cache by locally storing the content in the packet's content payload. Content distribution networks are an example of networks where nodes may act as caches. In a source-routed network, packets received by a caching node are typically both stored by the caching node and forwarded along the route towards the packet's destination(s). The nodes that ace as caching nodes are typically determine a priori and the designated nodes are configured to cache content in advance through the use of an out-of-band control message (e.g., a message sent through a control plane). The configuration of the node may be static or dynamic and may be specific to particular content flows. Subsequently, by serving content from the cache, a node may avoid having to request the content from another node, for example from a node where the content originated.
In one aspect, there is provided a method at a receiving node. The method involves receiving a data transmission including control information and a content payload, performing an action in response to determining that the control information includes an instruction to execute the action, and forwarding the content payload in accordance with the control information.
Optionally, the instruction includes an indication for the receiving node to cache the content payload. Performing the action includes caching the content payload in a cache at the receiving node.
Optionally, performing the action also includes determining a label for the content payload from the control information. Caching the content payload includes caching the content payload for retrieval by the label.
Optionally, the control information also includes a field specifying a caching expiry time. The method also includes removing the content payload from the cache after the caching expiry time.
Optionally, the control information also includes a command specified in a command field. Performing the action includes performing the command.
Optionally, the command includes an instruction to flush a cache at the receiving node.
Optionally, the command includes an instruction to transmit statistics gathered by the receiving node to another node.
Optionally, the control information also includes metadata in a metadata field. The metadata specifies at least one of parameters for the command or data required to perform the command. Performing an action dictated by the control information includes performing the command as specified by the metadata.
Optionally, the command includes an instruction to communicate to another node whether a content item is cached at the receiving node. The metadata identifies the another node and the content item.
Optionally, the command includes an instruction to replace a first content item cached at the receiving node with a second content item downloaded from a content location. The metadata identifies the first content item, the second content item, and the content location.
Optionally, the command includes an instruction to run a program local to the receiving node. The metadata identifies the program.
Optionally, the command includes an instruction to execute a script. The metadata encodes the script.
Optionally, determining that the control information includes an instruction to execute the action involves determining that the instruction is directed to the receiving node.
Optionally, the control information includes at least one Internet Protocol (IP) address.
Optionally, the control information includes at least one network segment identifier.
Optionally, the control information includes at least one outbound port.
In another aspect, there is provided a method at a source node involving at least one of determining or receiving a route through nodes of a network beginning with the source node, and a specified subset of the nodes for performing an action. The method also involves transmitting a data transmission including a content payload, and control information including an instruction directed to the subset of the nodes to execute the action.
Optionally, the route includes a multicast tree.
Optionally, the control information also includes an encoding of the multicast tree.
In still another aspect, there is provided a network node including an inbound network interface configured to receive a data transmission. The data transmission includes control information and a content payload. The network node also includes a processor configured to perform an action in response to determining that the control information includes an instruction to execute the action. The network node also includes an outbound network interface configured to forward the content payload in accordance with the control information.
Optionally, the processor is also configured to perform the action in response to determining that the instruction is directed to the network node.
In yet another aspect, there is provided a source network node including an inbound network interface and a processor. The inbound network interface is configured to receive or the processor is configured to determine a route through nodes of a network beginning with the source network node, and a specified subset of the nodes for performing an action. The source network node also includes an outbound network interface configured to transmit a data transmission including a content payload and control information including an instruction directed to the subset of the nodes to execute the action.
Embodiments of the invention will be described in greater detail with reference to the accompanying drawings, in which:
It should be understood that the set of communication links shown in
The multicast tree from source node 110 is generated based on knowledge of the topology of network 100. In some embodiments, the multicast tree is generated by a central network controller (not shown) and then communicated to source node 110. In other embodiments, the multicast tree is generated by source node 110.
To transmit content generated at source node 110 to the nodes of network 100 using source routing, source node 110 creates a packet having a header and a payload. The payload of the packet contains at least a portion of the content. Source node 110 also encodes the multicast tree into control information associated with the packet. The control information is typically stored in the packet header. That is, the packet header will typically include routing information consisting of the sequence of hops the packet should follow to its destinations. It should be understood that in some cases the packet is to be forwarded to a single destination, and in other cases the packet is to be forwarded to multiple destinations. The encoded sequence includes at least one next hop to take for each node along the route to the packet's destinations. For replication points of the multicast tree, more than one next hop is included. Source node 110 transmits the packet along the first hops indicated in the packet header. Each subsequent node that receives the packet forwards the packet to the next hops indicated in the packet header. In some embodiments, before forwarding the packet to the next hops indicated in the packet header, the forwarding node deletes hops from the packet header which are no longer necessary, i.e., hops along which the packet has already been forwarded.
Content transmitted by source node 110 may be cached at other nodes so that future requests for the content can be served from those other nodes. In some embodiments, during generation of the multicast tree, a set of nodes 120a, 120b, 120c are identified at which content is to be cached. By using multicast source routed packets to distribute content to nodes in a network for caching, the network utilization involved in distributing the content to the nodes where it is to be cached may in some cases be reduced in comparison to other methods of distributing content to network nodes for caching. For example, by using multicast source routed packets, network utilization may be reduced in comparison to transmitting the content for caching from source node 110 in a series of individual packets to each of the set of nodes 120a, 120b, 120c. This is because when the content from source node 110 is transmitted in a series of individual packets to nodes 120a, 120b, 120c, some of the individual packets might traverse some of the same network communication links, which may involve more network traffic.
In addition to specifying the forwarding path, the header can now include a caching flag as shown in
It should be understood that the illustrated caching flag “√” is intended merely as an illustrative symbol. Another symbol may be used as the action indicator representing a caching flag in the encoding. Various other ways of providing action indicators associated with particular nodes are possible. For example, in some embodiments, the action indicators in the encoding may consist of a list of nodes identified by network addresses that should cache a packet's content. More generally, anything that can identify which nodes should cache the packet's content can be used as action indicators in the encoding.
More generally, action indicators may be provided in packet headers to direct specific receiving nodes to perform a variety of actions, not just caching. For example, a particular flag may be included in a packet header to direct a receiving node to flush its cache. In another example, a particular flag may be included in a packet header to direct a receiving node to transmit statistics gathered by the receiving node to another predetermined node. In some embodiments, more than one type of action indicator, such as more than one type of flag, each indicating a different action to be performed by a receiving node, is potentially included in a packet header. In an embodiment, a bitfield is included to direct a receiving node to perform particular actions, where each bit in the bitfield corresponds to one particular action. For example, an 8-bit bitfield may be used to direct receiving nodes to perform any combination of 8 particular actions. A receiving node (to which the bitfield is directed) performs the particular actions for which corresponding bits in the bitfield are set to 1.
In some embodiments, command flags, command fields, and metadata fields can be included in the encoded multicast tree as illustrated in
The command and metadata fields can be used to instruct particular nodes in the distribution path to perform a variety of functions. In one embodiment, the command field contains a request to set the cache expiry time for the receiving node, and the metadata field specifies the cache expiry time. When cached items have remained in the node's cache for the specified cache expiry time, the node removes the cached items from the cache. In another embodiment, the command field contains a query about the availability of a content item in the node's cache. The metadata field can be used to provide a content identifier. Upon receipt of this instruction, the node determines if the identified content is cached and sends the result to a specified node (e.g., the source node). In another embodiment, the command field contains an instruction to replace cached content with content specified in the metadata field. In another embodiment, the command field contains an instruction to run a local program at the receiving node, and the metadata field identifies the program to be executed. In another embodiment, the command field contains an instruction to execute a script provided in the metadata field.
As explained above with respect to
Alternatively, as explained above with respect to
In the embodiments described above in detail, it is assumed that the type of source routing being used is multicast routing. In another embodiment, unicast routing is employed. Unicast routing specifies a route from a single source node to a single destination node. In some embodiments, unicast routes are encoded in packet headers in the same way as the multicast routes described above with respect to
The route through the network used for source routing is determined by a network entity having knowledge of the network topology and sufficient processing resources to determine routes. In some embodiments, the network entity determining the route is a part of a network management system. In some embodiments, the network entity determining the route is a network controller, such as a Software Defined Network Controller. In some embodiments, the network entity determining the route is a node such as the source node.
In some embodiments, the network entity also determines a subset of nodes along the route for executing an action. For example, the network entity may determine a subset of nodes along the route that should cache a content item. In some embodiments, the steps of determining the route and determining the subset of nodes are performed in an opposite order to the order described above. That is, the network entity first determines a subset of nodes in the network that are to be used for caching the content item, and then subsequently determines a route through the network beginning with a source node, the route including at least the subset of nodes that are to be used for caching the content item. In some embodiments, different network entities may determine the route through the network and the subset of nodes along the route for executing the action.
The network node 500 of
In some embodiments, a non-transitory computer readable medium comprising instructions for execution by a processor may be provided to control the operation of processor 530 in
The previous description of some embodiments is provided to enable any person skilled in the art to make or use an apparatus, method, or processor readable medium according to the present disclosure. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles of the methods and devices described herein may be applied to other embodiments. Thus, the present disclosure is not intended to be limited to the embodiments shown herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.