IP Library › Granted Patent US 11,665,129
Granted Patent B2
US 11,665,129 · App. 17/485,789 · Granted May 30, 2023

Adaptive source address rewrite

Inventors: Yoann Desmouceaux (Paris, FR); Rucha Sanjay Vaidya (Mountain View, CA); Murali Muniraman (McKinney, TX); Pierre Pfister (Chalons-en-Champagne, FR)
Assignee: CISCO TECHNOLOGY, INC.
H04L61/251H04L61/2557H04L61/5061H04L47/125H04L2101/659
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 11,665,129
App. No.
17/485,789
Granted
May 30, 2023
Kind
B2
Abstract

According to certain embodiments, a system comprises one or more processors and one or more computer-readable non-transitory storage media comprising instructions that, when executed by the one or more processors, cause one or more components of the system to perform operations. The operations comprise receiving a packet comprising a source address; selecting an uplink for the packet, the uplink selected from a plurality of uplinks based on an uplink selection policy; determining whether the source address is valid on the selected uplink; determining whether to keep or re-write the source address based on whether the source address is valid on the selected uplink; keeping the source address when the source address is valid on the selected uplink or re-writing the source address when the source address is not valid on the selected uplink; and sending the packet to the selected uplink.

Claims (59)

1. A system, the system comprising:

one or more processors; and

one or more computer-readable non-transitory storage media comprising instructions that, when executed by the one or more processors, cause one or more components of the system to perform operations comprising:

receiving a packet comprising a source address;

selecting an uplink for the packet, the uplink selected from a plurality of uplinks based on an uplink selection policy;

determining whether the source address is valid on the selected uplink;

determining whether to keep or re-write the source address based on whether the source address is valid on the selected uplink, wherein, in response to determining to re-write the source address, selecting a new address from an address pool;

keeping the source address when the source address is valid on the selected uplink or re-writing the source address when the source address is not valid on the selected uplink; and

sending the packet to the selected uplink.

2. The system of claim 1 , wherein determining whether the source address is valid on the selected uplink is based on whether a prefix of the source address corresponds to a prefix associated with the selected uplink.

3. The system of claim 1 , wherein the uplink selection policy indicates to select a first uplink for which the source address is valid unless a condition occurs indicating to select a second uplink for which the source address is not valid.

4. The system of claim 3 , wherein the uplink selection policy comprises at least one of the following conditions for selecting the second uplink:

the first uplink is down;

the first uplink does not appear to provide network access;

the packet comprises a type of traffic configured to be sent via the second uplink;

load-balancing indicates to send the packet via the second uplink; or

the source address is in a unique local address (ULA) prefix that is not valid on the first uplink.

5. The system of claim 1 , wherein selecting a new address from an address pool is based at least in part on a hash function.

6. The system of claim 1 , wherein selecting a new address from an address pool is based at least in part on a stateless function.

7. The system of claim 1 , wherein selecting a new address from an address pool is based at least in part on a stateful function.

8. The system of claim 1 , the operations further comprising:

receiving a list of prefixes from a service provider associated with at least one of the plurality of uplinks; and

reserving a portion of the prefixes for re-writing addresses.

9. A method, the method comprising:

receiving a packet comprising a source address;

selecting an uplink for the packet, the uplink selected from a plurality of uplinks based on an uplink selection policy;

determining whether the source address is valid on the selected uplink;

determining whether to keep or re-write the source address based on whether the source address is valid on the selected uplink, wherein, in response to determining to re-write the source address, selecting a new address from an address pool;

keeping the source address when the source address is valid on the selected uplink or re-writing the source address when the source address is not valid on the selected uplink; and

sending the packet to the selected uplink.

10. The method of claim 9 , wherein determining whether the source address is valid on the selected uplink is based on whether a prefix of the source address corresponds to a prefix associated with the selected uplink.

11. The method of claim 9 , wherein the uplink selection policy indicates to select a first uplink for which the source address is valid unless a condition occurs indicating to select a second uplink for which the source address is not valid.

12. The method of claim 11 , wherein the uplink selection policy comprises at least one of the following conditions for selecting the second uplink:

the first uplink is down;

the first uplink does not appear to provide network access;

the packet comprises a type of traffic configured to be sent via the second uplink;

load-balancing indicates to send the packet via the second uplink; or

the source address is in a unique local address (ULA) prefix that is not valid on the first uplink.

13. One or more computer-readable non-transitory storage media embodying instructions that, when executed by a processor, cause the performance of operations comprising:

receiving a packet comprising a source address;

selecting an uplink for the packet, the uplink selected from a plurality of uplinks based on an uplink selection policy;

determining whether the source address is valid on the selected uplink;

determining whether to keep or re-write the source address based on whether the source address is valid on the selected uplink, wherein, in response to determining to re-write the source address, selecting a new address from an address pool;

keeping the source address when the source address is valid on the selected uplink or re-writing the source address when the source address is not valid on the selected uplink; and

sending the packet to the selected uplink.

14. The one or more computer-readable non-transitory storage media of claim 13 , wherein determining whether the source address is valid on the selected uplink is based on whether a prefix of the source address corresponds to a prefix associated with the selected uplink.

15. The one or more computer-readable non-transitory storage media of claim 13 , wherein the uplink selection policy indicates to select a first uplink for which the source address is valid unless a condition occurs indicating to select a second uplink for which the source address is not valid.

16. The one or more computer-readable non-transitory storage media of claim 15 , wherein the uplink selection policy comprises at least one of the following conditions for selecting the second uplink:

the first uplink is down;

the first uplink does not appear to provide network access;

the packet comprises a type of traffic configured to be sent via the second uplink;

load-balancing indicates to send the packet via the second uplink; or

the source address is in a unique local address (ULA) prefix that is not valid on the first uplink.

17. The one or more computer-readable non-transitory storage media of claim 13 , wherein, selecting a new address from an address pool is based at least in part on a hash function.

18. The one or more computer-readable non-transitory storage media of claim 13 , wherein selecting a new address from an address pool is based at least in part on a stateless function.

19. The one or more computer-readable non-transitory storage media of claim 13 , wherein selecting a new address from an address pool is based at least in part on a stateful function.

20. The one or more computer-readable non-transitory storage media of claim 13 , the operations further comprising:

receiving a list of prefixes from a service provider associated with at least one of the plurality of uplinks; and

reserving a portion of the prefixes for re-writing addresses.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 27, 2021
From: DESMOUCEAUX, YOANN; VAIDYA, RUCHA SANJAY; MUNIRAMAN, MURALI; PFISTER, PIERRE
To: CISCO TECHNOLOGY, INC.
Reel/Frame 057606/0477 →
Continuity (2)
Provisional Application 63159291 · Mar 10, 2021
Related Publication 20220294758A1 · Sep 15, 2022
Cited By (1)
US 12,375,926