|
@@ -743,21 +743,16 @@ xmit_hash_policy
|
|
|
protocol information to generate the hash.
|
|
|
|
|
|
Uses XOR of hardware MAC addresses and IP addresses to
|
|
|
- generate the hash. The IPv4 formula is
|
|
|
+ generate the hash. The formula is
|
|
|
|
|
|
- (((source IP XOR dest IP) AND 0xffff) XOR
|
|
|
- ( source MAC XOR destination MAC ))
|
|
|
- modulo slave count
|
|
|
+ hash = source MAC XOR destination MAC
|
|
|
+ hash = hash XOR source IP XOR destination IP
|
|
|
+ hash = hash XOR (hash RSHIFT 16)
|
|
|
+ hash = hash XOR (hash RSHIFT 8)
|
|
|
+ And then hash is reduced modulo slave count.
|
|
|
|
|
|
- The IPv6 formula is
|
|
|
-
|
|
|
- hash = (source ip quad 2 XOR dest IP quad 2) XOR
|
|
|
- (source ip quad 3 XOR dest IP quad 3) XOR
|
|
|
- (source ip quad 4 XOR dest IP quad 4)
|
|
|
-
|
|
|
- (((hash >> 24) XOR (hash >> 16) XOR (hash >> 8) XOR hash)
|
|
|
- XOR (source MAC XOR destination MAC))
|
|
|
- modulo slave count
|
|
|
+ If the protocol is IPv6 then the source and destination
|
|
|
+ addresses are first hashed using ipv6_addr_hash.
|
|
|
|
|
|
This algorithm will place all traffic to a particular
|
|
|
network peer on the same slave. For non-IP traffic,
|
|
@@ -779,21 +774,16 @@ xmit_hash_policy
|
|
|
slaves, although a single connection will not span
|
|
|
multiple slaves.
|
|
|
|
|
|
- The formula for unfragmented IPv4 TCP and UDP packets is
|
|
|
-
|
|
|
- ((source port XOR dest port) XOR
|
|
|
- ((source IP XOR dest IP) AND 0xffff)
|
|
|
- modulo slave count
|
|
|
+ The formula for unfragmented TCP and UDP packets is
|
|
|
|
|
|
- The formula for unfragmented IPv6 TCP and UDP packets is
|
|
|
+ hash = source port, destination port (as in the header)
|
|
|
+ hash = hash XOR source IP XOR destination IP
|
|
|
+ hash = hash XOR (hash RSHIFT 16)
|
|
|
+ hash = hash XOR (hash RSHIFT 8)
|
|
|
+ And then hash is reduced modulo slave count.
|
|
|
|
|
|
- hash = (source port XOR dest port) XOR
|
|
|
- ((source ip quad 2 XOR dest IP quad 2) XOR
|
|
|
- (source ip quad 3 XOR dest IP quad 3) XOR
|
|
|
- (source ip quad 4 XOR dest IP quad 4))
|
|
|
-
|
|
|
- ((hash >> 24) XOR (hash >> 16) XOR (hash >> 8) XOR hash)
|
|
|
- modulo slave count
|
|
|
+ If the protocol is IPv6 then the source and destination
|
|
|
+ addresses are first hashed using ipv6_addr_hash.
|
|
|
|
|
|
For fragmented TCP or UDP packets and all other IPv4 and
|
|
|
IPv6 protocol traffic, the source and destination port
|
|
@@ -801,10 +791,6 @@ xmit_hash_policy
|
|
|
formula is the same as for the layer2 transmit hash
|
|
|
policy.
|
|
|
|
|
|
- The IPv4 policy is intended to mimic the behavior of
|
|
|
- certain switches, notably Cisco switches with PFC2 as
|
|
|
- well as some Foundry and IBM products.
|
|
|
-
|
|
|
This algorithm is not fully 802.3ad compliant. A
|
|
|
single TCP or UDP conversation containing both
|
|
|
fragmented and unfragmented packets will see packets
|
|
@@ -815,6 +801,26 @@ xmit_hash_policy
|
|
|
conversations. Other implementations of 802.3ad may
|
|
|
or may not tolerate this noncompliance.
|
|
|
|
|
|
+ encap2+3
|
|
|
+
|
|
|
+ This policy uses the same formula as layer2+3 but it
|
|
|
+ relies on skb_flow_dissect to obtain the header fields
|
|
|
+ which might result in the use of inner headers if an
|
|
|
+ encapsulation protocol is used. For example this will
|
|
|
+ improve the performance for tunnel users because the
|
|
|
+ packets will be distributed according to the encapsulated
|
|
|
+ flows.
|
|
|
+
|
|
|
+ encap3+4
|
|
|
+
|
|
|
+ This policy uses the same formula as layer3+4 but it
|
|
|
+ relies on skb_flow_dissect to obtain the header fields
|
|
|
+ which might result in the use of inner headers if an
|
|
|
+ encapsulation protocol is used. For example this will
|
|
|
+ improve the performance for tunnel users because the
|
|
|
+ packets will be distributed according to the encapsulated
|
|
|
+ flows.
|
|
|
+
|
|
|
The default value is layer2. This option was added in bonding
|
|
|
version 2.6.3. In earlier versions of bonding, this parameter
|
|
|
does not exist, and the layer2 policy is the only policy. The
|