diff mbox series

[iproute2,v2] bond: support xmit_hash_policy=vlan+srcmac

Message ID 20210115192137.1878336-1-jarod@redhat.com
State New
Headers show
Series [iproute2,v2] bond: support xmit_hash_policy=vlan+srcmac | expand

Commit Message

Jarod Wilson Jan. 15, 2021, 7:21 p.m. UTC
There's a new transmit hash policy being added to the bonding driver that
is a simple XOR of vlan ID and source MAC, xmit_hash_policy vlan+srcmac.
This trivial patch makes it configurable and queryable via iproute2.

$ sudo modprobe bonding mode=2 max_bonds=1 xmit_hash_policy=0

$ sudo ip link set bond0 type bond xmit_hash_policy vlan+srcmac

$ ip -d link show bond0
11: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether ce:85:5e:24:ce:90 brd ff:ff:ff:ff:ff:ff promiscuity 0 minmtu 68 maxmtu 65535
    bond mode balance-xor miimon 0 updelay 0 downdelay 0 peer_notify_delay 0 use_carrier 1 arp_interval 0 arp_validate none arp_all_targets any
primary_reselect always fail_over_mac none xmit_hash_policy vlan+srcmac resend_igmp 1 num_grat_arp 1 all_slaves_active 0 min_links 0 lp_interval 1
packets_per_slave 1 lacp_rate slow ad_select stable tlb_dynamic_lb 1 addrgenmode eui64 numtxqueues 16 numrxqueues 16 gso_max_size 65536 gso_max_segs
65535

$ grep Hash /proc/net/bonding/bond0
Transmit Hash Policy: vlan+srcmac (5)

$ sudo ip link add test type bond help
Usage: ... bond [ mode BONDMODE ] [ active_slave SLAVE_DEV ]
                [ clear_active_slave ] [ miimon MIIMON ]
                [ updelay UPDELAY ] [ downdelay DOWNDELAY ]
                [ peer_notify_delay DELAY ]
                [ use_carrier USE_CARRIER ]
                [ arp_interval ARP_INTERVAL ]
                [ arp_validate ARP_VALIDATE ]
                [ arp_all_targets ARP_ALL_TARGETS ]
                [ arp_ip_target [ ARP_IP_TARGET, ... ] ]
                [ primary SLAVE_DEV ]
                [ primary_reselect PRIMARY_RESELECT ]
                [ fail_over_mac FAIL_OVER_MAC ]
                [ xmit_hash_policy XMIT_HASH_POLICY ]
                [ resend_igmp RESEND_IGMP ]
                [ num_grat_arp|num_unsol_na NUM_GRAT_ARP|NUM_UNSOL_NA ]
                [ all_slaves_active ALL_SLAVES_ACTIVE ]
                [ min_links MIN_LINKS ]
                [ lp_interval LP_INTERVAL ]
                [ packets_per_slave PACKETS_PER_SLAVE ]
                [ tlb_dynamic_lb TLB_DYNAMIC_LB ]
                [ lacp_rate LACP_RATE ]
                [ ad_select AD_SELECT ]
                [ ad_user_port_key PORTKEY ]
                [ ad_actor_sys_prio SYSPRIO ]
                [ ad_actor_system LLADDR ]

BONDMODE := balance-rr|active-backup|balance-xor|broadcast|802.3ad|balance-tlb|balance-alb
ARP_VALIDATE := none|active|backup|all
ARP_ALL_TARGETS := any|all
PRIMARY_RESELECT := always|better|failure
FAIL_OVER_MAC := none|active|follow
XMIT_HASH_POLICY := layer2|layer2+3|layer3+4|encap2+3|encap3+4|vlan+srcmac
LACP_RATE := slow|fast
AD_SELECT := stable|bandwidth|count

Cc: Stephen Hemminger <stephen@networkplumber.org>
Cc: Jay Vosburgh <j.vosburgh@gmail.com>
Signed-off-by: Jarod Wilson <jarod@redhat.com>
---
 ip/iplink_bond.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

David Ahern Jan. 23, 2021, 6:35 p.m. UTC | #1
On 1/15/21 12:21 PM, Jarod Wilson wrote:
> There's a new transmit hash policy being added to the bonding driver that

> is a simple XOR of vlan ID and source MAC, xmit_hash_policy vlan+srcmac.

> This trivial patch makes it configurable and queryable via iproute2.

> 

> $ sudo modprobe bonding mode=2 max_bonds=1 xmit_hash_policy=0

> 

> $ sudo ip link set bond0 type bond xmit_hash_policy vlan+srcmac

> 

> $ ip -d link show bond0

> 11: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000

