# US 2016/0366195 A1 · Relayed Communication Channel Establishment

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

- Number: US 2016/0366195 A1
- Document ID: US20160366195A1
- Status: Published application
- Kind: A1
- Application number: 15/179,241
- Filed: 2016-06-10
- Published: 2016-12-15
- Earliest claimed: 2015-06-15
- Assignees: Apple Inc.
- Applicants: Apple Inc.
- Inventors: Amol V. Pattekar; Gokul P. Thirumalai; Thomas P. Devanneaux; Aleksei Naiden; Joe S. Abuan; Yan Yang; Berkat S. Tung
- Web page: https://patentgrep.com/patent/US20160366195A1

## CPC

- H04L 65/1086: {session scope modification}
- H04L 61/2589: over a relay server, e.g. traversal using relay for network address translation [TURN]
- H04L 65/1069: Session establishment or de-establishment
- H04L 61/2514: between local and global IP addresses
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Establishing a communication channel via a relay server with reduced setup time. Upon request by an initiating communication device a relay allocation server may allocate a single relay server for use in a communication session between the initiating communication device and one or more recipient communication devices. The relay server may be selected to perform favorably for the initiating communication device. Messaging for establishment of the communication session may be performed using persistent messaging connections, to avoid connection establishment cost. Messaging may also be performed using address tokens to avoid the cost of discovering global IP addresses. Following establishment of the communication session, the relay server may discover the IP address of one or more recipient communication devices, and may initiate reallocation of those devices to another relay server.

## Claims

### Claim 1

A method for establishing a communication session between an initiating communication device and a recipient communication device using a relay allocation server, the method comprising:
by the relay allocation server:
receiving, from the initiating communication device, over a first connection, a request for allocation of a relay server for the communication session;
allocating a first relay server for the communication session;
providing, to the initiating communication device, over the first connection, information identifying the first relay server allocated for the communication session; and
providing, to the recipient communication device, over a second connection, information identifying the first relay server allocated for the communication session.

### Claim 2 (depends on 1)

The method of claim 1, wherein the allocating comprises the relay allocation server selecting the first relay server for use by both the initiating communication device and the recipient communication device to establish the communication session between the initiating communication device and the recipient communication device, wherein the first relay server is selected based on a network location of the initiating communication device and without regard to a network location of the recipient communication device.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
by the relay allocation server:
receiving, from the recipient communication device, after providing to the recipient communication device the information identifying the first relay server, a request for allocation of a second relay server for use by the recipient communication device for the communication session;
allocating the second relay server for use by the recipient communication device for the communication session, the allocating based on a network location of the recipient communication device; and
providing, to the recipient communication device, information identifying the second relay server.

### Claim 4 (depends on 1)

The method of claim 1, wherein the first connection and the second connection are persistent connections.

### Claim 5 (depends on 4)

The method of claim 4, wherein the providing, to the recipient communication device, the information identifying the first relay server is performed without determining an IP address of the recipient communication device.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
establishing a persistent connection between the relay allocation server and a messaging server;
wherein the first connection comprises a first connection leg comprising the persistent connection between the relay allocation server and the messaging server, and a second connection leg comprising a persistent connection between the messaging server and the initiating communication device;
wherein the second connection comprises the first connection leg comprising the persistent connection between the relay allocation server and the messaging server, and a third connection leg comprising a persistent connection between the messaging server and the recipient communication device.

### Claim 7 (depends on 1)

The method of claim 1, wherein the recipient communication device is a first recipient communication device, wherein the communication session is further between the initiating communication device, the first recipient communication device, and a second recipient communication device, the method further comprising:
providing, to the second recipient communication device, over a third connection, information identifying the first relay server allocated for the communication session.

### Claim 8

A recipient communication device comprising:
at least one processor; and
a memory storing software instructions executable by the at least one processor, the software instructions, when executed, causing the recipient communication device to:
receive, from a relay allocation server, information identifying a first relay server allocated for use by both the recipient communication device and an initiating communication device for a communication session initiated by the initiating communication device;
join the communication session using the first relay server;
receive, from the first relay server, after joining the communication session, an instruction to request a different relay server;
transmit, to the relay allocation server, a request for allocation of a second relay server for use by the recipient communication device for the communication session;
receive, from the allocation server, information identifying the second relay server allocated for use by the recipient communication device for the communication session; and
join the communication session using the second relay server.

### Claim 9 (depends on 8)

The recipient communication device of claim 8, wherein the first relay server is selected without regard to a network location of the recipient communication device, and wherein the second relay server is selected based on the network location of the recipient communication device.

### Claim 10 (depends on 8)

The recipient communication device of claim 8, wherein the software instructions cause the recipient communication device to:
establish a first persistent connection to a messaging server, wherein the messaging server maintains a second persistent connection with the relay allocation server, wherein receiving the information identifying the first server, transmitting the request for allocation of the second relay server, and receiving information identifying the second relay server are performed via the first persistent connection and the second persistent connection without additional connection establishment.

### Claim 11 (depends on 8)

The recipient communication device of claim 8, wherein, in joining the communication session, the software instructions cause the recipient communication device to:
transmit, to the first relay server, a request to bind the recipient communication device to the communication session; and
receive, from the first relay server, an acknowledgment that both the recipient communication device and the initiating communication device are bound to the communication session.

### Claim 12 (depends on 11)

The recipient communication device of claim 11, wherein, in joining the communication session, the software instructions further cause the communication device to:
transmit communication data to the first relay server after transmitting the request to bind the recipient communication device, but before receiving the acknowledgment.

### Claim 13

A method for establishing a communication session, using a relay server, between a plurality of communication devices, the method comprising:
by the relay server:
receiving, from each communication device of the plurality of communication devices, a respective bind request;
binding the communication session to each communication device of the plurality of communication devices, in response to the respective bind request;
transmitting, to each communication device of the plurality of communication devices, an acknowledgment that all of the communication devices of the plurality of communication devices are bound to the communication session; and
receiving communication data from a first communication device of the plurality of communication devices, wherein the receiving the communication data begins prior to the transmitting the acknowledgment.

### Claim 14 (depends on 13)

The method of claim 13, further comprising:
by the relay server:
transmitting to each respective communication device bound to the communication session by the relay server, other than the first communication device, at least a portion of the received communication data.

### Claim 15 (depends on 14)

The method of claim 14, wherein, upon binding a particular communication device to the communication session, the relay server begins transmitting to the particular communication device subsequently received portions of the communication data.

### Claim 16 (depends on 14)

The method of claim 14, further comprising:
by the relay server:
storing the received communication data, wherein, following the binding a particular communication device to the communication session, the relay server transmits to the particular communication device stored portions of the communication data received prior to binding of the particular communication device.

### Claim 17 (depends on 13)

The method of claim 13, further comprising:
by the relay server:
determining that a different relay server would provide improved relay performance for a particular communication device of the plurality of communication devices; and
transmitting, to the particular communication device, an instruction to request that a relay allocation server allocate a different relay server for use by the particular communication device for the communication session.

### Claim 18 (depends on 17)

The method of claim 17, wherein the determining that a different relay server would provide improved relay performance for a particular communication device of the plurality of communication devices is based on a network location of the particular communication device.

### Claim 19 (depends on 17)

The method of claim 17, wherein the determining that a different relay server would provide improved relay performance for a particular communication device of the plurality of communication devices is based on a traffic load of the relay server.

### Claim 20 (depends on 17)

The method of claim 17, further comprising:
by the relay server:
receiving notification that the communication session has been bound to the particular communication device by a second relay server; and
transmitting, to the second relay server, subsequent communication data for the particular communication device.
