CA2365677C - Allocating buffers for data transmission in a network communication device - Google Patents
Allocating buffers for data transmission in a network communication device Download PDFInfo
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3081—ATM peripheral units, e.g. policing, insertion or extraction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q11/00—Selecting arrangements for multiplex systems
- H04Q11/04—Selecting arrangements for multiplex systems for time-division multiplexing
- H04Q11/0428—Integrated services digital network, i.e. systems for transmission of different types of digitised signals, e.g. speech, data, telecentral, television signals
- H04Q11/0478—Provisions for broadband connections
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/54—Store-and-forward switching systems
- H04L12/56—Packet switching systems
- H04L12/5601—Transfer mode dependent, e.g. ATM
- H04L2012/5629—Admission control
- H04L2012/5631—Resource management and allocation
- H04L2012/5632—Bandwidth allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/54—Store-and-forward switching systems
- H04L12/56—Packet switching systems
- H04L12/5601—Transfer mode dependent, e.g. ATM
- H04L2012/5638—Services, e.g. multimedia, GOS, QOS
- H04L2012/5646—Cell characteristics, e.g. loss, delay, jitter, sequence integrity
- H04L2012/5651—Priority, marking, classes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/54—Store-and-forward switching systems
- H04L12/56—Packet switching systems
- H04L12/5601—Transfer mode dependent, e.g. ATM
- H04L2012/5678—Traffic aspects, e.g. arbitration, load balancing, smoothing, buffer management
- H04L2012/5679—Arbitration or scheduling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/54—Store-and-forward switching systems
- H04L12/56—Packet switching systems
- H04L12/5601—Transfer mode dependent, e.g. ATM
- H04L2012/5678—Traffic aspects, e.g. arbitration, load balancing, smoothing, buffer management
- H04L2012/5681—Buffer or queue management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9005—Buffering 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
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
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
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
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.
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
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:
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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)
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)
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 |
-
1999
- 1999-03-01 US US09/259,946 patent/US6822966B2/en not_active Expired - Lifetime
-
2000
- 2000-02-28 EP EP00912014A patent/EP1157585A1/en not_active Withdrawn
- 2000-02-28 WO PCT/US2000/004965 patent/WO2000052955A1/en not_active Application Discontinuation
- 2000-02-28 AU AU33815/00A patent/AU765396B2/en not_active Ceased
- 2000-02-28 CA CA002365677A patent/CA2365677C/en not_active Expired - Fee Related
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 |