# US 11,310,340 B2 · Multiple geography service routing

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

- Number: US 11,310,340 B2
- Document ID: US11310340B2
- Status: Granted
- Kind: B2
- Application number: 16/923,632
- Filed: 2020-07-08
- Published: 2020-10-29
- Granted: 2022-04-19
- Earliest claimed: 2018-01-19
- Assignees: Citrix Systems, Inc.
- Applicants: Citrix Systems, Inc.
- Inventors: Steven A. Keller; Thomas J. Hammond; Thomas Michael Kludy; Ayush Jain; Ricardo Fernando Feijoo
- Web page: https://patentgrep.com/patent/US11310340B2

## CPC

- H04L 67/52: specially adapted for the location of the user terminal
- H04L 45/00: Routing or path finding of packets in data switching networks (routing or path finding in wireless networks H04W40/00)
- H04L 45/306: {Route determination based on the nature of the carried application}
- H04L 67/1021: based on client or server locations
- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- H04L 67/60: Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources (admission control or resource allocation H04L47/70)
- H04L 67/63: Routing a service request depending on the request content or context
- H04W 4/02: Services making use of location information
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- H04W: WIRELESS COMMUNICATION NETWORKS (broadcast communication H04H; communication systems using wireless links for non-selective communication, e.g. wireless extensions H04M1/72)

## Abstract

Methods and systems for routing a user request for a service to a version of the service in a geographical region associated with the user are described herein. The service may be deployed in multiple geographical regions, and the service may have multiple versions in each of the geographical regions. A user device may send a request for a service to a first server in a geographical region. The first server may determine whether the user is associated with the geographical region. Responsive to determining that the user is not associated with the geographical region, the first server may ask one or more servers in other geographical regions whether the user is associated with any of the other geographical regions.

## Claims

### Claim 1

A system comprising:
a first computing device; and
a second computing device;
wherein the first computing device is located in a first geographic region and the second computing device is located in a second geographic region different from the first geographic region;
wherein the first computing device comprises:
one or more first processors; and
memory storing first instructions that, when executed by the one or more first processors, cause the first computing device to:
receive, from a user device, a request for a service, wherein the request indicates an identifier of the service;
based on determining that the identifier of the service is independent of an indication of a geographic region and that a user of the user device is not associated with the first geographic region, send, to the second computing device, a request to determine whether the user is associated with the second geographic region;
receive, from the second computing device, a response indicating that the user is associated with the second geographic region, wherein the response further indicates a version, of the service, selected from a plurality of versions of the service; and
route, based on the response and to the version of the service, the request for the service; and
wherein the second computing device comprises:
one or more second processors; and
memory storing second instructions that, when executed by the one or more second processors, cause the second computing device to:
receive the request to determine whether the user is associated with the second geographic region; and
send the response.

### Claim 2 (depends on 1)

The system of claim 1, wherein the first instructions, when executed by the one or more first processors, further cause the first computing device to:
receive, from the second computing device, a request to determine whether a second user is associated with the first geographic region;
based on determining that the second user is associated with the first geographic region, select, from the plurality of versions of the service and for the second user, a version of the service for the second user; and
send, to the second computing device, a response indicating that the second user is associated with the first geographic region and indicating the version of the service selected for the second user.

### Claim 3 (depends on 1)

The system of claim 1, wherein the first instructions, when executed by the one or more first processors, further cause the first computing device to:
receive, from a second user device, a second request for the service; and
based on determining that a user of the second user device is associated with the first geographic region, select, from the plurality of versions of the service and for the user of the second user device, a version of the service to which to route the second request.

### Claim 4 (depends on 1)

The system of claim 1, wherein the first instructions, when executed by the one or more first processors, further cause the first computing device to store the response in a cache of the first computing device.

### Claim 5 (depends on 1)

The system of claim 1, wherein the first instructions, when executed by the one or more first processors, further cause the first computing device to:
receive, from a second user device, a second request for the service; and
based on determining that routing information corresponding to the second user device is stored in a cache of the first computing device, send, based on the routing information, the second request.

### Claim 6 (depends on 1)

The system of claim 1, wherein the identifier of the service comprises a Domain Name System (DNS) name of the service.

### Claim 7 (depends on 1)

