Scaling gateway to gateway traffic using flow hash
US-2019173850-A1 · Jun 6, 2019 · US
US10623372B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-10623372-B2 |
| Application number | US-201715833092-A |
| Country | US |
| Kind code | B2 |
| Filing date | Dec 6, 2017 |
| Priority date | Dec 6, 2017 |
| Publication date | Apr 14, 2020 |
| Grant date | Apr 14, 2020 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
Certain embodiments described herein are generally directed to load balancing IPSec tunnels at an extended Berkeley Packet Filter (eBPF) module of a destination tunnel endpoint for encapsulated ESP encrypted data packets for encapsulated encrypted data packets based on a security parameter index value of the encapsulated encrypted data packets.
Opening claim text (preview).
We claim: 1. A method for processing encapsulated encrypted data packets at an extended Berkeley Packet Filter (eBPF) module on a host machine, comprising: receiving, at the eBPF module, an encapsulated encrypted data packet, the encapsulated encrypted data packet comprising a first header and an encrypted payload, the first header comprising a source IP address of a source tunnel endpoint, a destination IP address of a destination tunnel endpoint, and a security parameter index (SPI) value corresponding to a security association between a source endpoint and a destination endpoint, the encrypted payload comprising a second header comprising a source IP address of the source endpoint and a destination IP address of the destination endpoint; selecting a CPU core ID from a plurality of CPU cored IDs based at least in part on the SPI value, wherein the CPU core ID corresponds to a virtual CPU of a plurality of virtual CPUs; and inserting the CPU core ID into the encapsulated encrypted data packet; passing the encapsulated encrypted data packet to a receive packet steering (RPS) module for assignment of the encapsulated encrypted data packet to the virtual CPU based on the CPU core ID. 2. The method of claim 1 , further comprising: parsing the packet to determine the SPI value and at least one of the source IP address of the source tunnel endpoint and the destination IP address of the destination tunnel endpoint; performing a look-up of a mapping table stored in the eBPF module using the SPI value and the at least one of the source IP address of the source tunnel endpoint and the destination IP address of the destination tunnel endpoint; and determining if a matching entry for the SPI value and the at least one of the source IP address of the source tunnel endpoint and the destination IP address of the destination tunnel endpoint is found in the mapping table, prior to the selecting. 3. The method of claim 2 , wherein the selecting further comprises selecting the CPU core ID using a CPU selection function upon determining that no matching entry is found. 4. The method of claim 3 , wherein the CPU selection function uses a load level of each of the plurality of virtual CPUs as input. 5. The method of claim 4 , wherein a load level of the virtual CPU is lowest among load levels of the plurality of virtual CPUs. 6. The method of claim 3 , wherein the CPU selection function performs the selecting using a round-robin mechanism. 7. The method of claim 1 , wherein the eBPF module is configured by a configuration engine. 8. The method of claim 7 , wherein the mapping table is replaced by the configuration engine in response to an event. 9. The method of claim 8 , wherein the event comprises a change in the SPI value corresponding to the security association between the source endpoint and the destination endpoint. 10. The method of claim 1 , further comprising: storing a mapping of the SPI value to the selected CPU core ID in the mapping table, prior to the passing. 11. A non-transitory computer readable medium comprising instructions to be executed in a computer system, wherein the instructions when executed in the computer system perform a method for processing encapsulated encrypted data packets at an extended Berkeley Packet Filter (eBPF) module on a host machine, the method comprising: receiving, at the eBPF module, an encapsulated encrypted data packet, the encapsulated encrypted data packet comprising a first header and an encrypted payload, the first header comprising a source IP address of a source tunnel endpoint, a destination IP address of a destination tunnel endpoint, and a security parameter index (SPI) value corresponding to a security association between a source endpoint and a destination endpoint, the encrypted payload comprising a second header comprising a source IP address of the source endpoint and a destination IP address of the destination endpoint; selecting a CPU core ID from a plurality of CPU cored IDs based at least in part on the SPI value, wherein the CPU core ID corresponds to a virtual CPU of a plurality of virtual CPUs; and inserting the CPU core ID into the encapsulated encrypted data packet; passing the encapsulated encrypted data packet to a receive packet steering (RPS) module for assignment of the encapsulated encrypted data packet to the virtual CPU based on the CPU core ID. 12. The non-transitory computer readable medium of claim 11 , wherein the method further comprises: parsing the packet to determine the SPI value and at least one of the source IP address of the source tunnel endpoint and the destination IP address of the destination tunnel endpoint; performing a look-up of a mapping table stored in the eBPF module using the SPI value and the at least one of the source IP address of the source tunnel endpoint and the destination IP address of the destination tunnel endpoint; and determining if a matching entry for the SPI value and the at least one of the source IP address of the source tunnel endpoint and the destination IP address of the destination tunnel endpoint is found in the mapping table, prior to the selecting. 13. The non-transitory computer readable medium of claim 12 , wherein the selecting further comprises selecting the CPU core ID using a CPU selection function upon determining that no matching entry is found. 14. The non-transitory computer readable medium of claim 13 , wherein the CPU selection function uses a load level of each of the plurality of virtual CPUs as input. 15. The non-transitory computer readable medium of claim 14 , wherein a load level of the virtual CPU is lowest among load levels of the plurality of virtual CPUs. 16. The non-transitory computer readable medium of claim 13 , wherein the CPU selection function performs the selecting using a round-robin mechanism. 17. The non-transitory computer readable medium of claim 11 , wherein the eBPF module is configured by a configuration engine. 18. The non-transitory computer readable medium of claim 17 , wherein the mapping table is replaced by the configuration engine in response to an event. 19. The non-transitory computer readable medium of claim 18 , wherein the event comprises a change in the SPI value corresponding to the security association between the source endpoint and the destination endpoint. 20. The non-transitory computer readable medium of claim 11 , wherein the method further comprises: storing a mapping of the SPI value to the selected CPU core ID in the mapping table, prior to the passing. 21. A computer system, wherein system software for the computer system is programmed to execute a method for processing encapsulated encrypted data packets at an extended Berkeley Packet Filter (eBPF) module on a host machine, the method comprising: receiving, at the eBPF module, an encapsulated encrypted data packet, the encapsulated encrypted data packet comprising a first header and an encrypted payload, the first header comprising a source IP address of a source tunnel endpoint, a destination IP address of a destination tunnel endpoint, and a security parameter index (SPI) value corresponding to a security association between a source endpoint and a destination endpoint, the encrypted payload comprising a second header comprising a source IP address of the source endpoint and a destination IP address of the destination endpoint; selecting a CPU core ID from a plurality of CPU cored IDs based at least in part on the SPI value, wherein the CPU core ID corresponds to a
Logical partitioning of resources; Management or configuration of virtualized resources (specific details on emulation or internal functioning of virtual machines G06F9/455) · CPC title
Virtual private networks · CPC title
Techniques for rebalancing the load in a distributed system · CPC title
Virtual switches · CPC title
Filtering by address, protocol, port number or service, e.g. IP-address or URL · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.