# US 9,438,670 B2 · Data replication for a virtual networking system

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

- Number: US 9,438,670 B2
- Document ID: US9438670B2
- Status: Granted
- Kind: B2
- Application number: 13/801,977
- Filed: 2013-03-13
- Published: 2014-09-18
- Granted: 2016-09-06
- Earliest claimed: 2013-03-13
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Sushma Anantharam; AMitabha Biswas; Harshad S. Padhye
- Web page: https://patentgrep.com/patent/US9438670B2

## CPC

- H04L 67/1095: Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
- G06F 9/45533: {Hypervisors; Virtual machine monitors}
- G06F 16/27: Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F 16/273: {Asynchronous replication or reconciliation}
- H04L 5/0055: {Physical resource allocation for ACK/NACK (for physical mapping arrangements in ARQ protocols H04L1/1861)}
- H04L 12/4633: {Interconnection of networks using encapsulation techniques, e.g. tunneling}
- 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/72: {Routing based on the source address}
- H04L 45/74: Address processing for routing
- H04L 67/10: in which an application is distributed across nodes in the network (software deployment G06F8/60; multiprogramming arrangements G06F9/46)
- H04L 67/104: Peer-to-peer [P2P] networks
- H04L 69/22: Parsing or analysis of headers
- H04L 69/326: in the transport layer [OSI layer 4] (H04L69/16 takes precedence)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Embodiments of the invention provide a method for data replication in a networking system comprising multiple computing nodes. The method comprises maintaining a data set on at least two computing nodes of the system. The method further comprises receiving a data update request for the data set, wherein the data update request includes a data update for the data set. The data set on the at least two computing nodes is updated based on the data update request received.

## Claims

### Claim 1

A method for data replication in a virtual networking system comprising multiple computing nodes, wherein the multiple computing nodes include a first computing node, and wherein each computing node comprises a server including one or more resources, the method comprising:
maintaining a first replica of a data set for a tenant on the first computing node;
receiving, at the first computing node, a data request for the data set, wherein the data request includes a data update for the data set;
updating the first replica of the data set based on the data request;
determining where the data request originates from;
in response to determining that the data request originates from a client device:
determining a second computing node of the multiple computing nodes that maintains a second replica of the data set;
modifying the data request by modifying a transport header section of the data request to include an address of the second computing node as a destination address; and
forwarding the modified data request to the second computing node to update the second replica of the data set based on the modified data request; and
in response to determining that the data request originates from another computing node of the multiple computing nodes:
sending an acknowledgement message to the another computing node.

### Claim 2 (depends on 1)

The method of claim 1, wherein modifying the data request further comprises modifying the transport header section of the data request to further include an address of the first computing node as a source address.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
maintaining mapping information on the first computing node, wherein the mapping information identifies which one or more computing nodes of the multiple computing nodes maintains one or more replicas for the data set.

### Claim 4 (depends on 3)

The method of claim 3, wherein the second computing node is determined based on the mapping information.

### Claim 5 (depends on 4)

The method of claim 4, further comprising:
in response to determining that the data originates from the client device:
receiving a first acknowledgement message from the second computing node; and
sending a second acknowledgement message to the client device in response to receiving the first acknowledgment message from the second computing device.

### Claim 6 (depends on 2)

The method of claim 2, wherein modifying the data request into the first data replication request further comprises modifying the transport header section of the data request to further include a first port of the first computing node as a source port and a second port of the second computing node as a destination port.

### Claim 7

A system comprising a computer processor, a computer-readable hardware storage medium, and program code embodied with the computer-readable hardware storage medium for execution by the computer processor to implement a method for data replication in a virtual networking system comprising multiple computing nodes, wherein the multiple computing nodes include a first computing node and wherein each computing node comprises a server including one or more resources, the method comprising:
maintaining a first replica of a data set for a tenant on the first computing node;
receiving, at the first computing node, a data request for the data set, wherein the data request includes a data update for the data set;
updating the first replica of the data set based on the data request;
determining where the data request originates from;
in response to determining that the data request originates from a client device:
determining a second computing node of the multiple computing nodes that maintains a second replica of the data set;
modifying the data request by modifying a transport header section of the data request to include an address of the second computing node as a destination address; and
forwarding the modified data request to the second computing node to update the second replica of the data set based on the modified data request; and
in response to determining that the data request originates from another computing node of the multiple computing nodes:
sending an acknowledgement message to the another computing node.

### Claim 8 (depends on 7)

The system of claim 7, the method further comprising: maintaining mapping information on the first computing node, wherein the mapping information identifies which one or more computing nodes of the multiple computing nodes maintains one or more replicas for the data set.

### Claim 9 (depends on 8)

The system of claim 8, wherein the second computing node is determined based on the mapping information.

### Claim 10 (depends on 7)

The system of claim 7, the method further comprising:
in response to determining that the data request originates from the client device:
receiving a first acknowledgement message from the second computing node; and
sending a second acknowledgement message to the client device in response to receiving the first acknowledgment message from the second computing device.

### Claim 11 (depends on 7)

The system of claim 7, wherein modifying the data request further comprises modifying the transport header section of the data request to further include an address of the first computing node as a source address.

### Claim 12 (depends on 11)

The system of claim 11, wherein modifying the data request into the first data replication request further comprises modifying the transport header section of the data request to further include a first port of the first computing node as a source port, and a second port of the second computing node as a destination port.

### Claim 13

A computer program product comprising a computer-readable hardware storage medium having program code embodied therewith, the program code being executable by a computer to implement a method for data replication in a virtual networking system comprising multiple computing nodes, wherein the multiple computing nodes include a first computing node, and wherein each computing node comprises a server including one or more resources, the method comprising:
maintaining a first replica of a data set for a tenant on the first computing node;
receiving, at the first computing node, a data request for the data set, wherein the data request includes a data update for the data set;
updating the first replica of the data set based on the data request;
determining where the data request originates from;
in response to determining that the data request originates from a client device:
determining a second computing node of the multiple computing nodes that maintains a second replica of the data set;
modifying the data request by modifying a transport header section of the data request to include an address of the second computing node as a destination address; and
forwarding the modified data request to the second computing node to update the second replica of the data set based on the modified data request; and
in response to determining that the data request originates from another computing node of the multiple computing nodes:
sending an acknowledgement message to the another computing node.

### Claim 14 (depends on 13)

The computer program product of claim 13, wherein modifying the data request further comprises modifying the transport header section of the data request to further include an address of the first computing node as a source address.

### Claim 15 (depends on 14)

The computer program product of claim 14, the method further comprising: maintaining mapping information on the first computing node, wherein the mapping information identifies which one or more computing nodes of the multiple computing nodes maintains one or more replicas for the data set.

### Claim 16 (depends on 15)

The computer program product of claim 15, wherein the second computing node is determined based on the mapping information.

### Claim 17 (depends on 16)

The computer program product of claim 16, the method further comprising:
in response to determining that the data request originates from the client device:
receiving a first acknowledgement message from the second computing node; and
sending a second acknowledgement message to the client device in response to receiving the first acknowledgment message from the second computing device.
