IP Library Granted Patent US 9,820,330
Granted Patent B2
US 9,820,330 · App. 15/235,241 · Granted Nov 14, 2017

Optimizing keepalive and other background traffic in a wireless network

Inventors: Abhay Nirantar (San Carlos, CA); Andrii Kokhanovskyi (San Carlos, CA); Nariman D. Batlivala (San Carlos, CA); Rami Al-Isawi (San Carlos, CA); Sungwook Yoon (San Carlos, CA); Michael Fleming (San Carlos, CA); Ari Backholm (San Carlos, CA)
Assignee: Seven Networks, LLC
H04W76/045H04L5/0053H04L67/2852H04W52/0258H04W72/048
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,820,330
App. No.
15/235,241
Granted
Nov 14, 2017
Kind
B2
Abstract

Systems and methods for optimizing keepalives or other non-interactive or background traffic from applications on a mobile device are disclosed. A keepalive optimizer can detect keepalive and other background traffic and optimize such traffic by blocking keepalives, advancing or delaying execution of keepalives, delaying repeatable background requests based on radio state, device state or characteristics, policy, transaction characteristics, application characteristics, and/or the like. The disclosed keepalive optimization methods facilitate management of traffic and/or conservation of resources on the mobile device and the network. The keepalive optimization can be performed by an application sending the keepalives or by a local proxy on the mobile device.

Claims (78)

1. A method comprising:

gathering keepalive messages between a mobile device and a remote entity for a training period, wherein the keepalive messages are defined by at least one of a plurality of keepalive predictor data;

storing the keepalive messages in a local database storage;

applying a predetermined first set of rules to separate the keepalive messages into a group of safe keepalive messages and a group of unsafe keepalive messages;

creating a second set of rules for identifying safe keepalive messages by:

creating subrules based on each of the plurality of keepalive predictor data;

applying each of the subrules to the keepalive messages to identify and remove safe keepalive messages from the keepalive messages until no more safe keepalive messages can be identified;

creating a list of the subrules that were applied;

intercepting a current keepalive message between a mobile device and a remote entity;

determining whether the current keepalive message is a safe keepalive message by applying the second set of rules to the current keepalive message; and

in response to a determination that the current keepalive message is a safe keepalive message, blocking the current keepalive message from reaching the remote entity.

2. The method of claim 1 , wherein the predetermined first set of rules are based on a first keepalive predictor data.

3. The method of claim 1 , wherein creating a second set of rules for identifying safe keepalive messages further comprises:

applying a third set of rules to each of the subrules in the list to determine the subrules' probabilities of successfully identifying safe keepalive messages; and

rearranging the list of subrules from highest to lowest probability of successfully identifying safe keepalive messages.

4. The method of claim 1 , wherein the keepalive predictor data is one of user, application, time-of-day, day-of-week, screen state pattern, screen use pattern, number of safe keepalive messages in the immediate past, unnecessary chain length, size of the keepalive message, and TCP session order.

5. The method of claim 2 , wherein the first keepalive predictor data is unnecessary chain length.

6. A mobile device comprising:

a processor;

a memory;

a communications interface;

the processor being configured to:

gather keepalive messages between the mobile device and a remote entity for a training period, wherein the keepalive messages are defined by at least one of a plurality of keepalive predictor data;

store the keepalive messages in a memory;

apply a predetermined first set of rules to separate the keepalive messages into a group of safe keepalive messages and a group of unsafe keepalive messages;

create a second set of rules for identifying safe keepalive messages by:

creating subrules based on each of the plurality of keepalive predictor data, wherein the subrules identify safe keepalive messages;

applying each of the subrules one at a time to the keepalive messages to identify and remove safe keepalive messages from the keepalive messages until no more safe keepalive messages can be identified;

creating a list of the subrules that were applied;

intercept a current keepalive message between a mobile device and a remote entity;

determine whether the current keepalive message is a safe keepalive message by applying the second set of rules to the current keepalive message; and

in response to a determination that the current keepalive message is a safe keepalive message, block the current keepalive message from reaching the remote entity.

7. The mobile device of claim 6 , wherein the predetermined first set of rules are based on a first keepalive predictor data.

8. The mobile device of claim 6 , wherein the processor is further configured to:

apply a third set of rules to each of the subrules in the list to determine the subrules' probabilities of successfully identifying safe keepalive messages; and

rearrange the list of subrules from highest to lowest probability of successfully identifying safe keep alive messages.

