# US 10,321,360 B2 · Load balancing of wireless subscriber packet processing over multiple packet processing cores on a virtual machine platform

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

- Number: US 10,321,360 B2
- Document ID: US10321360B2
- Status: Granted
- Kind: B2
- Application number: 15/880,252
- Filed: 2018-01-25
- Published: 2018-07-26
- Granted: 2019-06-11
- Earliest claimed: 2017-01-25
- Assignees: Affirmed Networks, Inc.
- Applicants: Affirmed Networks, Inc.
- Inventors: Asima Mahapatra
- Web page: https://patentgrep.com/patent/US10321360B2

## CPC

- G06F 9/5033: {considering data affinity}
- H04L 45/74: Address processing for routing
- H04L 67/146: Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
- H04W 76/11: Allocation or use of connection identifiers
- G06F 2209/5016: Session
- H04L 45/50: using label swapping, e.g. multi-protocol label switch [MPLS]
- H04W 88/16: Gateway arrangements
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- 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

Systems and methods related to the confinement, or “pinning,” of packet processing for a given wireless subscriber to a single “packet handler” core, to improve throughput in a telecommunication system and reduce the probability and incidence of cache misses. Packet header data can include a subscriber's tunnel endpoint identifier (“TED”) and/or a session identifier. A load balancer core can use one or both identifiers to select a packet handler core through which the packet's bidirectional traffic will be directed. A hashing algorithm can be used to distribute multiple UEs to each of multiple packet handler cores. Other embodiments relate to differentiating between system-initiated proxy traffic and downstream UE traffic using a partitioned multiprotocol label switching (“MPLS”) label space. For example, the MPLS label space can be split into a UE Pool Address Domain and a Proxy Loopback Address Domain.

## Claims

### Claim 1

A computing system for sending packets to a packet handler core in a communications system comprising:
a processor; and
a memory coupled to the processor and including computer-readable instructions that, when executed by the processor, cause the processor to:
receive a request to create a session wherein the request corresponds to a subscriber, allocate a downstream identifier and an upstream identifier to the session,
receive a data packet including the downstream identifier or the upstream identifier, determine if the data packet requires a proxy service, and
when it is determined that the data packet does not require the proxy service:
associate the downstream identifier and the upstream identifier to a session identifier, the session identifier uniquely identifying the session,
identify the session identifier associated with the data packet based on the downstream identifier or the upstream identifier,
route the data packet to the packet handler core based on the session identifier, and
when it is determined that the data packet requires a proxy service:
identify a proxy service for the data packet,
route the data packet to the proxy service,
correlate an identifier for the packet handler core with the downstream identifier, and
route the data packet to the packet handler core based on the identifier for the packet handler core.

### Claim 2 (depends on 1)

The computing system of claim 1, wherein the upstream identifier includes a Tunnel Endpoint Identifier (“TEID”) or an encryption key.

### Claim 3 (depends on 2)

The computing system of claim 2, wherein the processor is further caused to encrypt or decrypt the data packet using the encryption key.

### Claim 4 (depends on 1)

The computing system of claim 1, wherein the downstream identifier includes one of a user equipment (“UE”) Internet Protocol (“IP”) address or a TEID.

### Claim 5 (depends on 1)

The computing system of claim 1, wherein upstream identifier and downstream identifier share a common value.

### Claim 6 (depends on 5)

The computing system of claim 5, wherein the common value comprises a first 24-bit portion of the upstream identifier and downstream identifier.

### Claim 7 (depends on 1)

The computing system of claim 1, wherein the processor is further caused to apply a hashing algorithm to the session identifier to determine the packet handler core.

### Claim 8

