# US 9,882,813 B2 · Apparatus and method for flow control

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

- Number: US 9,882,813 B2
- Document ID: US9882813B2
- Status: Granted
- Kind: B2
- Application number: 14/928,195
- Filed: 2015-10-30
- Published: 2016-05-05
- Granted: 2018-01-30
- Earliest claimed: 2014-10-31
- Assignees: Samsung Sds Co., Ltd.
- Applicants: Samsung Sds Co., Ltd.
- Inventors: Jin-Bum Hwang
- Web page: https://patentgrep.com/patent/US9882813B2

## CPC

- H04L 41/342: between virtual entities, e.g. orchestrators, SDN or NFV entities
- H04L 41/0895: Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements
- H04L 45/26: {Route discovery packet}
- H04L 47/122: by diverting traffic away from congested entities
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Disclosed are a flow control apparatus and method. An apparatus for performing flow control in a software defined network (SDN) environment according to an exemplary embodiment includes a message receiving unit configured to receive a first packet processing inquiry message including a packet from a first switch and a control unit configured to determine whether there is a second proxy connected with a second switch and matching a first proxy connected with the first switch in response to the first packet processing inquiry message, instruct the first switch to transmit the packet such that the packet passes through the first proxy when it is determined that there is a second proxy, and instruct the first switch to transmit the packet such that the packet bypasses the first proxy when it is determined that there is no second proxy.

## Claims

### Claim 1

An apparatus for performing flow control in a software defined network (SDN) environment, the apparatus comprising:
a receiver configured to receive a first packet processing inquiry message comprising a first packet from a first switch; and
a controller configured to determine whether there is a second proxy connected with a second switch and matching a first proxy connected with the first switch in response to the first packet processing inquiry message,
wherein the controller is further configured to, in response to determining that there is a second proxy, instruct the first switch to transmit the first packet such that the first packet passes through the first proxy, and configured to, in response to determining that there is no second proxy, instruct the first switch to transmit the first packet such that the first packet bypasses the first proxy,
wherein,
the receiver is further configured to receive, from the second switch, a second packet processing inquiry message following the first packet processing inquiry message, and
in response to the second packet processing inquiry message comprising a hash value or a second packet having a same source and a same destination as the first packet, the controller is further configured to make a subsequent determination on whether the second proxy is present.

### Claim 2 (depends on 1)

The apparatus of claim 1, wherein the controller is further configured to, in response to determining that there is no second proxy, instruct the first switch to transmit a flow associated with the first packet such that the flow bypasses the first proxy.

### Claim 3 (depends on 1)

The apparatus of claim 1, wherein, when the controller determines that there is no second proxy, the controller is further configured to instruct the second switch to transmit the first packet such that the first packet bypasses the second proxy although the second proxy actually exists.

### Claim 4 (depends on 1)

The apparatus of claim 1, wherein, when the controller determines that there is no second proxy, the controller is further configured to instruct the second switch to transmit a flow associated with the first packet such that the flow bypasses the second proxy although the second proxy actually exists.

### Claim 5 (depends on 1)

The apparatus of claim 1, wherein,
the controller is further configured to calculate the hash value using at least one from among an identifier of the first switch and an identifier of the first proxy, a source address of the first packet, and a destination address of the first packet, and to transmit the hash value to the first switch.

### Claim 6 (depends on 1)

The apparatus of claim 1, wherein,
in response to the subsequent determination that the second proxy is present, the controller is further configured to instruct the first switch to transmit another flow following the flow associated with the first packet such that the another flow passes through the first proxy, and
in response to the subsequent determination that the second proxy is present, the controller configured to instruct the second switch to transmit the another flow such that the another flow passes through the second proxy.

### Claim 7 (depends on 1)

The apparatus of claim 1, wherein when the controller determines that there is a second proxy, the controller is further configured to instruct the first switch to transmit a flow associated with the first packet such that the flow passes through the first proxy.

### Claim 8 (depends on 1)

