Adaptive source address rewrite
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
exact text as granted — not AI-modifiedWhat is claimed is:
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.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.