# US 11,310,853 B2 · Multi-path data communications

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

- Number: US 11,310,853 B2
- Document ID: US11310853B2
- Status: Granted
- Kind: B2
- Application number: 16/651,053
- Filed: 2017-09-29
- Published: 2020-07-16
- Granted: 2022-04-19
- Earliest claimed: 2017-09-29
- Assignees: Nokia Technologies Oy
- Applicants: Nokia Technologies Oy
- Inventors: Stepan Kucera; Milind Buddhikot; Kariem Fahmi
- Web page: https://patentgrep.com/patent/US11310853B2

## CPC

- H04W 76/15: Setup of multiple wireless link connections
- G06F 9/547: {Remote procedure calls [RPC]; Web services}
- H04L 45/24: Multipath
- H04W 28/20: Negotiating bandwidth
- H04W 28/24: Negotiating SLA [Service Level Agreement]; Negotiating QoS [Quality of Service]
- H04W 88/02: Terminal devices
- H04W: WIRELESS COMMUNICATION NETWORKS (broadcast communication H04H; communication systems using wireless links for non-selective communication, e.g. wireless extensions H04M1/72)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A method and system is described in which a client device comprises a memory arranged as a user space and a kernel space. One operation comprises providing in the user space a user space control module for receiving one or more application calls destined for the kernel space. Another operation comprises receiving by the user space control module an application call for requesting data transmission using one or more kernel space network services. Another operation comprises implementing the requested data transmission over multiple paths from the client device under the control of the user space control module.

## Claims

### Claim 1

A method comprising:
in a client device comprising a memory arranged as a user space and a kernel space:
providing in the user space a user space control module for receiving one or more application calls destined for the kernel space;
receiving by the user space control module an application call for requesting data transmission using one or more kernel space network services; and
implementing the requested data transmission over multiple paths from the client device under the control of the user space control module, wherein implementing the requested data transmission over multiple paths from the client device comprises implementing one or more new networking protocol stacks in the user space,
wherein the user space control module receives one or more application calls destined for the kernel space by means of modifying an application execution environment in the user space,
wherein modifying the application execution environment comprises injecting system call hooks to a virtual machine, the system call hooks being for executing modified functions for implementing multiple path control, and
wherein the implemented networking protocol stacks in the user space comprise one or more of MPUDP, TCP over MPUDP, FEC-aware MPUDP, and a RAW socket-based protocol stack.

### Claim 2 (depends on 1)

The method of claim 1, wherein the user space control module implements the requested data transmission in accordance with network usage rules.

### Claim 3 (depends on 2)

The method of claim 2, wherein the network usage rules define a bandwidth management policy for each of the multiple paths.

### Claim 4 (depends on 2)

The method of claim 2, wherein the network usage rules define a quality of service (Qos) policy for each of the multiple paths and/or multi-path connections.

### Claim 5 (depends on 2)

The method of claim 2, wherein the network usage rules determine which network services to use for data transmission of the multiple paths based on the type of application making the application call.

### Claim 6 (depends on 2)

The method of claim 2, wherein the network usage rules determine which network services to use for data transmission of the multiple paths based on the application service requirements and/or quality of service requirements.

### Claim 7 (depends on 2)

The method of claim 2, wherein the network usage rules are dynamically updated in response to feedback data indicative of a measured bandwidth and/or quality of service performance.

### Claim 8 (depends on 1)

The method of claim 1, wherein the user space control module receives one or more application calls destined for the kernel space by means of modifying the associated application, when invoked, to point to a library associated with the user space control module for implementing multiple path control.

### Claim 9 (depends on 8)

The method of claim 8, wherein modifying the associated application comprises modifying its native call library to point to the multiple path control library.

### Claim 10 (depends on 8)

The method of claim 8, wherein the multiple path control library generates, in place of an application call for a standard socket, a call for a multiple path method that opens multiple parallel sockets and a multiple path scheduler.

### Claim 11 (depends on 1)

The method of claim 1, wherein implementing the requested data transmission over multiple paths from the client device comprises configuring one or more existing kernel protocols in the kernel space.

### Claim 12 (depends on 11)

The method of claim 11, wherein the one or more existing kernel protocols are configured to select radio interfaces for transmitting the data using multiple paths.

### Claim 13 (depends on 1)

The method of claim 1, wherein implementing the requested data transmission over multiple paths from the client device comprises modifying one or more existing kernel protocols in the kernel space.

### Claim 14

A non-transitory computer-readable storage medium having stored thereon computer-readable code, which, when executed by at least one processor, causes the at least one processor to perform a method, comprising:
in a client device comprising a memory arranged as a user space and a kernel space:
providing in the user space a user space control module for receiving one or more application calls destined for the kernel space;
receiving by the user space control module an application call for requesting data transmission using one or more kernel space network services; and
implementing the requested data transmission over multiple paths from the client device under the control of the user space control module, wherein implementing the requested data transmission over multiple paths from the client device comprises implementing one or more new networking protocol stacks in the user space,
wherein the user space control module receives one or more application calls destined for the kernel space by means of modifying an application execution environment in the user space,
wherein modifying the application execution environment comprises injecting system call hooks to a virtual machine, the system call hooks being for executing modified functions for implementing multiple path control, and
wherein the implemented networking protocol stacks in the user space comprise one or more of MPUDP, TCP over MPUDP, FEC-aware MPUDP, and a RAW socket-based protocol stack.

### Claim 15

An apparatus, the apparatus having at least one processor and at least one memory having computer-readable code stored thereon which when executed controls the at least one processor:
in a client device comprising a memory arranged as a user space and a kernel space:
to provide in the user space a user space control module for receiving one or more application calls destined for the kernel space;
to receive by the user space control module an application call for requesting data transmission using one or more kernel space network services; and
to implement the requested data transmission over multiple paths from the client device under the control of the user space control module, wherein implementing the requested data transmission over multiple paths from the client device comprises implementing one or more new networking protocol stacks in the user space,
wherein the user space control module receives one or more application calls destined for the kernel space by means of modifying an application execution environment in the user space,
wherein modifying the application execution environment comprises injecting system call hooks to a virtual machine, the system call hooks being for executing modified functions for implementing multiple path control, and
wherein the implemented networking protocol stacks in the user space comprise one or more of MPUDP, TCP over MPUDP, FEC-aware MPUDP, and a RAW socket-based protocol stack.

### Claim 16 (depends on 15)

The apparatus of claim 15, wherein the user space control module is configured to implement the requested data transmission in accordance with network usage rules.
