SEPARATION OF DATA AND CONTROL IN A SWITCHING DEVICE
First Claim
1. A method of looking up a key associated with a packet to determine a route through a routing device comprising:
- upon receipt of the key, forward traversing one or more nodes which make up a trie stored in a memory by evaluating at each node traversed one or more bits in the key as indicated by a bits-to-test indicator associated with each node, a value of the bits in the key determining a path traversed along the trie;
locating an end node in the trie, the end node having a route;
comparing the route to the key;
if they match, outputting destination information associated with the end node to guide the transfer of the packet through the routing device; and
if they do not match, traversing the trie backwards to locate a best match for the key.
0 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus for switching a data packet between a source and destination in a network. The data packet includes a header portion and a data portion. The header portion includes routing information for the data packet. The method includes defining a data path in the router comprising a path through the router along which the data portion of the data packet travels and defining a control path comprising a path through the router along which routing information from the header portion travels. The method includes separating the data path and control path in the router such that the routing information can be separated from the data portion allowing for the separate processing of each in the router. The data portion can be stored in a global memory while routing decisions are made on the routing information in the control path.
29 Citations
11 Claims
-
1. A method of looking up a key associated with a packet to determine a route through a routing device comprising:
-
upon receipt of the key, forward traversing one or more nodes which make up a trie stored in a memory by evaluating at each node traversed one or more bits in the key as indicated by a bits-to-test indicator associated with each node, a value of the bits in the key determining a path traversed along the trie; locating an end node in the trie, the end node having a route; comparing the route to the key; if they match, outputting destination information associated with the end node to guide the transfer of the packet through the routing device; and if they do not match, traversing the trie backwards to locate a best match for the key. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method of routing a packet through a switch comprising:
-
upon receipt of the packet, extracting a key from the packet; forward traversing a trie by evaluating at each node one or more bits in the key as indicated by a bits-to-test indicator associated with each node, values of the bits in the key located at a position indicated by the bits-to-test indicator determining a path traversed along the trie at each node; locating an end node in the tree, the end node having a route; comparing the route to the key; if they match, retrieving destination information associated with the end node; if they do not match, traversing the trie backwards to locate a best match for the key having a route and destination information associated therewith, and routing the packet through the switch according to the destination information.
-
-
10. A method of inserting a route in a route table where the route table is stored as a trie in a memory of a routing device, the route table defining a path by which a packet is transferred through the routing device, the method comprising:
-
traversing the trie to determine an insertion point; determining if the insertion point has an associated parent node and sibling node in the trie; if so, creating a multi-node from the parent, sibling and the route including setting one or more child pointers in the multi-node to indicate a node directly beneath the insertion point; storing the multi-node in the memory; and updating the child pointer in a node directly above the parent node to indicate a starting address in the memory for the multi-node.
-
-
11-34. -34. (canceled)
Specification