Message ID | 20210113234117.3805255-1-jarod@redhat.com (mailing list archive) |
---|---|
State | Rejected |
Delegated to: | David Ahern |
Headers | show |
Series | [iproute2] bond: support xmit_hash_policy=vlan+mac | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Not a local patch |
On Wed, Jan 13, 2021 at 06:41:17PM -0500, 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+mac. 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+mac > > $ 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+mac 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+mac (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+mac > 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> Self-nack on this version, renaming the mode to vlan+srcmac as discussed.
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+mac", 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+mac\n" "LACP_RATE := slow|fast\n" "AD_SELECT := stable|bandwidth|count\n" );
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+mac. 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+mac $ 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+mac 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+mac (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+mac 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(-)