* [dpdk-dev] [Bug 483] Bond 8023ad lacp handshake sometimes fail
@ 2020-05-21 12:12 bugzilla
0 siblings, 0 replies; only message in thread
From: bugzilla @ 2020-05-21 12:12 UTC (permalink / raw)
To: dev
https://bugs.dpdk.org/show_bug.cgi?id=483
Bug ID: 483
Summary: Bond 8023ad lacp handshake sometimes fail
Product: DPDK
Version: 19.11
Hardware: All
OS: All
Status: UNCONFIRMED
Severity: normal
Priority: Normal
Component: ethdev
Assignee: dev@dpdk.org
Reporter: iobeyond@126.com
Target Milestone: ---
There are two ports in my bond and two hosts are connected by a switch.
I open the dpdk debug info with macro RTE_LIBRTE_BOND_DEBUG_8023AD.
Port 0 MAC: ac:f9:70:88:f3:26
Port 1 MAC: ac:f9:70:88:f3:27
BOND MAC: ac:f9:70:88:f3:26
When tx_machine send lacp with Port 1 Mac ac:f9:70:88:f3:27, the handshake will
fail.
when lacp handshake failed, log like this:
----------
997 [Port 0: rx_machine] -> INITIALIZE
997 [Port 0: periodic_machine] -> NO_PERIODIC ( begind LACP active )
997 [Port 0: mux_machine] -> DETACHED
997 [Port 0: selection_logic] -> SELECTED: ID= 1
aggregator found aggregator ID= 1
997 [Port 0: mux_machine] DETACHED -> WAITING
1995 [Port 1: tx_machine] Sending LACP frame
bond_print_lacp(122) - LACP: {
subtype= 01
ver_num=01
actor={ tlv=01, len=14
pri=FFFF, system=AC:F9:70:88:F3:27, key=2100, p_pri=FF00 p_num=0200
state={ ACT AGG DEF EXP }
}
partner={ tlv=02, len=14
pri=FFFF, system=00:00:00:00:00:00, key=0100, p_pri=FF00 p_num=0000
state={ ACT TIMEOUT AGG }
}
collector={info=03, length=10, max_delay=0000
, type_term=00, terminator_length = 00 }
1995 [Port 0: tx_machine] Sending LACP frame
bond_print_lacp(122) - LACP: {
subtype= 01
ver_num=01
actor={ tlv=01, len=14
pri=FFFF, system=AC:F9:70:88:F3:27, key=2100, p_pri=FF00 p_num=0100
state={ ACT AGG DEF EXP }
}
partner={ tlv=02, len=14
pri=FFFF, system=00:00:00:00:00:00, key=0100, p_pri=FF00 p_num=0000
state={ ACT TIMEOUT AGG }
}
collector={info=03, length=10, max_delay=0000
, type_term=00, terminator_length = 00 }
2095 [Port 1: mux_machine] ATTACHED Entered
2594 [Port 1: tx_machine] Sending LACP frame
----------
when lacp handshake succeeds, log like this:
----------
0 [Port 0: rx_machine] -> INITIALIZE
0 [Port 0: periodic_machine] -> NO_PERIODIC ( begind LACP active )
0 [Port 0: mux_machine] -> DETACHED
99 [Port 0: mux_machine] DETACHED -> WAITING
Waiting for slaves to become active...
Port 2 MAC: ac:f9:70:88:f3:26
236 [Port 1: rx_machine] -> INITIALIZE
236 [Port 1: periodic_machine] -> NO_PERIODIC ( begind LACP active )
236 [Port 1: mux_machine] -> DETACHED
236 [Port 1: selection_logic] -> SELECTED: ID= 0
aggregator found aggregator ID= 0
236 [Port 1: mux_machine] DETACHED -> WAITING
1034 [Port 0: tx_machine] Sending LACP frame
1034 [Port 0: tx_machine] Sending LACP frame
bond_print_lacp(122) - LACP: {
subtype= 01
ver_num=01
actor={ tlv=01, len=14
pri=FFFF, system=AC:F9:70:88:F3:26, key=2100, p_pri=FF00 p_num=0100
state={ ACT AGG DEF EXP }
}
partner={ tlv=02, len=14
pri=FFFF, system=00:00:00:00:00:00, key=0100, p_pri=FF00 p_num=0000
state={ ACT TIMEOUT AGG }
}
collector={info=03, length=10, max_delay=0000
, type_term=00, terminator_length = 00 }
1234 [Port 1: tx_machine] Sending LACP frame
bond_print_lacp(122) - LACP: {
subtype= 01
ver_num=01
actor={ tlv=01, len=14
pri=FFFF, system=AC:F9:70:88:F3:26, key=2100, p_pri=FF00 p_num=0200
state={ ACT AGG DEF EXP }
}
partner={ tlv=02, len=14
pri=FFFF, system=00:00:00:00:00:00, key=0100, p_pri=FF00 p_num=0000
state={ ACT TIMEOUT AGG }
}
collector={info=03, length=10, max_delay=0000
, type_term=00, terminator_length = 00 }
2032 [Port 0: tx_machine] Sending LACP frame
2332 [Port 1: rx_machine] LACP -> CURRENT
bond_print_lacp(122) - LACP: {
subtype= 01
ver_num=01
actor={ tlv=01, len=14
pri=0080, system=F8:98:EF:69:83:91, key=417F, p_pri=0080 p_num=0600
state={ ACT TIMEOUT AGG }
}
partner={ tlv=02, len=14
pri=FFFF, system=AC:F9:70:88:F3:26, key=2100, p_pri=FF00 p_num=0200
state={ ACT AGG DEF EXP }
}
collector={info=03, length=10, max_delay=0000
, type_term=00, terminator_length = 00 }
2332 [Port 1: mux_machine] ATTACHED Entered
----------
Through my observation: when log print "SELECTED: ID= 1", it uses the wrong
mac address to send lacp.
selection_logic function choose wrong aggregator_port_id here.
rte_eth_bond_8023ad.c:749
case AGG_STABLE:
if (default_slave == slaves_count)
new_agg_id = slaves[slave_id];
else
new_agg_id = slaves[default_slave]; // sometimes
new_agg_id will be 1
why does the lacp handshake succeed sometimes?
The "slaves" array is filled with unsure order by function "activate_slave".
When port 0 fill the slave[0], It works correctly.
--
You are receiving this mail because:
You are the assignee for the bug.
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-05-21 12:12 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-05-21 12:12 [dpdk-dev] [Bug 483] Bond 8023ad lacp handshake sometimes fail bugzilla
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.