A method and apparatus for providing buffer state accounting at a link level, otherwise known as link flow control, in addition to flow control at the virtual connection level. Link flow control enables receiver cell buffer sharing while maintaining perconnection bandwidth with lossless cell transmission. High link level update frequency is enabled without a significant sacrifice in overall link forward bandwidth. A higher and thus more efficient utilization of receiver cell buffers is achieved.
A system includes a plurality of computers interconnected by a network including one or more switching nodes. The computers transfer messages over virtual circuits established thereamong. A computer, as a source computer for one or more virtual circuit(s), schedules transmission of messages on a round-robin basis as among the virtual circuits for which it is source computer. Each switching node which forms part of a path for respective virtual circuits also forwards messages for virtual circuits in a round-robin manner, and, a computer, as a destination computer for one or more virtual circuit(s), schedules processing of received messages in a round-robin manner. Round-robin transmission, forwarding and processing at the destination provides a degree of fairness in message transmission as among the virtual circuits established over the network. In addition, messages are transmitted in one or more cells, with the round-robin transmission being on a cell basis, so as to reduce delays which may occur for short messages if a long messages were transmitted in full for one virtual circuit before beginning transmission of a short message for another virtual circuit. For each virtual circuit, the destination computer and each switching node along the path for the virtual circuit can generate a virtual circuit flow control message for transmission to the source computer to temporarily limit transmission over the virtual circuit if the amount of resources being taken up by messages for the virtual circuit exceeds predetermined thresholds, further providing fairness as among the virtual circuits. In addition, each switching node or computer can generate link flow control messages for transmission to neighboring devices in the network to temporarily limit transmission thereto if the amount of resources taken up by all virtual circuits exceeds predetermined thresholds, so as to reduce the likelihood of message loss.
A subscriber network system is provided with is capable of reducing the response time and reducing the device cost. In the subscriber network system, a control cell is generated which includes modified information when modification is caused for the filter table 230 of the cell filter 24-1 to 24-n in the ATM concentrator 200. The cell filters 24-1 to 24-n of the ATM concentrator 200 distribute the cells input through the cell inserting and dividing portion 210 to the subscribers. The control cell terminating portion 220 terminates the control cell supplied from the ATM exchange 100. The filter table 230 stores the setting information for the cell filters 24-1 to 24-n in the control cell terminated at the control cell terminated at the control cell terminating portion 220.
A method and a system for controlling data flow through a network device involve regulating a first flow of network traffic with a first traffic control rule, regulating a second flow of network traffic with a second traffic control rule, and then regulating the passed portion of the two flows with a third traffic control rule that is generic to both the first flow and the second flow. The third traffic control rule regulates the passed portions of the first flow and the second flow on an aggregate basis, such that the total amount of traffic passed by the third traffic control rule does not exceed a predefined bandwidth limit. By regulating the bandwidth consumption of a group of flows with at least two levels of traffic control rules, bandwidth consumption can be simultaneously controlled for narrowly defined flows and more broadly defined flows.
An integrated circuit for processing communication packets having separate data buffers and separate state information buffers. Each data buffer and each state information buffer (hereinafter termed resources) has an associated in-use counter. Multiple events can share the same resource. The counter associated with a resource is incremented when a resource becomes associated with a particular event. The counter associated with a resource is decremented when an event completes the use of that particular resource. When the in-use counter for a resource becomes zero, the in-use counter indicates that the resource is unassigned and that the resource can be assigned to a new event.
In accordance with the present invention a method and apparatus are disclosed in which each data stream of a plurality of data streams is assigned to a queue and each queue is allocated a predetermined maximum numbers of buffers. Once the queue has exhausted its supply of buffers, the data from the corresponding data stream is discarded until buffers are refreshed thereby allowing the remaining data streams to operate in a normal fashion. Accordingly, excessive buffer usage by an individual data stream is prevented, as well as excessive demand of other related system resources such as CPU time. The data stream which has had its data discarded will begin having its incoming data processed upon the next refresh operation providing the queue associated with that data stream has had additional buffers allocated. The discarded data is lost and is not recovered. The refresh operation is performed in a manner that provides prioritization of the queues and a high degree of fairness within each priority level. The refresh operation may be scheduled to happen synchronously, such as being synchronized to a real-time clock within the system, or it may be constructed to occur asynchronously. When the refresh operations occur asynchronously the refresh operation will occur more often in a lightly loaded system and less frequently in a heavily loaded system, thereby allowing data streams exhibiting high buffer demands access to available buffers while the idle data streams are not requiring free buffers.