IP Library Patent Application 15297061
Patent Application
App. No. 15/297,061

FORWARDING INFORMATION BASE ARCHITECTURE FOR A HYBRID IP AND CONTENT CENTRIC NETWORK ROUTER

Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US None
App. No.
15/297,061
Abstract

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.

Claims (68)

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.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 14, 2017
From: PALO ALTO RESEARCH CENTER INCORPORATED
To: CISCO SYSTEMS, INC.
Reel/Frame 041714/0373 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 14, 2017
From: CISCO SYSTEMS, INC.
To: CISCO TECHNOLOGY, INC.
Reel/Frame 041715/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 20, 2016
From: HOLMBERG, ERIC A.
To: PALO ALTO RESEARCH CENTER INCORPORATED
Reel/Frame 040080/0062 →