Network switch with quality of service flow control
First Claim
Patent Images
1. A network switching device comprising:
- an ingress module configured to receive frames of data from a first channel, and store the frames of data in one or more buffers, wherein each frame of data has one of a plurality of classes of service;
one or more queues;
a forwarding module configured to enqueue each of the one or more buffers by sending a pointer for each of the one or more buffers to one or more queues after the ingress module stores the frames of data in one or more of the one or more buffers; and
a plurality of counters comprising one counter for each of the classes of service, wherein each of the counters is configured tostore a count for the first channel for a respective one of the classes of service,increment the count when the forwarding module enqueues one of the buffers storing one of the frames of data having the respective class of service, anddecrement the count after the frame of data stored in a buffer for a frame received from the first channel and having the respective class of service is transmitted from the network switching device; and
an egress module configured to retrieve the frames of data from the one or more buffers, transmit the retrieved frames of data to a second channel, and exercise flow control on the first channel for each of the classes of service when the count for the class of service exceeds a dynamic pause threshold for the class of service, the dynamic pause threshold defined by
Pondyn=Kon×
FreeSize±
Offset,wherein Pondyn is the dynamic pause threshold, Kon and Offset are constants and Freesize is a number of pointers available for the received frames of data.
4 Assignments
0 Petitions
Accused Products
Abstract
A network switching device, and corresponding method and computer program, comprising an ingress module adapted to receive frames of data from a channel, wherein each frame of data has one of a plurality of classes of service, and to store the data in one or more buffers; and an egress module adapted to exercise flow control on the channel for each of the classes of service when the number of the buffers storing frames of data received from the channel and having the class of service but not yet transmitted from the network switching device exceeds a predetermined threshold for the class of service.
103 Citations
44 Claims
-
1. A network switching device comprising:
-
an ingress module configured to receive frames of data from a first channel, and store the frames of data in one or more buffers, wherein each frame of data has one of a plurality of classes of service; one or more queues; a forwarding module configured to enqueue each of the one or more buffers by sending a pointer for each of the one or more buffers to one or more queues after the ingress module stores the frames of data in one or more of the one or more buffers; and a plurality of counters comprising one counter for each of the classes of service, wherein each of the counters is configured to store a count for the first channel for a respective one of the classes of service, increment the count when the forwarding module enqueues one of the buffers storing one of the frames of data having the respective class of service, and decrement the count after the frame of data stored in a buffer for a frame received from the first channel and having the respective class of service is transmitted from the network switching device; and an egress module configured to retrieve the frames of data from the one or more buffers, transmit the retrieved frames of data to a second channel, and exercise flow control on the first channel for each of the classes of service when the count for the class of service exceeds a dynamic pause threshold for the class of service, the dynamic pause threshold defined by
Pondyn=Kon×
FreeSize±
Offset,wherein Pondyn is the dynamic pause threshold, Kon and Offset are constants and Freesize is a number of pointers available for the received frames of data. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A network switching device comprising:
-
ingress module means for receiving frames of data from a first channel, wherein each frame of data has one of a plurality of classes of service, and storing the data in one or more buffers; one or more queue means for queuing the one or more buffers; forwarding module means for enqueuing each of the one or more buffers by sending a pointer for each of the one or more buffers to one or more of the one or more queue means after the ingress module means stores one of the frames of data in the one or more buffers; a plurality of counter means comprising one counter means for each of the classes of service, each of the counter means for; storing a count for the first channel for a respective one of the classes of service, incrementing the count when the forwarding module enqueues one of the buffers storing one of the frames of data having the respective class of service, and decrementing the count after the frame of data stored in a buffer, from the first channel and having the respective class of service is transmitted from the network switching device; and egress module means for retrieving the frames of data from the one or more buffers, outputting the frames of data to a second channel and exercising flow control on the first channel for each of the classes of service when the count for the class of service exceeds a dynamic pause threshold for the class of service, the dynamic pause threshold defined by
Pondyn=Kon×
FreeSize±
Offset,wherein Pondyn is the dynamic pause threshold, Kon and Offset are constants and Freesize is a number of pointers available for the received frames of data. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. A method comprising:
-
receiving frames of data from a first channel via an ingress module, wherein each frame of data has one of a plurality of classes of service; storing the frames of data in one or more buffers; enqueueing each of the one or more buffers by sending a pointer for each of the one or more buffers to one or more output queues after storing one of the frames of data in the buffer; storing a count for the first channel for each of the classes of service; incrementing the count for one of the classes of service enqueueing one of the buffers storing one of the frames of data received from the first channel and having the one of the classes of service; decrementing the count for one of the classes of service after the frame of data stored in a buffer, received from the first channel and having the one of the classes of service is transmitted; exercising flow control on the first channel for each of the classes of service using an egress module when the count for one of the classes of service exceeds a dynamic pause threshold for the class of service; retrieving the frames of data from the one or more buffers; and transmitting the retrieved frames of data to a second channel via the egress module, wherein the dynamic pause threshold is defined by
Pondyn=Kon×
FreeSize±
Offset,wherein Pondyn is the dynamic pause threshold, Kon and Offset are constants and Freesize is a number of pointers available for the received frames of data. - View Dependent Claims (22, 23, 24)
-
-
25. A computer readable medium having a stored computer program embodying instructions executable by a computer, which, when executed by the computer, cause the computer to control an apparatus having an ingress module connected to a first channel and an egress module connected to a second channel, the instructions comprising:
-
instructions for receiving frames of data from the first channel via the ingress module, wherein each frame of data has one of a plurality of classes of service; instructions for storing the frames of data in one or more buffers; instructions for enqueueing each of the one or more buffers by sending a pointer for each of the one or more buffers to one or more output queues after storing the data for one of the frames in the buffer; instructions for storing a count for the first channel for each of the classes of service; instructions for incrementing the count for one of the classes of service when enqueueing one of the buffers storing the data for one of the frames received from the first channel and having one of the classes of service, and instructions for decrementing the count for one of the classes of service after the data stored in a buffer for a frame received from the first channel and having the one of the classes of service is transmitted; instructions for causing the egress module to exercise flow control on the first channel for each of the classes of service when the count for the class of service exceeds a dynamic pause threshold for the class of service; instructions for retrieving the frames of data from the one or more buffers; and instructions for transmitting the retrieved frames of data via the egress module to the second channel, wherein the dynamic pause threshold is defined by
Pondyn=Kon×
FreeSize±
Offset,wherein Pondyn is the dynamic pause threshold, Kon and Offset are constants and Freesize is a number of pointers available for the received frames of data. - View Dependent Claims (26, 27, 28)
-
-
29. A network switching device comprising:
-
a plurality of counters for a plurality of classes of service, respectively, each counter configured to; store a count for a respective one of the classes of service; increment the count when one of buffers storing one or more frames of data having the respective class of service is enqueued by sending a pointer for each of the one or more buffers to one or more output queues; and decrement the count after the one or more frames of data stored in the one or more buffers is transmitted from the network switching device; an egress module configured to retrieve the one or more frames of data from the buffers and output the retrieved one or more frames to a destination channel, the egress module further configured to generate a pause frame indicating one or more of the classes of service to be paused when one or more counts for the one or more classes of service exceed a dynamic pause threshold for the one or more classes of service; and an ingress module configured to receive the one or more frames from a source channel and store the one or more frames to the buffers wherein the dynamic pause threshold is defined by
Pondyn=Kon×
FreeSize±
Offset,wherein Pondyn is the dynamic pause threshold, Kon and Offset are constants and Freesize is a number of pointers available for the ingress module. - View Dependent Claims (30, 31, 32, 33, 34, 35)
-
-
36. A network switching device comprising:
-
means for receiving one or more frames of data from a source channel; means for storing a plurality of counts for a plurality of classes of service, respectively; means for incrementing each count upon enqueuing one or more buffers storing the one or more frames of data by sending a pointer for each of the one or more buffers to one or more output queues, each of the frames of data having one of the classes of service; and means for decrementing each count after the one or more frames of data stored in the one or more buffers are transmitted from the network switching device; and means for outputting the one or more frames of data stored in the one or more buffers to a destination channel, wherein the means for outputting generates a pause frame indicating one or more classes of services to be paused when the one or more counts for the respective classes of service exceed a dynamic Pause threshold for the respective classes of service, wherein the dynamic pause threshold is defined by
Pondyn=Kon×
FreeSize±
Offset,wherein Pondyn is the dynamic pause threshold, Kon and Offset are constants and Freesize is a number of pointers available for the received frames of data. - View Dependent Claims (37, 38, 39, 40)
-
-
41. A method comprising:
-
receiving one or more frames of data from a source channel via an ingress module; storing a plurality of counts for a plurality of classes of service, respectively; incrementing each count upon enqueuing one or more buffers storing the one or more frames of data by sending a pointer for each of the one or more buffers to one or more output queues, each frame of data having one of the classes of service; decrementing each count after the one or more frames of data stored in the one or more buffers and having the one of the classes of service are transmitted from the network switching device; causing an egress module to generate a pause frame indicating that one or more of the classes of service to be paused when one or more counts for the respective classes of service exceed a dynamic pause threshold for the respective classes of service; sending the pause frame to a source channel ingress module; retrieving the one or more frames of data stored in the one or more buffers; and outputting the retrieved one or more frames to a destination channel via the egress module, wherein the dynamic pause threshold is defined by
Pondyn=Kon×
FreeSize±
Offset,wherein Pondyn is the dynamic pause threshold, Kon and Offset are constants and Freesize is a number of pointers available for the received frames of data. - View Dependent Claims (42)
-
-
43. A computer readable medium having a stored computer program embodying instructions, which, when executed by a computer, cause the computer to control an apparatus having an ingress module connected to a source channel and an egress module connected to a destination channel, the instructions comprising:
-
instructions for receiving one or more frames of data from a source channel via an ingress module; instructions for storing a plurality of counts for the source channel for a plurality of classes of service, respectively; instructions for incrementing each count upon enqueuing one or more buffers storing the one or more frames of data having the respective class of service by sending a pointer for each of the one or more buffers to one or more output queues; instructions for decrementing each count after the one or more frames of data stored in the one or more buffers and having the respective class of service is transmitted from the network switching device; and instructions for causing the egress module to generate a pause frame indicating that one or more classes of services to be paused when one or more counts for the respective classes of service exceed a dynamic pause threshold for the respective classes of service, wherein the dynamic pause threshold is defined by
Pondyn=Kon×
FreeSize±
Offset,wherein Pondyn is the dynamic pause threshold, Kon and Offset are constants and Freesize is a number of pointers available for the received frames of data. - View Dependent Claims (44)
-
Specification