IP Library Granted Patent US 10,542,101
Granted Patent B2
US 10,542,101 · App. 15/056,719 · Granted Jan 21, 2020

Network-based location determination

Inventors: Christopher Jon Kappler (Lexington, MA); Kuan-Yu Tseng (Mountain View, CA); Qizhen Ruan (Brookline, MA)
Assignee: Facebook, Inc.
H04L67/18H04L41/20H04L43/0864H04L67/10H04L67/42H04L69/16H04W64/00
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 10,542,101
App. No.
15/056,719
Granted
Jan 21, 2020
Kind
B2
Abstract

In one embodiment, a method includes receiving a request from a client device; sending data to the client device from a plurality of geographically distributed servers in response to the request from the client device; and receiving, from the client device, a feature vector representing a network distance for each of the plurality of geographically distributed servers relative to the client device. The network distance is based on at least in part on a measure of network conditions associated with the request and the response to the request. The method also includes determining, based at least in part on the received feature vector, a location of the client device.

Claims (59)

1. A method comprising:

receiving, by a plurality of geographically distributed servers, a request from a client device;

sending data to the client device from the plurality of geographically distributed servers in response to the request from the client device, the plurality of geographically distributed servers being associated with a social-networking system;

measuring, by the plurality of geographically-distributed servers, network distances between the client device and the geographically distributed servers, wherein the network distances are measured based on each geographically distributed server measuring their respective network distance from the client device in parallel with other geographically distributed servers of the plurality of geographically-distributed servers;

sending, to the client device, measured network distances by the plurality of geographically distributed servers;

receiving, by a computing device of the social-networking system from the client device, a feature vector representing the measured network distances by the plurality of geographically distributed servers and information identifying a geographically distributed server associated with each network distance, wherein the network distance is based on at least in part on a measure of network conditions associated with the request and the response to the request;

determining, by the computing device of the social-networking system based at least in part on the received feature vector, a location of the client device; and

sending, by the computing device of the social-networking system, a notification associated with the determined location to the client device.

2. The method of claim 1 , wherein the determination comprises:

comparing the received feature vector with an output of a classifier algorithm comprising a set of locations; and

identifying a particular one of the set of locations corresponding to the received feature vector.

3. The method of claim 1 , wherein the measure of network conditions comprises measuring a network delay of the request and the response to the request, or a number of routers or autonomous systems used to route the request and the response to the request.

4. The method of claim 3 , wherein measuring the network delay is based at least in part on measuring a round-trip time (RTT) of the request and the response to the request.

5. The method of claim 1 , wherein the feature vector comprises a plurality of values based at least in part on the measured network conditions and information identifying the client device.

6. The method of claim 1 , wherein:

the request comprises an Internet control message protocol (ICMP) echo request or transmission control protocol (TCP) connection request; and

the data sent in response to the request comprises an ICMP echo or TCP acknowledgment.

7. The method of claim 1 , wherein:

the determination of the location is based at least in part on a comparison of the feature vector with previous training data; and

the training data comprises an amount of time associated with the request and the response to the request each of the plurality of geographically distributed servers and a location of the client device providing the training data.

8. One or more computer-readable non-transitory storage media embodying software configured when executed to:

receive, by a plurality of geographically distributed servers, a request from a client device;

send data to the client device from the plurality of geographically distributed servers in response to the request from the client device, the plurality of geographically distributed servers being associated with a social-networking system;

measure, by the plurality of geographically distributed servers, network distances between the client device and the geographically distributed servers, wherein the network distances are measured based on each geographically distributed server measuring their respective network distance from the client device in parallel with other geographically distributed servers of the plurality of geographically-distributed servers;

send, to the client device, measured network distances by the plurality of geographically distributed servers;

receive, from the client device, a feature vector representing the measured network distances by the plurality of geographically distributed servers and information identifying a geographically distributed server associated with each network distance, wherein the network distance is based on at least in part on a measure of network conditions associated with the request and the response to the request;

determine, based at least in part on the received feature vector, a location of the client device; and

send a notification associated with the determined location to the client device.

9. The media of claim 8 , wherein the software is further operable to:

compare the received feature vector with an output of a classifier algorithm comprising a set of locations; and

identify a particular one of the set of locations corresponding to the received feature vector.

10. The media of claim 8 , wherein the software is further operable to measure a network delay of the request and the response to the request, or a number of routers or autonomous systems used to route the request and the response to the request.

11. The media of claim 10 , wherein measuring the network delay is based at least in part on measuring a round-trip time (RTT) of the request and the response to the request.

12. The media of claim 8 , wherein the feature vector comprises a plurality of values based at least in part on the measured network conditions and information identifying the client device.

13. The media of claim 8 , wherein:

the request comprises an Internet control message protocol (ICMP) echo request or transmission control protocol (TCP) connection request; and

the data sent in response to the request comprises an ICMP echo or TCP acknowledgment.

14. The media of claim 8 , wherein:

the determination of the location is based at least in part on a comparison of the feature vector with previous training data; and

the training data comprises an amount of time associated with the request and the response to the request each of the plurality of geographically distributed servers and a location of the client device providing the training data.

15. A device comprising:

one or more processors; and

one or more computer-readable non-transitory storage media coupled to the processors and embodying software configured when executed to:

receive, by a plurality of geographically distributed servers, a request from a client device;

send data to the client device from the plurality of geographically distributed servers in response to the request from the client device, the plurality of geographically distributed servers being associated with a social-networking system;

measure, by the plurality of geographically-distributed servers, network distances between the client device and the geographically distributed servers, wherein the network distances are measured based on each geographically distributed server measuring their respective network distance from the client device in parallel with other geographically distributed servers of the plurality of geographically-distributed servers;

send, to the client device, measured network distances by the plurality of geographically distributed servers;

receive, from the client device, a feature vector representing the measured network distances by the plurality of geographically distributed servers and information identifying a geographically distributed server associated with each network distance, wherein the network distance is based on at least in part on an amount of time associated with the request and the response to the request;

determine, based at least in part on the received feature vector, a location of the client device; and

send a notification associated with the determined location to the client device.

16. The device of claim 15 , wherein the software is further operable to:

compare the received feature vector with an output of a classifier algorithm comprising a set of locations; and

identify a particular one of the set of locations corresponding to the received feature vector.

17. The device of claim 15 , wherein the software is further operable to measure a network delay of the request and the response to the request, or a number of routers or autonomous systems used to route the request and the response to the request.

18. The device of claim 17 , wherein measuring the network delay is based at least in part on measuring a round-trip time (RTT) of the request and the response to the request.

19. The device of claim 15 , wherein the feature vector comprises a plurality of values based at least in part on a measure of network conditions and information identifying the client device.

20. The device of claim 15 , wherein:

the request comprises an Internet control message protocol (ICMP) echo request or transmission control protocol (TCP) connection request; and

the data sent in response to the request comprises an ICMP echo or TCP acknowledgment.

Assignments (2)
CHANGE OF NAME Recorded Dec 20, 2021
From: FACEBOOK, INC.
To: META PLATFORMS, INC.
Reel/Frame 058553/0802 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 25, 2016
From: KAPPLER, CHRISTOPHER JON; TSENG, KUAN-YU; RUAN, QIZHEN
To: FACEBOOK, INC.
Reel/Frame 038100/0341 →