METHOD AND APPARATUS FOR A NAMED NETWORK WITHIN AN AUTONOMOUS SYSTEM

An edge node or cache server of an autonomous system (AS) can process an interest for the autonomous system. During operation, the system can receive an interest for a content object, and determines whether the local node can satisfy the interest. If the local network node does not satisfy the interest, the system determines a label indicating network information for another AS node, attaches the label to the interest, and forwards the interest to the other AS node based on the label. Further, a route server of the AS processes an interest by determining a label that corresponds to the interest, and attaching the label to the interest. The route server then forwards the interest to the egress network node based on the label, which allows the egress network node to forward the interest to the remote autonomous system based on the attached label.

BACKGROUND

This disclosure is generally related to content centric networks (CCNs). More specifically, this disclosure is related to distributing CCN resources across various nodes of an autonomous system.

2. Related Art

The world's various Internet services are typically organized into Autonomous Systems (AS) that comprise various types of network devices. These network devices are oftentimes trusted devices, and each device type performs a specific set of operations for the network. For example, an Internet service provider (ISP) can provide Internet service to clients across a wide geographic area by deploying a plurality of routers, gateway devices, domain-name servers, and application servers.

Content-centric networks, on the other hand, include various different types of devices that function as stand-alone network nodes. Some CCN devices may be content producers (e.g., an image sensor, or a storage server), transport devices (e.g., routers, personal computers), or data consumers (e.g., a smartphone). For example, a typical CCN node is capable of processing interests by performing lookup operations on a pending interest table (PIT), a forwarding information base (FIB), and a CCN content store (CS). If the network node cannot satisfy the interest locally, the CCN node forwards the interest to a remote CCN node that itself will utilize a local PIT, FIB, and CCN data repository to process the interest. Once the interest flows to a CCN node that can satisfy the interest, this CCN node will return a content object that satisfies the interest to an interface from which it received the interest. The content object will follow the network path traversed by the interest in the reverse direction toward the CCN node that generated the interest.

If two CCN devices are deployed across different computer networks, interests and content objects would only flow between these two CCN devices if their ISP have deployed a CCN-compatible AS. Unfortunately, deploying typical CCN devices across an AS to implement a CCN-compatible AS can result in an undesirable amount of redundant resources across the various AS devices, as each CCN device comprises a local PIT, FIB, and CS.

SUMMARY

One embodiment provides an edge node or cache server of an autonomous system that processes an interest for the autonomous system. During operation, the system can receive an interest for a content object, and determines whether the local node can satisfy the interest. If the local network node does not satisfy the interest, the system determines a label indicating network information for a remote network node. The system then attaches the label to the interest, and forwards the interest to the remote network node based on the label.

In some embodiments, the label includes a multiprotocol label switching (MPLS) label which indicates a virtual link to the remote network node.

In some embodiments, the network node corresponds to an edge server of the autonomous system, and the system can perform a lookup in a pending interest table (PIT) to determine whether an entry exists in the PIT for the interest. Then, responsive to determining that an entry does not exist in the PIT for the interest, the system adds an entry in the PIT that maps a prefix of the received interest to at least one label obtained from the received interest.

In some embodiments, the system can receive a content object that satisfies the interest. Responsive to receiving the content object, the system can perform a lookup in the PIT, based on the content object's structured name, to obtain one or more labels for network nodes that are to receive the content object. The system then forwards the content object to each network node identified by the obtained labels.

In some embodiments, while performing the lookup operation in the PIT, the system performs a longest-matching prefix lookup between a structured name of the received interest and a name prefix of a PIT entry to identify a PIT entry with a longest matching prefix to the interest's structured name.

In some embodiments, while determining the label, the system performs a lookup operation on a cache-server routing table (CSRT), using the interest's structured name, to obtain a label for a cache server assigned to the interest's structured name.

In some embodiments, while performing the lookup operation in the CSRT, the system performs a longest-matching prefix lookup between the interest's structured name and a name prefix of a CSRT entry to identify a CSRT entry with a longest matching prefix to the interest's structured name.

