# US 9,439,234 B2 · System and method for intelligently selecting a network interface

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

- Number: US 9,439,234 B2
- Document ID: US9439234B2
- Status: Granted
- Kind: B2
- Application number: 13/719,927
- Filed: 2012-12-19
- Published: 2014-06-19
- Granted: 2016-09-06
- Earliest claimed: 2012-12-19
- Assignees: Apple Inc.
- Applicants: Apple Inc.
- Inventors: Joshua V Graessley
- Web page: https://patentgrep.com/patent/US9439234B2

## CPC

- H04W 76/18: Management of setup rejection or failure
- H04W 76/19: Connection re-establishment
- H04W 48/18: Selecting a network or a communication service
- H04W 72/542: using measured or perceived quality
- H04W 74/0875: {with assigned priorities based access}
- H04W 88/06: adapted for operation in multiple networks {or having at least two operational modes}, e.g. multi-mode terminals
- H04W: WIRELESS COMMUNICATION NETWORKS (broadcast communication H04H; communication systems using wireless links for non-selective communication, e.g. wireless extensions H04M1/72)

## Abstract

An method, apparatus and machine readable medium are described for intelligently selecting a network interface. An attempt may be made to connect over a first network interface having the highest priority (e.g., WiFi). At the same time, a fallback timer is started. If the attempt to connect over the first network interface does not succeed within a designated timer threshold, then a parallel attempt is made to connect over a second network interface having a lower priority (e.g., cellular). The first network interface over which a connection is successfully made is then used. These techniques may be employed on a per-connection basis. Thus, a first process may successfully connect over the first network interface while a second process may be unsuccessful over the first network interface but may fall back to the second network interface.

## Claims

### Claim 1

A method implemented on a network client that includes two or more network interfaces, wherein the two or more network interfaces include a first network interface that is a WiFi interface and a second network interface that is a cellular interface, wherein the method comprises:
the network client prioritizing the two or more network interfaces;
the network client initially attempting a connection over the first network interface, the first network interface having a relatively higher priority than the second network interface;
the network client starting a fallback timer substantially concurrently with attempting the connection over the first network interface;
the network client attempting, if the fallback timer has reached a first specified timer threshold prior to a successful connection being established over the first network interface, a connection over the second network interface in parallel with the attempt to connect over the first network interface, wherein the attempting the connection over the first and second network interfaces includes attempting to establish a transmission control protocol (TCP) connection using the first and second network interfaces, respectively; and
the network client using the first one of the first and second network interfaces over which a connection is successfully established to communicate data.

### Claim 2 (depends on 1)

The method as in claim 1 further comprising:
adjusting the specified timer threshold to a second specified timer threshold in response to connecting over the second network interface.

### Claim 3 (depends on 2)

The method as in claim 2 further comprising:
re-adjusting the specified timer threshold back to the first specified timer threshold in response to connecting over the first network interface.

### Claim 4 (depends on 1)

The method as in claim 1 wherein the two or more network interfaces include a third network interface, and wherein if the fallback timer has reached a second specified timer threshold prior to a successful connection being established over the first and second network interfaces, then attempting a connection over the third network interface; and
using the first one of the first, second, and third network interfaces over which a connection is successfully established to communicate data.

### Claim 5 (depends on 1)

The method as in claim 1 further comprising:
receiving input from a user; and
prioritizing the two or more network interfaces based on the input received from the user.

### Claim 6 (depends on 1)

The method as in claim 1 wherein the prioritization of the network interfaces is performed per-process wherein each network process is associated with a separate set of network interface prioritizations.

### Claim 7 (depends on 1)

The method as in claim 1 wherein the second network interface will not be used if a particular process is designed to use only the first network interface.

### Claim 8 (depends on 1)

The method as in claim 1 further comprising:
determining if the connection will be routed over a virtual private network (VPN); and
using the second network interface only if the connection is not to be routed over a VPN.

### Claim 9 (depends on 1)

The method as in claim 1 further comprising:
determining if a process for which a connection is desired has a binding to a particular network interface other than the second user interface; and
attempting to use the second network interface only if the process did not bind to the first network interface.

### Claim 10 (depends on 1)

The method as in claim 1 wherein a successful connection is defined as the ability to access a desired resource.

### Claim 11 (depends on 1)

The method as in claim 1 wherein the connection attempt over the first or second network interface is unsuccessful when the connection attempt is redirected to a captive portal.

### Claim 12

