Claims
- 1. An address lookup device, comprising:
a discriminant bits search device to receive a lookup value based on a network address included in a received packet, to utilize a discriminant bits pattern to determine a location in an address lookup table based on the lookup value, and to access the location in the address lookup table.
- 2. The address lookup device of claim 1, wherein the network address is a destination address.
- 3. The address lookup device of claim 1, wherein the network address is a destination protocol address.
- 4. The address lookup device of claim 1, wherein the discriminant bits search device determines whether the lookup value is located in the location in the address lookup table.
- 5. The address lookup device of claim 4, wherein the discriminant bits search device outputs next hop information if the lookup value is located in the location in the address lookup table.
- 6. The address lookup device of claim 5, wherein the discriminant bits search device outputs default information if the lookup value is not located in the location in the address lookup table.
- 7. The address lookup device of claim 1, wherein a discriminant bits search module extracts the discriminant bits pattern from the address lookup table.
- 8. The address lookup device of claim 7, wherein the discriminant bits pattern is stored in a discriminant bits memory.
- 9. The address lookup device of claim 7, wherein the discriminant bits search module utilizes the discriminant bits pattern to create an address matching mask for a plurality of addresses in the address lookup table, a reduced address matching mask for the plurality of addresses in the address lookup table, and a reduced lookup value, and the discriminant bits search module finds a selected address matching mask where the reduced address matching mask for one of the plurality of addresses in the address lookup table has same bits as the reduced lookup value, and provides the one of the plurality of addresses having the same bits as the reduced lookup value as the location in the address lookup table.
- 10. The address lookup device of claim 7, wherein the discriminant bits search module utilizes a discriminant bits pattern to create an address matching mask of a plurality of addresses in the address lookup table, and the discriminant bits search module finds a selected address matching mask where the address matching mask for one of the plurality of addresses in the address lookup table has same bits as the lookup value, and provides the one of the plurality of addresses in the memory having the same bits as the lookup value as the location in the address lookup table.
- 11. The address lookup device of claim 1, further including:
a search device to receive the lookup value based on the network address, to search a plurality of address memory banks, and to identify a memory section of the address lookup table.
- 12. The address lookup device of claim 11, wherein the search device is a pipelined binary search device.
- 13. The address lookup device of claim 11, wherein the plurality of address memory banks are last address memory banks, and last addresses of memory sections are placed in the last address memory banks.
- 14. The address lookup device of claim 11, wherein the discriminant bits search device also receives a reference to the memory section identified by the search device.
- 15. The address lookup device of claim 14, wherein a discriminant bits search module extracts the discriminant bits pattern from the memory section the reference identifies.
- 16. The address lookup device of claim 15, wherein the discriminant bits pattern is stored in a discriminant bits memory.
- 17. The address lookup device of claim 15, wherein the discriminant bits search module utilizes the discriminant bits pattern to create an address matching mask for each of a plurality of addresses in the memory section, a reduced address matching mask for each of the plurality of addresses in the memory section, and a reduced lookup value, and the discriminant bits search module finds a selected address matching mask where the reduced address matching mask for one of the plurality of addresses in the memory section has same bits as the reduced lookup value and provides the one of the plurality of addresses having the same bits as the reduced lookup value as the location in the address lookup table.
- 18. The address lookup device of claim 15, wherein the discriminant bits search module utilizes the discriminant bits pattern to create an address matching mask for each of a plurality of addresses in the memory section, and the discriminant bits search module finds a selected address matching mask where the address matching mask for one of the plurality of addresses in the memory section has same bits as the lookup value and provides the one of the plurality of addresses in the memory having the same bits as the lookup value as the location in the address lookup table.
- 19. A method for address lookup, comprising:
receiving a lookup value based on a network address in a discriminant bits search device; creating a discriminant bits pattern for an address lookup table; utilizing the discriminant bits pattern and the lookup value to determine a location in the address lookup table; and accessing the location in the address lookup table.
- 20. The method of claim 19, further including,
searching the location in the address lookup table to determine if the location in the address lookup table has a value equivalent to the lookup value; and outputting next hop information for the lookup value if the location in the address lookup table has a value equivalent to the lookup value.
- 21. The method of claim 19, further including,
searching the location in the address lookup table to determine if the location in the address lookup table has a value equivalent to the lookup value; and outputting default if the location in the address lookup table does not have a value equivalent to the lookup value.
- 22. The method of claim 19, further including,
utilizing, by a discriminant bits search module, the discriminant bits pattern to create an address matching mask for each of a plurality of addresses in the address lookup table, a reduced lookup value, and a reduced address matching mask for each of the plurality of addresses in the address lookup table; comparing the reduced address matching mask for each of the plurality of addresses in the address lookup table to the reduced lookup value to find a selected address matching mask where the reduced address matching mask for one of the plurality of addresses in the address lookup table has same bits as the reduced lookup value; and providing the one of the plurality of addresses in the address lookup table having the same bits as the reduced lookup value as the location in the address lookup table.
- 23. The method of claim 19, further including,
utilizing, by a discriminant bits search module, the discriminant bits pattern to create an address matching mask for each of a plurality of addresses in the address lookup table; comparing the address matching mask for each of the plurality of addresses in the address lookup table to the lookup value to find a selected address matching mask where the address matching mask for one of the plurality of addresses in the address lookup table has same bits as the lookup value; and providing the one of the plurality of addresses in the address lookup table having the same bits as the lookup value as the location in the address lookup table.
- 24. The method of claim 19, wherein the address lookup table includes a plurality of memory sections.
- 25. The method of claim 24, wherein a memory section is identified by inputting the lookup value based on a network address to a pipelined binary search device, and by searching a plurality of address memory banks to determine the memory section of the plurality of memory sections in the address lookup table where the lookup value is located.
- 26. The method of claim 25, wherein the plurality of address memory banks are last address memory banks, and last addresses of the plurality of memory sections are placed in a plurality of the last address memory banks.
- 27. The method of claim 25, wherein a discriminant bits search module creates the discriminant bits pattern of the memory section.
- 28. The method of claim 27, further including:
utilizing, by a discriminant bits search module, the discriminant bits pattern to create an address matching mask for each of a plurality of addresses in the memory section, a reduced lookup value, and a reduced address matching mask for each of the plurality of addresses in the memory section; comparing the reduced address matching mask for each of the plurality of addresses in the memory section to the reduced lookup value to find a selected address matching mask where the reduced address matching mask for one of the plurality of addresses in the memory section has same bits as the reduced lookup value; and providing the one of the plurality of addresses in the memory section having a reduced address matching mask with the same bits as the reduced lookup value as the location in memory.
- 29. The method of claim 27, further including:
utilizing, by a discriminant bits search module, the discriminant bits pattern to create an address matching mask for each of a plurality of addresses in the memory section; comparing the address matching mask for each of the plurality of addresses in the memory section to the lookup value to find a selected address matching mask where the address matching mask for one of the plurality of addresses in the memory section has same bits as the lookup value; and providing the one of the plurality of addresses in the memory section having an address matching mask with the same bits as the lookup value as the location in memory.
- 30. A Layer 2 switching device to transfer a packet between a plurality of endsystems on a local area network, comprising:
a packet receiving device to accept the packet and to extract a lookup value based on a destination address; an address lookup device, including
a discriminant bits search device to receive the lookup value based on the network address included in the packet, to utilize a discriminant bits pattern to determine a location in an address lookup table based on the lookup value, and to access the location in the address lookup table, and a forwarding device to forward the packet to a next location.
- 31. The switching device of claim 30, further comprising a pipelined binary search device to receive the lookup value based on the network address, search a plurality of address memory banks, and identify a memory section in the address lookup table.
- 32. The switching device of claim 31, wherein the plurality of address memory banks are last address memory banks, and last addresses of memory sections are placed in the last address memory banks.
- 33. A Layer 3 routing device to transfer a packet on a global network, comprising:
a packet receiving device to accept the packet and to extract a lookup value based on a destination protocol address; an address lookup device, including,
a discriminant bits search device to receive the lookup value based on the network address, to utilize a discriminant bits pattern to determine a location in an address lookup table based on the lookup value, and to access the location in the address lookup table, and a forwarding engine to forward the packet to a next location.
- 34. The routing device of claim 32, further including a pipelined binary search device to receive the lookup value based on the network address, search a plurality of address memory banks, and identify a memory section in the address lookup table.
- 35. The routing device of claim 34, wherein last addresses of memory sections are placed in a plurality of last address memory banks based on when the pipelined binary search device searches the last addresses of the memory sections.
- 36. A program code storage device, comprising:
a machine-readable storage medium; and machine-readable program code, stored on the machine-readable storage medium, the machine-readable program code having instructions to
receive a lookup value based on a network address in a discriminant bits search device; create a discriminant bits pattern for an address lookup table; utilize the discriminant bits pattern and the lookup value to determine a location in the address lookup table; and access the location in the address lookup table.
- 37. The program code storage device of claim 36, further including instructions to
search the location in the address lookup table to determine if the location in the address lookup table has a value equivalent to the lookup value; and output next hop information for the lookup value if the location in the address lookup table has a value equivalent to the lookup value.
- 38. The program code storage device of claim 36, further including instructions to
search the location in the address lookup table to determine if the location in the address lookup table has a value equivalent to the lookup value; and output default if the location in the address lookup table does not have a value equivalent to the lookup value.
- 39. The program code storage device of claim 36, further including instructions to
utilize, by a discriminant bits search module, the discriminant bits pattern to create an address matching mask for each of a plurality of addresses in the address lookup table, a reduced lookup value, and a reduced address matching mask for each of the plurality of addresses in the address lookup table; compare the reduced address matching mask for each of the plurality of addresses in the address lookup table to the reduced lookup value to find a selected address matching mask where the reduced address matching mask for one of the plurality of addresses in the address lookup table has same bits as the reduced lookup value; and provide the one of the plurality of addresses in the address lookup table having the same bits as the reduced lookup value as the location in the address lookup table.
- 40. The program code storage device of claim 36, further including instructions to
utilize, by a discriminant bits search module, the discriminant bits pattern to create an address matching mask for each of a plurality of addresses in the address lookup table; compare the address matching mask for each of the plurality of addresses in the address lookup table to the lookup value to find a selected address matching mask where the address matching mask for one of the plurality of addresses in the address lookup table has same bits as the lookup value; and provide the one of the plurality of addresses in the address lookup table having the same bits as the lookup value as the location in the address lookup table.
- 41. The program code storage device of claim 36, wherein the address lookup table includes a plurality of memory sections.
- 42. The program code storage device of claim 41, wherein a memory section is identified by inputting the lookup value based on a network address to a pipelined binary search device, and by searching a plurality of address memory banks to determine the memory section of the plurality of memory sections in the address lookup table where the lookup value is located.
- 43. The program code storage device of claim 42, wherein the plurality of address memory banks are last address memory banks, and last addresses of the plurality of memory sections are placed in a plurality of the last address memory banks.
- 44. The program code storage device of claim 42, wherein a discriminant bits search module creates the discriminant bits pattern of the memory section.
- 45. The program code storage device of claim 44, further including instructions to
utilize, by a discriminant bits search module, the discriminant bits pattern to create an address matching mask for each of a plurality of addresses in the memory section, a reduced lookup value, and a reduced address matching mask for each of the plurality of addresses in the memory section; compare the reduced address matching mask for each of the plurality of addresses in the memory section to the reduced lookup value to find a selected address matching mask where the reduced address matching mask for one of the plurality of addresses in the memory section has same bits as the reduced lookup value; and provide the one of the plurality of addresses in the memory section having a reduced address matching mask with the same bits as the reduced lookup value as the location in memory.
- 46. The program code storage device of claim 44, further including instructions to
utilize, by a discriminant bits search module, the discriminant bits pattern to create an address matching mask for each of a plurality of addresses in the memory section; compare the address matching mask for each of the plurality of addresses in the memory section to the lookup value to find a selected address matching mask where the address matching mask for one of the plurality of addresses in the memory section has same bits as the lookup value; and provide the one of the plurality of addresses in the memory section having an address matching mask with the same bits as the lookup value as the location in memory.
RELATED APPLICATION
[0001] This application is related to U.S. patent application Ser. No. ______ filed on ______, entitled METHOD AND APPARATUS FOR HIGH-SPEED LONGEST PREFIX MATCH OF KEYS IN A MEMORY.