Systems and methods for flow control and quality of service
View Patent ↗Various embodiments of methods and systems for pausing and shaping data flow while supporting both parameterized and prioritized Quality of Service are disclosed. In some embodiments, a system for pausing and shaping data flow comprises an input buffer, a first pause controller coupled to the input buffer and an output buffer for flow control messages. Various embodiments also include a hop-1 buffer coupled to the input buffer and a hop-2 buffer comprising a plurality of queues coupled to the hop-1 buffer. Additionally, in some embodiments, a second pause controller is coupled to the queues. The second pause controller selects a queue or queues that will cause a pause to be generated based on a predetermined condition. A two-hop process controller controls the data packet flow from the input buffer to the hop-1 buffer and from the hop-1 buffer to the hop-2 queues based on packet classification.
1. A method of pausing data flow comprising:
receiving data at an input buffer coupled to a pause controller;
controlling the flow of data from the input buffer into a queue of a plurality of queues in a hop-2 buffer via an intermediate hop-1 buffer, each queue of the plurality of queues being associated with a quality of service; and
selecting, via a flow controller other than the pause controller, the queue of the plurality of queues that will cause a pause to be generated based on a predetermined condition according to a fullness of the hop-2 buffer and the quality of service associated with the queue.
2. The method of claim 1 , wherein the method comprises assigning a priority to the queue of the plurality of queues and generating a pause based on the priority.
3. The method of claim 2 , wherein the priority is assigned based on a class of traffic being received by the queue.
4. The method of claim 1 , wherein the method comprises communicating a pause signal to a transmitting device.
5. The method of claim 1 , wherein the method comprises causing the transmitting device to pause a specific data stream.
6. A system pausing data flow comprising:
an input buffer operable to receive data, the input buffer being coupled to a pause controller;
an intermediate hop-1 buffer;
a plurality of queues in a hop-2 buffer, each queue of the plurality of queues being associated with a quality of service, each queue of the plurality of queues being able to cause a pause to be generated based on a different predetermined condition according to a fullness of the hop-2 buffer and the quality of service associated with the queue; and
a flow controller operable to control the flow of data from the input buffer into a queue of the plurality of queues in the hop-2 buffer by way of the intermediate hop-1 buffer, wherein the flow controller is different than the pause controller.
7. The system of claim 6 , wherein each queue of the plurality of queues is assigned a priority, the pause being generated according to the assigned priority.
8. The system of claim 7 , wherein the priority is assigned based on a class of traffic being received by the queue.
9. The system of claim 6 , wherein the flow controller is operable to communicate a pause signal to a transmitting device.
10. The system of claim 6 , wherein the flow controller is operable to cause the transmitting device to pause a data stream according to the different predetermined condition.
11. A system pausing data flow comprising:
an input buffer coupled to a pause controller;
an intermediate hop-1 buffer coupled to the input buffer;
at least two queues in a hop-2 buffer coupled to the intermediate hop-1 buffer, the at least two queues comprising a first queue and a second queue; and
a flow controller coupled to the input buffer and coupled to the at least two queues, wherein the flow controller is different than the pause controller and is configured to:
transfer data from the input buffer to the intermediate hop-1 buffer;
classify the transferred data according to quality of service;
transfer the classified data from the intermediate hop-1 buffer to a queue in the at least two queues;
cause a transmission of a first data stream to be paused based on the amount of data in the first queue;
cause a transmission of a second data stream to be paused based on the amount of data in the second queue;
cause a first data stream to be transmitted based on the amount of data in the first queue; and
cause a second data stream to be transmitted based on the amount of data in the second queue.
12. The system of claim 11 , wherein the first queue is a high priority queue.
13. The system of claim 11 , wherein the second queue is a low priority queue.
14. The system of claim 6 , wherein the first queue and the second queue are each associated with a different class of traffic.
15. The system of claim 6 , wherein the flow controller is operable to communicate a pause signal to a transmitting device.
16. The system of claim 15 , wherein the pause signal specifies a data stream to be paused.
17. The system of claim 15 , wherein the pause signal specifies a priority of the data to be paused.
18. The system of claim 6 , wherein the flow controller is operable to communicate a retransmit signal to a transmitting device.
19. The system of claim 18 , wherein the retransmit signal specifies a data stream to be transmitted.
20. The system of claim 18 , wherein the retransmit signal specifies a priority of the data to be transmitted.