A non-transitory machine-readable medium having program code stored thereon which, when executed by a machine, causes the machine to perform the operations of:
prioritizing two or more network interfaces, the two or more network interfaces including a first network interface and a second network interface;
initially attempting a connection over the first network interface, the first network interface having a relatively higher priority than the second network interface;
starting a fallback timer substantially concurrently with attempting the connection over the first network interface;
wherein if the fallback timer has reached a first specified timer threshold prior to a successful connection being established over the first network interface, then attempting a connection over the second network interface in parallel with the attempt to connect over the first network interface, wherein the attempting the connection over the first and second network interfaces includes attempting to establish a transmission control protocol (TCP) connection using the first and second network interfaces, respectively; and
using the first one of the first and second network interfaces over which a connection is successfully established to communicate data.

### Claim 13 (depends on 12)

The machine-readable medium as in claim 12 comprising additional program code to cause the machine to perform the operations of:
adjusting the specified timer threshold to a second specified timer threshold in response to connecting over the second network interface.

### Claim 14 (depends on 13)

The machine-readable medium as in claim 13 comprising additional program code to cause the machine to perform the operations of:
re-adjusting the specified timer threshold back to the first specified timer threshold in response to connecting over the first network interface.

### Claim 15 (depends on 12)

The machine-readable medium as in claim 12 wherein the first network interface comprises a WiFi interface and the second network interface comprises a cellular interface.

### Claim 16 (depends on 12)

The machine-readable medium as in claim 12 wherein the two or more network interfaces include a third network interface, and wherein if the fallback timer has reached a second specified timer threshold prior to a successful connection being established over the first and second network interfaces, then attempting a connection over the third network interface; and
using the first one of the first, second, and third network interfaces over which a connection is successfully established to communicate data.

### Claim 17 (depends on 12)

The machine-readable medium as in claim 12 wherein the prioritization of the network interfaces is performed per-process wherein each network process is associated with a separate set of network interface prioritizations.

### Claim 18 (depends on 12)

The machine-readable medium as in claim 12 wherein the second network interface will not be used if a particular process is designed to use only the first network interface.

### Claim 19 (depends on 12)

The machine-readable medium as in claim 12 comprising additional program code to cause the machine to perform the operations of:
determining if the connection will be routed over a virtual private network (VPN); and
using the second network interface only if the connection is not to be routed over a VPN.

### Claim 20 (depends on 12)

The machine-readable medium as in claim 12 comprising additional program code to cause the machine to perform the operations of:
determining if a process for which a connection is desired has a binding to a particular network interface other than the second user interface; and
attempting to use the second network interface only if the process did not bind to the first network interface.

### Claim 21 (depends on 12)

The machine-readable medium as in claim 12 wherein a successful connection is defined as the ability to access a desired resource.

### Claim 22

A network client comprising a processor for processing program code to perform the operations of:
prioritizing two or more network interfaces, the two or more network interfaces including a first network interface and a second network interface;
initially attempting a connection over the first network interface, the first network interface having a relatively higher priority than the second network interface;
starting a fallback timer substantially concurrently with attempting the connection over the first network interface:
wherein if the fallback timer has reached a first specified timer threshold prior to a successful connection being established over the first network interface, then attempting a connection over the second network interface in parallel with the attempt to connect over the first network interface, wherein the attempting the connection over the first and second network interfaces includes attempting to establish a transmission control protocol (TCP) connection using the first and second network interfaces, respectively; and
using the first one of the first and second network interfaces over which a connection is successfully established to communicate data.

### Claim 23 (depends on 22)

The network client as in claim 22 comprising additional program code which, when executed, cause the operations of:
adjusting the specified timer threshold to a second specified timer threshold in response to connecting over the second network interface.

### Claim 24 (depends on 23)

The network client as in claim 23 comprising additional program code which, when executed, cause the operations of:
re-adjusting the specified timer threshold back to the first specified timer threshold in response to connecting over the first network interface.

### Claim 25 (depends on 22)

The network client as in claim 22 wherein the first network interface comprises a WiFi interface and the second network interface comprises a cellular interface.

### Claim 26 (depends on 22)

The network client as in claim 22 wherein the two or more network interfaces include a third network interface, and wherein if the fallback timer has reached a second specified timer threshold prior to a successful connection being established over the first and second network interfaces, then attempting a connection over the third network interface; and
using the first one of the first, second, and third network interfaces over which a connection is successfully established to communicate data.
