# US 2013/0155862 A1 · Performing rate limiting within a network

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

- Number: US 2013/0155862 A1
- Document ID: US20130155862A1
- Status: Published application
- Kind: A1
- Application number: 13/761,743
- Filed: 2013-02-07
- Published: 2013-06-20
- Earliest claimed: 2004-02-18
- Assignees: Fortinet, Inc.
- Inventors: Bert H. Tanaka; Daniel J. Maltbie; Joseph R. Mihelich
- Web page: https://patentgrep.com/patent/US20130155862A1

## CPC

- H04L 12/4645: {Details on frame tagging (routing of packets H04L45/00; support for virtual LAN H04L49/354)}
- H04L 12/4641: {Virtual LANs, VLANs, e.g. virtual private networks [VPN] (LAN interconnection over a bridge based backbone H04L12/462; encapsulation techniques H04L12/4633; routing of packets H04L45/00; packet switches H04L49/00; virtual private networks for security H04L63/0272)}
- H04L 45/02: Topology update or discovery
- H04L 45/12: Shortest path evaluation
- H04L 45/121: by minimising delays
- H04L 45/22: {Alternate routing}
- H04L 45/26: {Route discovery packet}
- H04L 45/38: {Flow based routing}
- H04L 45/66: {Layer 2 routing, e.g. in Ethernet based MAN's}
- H04L 47/125: by balancing the load, e.g. traffic engineering
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Methods and systems for performing rate limiting are provided. According to one embodiment, information is maintained regarding a set of virtual networks into which a network has been logically divided. Each virtual network comprises a loop-free switching path, reverse path learning network and provides a path through the network between a first and second component thereby collectively providing multiple paths between the first and second components. Packets are received by the first component that are associated with a flow sent by a source component. The packets are forwarded by the first component to the second component along a particular path defined by the set of virtual networks. A congestion metric is determined for the particular path and based thereon it is determined whether a congestion threshold has been reached. Responsive to an affirmative determination, the source component is instructed to limit the rate at which the packets are sent.

## Claims

### Claim 1

A computer-implemented method comprising:
maintaining, within a virtual network storage of a first component of a plurality of components coupled in communication with a network, information regarding a set of virtual networks into which the network has been logically divided and that can be used by the first component to transport packets through the network, wherein each virtual network of the set of virtual networks comprises a loop-free switching path, reverse path learning network and wherein each virtual network of the set of virtual networks provides a path through the network between the first component and a second component of the plurality of components thereby collectively providing a plurality of paths through the network between the first component and the second component;
receiving, by the first component, one or more packets associated with a flow sent by a source component, wherein the source component is sending the one or more packets associated with the flow at a particular rate;
forwarding, by the first component, the one or more packets associated with the flow to the second component along a particular path defined by the set of virtual networks;
determining a congestion metric for the particular path;
determining, based at least partially upon the congestion metric for the particular path, whether the particular path has reached a congestion threshold; and
in response to a determination that the particular path has reached a congestion threshold, instructing the source component to limit the rate at which the source component is sending packets associated with the flow.

### Claim 2 (depends on 1)

The method of claim 1, wherein determining the congestion metric for the particular path comprises determining at least one one-way latency value for the particular path which indicates how much time is needed for a set of information to travel from the first component to the second component along the particular path.

### Claim 3 (depends on 1)

The method of claim 1, wherein determining the congestion metric for the particular path comprises determining at least one roundtrip latency value for the particular path which indicates how much time is needed for a set of information to travel from the first component to the second component along the particular path and back to the first component.

### Claim 4 (depends on 1)

The method of claim 1, wherein instructing the source component comprises providing information to the source component that can be used by the source component to identify the flow.

### Claim 5 (depends on 1)

The method of claim 1, wherein the congestion threshold represents a congestion level at which packets sent along the particular path are likely to be dropped by one or more switches in the particular path.

### Claim 6 (depends on 1)

The method of claim 1, wherein the first component comprises a border component which is situated at a border of the network, and which provides access to the network by one or more external components, such as the source component.

### Claim 7 (depends on 1)

The method of claim 1, wherein the first component comprises a network interface which is situated at a border of the network.

### Claim 8 (depends on 1)

The method of claim 1, wherein the congestion metric for the particular path comprises an aggregate congestion metric representing an average congestion across multiple paths in the network.

### Claim 9 (depends on 1)

The method of claim 1, wherein the set of virtual networks comprise a plurality of virtual local area networks (VLANs).

### Claim 10 (depends on 1)

The method of claim 1, further comprising:
sending, by the first component, a plurality of latency request packets to the second component via the particular path in the network;
receiving, by the first component, a plurality of latency response packets sent by the second component in response to the plurality of latency request packets; and
determining, based at least partially upon timestamp information contained in the plurality of latency response packets, an estimated latency between the first component and the second component.

### Claim 11 (depends on 10)

The method of claim 10, wherein the timestamp information comprises initial timestamps added to the plurality of latency request packets by the first component and arrived timestamps added by the second component to the plurality of latency response packets, and said determining, based at least partially upon timestamp information contained in the plurality of latency response packets, an estimated latency between the first component and the second component comprises determining a difference between corresponding arrived timestamps and initial timestamps.

### Claim 12 (depends on 10)

The method of claim 10, wherein the timestamp information comprises initial timestamps added to the plurality of latency request packets by the first component and return timestamps added by the second component to the plurality of latency response packets, and said determining, based at least partially upon timestamp information contained in the plurality of latency response packets, an estimated latency between the first component and the second component comprises determining a difference between corresponding return timestamps and initial timestamps.

### Claim 13 (depends on 10)

The method of claim 10, wherein said timestamp information comprises initial timestamps added to the plurality of latency request packets by the first component and received timestamps added to the plurality of latency response packets by the first component, and said determining, based at least partially upon timestamp information contained in the plurality of latency response packets, an estimated latency between the first component and the second component comprises:
determining a roundtrip latency based on corresponding received timestamps and initial timestamps; and
setting an estimated one-way latency to one half the roundtrip latency.

### Claim 14 (depends on 10)

The method of claim 10, wherein said timestamp information comprises initial timestamps added to the plurality of latency request packets by the first component and received timestamps added to the plurality of latency response packets by the first component, and said determining, based at least partially upon timestamp information contained in the plurality of latency response packets, an estimated latency between the first component and the second component comprises determining the estimated roundtrip latency based on corresponding received timestamps and initial timestamps.

### Claim 15 (depends on 2)

The method of claim 2, wherein the at least one one-way latency value comprises an average one-way latency (AOWL) calculated based on an equation in a form substantially as follows:
AOWL=(1−PL)*previous AOWL+PL*current one-way latency
where PL is a constant between zero and one and the current one-way latency is a most recently observed one-way latency between the first component and the second component.

### Claim 16 (depends on 3)

The method of claim 3, wherein the at least one roundtrip latency value comprises an average roundtrip latency (ARTL) calculated based on an equation in a form substantially as follows:
ARTL=(1−PR)*previous ARTL+PR*current roundtrip latency
wherein PR is a constant between zero and one and the current roundtrip latency is a most recently observed roundtrip latency between the first component and the second component.
