Claims
- 1. A method comprising:
receiving a first packet on a network switch, wherein the network switch comprises one or more threshold groups, wherein each of the one or more threshold groups comprises a plurality of flows; assigning the first packet to a first flow of a first threshold group of the one or more threshold groups, wherein the first threshold group is at a first operating level of a plurality of operating levels; if storing the first packet in memory of the network switch would not cause the first flow to exceed a flow resource limit at the first operating level of the first threshold group, storing the first packet in the memory of the network switch; and if storing the first packet in the memory of the network switch would cause the first flow to exceed the flow resource limit at the first operating level of the first threshold group, discarding the first packet from the network switch; wherein a flow resource limit at each of the plurality of operating levels is a maximum number of resources that any one of the plurality of flows is allowed to use while the first threshold group is at that particular operating level.
- 2. The method as recited in claim 1, further comprising:
if the first packet is stored in the memory of the network switch, and if said storing the first packet causes the first threshold group to exceed a resource maximum threshold for the first operating level of the first threshold group, changing the first threshold group to a second operating level; wherein a resource maximum threshold for each of the plurality of operating levels is a maximum combined number of resources that the plurality of flows are allowed to use while the first threshold group is at that particular operating level.
- 3. The method as recited in claim 2, wherein a flow resource limit at the second operating level of the first threshold group is less than the flow resource limit at the first operating level of the first threshold group.
- 4. The method as recited in claim 2, further comprising:
removing a previously stored packet from the first threshold group; and if said removing the previously stored packet causes the first threshold group to drop below a resource minimum threshold for the second operating level of the first threshold group, changing the first threshold group to the first operating level; wherein a resource minimum threshold for each of the plurality of operating levels is a minimum combined number of resources that the plurality of flows are allowed to use at that particular operating level.
- 5. The method as recited in claim 4, wherein the resource minimum threshold for the second operating level of the first threshold group is lower than the resource maximum threshold for the first operating level of the first threshold group.
- 6. The method as recited in claim 4, wherein there is hysteresis between the first operating level and the second operating level of the first threshold group.
- 7. The method as recited in claim 1, further comprising:
if storing the first packet would not cause the first threshold group to exceed a threshold group resource limit for the first threshold group, storing the first packet in the memory of the network switch; and if storing the first packet would cause the first threshold group to exceed the threshold group resource limit for the first threshold group, discarding the first packet from the network switch; wherein the threshold group resource limit for the first threshold group is a maximum combined number of resources that the plurality of flows are allowed to use in the first threshold group.
- 8. The method as recited in claim 1, wherein the flow resource limit of the first threshold group ranges from a largest number to a progressively smaller number from a lowest operating level to a highest operating level of the plurality of operating levels respectively.
- 9. The method as recited in claim 1, wherein the plurality of operating levels include a low operating level, a medium operating level, and a high operating level, and wherein the flow resource limit of the first threshold group ranges from a largest flow resource limit to a smallest flow resource limit from the low operating level to the high operating level respectively.
- 10. The method as recited in claim 1, wherein the resources are clusters.
- 11. The method as recited in claim 1, wherein the resources are packet descriptors.
- 12. The method as recited in claim 1, wherein the resources include packet descriptors and clusters.
- 13. The method as recited in claim 1, wherein the first packet is received by the network switch on a port configured to receive Gigabit Ethernet traffic not using control frame-based flow control.
- 14. A method comprising:
receiving a first one or more packets on a network switch, wherein the network switch comprises a plurality of threshold groups, wherein each threshold group comprises a plurality of flows, and wherein each threshold group is configured to operate in one of a plurality of operating levels from a lowest operating level to a highest operating level; assigning the first one or more packets to a first flow of a first threshold group of the plurality of threshold groups, wherein the first threshold group is at a current operating level, wherein each of the one or more packets requires the use of one or more resources on the network switch, wherein each flow is allowed at most a flow resource limit of resources on the network switch at each operating level of the threshold group, and wherein the flow resource limit ranges from a largest number to a progressively smaller number from the lowest operating level to the highest operating level respectively; determining if storing the first one or more packets in memory of the network switch would cause the first flow to exceed a flow resource limit at the current operating level of the first threshold group; if storing the first one or more packets in the memory of the network switch would not cause the first flow to exceed the flow resource limit at the current operating level of the first threshold group, storing the first one or more packets in the memory of the network switch; and if storing the first one or more packets in the memory of the network switch would cause the first flow to exceed the flow resource limit at the current operating level of the first threshold group, discarding the first one or more packets from the network switch.
- 15. The method as recited in claim 14, further comprising:
if the first one or more packets are stored in the memory of the network switch, and if said storing causes the first threshold group to exceed a resource maximum threshold for the current operating level of the first threshold group, changing the first threshold group to a next higher operating level; wherein a resource maximum threshold for each of the plurality of operating levels is a maximum combined number of resources that the plurality of flows are allowed to use at that particular operating level; and wherein a flow resource limit at the next higher operating level is less than the flow resource limit at the current operating level.
- 16. The method as recited in claim 14, further comprising:
removing a previously stored one or more packets from the first threshold group; and if said removing the previously stored one or more packets causes the first threshold group to drop below a resource minimum threshold for the current operating level of the first threshold group, changing the first threshold group to a next lower operating level; wherein a resource minimum threshold for each of the plurality of operating levels is a minimum combined number of resources that the plurality of flows are allowed to use at that particular operating level.
- 17. The method as recited in claim 16, wherein the resource minimum threshold for the current operating level of the first threshold group is lower than the resource maximum threshold for the next lower operating level of the first threshold group to provide hysteresis between adjacent operating levels of the first threshold group.
- 18. The method as recited in claim 14, further comprising:
if storing the first one or more packets would not cause the first threshold group to exceed a threshold group resource limit for the first threshold group, storing the first one or more packets in the memory of the network switch; and if storing the first one or more packets would cause the first threshold group to exceed the threshold group resource limit for the first threshold group, discarding the first one or more packets from the network switch; wherein the threshold group resource limit for the first threshold group is a maximum combined number of resources that the plurality of flows are allowed to use in the first threshold group.
- 19. The method as recited in claim 14, wherein the plurality of operating levels include a low operating level, a medium operating level, and a high operating level, and wherein the flow resource limit of the first threshold group ranges from a largest flow resource limit to a smallest flow resource limit from the low operating level to the high operating level respectively.
- 20. The method as recited in claim 14, wherein the resources are one of packet descriptors and clusters.
- 21. The method as recited in claim 14, wherein the first one or more packets are received by the network switch on a port configured to receive Gigabit Ethernet traffic not using control frame-based flow control.
- 22. A method comprising:
receiving a plurality of bytes as part of a first data stream on a network switch comprising a memory, wherein the network switch is at a first operating level of a plurality of operating levels, and wherein the network switch is operable to concurrently receive a plurality of data streams; if storing the plurality of bytes of the first data stream in a first location of a plurality of locations of the memory of the network switch would not cause the first data stream to exceed a memory usage limit for data streams at the first operating level, storing the plurality of bytes at the first location of the memory of the network switch; and if storing the plurality of bytes of the first data stream in the first location of the memory of the network switch would cause the first data stream to exceed the memory usage limit for data streams at the first operating level, discarding the plurality of bytes from the network switch; wherein a memory usage limit at each of the plurality of operating levels is a maximum amount of the memory that any one data stream is allowed to use while at that particular operating level.
- 23. The method as recited in claim 22, further comprising:
if the plurality of bytes is stored in the first location of the memory of the network switch, and if said storing the plurality of bytes exceeds a memory usage maximum threshold for the first operating level, changing the network switch to a second operating level; wherein the memory usage maximum threshold for the first operating level is a maximum amount of the memory that the plurality of data streams are allowed to use while the network switch is at the first operating level; and wherein a memory usage limit at the second operating level is less than the memory usage limit at the first operating level.
- 24. The method as recited in claim 23, further comprising:
removing a previously stored plurality of bytes from the memory; and if said removing causes the network switch to drop below a memory usage minimum threshold for the second operating level, changing the network switch to the first operating level; wherein the memory usage minimum threshold for the second operating level is a minimum amount of memory that the plurality of data streams are allowed to use at the second operating level.
- 25. The method as recited in claim 23, wherein there is hysteresis between the first operating level and the second operating level.
- 26. The method as recited in claim 22, further comprising:
if storing the plurality of bytes would exceed a total memory usage limit for the network switch, discarding the plurality of bytes from the network switch; wherein the total memory usage limit is a maximum amount of the memory of the network switch that the plurality of data streams are allowed to use.
- 27. The method as recited in claim 22, wherein the plurality of locations in the memory are clusters.
- 28. The method as recited in claim 22, wherein the plurality of locations in the memory are packet descriptors.
- 29. The method as recited in claim 22, wherein the first data stream received by the network switch is a Gigabit Ethernet data stream not using control frame-based flow control.
- 30. A network switch comprising:
one or more ports configured to receive input packets for the network switch; a random access memory comprising a plurality of memory portions configured for use in storing packets in the network switch; and packet admission logic coupled between a first port of the one or more ports and the random access memory, wherein the packet admission logic comprises one or more threshold groups, wherein each of the one or more threshold groups comprises a plurality of flows, and wherein the packet admission logic is configured to:
receive a first packet on a first port of the one or more ports; assign the first packet to a first flow of a first threshold group of the one or more threshold groups, wherein the first threshold group is at a first operating level; determine if storing the first packet in a first one or more memory portions would cause the first flow to exceed a flow memory portion limit at the first operating level of the first threshold group; store the first packet in the first one or more memory portions if said determining finds that storing the first packet in the first one or more memory portions of the plurality of memory portions would not cause the first flow to exceed the flow memory portion limit at the first operating level of the first threshold group; and discard the first packet from the network switch if said determining finds that storing the first packet in the first one or more memory portions would cause the first flow to exceed the flow memory portion limit at the first operating level of the first threshold group; wherein a flow memory portion limit at each of the plurality of operating levels is a maximum number of memory portions that any one of the plurality of flows is allowed to use at that particular operating level.
- 31. The network switch as recited in claim 30, wherein the packet admission logic is further configured to:
if the first packet is stored in the first one or more memory portions, change the first threshold group to a second operating level if said storing causes the first threshold group to exceed a memory portion maximum threshold for the first operating level of the first threshold group; wherein a memory portion maximum threshold for each of the plurality of operating levels is a maximum combined number of memory portions that the plurality of flows are allowed to use while the first threshold group is at that particular operating level; wherein a flow memory portion limit at the second operating level of the first threshold group is less than the flow memory portion limit at the first operating level of the first threshold group.
- 32. The network switch as recited in claim 31, wherein the packet admission logic is further configured to:
remove a previously stored packet from the first threshold group; and change the first threshold group to the first operating level if said removing the previously stored packet causes the first threshold group to drop below a memory portion minimum threshold for the second operating level of the first threshold group; wherein a memory portion minimum threshold for each of the plurality of operating levels is a minimum combined number of memory portions that the plurality of flows are allowed to use at that particular operating level.
- 33. The network switch as recited in claim 32, wherein the memory portion minimum threshold for the second operating level of the first threshold group is lower than the memory portion maximum threshold for the first operating level of the first threshold group.
- 34. The network switch as recited in claim 30, wherein the packet admission logic is further configured to:
determine if storing the first packet in the first one or more memory portions would cause the first threshold group to exceed a threshold group memory portion limit for the first threshold group, storing the first packet in the memory of the network switch; store the first packet in the first one or more memory portions if said determining finds that storing the first packet in the first one or more memory portions of the plurality of memory portions would not cause the first threshold group to exceed the threshold group memory portion limit for the first threshold group; and discard the first packet from the network switch if said determining finds that storing the first packet in the first one or more memory portions would cause the first threshold group to exceed the threshold group memory portion limit for the first threshold group; wherein the threshold group memory portion limit for the first threshold group is a maximum combined number of memory portions that the plurality of flows are allowed to use in the first threshold group.
- 35. The network switch as recited in claim 30, wherein the flow memory portion limit of the first threshold group ranges from a largest number to a progressively smaller number from a lowest operating level to a highest operating level of the plurality of operating levels respectively.
- 36. The network switch as recited in claim 30, wherein the memory portions are clusters.
- 37. The network switch as recited in claim 30, wherein the memory portions are packet descriptors.
- 38. The network switch as recited in claim 30, wherein the first port is configurable to receive Gigabit Ethernet traffic not using control frame-based flow control.
- 39. A network switch comprising:
one or more ports configured to receive input packets for the network switch; a random access memory comprising a plurality of memory portions configured for use in storing packets in the network switch; and packet admission logic coupled between a first port of the one or more ports and the random access memory, wherein the packet admission logic comprises a plurality of threshold groups, wherein each threshold group comprises a plurality of flows, wherein each threshold group is configured to operate in one of a plurality of operating levels from a lowest operating level to a highest operating level, wherein each flow is allowed at most a flow memory portion limit of memory portions on the network switch at each operating level of the threshold group, and wherein the flow memory portion limit ranges from a largest number to a progressively smaller number from the lowest operating level to the highest operating level respectively, and wherein the packet admission logic is configured to:
receive a first one or more packets on a first port of the one or more ports; assign the first one or more packets to a first flow of a first threshold group of the plurality of threshold groups, wherein the first threshold group is at a current operating level, and wherein each of the one or more packets requires the use of one or more of the plurality of memory portions on the network switch; determine if storing the first one or more packets in a first one or more memory portions of the plurality of memory portions would cause the first flow to exceed a flow memory portion limit at the current operating level of the first threshold group; store the first one or more packets in the first one or more memory portions if said determining finds that storing the first one or more packets in the first one or more memory portions of the plurality of memory portions would not cause the first flow to exceed the flow memory portion limit at the current operating level of the first threshold group; and discard the first one or more packets from the network switch if said determining finds that storing the first one or more packets in the first one or more memory portions of the plurality of memory portions would not cause the first flow to exceed the flow memory portion limit at the current operating level of the first threshold group.
- 40. The network switch as recited in claim 39, wherein the packet admission logic is further configured to:
if the first one or more packets are stored in the first one or more memory portions, change the first threshold group to a next higher operating level if said storing causes the first threshold group to exceed a memory portion maximum threshold for the current operating level of the first threshold group; wherein a memory portion maximum threshold for each of the plurality of operating levels is a maximum combined number of memory portions that the plurality of flows are allowed to use at that particular operating level; and wherein a flow memory portion limit at the next higher operating level is less than the flow memory portion limit at the current operating level.
- 41. The network switch as recited in claim 39, wherein the packet admission logic is further configured to:
remove a previously stored one or more packets from the first threshold group; and change the first threshold group to a next lower operating level if said removing the previously stored one or more packets causes the first threshold group to drop below a memory portion minimum threshold for the current operating level of the first threshold group; wherein a memory portion minimum threshold for each of the plurality of operating levels is a minimum combined number of memory portions that the plurality of flows are allowed to use at that particular operating level.
- 42. The network switch as recited in claim 39, wherein the packet admission logic is further configured to:
determine if storing the first one or more packets in the first one or more memory portions would cause the first flow to exceed a threshold group memory portion limit for the first threshold group; store the first one or more packets in the first one or more memory portions if said determining finds that said storing the first one or more packets would not cause the first flow to exceed the threshold group memory portion limit for the first threshold group; and discard the first one or more packets from the network switch if said determining finds that said storing the first one or more packets would cause the first flow to exceed the threshold group memory portion limit for the first threshold group; wherein the threshold group memory portion limit for the first threshold group is a maximum combined number of memory portions that the plurality of flows are allowed to use in the first threshold group.
- 43. The network switch as recited in claim 39, wherein the memory portions are one of clusters and packet descriptors.
- 44. The network switch as recited in claim 39, wherein the first port is configurable to receive Gigabit Ethernet traffic not using control frame-based flow control.
- 45. A network switch comprising:
one or more ports configured to receive input packets for the network switch; a random access memory comprising a plurality of memory portions configured for use in storing packets in the network switch; and packet admission logic coupled between a first port of the one or more ports and the random access memory, wherein the packet admission logic comprises a plurality of threshold groups, wherein each threshold group comprises a plurality of flows, and wherein the packet admission logic is configured to manage allocation of the plurality of memory portions to packets received on the one or more ports and assigned to one of the plurality of threshold groups and one of the plurality of flows within said threshold group using input thresholding; for each of the plurality of threshold groups, a plurality of registers configured to:
store a total number of memory portions allowed for the threshold group; store information defining a plurality of levels of operation for the threshold group, wherein the threshold group is configured to operate in one of the plurality of levels from a lowest level to a highest level; store a maximum number of memory portions allowed for each flow at each operating level of the threshold group, wherein the maximum number of memory portions allowed to each flow ranges from a largest number to a progressively smaller number from the lowest operating level to the highest operating level respectively; and store at least one of a minimum threshold and a maximum threshold for each operating level in the threshold group, wherein the minimum threshold for a level is configured for use in determining if the threshold group is to be changed to a lower operating level after removing one or more previously received packets, and wherein the maximum threshold is configured for use in determining if the threshold group is to be changed to a higher operating level after storing one or more packets.
- 46. The network switch as recited in claim 45, wherein the registers are programmable registers.
- 47. The network switch as recited in claim 45, wherein at least one of the one or more ports is configurable to receive Gigabit Ethernet traffic not using control frame-based flow control.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefit of U.S. Provisional Application No. 60/308,934, filed Jul. 31, 2001.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60308934 |
Jul 2001 |
US |