>     link/ether ce:85:5e:24:ce:90 brd ff:ff:ff:ff:ff:ff promiscuity 0 minmtu 68 maxmtu 65535

>     bond mode balance-xor miimon 0 updelay 0 downdelay 0 peer_notify_delay 0 use_carrier 1 arp_interval 0 arp_validate none arp_all_targets any

> primary_reselect always fail_over_mac none xmit_hash_policy vlan+srcmac resend_igmp 1 num_grat_arp 1 all_slaves_active 0 min_links 0 lp_interval 1

> packets_per_slave 1 lacp_rate slow ad_select stable tlb_dynamic_lb 1 addrgenmode eui64 numtxqueues 16 numrxqueues 16 gso_max_size 65536 gso_max_segs

> 65535

> 

> $ grep Hash /proc/net/bonding/bond0

> Transmit Hash Policy: vlan+srcmac (5)

> 

> $ sudo ip link add test type bond help

> Usage: ... bond [ mode BONDMODE ] [ active_slave SLAVE_DEV ]

>                 [ clear_active_slave ] [ miimon MIIMON ]

>                 [ updelay UPDELAY ] [ downdelay DOWNDELAY ]

>                 [ peer_notify_delay DELAY ]

>                 [ use_carrier USE_CARRIER ]

>                 [ arp_interval ARP_INTERVAL ]

>                 [ arp_validate ARP_VALIDATE ]

>                 [ arp_all_targets ARP_ALL_TARGETS ]

>                 [ arp_ip_target [ ARP_IP_TARGET, ... ] ]

>                 [ primary SLAVE_DEV ]

>                 [ primary_reselect PRIMARY_RESELECT ]

>                 [ fail_over_mac FAIL_OVER_MAC ]

>                 [ xmit_hash_policy XMIT_HASH_POLICY ]

>                 [ resend_igmp RESEND_IGMP ]

>                 [ num_grat_arp|num_unsol_na NUM_GRAT_ARP|NUM_UNSOL_NA ]

>                 [ all_slaves_active ALL_SLAVES_ACTIVE ]

>                 [ min_links MIN_LINKS ]

>                 [ lp_interval LP_INTERVAL ]

>                 [ packets_per_slave PACKETS_PER_SLAVE ]

>                 [ tlb_dynamic_lb TLB_DYNAMIC_LB ]

>                 [ lacp_rate LACP_RATE ]

>                 [ ad_select AD_SELECT ]

>                 [ ad_user_port_key PORTKEY ]

>                 [ ad_actor_sys_prio SYSPRIO ]

>                 [ ad_actor_system LLADDR ]

> 

> BONDMODE := balance-rr|active-backup|balance-xor|broadcast|802.3ad|balance-tlb|balance-alb

> ARP_VALIDATE := none|active|backup|all

> ARP_ALL_TARGETS := any|all

> PRIMARY_RESELECT := always|better|failure

> FAIL_OVER_MAC := none|active|follow

> XMIT_HASH_POLICY := layer2|layer2+3|layer3+4|encap2+3|encap3+4|vlan+srcmac

> LACP_RATE := slow|fast

> AD_SELECT := stable|bandwidth|count

> 

> Cc: Stephen Hemminger <stephen@networkplumber.org>

> Cc: Jay Vosburgh <j.vosburgh@gmail.com>

> Signed-off-by: Jarod Wilson <jarod@redhat.com>

> ---

>  ip/iplink_bond.c | 3 ++-

>  1 file changed, 2 insertions(+), 1 deletion(-)

> 


applied to iproute2-next.
diff mbox series

Patch

diff --git a/ip/iplink_bond.c b/ip/iplink_bond.c
index 585b6be1..b9470b98 100644
--- a/ip/iplink_bond.c
+++ b/ip/iplink_bond.c
@@ -70,6 +70,7 @@  static const char *xmit_hash_policy_tbl[] = {
 	"layer2+3",
 	"encap2+3",
 	"encap3+4",
+	"vlan+srcmac",
 	NULL,
 };
 
@@ -148,7 +149,7 @@  static void print_explain(FILE *f)
 		"ARP_ALL_TARGETS := any|all\n"
 		"PRIMARY_RESELECT := always|better|failure\n"
 		"FAIL_OVER_MAC := none|active|follow\n"
-		"XMIT_HASH_POLICY := layer2|layer2+3|layer3+4|encap2+3|encap3+4\n"
+		"XMIT_HASH_POLICY := layer2|layer2+3|layer3+4|encap2+3|encap3+4|vlan+srcmac\n"
 		"LACP_RATE := slow|fast\n"
 		"AD_SELECT := stable|bandwidth|count\n"
 	);