From: bugzilla@dpdk.org
To: dev@dpdk.org
Subject: [dpdk-dev] [Bug 483] Bond 8023ad lacp handshake sometimes fail
Date: Thu, 21 May 2020 12:12:01 +0000 [thread overview]
Message-ID: <bug-483-3@http.bugs.dpdk.org/> (raw)
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.
reply other threads:[~2020-05-21 12:12 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bug-483-3@http.bugs.dpdk.org/ \
--to=bugzilla@dpdk.org \
--cc=dev@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.