CA2365677C - Allocating buffers for data transmission in a network communication device - Google Patents

Allocating buffers for data transmission in a network communication device Download PDF

Info

Publication number
CA2365677C
CA2365677C CA002365677A CA2365677A CA2365677C CA 2365677 C CA2365677 C CA 2365677C CA 002365677 A CA002365677 A CA 002365677A CA 2365677 A CA2365677 A CA 2365677A CA 2365677 C CA2365677 C CA 2365677C
Authority
CA
Canada
Prior art keywords
port
sub
pool
line speed
cell rate
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CA002365677A
Other languages
French (fr)
Other versions
CA2365677A1 (en
Inventor
Sivarama Seshu Putcha
Wallace Matthews
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Extreme Networks Inc
Original Assignee
Enterasys Networks Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Enterasys Networks Inc filed Critical Enterasys Networks Inc
Publication of CA2365677A1 publication Critical patent/CA2365677A1/en
Application granted granted Critical
Publication of CA2365677C publication Critical patent/CA2365677C/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3081ATM peripheral units, e.g. policing, insertion or extraction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q11/00Selecting arrangements for multiplex systems
    • H04Q11/04Selecting arrangements for multiplex systems for time-division multiplexing
    • H04Q11/0428Integrated services digital network, i.e. systems for transmission of different types of digitised signals, e.g. speech, data, telecentral, television signals
    • H04Q11/0478Provisions for broadband connections
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5629Admission control
    • H04L2012/5631Resource management and allocation
    • H04L2012/5632Bandwidth allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5638Services, e.g. multimedia, GOS, QOS
    • H04L2012/5646Cell characteristics, e.g. loss, delay, jitter, sequence integrity
    • H04L2012/5651Priority, marking, classes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5678Traffic aspects, e.g. arbitration, load balancing, smoothing, buffer management
    • H04L2012/5679Arbitration or scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5678Traffic aspects, e.g. arbitration, load balancing, smoothing, buffer management
    • H04L2012/5681Buffer or queue management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9005Buffering arrangements using dynamic buffer space allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

A network communication device for directing data units over a communication network includes at least one input and/or output port arranged to receive and/or transmit data units, a plurality of buffer units divided into several sub-pools, and a buffer allocator for allocating buffer units between the sub-pools. The buffer allocator is arranged to determine a priority value for each sub-pool based on quality of service for each connection established at at least one port. The buffer allocator is also arranged to determine a utilization value of the port, and arranged to allocate buffer units for each sub-pool based on the priority value and based on the utilization value. The buffer allocator creates a precedence list to ensure that a minimal number of connections which are established at a most utilized port, will suffer data unit loss while receiving the data units.

Description

ALLOCATING BUFFERS FOR DATA TRANSMISSION =
IN A NETWORK COMMUNICATION DEVICE
Field of Invention The present invention relates to allocating buffers for data transmission in a network communication device constructed to direct network traffic. More particularly, the invention relates to allocating buffers in the network device based on port utilization and quality of service goals to achieve fair buffer usage.
Background Computer networks have been used by a large number of users to increase computing power, share resources and communicate. Computer networks include a number of computers or other devices located in one room or one building and connected by a local area network (LAN), such as Ethernet or Token Ring. LANs located in different locations can be interconnected by switches, routers, bridges, microwave links or satellite links to form a wide area network (WAN). Such a network may include hundreds of connected devices distributed over numerous geographical locations and belonging to different organizations.
One computer or video communication device can send data to another device using network communications devices (e.g., packet switches, routers, bridges) interconnected by transmission media or data links. Viewed from the outside, a network communications device includes input ports that receive data and output ports that send data over data links. Inside the network device, transmitted data is accepted at input ports, buffered and transferred internally, and eventually received at output ports for re-transmission over the next data link. This process uses various scheduling and arbitration algorithms for "switching" the data.
Typically, network communications devices transmit data in a standardized format, such as TCP/IP datagrams, frames, or ATM cells, which generally will be referred to as data units. Each data unit typically includes a header portion with addressing information and a body portion with transmitted data or payload. A
data unit sent between network devices may, in general, vary in size depending on the type of the data unit. When a data unit arrives at an input port of a network communication device, a routing algorithm analyzes the header and makes a forwarding decision based on a destination address carried by the header.
In the process of forwarding data from an input port to an output ports, different internal switching devices can use several temporary memories (called buffers). A
communication device decides if an incoming data unit is buffered or dropped, based on
-2-the incoming data unit itself. This decision is performed at the line speed, and is executed after the start of the header and before the last bit of the data unit is received.
This way the communication device can re-use the current buffer for the next data unit if decided that the current data unit will be dropped.
The buffers may simply be arranged into a single large pool of buffer units to be used for all received data units stored by the device. This arrangement assures that no data units will be arbitrarily dropped as long as there are available buffer units for storage. However, this arrangement cannot effectively arbitrate access to several concurrent inputs and outputs. Alternatively, separate pools of buffers may be associated with input ports and output ports. Based on the location of buffers, there are generally three classes of data switching architectures: output buffered, input buffered, or combined input-output buffered architectures. The present invention is applicable to all three architectures.
An output buffered network device places data units, arriving at its input port, into different output buffers located at its output ports depending on the address of each data unit. An output buffered network device, having N input ports and receiving data at M bits per second, needs a data transmission rate of N x M for the switching to ensure that data units are not lost (i.e., dropped). The buffers store the received data units when the transmission rate is lower.
Advantageously, output buffered network communication devices can use up to the full bandwidth of outbound data links because of the immediate forwarding of the received data units into output buffers. The data units are fed from output buffers to the output data links as fast as the links can accept them. However, when the transmission rate is lower than the reception rate, the communication device has to keep buffering the data units and may eventually run out of buffers. For a larger communication device having many input ports with a high link speed, the buffer capacity and speed must be increased proportionally in order to handle the combined data rates of all input ports being switched to different output ports. Increasing the buffer capacity and speed increases the cost of output buffered network devices.
A network communication device can assign one pool of buffers for each output port (or input port), which is commonly called "per port queuing". In this arrangement, one port cannot interfere with another port's performance. However, higher priority traffic may suffer a higher loss of data units (e.g., ATM cell, frames) then lower priority
-3-traffic. The data loss occurs even though there may be, for example, idle ports with available cell/frame buffers; this is the result of the buffer fragmentation.
Alternatively, the communication device can assign one pool of buffers for each priority, which is called "per priority queuing". In this arrangement, higher priority traffic will not suffer data unit loss because of over-subscription of lower priority traffic.
However, the buffers allocated to higher priority traffic may not be available to lower priority traffic when the higher priority traffic is idle. In another arrangement, the communication device can assign one pool of buffers for each priority for each output port (or input port). This is called "per port and priority queuing".
Advantageously, a given port and priority will only drop data units due to the action of data streams using that port and priority. However, this arrangement fragments buffer queues and thus buffers may be used inefficiently. For example, buffer units may be assigned to ports and priorities that are currently idle, and thus buffer units are left unused.
Therefore, efficient buffer allocation becomes very important.
A network communication device can also use an input buffered architecture.
Popular input buffered devices use non-blocking input buffered switching called the crossbar. The input buffered crossbar has a crossbar fabric running at a speedup of 1 (i.e., equal to link rate). However, if each input port maintains a single FIFO queue, data suffer from head-of line blocking. This blocking limits the maximum achievable throughput and is relatively inflexible. To eliminate head-of line blocking, input ports can have virtual output queues (VOQs). Inputs ports with VOQs have a bank of queues with one queue per output port. Data units are stored in random access buffers at the input ports, and pointers to the data are stored in the respective VOQs.
Buffer allocation becomes again important.
Asynchronous transfer mode (ATM) switching technology enables fast data switching for wide ranges of traffic demands. ATM can carry virtually any type of information that can be expressed in a digital form, ranging from voice telephone traffic, to real-time video, to high-speed file transfers, etc. ATM based networks may eliminate the need for different networks to carry different types of traffic. ATM
transfer is asynchronous in the sense that the recurrence of ATM cells, which carry transferred information, is not necessarily periodic. Each communication device that uses the ATM
network submits an ATM cell for transfer when it has a cell to send. Once aggregated
-4-and scheduled, the ATM cells ride in synchronous slots on a high-speed media, such as a SONET optical fiber.
ATM organizes digital data into cells having a fixed length and format. Each ATM
cell includes a header, primarily for identifying cells relating to the same virtual connection, and the transmitted data or payload. The ATM standard defines a cell size that is 53 bytes or octets. The first five bytes of each ATM cell form the header, and the remaining 48 bytes represent payload data. The header of each ATM cell includes a field for a virtual path identifier (VPI) and a virtual circuit identifier (VCI). The VPI and VCI
together identify the particular circuit or a communication path to which each cell relates.
Within a transport stream, the VPI and VCI identifiers direct the stream into separate logical or "virtual" paths and segregate traffic within each virtual path into logical or "virtual" circuits. Within one or more virtual path connections, an ATM
communication device makes the virtual circuit connections available to transport any number of individual communications. Such logical circuit connections are set up (i.e., opened) and closed, as 1 S needed, to efficiently provide a required transport capacity for independent communication sessions for a number of separate communication devices.
A network communication device can treat all data units equally, that is, all data units can have the same priority when traveling over a network. Alternatively, different data units can have various levels of the quality of service (QoS). This concept has been applied to ATM
networks (and to other network formats to some extent). The measures of QoS
include a cell loss rate, a cell transfer delay, bandwidth, and other. The cell loss rate reflects the number of cells that are lost, for example, when more cells arrive at a switch than can be accommodated in the switch's buffer. The cell transfer delay reflects the amount of time a cell spends at a switch (or other storage and/or transfer device) before being re-transmitted.
For example, if a cell sits in a buffer for a long period of time while other (e.g., higher QoS
level) cells are transmitted, the cell transfer delay of this cell is the amount of time it spends in the buffer.
Other measures of QoS may include a cell delay variation (i.e., the amount of variation in cell delay) or a maximum cell transfer delay (rather than an average cell transfer delay).
For example, United States Patent 5,748,629 that issued on May S, 1998 to Fujitsu Networks Communications, Inc. teaches an ATM network switch and method of utilizing the
-5-switch for adaptively providing integrated services. If the allocated bandwidth for one connection has been consumed, or the connection is not entitled to allocated bandwidth, the connection can optionally use dynamic bandwidth arbitration or a combination of both allocated and dynamic bandwidth arbitration. The switch includes an input port processor, the bandwidth arbiter, and an output port processor. Cells are transmitted from the input to the output under the control of the respective port processors and the bandwidth arbiter. The flow control is implemented on a per-connection basis. Individual queues are then assigned to traffic type groups in order to provide traffic type flow control. Based upon prioritization information associated with the cell of the input, the cells are prioritized and transmitted from the output, with each cell maintaining the same order in which it was received relative to other cells on a connection.
Furthermore, different types of information require different transport rates of data.
For example, real-time video transmission requires a high constant bit rate or a high variable bit rate to maintain synchronism, but packet data communications, in general, do not require a constant or variable bit rate. Similarly, voice communication (which usually produces bursty data traffic) requires real-time transmission, but can tolerate some cell loss without having a detrimental impact. On the other hand, a loss of a small number of cells in file transfer, such as e-mail, requires re-transmission of the entire file. Therefore, a network communication device also needs to optimally assign buffers associated with individual connections to take into account the different types of information.
Furthermore, a network communication device needs to decide whether a new connection can be opened, and the device needs to allocate (re-assign) optimally buffers when such a connection is opened.
A simple multi-QoS ATM Buffer Management Scheme base on adaptive admission control is described by Shimoto et al. in a paper published by Global Telecommunications Conference (Globecom), United States, New York, IEEE, 1996, pages 447-451. The paper proposes a simple and effective multi-quality of service "QoS" ATM Buffer Management Scheme with admission control. The scheme supports three QoS-service classes by two -Sa-separate buffers with strict priority and measurement-based as well as individual rate-based admission control. Two guaranteed classes for video and reliable data are multiplexed into a high priority buffer and individual rate management is employed. The proposed individual rate management is simple and effective compared to separate buffers with weighted round robin. One best-effort class is assigned to a low priority buffer and includes a local area network inter communication using upper-layer congestion control mechanism. Since measurement-based adaptive admission control is employed for best effort service, the adaptive admission control can achieve high bandwidth efficiency while keeping a target rate.
Nonetheless, there remains a need for a network communication device and method that can efficiently allocate buffers for data transmission.
Summary The present invention is a novel network communication device for directing network traffic and a novel method for allocating buffer units in a network communication device. The novel device or method allocate buffer units based on port utilization and quality of service goals to achieve fair buffer usage.
In one aspect, a network communication device for directing data units over a communication network includes at least one input and/or output port arranged to receive and transmit data units, a plurality of buffer units divided into several sub-pools, and a buffer allocator for allocating buffer units between the sub-pools. The buffer allocator is arranged to determine a priority value for each sub-pool based on a quality of service parameter for each connection established through at least one input port. The buffer allocator is also arranged to determine a utilization value of the input port, and arranged to allocate buffer units for each sub-pool based on the priority value and based on the utilization value, wherein a minimal number of connections established at a most utilized port will suffer loss of data units while receiving the data units.
In another aspect, a computer-readable medium includes a representation of an algorithm used in a network communication device constructed for directing data units over -Sb-a communication network. The network communication device includes a plurality of buffer units divided into sub-pools, and at least one input and/or output port connected to the communication network and arranged to receive and transmit data units. The algorithm for allocating buffer units between the sub-pools includes the steps of:

__ . . __ .. _ _ . '- _ -V - 'i _._ V ~ ..- ~!~."~_~ ' _ .. _ ='- '~tt '~ -,;_ _ . n.~~"-,. . .~_ .. _ ~0-04-2006 CA 02365677 2001-08-31 l~5 OOOJu496~
de~termiaing a priority value for each sub pool based on a quality of service parameter for each connection established at at least one input port;
dete~rnaimag a utilization value of the input purr; and allocating her units far each sutrpool based on the priority value and based on the utilization value, wherein a rninicnal number of eoywections established at a most utilized port will suffer lass of data units while receiving the data units.
Another aspect is a method for dynamically managing buffer units assigned to sub-pools of a network communication. The network communication includes at least one input ancVor output port connected to a communication network and_ arranged to 17 receive and transmit data traits. The network coauuunication device also includes a plurality of buffer units divided into several sub pools for buffering the data units. The method includes specifying a priority value for each sub-pool based oat at least one quglity of service parameter for transmitting the data units from the at loast one port;
determining a utilization value of at least one input pork and allocating buffer units for each of the subpaols based on the priority value and based on the utilization value, wherein a minimal number of the data units will bo lost during reception or transmission of the data uztits at a most utilized port of the network conununicabon device.
Preferred embodiments of the above aspects include one or more of the following features:
1~e buffer allvcatar is annnged to determine the priority value of the sub-pool based on all connections having the same quality of service parameter and being established ai the port. The bu$'cr allocator is further arranged to assign the allocai~ed buffer units to each of the sub-pools for use by the coucnections.
The network communication device is further artariged to establish a new connection using fife buffer units assiguad to one of the sub-pools. the quality of service parameter relates to a type of bit rate handled by the aonneetion The utilization value is calculated as a part line speed minus an aggregate peak cell rate for an under-subscribed port having the poet Iinerspeed larger than the aggregate peak cell rate. The utilization value is calculated as an aggregate steady state cell rate minus a port line speed. for a fully-subscribed port having as aggregate steady state cell rate smaller than its port line spend and its port line speed smaller than the aggregate peak cell rate. Tile utilization value is caEculated as au inverse of (an aggregate steady AMENDED SHEET

03-C~-20:; ~ U~ OUJ0~4965 -state cell rate minus a port line speed) for a fully-subscribed port having the aggregate steady state cell rate larger than its port line speed.
The network communication device may be a circuit switch, a bridge, or a muter using a connection oriented protocol, or may be another similar device arranged to direct data units transferred from an origination device to a destination device over a communication network.
The network communication device is further arranged to establish a new connection after the buffer allocator determines the quality of service parameter for the new connection, determines the number of the buffer units required for the new connection, and borrows the number of the buffer units from other sub-pools using a precedence order of the sub-pools. The borrowing of the number of the buffer units from other sub-pools includes establishing a precedence order of the sub-pools.
'The precedence order includes:
Initially:
1. Borrow the available buffer units of its own pool, i.e., buffer assigned to a sub-pool but not allocated to an existing connection.
2. Borrow all available assigned buffer units from disabled ports.
For each under-subscribed (LJS) port, borrow buffer units from sub-pools in the following order:
1. Borrow buffer units available from all sub-pools with lower priority of all participating ports.
2. Borrow buffer units assigned to unspecified bit rate (LTBR) sub-pools from over-subscribed {OS) ports.
3. Borrow buffer units assigned to UBR sub-pools from fully-subscribed (FS) ports.
4. Borrow buffer units assigned to UBR sub-pools from US ports with a lower metric value.
r 5. Borrow buffer units assigned to available bit rate (ABR) sub-pools from OS
ports.
6. Borrow buffer units assigned to sub-pools having lower priorities from the same port.
For each FS port, borrow buffer units from sub-pools in the following order' 1. Borrow buffer units available from all sub-pools with lower priority of all participating ports.
2. Borrow buffer units assigned to UBR sub-pools of OS ports.
AMENDED SHEET

~J-Q~-217J i CA 02365677 2001-08-31 UJ ~1717~U~~17~
3. Borrow buffer units assigned to UBR sub-pools of other FS ports with a lower metric value.
4. Borrow buffer units assigned to sub-pools of any lower priority of the same port.
AMENDED SHEET

~.... .vw-mrn-wn_L.~y.n..;V t3_ :?(:_ .i._ ~~ ; ., _ ._..
= _ __ _. _ _w?:.--L _ __ . _ _ '' ~-'"-'~' ~ - _ _ ___. . _ 2~-ii4-200 CA 02365677 2001-08-31 Four each OS port, borrow buffer units from sub-pools in ~e following order:
1. Borrow burs units avax~able from sub-pools from other priorities of the same port.
Brief Descripfiou of the Drawlm~s Fig. 1 shows diagrammatically a cosapumr network.
Fig. 2 shows diagrannmatically a notv~rork switch used in the computer network of Fig. 1.
Fig. 3 shows a block diagram of a network interfa<x module (AN.I~.
Figs 4 and 4A are high level flow diagrams of au adaptive buffar management algorithm.
Des~,ption of Preferred Embodiments Fig. l shows a cottnnttmication network that iaalude,~ as ATM network t 0, privata networks 20, 40, 60, and a public network 55. ATM network 10 includes network switches 12,14, and 16. ATM switch 12 connects ATM network 10 to private netwark 20, which includes a Token. Ring network 2b and au Ethernet network 32.
IS Network 2U includes a switch 2Z connected to a bridga 24, a generrai purpose computer 38 and a storage device 39. Bridge 24 connects Token Ring network 2~ and Ethernet network 32 to switch 22. Both Token Ring network 26 and Ethetaet network 3Z
are ~nnected to general propose computers (far example, computers 30, 34, and 36), printcis 28 and other devices. ATM switch 14 connects ATM network IO to a private network 40 by a bridge 42. fridge 42 connects switch 14 to an Ethemet network 44 v connected, in turn, to computers 45 and 48 and a printer 49. A3'M switch 12 also connects ATM network 14 to public network 55 via, a muter 50. ATM switch 16 connects ATM network 10 tb a private network 60 by a switch 62. Switch 62 connects a main frame computer 70 and a fiber-distin'buted data interface 54 (connected, in tum, to computers 66 and 68} to the communication network.
The present invention can ix used in any network communication device using any format, but will be explained in connection with an ATM switch. Fig. 2 shows diagrammatically ATM switch 12 (or any of the switd~es shown in Fig, 1 ), which can be a Cablctron product # 9A686 with 4 network interfa~cc modules {ANIMs) and 4 ports per AIM. ATM switch 12 includes a management block 76, a switching block 78, and two or foux ANIMs. Depending on its configuration, each ANIM can include one, two, three or four ports that function as input or output ports, Specifically, the 9A686 switch may include two OC48 ANIM, each having 1 port aommurncating at the line speed of 2.4 AMENDED SHEET
7-L~-20U I ~ CA 02365677 2001-08-31 .%:~ J.1.7:Jv1-~'r~: .'.

Gbps. Alternatively, the 9A686 switch may include four OC12 ANIMs each having port communicating at the line speed of 622 Mbps. In another arrangement, the switch may include four OC3 AIVIMs with three or four ports each communicating at the line speed of 155 Mbps. The present invention can operate in any of these arrangements.
Referring to Fig. 3, in a currently preferred embodiment, ANIM 80 includes a converter 82 connected via a TDM bus 84 to a switching engine 86, an SRAM
memory 88, a converter 90, and input and output ports 92, 94, 96 and 98. Input and output ports 92, 94, 96 and 98 are arranged to transmit data or receive data and provide them to converter 90. Converter 90 is a SONET to UTOPIA converter that converts SONET
level signals, received over connections 93, 95, 97 and 99, to UTOPIA level signals.
Converter 90 provides UTOPIA level signal to a converter 82. Converter 82 is a queuing and scheduling ASIC interface constructed for communication with switching engine 86.
SRAM 88 stores data in 16 K buffer units (buffer cells), each buffer unit having 424 bits.
SRAM 88 includes 16 buffer sub-pools, wherein four sub-pools are associated with each of the input and output ports 92, 94, 96 and 98. In another arrangement with two input and/or output ports, for example, SRAM ~88 may be divided into 8 buffer sub-pools with four sub-pools per port.
ATM switch 12 is preferably an output buffered device, but in general it may be an input buffered device or a combined input-output buffered device. Based on the incoming ATM cell itself, ATM switch 12 decides if the cell is buffered or dropped. This decision is performed at the line speed. ~ The decision occurs sometime after the start of the header and before the last bit of the data unit is received to allow re-use of the current buffer for the next ATM cell. To perform this process at the line speed, the simplest way is to forward each admitted ATM cell to an output buffer.
ANIM 80 may receive ATM cells over any one of ports 92, 94, 96 and 98 and transmit the cells out of any of ports 92, 94, 96 98. The selection of the input port and the output port depends on the ultimate destination of the ATM cell, the required bandwidth, and the type of information carried by the cell. The buffers permit to schedule the transmission and reconcile varying rates of receiving and transmitting ATM cells. For example, if A1~1IM 80 receives a number of cells on ports 92, 94 and 96 and all of them are routed for transmission over the same output port 98, output port 98 may not be able to transmit them as quickly as they are received. Accordingly, these ATM cells (or data units, in general) are buffered in SRAM 88.
AMENDED SHEET

The ATM switch includes a buffer allocator using an algorithm described below. The algorithm is executed on the Intel I960 processor that resides in management block 76 (Fig. 2). In general, the buffer allocator allocates available buffer units among the individual sub-pools according to the quality of service and fairness criteria. The fairness s criteria ensure that a minimal number of data sets, having the lowest priority and using the most over-utilized port, will suffer data unit loss. We apply this concept to ATM.
The specification for ATM transport defines several traffic or service categories supported by the ATM layer of a network. The types of service include a constant bit rate (CBR) service, a variable bit rate (VBR) service, an available bit rate service (ABR), and to an unidentified bit rate service (UBR). For each port, we assign one sub-pool for one type of service (i.e., priority).
The CBR service provides a constant, guaranteed bandwidth over an assigned virtual connection. Thus, the buffer allocator needs to allocate a sufficient amount of buffer units for each CBR connection. The VBR service guarantees some maximum 15 number of transmit opportunities that may be used to transmit cells over an existing virtual connection, for example, for bursty traffic. Over time, the actual rate or bandwidth may vary from almost zero (i.e., little or no use of the opportunities to send) up to a maximum number, called a peak cell rate (PCR), that is allocated for the connection.
After satisfying the CBR demand, the buffer allocator allocates dynamically buffer units for each VBR
20 connection.
For the ABR service, the specification for ATM defines an allowed cell rate (ACR), a peak cell rate (PCR) and a minimum cell rate (MCR). The allowed cell rate is the bandwidth, in terms of ATM cells per second, currently usable by a particular ABR
connection. Typically, the ACR for an ABR connection varies over time, for example, as 25 a function of the traffic load on the ATM link. The data communication device may have an opportunity to transmit data units in time slots that are available because they are not used by the CBR or VBR services. The minimum cell rate (MCR) is the lowest bandwidth that the ABR connection is always guaranteed. The MCR may be zero, in which case the device regulating traffic need not reserve any bandwidth for the ABR
connection.
3o Notably, the scheduling device only needs to make a "best effort" to provide a bandwidth, for use by the ABR connection. The device can, if necessary, allocate all transmit opportunities to higher priority traffic, in which case the ACR for the ABR circuit falls to zero.
However, if an ABR connection has an MCR value greater than zero, then the scheduling device effectively must reserve some minimum number of cell transmit opportunities, for that connection, to support traffic for that connection at no less than the MCR rate. The buffer allocator dynamically allocates buffer units so that each ANIM can dynamically schedule traffic and guarantee non-zero minimum cell rates for its ABR
connections.
The buffer allocator uses the following three parameters that are available when a connection is established: (a) the type of service (also called priority); (b) a packing constant;
and (c) a buffer sizing parameter. For ATM, the type of service parameter includes CBR, VBR, ABR or UBR, which were defined above. (For IP, the type of service parameter may include a connectionless or connection oriented service.) The packing constant parameter enables a proprietary management control to fine tune the bandwidth and buffer allocations. This parameter equals to one, where no management control is performed. The buffer sizing parameter defines the number of buffer units needed by each connection. (For IP, this parameter may be based on a packet size or other connection header data).
For each ATM connection, a traffic descriptor carries a "setup" message with one or more connection parameters. For each CBR connection, the traffic descriptor provides PCR, for each VBR connection it provides PCR, a steady state cell rate (SCR), and a maximum burst rate (MBS). For each ABR connection, the traffic descriptor provides PCR and MCR, and for each UBR connection it provides PCR. For each port, the aggregate PCR is calculated by adding all provided PCRs for the individual connections. The aggregate SCR is a number calculated by adding all PCRs for all CBR connections, all SCRs for all VBR
connection, and all MCRs for all ABR connections. However, when using a conservative approach, the algorithm can replace MCR by MCR+(PCR-MCR)/2, for all ABR connections, and can use PCR/2 for all UBR connections.
The algorithm sets the buffer sizing parameter as follows: For each CBR
connection, the buffer sizing parameter is set to two buffer units, and for each VBR
connection it is set to the maximum burst size (MBS): For each ABR connection, the buffer sizing parameter is set to the transient buffer exposure (TBE), which is a value that can be negotiated with each end user.

Each end user can request the number of buffers to be provided. However, due to the limited number of available buffer units, for a US port, the maximum number of buffer units will be set to 32; for an FS port, the maximum number will be 16; and, for an OS port, the maximum number will be 8 buffer units. For each UBR connection, the buffer sizing parameter is set to 32 buffer units. However, to prevent data loss, the buffer allocator can allocate buffer units to a selected UBR connection.
Importantly, the buffer allocator also assigns to each port one of the following three zones that described port utilization: under-subscribed (US), fully-subscribed (FS), and over-subscribed (OS). The particular zone is assigned based upon the aggregate peak cell rate (aggregate PCR) for all connections using that port, and the aggregate steady state cell rate (aggregate SCR) for all connections using the port. When the aggregate PCR is less than the ports line speed, the port is under-subscribed. When the aggregate PCR is greater than the ports line speed and the aggregate SCR is less than the ports line speed, the port is fully-subscribed.
When the aggregate SCR is greater than the ports line speed, the port is over-subscribed.
The buffer allocator gives a higher buffer retention priority to an under-subscribed (US) port than a fully-subscribed (FS) port. If needed, an over-subscribed (OS) port will loose buffer units first since such port is already loosing data units and the additional buffer loss (due to buffer allocation) would only marginally reduce the port performance.
That is, the resulting data loss will be accepted as unavoidable for OS ports. On the other hand, for US
ports, ANIM 80 does not drop data units even if the connection has a small number of buffers allocated since the US port do not exhaust their buffer allotment faster than they are filled due to their low line speeds. To minimize the number of connections suffering data loss, FS ports are allocated any residual buffers, beyond its minimum allotment.
Furthermore, the buffer allocator assigns for each port a metric for comparing the ports within the same zone (i.e., subscription status). For a US port, the metric value equals to the ports line speed minus the aggregate PCR. For an FS port, the metric value equals to the line speed minus the aggregate SCR. For an OS port, the metric value equals to 1/(aggregate SCR -the line speed). Among ports with an equal subscription status, the port with a higher metric value will get a higher priority for buffer allocation. The aggregate PCR also specifies the bandwidth, which is the inverse of a minimum inter-arrival time of data units.

;;;: ~.. -J::--:
CA 02365677 2001-08-31 ~%~- ~~~~~~~~~:-The buffer allocator assembles buffer unit requirements for all connections that require buffer units, including candidate connections. If the buffer requirement value is less than the number of available buffer units in all buffer sub-pools, the candidate connections are admitted and the buffer allocator re-assigns the size of the individual buffer sub-pools based on the requirements of the admitted connection. This adjustment usually reduces the size of several buffer sub-pools and increase the size of at least one buffer sub-pool. The buffer allocator uses precedence ordering, provided below, to achieve the fairness criteria. The fairness criteria control a data unit loss suffered by a minimal number of connections with the lowest priority of the most over-utilized port.
The buffer allocator establishes a precedence list that reflects the type of service (i.e., the priority), an operational status, and a metric value. When a sub-pool needs additional buffers to establish a connection, the buffer allocator "borrows"
buffer units from other sub-pools with lower precedence ordering, as explained in connection with Figs. 4 and 4A. The new connection is established if all available buffer units can maintain the existing connections according to the provided rules.
Refernng to Fig. 4, initially a startup algorithm creates four buffer sub-pools assigned for each port; that is, one sub-pool for each type of service (i.e., priority). The buffer allocator can statically allocate the buffer units for each sub-pool or can allocate buffer units by performing a buffer allocation algorithm 110. Buffer allocation algorithm 110 may be performed when opening a new connection or, in general, at any time during the operation when there is an unexpectedly high cell loss. In a currently preferred embodiment, for each port, the CBR sub-pool has 512 buffer units assigned, the VBR
sub-pool has 512 buffer units assigned, the ABR sub-pool has 1024 buffer units assigned, and the UBR sub-pool has 2048 buffer units assigned.
Prior to allocating buffers, connection admission control (CAC) decides if a new connection can be accepted based on the attribu~of both the requested connection and one or more existing connections (step 112). If adaptive buffering is not desired, for example, when starting up the device, buffers are allocated manually {114).
When adaptive buffering is performed, in step 116, for each port, the buffer allocator determines the zone {i.e., the port utilization) and the metric value. As described above, the zone and the metric value for each port are calculated based on the port line speed, the aggregate PCR, and the aggregate SCR for all connections using that port.
AMENDED SHEET

In step 118, the buffer allocator scans over the ports and the connections to build a glean list of buffer sub-pools in the precedence based on which it can borrow available buffers. As described above, CBR sub-pools get a higher precedence than the VBR sub-pools, which get a higher precedence than the ABR sub-pools and UBR sub-pools.
The buffer allocator orders the ports by their zone putting the OS ports at the bottom, then the US ports and the FS at the top. Within each zone, the buffer allocator orders the ports based on their metric value by putting the port with the lowest metric value at the lowest position on the list. Based on the glean list, buffer allocator allocates buffer units in the order of precedence (steps 120 through 136). The order of precedence is based in the type of service (i.e., priority) as follows:
Initially:
1. Borrow the available buffer units of its own pool, i.e., buffer assigned to a sub-pool but not allocated to an existing connection.
2. Borrow all available assigned buffer units from disabled ports.
For each US port, borrow buffer units from sub-pools in the following order:
1. Borrow buffer units available from all sub-pools with lower priority of all participating ports.
2. Borrow buffer units assigned to UBR sub-pools from OS ports.
3. Borrow buffer units assigned to UBR sub-pools from FS ports.
4. Borrow buffer units assigned to UBR sub-pools from US ports with a lower metric value.
5. Borrow buffer units assigned to ABR sub-pools from OS ports.
6. Borrow buffer units assigned to sub-pools having lower priorities from the same port.
For each FS port, borrow buffer units from sub-pools in the following order:
1. Borrow buffer units available from all sub-pools with lower priority of all participating ports.
2. Borrow buffer units assigned to UBR sub-pools of OS ports.
3. Borrow buffer units assigned to UBR sub-pools of other FS ports with a lower metric value.
4. Borrow buffer units assigned to sub-pools of any lower priority of the same port.

03-0~-200 CA 02365677 2001-08-31 -I S-For each OS port, borrow buffer units from sub-pools in the following order:
1. Borrow buffer units available from sub-pools from other priorities of the same port.
Fig. 4A shows a flow diagram using the above procedure. In step 122, the buffer allocator borrows available buffer units (i.e., assigned but not allocated) and then borrows buffer units from disabled ports. If additional buffer units are needed, the buffer allocator scans each port and identifies US ports (step 124), FS ports (step 128), and OS ports (step 132). First, to provide buffers for FS or US ports, the buffer allocator borrows from any sub-pool that has a lower priority (i.e. type of service). To provide buffers for an OS
port, the buffer allocator borrows from sub-pools of the same OS port that have other priorities (step I34). At any stage, when the buffer demand is satisfied (i.e., the number of borrowed buffer units equals the number of buffer units needed to establish a new connection), the buffer allocator returns to step 136.
In steps 126 and 130, if additional buffer units are needed, the buffer allocator borrows buffer units assigned to UBR sub-pools from OS ports starting with an OS port having the lowest metric value. Additionally, the buffer allocator can borrow buffer cells assigned to UBR connections of FS ports, starting with an FS port having a lowest metric value, and provide them to another FS port. Next, if an US port needs buffers, the buffer allocator borrows buffer cells assigned to ABR sub-pools from OS ports. If an US port needs further buffers, the buffer allocator borrows buffer cells assigned to ABR sub-pools from FS ports, starting with an FS port having a lowest metric value. Finally, a sub-pool from an FS port can borrow buffer units from any sub-pool of an FS port with a lower metric value, and any sub-pool from an US port can borrow buffer units from any sub-pool of a US port with a lower metric value. That is, the algbrithm follows the order of precedence provided above. As the buffer allocator borrows assigned buffer units from any sub-pool in the order of precedence, the remaining buffer units may be smaller than the number of buffer units allocated to existing cmmections in that sub-pool.
After re-assignment of buffer units to a newly admitted connection, the existing cormections, of the sub-pool with insufficient buffer units, will loose data units. However, the order of precedence ensures that only connections having the lowest priority (i.e., type of service) and using the most over-utilized port, will suffer data unit loss.
When the buffer demand is not satisfied, the buffer allocator rejects the considered new connection.
AMENDED SHEET

Example 1 The following is an example of buffer assignment and buffer allocation for a single port when establishing a new VBR connection that requires six buffer units.
Referring to Table I-1, initially, port n has 96 buffer units assigned to the CBR sub-pool, 96 buffer units assigned to the VBR sub-pool, 128 buffer units assigned to the ABR sub-pool, and 256 buffer units assigned to the UBR sub-pool. Table I-2 shows the allocated buffer units (i.e., buffer units used by the existing connections) out of the assigned buffer units, shown in Table I-1. Specifically, all CBR connections use 16 buffer units from the CBR sub-pool, all VBR connections use 12 buffer units, all ABR connections use buffer units, and all UBR connections use 136 buffer units. Prior to admitting the new VBR connection at port n, the VBR sub-pool has 96 assigned buffer units, but uses for all its connections only 12 buffer units, thereby having 84 buffer units available. Thus, in step 122, buffer allocator allocates six buffer units to the new connection out of the 84 available buffer units in the VBR sub-pool. As shown in Tables I-3, no new assignment is required when establishing the VBR connection . Table I-4 shows that the VBR sub-pool now has 18 allocated buffer units.
Prior to admitting a new connection After admitting a new connection Assignment: Assignment:
Port Port n n Type Buffers Type Buffers of of Service Service Table 1-1 Table 1-3 Allocation: Allocation:
Port n Port n Type of Buffers Type of Buffers Service Service Table 1-2 Table 1-4 Example 2 The following is an example of buffer assignment and buffer allocation when establishing at port 1 a new CBR connection requiring 44 buffer units. Tables through II-8 show existing buffer assignments and allocations for the individual sub-pools of ports 0, l, 2 and 3. As shown in Tables II-1, the CBR sub-pool has assigned 96 buffer units, the VBR sub-pool has assigned 96 buffer units, the ABR sub-pool has assigned 128 buffer units, and the UBR sub-pool has assigned 120 buffer units.
Referring to Tables II-2, out of the assigned buffer units, 92 buffer units are allocated to existing CBR connections, 92 buffer units are allocated to existing VBR
connections, 124 buffer units are allocated to existing ABR connections, and 114 buffer units are allocated to existing UBR connections.
Prior to admitting a new CBR connection:
Assignment:
Port Port Port Port (Disabled) Type Buffers Type Buffers Type Buffers Type Buffers of of of of Service Service Service Service Table Table Table Table 0~-G'~-200'i ''' ~ ~ 00000496 Allocat1011:
Port Port Port Port 3 0 1 2 (Disabled) Type Buffers Type Buffers Type Buffers Type of Buffers of of of Service Service Service Service Table Table Table Table Prior to admitting the new CBR connection to port one the buffer allocator creates a glean list shown as Table III.
Glean list:
Port Priority Amount Total buffers ~

.

~

2 VBR -fir 36 Table III
AMENDED SHEET

In step 116, buffer allocator determined that, for example, all ports 0, 1, and 2 are all under- subscribed us ports having the following asymmetric order: [Port 1, Port 0, and Port 2]. In step 122, the buffer allocator borrows two available buffers in the CBR sub-pool of port 1 (since the CBR sub-pool has 96 assigned buffers, but only 94 buffers allocated to existing CBR connections). Next, in step 122, buffer allocator borrows four buffer units from port 3, which is disabled. Thus, the total available buffer units is now 6 (as shown in Table III). Since all ports are under subscribed, from step 124 buffer allocator proceeds to step 126. First, buffer allocator will borrow from sub-pools of all sub-pools with lower priority (type of service) assigned to all participating ports.
According to the metric order, first buffer allocator will examine the UBR sub-pool of port 1 and determine that all assigned 136 buffer units were allocated to existing UBR
connections leaving no available buffer units to borrow. Thus, the total available buffer units remain 6 at this point. Next, according to the metric order, buffer allocator goes to the UBR sub-pool of port (Table II-1 ). Here, out of the 120 assigned buffer units, 114 were allocated leaving six buffer units to borrow. Thus, the total number of available buffer has increased to 12 (Table III). Next, the buffer allocator examines the ABR sub-pools of all three ports according to the metric order. The ABR sub-pool of port 1 has 112 buffer units assigned and 112 buffer units allocated leaving no available buffer units.
The ABR sub-pool of port 0 has 128 buffer units assigned but only 124 buffer units allocated leaving four available buffer units to borrow... After examining the VBR sub-pool of port 2, which has 6 available buffers, the total amount of available buffers is 36.
Next, buffer allocator looks at the CBR sub-pools of all ports according to their metric values. In the CBR sub-pool of port 1, all buffer units are allocated to existing CBR
connections. (Note: The two available buffer units were entered into the glean list initially) In the CBR sub-pool of port 0, four buffer units are available. In the CBR sub-pool of port 2, 92 buffer units are assigned but only 86 buffer units are allocated to existing CBR connections. Thus, six buffer units are available to borrow.
However, the new CBR connection requires only four more buffer units to reach the required number of 44 buffer units to admit the connection.
After admitting a new CBR connection having 44 buffers allocated:
Assignment:

Port Port Port Port (Disabled) Type Buffers Type Buffer Type Buffers Type Buffers of of s of of Service Service Service Service Table Table Table Table Allocation:
Port Port Port Port (Disabled) Type Buffers Type Buffers Type Buffers Type Buffers of of of of Service Service Service Service Table Table Table Table Tables IV-1 through IV-8 show the new assignments and allocations of the buffer units. After admitting the new connections, 138 buffer units are assigned to the CBR
sub-pool of port 1 and all 138 buffer units are allocated to the existing CBR
connections.
The buffer allocator may also execute another allocation algorithm that is an obvious modification of allocation algorithm 110. Such modified algorithm is also within the true scope of the inventions described above. Additional embodiments are within the following claims:

Claims (56)

1. A method of dynamically managing buffer units of a network communication device, the network communication device including a plurality of ports connected to a communication network to receive and transmit data units, and including a plurality of sub-pools of buffer units for buffering the data units, each sub-pool corresponding to one of the plurality of ports and having a priority value based on at least one quality of service parameter for transmitting data units, the method comprising steps of:
for each of one or more of the plurality of ports, determining an operational status indicative of a utilization of the port as part of at least one of transmitting data units and receiving data units;
establishing a precedence order of one or more of the plurality of sub-pools, the precedence order being based on the priority values of the one or more sub-pools and based on the operational statuses of the one or more ports; and allocating one or more of the buffer units of the one or more sub-pools to a first of the plurality of sub-pools according to the precedence order.
2. The method of claim 1, wherein:
a first port of the plurality of ports corresponds to the first sub-pool, the step of determining includes determining the operational status of the first port such that the precedence order is based at least in part on the operational status of the first port, and if the operational status of the first port is equal to one or more predefined status values, then the step of establishing includes establishing the precedence order based at least in part on the operational statuses of one or more other of the plurality of ports.
3. The method of claim 2, wherein the step of determining comprises determining a first operational status of the first port, and wherein establishing the precedence order comprises establishing the precedence order such that no buffer units are to be allocated to the first sub-pool from any sub-pool corresponding to a port that has an operational status lower in the precedence order than the first operational status.
4. The method of claim 1, wherein establishing the precedence order further comprises establishing the precedence order such that, for at least two of the one or more sub-pools having a same priority value, each of the at least two sub-pools is ordered in the precedence order according to the operational status of the port to which the sub-pool corresponds.
5. The method of claim 1, wherein a first port of the one or more ports transmits data units for one or more connections, and the first sub-pool corresponds to at least a first connection of the one or more connections, and wherein the step of allocating comprises:
allocating the one or more buffer units for use by the first connection based at least in part on the operational status of the first port.
6. The method of claim 5, wherein the step of allocating further comprises:
allocating one or more of the one or more buffer units to the first sub-pool from a second sub-pool corresponding to a second port distinct from the first port.
7. The method of claim 5, wherein the first connection has a same priority value as the first sub-pool, and based on a same quality of service parameter on which the priority value of the first sub-pool is based.
8. The method of claim 5, wherein the first connection is a new connection, and wherein the method further comprises: establishing the first connection using the one or more allocated buffer units.
9. The method of claim 5, wherein the step of allocating further comprises:
determining a number of the buffer units required for use by the first connection; and allocating to the first connection no more than the number of the buffer units required for use by the first connection.
10. The method of claim 5, wherein the step of allocating comprises:
allocating, to the first port, buffer units of the first sub-pool not allocated to any of the one or more connections of the first port.
11. The method of claim 5, wherein the step of allocating further comprises:
allocating, to the first sub-pool, buffer units of one or more sub-pools corresponding to one or more disabled ports.
12. The method of claim 1, wherein the step of allocating includes allocating buffer units from sub-pools at a lowest position in the precedence order first.
13. The method of claim 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 or 12, wherein each sub-pool buffers data units for one or more connections of a corresponding port, and for each sub-pool, the quality of service parameter corresponds to a type of bit rate handled by the one or more connections.
14. The method of claim 13, wherein the quality of service parameter corresponds to one of the following types of service: a constant bit rate service, a variable bit rate service, an available bit rate service, and an unidentified bit rate service.
15. The method of claim 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 or 12, wherein, for one or more of the ports, the step of determining comprises:
determining that a port line speed of the port is larger than an aggregate peak cell rate of the port, wherein a metric value for the port is based on such determination.
16. The method of claim 15 wherein, for each of the one or more ports that has the port line speed higher than the aggregate peak cell rate, the step of determining further comprises:
calculating the metric value as the port line speed minus the aggregate peak cell rate, wherein the step of allocating is based at least in part on one or more of the calculated metric values.
17. The method of claim 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 or 12, wherein, for one or more of the ports, the step of determining comprises:
determining that an aggregate steady state cell rate of the port is smaller than a port line speed of the port and the port line speed is smaller than an aggregate peak cell rate of the port, wherein a metric value for the port is based on such determination.
18. The method of claim 17, wherein, for each of the one or more ports that has the aggregate steady state cell rate smaller than the port line speed and the port line speed smaller than the aggregate peak cell rate of the port, the step of determining further comprises:
calculating the metric value as the aggregate steady state cell rate minus the ports line speed, wherein the step of allocating is based at least in part on one or more calculated metric values.
19. The method of claim 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 or 12, wherein, for one or more of the ports, the step of determining comprises:
determining that an aggregate steady state rate of the port is larger than a port line speed of the port, wherein a metric value for the port is based on such determination.
20. The method of claim 19, wherein, for each of the one or more ports that has the aggregate steady state cell rate larger than the port line speed, the step of determining further comprises:
calculating the metric value as an inverse of a result of the aggregate steady state cell rate minus the port line speed, wherein the step of allocating is based at least in part on one or more calculated metric values.
21. The method of claim 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 or 12, wherein:
each sub-pool buffers data units for one or more connections of a corresponding port, and for each sub-pool, the quality of service parameter corresponds to a type of bit rate handled by the one or more connections;
the step of determining comprises determining that a port line speed of the first port is larger than an aggregate peak cell rate of the first port; and wherein establishing the precedence order comprises establishing that a sub-pool having a priority value corresponding to an unidentified bit rate service and being associated with a port having an aggregate steady state cell rate of the port smaller than a port line speed of the port and the port line speed smaller than an aggregate peak cell rate of the port with precedence over a sub-pool having the priority value corresponding to the unidentified bit rate service and being associated with another port having an aggregate steady state cell rate of the other port larger than a port line speed of the other port.
22. The method of claim 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 or 12, wherein:
each sub-pool buffers data units for one or more connections of a corresponding port, and for each sub-pool, the quality of service parameter corresponds to a type of bit rate handled by the one or more connections;

the step of determining comprises determining that a port line speed of the first port is larger than the aggregate peak cell rate of the first port; and establishing the precedence order comprises establishing that a sub-pool having a priority value corresponding to an unidentified bit rate service and being associated with a port having a port line speed of the port larger than the aggregate peak cell rate of the port and a difference between the port line speed and the peak cell rate of such port is less than a difference between the port line speed and the peak cell rate of the first port with precedence over a sub-pool having a priority value corresponding to the unidentified bit rate service and being associated with another port having an aggregate steady state cell rate of the other port smaller than a port line speed of the other port and the port line speed smaller than an aggregate peak cell rate of the other port.
23. The method of claim 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 or 12, wherein:
each sub-pool buffers data units for one or more connections of a corresponding port, and for each sub-pool, the quality of service parameter corresponds to a type of bit rate handled by the one or more connections;
the step of determining comprises determining that a port line speed of the first port is larger than an aggregate peak cell rate of the first port; and establishing the precedence order comprises establishing that a sub-pool having a priority value corresponding to an available bit rate service and being associated with a first port having an aggregate steady state cell rate of the first port larger than a port line speed of the first port with precedence over a sub-pool having the priority value corresponding to an unidentified bit rate service and being associated with another port having a port line speed of the other port larger than the aggregate peak cell rate of the port and a difference between the port line speed and a peak cell rate of the other port is less than a difference between the port line speed and the peak cell rate of the first port.
24. The method of claim 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 or 12, wherein:
each sub-pool buffers data units for one or more connections of a corresponding port, and for each sub-pool, the quality of service parameter corresponds to a type of bit rate handled by the one or more connections;
the step of determining comprises determining that a port line speed of the first port is larger than an aggregate peak cell rate of the first port; and establishing the precedence order comprises establishing that a sub-pool that corresponds to the first port and has a lower priority value than the priority value of the first sub-pool with precedence over a sub-pool having the priority value corresponding to an available bit rate service and being associated with the other port having an aggregate steady state cell rate of the other port larger than a port line speed of the other port.
25. The method of claim 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 or 12, wherein:
each sub-pool buffers data units for one or more connections of a corresponding port, and for each sub-pool, the quality of service parameter corresponds to a type of bit rate handled by the one or more connections;
the step of determining comprises determining that an aggregate steady state cell rate of the first port is smaller than a port line speed of the first port and the port line speed of the first port is smaller than an aggregate peak cell rate of the first port; and wherein establishing the precedence order comprises establishing that a sub-pool having a priority value corresponding to an unidentified bit rate service and being associated with another port having an aggregate steady state cell rate of the other port smaller than a port line speed of the other port and the port line speed smaller than the aggregate peak cell rate of the other port and a difference between the aggregate steady state cell rate and the ports line speed of the other port less than a difference between the aggregate steady state cell rate and the ports line speed of the first port with precedence over a sub-pool having the priority value corresponding to the unidentified bit rate service and being associated with a port having an aggregate steady state cell rate of the other port larger than a port line speed of the other port.
26. The method of claim 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 or 12, wherein:
each sub-pool buffers data units for one or more connections of a corresponding port, and for each sub-pool, the quality of service parameter corresponds to a type of bit rate handled by the one or more connections;
the step of determining comprises determining that an aggregate steady state cell rate of the first port is smaller than a port line speed of the first port and the port line speed is smaller than an aggregate peak cell rate of the first port; and establishing the precedence order comprises establishing that a sub-pool that corresponds to the first port and has a lower priority value than the priority value of the first sub-pool with precedence over a sub-pool having the priority value corresponding to an unidentified bit rate service and being associated with another port having an aggregate steady state cell rate of the other port smaller than a port line speed of the other port and the port line speed smaller than an aggregate peak cell rate of the other port and a difference between the aggregate steady state cell rate and the port line speed of the other port less than a difference between the aggregate steady state cell rate and the port line speed of the first port.
27. The method of claim 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 or 12, wherein:
a plurality of sub-pools of buffer data units for one or more connections of the first port;
the step of determining comprises determining that an aggregate steady state cell rate of the first port is larger than a port line speed of the first port; and wherein the step of allocating further comprises allocating one or more buffer units from one or more of the plurality of sub-pools that correspond to the first port and have a lower priority value than the priority value of the first sub-pool.
28. A network communication device for transmitting and receiving data units over a communication network, the network communications device composing:
a plurality of ports connected to a communication network to receive and transmit data units;
a plurality of sub-pools of buffer units for buffering the data units, each sub-pool corresponding to one of the plurality of ports and having a priority value based on at least one quality of service parameter for transmitting data units; and a buffer allocator to determine, for each of one or more of the plurality of ports, an operational status indicative of a utilization of the port as part of at least one of transmitting data units and receiving data units, and to establish a precedence order of one or more of the plurality of sub-pools, the precedence order being based on the priority values of the one or more sub-pools and based on the operational statuses of the one or more ports, and to allocate one or more of the buffer units of the one or more sub-pools to a first of the plurality of sub-pools according to the precedence order.
29. The network communications device of claim 28, wherein a first port of the plurality of ports corresponds to the first sub-pool, and the buffer allocator is further operative to determine the operational status of the first port such that the precedence order is based at least in part on the operational status of the first port, and to establish the precedence order based at least in part on the operational statuses of one or more other of the plurality of ports if the operational status of the first port is equal to one or more predefined status values.
30. The network communications device of claim 29, wherein the buffer allocator is further operative to determine a first operational status of the first port, and to establish the precedence order such that no buffer units are to be allocated to the first sub-pool from any sub-pool corresponding to a port that has an operational status lower in the precedence order than the first operational status.
31. The network communications device of claim 28, wherein the buffer allocator is further operative to establish the precedence order such that, for at least two of the one or more sub-pools having a same priority value, each of the at least two sub-pools is ordered in the precedence order according to the operational status of the port to which the sub-pool corresponds.
32. The network communications device of claim 28, wherein a first port of the one or more ports transmits data units for one or more connections, and the first sub-pool corresponds to at least a first connection of the one or more connections, and wherein the buffer allocator is further operative to allocate the one or more data units for use by the first connection based at least in part on a metric value of the first port.
33. The network communications device of claim 32, wherein the buffer allocator is further operative to allocate one or more of the one or more data units to the first sub-pool from a second sub-pool corresponding to a second port distinct from the first port.
34. The network communications device of claim 32, wherein the first connection has a same priority value as the first sub-pool, and based on a same quality of service parameter on which the priority value of the first sub-pool is based.
35. The network communications device of claim 32, wherein the first connection is a new connection, and wherein the buffer allocator is further operative to establish the first connection using the one or more allocated buffer units.
36. The network communications device of claim 32, wherein the buffer allocator is further operative to determine a number of the buffer units required for use by the first connection, and to allocate to the first connection no more than the number of the buffer units required for use by the first connection.
37. The network communications device of claim 32, wherein the buffer allocator is further operative to allocate, to the first port, buffer units of the first sub-pool not allocated to any of the one or more connections of the first port.
38. The network communications device of claim 32, wherein the buffer allocator is further operative to allocate, to the first sub-pool, buffer units of one or more sub-pools corresponding to one or more disabled ports.
39. The network communications device of claim 28, wherein the buffer allocator is further operative to allocate buffer units from sub-pools at a lowest position in the precedence order first.
40. The network communications device of claim 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38 or 39, wherein each sub-pool buffers data units for one or more connections of a corresponding port, and for each sub-pool, the quality of service parameter corresponds to a type of bit rate handled by the one or more connections.
41. The network communications device of claim 40, wherein the quality of service parameter corresponds to one of the following types of service: a constant bit rate service, a variable bit rate service, an available bit rate service, and an unidentified bit rate service.
42. The network communications device of claim 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38 or 39, wherein the buffer allocator is further operative to determine, for one or more of the ports, that a port line speed of the port is larger than an aggregate peak cell rate of the port, wherein a metric value for the port is based on such determination.
43. The network communications device of claim 42, wherein the buffer allocator is further operative to calculate, for each of the one or more ports that has the port line speed higher than the aggregate peak cell rate, a metric value as the port line speed minus the aggregate peak cell rate, wherein the allocation of buffer units is based at least in part on one or more of the calculated metric values.
44. The network communications device of claim 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38 or 39, wherein the buffer allocator is further operative to determine, for one or more of the ports, that an aggregate steady state cell rate of the port is smaller than a port line speed of the port and the port line speed is smaller than an aggregate peak cell rate of the port, wherein a metric value for the port is based on such determination.
45. The network communications device of claim 44, wherein the buffer allocator is further operative to calculate, for each of the one or more ports that has the aggregate steady state cell rate smaller than the port line speed and the port line speed smaller than the aggregate peak cell rate of the port, a metric value for the port as the aggregate steady state cell rate minus the port line speed, wherein the allocation of buffer units is based at least in part on one or more calculated metric values.
46. The network communications device of claim 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38 or 39, wherein the buffer allocator is further operative to determine, for one or more of the ports, that an aggregate steady state cell rate of the port is larger than a port line speed of the port, wherein a metric value for the port is based on such determination.
47. The network communications device of claim 46, wherein the buffer allocator is further operative to calculate, for each of the one or more ports that has the aggregate steady state cell rate larger than the port line speed, a metric value as an inverse of a result of the aggregate steady state cell rate minus the port line speed, wherein the allocation of buffer units is based at least in part on one or more calculated metric values.
48. The network communications device of claim 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38 or 39, wherein:
each sub-pool buffers data units for one or more connections of a corresponding port, and for each sub-pool, the quality of service parameter corresponds to a type of bit rate handled by the one or more connections; and the buffer allocator is further operative to determine whether a port line speed of the first port is larger than an aggregate peak cell rate of the first port, and to establish that a sub-pool having a priority value corresponding to an unidentified bit rate service and being associated with another port having an aggregate steady state cell rate of the other port smaller than a port line speed of the other port and the port line speed smaller than an aggregate peak cell rate of the other port with precedence over a sub-pool having the priority value corresponding to the unidentified bit rate service and being associated with the first port having an aggregate steady state cell rate of the first port larger than a port line speed of the first port.
49. The network communications device of claim 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38 or 39, wherein:
each sub-pool buffers data units for one or more connections of a corresponding port, and for each sub-pool, the quality of service parameter corresponds to a type of bit rate handled by the one or more connections; and the buffer allocator is further operative to determine whether a port line speed of the first port is larger than an aggregate peak cell rate of the first port, and to establish that a sub-pool having a priority value corresponding to an unidentified bit rate service and being associated with another port having a port line speed of the other port larger than the aggregate peak cell rate of the other port and a difference between the port line speed of the other port and a peak cell rate of the other port is less than a difference between the port line speed of the first port and a peak cell rate of the first port with precedence over a sub-pool having the priority value corresponding to an unidentified bit rate service and being associated with the first port having an aggregate steady state cell rate of the first port smaller than a port line speed of the first port and the port line speed smaller than an aggregate peak cell rate of the first port.
50. The network communications device of claim 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38 or 39, wherein:
each sub-pool buffers data units for one or more connections of a corresponding port, and for each sub-pool, the quality of service parameter corresponds to a type of bit rate handled by the one or more connections; and the buffer allocator is further operative to determine whether a port line speed of the first port is larger than an aggregate peak cell rate of the first port, and to establish that a sub-pool having a priority value corresponding to an available bit rate service and being associated with another port having an aggregate steady state cell rate of the other port larger than a port line speed of the other port with precedence over a sub-pool having the priority value corresponding to the unidentified bit rate service and being associated with the first port having a port line speed of the first port larger than the aggregate peak cell rate of the first port and a difference between the port line speed and the peak cell rate of the other port is less than a difference between the port line speed and the peak cell rate of the first port.
51. The network communications device of claim 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38 or 39, wherein:
each sub-pool buffers data units for one or more connections of a corresponding port, and for each sub-pool, the quality of service parameter corresponds to a type of bit rate handled by the one or more connections; and the buffer allocator is further operative to determine whether a port line speed of the first port is larger than an aggregate peak cell rate of the first port, and to establish that a sub-pool that corresponds to the first port and has a lower priority value than the priority value of the first sub-pool with precedence over a sub-pool having the priority value corresponding to an available bit rate service and being associated with another port having an aggregate steady state cell rate of the other port larger than a port line speed of the other port.
52. The network communications device of claim 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38 or 39, wherein:
each sub-pool buffers data units for one or more connections of a corresponding port, and for each sub-pool, the quality of service parameter corresponds to a type of bit rate handled by the one or more connections; and the buffer allocator is further operative to determine whether an aggregate steady state cell rate of the first port is smaller than a port line speed of the first port and the port line speed is smaller than an aggregate peak cell rate of the first port, and to establish that a sub-pool having a priority value corresponding to an unidentified bit rate service and being associated with another port having an aggregate steady state cell rate of the other port smaller than a port line speed of the other port and the port line speed smaller than an aggregate peak cell rate of the other port and a difference between the aggregate steady state cell rate and the port line speed of the other port is less than a difference between the aggregate steady state cell rate and the port line speed of the first port with precedence over a sub-pool having the priority value corresponding to the unidentified bit rate service and being associated with the first port having an aggregate steady state cell rate of the first port larger than a port line speed of the first port.
53. The network communications device of claim 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38 or 39, wherein:
each sub-pool buffers data units for one or more connections of a corresponding port, and for each sub-pool, the quality of service parameter corresponds to a type of bit rate handled by the one or more connections; and the buffer allocator is further operative to determine whether an aggregate steady state cell rate of the first port is smaller than a port line speed of the first port and the port line speed is smaller than an aggregate peak cell rate of the first port, and to establish the precedence order comprises establishing that a sub-pool that corresponds to the first port and has a lower priority value than the priority value of the first sub-pool with precedence over a sub-pool having the priority value corresponding to an unidentified bit rate service and being associated with another port having an aggregate steady state cell rate of the other port smaller than a port line speed of the other port and the port line speed smaller than an aggregate peak cell rate of the other port and a difference between the aggregate steady state cell rate and the port line speed of the other port is less than a difference between the aggregate steady state cell rate and the ports line speed of the first port.
54. The network communications device of claim 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38 or 39, wherein:
a plurality of sub-pools buffer data units for one or more connections of the first port;
and the buffer allocator is further operative to determine whether an aggregate steady state cell rate of the first port is larger than a port line speed of the first port; and to allocate one or more buffer units from one or more of the plurality of sub-pools that correspond to the first port and have a lower priority value than the priority value of the first sub-pool.
55. A computer-readable medium for use in a network communication device for transmitting and receiving data units over a communication network, the network communication device including a plurality of ports connected to the communication network to receive and transmit data units, and including a plurality of sub-pools of buffer units for buffering the data units, each sub-pool corresponding to one of the plurality of ports and having a priority value based on at least one quality of service parameter for transmitting data units, the computer-readable medium comprising a representation of a process of dynamically allocating buffer units between the sub-pools, the process comprising steps of:
for each of one or more of the plurality of ports, determining an operational status indicative of a utilization of the port as part of at least one of:
transmitting data units and receiving data units;
establishing a precedence order of one or more of the plurality of sub-pools, the precedence order being based on the priority values of the one or more sub-pools and based on the operational statuses of the one or more ports; and allocating one or more of the buffer units of the one or more sub-pools to a first of the plurality of sub-pools according to the precedence order.
56. A system for dynamically managing buffer units of a network communication device, the network communication device including a plurality of ports connected to a communication network to receive and transmit data units, and including a plurality of sub-pools of buffer units for buffering the data units, each sub-pool corresponding to one of the plurality of ports having a priority value based on at least one quality of service parameter for transmitting data units, the system comprising:
means for determining, for each of the one or more. of the plurality of ports, an operational status indicative of a utilization of the port as part of at least one of: transmitting data units and receiving data units;
means for establishing a precedence order of one or more of the plurality of sub-pools, the precedence order being based on the priority values of the one or more sub-pools and based on the operational statuses of the one or more ports; and allocating one or more of the buffer units of the one or more sub-pools to a first of the plurality of sub-pools according to the precedence order.
CA002365677A 1999-03-01 2000-02-28 Allocating buffers for data transmission in a network communication device Expired - Fee Related CA2365677C (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/259,946 US6822966B2 (en) 1999-03-01 1999-03-01 Allocating buffers for data transmission in a network communication device
US09/259,946 1999-03-01
PCT/US2000/004965 WO2000052955A1 (en) 1999-03-01 2000-02-28 Allocating buffers for data transmission in a network communication device

Publications (2)

Publication Number Publication Date
CA2365677A1 CA2365677A1 (en) 2000-09-08
CA2365677C true CA2365677C (en) 2007-05-01

Family

ID=22987127

Family Applications (1)

Application Number Title Priority Date Filing Date
CA002365677A Expired - Fee Related CA2365677C (en) 1999-03-01 2000-02-28 Allocating buffers for data transmission in a network communication device

Country Status (5)

Country Link
US (1) US6822966B2 (en)
EP (1) EP1157585A1 (en)
AU (1) AU765396B2 (en)
CA (1) CA2365677C (en)
WO (1) WO2000052955A1 (en)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6771595B1 (en) * 1999-08-31 2004-08-03 Intel Corporation Apparatus and method for dynamic resource allocation in a network environment
US7016301B1 (en) 1999-09-01 2006-03-21 Cisco Technology, Inc. Fair multiplexing scheme for multiple input port router
US6937580B2 (en) * 2000-07-06 2005-08-30 Hughes Electronics Corporation Apportioning bandwidth capacity in communication switching systems
US7111163B1 (en) 2000-07-10 2006-09-19 Alterwan, Inc. Wide area network using internet with quality of service
US20030021287A1 (en) * 2001-05-04 2003-01-30 Appian Communications, Inc. Communicating data between TDM and packet based networks
US7693057B2 (en) 2001-08-17 2010-04-06 Nokia Corporation Method, network element and terminal device for marking data packets
US7054925B2 (en) * 2001-11-21 2006-05-30 International Business Machines Corporation Efficient method for determining record based I/O on top of streaming protocols
US7039013B2 (en) * 2001-12-31 2006-05-02 Nokia Corporation Packet flow control method and device
US6958986B2 (en) * 2002-01-10 2005-10-25 Harris Corporation Wireless communication system with enhanced time slot allocation and interference avoidance/mitigation features and related methods
US7286543B2 (en) * 2002-02-27 2007-10-23 International Business Machines Corporation Memory system with apparatus and method to enable balanced bandwidth utilization
US6877048B2 (en) 2002-03-12 2005-04-05 International Business Machines Corporation Dynamic memory allocation between inbound and outbound buffers in a protocol handler
US7215674B1 (en) * 2002-04-22 2007-05-08 Cisco Technology, Inc. Supporting applications sensitive to data loss on switched virtual circuits (SVCs)
US7352761B2 (en) * 2002-06-04 2008-04-01 Lucent Technologies Inc. Distributing unused allocated bandwidth using a borrow vector
KR100501717B1 (en) * 2003-05-09 2005-07-18 삼성전자주식회사 Method for voice/data transport over UDP/TCP/IP networks using an efficient buffer management
JP4379800B2 (en) 2004-07-12 2009-12-09 ソニー・エリクソン・モバイルコミュニケーションズ株式会社 Receiving apparatus and memory releasing method thereof
US9489424B2 (en) * 2004-12-20 2016-11-08 Oracle International Corporation Cursor pre-fetching
US20060143334A1 (en) * 2004-12-29 2006-06-29 Naik Uday R Efficient buffer management
WO2007016236A2 (en) 2005-07-28 2007-02-08 Riverbed Technology, Inc. Automatic framing selection
GB2433396B (en) * 2005-12-15 2010-06-23 Bridgeworks Ltd A bridge
US20080025290A1 (en) * 2006-07-27 2008-01-31 Sharon Barkai Distributed edge network
US7894344B2 (en) * 2007-03-02 2011-02-22 Adva Ag Optical Networking System and method for aggregated shaping of multiple prioritized classes of service flows
US8929372B2 (en) * 2007-10-30 2015-01-06 Contextream Ltd. Grid router
US8271715B2 (en) * 2008-03-31 2012-09-18 Intel Corporation Modular scalable PCI-Express implementation
WO2010016151A1 (en) * 2008-08-08 2010-02-11 富士通株式会社 Communication device, transmission data generation program, and transmission data generation method
US8467295B2 (en) 2008-08-21 2013-06-18 Contextream Ltd. System and methods for distributed quality of service enforcement
US8644140B2 (en) * 2009-09-09 2014-02-04 Mellanox Technologies Ltd. Data switch with shared port buffers
US8571049B2 (en) * 2009-11-24 2013-10-29 Verizon Patent And Licensing, Inc. Setting and changing queue sizes in line cards
US8379516B2 (en) * 2009-12-24 2013-02-19 Contextream Ltd. Grid routing apparatus and method
US8312188B1 (en) * 2009-12-24 2012-11-13 Marvell International Ltd. Systems and methods for dynamic buffer allocation
US8699491B2 (en) 2011-07-25 2014-04-15 Mellanox Technologies Ltd. Network element with shared buffers
US8897301B2 (en) * 2012-03-14 2014-11-25 International Business Machines Corporation Multicast bandwidth multiplication for a unified distributed switch
US8953619B2 (en) 2012-03-14 2015-02-10 International Business Machines Corporation Dynamic optimization of a multicast tree hierarchy for a distributed switch
US8811406B2 (en) 2012-03-14 2014-08-19 International Business Machines Corporation Delivering multicast frames to aggregated link trunks in a distributed switch
US8913620B2 (en) 2012-03-14 2014-12-16 International Business Machines Corporation Multicast traffic generation using hierarchical replication mechanisms for distributed switches
US9582440B2 (en) 2013-02-10 2017-02-28 Mellanox Technologies Ltd. Credit based low-latency arbitration with data transfer
US8989011B2 (en) 2013-03-14 2015-03-24 Mellanox Technologies Ltd. Communication over multiple virtual lanes using a shared buffer
US9232566B2 (en) 2013-06-14 2016-01-05 Netgear, Inc. Wireless sensor base station with coexistence of multiple homogeneous radios
US9641465B1 (en) 2013-08-22 2017-05-02 Mellanox Technologies, Ltd Packet switch with reduced latency
US9548960B2 (en) 2013-10-06 2017-01-17 Mellanox Technologies Ltd. Simplified packet routing
US9325641B2 (en) 2014-03-13 2016-04-26 Mellanox Technologies Ltd. Buffering schemes for communication over long haul links
US9584429B2 (en) 2014-07-21 2017-02-28 Mellanox Technologies Ltd. Credit based flow control for long-haul links
US11281301B2 (en) 2016-02-03 2022-03-22 Flicktek Ltd Wearable controller for wrist
US10353910B2 (en) * 2016-07-15 2019-07-16 Ebay Inc. Preemptive connection pool adjustments
KR102398842B1 (en) * 2017-03-23 2022-05-17 삼성전자 주식회사 Method and apparatus for changing communication path in a wireless communication system
US10423357B2 (en) 2017-05-18 2019-09-24 Avago Technologies International Sales Pte. Limited Devices and methods for managing memory buffers
CN109150752B (en) * 2017-06-16 2023-02-10 华为技术有限公司 Cache control method, network element and controller
CN107302505B (en) * 2017-06-22 2019-10-29 迈普通信技术股份有限公司 Manage the method and device of caching
US10951549B2 (en) 2019-03-07 2021-03-16 Mellanox Technologies Tlv Ltd. Reusing switch ports for external buffer network
US11558316B2 (en) 2021-02-15 2023-01-17 Mellanox Technologies, Ltd. Zero-copy buffering of traffic of long-haul links

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0793634B2 (en) 1986-11-29 1995-10-09 株式会社東芝 Bus adapter with address conversion function
US4845710A (en) 1986-12-23 1989-07-04 Oki Electric Industry Co., Ltd. Dynamic buffer supervising system for a data link access protocol control
JP3453757B2 (en) 1989-05-29 2003-10-06 株式会社日立製作所 Buffer management method
US5742760A (en) 1992-05-12 1998-04-21 Compaq Computer Corporation Network packet switch using shared memory for repeating and bridging packets at media rate
JP3269273B2 (en) 1994-09-02 2002-03-25 三菱電機株式会社 Cell switching device and cell switching system
JP2817768B2 (en) 1994-12-27 1998-10-30 三菱電機株式会社 Ring type ATM network system
US5594732A (en) 1995-03-03 1997-01-14 Intecom, Incorporated Bridging and signalling subsystems and methods for private and hybrid communications systems including multimedia systems
JPH08288965A (en) 1995-04-18 1996-11-01 Hitachi Ltd Switching system
US6002667A (en) * 1995-07-19 1999-12-14 Fujitsu Network Communications, Inc. Minimum guaranteed cell rate method and apparatus
US5768257A (en) 1996-07-11 1998-06-16 Xylan Corporation Input buffering/output control for a digital traffic switch
US5982748A (en) * 1996-10-03 1999-11-09 Nortel Networks Corporation Method and apparatus for controlling admission of connection requests
US6317427B1 (en) * 1997-04-24 2001-11-13 Cabletron Systems, Inc. Method and apparatus for adaptive port buffering
US6219352B1 (en) * 1997-11-24 2001-04-17 Cabletron Systems, Inc. Queue management with support for multicasts in an asynchronous transfer mode (ATM) switch
US6072772A (en) * 1998-01-12 2000-06-06 Cabletron Systems, Inc. Method for providing bandwidth and delay guarantees in a crossbar switch with speedup
US6044061A (en) * 1998-03-10 2000-03-28 Cabletron Systems, Inc. Method and apparatus for fair and efficient scheduling of variable-size data packets in an input-buffered multipoint switch
US6148337A (en) * 1998-04-01 2000-11-14 Bridgeway Corporation Method and system for monitoring and manipulating the flow of private information on public networks
US5999531A (en) * 1998-04-17 1999-12-07 Cabletron Systems, Inc. Method and system for identifying ports and forwarding packets in a multiport switch
US6292492B1 (en) * 1998-05-20 2001-09-18 Csi Zeitnet (A Cabletron Systems Company) Efficient method and apparatus for allocating memory space used for buffering cells received on several connections in an asynchronous transfer mode (ATM) switch
US6052368A (en) * 1998-05-22 2000-04-18 Cabletron Systems, Inc. Method and apparatus for forwarding variable-length packets between channel-specific packet processors and a crossbar of a multiport switch
US6430152B1 (en) * 1999-12-22 2002-08-06 Alcatel Usa Sourcing, L.P. Scheduler system for scheduling the distribution of ATM cells

Also Published As

Publication number Publication date
WO2000052955A1 (en) 2000-09-08
US6822966B2 (en) 2004-11-23
EP1157585A1 (en) 2001-11-28
US20030198241A1 (en) 2003-10-23
AU765396B2 (en) 2003-09-18
CA2365677A1 (en) 2000-09-08
AU3381500A (en) 2000-09-21

Similar Documents

Publication Publication Date Title
CA2365677C (en) Allocating buffers for data transmission in a network communication device
US6141322A (en) Method and apparatus for precedence and preemption in ATM connection admission control
US5982748A (en) Method and apparatus for controlling admission of connection requests
US7126918B2 (en) Micro-flow management
EP0817436B1 (en) Packet switched communication system
US6038217A (en) Rate shaping in per-flow output queued routing mechanisms for available bit rate (ABR) service in networks having segmented ABR control loops
JP3522103B2 (en) Large capacity multi-class core ATM switch architecture
US6064650A (en) Rate shaping in per-flow output queued routing mechanisms having output links servicing multiple physical layers
US7023856B1 (en) Method and system for providing differentiated service on a per virtual circuit basis within a packet-based switch/router
US20030123449A1 (en) Method and system for mediating traffic between an asynchronous transfer mode (ATM) network and an adjacent network
JP2002501311A (en) Network king system
JP2004506343A (en) System and method for managing data traffic associated with various quality of service principles using conventional network node switches
EP0817433A2 (en) Packet switched communication system and traffic shaping process
US6192049B1 (en) Jitterless and lossless switching fabric with network routing
JP3457522B2 (en) Packet communication method
WO1998037730A1 (en) Resource reservation in atm networks
EP0817435B1 (en) A switch for a packet communication system
EP0817431A2 (en) A packet switched communication system
EP1337078B1 (en) Trunk groups selection in a communication network based on load balance
EP0817432B1 (en) A packet switched communication system
US8396052B1 (en) Apparatus and method for synchronous and asynchronous switching of internet protocol traffic
Zhu et al. A new scheduling scheme for resilient packet ring networks with single transit buffer
KR100204492B1 (en) Method for ensuring the jitter in hrr queueing service of atm networks
Bąk et al. AQUILA network architecture: first trial experiments
Frank et al. Fairness and delay/loss study of an end-to-end bandwidth regulation scheme

Legal Events

Date Code Title Description
EEER Examination request
MKLA Lapsed

Effective date: 20180228