Method and apparatus for providing buffer state flow control at the link level in addition to flow control on a per-connection basis
First Claim
Patent Images
1. A method of sharing a finite number of buffers within a receiver, said receiver being connected to a transmitter via a flow controlled connection, said method comprising the steps of:
- dynamically adjusting a number of buffers available to said connection;
generating a first count indicative of the number of data cells transmitted through said connection by said transmitter to said receiver;
generating a second count indicative of data cells currently being transmitted through said connection by said transmitter to said receiver and indicative of data cells not known to be released from a subset of said buffers in said receiver;
generating a third count indicative of the total number of buffers in said receiver presently storing data cells;
generating a fourth count indicative of data cells transmitted from said transmitter and released from buffers in said receiver;
dynamically adjusting a number of data cells releasable from buffers in said receiver during a first interval; and
storing a number of data cells actually released from buffers in said receiver during said first interval.
0 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus for providing buffer state accounting at a link level, otherwise known as link flow control, in addition to flow control at the virtual connection level. Link flow control enables receiver cell buffer sharing while maintaining per-connection bandwidth with lossless cell transmission. High link level update frequency is enabled without a significant sacrifice in overall link forward bandwidth. A higher and thus more efficient utilization of receiver cell buffers is achieved.
331 Citations
29 Claims
-
1. A method of sharing a finite number of buffers within a receiver, said receiver being connected to a transmitter via a flow controlled connection, said method comprising the steps of:
-
dynamically adjusting a number of buffers available to said connection;
generating a first count indicative of the number of data cells transmitted through said connection by said transmitter to said receiver;
generating a second count indicative of data cells currently being transmitted through said connection by said transmitter to said receiver and indicative of data cells not known to be released from a subset of said buffers in said receiver;
generating a third count indicative of the total number of buffers in said receiver presently storing data cells;
generating a fourth count indicative of data cells transmitted from said transmitter and released from buffers in said receiver;
dynamically adjusting a number of data cells releasable from buffers in said receiver during a first interval; and
storing a number of data cells actually released from buffers in said receiver during said first interval. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
dynamically adjusting a number of buffers available for storage of data cells received from said transmitter via said connection.
-
-
3. The method according to claim 2, wherein said number of buffers available for storage of data cells received from said transmitter is dynamically adjusted based upon current buffer demands in said receiver for said connection.
-
4. The method according to claim 2, wherein said number of buffers available for storage of data cells received from said transmitter is dynamically adjusted based upon a priority associated with said connection.
-
5. The method according to claim 1, wherein said number of buffers available and said number of data cells releasable are dynamically adjusted based upon current buffer demands in said receiver for said connection.
-
6. The method according to claim 1, wherein said number of buffers available and said number of data cells releasable are dynamically adjusted based upon a priority associated with said connection.
-
7. The method according to claim 1, wherein said number of buffers available and said number of data cells releasable are dynamically adjusted based upon an input to said transmitter and receiver from an external source.
-
8. The method according to claim 1, wherein said step of dynamically adjusting said number of buffers available to said connection further comprises dynamically adjusting said number of buffers in a first storage location in said transmitter.
-
9. The method according to claim 1, wherein said steps of generating said first and second counts are performed in said transmitter.
-
10. The method according to claim 1, wherein said steps of generating said third and fourth counts are performed in said receiver.
-
11. The method according to claim 1, wherein said step of dynamically adjusting said number of data cells releasable from buffers in said receiver during said first interval further comprises dynamically adjusting said number of data cells in a second storage location in said receiver.
-
12. The method according to claim 1, wherein said step of storing said number of data cells actually released from buffers in said receiver during said first interval further comprises storing said number of data cells actually released in a third storage location in said receiver.
-
13. The method according to claim 1, wherein said step of dynamically adjusting a number of buffers available to said connection further comprises dynamically adjusting a maximum number of buffers available to said connection.
-
14. The method according to claim 1, wherein said step of dynamically adjusting a number of data cells releasable from buffers in said receiver during a first interval further comprises dynamically adjusting a maximum number of data cells releasable from buffers in said receiver during said first interval.
-
15. A method of sharing a finite number of buffers within a receiver, said receiver being connected to a transmitter via a flow controlled connection, said method comprising the steps of:
-
dynamically adjusting a number of buffers available to said connection;
generating a first count indicative of the number of data cells transmitted through said connection by said transmitter to said receiver;
generating a second count indicative of data cells currently being transmitted through said connection by said transmitter to said receiver and indicative of data cells not known to be released from a subset of said buffers in said receiver;
generating a third count indicative of the total number of buffers in said receiver presently storing data cells;
generating a fourth count indicative of data cells received in said receiver from said transmitter via said connection;
dynamically adjusting a number of data cells releasable from buffers in said receiver during a first interval; and
storing a number of data cells actually released from buffers in said receiver during said first interval. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29)
dynamically adjusting a number of buffers available for storage of data cells received from said transmitter via said connection.
-
-
17. The method according to claim 16, wherein said number of buffers available for storage of data cells received from said transmitter is dynamically adjusted based upon current buffer demands in said receiver for said connection.
-
18. The method according to claim 16, wherein said number of buffers available for storage of data cells received from said transmitter is dynamically adjusted based upon a priority associated with said connection.
-
19. The method according to claim 15, wherein said number of buffers available and said number of data cells releasable are dynamically adjusted based upon current buffer demands in said receiver for said connection.
-
20. The method according to claim 15, wherein said number of buffers available and said number of data cells releasable are dynamically adjusted based upon a priority associated with said connection.
-
21. The method according to claim 15, wherein said number of buffers available and said number of data cells releasable are dynamically adjusted based upon an input to said transmitter and said receiver from an external source.
-
22. The method according to claim 15, wherein said step of dynamically adjusting said number of buffers available to said connection further comprises dynamically adjusting said number of buffers in a first storage location in said transmitter.
-
23. The method according to claim 15, wherein said steps of generating said first and second counts are performed in said transmitter.
-
24. The method according to claim 15, wherein said steps of generating said third and fourth counts are performed in said receiver.
-
25. The method according to claim 15, wherein said step of dynamically adjusting said number of data cells releasable from buffers in said receiver during said first interval further comprises dynamically adjusting said number of data cells in a second storage location in said receiver.
-
26. The method according to claim 15, wherein said step of storing said number of data cells actually released from buffers in said receiver during said first interval further comprises storing said number of data cells actually released in a third storage location in said receiver.
-
27. The method according to claim 16, wherein said step of dynamically adjusting said number of buffers available for storage of data cells received from said transmitter via said connection further comprises dynamically adjusting, in a third storage location within said receiver, said number of buffers available for storage of data cells.
-
28. The method according to claim 15, wherein said step of dynamically adjusting a number of buffers available to said connection further comprises dynamically adjusting a maximum number of buffers available to said connection.
-
29. The method according to claim 15, wherein said step of dynamically adjusting a number of data cells releasable from buffers in said receiver during a first interval further comprises dynamically adjusting a maximum number of data cells releasable from buffers in said receiver during said first interval.
Specification