Route lookup engine
First Claim
Patent Images
1. A route lookup engine comprising:
- an IP lookup table memory including at least one trie for at least one network;
a lookup controller in communication with said IP lookup table memory and capable of searching said IP lookup table memory to obtain a next hop index; and
a forwarding processor interface in electrical communication with said lookup controller, said forwarding processor interface providing a search key to said lookup controller for said lookup controller to begin searching said IP lookup table, said forwarding processor interface receiving said next hop index from said lookup controller.
10 Assignments
0 Petitions
Accused Products
Abstract
A Route Lookup Engine (RLE) for determining a next hop index is disclosed. The RLE receives a lookup key and performs a multi-bit trie search with prefix expansion and capture of a variable stride trie. The data that the RLE returns comprises the next hop information and status flags. The RLE uses a compact, field reusable data structure. The RLE performs both unicast and multicast IP address lookups on Virtual Private Networks. The RLE uses separate indexing and forwarding memories. The upper bound of the search time for the RLE is fixed regardless of the route table size.
-
Citations
21 Claims
-
1. A route lookup engine comprising:
-
an IP lookup table memory including at least one trie for at least one network;
a lookup controller in communication with said IP lookup table memory and capable of searching said IP lookup table memory to obtain a next hop index; and
a forwarding processor interface in electrical communication with said lookup controller, said forwarding processor interface providing a search key to said lookup controller for said lookup controller to begin searching said IP lookup table, said forwarding processor interface receiving said next hop index from said lookup controller. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A method for operating a route lookup engine comprising steps of:
-
receiving a route lookup request;
performing a route lookup comprising the steps of;
determining if the lookup is the first one for said request;
using current block data for said request when the lookup is the first lookup for said request, using prior block data when the lookup is not the first lookup for said request;
determining if said block data indicates a leaf, and when said block data does not indicate a leaf performing the steps of;
providing a route table lookup address comprising a route lookup engine root from said block data plus an address comprising a zero bit concatenated with a destination address concatenated with a source address minus the current order data from said block data;
performing a read from said lookup table, said read providing new block data;
setting the current order data to the present current order data plus the order data from the new block data;
returning to said step of determining if the lookup is the first one for said request;
performing the following steps when said block data does indicate a leaf;
determining if the indirect bit is set in said block data and when said indirect bit is set performing the steps of;
providing a route table lookup address comprising a route table lookup engine route from said block data;
performing a read from said lookup table, said read providing new block data;
storing results if said indirect bit does not equal a one and the type bit does not equal node; and
performing the step of storing results when said indirect bit is not set. - View Dependent Claims (16, 17, 18, 19, 20)
-
-
21. A method for operating a route lookup engine comprising the steps of:
-
receiving a route lookup request;
performing a route lookup comprising the steps of;
determining if the lookup is the first one for said request;
using current block data for said request when the lookup is the first lookup for said request, using prior block data when the lookup is not the first lookup for said request;
determining if said block data indicates a leaf, and when said block data does indicate a leaf performing the steps of;
determining if an indirect bit is set in said block data and when said indirect bit is set performing the steps of;
providing a route table lookup address comprising a route table lookup engine route from said block data;
performing a read from said lookup table, said read providing new block data;
storing results if said indirect bit does not equal a one and the type bit does not equal node; and
performing the step of storing results when said indirect bit is not set.
-
Specification