Search Images Maps Play YouTube News Gmail Drive More »
Advanced Patent Search | Web History | Sign in

Patents

The method and system for buffering packets such as ATM cells at a queueing point of a device which employs a connection-orientated communications protocol includes the steps of logically partitioning a memory into plural reserved buffer spaces allocated to traffic classes and a shared buffer space available to any connection; determining whether to store or discard a given packet based on predetermined discard criteria; and filling the reserved buffer space to a predetermined state of congestion before storing the given packet in the shared buffer space. Reserved buffer space congestion states are defined with respect to individual connections, groups of connections, and the total capacity of the reserved buffer space itself. Packets are discarded when any, or alternatively a specific combination, of corresponding congestion states occur, and the shared space is congested as well. The system facilitates the balance between the sharing of physical memory resources amongst distinct...

InventorsEsmond Ho, Tom Davis, Ganti Sudhakar, Kostic Predrag, Hossain Pezeshki-Esfahani, Charlie Sabry, Natalie Giroux
Original AssigneeAlcatel Canada Inc.
Primary Examiner: Wellington Chin
Secondary Examiner: Raj Jain
Attorney: Marks & Clerk
Current U.S. Classification370/412; 370/230; 370/231
International Classification: H04L/1228; H04L/1256

View patent at USPTO
Search USPTO Assignment Database

Citations

Cited PatentFiling dateIssue dateOriginal AssigneeTitle
US5999518Dec 4, 1997Dec 7, 1999Alcatel USA Sourcing, L.P.Distributed telecommunications switching system and method
US6115748Jul 18, 1996Sep 5, 2000Fujitsu Network Communications, Inc.
Fujitsu Limited
Prioritized access to shared buffers
US6219728Apr 22, 1996Apr 17, 2001Nortel Networks LimitedMethod and apparatus for allocating shared memory resources among a plurality of queues each having a threshold value therefor
US6377546May 12, 1998Apr 23, 2002International Business Machines CorporationRate guarantees through buffer management

Referenced by

Citing PatentFiling dateIssue dateOriginal AssigneeTitle
US6922396Dec 29, 2000Jul 26, 2005Cisco Technology, Inc.System and method for managing time sensitive data streams across a communication network
US7120114Jul 13, 2000Oct 10, 2006Juniper Networks, Inc.Call admission control method and system
US7197042Jun 1, 2001Mar 27, 20074198638 Canada Inc.Cell-based switch fabric with cell-to-line-card control for regulating injection of packets
US7209440May 7, 2002Apr 24, 2007Marvell International Ltd.Method and apparatus for preventing blocking in a quality of service switch
US7277429Jun 1, 2001Oct 2, 20074198638 Canada Inc.Cell-based switch fabric with distributed scheduling
US7321554Apr 24, 2007Jan 22, 2008Marvell International Ltd.Method and apparatus for preventing blocking in a quality of service switch
US7366802Oct 29, 2004Apr 29, 2008Intel CorporationMethod in a frame based system for reserving a plurality of buffers based on a selected communication protocol
US7382728May 30, 2002Jun 3, 2008Via Technologies, Inc.Networking switching apparatus and method for congestion control
US7447826Mar 31, 2004Nov 4, 2008Intel CorporationReceive buffer in a data storage system
US7574204Dec 21, 2005Aug 11, 2009Research In Motion LimitedMemory full pipeline
US7616564Aug 28, 2006Nov 10, 2009Juniper Networks, Inc.Call admission control method and system
US7764703Sep 19, 2006Jul 27, 2010Marvell International Ltd.Apparatus and method for dynamically limiting output queue size in a quality of service network switch
US7797482Jun 15, 2005Sep 14, 2010Rohm Co., Ltd.Method of reading from and writing to a storage disk, and storage disk control unit
US7801163Apr 13, 2006Sep 21, 2010Buffer management policy for shared memory switches
US7813348Nov 3, 2004Oct 12, 2010Extreme Networks, Inc.Methods, systems, and computer program products for killing prioritized packets using time-to-live values to prevent head-of-line blocking
US7843961Jul 25, 2005Nov 30, 2010International Business Machines CorporationHardware device emulation
US7852856Dec 17, 2004Dec 14, 2010System and method for providing pooling or dynamic allocation of connection context data
US7920471Sep 30, 2009Apr 5, 2011Juniper Networks, Inc.Call admission control method and system
US8005079Jul 13, 2009Aug 23, 2011Marvell International Ltd.Network switch having virtual input queues for flow control
US8009689Jul 21, 2010Aug 30, 2011Marvell International Ltd.Apparatus and method for dynamically limiting output queue size in a quality of service network switch
US8055867Jan 11, 2008Nov 8, 2011International Business Machines CorporationMethods, apparatuses, and computer program products for protecting pre-staged provisioned data in a storage system
US8072887Feb 7, 2005Dec 6, 2011Extreme Networks, Inc.Methods, systems, and computer program products for controlling enqueuing of packets in an aggregated queue including a plurality of virtual queues using backpressure messages from downstream queues
US8078148Jan 29, 2009Dec 13, 2011Research In Motion LimitedMemory full pipeline
US8121035Feb 11, 2008Feb 21, 2012Samsung Electronics Co., Ltd.Apparatus and method for packet buffer management in IP network system
US8145787Oct 16, 2001Mar 27, 2012Cisco Technology, Inc.Adaptive bandwidth utilization over fabric links