9. The mobile device of claim 6 , wherein the keepalive predictor data is one of user, application, time-of-day, day-of-week, screen state pattern, screen use pattern, number of safe keepalive messages in the immediate past, unnecessary chain length, size of the keepalive message, and TCP session order.

10. The mobile device of claim 7 , wherein the first keepalive predictor data is unnecessary chain length.

11. A computer program product comprising:

a computer readable storage medium containing a computer readable program code configured to:

gather keepalive messages between a mobile device and a remote entity for a training period, wherein the keepalive messages are defined by at least one of a plurality of keepalive predictor data;

store the keepalive messages in a memory;

apply a predetermined first set of rules to separate the keepalive messages into a group of safe keepalive messages and a group of unsafe keepalive messages;

create a second set of rules for identifying safe keepalive messages by:

creating subrules based on each of the plurality of keepalive predictor data, wherein the subrules identify safe keepalive messages;

applying each of the subrules one at a time to the keepalive messages to identify and remove safe keepalive messages from the keepalive messages until no more safe keepalive messages can be identified;

creating a list of the subrules that were applied;

intercept a current keepalive message between a mobile device and a remote entity;

determine whether the current keepalive message is a safe keepalive message by applying the second set of rules to the current keepalive message; and

in response to a determination that the current keepalive message is a safe keepalive message, block the current keepalive message from reaching the remote entity.

12. The computer program product of claim 11 , wherein the predetermined first set of rules are based on a first keepalive predictor data.

13. The computer program product of claim 11 , wherein the computer readable program code is further configured to:

apply a third set of rules to each of the subrules in the list to determine the subrules' probabilities of successfully identifying safe keepalive messages; and

rearrange the list of subrules from highest to lowest probability of successfully identifying safe keepalive messages.

14. The computer program product of claim 11 , wherein the keepalive predictor data is one of user, application, time-of-day, day-of-week, screen state pattern, screen use pattern, number of safe keepalive messages in the immediate past, unnecessary chain length, size of the keepalive message, and TCP session order.

15. A system comprising:

a network;

a host server comprising:

a server cache;

a proxy server configured to:

receive requests from a mobile device over the network;

return content and data to the mobile device in response to the requests over the network;

the mobile device further comprising:

a local data cache;

a local proxy server configured to:

gather keepalive messages between the mobile device and the host server for a training period, wherein the keepalive messages are defined by at least one of a plurality of keepalive predictor data;

store the keepalive messages in a local data cache;

apply a predetermined first set of rules to separate the keepalive messages into a group of safe keepalive messages and a group of unsafe keepalive messages, wherein the predetermined first set of rules are based on a first keepalive predictor data;

create a second set of rules for identifying safe keepalives by:

creating subrules based on each of the plurality of keepalive predictor data, wherein the subrules identify safe keepalive messages;

applying each of the subrules one at a time to the keepalive messages to identify and remove safe keepalive messages from the keepalive messages until no more safe keepalive messages can be identified;

creating a list of the subrules that were applied;

applying a third set of rules to each of the subrules m the list to determine the subrules' probabilities of successfully identifying safe keepalive messages;

rearranging the list of subrules from highest to lowest probability of successfully identifying safe keepalive messages;

intercept a current keepalive message between a mobile device and the host server;

determine whether the current keepalive message is a safe keepalive message by applying the second set of rules to the current keepalive message;

in response to a determination that the current keepalive message is a safe keepalive message, block the current keepalive message from being sent to the host server; and

a network communications interface for sending requests and keepalive messages to the host server.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 18, 2016
From: KOKHANOVSKYI, ANDRII
To: SEVEN NETWORKS, INC.
Reel/Frame 040368/0337 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 11, 2016
From: NIRANTAR, ABHAY; FLEMING, MICHAEL; BATLIVALA, NARIMAN D.; ALISAWI, RAMI; BACKHOLM, ARI; YOON, SUNGWOOK
To: SEVEN NETWORKS, INC.
Reel/Frame 040291/0959 →
ENTITY CONVERSION Recorded Nov 11, 2016
From: SEVEN NETWORKS, INC.
To: SEVEN NETWORKS, LLC
Reel/Frame 040601/0859 →
Continuity (6)
Continuation 14494526 · Sep 23, 2014
Continuation PCTUS2014036669 · May 2, 2014
Provisional Application 61836039 · Jun 17, 2013
Provisional Application 61836095 · Jun 17, 2013
Provisional Application 61833838 · Jun 11, 2013
Related Publication 20170094710A1 · Mar 30, 2017