A method for sending packets to a packet handler core in a communications system comprising:
receiving, by a computing device, a request to create a session wherein the request corresponds to a subscriber,
allocating, by the computing device, a downstream identifier and an upstream identifier to the session,
receiving, by the computing device, a data packet including the downstream identifier or the upstream identifier,
determining if the data packet requires a proxy service, and
when it is determined that the data packet does not require the proxy service:
associating, by the computing device, the downstream identifier and the upstream identifier to a session identifier, the session identifier uniquely identifying the session,
identifying, by the computing device, the session identifier associated with the data packet based on the downstream identifier or the upstream identifier,
routing, by the computing device, the data packet to a packet handler core based on the session identifier, and
when it is determined that the data packet requires a proxy service:
identifying a proxy service for the data packet,
routing the data packet to the proxy service,
correlating an identifier for the packet handler core with the downstream identifier, and
routing the data packet to the packet handler core based on the identifier for the packet handler core.

### Claim 9 (depends on 8)

The method of claim 8, wherein the upstream identifier includes a Tunnel Endpoint Identifier (“TEID”) or an encryption key.

### Claim 10 (depends on 8)

The method of claim 8, further comprising one or more of encrypting or decrypting the data packet using the encryption key.

### Claim 11 (depends on 8)

The method of claim 8, wherein the downstream identifier includes one of a user equipment (“UE”) Internet Protocol (“IP”) address or a TEID.

### Claim 12 (depends on 8)

The method of claim 8, wherein upstream identifier and downstream identifier share a common value.

### Claim 13 (depends on 12)

The method of claim 12, wherein the common value comprises a first 24-bit portion of the upstream identifier and downstream identifier.

### Claim 14 (depends on 8)

The method of claim 8, further comprising applying a hashing algorithm to the session identifier to determine the packet handler core.

### Claim 15

A computing system for sending packets to a packet handler core in a communications system comprising:
a processor; and
a memory coupled to the processor and including computer-readable instructions that, when executed by the processor, cause the processor to:
receive a request to create a session wherein the request corresponds to a subscriber,
allocate a downstream identifier and an upstream identifier to the session,
associate the downstream identifier and the upstream identifier to a session identifier, the session identifier uniquely identifying the session,
receive a data packet including the downstream identifier or the upstream identifier,
determine that the data packet requires a proxy service,
determine whether the data packet includes the downstream identifier or the upstream identifier, whereby,
when the data packet includes the upstream identifier, identify the session identifier associated with the data packet based on the upstream identifier, and route the data packet to a packet handler core based on the session identifier, and
when the data packet includes the downstream identifier, route the data packet to the packet handler core based on the downstream identifier, and further based on a determination of whether the data packet is system-initiated traffic from the proxy service or downstream subscriber traffic using a partitioned multi-protocol label switching (“MPLS”) label space split into a UE Pool Address Domain and a Proxy Loopback Address Domain.

### Claim 16 (depends on 15)

The computing system of claim 15, wherein the downstream identifier includes a UE Loopback IP Address.

### Claim 17 (depends on 15)

The computing system of claim 15, wherein the upstream identifier includes a TEID.

### Claim 18

A method for sending packets to a packet handler core in a communications system comprising:
receiving, by a computing device, a request to create a session wherein the request corresponds to a subscriber,
allocating, by the computing device, a downstream identifier and an upstream identifier to the session,
associating, by the computing device, the downstream identifier and the upstream identifier to a session identifier, the session identifier uniquely identifying the session,
receiving, by the computing device, a data packet including the downstream identifier or the upstream identifier,
determining, by the computing device, that the data packet requires a proxy service,
determining, by the computing device, whether the data packet includes the downstream identifier or the upstream identifier, whereby,
when the data packet includes the upstream identifier, identify the session identifier associated with the data packet based on the upstream identifier, and route the data packet to a packet handler core based on the session identifier, and
when the data packet includes the downstream identifier, route the data packet to the packet handler core based on the downstream identifier, and further based on a determination of whether the data packet is system-initiated traffic from the proxy service or downstream subscriber traffic using a partitioned multi-protocol label switching (“MPLS”) label space split into a UE Pool Address Domain and a Proxy Loopback Address Domain.

### Claim 19 (depends on 18)

The method of claim 18, wherein the downstream identifier includes a UE Loopback IP Address.

### Claim 20 (depends on 18)

The method of claim 18, wherein the upstream identifier includes a TEID.
