# US 7,610,412 B2 · Throttling communication between software processes

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 7,610,412 B2
- Document ID: US7610412B2
- Status: Granted
- Kind: B2
- Application number: 11/582,068
- Filed: 2006-10-17
- Published: 2008-04-17
- Granted: 2009-10-27
- Earliest claimed: 2006-10-17
- Assignees: Hewlett-Packard Development Company, L.P.
- Inventors: Peter Chan
- Web page: https://patentgrep.com/patent/US7610412B2

## CPC

- H04N 21/64322: {IP}
- H04L 47/10: Flow control; Congestion control
- H04L 47/32: by discarding or delaying data units, e.g. packets or frames
- H04N 21/2402: {Monitoring of the downstream path of the transmission network, e.g. bandwidth available (traffic monitoring in data switching networks H04L43/00; monitoring data switching networks utilization H04L43/0876)}
- H04N 21/25808: {Management of client data (terminal profiles in network data switching protocols H04L67/303)}
- H04N 21/2662: Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
- H04N 21/6405: Multicasting {(data broadcast and multicast in packet switching networks H04L12/18)}
- H04N 21/64769: {for rate control (flow control in packet networks H04L47/10)}
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A throttling process for throttling communications between software processes, where data streams are sent between a source and one or more destinations. The method first determines if any of the destinations are busy. If one or more of the destinations are busy, the process performs a throttling action before sending the data stream to the busy destinations.

## Claims

### Claim 1

A method for controlling a stream of data sent from a source to a plurality of destinations, said method comprising:
selecting which of the plurality of destinations a particular data stream is to be sent;
determining if one or more of the selected destinations are busy;
responsive to a determination that at least one of the selected destinations is not busy, sending the particular data stream to those selected destinations that are not busy; and
responsive to a determination that at least one of the selected destinations is busy, performing a throttling action for the particular data stream being sent to the busy destination so as to reduce the chance that the data stream will be dropped.

### Claim 2 (depends on 1)

The method according to claim 1 further comprising determining whether the throttling action has attempted to send the data stream to the busy destination too many times.

### Claim 3 (depends on 2)

The method according to claim 2 further comprising dropping the data stream if the throttling action has been performed too many times.

### Claim 4 (depends on 1)

The method according to claim 1 wherein determining if the destinations are busy includes determining the usage level of a central processing unit (CPU) at the destination.

### Claim 5 (depends on 4)

The method according to claim 4 wherein determining if the destinations are busy includes determining that the destination is busy if its CPU usage level is 80% or above.

### Claim 6 (depends on 1)

The method according to claim 1 wherein determining if the destinations are busy includes determining if a CPU within the source has too high of a usage level.

### Claim 7 (depends on 1)

The method according to claim 1 wherein performing a throttling action includes waiting a predetermined period of time to send the data stream to the busy destination.

### Claim 8 (depends on 7)

The method according to claim 7 wherein the predetermined period of time is about 20 milliseconds.

### Claim 9 (depends on 1)

The method according to claim 1 wherein performing a throttling action includes sending the data stream to the busy destination at a slower rate.

### Claim 10 (depends on 1)

The method according to claim 1 wherein the source is a master processor and the plurality of destinations are slave processors within a network router.

### Claim 11

A method for controlling a stream of data sent from a source to a plurality of destinations, said method comprising:
selecting which of the plurality of destinations a particular data stream is to be sent;
determining if one or more of the selected destinations are busy;
responsive to a determination that at least one of the selected destinations is not busy, sending the particular data stream to those selected destinations that are not busy;
responsive to a determination that at least one of the selected destinations is busy, performing a throttling action for the particular data stream being sent to the busy destination so as to reduce the chance that the data stream will be dropped, wherein performing the throttling action includes waiting a predetermined period of time to send the data stream to the busy destination; and
determining whether the throttling action has attempted to send the data stream to the busy destination too many times, and dropping the data stream if the throttling action has been performed too many times.

### Claim 12 (depends on 11)

The method according to claim 11 wherein determining if the destinations are busy includes determining the usage level of a central processing unit (CPU) in the destination.

### Claim 13 (depends on 12)

The method according to claim 12 wherein determining if the destinations are busy includes determining that the destination is busy if the CPU usage level is 80% or above.

### Claim 14 (depends on 11)

The method according to claim 11 wherein determining if the destinations are busy includes determining if a CPU within the source has too high of a usage level.

### Claim 15 (depends on 11)

The method according to claim 11 wherein the predetermined period of time is about 20 milliseconds.

### Claim 16 (depends on 11)

The method according to claim 11 wherein the source is a master processor and the plurality of destinations are slave processors within a network router.

### Claim 17

A system for controlling a stream of data from a source to a plurality of destinations, said system comprising:
means for selecting which of the plurality of destinations a particular data stream is to be sent;
means for determining if one or more of the selected destinations is busy;
means, responsive to a determination that at least one of the selected destinations is not busy, for sending the particular data stream to those selected destinations that are not busy; and
means, responsive to a determination that at least one of the selected destinations is busy, for performing a throttling action for the particular data stream being sent to the busy destination so as to reduce the chance that the data stream will be dropped.

### Claim 18 (depends on 17)

The system according to claim 17 further comprising means for determining whether the means for performing the throttling action has attempted to send the data stream to the busy destination too many times.

### Claim 19 (depends on 18)

The system according to claim 18 further comprising means for dropping the data stream if the throttling action has been performed too many times.

### Claim 20 (depends on 17)

The system according to claim 17 wherein the means for determining if the destinations are busy includes means for determining the usage level of a central processing unit (CPU) in the destination.

### Claim 21 (depends on 20)

The system according to claim 20 wherein the means for determining if the destinations are busy determines that the destination is busy if the CPU usage level is 80% or above.

### Claim 22 (depends on 17)

The system according to claim 17 wherein the means for determining if the destinations are busy includes means for determining if a CPU within the source has too high of a usage level.

### Claim 23 (depends on 17)

The system according to claim 17 wherein the means for performing a throttling action includes means for waiting a predetermined period of time to send the data stream to the busy destination.

### Claim 24 (depends on 23)

The system according to claim 23 wherein the predetermined period of time is about 20 milliseconds.

### Claim 25 (depends on 17)

The system according to claim 17 wherein the means for performing a throttling action includes means for sending the data stream to the busy destination at a slower rate.

### Claim 26 (depends on 17)

The system according to claim 17 wherein the source is a master processor and the plurality of destinations are slave processors within a network router.
