Flow collision avoidance
First Claim
1. A non-transitory computer-readable medium embodying a program executable in at least one network device, comprising:
- code that sends a flow of packets from a source endpoint to a destination endpoint by way of a network, the flow of packets being associated with flow identification information including a source port, a source network address, a destination port, and a destination address;
code that determines whether to perturb, according to a random process, the flow identification information for the flow of packets to avoid flow collisions caused by flow-based hashing performed in the network;
code that determines whether an interruption in the flow of packets has occurred; and
code that effects a perturbation to the flow identification information for the flow of packets in response to determining that the flow identification information for the flow of packets is to be perturbed and in response to determining that the interruption in the flow of packets has occurred, the code that effects the perturbation being configured to change at least one of the source port or the destination port in the flow identification information.
1 Assignment
0 Petitions
Accused Products
Abstract
Disclosed are various embodiments for avoiding flow collisions in networks employing flow-based hashing to assign flows to routes. A flow of packets is sent from a source endpoint to a destination endpoint by way of a network. The flow is associated with flow identification information including, for example, a source port, a source network address, a destination port, and a destination address. It is determined whether to perturb the flow identification information for the flow to avoid flow collisions caused by flow-based hashing performed in the network. A state associated with the flow is updated to effect a perturbation to the flow identification information for the flow if the flow identification information for the flow is to be perturbed.
-
Citations
28 Claims
-
1. A non-transitory computer-readable medium embodying a program executable in at least one network device, comprising:
-
code that sends a flow of packets from a source endpoint to a destination endpoint by way of a network, the flow of packets being associated with flow identification information including a source port, a source network address, a destination port, and a destination address; code that determines whether to perturb, according to a random process, the flow identification information for the flow of packets to avoid flow collisions caused by flow-based hashing performed in the network; code that determines whether an interruption in the flow of packets has occurred; and code that effects a perturbation to the flow identification information for the flow of packets in response to determining that the flow identification information for the flow of packets is to be perturbed and in response to determining that the interruption in the flow of packets has occurred, the code that effects the perturbation being configured to change at least one of the source port or the destination port in the flow identification information.
-
-
2. A system, comprising:
a network device connected to a network, the network device being configured to; send a flow of packets from a source endpoint to a destination endpoint by way of the network, the flow of packets being associated with flow identification information; determine, based at least in part on at least one of a predefined interval, a random process, or detecting congestion in the network, whether to perturb the flow identification information for the flow of packets to avoid flow collisions caused by flow-based hashing performed in the network; and update a state associated with the flow of packets to effect a perturbation to the flow identification information for the flow of packets in response to determining that the flow identification information for the flow of packets is to be perturbed. - View Dependent Claims (3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
17. A method, comprising:
-
obtaining, in at least one device coupled to a first network, a second network, or both, a first flow of packets sent via the first network, the first flow of packets being associated with first flow identification information relative to the first network; mapping, in the at least one device, the first flow of packets into a second flow of packets, the second flow of packets being associated with second flow identification information relative to the second network; determining, in the at least one device, based at least in part on at least one of a predefined interval, a random process, or detecting congestion in the second network, whether to perturb the mapping to avoid flow collisions caused by flow-based hashing performed in the second network; effecting, in the at least one device, a perturbation to the mapping in response to determining that the mapping is to be perturbed; and sending, in the at least one device, the second flow of packets via the second network. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
-
Specification