The apparatus of claim 1, wherein when the controller determines that there is a second proxy, the controller is further configured to instruct the second switch to transmit the first packet such that the first packet passes through the second proxy.

### Claim 9 (depends on 1)

The apparatus of claim 1, wherein when the controller determines that there is a second proxy, the controller is further configured to instruct the second switch to transmit a flow associated with the first packet such that the flow passes through the second proxy.

### Claim 10 (depends on 1)

The apparatus of claim 1, wherein,
when the first packet is transmitted from a client to a server, the first switch is a client-side switch, and the second switch is a server-side switch, and
when the first packet is transmitted from the server to the client, the first switch is a server-side switch, and the second switch is a client-side switch.

### Claim 11 (depends on 1)

The apparatus of claim 1, wherein each of the first switch, the second switch, the first proxy, and the second proxy is configured to be driven on a virtual machine.

### Claim 12

A method of performing flow control in a software defined network (SDN) environment, the method comprising:
receiving a first packet processing inquiry message comprising a first packet from a first switch;
determining whether there is a second proxy connected with a second switch and matching a first proxy connected with the first switch in response to the first packet processing inquiry message;
instructing, in response to determining that there is a second proxy, the first switch to transmit the first packet such that the first packet passes through the first proxy;
instructing, in response to determining that there is no second proxy, the first switch to transmit the first packet such that the first packet bypasses the first proxy;
receiving a second packet processing inquiry message following the first packet processing inquiry message from the second switch; and
in response to the second packet processing inquiry message comprising a hash value or a second packet having a same source and a same destination as the first packet, making a subsequent determination on whether the second proxy is present.

### Claim 13 (depends on 12)

The method of claim 12, further comprising, in response to determining that there is no second proxy, instructing the first switch to transmit a flow associated with the first packet such that the flow bypasses the first proxy.

### Claim 14 (depends on 12)

The method of claim 12, further comprising, in response to determining that there is no second proxy, instructing the second switch to transmit the first packet such that the first packet bypasses the second proxy although the second proxy actually exists.

### Claim 15 (depends on 12)

The method of claim 12, further comprising, in response to determining that there is no second proxy, instructing the second switch to transmit a flow associated with the first packet such that the flow bypasses the second proxy although the second proxy actually exists.

### Claim 16 (depends on 12)

The method of claim 12, further comprising
calculating the hash value using at least one from among an identifier (ID) of the first switch and an ID of the first proxy, a source address of the first packet, and a destination address of the first packet; and
transmitting the hash value to the first switch.

### Claim 17 (depends on 12)

The method of claim 12, further comprising:
in response to the subsequent determination determining that the second proxy is present, instructing the first switch to transmit another flow following the flow associated with the first packet such that the another flow passes through the first proxy; and
in response to the subsequent determination determining that the second proxy is present, instructing the second switch to transmit the another flow such that the another flow passes through the second proxy.

### Claim 18 (depends on 12)

The method of claim 12, further comprising, in response to the determining determining that there is a second proxy, instructing the first switch to transmit a flow associated with the first packet such that the flow passes through the first proxy.

### Claim 19 (depends on 12)

The method of claim 12, further comprising, in response to the determining determining that there is a second proxy, instructing the second switch to transmit the first packet such that the first packet passes through the second proxy.

### Claim 20 (depends on 12)

The method of claim 12, further comprising, in response to the determining determining that there is a second proxy, instructing the second switch to transmit a flow associated with the first packet such that the flow passes through the second proxy.

### Claim 21 (depends on 12)

The method of claim 12, wherein,
when the first packet is transmitted from a client to a server, the first switch is a client-side switch, and the second switch is a server-side switch, and
when the first packet is transmitted from the server to the client, the first switch is a server-side switch, and the second switch is a client-side switch.

### Claim 22 (depends on 12)

The method of claim 12, wherein each of the first switch, the second switch, the first proxy, and the second proxy is driven on a virtual machine.

### Claim 23 (depends on 12)

A non-transitory computer-readable medium storing a program when executed by a processor to make a computer execute the method according to claim 12.