Claims

1. A buffering system for use in a digital communications device employing a connection-oriented protocol, said system comprising:

a memory for storing messages;
a controller connected to the memory for determining whether to store or discard messages based on predetermined discard criteria, and including means for storing messages in the memory,
wherein the memory is logically partitioned into plural reserved buffer spaces of predetermined size allocated to predetermined groups of traffic flows and a shared buffer space, said groups of traffic flows being groups of virtual connections, each connection group being associated with a single class of communications traffic, and each virtual connection comprising stream of messages; and
wherein the controller is enabled to logically fill each reserved buffer space to a predetermined state of congestion before logically storing messages belonging to the corresponding traffic group in the shared buffer space;
wherein each traffic group is associated with a bound on its utilization of the shared buffer space and wherein a shared space congestion is asserted against a given traffic group when its corresponding bound is reached; and
wherein connections are provisioned with a maximum connection queue depth limit and wherein said discard criteria includes the event of a given connection reaching an amount of stored messages equal to the corresponding maximum connection queue depth limit.

2. The system according to claim 1, wherein the shared space bound for a given traffic group comprises least one of (a) a limit on an absolute number of messages that the traffic group can store in the shared buffer space, and (b) a threshold relating to a degree of occupancy of the shared buffer space.

3. The system according to claim 1, wherein said controller is enabled to logically store a given message in the shared buffer space when the corresponding reserved buffer space is logically filled to capacity bat has not yet reached its predetermined congestion state.

4. The system according to claim 1, wherein the reserved buffer space congestion state includes the reserved buffer space being filled to capacity.

5. The system according to claim 1, wherein the discard criteria includes a reserved buffer space reaching its congestion state and shared space congestion is asserted against the corresponding traffic group.

6. The system according to claim 1, wherein each reserved buffer space is sized to provide a minimum quality of service to the corresponding group of connections.

7. The system according to claim 1, wherein the maximum connection queue depth limit for a given connection is dynamic, being proportional to a weight associated with the given connection and inversely proportional to a sum of weights associated with a predefined group of connections.

8. The system according to claim 1, wherein at least one said connection group is further logically subdivided into one or more sub-groups, each sub-group being provisioned with a size threshold for the number of messages that the connections thereof may store in the memory, and wherein said reserved buffer space congestion state includes the state of a sub-group size threshold associated with a particular message being reached.

9. The system according to claim 8, wherein plural sub-group size thresholds of a given connection group define in aggregate a logical memory space larger than the buffer space allotted to the given connection group.

10. The system according to claim 8, wherein at least one said connection group is further logically subdivided into one or more sub-groups, each sub-group being provisioned with a size threshold for the number of messages that the connections thereof may store in the memory, and wherein said discard criteria includes the event that the sub-group size threshold associated with a given message is reach and shared space congestion is asserted against the corresponding connection group.

11. The system according to claim 1, wherein at least one connection is provisioned with a size threshold for the number of messages that the connection may store in the memory, and wherein said reserved buffer space congestion state includes the event that the connection size threshold associated with a given message is reached.

12. The system according to claim 1, wherein at least one connection is provisioned with a size threshold for the number of messages that the connection may store in the memory, and wherein said discard criteria includes the event that the connection size threshold associated with a given message is reached and shared space congestion is asserted against the corresponding connection group.

13. The system according to claim 1, wherein:

