* [PATCH V3 2/2] bonding support for IPv6 transmit hashing
@ 2012-06-30 6:17 John
2012-06-30 11:59 ` Hannes Frederic Sowa
0 siblings, 1 reply; 4+ messages in thread
From: John @ 2012-06-30 6:17 UTC (permalink / raw)
To: netdev
diff --git a/Documentation/networking/bonding.txt b/Documentation/networking/bonding.txt
index bfea8a3..5db14fe 100644
--- a/Documentation/networking/bonding.txt
+++ b/Documentation/networking/bonding.txt
@@ -752,12 +752,22 @@ xmit_hash_policy
protocol information to generate the hash.
Uses XOR of hardware MAC addresses and IP addresses to
- generate the hash. The formula is
+ generate the hash. The IPv4 formula is
(((source IP XOR dest IP) AND 0xffff) XOR
( source MAC XOR destination MAC ))
modulo slave count
+ The IPv6 forumla is
+
+ iphash =
+ (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)
+
+ ((iphash >> 16) XOR (iphash >> 8) XOR iphash)
+ modulo slave count
+
This algorithm will place all traffic to a particular
network peer on the same slave. For non-IP traffic,
the formula is the same as for the layer2 transmit
@@ -778,19 +788,30 @@ xmit_hash_policy
slaves, although a single connection will not span
multiple slaves.
- The formula for unfragmented TCP and UDP packets is
+ 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
- For fragmented TCP or UDP packets and all other IP
- protocol traffic, the source and destination port
+ The formula for unfragmented IPv6 TCP and UDP packets is
+
+ iphash =
+ (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)
+
+ ((source port XOR dest port) XOR
+ (iphash >> 16) XOR (iphash >> 8) XOR iphash)
+ modulo slave count
+
+ For fragmented TCP or UDP packets and all other IPv4 and
+ IPv6 protocol traffic, the source and destination port
information is omitted. For non-IP traffic, the
formula is the same as for the layer2 transmit hash
policy.
- This policy is intended to mimic the behavior of
+ 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.
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH V3 2/2] bonding support for IPv6 transmit hashing
2012-06-30 6:17 [PATCH V3 2/2] bonding support for IPv6 transmit hashing John
@ 2012-06-30 11:59 ` Hannes Frederic Sowa
2012-06-30 19:38 ` John
0 siblings, 1 reply; 4+ messages in thread
From: Hannes Frederic Sowa @ 2012-06-30 11:59 UTC (permalink / raw)
To: John; +Cc: netdev
On Sat, Jun 30, 2012 at 8:17 AM, John <linux@8192.net> wrote:
> diff --git a/Documentation/networking/bonding.txt
> b/Documentation/networking/bonding.txt
> index bfea8a3..5db14fe 100644
> --- a/Documentation/networking/bonding.txt
> +++ b/Documentation/networking/bonding.txt
> @@ -752,12 +752,22 @@ xmit_hash_policy
> protocol information to generate the hash.
>
> Uses XOR of hardware MAC addresses and IP addresses to
> - generate the hash. The formula is
> + generate the hash. The IPv4 formula is
>
> (((source IP XOR dest IP) AND 0xffff) XOR
> ( source MAC XOR destination MAC ))
> modulo slave count
>
> + The IPv6 forumla is
> +
> + iphash =
> + (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)
> +
> + ((iphash >> 16) XOR (iphash >> 8) XOR iphash)
> + modulo slave count
> +
Wouldn't it be beneficial to include the ipv6 flow label in the hash
calculation?
Greetings,
Hannes
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH V3 2/2] bonding support for IPv6 transmit hashing
2012-06-30 11:59 ` Hannes Frederic Sowa
@ 2012-06-30 19:38 ` John
2012-07-01 3:57 ` Hannes Frederic Sowa
0 siblings, 1 reply; 4+ messages in thread
From: John @ 2012-06-30 19:38 UTC (permalink / raw)
To: Hannes Frederic Sowa; +Cc: netdev
On 6/30/2012 4:59 AM, Hannes Frederic Sowa wrote:
> On Sat, Jun 30, 2012 at 8:17 AM, John <linux@8192.net> wrote:
>> diff --git a/Documentation/networking/bonding.txt
>> b/Documentation/networking/bonding.txt
>> index bfea8a3..5db14fe 100644
>> --- a/Documentation/networking/bonding.txt
>> +++ b/Documentation/networking/bonding.txt
>> @@ -752,12 +752,22 @@ xmit_hash_policy
>> protocol information to generate the hash.
>>
>> Uses XOR of hardware MAC addresses and IP addresses to
>> - generate the hash. The formula is
>> + generate the hash. The IPv4 formula is
>>
>> (((source IP XOR dest IP) AND 0xffff) XOR
>> ( source MAC XOR destination MAC ))
>> modulo slave count
>>
>> + The IPv6 forumla is
>> +
>> + iphash =
>> + (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)
>> +
>> + ((iphash >> 16) XOR (iphash >> 8) XOR iphash)
>> + modulo slave count
>> +
>
> Wouldn't it be beneficial to include the ipv6 flow label in the hash
> calculation?
>
> Greetings,
>
> Hannes
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
Hannes,
In all of the traffic I inspected I don't believe I saw a single flow
label set. Even if it were set 100% of the time by Linux, any packets
routed or bridged from another operating system wouldn't see any
benefit. The current algorithm distributes the traffic very well, I
don't believe adding the flow label would be beneficial even if it were
set more frequently.
If you feel strongly about its inclusion, though, I am willing to
reconsider.
John
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH V3 2/2] bonding support for IPv6 transmit hashing
2012-06-30 19:38 ` John
@ 2012-07-01 3:57 ` Hannes Frederic Sowa
0 siblings, 0 replies; 4+ messages in thread
From: Hannes Frederic Sowa @ 2012-07-01 3:57 UTC (permalink / raw)
To: John; +Cc: netdev
On Sat, Jun 30, 2012 at 9:38 PM, John <linux@8192.net> wrote:
> On 6/30/2012 4:59 AM, Hannes Frederic Sowa wrote:
>> On Sat, Jun 30, 2012 at 8:17 AM, John <linux@8192.net> wrote:
>>>
>>> diff --git a/Documentation/networking/bonding.txt
>>> b/Documentation/networking/bonding.txt
>>> index bfea8a3..5db14fe 100644
>>> --- a/Documentation/networking/bonding.txt
>>> +++ b/Documentation/networking/bonding.txt
>>> @@ -752,12 +752,22 @@ xmit_hash_policy
>>> protocol information to generate the hash.
>>>
>>> Uses XOR of hardware MAC addresses and IP addresses to
>>> - generate the hash. The formula is
>>> + generate the hash. The IPv4 formula is
>>>
>>> (((source IP XOR dest IP) AND 0xffff) XOR
>>> ( source MAC XOR destination MAC ))
>>> modulo slave count
>>>
>>> + The IPv6 forumla is
>>> +
>>> + iphash =
>>> + (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)
>>> +
>>> + ((iphash >> 16) XOR (iphash >> 8) XOR iphash)
>>> + modulo slave count
>>> +
>>
>>
>> Wouldn't it be beneficial to include the ipv6 flow label in the hash
>> calculation?
>
> Hannes,
>
> In all of the traffic I inspected I don't believe I saw a single flow label
> set. Even if it were set 100% of the time by Linux, any packets routed or
> bridged from another operating system wouldn't see any benefit. The current
> algorithm distributes the traffic very well, I don't believe adding the flow
> label would be beneficial even if it were set more frequently.
>
> If you feel strongly about its inclusion, though, I am willing to
> reconsider.
It would definitely help to load balance tunnelled traffic over a
bonded interface. But as I currently don't use such a setup, I don't
have a strong opinion on that.
Greetings,
Hannes
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2012-07-01 3:57 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-06-30 6:17 [PATCH V3 2/2] bonding support for IPv6 transmit hashing John
2012-06-30 11:59 ` Hannes Frederic Sowa
2012-06-30 19:38 ` John
2012-07-01 3:57 ` Hannes Frederic Sowa
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).