Token based flow control for data communication
First Claim
1. A method of controlling a transmission of data packets from one of a plurality of source computational hosts to a destination computational host in a computer system, comprising the steps of:
- providing a buffer coupled to the destination computational host, the buffer including a plurality of buffer spaces, each of which being configured to receive and store a data packet;
distributing, by the destination computational host, a selected number of tokens to selected ones of the plurality of source computational hosts, each token representing an available one of the plurality of buffer spaces;
sending, by one of the plurality of source computational hosts having at least one token distributed to it by the destination computational host, a data packet to the destination computational host and correspondingly discarding one of the tokens distributed thereto;
requesting, by any source computational host whose number of tokens distributed to it by the destination computational host has fallen below a first selectable threshold, additional tokens from the destination computational host, anddistributing, by the destination computational host, additional tokens to the requesting source computational host and periodically distributing additional tokens to any of the plurality of source computational hosts having sent data packets to the destination computational host, subject to a number of available buffer spaces.
6 Assignments
0 Petitions
Accused Products
Abstract
An embodiment of one of the inventions disclosed herein is a computer system that includes a plurality of interconnected computational hosts, each of which are connected to one of a plurality of buffers. Each of the buffers includes a plurality of buffer spaces. Each of the computational hosts may be configured such that each transfer of a data packet from one of the plurality of computational hosts acting as a source of the data packet to another one of the plurality of computational hosts acting as a destination of the data packet is controlled by an availability of buffer spaces in the buffer coupled to the destination computational host.
-
Citations
27 Claims
-
1. A method of controlling a transmission of data packets from one of a plurality of source computational hosts to a destination computational host in a computer system, comprising the steps of:
-
providing a buffer coupled to the destination computational host, the buffer including a plurality of buffer spaces, each of which being configured to receive and store a data packet; distributing, by the destination computational host, a selected number of tokens to selected ones of the plurality of source computational hosts, each token representing an available one of the plurality of buffer spaces; sending, by one of the plurality of source computational hosts having at least one token distributed to it by the destination computational host, a data packet to the destination computational host and correspondingly discarding one of the tokens distributed thereto; requesting, by any source computational host whose number of tokens distributed to it by the destination computational host has fallen below a first selectable threshold, additional tokens from the destination computational host, and distributing, by the destination computational host, additional tokens to the requesting source computational host and periodically distributing additional tokens to any of the plurality of source computational hosts having sent data packets to the destination computational host, subject to a number of available buffer spaces. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A machine-readable medium having data stored thereon representing sequences of instructions which, when executed by a computer system, controls a transmission of data packets from one of a plurality of source computational hosts to a destination computational host in the computer system by performing the steps of:
-
providing a buffer coupled to the destination computational host, the buffer including a plurality of buffer spaces, each of which being configured to receive and store a data packet; distributing, by the destination computational host, a selected number of tokens to selected ones of the plurality of source computational hosts, each token representing an available one of the plurality of buffer spaces; sending, by one of the plurality of source computational hosts having at least one token distributed to it by the destination computational host, a data packet to the destination computational host and correspondingly discarding one of the tokens distributed thereto; requesting, by any source computational host whose number of tokens distributed to it by the destination computational host has fallen below a first selectable threshold, additional tokens from the destination computational host, and distributing, by the destination computational host, additional tokens to the requesting source computational host and periodically distributing additional tokens to any of the plurality of source computational hosts having sent data packets to the destination computational host, subject to a number of available buffer spaces.
-
-
9. A method of transmitting data packets between a plurality of computational hosts of a computer system, comprising steps of:
-
associating a buffer with each of the computational hosts of the computer system, each buffer including a plurality of buffer spaces, each of which are configured to receive and store a data packet; distributing, by at least some of the computational hosts of the computer system, a selected number of tokens to at least some of the other computational hosts, each distributed token representing an available one of the plurality of buffer spaces of the associated buffer; enabling any computational host to transmit a data packet to a selected other computational host of the plurality of computational hosts as long as the sending computational host has at least one token that was distributed to it by the selected other computational host; requesting, by any computational host whose number of tokens provided by an other computational host in the computer system falls below a first selectable threshold, additional tokens from the other computational host; distributing, by the other computational host, one or more additional tokens to the requesting computational host, subject an availability of free buffer spaces, and periodically distributing, by any computational host having received one or more data packets, one or more additional tokens to any of the plurality of computational hosts having sent it data packets, subject an availability of free buffer spaces. - View Dependent Claims (10, 11, 12, 13, 14, 15)
-
-
16. A machine-readable medium having data stored thereon representing sequences of instructions which, when executed by a computer system, causes a transmission of data packets between a plurality of computational hosts of the computer system, by performing the steps of:
-
associating a buffer with each of the computational hosts of the computer system, each buffer including a plurality of buffer spaces, each of which are configured to receive and store a data packet; distributing, by at least some of the computational hosts of the computer system, a selected number of tokens to at least some of the other computational hosts, each distributed token representing an available one of the plurality of buffer spaces of the associated buffer; enabling any computational host to transmit a data packet to a selected other computational host of the plurality of computational hosts as long as the sending computational host has at least one token that was distributed to it by the selected other computational host; requesting, by any computational host whose number of tokens provided by an other computational host in the computer system falls below a first selectable threshold, additional tokens from the other computational host; distributing, by the other computational host, one or more additional tokens to the requesting computational host, subject an availability of free buffer spaces, and periodically distributing, by any computational host having received one or more data packets, one or more additional tokens to any of the plurality of computational hosts having sent it data packets, subject an availability of free buffer spaces.
-
-
17. A method of controlling a number of data packets a source computational host can send to a destination computational host of a computer system, comprising the steps of:
-
providing the source computational host with a selected number of tokens; limiting the number of data packets the source computational host can send the destination computational host to a number of data packets that is equal to the selected number of tokens, the number of tokens being selected based upon a number of available buffer spaces in a buffer coupled to the destination computational host; decrementing a number of tokens available to the source computational host with each data packet sent from the source computational host to the destination computational host, and requesting, by the source computational host, additional tokens from the destination computational host when a number of tokens available to the source computational host falls below a first selectable threshold. - View Dependent Claims (18, 19, 20, 21)
-
-
22. A computer, comprising:
-
a plurality of buffers, each of the plurality of buffers including a plurality of buffer spaces; a plurality of interconnected computational hosts, each coupled to one of the plurality of buffers, wherein each of the computational hosts is configured such that each transfer of data packets from one of the plurality of computational hosts acting as a source of the data packets to another one of the plurality of computational hosts acting as a destination of the data packet is controlled by an availability of buffer spaces in the buffer coupled to the computational host acting as the destination of the data packets and wherein each of the plurality of computational hosts acting as a source of the data packets is further configured to determine the availability of buffer spaces in the buffer coupled to the computational hosts acting as the destination of the data packets. - View Dependent Claims (23, 24)
-
-
25. A method of controlling a number of messages that a first node of a computer system is allowed to send to a second node of the computer system, comprising the steps of:
-
sending, from the first to the second node, a first token granting message that enables the second node to send numbered messages to the first node up to a first source sequence number, wherein the first source sequence number represents x more tokens than a source sequence number y of tokens currently in possession by the second node, each token enabling the second node to send one message to the first node, which first token granting message is not received by the second node; enabling the second node to send to the first node numbered messages up to the source sequence number y; sending, by the first node to the second node, a second token granting message that enables the second node to send numbered messages to the first node up to a second source sequence number, wherein the second source sequence number represents x′
more tokens than a source sequence number y′
of tokens, wherein y′
=x+y, andsending, by the second node to the first node, a selected number of messages numbered up to a source sequence number equal to x′
+y′
, such that the second node is granted a number of tokens that is equal to the number of tokens it would have received had the second node received the first token granting message. - View Dependent Claims (26, 27)
-
Specification