at least one said connection group is further logically subdivided into one or more sub-groups of connections, each sub-group being provisioned with a size threshold for the number of messages that the connections thereof may logically have stored in the memory,
connections within said connection sub-group are separately provisioned with a size threshold for the number of messages that may be stored in the memory for those connections, and
said reserved buffer space congestion state includes the associated sub-group size threshold being reached and the associated connection size threshold being reached for a given message.

14. The system according to claim 1, wherein:

at least one said connection group is further logically subdivided into one or more sub-groups of connections, each sub-group being provisioned with a size threshold for the number of messages that the connections thereof may logically have stored in the memory,
connections within said connection sub-group are separately provisioned with a size threshold for the number of messages that may be stored in the memory for those connections, and
said discard criteria includes the event that the size threshold of a given connection is reached, the size threshold of the corresponding sub-group is reached, and shared space congestion is asserted against the corresponding connection group.

15. The system according to claim 1, wherein the connection orientated protocol is an asynchronous transfer mode (ATM) communications protocol, and said messages are ATM cells.

16. The system according to claim 15, wherein connections are provisioned with a maximum connection queue depth limit and wherein said congestion criteria includes the event of a given connection reaching an amount of stored messages equal to the corresponding maximum connection queue depth limit.

17. The system according to claim 16, wherein the maximum connection queue depth limit for a given connection associated with a minimum cell rate is dynamic, being proportional to the minimum cell rate of the given connection and inversely proportional to a sum of minimum cell rates associated with a predefined group of connections.

18. The system according to claim 17, wherein the given connection is associated with a communications port and the predefined group of connections includes all active connections of thie same class as the given connection which are associated with the same communications port.

19. The system according to claim 18, wherein connections are configurable for at least one of cell discard, partial frame discard and early frame discard, and the controller is enabled to respectively perform at least one of cell discard, partial frame discard and early frame discard.

20. The system according to claim 15, wherein:

at least one said connection group is further logically subdivided into one or more sub-groups of connection, each sub-group being provisioned with a size threshold for the number of cells that the connections thereof may logically have stored in the memory, connections within said connection sub-group arm separately provisioned with a size threshold for the number of cells that may be stored in the memory, and
said reserved buffer space congestion state includes the associated sub-group size threshold being reached and the associated connection size threshold being reached for a given cell.

21. The system according to claim 20, wherein said discard criteria includes the event that the size threshold of a given connection is reached, the size threshold of the corresponding sub-group is reached, and shared space congestion is asserted against the corresponding connection group.

22. The system according to claim 20, wherein said sub-group size threshold and said connection size threshold vary depending on the cell loss priority of a cell under consideration.

23. The system according to claim 20, wherein the sub-group size thresholds of a given connection group define in aggregate a logical space larger than the buffer space allocated thereto.

24. The system according to claim 20, wherein connections are configurable for at least one of cell discard, partial frame discard and early frame discard, and the controller is enabled to respectively perform at least one of cell discard, partial frame discard and early frame discard.

25. A buffering system for use at a queueing point in a digital communications device, said system comprising:

a memory for storing messages;
a controller connected to the memory for determining whether to store or discard messages based on predetermined discard criteria, and including means for storing messages in the memory,
said memory being logically partitioned into plural reserved buffer spaces allocated to groups of traffic flows and a shared buffer space, wherein each said traffic group is associated with a bound on the utilization of the shared space access restriction,
said traffic groups being further logically subdivided into one or more sub-groups, each sub-group being provisioned with a size threshold for the number of messages that the sub-group may store in the memory,
wherein said discard criteria in respect of a given message includes the corresponding sub-group size threshold being reached and the corresponding traffic group shared space utilization bound being reached, and
wherein the sub-group size thresholds of a given traffic group define in aggregate a logical space larger than the buffer space of the given traffic group.

26. The system according to claim 25, wherein the shared space bound for a given traffic group comprises least one of (a) a limit on an absolute number of messages that the connectivity group can store in the shared buffer space, and (b) a threshold relating to a degree of occupancy of the shared buffer space.

27. The system according to claim 25, wherein said traffic groups comprise groups of virtual connections, wherein connections within a given connection group are separately provisioned with a size threshold for the number of messages that may be stored in the memory, and wherein said discard criteria includes a given connection size threshold being reached, the corresponding traffic sub-group size threshold being reached, and the corresponding traffic group shared space bound being reached.

28. The system according to claim 27, wherein the connection size threshold for a given connection is dynamic, being proportional to a weight associated with the given connection and inversely proportional to a sum of weights associated with a predefined group of connections having similar quality of service characteristics.