In some embodiments, the local network node corresponds to an egress edge server of the autonomous system, and the system determines the label by obtaining the label from the interest, and wherein the label indicates a virtual port of the egress edge server for forwarding the interest to a remote autonomous system.

In some embodiments, the network node corresponds to a cache server. Also, if the system determines that the cache server does not store the content object, the system can perform a lookup operation on a route-server routing table (RSRT) to obtain the label that corresponds to a route server assigned to the interest's structured name.

In some embodiments, while performing the lookup operation in the RSRT, the system performing a longest-matching prefix lookup between the interest's structured name and a name prefix of a RSRT entry to identify a RSRT entry with a longest matching prefix to the interest's structured name.

In some embodiments, the network node corresponds to a cache server. Also, when the system receives the content object that satisfies the interest, the system can forward the content object to one or more of: a predetermined ingress edge server; and a predetermined cache server associated with the ingress edge server.

One embodiment provides a route server of an autonomous system that processes an interest for the autonomous system. During operation, the system can obtain an interest for a content object, and determines a label that corresponds to the interest. The label indicates network information for an egress network node of the local autonomous system, and also indicates a virtual port of the egress network node for disseminating the interest to a remote automated system. The system then attaches the label to the interest, and forwards the interest to the egress network node based on the label. This allows the egress network node to forward the interest to the remote autonomous system based on the attached label.

In some embodiments, the system determines the label by performing a lookup operation on a forwarding information base (FIB) using the interest's structured name as input.

In some embodiments, the label includes a multiprotocol label switching (MPLS) label which indicates a virtual link to the remote network node.

In some embodiments, if the system determines that the interest's structured name is not a globally routable name, the system generates a globally routable structured name for the interest, and attaches the globally routable structured name to the interest.

In some variations to these embodiments, while generating the globally routable name, the system determines a globally-routable prefix for the interest, and appends the interest's structured name to the globally-routable prefix.

DETAILED DESCRIPTION

Overview

Embodiments of the present invention provide a content-centric network (CCN) autonomous system (AS), which solves the problem of distributing various CCN processing tasks and resources across a plurality of computing devices. Specifically, the CCN AS can include a set of edge servers, cache servers, and routing servers that can use label switching (e.g., Multiprotocol Label Switching, or MPLS) to control the flow of interests and content objects within the AS.

The edge servers interface with external systems to process interests for content objects, and also maintain a pending interest table (PIT) to keep track of pending interests. The cache servers include a repository for caching content objects that are likely to be requested in the near future. A cache server can satisfy an interest by returning a corresponding content object directly to an AS node that has attached a label to the interest. The route servers, on the other hand, are optimized to perform fast lookup operations on a forwarding information base (FIB) to determine an outgoing “face” of the CCN AS to use to forward an interest to a remote system. The CCN “face” implements a virtual interface for the CCN AS, such that multiple device interfaces can handle data traffic for the CCN face. When an egress edge server of the CCN AS receives a content object that satisfies an interest, the egress edge server can forward the content object toward a corresponding ingress edge server, while bypassing the route servers.

In contrast, a typical CCN device can include a content store (CS), a FIB, as well as a PIT. Hence, an autonomous system that is realized using typical CCN devices would need to duplicate the full set of CCN tasks across all network nodes, which would make it difficult to scale the AS to process a larger throughput of interests, or to satisfy a larger range of structured names.

For example, in a typical CCN device, the FIB needs to be updated periodically, such as when the CCN device receives advertisements for new content. The CCN device uses the FIB to determine an interface that can be used to forward an interest to another network node. Hence, an AS that is implemented using typical CCN nodes would require all AS nodes to include a FIB to determine how to forward an interest toward an egress node of the AS. However, in embodiments of the present invention, not every CCN AS node needs to maintain a FIB. Some CCN AS nodes can be configured to determine how to forward an interest to a network outside the CCN AS (using a FIB), while other CCN AS nodes can be configured to process an interest internally (e.g., a cache server). Hence, CCN AS nodes that are not configured to route an interest to a remote system do not need to maintain or access a FIB.

