A method and apparatus for locating in a list of pre-defined codes, a longest code matching a given code. The method and apparatus involve producing a search mask encoding at least one portion of said given code and comparing the search mask to a search key having a prefix Node bit Array (PNBA) in which a bit is set active in at least one of a plurality of bit positions corresponding to possible bit combinations of bits in a bit string having a length equal to or less than the longest predefined code in the plurality of pre-defined codes and arranged by the lengths of possible bit combinations and by numeric values of the bit combinations, to identify a common active bit position in the search key and the search mask corresponding to one of the pre-defined codes having a length greater than all others of said pre-defined codes which correspond to common active bit positions.
|
1. A method of locating, in a list of pre-defined codes, a longest code matching a given code, the method comprising
a) producing a search mask encoding at least one portion of said given code; and
b) comparing said search mask to a search key having a prefix Node bit Array (PNBA) in which a bit is set active in at least one of a plurality of bit positions corresponding to possible bit combinations of bits in a bit string having a length equal to or less than the longest predefined code in said plurality of said pre-defined codes and arranged by the lengths of said possible bit combinations and by numeric values of said bit combinations, to identify a common active bit position in said search key and said search mask corresponding to one of said pre-defined codes having a length greater than all others of said pre-defined codes which correspond to common active bit positions.
25. An apparatus for locating, in a list of pre-defined codes, a longest code matching a given code, the apparatus comprising:
a) means for producing a search mask encoding at least one portion of said given code; and
b) means for comparing said search mask to a search key having a prefix Node bit Array (PNBA) in which a bit is set active in at least one of a plurality of bit positions corresponding to possible bit combinations of bits in a bit string having a length equal to or less than the longest predefined code in said plurality of said pre-defined codes and arranged by the lengths of said possible bit combinations and by numeric values of said bit combinations, to identify a common active bit position in said search key and said search mask corresponding to one of said pre-defined codes having a length greater than all others of said pre-defined codes which correspond to common active bit positions.
26. A apparatus for locating, in a list of pre-defined codes, a longest code matching a given code, the apparatus comprising a processor circuit and memory in communication with the processor circuit, said memory being configured to direct the processor circuit to:
a) produce a search mask encoding at least one portion of said given code; and
b) compare said search mask to a search key having a prefix Node bit Array (PNBA) in which a bit is set active in at least one of a plurality of bit positions corresponding to possible bit combinations of bits in a bit string having a length equal to or less than the longest predefined code in said plurality of said pre-defined codes and arranged by the lengths of said possible bit combinations and by numeric values of said bit combinations, to identify a common active bit position in said search key and said search mask corresponding to one of said pre-defined codes having a length greater than all others of said pre-defined codes which correspond to common active bit positions.
2. The method claimed in
3. The method claimed in
4. The method claimed in
5. The method claimed in
6. A method of locating next hop information for a packet having a destination address comprising the method claimed in
7. The method claimed in
8. The method claimed in
9. The method claimed in
10. The method claimed in
11. A method of locating next hop information for a packet having a destination address the method comprising the method claimed in
12. The method claimed in
13. The method claimed in
14. The method claimed in
15. The method claimed in
P=associated PNBA mask bit position−2k−1. 16. The method claimed in
17. The method claimed in
18. A method of locating next hop information for a packet having a destination address, the method comprising the method claimed in
19. The method claimed in
20. The method claimed in
P=associated PNBA mask bit position−2k−1. 21. The method claimed in
22. The method claimed in
23. The method claimed in
where
r=said next PNBA-ESRBA indicator
u=the number of PNBA-ESRBA pairs associated with a page
when
r>u.
24. A method of locating next hop information for a packet having a destination address, the method comprising the method claimed in
27. The apparatus claimed in
28. The apparatus claimed in
29. The apparatus claimed in
30. The apparatus claimed in
31. An apparatus for locating next hop information for a packet having a destination address, the apparatus comprising the apparatus claimed in
32. The apparatus claimed in
33. The apparatus claimed in
34. The apparatus claimed in
35. The apparatus claimed in
36. An apparatus for locating next hop information for a packet having a destination address, the apparatus comprising the apparatus claimed in
37. The apparatus claimed in
38. The apparatus claimed in
39. The apparatus claimed in
40. The apparatus claimed in
P=associated PNBA mask bit position−2k−1. 41. The apparatus claimed in
42. The apparatus claimed in
43. An apparatus for locating next hop information for a packet having a destination address, the apparatus comprising the apparatus claimed in
44. The apparatus claimed in
45. The apparatus claimed in
P=associated PNBA mask bit position−2k−1. 46. The apparatus claimed in
47. The apparatus claimed in
48. The apparatus claimed in
where
r=said next PNBA-ESRBA indicator
u=the number of PNBA-ESRBA pairs associated with a page
when
r>u.
49. An apparatus for locating next hop information for a packet having a destination address, the apparatus comprising the apparatus claimed in
|
This application is a divisional of U.S. patent application Ser. No. 09/475,308, filed Dec. 30, 1999 now U.S. Pat. No. 6,993,025.
The present invention is directed to encoding a plurality of pre-defined codes into a search key and using the search key to locate a longest matching pre-defined code in response to a given code. More particularly, the invention is directed to encoding pre-defined codes into a search key where the pre-defined codes may be destination addresses for packet data, and using the search key to facilitate fast look up of routing or next hop information required to route a data packet to its destination address.
The Internet is growing explosively. This explosive growth is reflected in both the number of devices using the Internet and the rate at which data packets are communicated between these devices.
When a sending device and a receiving device exchange a packet via the Internet, the packet generally passes through a number of network elements connected to the Internet between the sending device and the receiving device. A network element might include a switch, a router, or generally any network node. The packet is said to hop from one device to a next device in transit between the sending device and the receiving device via the Internet. Thus, a next device is often called a next hop.
Every device connected to the Internet is identified by a bit-sequence called an address. The number of Internet addresses is also growing explosively. In order to cope with this latter growth, the Internet Protocol (IP) supports multiple address encoding schemes, with the result that Internet address bit-sequences are not all the same length.
A sending device encodes within each packet an address corresponding to the receiving device, which is generally called a destination address. When a packet arrives at a network element, the network element examines the destination address encoded in the packet in order to select an appropriate next hop to forward the packet toward the receiving device. Generally, this next hop selection is made from among a relatively small number of devices that are proximate to the network element in the network.
Typically, the network element selects a next hop device using a routing table that correlates destination addresses to addresses or ports associated with the proximate devices. Usually, the routing table does not include a separate record for each destination address, but instead includes one record for each family of destination addresses, for example destination addresses sharing a common bit-sequence prefix. Thus in order to identify a correlated next hop device, the network element searches the routing table for the longest prefix that matches the destination address encoded in a packet being routed. However, efficiently searching the routing table for a longest matching prefix rather than a complete address can be complicated because there may exist several matching prefixes whereas only the longest matching prefix is being sought. Thus the search algorithm must locate a matching prefix and then determine that no longer matching prefix exists.
It will be appreciated that the explosive growth in both the number of potential destination addresses and the rate at which packets must be routed is placing significant demands on network elements. In fact, it is predicted that a new generation of network element will have to route millions of packets per second. Thus, the routing table lookup mechanism is critical to efficiently operating a network element and the Internet as a whole. Unfortunately, conventional routing table lookup mechanisms are insufficient for this task because they are too slow.
What is needed therefore is a way to encode pre-defined codes such as address-prefix bit-sequences and a way to locate a longest matching pre-defined code to a given code.
The present invention addresses the above needs by providing a method and apparatus for encoding a plurality of pre-defined codes into a search key and a method and apparatus for locating, in a list of pre-defined codes, a longest code matching a given code.
The method and apparatus for encoding involves using a processor circuit to produce a Prefix Node Bit Array (PNBA) having a plurality of bit positions corresponding to possible bit combinations of a bit string having a length equal to or less than the longest predefined code in the plurality of the pre-defined codes such that the bit positions are arranged by the lengths of the possible bit combinations and by numeric value of the possible bit combinations and to set bits active in bit positions which correspond to bit combinations identified by the pre-defined codes.
As the pre-defined codes are mapped into corresponding bit positions of the PNBA, a single bit can be used to represent the presence or absence of a possible bit combination. Consequently, the memory required to store the pre-defined codes, for look up purposes, is reduced.
The method and apparatus may also involve producing a next hop array associating bit positions of the PNBA which have active bits with routing information for use by a router to route a packet. Thus, the pre-defined codes are associated with respective bit positions in the PNBA and the respective bit positions in the PNBA are associated with respective next hop information associated with the pre-defined codes.
In one embodiment, a plurality of PNBAs may be used to encode a plurality of subgroups of bits of the pre-defined codes. The use of a plurality of PNBAs may also involve producing an External Subtree Route Bit Array, having bit positions corresponding to possible further subgroups of bits of the pre-defined codes. In one embodiment, a single PNBA may be used to encode the plurality of pre-defined codes. Alternatively, in another embodiment, a plurality of PNBAs may be used, with associated External Subtree Route Bit Arrays (ESRBAs) as PNBA-ESRBA pairs in a single page of information, or as PNBA-ESRBA pairs on respective pages of information. Each page may include a next page pointer, pointing to a next page in a plurality of respective pages to be searched after considering a given page in a search.
The method described above facilitates locating a longest code matching a given code, in the list of pre-defined codes. This has particular use in routing packets in a computer network, for example, wherein the method can be used to locate routing information or next hop information based upon a destination address of a packet. If a destination address of the packet is considered to be a given code and destination prefixes are considered to be a list of pre-defined codes, the method and apparatus provide a way of locating in a list of pre-defined codes a longest code matching a given code.
In accordance with one aspect of the invention, there is provided a method of locating in a list of pre-defined codes a longest code matching a given code. The method involves producing a search mask encoding at least one portion of the given code, and comparing the search mask to a search key having a Prefix Node Bit Array (PNBA). In the PNBA, a bit is set active in at least one of a plurality of bit positions corresponding to bit combinations of bits in a bit string having a length equal to or less than the longest predefined code in the plurality of the pre-defined codes and arranged by the lengths of the bit combinations and by numeric values of the bit combinations. The purpose of comparing is to identify a common active bit position in the search key and the search mask corresponding to one of the pre-defined codes having a length greater than all others of the pre-defined codes which correspond to common active bit positions.
Effectively, the need to compare bits of the given code with bits of pre-defined codes in the list of such codes is eliminated by use of the search mask and the search key.
If the search key includes a single prefix node bit array, then the search mask is produced to include a single prefix node bit array mask of the same length, for comparison with the prefix node bit array. This may be done by logically ANDing the PNBA mask with a search PNBA of the search key to produce a resultant PNBA. A highest bit position in the resultant PNBA identifies a longest code of the predefined codes which is the longest code matching the resultant PNBA.
When the method is used to locate next hop information for a packet having a destination address which acts as the given code, the next hop information can be located by finding the information associated with the highest ordered bit position, which is set active in the resultant PNBA.
Alternatively, a plurality of PNBA masks may be produced to encode possible bit subcombinations of the given code. These PNBA masks can be used with a plurality of PNBAs to consider subcombinations or subprefixes of the given code and the predefined codes to reduce the amount of memory to encode the predefined codes. In such an embodiment, a PNBA mask representing a first k bits of the given code is compared with a first PNBA encoding a first k bits of the pre-defined codes to determine a potential longest matching subprefix.
An External Subtree Route Bit Array (ESRBA) associated with the first PNBA is then compared with a first ESRBA mask derived from the given code to determine whether or not further searching of a further PNBA is required. If not, then in the case where the given code is a destination address for example, the result of the comparison between the first PNBA and the first PNBA mask can be used to determine next hop information. Alternatively, if further searching is to be performed, then a second PNBA is compared with a second PNBA mask to produce a further potential longest matching code and a second ESRBA and a second ESRBA mask are compared to determine whether or not further searching is required. This process is continued until no further searching is required, in which case the last determined longest matching code is taken as the actual longest matching code.
The PNBAs and ESRBAs of the multiple PNBA embodiment may be stored in a plurality of pages comprising a plurality of PNBA-ESRBA pairs on a few pages or single PNBA-ESRBA pairs on respective pages.
The use of multiple pages requires a larger number of memory unit accesses, but requires less memory, whereas the fewer number of pages requires fewer accesses, but more memory unit space for storage. Consequently, trade offs between memory availability and memory accesses can be made.
Other aspects and features of the present invention will become apparent to those ordinarily skilled in the art upon review of the following description of specific embodiments of the invention in conjunction with the accompanying figures.
In drawings which illustrate embodiments of the invention,
Referring to
The network element 10 has a plurality of input ports 18 and a plurality of output ports 20 for receiving and transmitting signals respectively on the network 12. There may be a plurality of network elements 10 on the network 12, each network element representing a “hop” in a path from the sender of a packet to a receiver of the packet.
Referring to
To route a packet from an input port 18 to an output port 20 in the manner described above, the network element 10 includes a processor circuit 30 in communication with a random access memory (RAM) 32 and a read only memory (ROM) 34. The processor circuit 30 is also in communication with an input/output (I/O) interface 38, which is connected to receive packets from the input ports 18 and to transmit packets to appropriate output ports 20 in response to directions provided by the processor circuit 30 in accordance with the present invention.
To achieve this, the ROM 34 is programmed with codes for directing the processor circuit 30 to perform certain functionality, including both conventional functionality of a network element 10 and the novel functionality of the present invention. The ROM 34 may be programmed with codes downloaded via the network 12 from a remote computer (not shown), or may have a media interface (not shown) for reading codes from a computer readable medium such as a CD-ROM, diskette or any other computer readable medium accessible by the processor circuit 30. In general, at least one set of codes programmed into the ROM configure the processor circuit to encode a plurality of predefined codes into a search key by producing a Prefix Node Bit Array (PNBA) having a plurality of bit positions corresponding to possible bit combinations of a bit string having a length equal to or less than the longest predefined code in the plurality of the pre-defined codes such that the bit positions are arranged by the lengths of the possible bit combinations and by numeric value of the bit combinations, and by setting active bits in bit positions which correspond to bit combinations identified by the pre-defined codes.
Another set of codes programmed into the ROM configures the processor circuit to locate, in a list of pre-defined codes, a longest code matching a given code by producing a search mask encoding at least one portion of the given code and comparing the search mask to a search key having a Prefix Node Bit Array (PNBA) in which a bit is set active in at least one of a plurality of bit positions corresponding to possible bit combinations of bits in a bit string having a length equal to or less than the longest predefined code in the plurality of the pre-defined codes and arranged by the lengths of the possible bit combinations and by numeric values of the bit combinations, to identify a common active bit position in the search key and the search mask corresponding to a one of the pre-defined codes having a length greater than all others of the pre-defined codes which correspond to common active bit positions.
More particularly, in accordance with the first embodiment of the invention, the codes programmed into the ROM include a first segment of codes 33 for directing the processor circuit to act as an encoder to encode the pre-defined address prefixes for facilitating fast identification of an output port to which an incoming packet is to be routed and a second segment of codes 35 for directing the processor circuit 30 to act as a router by using the encoded pre-defined address prefixes to identify an output port to which an incoming packet is to be routed.
The pre-defined address prefixes which are to be encoded by the processor circuit 30 are provided by a routing authority such as an owner of the network 12 or network element 10 to identify corresponding output ports 20 of the network node which are to receive packets bearing certain address prefixes. For example, the network authority may specify that packets having the single binary value “0” as the longest matching portion of their destination address with a pre-defined address prefix are to be routed to port number one. In general, the network authority provides to the network element 10 a list of pre-defined address prefixes referred to hereafter as listed prefixes, together with associated next hop port information, such as an identification of the output port to which a packet is to be routed when at least a prefix of its destination address matches one of the listed prefixes. Preferably, the listed prefixes are pre-sorted by length and bit position entries, in ascending order, into a sorted list or table 40 of routing records 42 as shown in
Each routing record 42 includes three fields, namely a prefix field 44, a length field 46, and a next-hop field 48. The prefix field 44 holds codes representing a listed prefix for which next hop information exists. The length field 46 holds codes representing the string length of the listed prefix represented in the prefix field 44. The next-hop field 48 holds codes representing the next hop information, in particular, codes identifying one of the output ports 20 to which a packet received at an input port 18 should be directed when the associated listed prefix is the longest listed prefix matching at least a portion of a destination address encoded in a received packet.
In this embodiment, the routing records 42 have been presorted in the sorted list 40, first according to the binary value of the prefix strings stored in the prefix field 44 and second according to the string lengths stored in the length field 46.
The processor circuit 30 shown in
In this embodiment, generally, the search key includes a Prefix Node Bit Array (PNBA) having bit positions associated with respective listed prefixes. In the general case, all possible address prefixes have corresponding bit positions in the PNBA. Consequently, the size of the PNBA depends upon the maximum length of the listed prefixes. In general, the PNBA has 2n+1-2 bit positions.
In the listed prefixes shown in
In general, referring to
where
After determining which bit positions of the PNBA are to be set to one, indicators of these bit positions may be added to PNBA bit position fields 50 associated with respective listed prefixes of the listed prefix table, to produce an enhanced listed prefix table 52 as shown in
After producing the enhanced listed prefix table shown in
The router code segment executed by the processor circuit uses the PNBA shown in
In this embodiment, the router code segment directs the processor circuit 30 to use the destination address of a received packet to determine a longest matching listed prefix, to find the PNBA bit position of the longest matching prefix and to find the next hop information from the next hop array 70 using this PNBA bit position.
More particularly, determining a longest matching listed prefix is achieved by first producing a PNBA mask encoding at least a portion of the destination address or more generally, at least a portion of a given code, by applying a procedure similar to that used to generate the PNBA to the destination address in the received packet. In particular, using the expression:
where
Since the PNBA was produced using k=5 a PNBA mask having 2k+1−2=62 bit positions is produced with bits in bit positions being set according to the above expression. For example, if the destination address is 11101, a PNBA mask as shown at 66 in
The PNBA mask 66 shown in
In this example, the resultant PNBA 68 is non-zero, therefore the position in the next hop array 70 at which the corresponding next hop information is stored is given by the following expression:
where
Using bit position 29 determined above, the relation produces the following:
Consequently, the ninth position in the next hop array holds the appropriate next hop information. The processor circuit is then directed to forward the packet to the output port associated with the information stored in the ninth position of the next hop array 70.
It will be appreciated that
In this second embodiment the sub-prefixes shown within the box 81 are mapped to their own sub-prefix PNBA using the method described in connection with the first embodiment of the invention. In this example the box separates a plurality of two or less bit sub-prefixes which map into a first PNBA having six possible address sub-prefixes which are shown in
In general, the bits in the first PNBA are set according to the expression:
where:
After determining which bit positions of the first PNBA 69 are to be loaded with a one, indicators of these bit positions may be inserted into PNBA bit position fields 77, in respective records associated with respective listed prefixes in the listed prefix table as shown in
As shown in
Since some of the sub-prefixes are part of listed prefixes which are longer than two bits, it is necessary to use another code, herein referred to as an External Subtree Root Bit Array (ESRBA) to identify those sub-prefixes which are part of a longer, listed prefix. In general the ESRBA has 2k bit positions, corresponding to the possible bit combinations of k bits. In the example given, with k=2, there are 4 possible bit combinations and therefore as shown in
As shown in
Under each sub-prefix, there may be further combinations of k or less bits and therefore a separate PNBA is produced to encode the possible k bit sequences after each sub-prefix having a length longer than k. In the example shown, the sub-prefixes which have a length longer than 2 are on rows 3,5,6,9 and 10 and have the values 00, 01 and 11. Thus, as shown in
As shown in
As there is only one bit combination which follows the 00 prefix, there is only one record and the next hop information for the corresponding listed prefix, that is, for the listed prefix in row 3 of the table shown in
As shown in
As shown in
As there are two combinations which follow the 01 sub-prefix, the corresponding listed strings are appended to the next hop array 72 shown in
As shown in
As shown in
Therefore the next hop information associated with only this one sub-prefix can be appended to the next hop array 72. Consequently, the next hop information from the listed prefix on row nine of the listed prefix table shown in
As shown in
As shown in
The fourth PNBA 82 has a non-zero fourth ESRBA 94 because, as shown in
As shown in
As shown in
The fifth PNBA 96 may also have associated with it a fifth ESRBA 100, although in this example this ESRBA will have all zeros, i.e. 0000, since there are no further bits following the bit combination 11111.
As shown in
The search key 102 represents full encoding of the listed prefixes and is operable to be used by a routing program according to the second embodiment of the invention, to determine a next hop address for a packet received at the network element.
In this embodiment, like the first embodiment, the router code segment directs the processor circuit to use the destination address of a received packet to determine a longest matching listed prefix from the search key and to find the next hop information from the next hop array 72 using the PNBA bit position associated with the longest matching listed prefix.
More particularly, determining a longest matching listed prefix is achieved by first producing PNBA masks for each k or less bit combination in the destination address, using a procedure similar to that used to generate the PNBAs of the search key 102 shown in
In particular, for each k-bit combination in the destination address a (2k+1−2)-bit PNBA mask is generated wherein bit positions of the PNBA mask are set to 1 at position j according to the expression
where:
In this embodiment, since the search key described above was generated with k=2, the PNBA masks should also be generated using k=2.
For example, if the destination address is 11101 it has three 2 or less bit combinations which are 11, 10 and 1.
The first set of two bits is 11 and therefore the second and sixth bit positions of a first PNBA mask produced according to the relation above, have ones, whereas the remaining bit positions have zeros, as shown in
The second set of two bits is 10 and therefore the second and fifth bit positions of a second PNBA mask 114 produced according to the relation above, have ones, whereas the remaining bit positions have zeros, as shown in
The third set of two bits is only one bit long and is the single bit 1. Therefore only the second bit position of a third PNBA mask 116 produced according to the relation above, has a one, whereas the remaining bit positions have zeros, as shown in
After producing the first, second and third PNBA masks shown in
The first PNBA mask 112 shown in
In the first resultant PNBA 118 the bit position n associated with possible next hop information is the highest numbered bit position with a bit value of one. As shown in
If the bit position located above is greater than or equal to 1, then the next hop information is given at a position in the next hop array 72 shown in
where
Using the above expression, with position 6 determined from
Consequently, possible next hop information is given in the fifth position of the next hop array 72 shown in
Before deciding to use the possible next hop information determined above as the actual next hop information, it is necessary to determine whether or not any longer matching listed prefix is encoded. To do this it is necessary to determine which page should be used next in looking for a longest match. To determine which page is to be used next, it is necessary to produce an ESRBA mask for each PNBA mask. In general, each ESRBA mask has 2k bits with bits at positions p set to 1 according to the following expression:
p=largest PNBA mask bit position−2k−1, (7)
In the present example k=2 and the largest PNBA mask bit position which is set to one in the first PNBA mask 112 shown in
After having produced the above ESRBA masks, the first ESRBA mask 120 shown in
If m≧1, then the next page p is given according to the following expression:
where
In the present example, the bit position in the first resultant ESRBA 126 shown in
Using the above expression,
Consequently, the next page to be considered is the fourth page 108 of the search key 102 shown in
In the second resultant PNBA 128 the bit position associated with possible next hop information is the highest numbered bit position with a bit value of one. As shown in
If the bit position is greater than or equal to 1, then the next hop information is given at a position in the next hop array determined by the following expression:
where
In this example, using the above expression, with position 5 (n=5), the entry in the next hop array 72 shown in
Consequently, the ninth position in the next hop array is the next most possible position which holds the necessary next hop information, if no further searching is to be done.
To determine whether or not any further searching is to be done, it is necessary to determine whether or not there is a next page on which further searching can be performed. To find which page, if any with which to continue the search, the second ESRBA mask 122 shown in
The next page on which to continue searching would be given by examining the second resultant ESRBA 130 to determine the bit position having a one and using the number of that position in expression (8) above for determining a next page. In the present example, the second resultant ESRBA 130 has all zeros and therefore, there are no further pages on which to continue the search. The search process is therefore terminated here and the next hop information stored at the ninth position of the next hop array 72 shown in
Referring to
In this embodiment, like the first and second embodiments, the router code segment directs the processor circuit 30 to use the destination address of a received packet to determine a longest matching listed prefix from the search key and to find the next hop information from the next hop array 72 using the PNBA bit position associated with the longest matching prefix.
More particularly, determining a longest matching listed prefix is achieved by first producing PNBA masks for each k or less bit combination in the destination address, using the procedure described above in connection with the second embodiment. Consequently, the same first, second and third PNBA masks 112, 114, and 116 shown in
The first PNBA mask 112 is ANDed with the first PNBA 69 in the single page shown in
In the first resultant PNBA 118 the bit position associated with possible next hop information is the highest numbered bit position with a bit value of one. As shown in
If n≧1, then the location of the next hop information in the next hop array 72 shown in
where
In this example there are five PNBA-ESRBA pairs.
Using expression (10) above,
Consequently, possible next hop information is given in the fifth position of the next hop array 72 shown in
Before deciding to use the possible next hop information determined above as actual next hop information, it is necessary to determine whether or not any longer matching listed prefix is encoded. To do this it is necessary to determine which PNBA-ESRBA pair in the current page or some other page if there is one, should be used next in looking for a longest match. To determine which PNBA-ESRBA pair is to be used next, it is necessary to produce an ESRBA mask for each PNBA mask. In general, each ESRBA mask has 2k bits with bits at positions p set to 1 according to the following expression:
p=largest PNBA mask bit position−2k−1, (11)
The three PNBA masks are shown at 112, 114 and 116 respectively in
After having produced the above three ESRBA masks, the first ESRBA mask 120 shown in
If m≧1, then the next PNBA-ESRBA pair to consider is an entry in the current page or in another page as given by the following expression:
where:
In this example there are five PNBA-ESRBA pairs.
Using the above expression in the present example:
Note that r=4≦u=5. Consequently, the fourth PNBA-ESRBA pair of the current page is the next PNBA-ESRBA pair to be considered.
If r>u, then the next PNBA-ESRBA pair is determined according to the relation v=(r−1) mod u+1 and this remainder identifies the PNBA-ESRBA pair of another page identified according to the following expression:
In the present example, to this point the next PNBA-ESRBA pair in the present page has been identified as the fourth PNBA-ESRBA pair 146 shown in
In the second resultant PNBA 128 the bit position associated with possible next hop information is the highest numbered bit position with a bit value of one. As shown in
If the bit position located above is greater than or equal to 1, then the next hop information is given at a position in the next hop array 72 shown in
where
Using the above expression in the present example:
Consequently, the ninth position of the next hop array is the next most possible position of the next hop array 72 which holds the necessary next hop information, if no further searching is to be done.
To determine whether or not any further searching is to be done, it is necessary to determine whether or not there is a next PNBA-ESRBA pair on the same page or on another page on which further searching can be performed. To find which pair, if any on which to continue the search, the second ESRBA mask 122 shown in
The next pair on which to continue searching would be given by examining the second resultant ESRBA 130 to determine the bit position having a one and using the number of that position in expression (12) above for determining a next pair. In the present example, the second resultant ESRBA 130 has all zeros and therefore, there are no further PNBA-ESRBA pairs on which to search. The search process is therefore terminated here and the next hop information stored at the ninth position of the next hop array 72 shown in
While specific embodiments of the invention have been described and illustrated, such embodiments should be considered illustrative of the invention only and not as limiting the invention as construed in accordance with the accompanying claims.
Aweya, James, Montuno, Delfin Y.
Patent | Priority | Assignee | Title |
7818473, | Aug 11 2008 | International Business Machines Corporation | Embedded locate records for device command word processing |
9015345, | Dec 15 2010 | Microsoft Technology Licensing, LLC | API supporting server and key based networking |
9906433, | Dec 15 2010 | Microsoft Technology Licensing, LLC | API supporting server and key based networking |
Patent | Priority | Assignee | Title |
5781772, | Feb 10 1993 | ENTERASYS NETWORKS, INC | Compressed prefix matching database searching |
6011795, | Mar 20 1997 | Washington University | Method and apparatus for fast hierarchical address lookup using controlled expansion of prefixes |
6018524, | Sep 09 1997 | Washington University | Scalable high speed IP routing lookups |
6067574, | Feb 09 1998 | THE CHASE MANHATTAN BANK, AS COLLATERAL AGENT | High speed routing using compressed tree process |
6212184, | Jul 15 1998 | Washington University | Fast scaleable methods and devices for layer four switching |
6223172, | Oct 31 1997 | RPX CLEARINGHOUSE LLC | Address routing using address-sensitive mask decimation scheme |
6266706, | Apr 17 1998 | EFFNET HOLDING AB | Fast routing lookup system using complete prefix tree, bit vector, and pointers in a routing table for determining where to route IP datagrams |
6526055, | Oct 20 1998 | Oracle America, Inc | Method and apparatus for longest prefix address lookup |
6560610, | Aug 10 1999 | Cisco Technology, Inc | Data structure using a tree bitmap and method for rapid classification of data in a database |
6614789, | Dec 29 1999 | Method of and apparatus for matching strings of different lengths | |
20020059197, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Jan 14 2005 | Noretl Networks Limited | (assignment on the face of the patent) | / | |||
Jul 29 2011 | Nortel Networks Limited | Rockstar Bidco, LP | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 027164 | /0356 | |
May 09 2012 | Rockstar Bidco, LP | Rockstar Consortium US LP | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 032167 | /0270 | |
Nov 13 2013 | Rockstar Consortium US LP | Bockstar Technologies LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 032399 | /0116 | |
Jan 28 2015 | Constellation Technologies LLC | RPX CLEARINGHOUSE LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 034924 | /0779 | |
Jan 28 2015 | NETSTAR TECHNOLOGIES LLC | RPX CLEARINGHOUSE LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 034924 | /0779 | |
Jan 28 2015 | MOBILESTAR TECHNOLOGIES LLC | RPX CLEARINGHOUSE LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 034924 | /0779 | |
Jan 28 2015 | Bockstar Technologies LLC | RPX CLEARINGHOUSE LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 034924 | /0779 | |
Jan 28 2015 | ROCKSTAR CONSORTIUM LLC | RPX CLEARINGHOUSE LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 034924 | /0779 | |
Jan 28 2015 | Rockstar Consortium US LP | RPX CLEARINGHOUSE LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 034924 | /0779 | |
Feb 26 2016 | RPX CLEARINGHOUSE LLC | JPMORGAN CHASE BANK, N A , AS COLLATERAL AGENT | SECURITY AGREEMENT | 038041 | /0001 | |
Feb 26 2016 | RPX Corporation | JPMORGAN CHASE BANK, N A , AS COLLATERAL AGENT | SECURITY AGREEMENT | 038041 | /0001 | |
Dec 22 2017 | JPMORGAN CHASE BANK, N A | RPX Corporation | RELEASE REEL 038041 FRAME 0001 | 044970 | /0030 | |
Dec 22 2017 | JPMORGAN CHASE BANK, N A | RPX CLEARINGHOUSE LLC | RELEASE REEL 038041 FRAME 0001 | 044970 | /0030 |
Date | Maintenance Fee Events |
Jan 25 2008 | ASPN: Payor Number Assigned. |
Jun 22 2011 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Sep 11 2015 | REM: Maintenance Fee Reminder Mailed. |
Jan 29 2016 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
Jan 29 2011 | 4 years fee payment window open |
Jul 29 2011 | 6 months grace period start (w surcharge) |
Jan 29 2012 | patent expiry (for year 4) |
Jan 29 2014 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jan 29 2015 | 8 years fee payment window open |
Jul 29 2015 | 6 months grace period start (w surcharge) |
Jan 29 2016 | patent expiry (for year 8) |
Jan 29 2018 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jan 29 2019 | 12 years fee payment window open |
Jul 29 2019 | 6 months grace period start (w surcharge) |
Jan 29 2020 | patent expiry (for year 12) |
Jan 29 2022 | 2 years to revive unintentionally abandoned end. (for year 12) |