The system of claim 1, wherein the first instructions, when executed by the one or more first processors, further cause the first computing device to determine that the user of the user device is not associated with the first geographic region by determining that the user of the user device is not a resident of the first geographic region.

### Claim 8 (depends on 1)

The system of claim 1, wherein the plurality of versions of the service are implemented in one of the first geographic region or the second geographic region or in each of the first geographic region and the second geographic region.

### Claim 9 (depends on 1)

The system of claim 1, wherein the response is configured to direct the request for the service to the version of the service implemented in the second geographic region.

### Claim 10 (depends on 1)

The system of claim 1, wherein the second instructions, when executed by the one or more second processors, further cause the second computing device to:
determine, based on a plurality of users registered to the second geographic region, that the user is associated with the second geographic region; and
select, from the plurality of versions of the service, the version of the service.

### Claim 11

A method comprising:
receiving, by a computing device located in a first geographic region and from a user device, a request for a service, wherein the request indicates an identifier of the service;
based on determining that the identifier of the service is independent of an indication of a geographic region and that a user of the user device is not associated with the first geographic region, sending, to a computing device located in a second geographic region different from the first geographic region, a request to determine whether the user is associated with the second geographic region;
receiving, from the computing device located in the second geographic region, a response indicating that the user is associated with the second geographic region, wherein the response further indicates a version, of the service, selected from a plurality of versions of the service; and
routing, based on the response and to the version of the service, the request for the service.

### Claim 12 (depends on 11)

The method of claim 11, wherein the identifier of the service comprises a Domain Name System (DNS) name of the service.

### Claim 13 (depends on 11)

The method of claim 11, wherein the determining that the user of the user device is not associated with the first geographic region comprises determining that the user of the user device is not a resident of the first geographic region.

### Claim 14 (depends on 11)

The method of claim 11, wherein the plurality of versions of the service are implemented in one of the first geographic region or the second geographic region or in each of the first geographic region and the second geographic region.

### Claim 15 (depends on 11)

The method of claim 11, further comprising:
receiving, by the computing device located in the second geographic region, the request to determine whether the user is associated with the second geographic region;
determining, based on a plurality of users registered to the second geographic region, that the user is associated with the second geographic region;
selecting, from the plurality of versions of the service, the version of the service; and
sending, to the computing device located in the first geographic region, the response.

### Claim 16

A system comprising:
a first computing device; and
a second computing device;
wherein the first computing device is located in a first geographic region and the second computing device is located in a second geographic region different from the first geographic region;
wherein the second computing device comprises:
one or more second processors; and
memory storing second instructions that, when executed by the one or more second processors, cause the second computing device to:
receive, from the first computing device, a request to determine whether a user of a user device is associated with the second geographic region, wherein the request is associated with a service requested by the user device;
determine, based on a plurality of users registered to the second geographic region, that the user is associated with the second geographic region;
select, from a plurality of versions of the service, a version of the service; and
send, to the first computing device, a response indicating that the user is associated with the second geographic region, wherein the response further indicates the selected version of the service; and
wherein the first computing device comprises:
one or more first processors; and
memory storing first instructions that, when executed by the one or more first processors, cause the first computing device to send the request to determine whether the user of the user device is associated with the second geographic region.

### Claim 17 (depends on 16)

The system of claim 16, wherein the second instructions, when executed by the one or more second processors, further cause the second computing device to select the version of the service based on determining that the plurality of versions of the service are available in the second geographic region.

### Claim 18 (depends on 16)

The system of claim 16, wherein the plurality of versions of the service are implemented in one of the first geographic region or the second geographic region or in each of the first geographic region and the second geographic region.

### Claim 19 (depends on 16)

The system of claim 16, wherein the second instructions, when executed by the one or more second processors, further cause the second computing device to determine that the user is associated with the second geographic region by determining that the user is a resident of the second geographic region.

### Claim 20 (depends on 16)

The system of claim 16, wherein the first instructions, when executed by the one or more first processors, further cause the first computing device to:
receive, from the user device, a request for the service, wherein the request for the service indicates an identifier of the service;
based on determining that the identifier of the service is independent of an indication of a geographic region and that the user of the user device is not associated with the first geographic region, send, to the second computing device, the request to determine whether the user of the user device is associated with the second geographic region;
receive, from the second computing device, the response; and
route, based on the response and to the selected version of the service, the request for the service.