Further, in a typical CCN device, the PIT needs to be updated at a high rate, such as when a new interest is received or when an old interest is satisfied. The PIT stores entries for interests that are to be matched against incoming content objects, and each entry is only removed when a match is made, or when an interest times out. In some cases, the timeout period can be relatively large, in the order of a few seconds. This can cause the CCN node to turn over several gigabytes of data in the PIT every few seconds, such as to add entries for new interests and to remove entries interests that have been satisfied or have expired. Hence, the PIT typically needs to be updated at twice the data throughput of the CCN device and can grow substantially large, which makes it impractical for an AS to maintain a PIT at every network node. In embodiments of the present invention, the CCN AS uses edge nodes to maintain a PIT for the AS, thereby relieving other types of CCN AS nodes of having to maintain a PIT.

In some embodiments, the distributed nature of the CCN AS system facilitates a system administrator to scale the CCN AS's performance. For example, as the number of client devices that disseminate interests increases, the system administrator can add additional edge servers to the CCN AS to increase the number of interests that the CCN AS can process. Further, the system administrator can also add additional cache servers to the CCN AS to improve the cache hit rate within the CCN AS. As another example, the system administrator can configure the CCN AS to handle a larger number of CCN routable prefixes by adding additional route servers to the CCN AS.

Exemplary CCN Autonomous System

FIG. 1illustrates an exemplary autonomous system100that facilitates distributing various interest-processing tasks across a plurality of computing devices of an autonomous system in accordance with an embodiment. Specifically, AS100can include a set of edge servers102, one or more clusters of cache clusters104, and a set of route servers106. Each set of edge servers (e.g., edge servers102.1) can correspond to a CCN face of AS100, and can include or be coupled to a storage device that stores a PIT for the face. Also, each set of route servers can be coupled to or include a storage device that stores a FIB for AS100.

In some embodiments, each cache cluster can correspond to one or more clusters of edge servers, and can include or be coupled to a storage device that implements a content store (CS) to cache content objects for the edge servers. Cache cluster104.1, for example, can correspond to edge servers102.1and102.2, and cache cluster104.2can correspond to edge servers102.3. Also, the AS servers can be distributed over a large geographic area, such as to deploy large server clusters near heavily populated locations.

Edge servers102.1, for example, can provide a face to DSL subscribers, and edge servers102.2can provide a face to corporate Internet subscribers, such that each individual edge server may provide Internet service to a certain geographic region. Edge servers102.3can provide a back-haul face to another AS, such as to one or more other Internet service providers.

Cache servers104can also be distributed over a geographic area, so that each individual cache server can host a content store for one or more edge servers. Cache servers104.1, for example, can cache content objects for edge servers102.1and102.2, and cache servers104.2can cache content objects for edge servers102.3.

In some embodiments, servers102,104, and106can establish network paths within AS100by generating labels (e.g., MPLS labels) and attaching these labels to data objects. Routing nodes in AS100can be MPLS routers, which use label switching to move data around AS100based on the labels attached to the data objects. For example, the labels can establish network paths between edge servers102and cache clusters104. An edge server102.1can generate a label that indicates cache cluster104.1, which AS100can use to forward an interest to cache servers104.1. Edge servers102.3can also use this label to return the corresponding content object to cache cluster104.1.

As another example, the labels can establish network paths between route servers106and edge servers102or cache servers104, which allows router servers106to propagate an interest through AS100toward an egress edge server. In some embodiments, route servers106can perform a lookup operation on a FIB to obtain a label for a CCN face, which indicates a virtual link to a remote AS. The label can indicate at least: a target device of AS100associated with the virtual link; a target interface of the device; and a virtual port that corresponds to a device at a remote AS. A route server of AS100can use the label to forward an interest toward a port of an egress node of AS100, which the egress edge server uses to forward the interest to the remote AS.

FIG. 2illustrates exemplary communications200between network devices of a CCN autonomous system in accordance with an embodiment. During operation, an interest can arrive at an ingress server204from a network202. Ingress edge server204can have a small local cache, which ingress server204can use to determine whether a content object that satisfies the interest is stored locally. If so, ingress server204can return the content object through an incoming “face” from which the interest was received.

Ingress server204can also perform a “similar match” against entries in a PIT to determine whether a similar interest has been requested recently. If a similar interest is currently pending, ingress server204modifies the PIT entry for the similar interest to add “face” information for interest222. Otherwise, ingress server204can generate an interest224by adding a label for ingress cache206to interest222, and forwarding interest224to ingress cache206.

In some embodiments, ingress server204can determine a label for a closest ingress cache206by performing a lookup operation on a cache server routing table (CSRT) that takes a CCN name prefix as input. The closest ingress cache can be determined based on a number of network hops, network latency, or any other distance metric now known or later developed. Ingress server204uses this label to forward interest224to ingress cache206.

Ingress cache206can include or be coupled to a content store (CS) which caches content objects for a plurality of edge servers. Ingress cache206performs a predicate match against the CS to determine whether a content object in the CS can satisfy interest224. Performing the predicate match can involve processing a set of rules that need to be satisfied for a match to occur. A rule can indicate, for example, comparison operations for min suffix components, max suffix components, exclude patterns, publisher public key ID, etc. In some embodiments, a cache server can avoid performing a predicate match to achieve faster processing, for example, by performing an exact match on the interest's structured name, or by performing an exact match on a fixed-length identifier derived from the interest's structured name.

If ingress cache206stores a content object234that satisfies interest224, ingress cache206can return a packet that includes content object234to ingress server204. Ingress server204then unbundles the packet to obtain content object234, identifies a PIT entry that corresponds to content object234to obtain a label, and sends content object234to a corresponding face from which ingress server202received interest212.

Otherwise, if ingress cache206does not store a content object that satisfies interest224, ingress cache206forwards interest224to a route server208. For example, ingress cache206can generate an interest226by appending a label that identifies route server208to interest224, and forwards interest226to route server208using label switching.

In some embodiments, ingress cache206determines which route server is to receive interest226by performing a lookup operation on a route server routing table (RSRT) that takes a structured name as input to determine a label for the route server (e.g., route server208). In some embodiments, the system performs the lookup operation on the RSRT by searching for an RSRT entry that has a longest prefix match to the structured name from interest224.

Router server208performs a lookup in a FIB, based on the structured name from interest226, to determine a label for an egress device of the AS that is to forward the interest outside the AS. Route server208then generates interest228by appending the label to interest226, and forwards interest228toward egress server210using the label obtained from the FIB.

Egress server210performs a lookup operation in a local PIT to determine whether an entry exists for interest228. If an entry exists, this entry can include labels for each ingress edge server and each ingress cache server that forwarded the interest toward the egress server. Egress server210can update this PIT entry to add the labels from interest228.

If an entry does not exist for interest228, egress server210obtains one or more labels that have been attached to interest228, and creates a PIT entry for interest228that includes these labels. Egress server210also extracts the initial interest from interest228to generate an interest230that does not include the attached labels, and forwards interest230out the egress port identified by the label obtained from the FIB at route server208. Interest230may be forwarded across a computer network214to reach a computing device that can satisfy interest230. Egress server210can also perform a lookup operation on a CSRT to obtain a label for a cache server (e.g., egress cache212), and forwards interest220to egress cache210using the label from the CSRT.

If egress server210receives a content object236that satisfies interest228(e.g., from network214or egress cache212), egress server210can search through the local PIT to obtain one or more labels that have been stored in association with interest228. Egress server then forwards content object236to each computing device of the AS that is identified by a label. For example, the PIT may include an entry for interest236that identifies ingress server204, as well as ingress cache206. Hence, after performing a lookup through the PIT, egress server210can forward content object236to both ingress server204and ingress cache204, based on the labels obtained from the PIT. For example, egress server210can forward content object236by generating a packet that includes labels for both ingress server204and ingress cache206, and forwarding the packet to ingress server204and ingress cache206using label switching.

In some embodiments, egress server210can add a label for egress cache212for each received interest, which causes egress server210to forward content objects received via network214to egress cache212. Hence, when egress server210receives content object236that satisfies interest230, egress server210can automatically cache content object236by forwarding content object236to egress cache212.

In some embodiments, if egress cache210can satisfy interest230(e.g., by obtaining content object236from a local content store), egress cache210can obtain a predetermined label for ingress cache206, and sends content object236to ingress cache206using this label. Ingress cache206then stores content object236in a local content store, and sends content object236to ingress server204. In some variations, egress cache210can send content object236to ingress server204, which forwards content object236to ingress cache206. Note that neither egress server210nor egress cache212needs to forward a content object to route server208.

Once ingress server204receives content object236, ingress server204performs a lookup operation on the local PIT to determine a face from which it received interest222, unbundles the packet to obtain content object236, and forwards content object236through the corresponding face.

Edge Servers and Cache Servers

In some embodiments, an autonomous system can process an interest at an edge server or at a cache server. An edge server can receive the interest from a remote system and/or can forward the interest to a remote system. For example, the edge server can include a small cache to store a small number of popular content objects, and can forward the interest to a remote device if the cache does not include a content object that satisfies the interest.

A cache server, on the other hand, can include a large data repository to store a significantly larger number of content objects that are likely to be requested in the near future. The cache server can function as an intermediary node within the AS that facilitates satisfying the interest internally within the AS, and complements one or more edge servers. If the AS requires a larger data cache to scale the AS's performance to a growing number of incoming interests, a system administrator can add additional cache servers to increase the number of content objects that can be cached, without having to increase the cache at an edge server.

FIG. 3presents a flow chart illustrating a method300for processing an interest at an edge server or a cache server of an autonomous system in accordance with an embodiment. During operation, the system can receive an interest for a content object (operation302), and determines whether the local network node can satisfy the interest (operation304).

If the system cannot satisfy the interest, the system determines address information for a remote network node that is to process the interest (operation306), and generates a label for the remote network node (operation308). The system then attaches the label to the interest (operation310), and forwards the interest to the remote network node using label switching (operation312). The remote network node can include a cache server, a route server, or an egress server of the CCN AS, and the address information can include a binary identifier for the remote network node (e.g., a binary prefix) or a network address for the remote network node (e.g., an internet protocol (IP) address). In some embodiments, if the local node is an egress server, the remote node can include a network node of a remote autonomous system.

If the system can satisfy the interest, the system obtains the content object from a content store based on the interest (operation314). The system also determines one or more remote network nodes that are to receive the content object (operation316), and forwards the content object to the one or more remote network nodes, for example, using label switching (operation318).

FIG. 4presents a flow chart illustrating a method400for managing a pending interest table (PIT) at an egress edge server of an autonomous system in accordance with an embodiment. During operation, the system performs a lookup operation on a PIT to search for an entry corresponding to the received interest (operation402). The system then determines whether a PIT entry exists for the interest (operation404). If so, the system obtains one or more labels from the interest (operation406), and modifies the PIT to include labels obtained from the interest (operation408). These labels include labels for network nodes that have forwarded the interest to the edge server, but do not include a label for the edge server itself. In some embodiments, during operation408, the system can also add a label for a cache server to the PIT entry.

However, if the PIT does not include an entry for the interest, the system creates an entry for the interest (operation410), and returns to operation406to insert labels from the interest into the PIT entry.

Edge Servers

In some embodiments, when an edge server receives an interest, the edge server searches for a closest cache server that can satisfy the interest, for example, by performing a longest-matching prefix lookup operation on a cache-server routing table (CSRT). The edge server also adds the cache server's MPLS label to an interest, which can be used by the AS routers to forward the interest to the cache server. Other nodes of the CCN AS can also use the label to return a content object directly to the cache server without requiring the content object to pass through a CCN route server.

FIG. 5presents a flow chart illustrating a method500for forwarding an interest at an edge server of an autonomous system in accordance with an embodiment. During operation, the system can perform a lookup operation on a CSRT to obtain a label for a cache server associated with the edge node (operation502). For example, the system can perform the lookup on the CSRT by comparing a binary prefix to determine a cache server that is to process the interest. The system then forwards the interest to the cache server using label switching (operation504), for example, by adding the cache server's MPLS label to the interest, and forwarding the interest to the cache server.

In some embodiments, the system determines whether the local edge node is an ingress node or an egress node to the interest (operation506). If the local edge node is an egress node to the interest, the system can forward the interest to a remote autonomous system. For example, the system can obtain and analyze a label from the interest to determine a port of the egress node to use to forward the interest to a remote network (operation508), and forwards the interest to the edge port (operation510).

After the CCN AS forwards the interest through a face toward a remote AS, the CCN AS can obtain a content object that satisfies the interest via this face. An egress edge server of the AS receives the content object via the face, and processes the content object, for example, to cache the content object and to forward the content object toward an ingress edge server that received the interest.

FIG. 6presents a flow chart illustrating a method600for receiving and processing a content object at an edge server of an autonomous system in accordance with an embodiment. During operation, the system can receive a content object (operation602), and performs a lookup operation on a PIT to search for an entry corresponding to the content object (operation604). The system then determines whether a PIT entry exists for the content object (operation606). If a PIT entry does not exist, the system can ignore the content object (operation608), or can perform any other remedial action.

However, if a PIT entry does exist for the content object, the system can obtain one or more labels from the PIT entry (operation610). These labels can correspond to, for example, a cache server, an ingress edge server, or a face of the CCN AS. The system then uses label switching on the content object to forward the content object to each remote network node identified by the obtained labels (operation612). For example, during operation612, an ingress edge server can add, to the content object, a label for a target face or server of the CCN AS. The CCN AS can then perform label switching on the content object to forward the content object to the target face or AS server.

In some embodiments, the edge server can include a small repository to cache content objects. Hence, after receiving the content object at operation602, the system may also determine whether the content object needs to be cached. If so, the system can store the content object in the edge node's cache.

Cache Servers

In some embodiments, each cache server advertises name prefixes for content objects that are to be cached by the cache server. For example, a cache server for a back-haul edge server can advertise the prefix “/” to ensure that all content objects can be cached at the cache server. On the other hand, a cache server that is only to cache content objects for a given service or for a set of DSL subscribers can advertise name prefixes associated with the intended service or DSL subscribers. Other AS servers can create an entry in a local CSRT that maps the advertised prefix to the cache server's label, which they can use to forward interests and content objects that satisfy the advertised prefix to the cache server.

The CSRT includes entries whose prefixes only need to be specific enough to divide a namespace between a set of cache servers. In some embodiments, the CSRT does not need to be name-aligned (does not need to respect name boundaries), as each CSRT entry does not need to map to complete name elements of a structured name (e.g., “/PARC/” in the name prefix “/PARC/Mosko”). Rather, each CSRT entry may indicate an arbitrary binary prefix, that may or may not indicate a complete name element. For example, the AS may include cache clusters that distributes the namespace “/” across four groups of cache servers. The CSRT can include entries for the binary prefixes “/00,” “/01,” “/10,” or “/11,” such that each binary prefix maps to a group of cache servers.

The CSRT is AS-wide, meaning that the CSRT can include entries for any cache server within the AS. In some embodiments, multiple cache servers can advertise the same prefix, for example, to implement redundancy across the AS. If multiple cache servers advertise a given prefix (e.g., “/” or “/01”), the AS server can forward an interest to the closest cache server. The AS server can determine which cache server is closest based on one or more metrics, such as a least number of hops, a lowest round-trip delay, etc.

When the cache server receives an interest, the cache server can either satisfy the interest locally, or can forward the interest to a route server. Also, when the cache server receives a content object, the cache server can cache the content object locally, and can forward the content object to one or more predetermined AS nodes.

FIG. 7presents a flow chart illustrating a method700for processing an interest at a cache server of an autonomous system in accordance with an embodiment. During operation, the system searches for a content object that satisfies the interest (operation702), and determines whether the content object exists at the local cache (operation704). If so, the system returns the content object (operation706).

However, if the content object does not exist at the local cache, the system can perform a lookup operation on a route-server routing table (RSRT) to obtain a label for a route server associated with the interest (operation708). The system then uses label switching to forward the interest to the route server (operation710). For example, the system can perform a longest-matching prefix lookup on the RSRT by comparing a binary prefix to determine a route server that is to process the interest. The system adds the route server's MPLS label to the interest, and performs label switching on the interest to forward the interest to the route server.

FIG. 8presents a flow chart illustrating a method800for receiving and processing a content object at a cache server of an autonomous system in accordance with an embodiment. During operation, the system can receive a content object at the cache server (operation802), and determines whether to cache the content object (operation804). If so, the system stores the content object in the local cache (operation806). The system may cache the content object, for example, if the content object does not already exist in the cache, and if the content object does not belong to a black-listed set of content objects (e.g., as determined by the content object's structured name, or any other attributes of the content object). The system may also decide to cache the content object if it belongs to a whitelisted set of content objects, such as content objects that belong to a predetermined name prefix.

The system can then determine whether the cache server is associated with an ingress node or an egress node for the content object (operation808). For example, the cache server is assigned to one or more edge nodes of the autonomous system that can receive interests, and/or that can receive content objects that satisfy an interest. The cache server is associated with an egress edge node if the corresponding edge node received the content object that satisfies an interest received from an ingress edge node. Further, the cache server is associated with an ingress edge node if the corresponding edge node received an interest that is satisfied by the content object that was received by an egress edge node.

If the cache server is associated with an ingress edge node, the system forwards the content object to its corresponding edge node. For example, the system can obtain network-addressing information for a predetermined ingress edge node to which the cache server corresponds (operation810), and uses label switching to forward the content object to the predetermined edge server (operation812).

If the cache server is associated with the egress edge node, the system forwards the content object to a cache server associated with the ingress edge node, without sending the content object to the route server. For example, the system can obtain network-addressing information for a predetermined cache server, which caches content objects for an ingress edge server (operation814). The system then uses label switching to forward the content object to the predetermined cache server (operation816).

Route Servers

In some embodiments, a route server of the CCN AS can communicate with route servers of a remote CCN system using a routing protocol to advertise one or more CCN name prefixes that can be satisfied by the local CCN AS. This routing protocol can be implemented using an Internet Protocol (IP), or using a CCN protocol (e.g., CCN SYNC). The route server can also receive advertisements for CCN name prefixes that can be satisfied by the remote CCN system, and creates entries in a local forwarding information base (FIB) to map the CCN name prefix to a face associated with the remote CCN system.

Each route server can advertise prefixes for one or more namespace that the route server can process. AS servers throughout the AS (e.g., an edge server) can create an entry in a local RSRT that maps the advertised prefix to the route server's label, which they can use to forward interests that fall under the advertised prefix to the route server. The RSRT includes entries whose prefixes only need to be specific enough to divide a namespace between a set of route servers. In some embodiments, the RSRT does not need to be name-aligned (does not need to respect name boundaries), as each RSRT entry does not need to map to complete name elements of a structured name (e.g., “/PARC/” in the name prefix “/PARC/Mosko”). Rather, each RSRT entry may indicate an arbitrary binary prefix, that may or may not indicate a complete name element. For example, the AS may include routing clusters that distributes the namespace “/” across four groups of route servers. The RSRT can include entries for the binary prefixes “/00,” “/01,” “/10,” or “/11,” such that each binary prefix maps to a group of route servers.

The RSRT is AS-wide, meaning that the RSRT can include entries for any route server within the AS. In some embodiments, multiple route servers can advertise the same prefix, for example, to implement redundancy across the AS. If multiple route servers advertise a given prefix (e.g., “/” or “/011”), the AS server can forward an interest to the closest route server. The AS server can determine which route server is closest based on one or more metrics, such as a least number of hops, a lowest round-trip delay, etc.

The route server can process an interest by performing a longest-matching prefix lookup operation on the FIB to identify a matching FIB entry that maps the interest's name to a label for an egress network node. The FIB lookup operation is boundary-aligned (respects name boundaries), to identify a label for an egress network node that has explicitly advertised a name prefix that satisfies the structured name. Hence, the boundary-aligned name prefixes in the FIB are likely to be longer, on average, than the binary name prefixes of the CSRT and the RSTR entries that do not need to respect name boundaries.

FIG. 9presents a flow chart illustrating a method900for processing an interest at a route server of an autonomous system in accordance with an embodiment. During operation, the system can receive an interest for a content object at the route server (operation902). To process the interest, the system performs a lookup operation on a forwarding information base (FIB), using the interest's structured name as input, to obtain a label that corresponds to the interest (operation904). The system then forwards the interest to an egress network node based on the label (operation906), for example, by adding the label to the interest, and performing label switching on the interest to forward the interest.

FIG. 10presents a flow chart illustrating a method1000for generating a globally routable name for an interest in accordance with an embodiment. During operation, the system selects an interest that is to be propagated to a remote autonomous system (operation1002). The system then determines whether the interest's structured name is a globally routable name (operation1004). If the interest's name is not globally routable, the system generates a globally routable structured name for the interest (operation1006). For example, if the system determines that the name prefix “/marc/” is not a globally-routable prefix, the system can generate a 32-bit label that facilitates achieving label switching.

The system then attaches the globally routable structured name to the interest (operation1008). For example, the system can attach the globally routable structured name by prepending this label to the name prefix to form:“/[32-bit label]/marc”

FIG. 11illustrates an exemplary apparatus1100that facilitates distributing various interest-processing tasks across a plurality of computing devices of an autonomous system in accordance with an embodiment. Apparatus1100can comprise a plurality of modules which may communicate with one another via a wired or wireless communication channel. Apparatus1100may be realized using one or more integrated circuits, and may include fewer or more modules than those shown inFIG. 11. Further, apparatus1100may be integrated in a computer system, or realized as a separate device which is capable of communicating with other computer systems and/or devices. Specifically, apparatus1100can comprise a communication module1102, an interest-processing module1104, a label-processing module1106, a content object processing module1108, and a data-forwarding module1110.

In some embodiments, communication module1102can receive interests and content objects from a remote CCN system. Interest-processing module1104can obtain an interest for a content object, and label-processing module1106can determine a label that corresponds to the interest. Communication module1102can forward the interest based on the label.

Further, communication module1102can receive a content object, and content object processing module1108can determine a label for an interest satisfied by the content object. Data-forwarding module1110can forward the content object to a CCN face from which the interest was received, based on the label.

FIG. 12illustrates an exemplary computer system1202that facilitates distributing various interest-processing tasks across a plurality of computing devices of an autonomous system in accordance with an embodiment. Computer system1202includes a processor1204, a memory1206, and a storage device1208. Memory1206can include a volatile memory (e.g., RAM) that serves as a managed memory, and can be used to store one or more memory pools. Furthermore, computer system1202can be coupled to a display device1210, a keyboard1212, and a pointing device1214. Storage device1208can store operating system1216, a CCN autonomous system1218, and data1230.

CCN AS1218can include instructions, which when executed by computer system1202, can cause computer system1202to perform methods and/or processes described in this disclosure. Specifically, AS1218may include instructions for receiving interests and content objects from a remote CCN system (communication module1220). Further, AS1218can include instructions for obtaining an interest for a content object (interest-processing module1222), and can include instructions for determining a label that corresponds to the interest (label-processing module1224).

AS1218can also receive a content object, and AS1218can include instructions for determining a label for an interest satisfied by the content object (content object processing module1226). AS1218can also include instructions for forwarding the content object to a CCN face from which the interest was received, based on the label (data forwarding module1228).

Data1232can include any data that is required as input or that is generated as output by the methods and/or processes described in this disclosure. Specifically, data1232can store at least a PIT, a FIB, and/or a content store.