Network routing table and packet routing method
First Claim
1. A routing table circuit for a router having one or more input ports for receiving a message having a destination address, the router having a plurality of output ports for transmitting the message, the routing table circuit comprising:
- one or more routing table memories to store a plurality of routing table arrays, said plurality of routing table arrays being arranged hierarchically in a plurality of levels, wherein each of said plurality of routing table arrays is associated with a predetermined subset of prefixes of said destination address, and has entries, said entries including a block default route pointer field to store a block default route pointer and a routing field, wherein said routing field stores a route pointer or a next level pointer pointing to one of said plurality of routing table arrays in a next level; and
a route engine to select said block default route pointer or said route pointer as a return route pointer based on said destination address, wherein said return route pointer determines one of said plurality of output ports for routing said message, said route engine to access said plurality of routing table arrays in said plurality of levels.
5 Assignments
0 Petitions
Accused Products
Abstract
A routing table circuit for a router has one or more input ports and output ports for message communication. In the routing table circuit, one or more routing table memories store a plurality of routing table arrays. The routing table arrays are arranged hierarchically in levels, and each routing table array is associated with a predetermined subset of prefixes. Each routing table array has entries. The entries include a block default route pointer field to store a block default route pointer, if any, and a routing field. The route engine may access any level of table array by using a next level route pointer stored in the routing field. Using the block default route and the routing field, the present invention further reduces the number of memory accesses and the update cost for route insertion and deletion by identifying and skipping elements that do not require route updating.
119 Citations
26 Claims
-
1. A routing table circuit for a router having one or more input ports for receiving a message having a destination address, the router having a plurality of output ports for transmitting the message, the routing table circuit comprising:
-
one or more routing table memories to store a plurality of routing table arrays, said plurality of routing table arrays being arranged hierarchically in a plurality of levels, wherein each of said plurality of routing table arrays is associated with a predetermined subset of prefixes of said destination address, and has entries, said entries including a block default route pointer field to store a block default route pointer and a routing field, wherein said routing field stores a route pointer or a next level pointer pointing to one of said plurality of routing table arrays in a next level; and
a route engine to select said block default route pointer or said route pointer as a return route pointer based on said destination address, wherein said return route pointer determines one of said plurality of output ports for routing said message, said route engine to access said plurality of routing table arrays in said plurality of levels. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A routing table circuit for a router having an input port for receiving a message having a destination address, said router having a plurality of output ports for transmitting said message, said routing table circuit comprising:
-
one or more routing table memories to store a plurality of routing table arrays to provide a return route pointer based on plurality of said destination address, said plurality of routing table arrays being arranged hierarchically in a plurality of levels, wherein each of said plurality of routing table arrays is associated with a predetermined subset of bits of the destination address, and have a plurality of elements, said plurality of elements including a block default route pointer field to store a block default route pointer and a route pointer field to store a longest-matching route pointer and a next-table pointer field to store a next level pointer to one of said plurality of routing table arrays in a next level; and
a route engine to select said block default route pointer or said longest-matching route pointer as a return route pointer based on said destination address, wherein said return route pointer is used to determine one of said plurality of output ports for routing said message, said route engine to access one of said plurality of routing table arrays in said next level. - View Dependent Claims (16, 17)
-
-
18. A router comprising:
-
a plurality of input ports that receive a message having a destination address;
a plurality of output ports that output said message based on a return route pointer;
a routing table circuit to receive said message having said destination address, including;
one or more routing table memories to store a plurality of routing table arrays, wherein said plurality of routing table arrays are arranged hierarchically in a plurality of levels, wherein each of said plurality of routing table arrays is associated with a predetermined subset of prefixes of said destination address, and have entries, said entries including a block default route pointer field to store a block default route pointer and a routing field to store a route pointer or a next level pointer to one of said plurality of routing table arrays in a next level; and
a route engine to select said block default route pointer or said route pointer as said return route pointer based on said destination address, wherein said return route pointer determines one of said plurality of output ports for routing said message, said route engine to access said plurality of routing table arrays in said plurality of levels. - View Dependent Claims (19)
-
-
20. A method of determining an output port for a message having a destination address for a router having a plurality of routing table arrays arranged hierarchically including at least a first level routing table array and a second level routing table array, said plurality of routing table arrays having elements, said method comprising:
-
receiving said message;
determining a first index into said first level routing table array based on at least a first subset of said destination address;
accessing said first level routing table array based on said first index, said first level routing table array having a first plurality of elements, where said first plurality of elements include a first block default route pointer field to store a first block default route pointer and a first routing field to store a first route pointer or a first next level pointer, said first level routing table comprises a first tag field, said first tag field to indicate whether to select said first block default route pointer or said first route pointer as a return route pointer, said first tag field to indicate whether said first routing field contains said first next level pointer;
selecting said block default route pointer as said return route pointer based on said first tag field;
selecting said first route pointer based on said first tag field;
determining a second index into said second level routing table array based on said first tag field and at least a second subset of said destination address;
accessing said second level routing table array based on said second index, said second level routing table array having a second plurality of elements including a second block default route pointer field to store a second block default route pointer and a second routing field to store a second route pointer and a second next level pointer, said second level routing table array further including a second tag field to indicate whether to select said second block default route pointer or said second route pointer as said return route pointer, said second tag field to indicate whether said second routing field contains said second next level pointer;
selecting said second block default route pointer from said second level routing table array as said return route pointer based on said second tag field; and
selecting said second route pointer of said second level routing table array based on said second tag field. - View Dependent Claims (21)
-
-
22. A method of adding a route to a routing table, comprising:
-
receive a new route pointer associated with a new route destination address including a new route prefix and a new route prefix length;
allocate a first level routing table, and allocate a second level routing table when the new route prefix length exceeds a first predetermined threshold, the first predetermined threshold specifying a number of bits of the destination address associated with the first level routing table, the first and second level routing tables having elements, the elements including a block default route field to store a block default route, if any, and also having a routing pointer field to store a routing pointer selected from the group consisting of (A) a route pointer and (B) a next level pointer;
determine a first particular element of the first level routing table associated with the new route destination address;
store a particular next level pointer in the routing pointer field of the particular element;
determine a second particular element of the second level routing table associated with the new route destination address;
store the new route pointer in the routing field of the second particular element; and
update the block default routes for a subsequent subset of elements of the second routing table based on the new route prefix length. - View Dependent Claims (23, 24, 25)
-
-
26. A method of moving entries in a routing table, comprising:
-
receive a first new route pointer associated with a first new route destination address including a first new route prefix and a first new route prefix length;
allocate a first level routing table, the first new route prefix length being less than a first predetermined threshold, the first predetermined threshold specifying a number of bits of the destination address associated with the first level routing table, the first routing table having first table elements, the first table elements including a block default route field to store a block default route, if any, and also having a routing pointer field to store a routing pointer selected from the group consisting of (A) a route pointer and (B) a next level pointer;
determine a first particular element of the first level routing table associated with the first new route destination address;
store the first new route pointer in a routing field of the first particular element;
update block default routes for a subsequent subset of elements of the first routing table with the first new route pointer based on the first new route prefix length;
receive a second new route pointer associated with a second new route destination address including a portion of the first new route prefix and a second new route prefix length being longer than the first new route prefix length, wherein the second new route prefix length is greater than the first predetermined threshold;
allocate a second level routing table, the second level routing table having second table elements, the second table elements including a block default route field to store a block default route, if any, and also having a routing pointer field to store a routing pointer selected from the group consisting of (A) a route pointer and (B) a next level pointer;
store a next table pointer in the routing field of the first particular element;
determine a second particular element of the second level routing table associated with the second new route destination address;
store the second new route pointer in a routing field of the second particular element;
store the first new route pointer in a routing field of elements of the second level routing table that precede the second particular element;
store the first new route pointer in a default block route field for a second through last element of the second level routing table; and
update block default routes for a subsequent subset of elements of the second level routing table with the second new route pointer based on the second new route prefix length.
-
Specification