-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
DUT sent lldp frame with incorrect port ID to EOS neighbor #11255
Comments
Fix is already available per Prince S. This issue can be closed after adding the fix PR. |
is this a regression? which pr caused the regression? are we missing any test to catch this one? |
Fixed PR - sonic-net/sonic-swss#2233 |
Seems to be introduced by - #9386 |
As it's fixed in sonic-net/sonic-swss#2233, close this issue. |
@lguohan it's a regression, but it's already fixed in sonic-net/sonic-swss#2233, actually, |
…s is in sync with state_db (#5952) What is the motivation for this PR? PR test didn't catch the issue sonic-net/sonic-buildimage#11255. test_lldp.py run to success because netdev_oper_status of interfaces is up in state_db. But in physical testbed, netdev_oper_status of some interfaces is down and it impacts the lldp behavior. So test_lldp.py caught it. Root cause is the netdev_oper_status in state_db is not synced with the real status of interface. If the image has this issue, no matter you shutdown or no shutdown interface, the netdev_oper_status can't be updated. How did you do it? Add two cases in test_lag_2.py to check if the status of lag interfaces is in sync with state_db. test_lag_db_status is to check if status of lag's member interfaces is synced with port's netdev_oper_status in state_db. It can run on any topology. 1). Check if status of interface is in sync with state_db after bootup. 2). Check if status of interface is in sync with state_db after shutdown/no shutdown. test_lag_db_status_with_po_update is to check if status of lag's member interfaces is synced with port's netdev_oper_status in state_db with add/delete operation for lag member. It only supports t1-lag topology. Remove port member from portchannel Shutdown this port to check if status is down Add this port back into portchannel and check if status is synced Retrieve lag_facts after shutdown interface and check if status is synced No shutdown this port to check if status is up Retrieve lag_facts after no shutdown interface to check if status is synced Since there are so many interfaces in t1-lag, we can define --completeness_level confident to pick up some interface to run it. How did you verify/test it? run test_lag_2.py::test_lag_db_status and test_lag_2.py::test_lag_db_status_with_po_update Signed-off-by: Zhaohui Sun <[email protected]>
Description
The Neighbor Port ID is not correct in the output of 'show lldp neighbors' on EOS neighbor.
It should be the DUT's interface alias name, not mac address.
Steps to reproduce the issue:
show lldp neighbors
on EOS neighbor, neighbor port ID is mac address, not interface alias.netdev_oper_status
is down.Describe the results you received:
Neighbor EOS
show lldp neighbor
display Neighbor Port ID which is mac address, not interface name:tcpdump to capture lldp frame from dut shows the Port ID carries Subtype MAC address not Subtype Local
is not correct:
The correct lldp frame should look like this, the value of Port ID should Subtype Local which is interface alias name of DUT.
lldpmgrd logs show, Ethernet0 is not up, so the correct lldpcli is not sent to lldp:
Jun 25 03:10:35.851413 str2-msn2700-spy-2 INFO lldp#lldpmgrd[39]: port Ethernet0 is not up, continue
Otherwise it should send command like this:
Jun 25 03:10:35.817256 str2-msn2700-spy-2 INFO lldp#lldpmgrd[39]: Running command: 'lldpcli configure ports Ethernet8 lldp portidsubtype local etp3 description 'ARISTA03T2:Ethernet1''
That's because its
netdev_oper_status
is down inPORT_TABLE
.But interface status shows it's up.
Not sure why
netdev_oper_status
of many interfaces is down, which should be up.From beginning, it has set Ethernet 0 down and it set netdev_oper_status down in state_db.
Then after seconds, it tried to set oper to up, but it didn’t set netdev_oper_status up in state_db eventually.
It doesn’t have this kind of log( swss#portsyncd: :- onMsg: Publish Ethernet0(ok:up) to state db) to show it’s up, no other error log either.
Describe the results you expected:
Neighbor EOS
show lldp neighbor
displays correct neighbor Port ID which should be DUT's interface alias name:Output of
show version
:Output of
show techsupport
:Additional information you deem important (e.g. issue happens only occasionally):
The text was updated successfully, but these errors were encountered: