FORWARDING INFORMATION BASE ARCHITECTURE FOR A HYBRID IP AND CONTENT CENTRIC NETWORK ROUTER
One embodiment provides a system that facilitates forwarding a mix of IP and CCN packets. During operation, the system determines a name which is a hierarchically structured variable length identifier comprising contiguous name components ordered from a most general level to a most specific level. The system is capable of processing packets based on a destination address. The system performs a hash of each name component. The system creates an entry in a first data structure for each hashed name component, wherein a respective entry indicates an index and a length of the index. The system maps, in a forwarding information base, a first key to one or more outgoing interfaces, wherein the first key is a concatenation of the indexes indicated in the created entries, thereby facilitating the system to process packets based on the packet name or on the destination address.
1 . A computer system comprising:
a processor; and
a storage device storing instructions that when executed by the processor cause the processor to perform a method, the method comprising:
determining a name which is a hierarchically structured variable length identifier comprising contiguous name components ordered from a most general level to a most specific level, wherein the computer system is capable of processing packets based on a destination address;
performing a hash of each name component;
creating an entry in a first data structure for each hashed name component, wherein a respective entry indicates an index and a length of the index; and
mapping, in a forwarding information base, a first key to one or more outgoing interfaces, wherein the first key is a concatenation of the indexes indicated in the created entries,
thereby facilitating the computer system to process packets based on the packet name or on the destination address.
2 . The computer system of claim 1 , wherein the respective entry indicates a final predetermined number of bytes of a respective name component, wherein the hash is a dual hash function, and wherein performing the hash further comprises:
in response to determining a collision in the first data structure, resolving the collision based on a cuckoo hash function or a collision avoidance table.
3 . The computer system of claim 1 , wherein the method further comprises:
generating the key by concatenating the indexes in a same order as the corresponding name components of the name.
4 . The computer system of claim 1 , wherein the forwarding information base is based on a Ternary Content Addressable Memory.
5 . The computer system of claim 1 , where the method further comprises:
receiving a packet which includes the name;
performing the hash of each name component;
performing a first lookup in the first data structure based on each hashed name component to obtain the indicated index for each hashed name component;
performing a second lookup in the forwarding information base based on a second key which is a concatenation of the indicated indexes, and further based on a longest prefix match which has a largest number of matching indexes of the key with indexes in the forwarding information base, to determine one or more outgoing interfaces for the packet; and
forwarding the packet to the determined one or more outgoing interfaces.
6 . The computer system of claim 5 , wherein performing the first lookup is further based on the last H bytes of each hashed name component and the last N bytes of the name component,
wherein H is a first predetermined number, and wherein N is a second predetermined number.
7 . The computer system of claim 6 , wherein obtaining the indicated index for a respective hashed name component further involves:
obtaining a valid tuple comprised of the index, the length of the index, and the last N bytes of the respective name component; and
determining that the last N bytes of the respective name component of the valid tuple match the last N bytes of the respective name component.
8 . A computer-implemented method, comprising:
determining, by a router, a name which is a hierarchically structured variable length identifier comprising contiguous name components ordered from a most general level to a most specific level, wherein the router is capable of processing packets based on a destination address;
performing a hash of each name component;
creating an entry in a first data structure for each hashed name component, wherein a respective entry indicates an index and a length of the index; and
mapping, in a forwarding information base, a first key to one or more outgoing interfaces, wherein the first key is a concatenation of the indexes indicated in the created entries,
thereby facilitating the computer system to process packets based on the packet name or on the destination address.
9 . The method of claim 8 , wherein the respective entry indicates a final predetermined number of bytes of a respective name component, wherein the hash is a dual hash function, and wherein performing the hash further comprises:
in response to determining a collision in the first data structure, resolving the collision based on a cuckoo hash function or a collision avoidance table.
10 . The method of claim 8 , further comprising:
generating the key by concatenating the indexes in a same order as the corresponding name components of the name.
11 . The method of claim 8 , wherein the forwarding information base is based on a Ternary Content Addressable Memory.
12 . The method of claim 8 , further comprising:
receiving a packet which includes the name;
performing the hash of each name component;
performing a first lookup in the first data structure based on each hashed name component to obtain the indicated index for each hashed name component;
performing a second lookup in the forwarding information base based on a second key which is a concatenation of the indicated indexes, and further based on a longest prefix match which has a largest number of matching indexes of the key with indexes in the forwarding information base, to determine one or more outgoing interfaces for the packet; and
forwarding the packet to the determined one or more outgoing interfaces.
13 . The method of claim 12 , wherein performing the first lookup is further based on the last H bytes of each hashed name component and the last N bytes of the name component,
wherein H is a first predetermined number, and wherein N is a second predetermined number.
14 . The method of claim 13 , wherein obtaining the indicated index for a respective hashed name component further involves:
obtaining a valid tuple comprised of the index, the length of the index, and the last N bytes of the respective name component; and
determining that the last N bytes of the respective name component of the valid tuple match the last N bytes of the respective name component.
15 . A non-transitory computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method, the method comprising:
determining, by a router, a name which is a hierarchically structured variable length identifier comprising contiguous name components ordered from a most general level to a most specific level, wherein the router is capable of processing packets based on a destination address;
performing a hash of each name component;
creating an entry in a first data structure for each hashed name component, wherein a respective entry indicates an index and a length of the index; and
mapping, in a forwarding information base, a first key to one or more outgoing interfaces, wherein the first key is a concatenation of the indexes indicated in the created entries,
thereby facilitating the computer system to process packets based on the packet name or on the destination address.
16 . The storage medium of claim 15 , wherein the respective entry indicates a final predetermined number of bytes of a respective name component, wherein the hash is a dual hash function, and wherein performing the hash further comprises:
in response to determining a collision in the first data structure, resolving the collision based on a cuckoo hash function or a collision avoidance table.
17 . The storage medium of claim 15 , further comprising:
generating the key by concatenating the indexes in a same order as the corresponding name components of the name.
18 . The storage medium of claim 15 , wherein the forwarding information base is based on a Ternary Content Addressable Memory.
19 . The storage medium of claim 15 , wherein the method further comprises:
receiving a packet which includes the name;
performing the hash of each name component;
performing a first lookup in the first data structure based on each hashed name component to obtain the indicated index for each hashed name component;
performing a second lookup in the forwarding information base based on a second key which is a concatenation of the indicated indexes, and further based on a longest prefix match which has a largest number of matching indexes of the key with indexes in the forwarding information base, to determine one or more outgoing interfaces for the packet; and
forwarding the packet to the determined one or more outgoing interfaces.
20 . The storage medium of claim 19 , wherein performing the first lookup is further based on the last H bytes of each hashed name component and the last N bytes of the name component,
wherein H is a first predetermined number, and wherein N is a second predetermined number, and
wherein obtaining the indicated index for a respective hashed name component further involves:
obtaining a valid tuple comprised of the index, the length of the index, and the last N bytes of the respective name component; and
determining that the last N bytes of the respective name component of the valid tuple match the last N bytes of the respective name component.