29. The system according to claim 28, wherein said traffic sub-group size threshold and said connection size threshold vary depending on a priority level of a given message.

30. A buffering system for use in a communications device employing a connection-orientated communications protocol, said system comprising:

a memory for storing digital messages associated with various connections;
a controller connected to the memory for determining whether to store or discard a given message based on predetermined discard criteria, including the event that a given connection reaches an amount of stored messages equal to a dynamic maximum connection queue depth limit which is proportional to a weight associated with the given connection and inversely proportional to a sum of weights associated with a predefined group of connections.

31. The system according to claim 30, wherein the connection orientated protocol is an asynchronous transfer mode (ATM) communications protocol, said messages are ATM cells, and said weight is a minimum cell rate.

32. The system according to claim 31, wherein the given connection is associated with a communications port and the predefined group of connections includes all active connections of the same class as the given connection which are associated with the same communications port.

33. A method of buffering digital messages at a queueing point in a digital communications device employing a connection-orientated protocol, the method comprising:

logically partitioning a memory into plural reserved buffer spaces allocated to predetermined groups of traffic flows and a shared buffer space, said traffic groups being groups of virtual connections, each virtual connection group being associated with a single class of communications traffic, and each virtual connection comprising a stream of messages;
determining whether to store or discard a given message based on predetermined discard criteria; and
logically filling the reserved buffer spaces of predetermined size to a predetermined state of congestion before logically storing messages in the shared buffer space provided the given message is not discarded; and
wherein connections are provisioned with a maximum connection queue depth limit and wherein said discard criteria includes the event of a given connection reaching an amount of stored messages equal to the corresponding maximum connection queue depth limit.

34. The method according to claim 33, wherein each said traffic group is associated with a bound on its utilization of the shared space and wherein a shared space congestion is asserted against a given traffic group when its shared space bound is reached.

35. The method according to claim 34, wherein the shared space bound for a given traffic group comprises one of (a) a limit on an absolute number of messages that the traffic group can store in the shared buffer space, and (b) a threshold relating to a degree of occupancy of the shared buffer space.

36. The method according to claim 34, including the step of storing a given message in the shared buffer space when the corresponding reserved buffer space is logically filled to capacity but has not yet reached its predetermined congestion state.

37. The method according to claim 34, wherein said reserved buffer space congestion state includes the reserved buffer space being filled to capacity.

38. The method according to claim 34, wherein said discard criteria includes a reserved buffer space reaching its congestion state and shared space congestion being asserted against the corresponding traffic group.

39. The method according to claim 38, wherein each reserved buffer space is sized to provide a minimum quality of service to the corresponding group of connections.

40. The method according to claim 33, wherein the maximum connection queue depth limit for a given connection is dynamic, being proportional to a weight associated with the given connection and inversely proportional to a sum of weights associated with a predefined group of connections.

41. The method according to claim 33, wherein at least one said connection group is further logically subdivided into one or more subgroups, each sub-group being provisioned with a size threshold for the number of messages that the connections thereof may store in the memory, and wherein said reserved buffer space congestion state includes the state of a sub-group size threshold associated with a particular message being reached.

42. The method according to claim 41, wherein plural sub-group size thresholds of a given connection group define in aggregate a logical memory space larger than the buffer space allotted to the given connection group.

43. The method according to claim 33, wherein at least one said connection group is further logically subdivided into one or more sub-groups, each sub-group being provisioned with a size threshold for the number of messages that the connections thereof may store in the memory, and wherein said discard criteria includes the event that the sub-group size threshold is reached and shared space congestion is asserted against the corresponding connection group.

44. The method according to claim 33, wherein:

at least one said connection group is further logically subdivided into one or more sub-groups of connections, each sub-group being provisioned with a size threshold for the number of messages that the connections thereof may logically have stored in the memory,
connections within said connection sub-group are separately provisioned with a size threshold for the number of messages that may be stored in the memory, and
said reserved buffer space congestion state includes the associated sub-group size threshold being reached and the associated connection size threshold being reached for a given message.

45. The method according to claim 34, wherein:

at least one said connection group is further logically subdivided into one or more sub-groups of connections, each sub-group being provisioned with a size threshold for the number of messages that the connections thereof may logically have stored in the memory,
connections within said connection sub-group are separately provisioned with a size threshold for the number of messages that may be stored in the memory, and
said discard criteria includes the event that the size threshold of a given connection is reached, the size threshold of the corresponding sub-group is reached, and shared space congestion is asserted against the corresponding connection group.