Skip to content

[action] [PR:25436] Add lldpd patch to fix incomplete interface detection#26011

Merged
mssonicbld merged 1 commit intosonic-net:202511from
mssonicbld:cherry/202511/25436
Mar 16, 2026
Merged

[action] [PR:25436] Add lldpd patch to fix incomplete interface detection#26011
mssonicbld merged 1 commit intosonic-net:202511from
mssonicbld:cherry/202511/25436

Conversation

@mssonicbld
Copy link
Collaborator

Why I did it

On 5640 full topology testbed, during system boots up, 457(456 Ethernet + eth0) interfaces are booting up, lldpd is initializing too.
when lldpd initializing, it will send RTM_GETLINK dump to get all interfaces, but during this period, some new interfaces are boots up, lldpd subscribes async notification of netlink update(levent_iface_subscribe).
Since queries and changes are using same sokcet cfg->g_netlink->nl_socket, previous RTM_GETLINK dump interfaces(netlink_recv RTM_GETLINK) is impacted by the new RTM_NEWLINK messages handling process(netlink_change_cb).
About 200+ interfaces are missing in lldp neighbor. Only 200+ interfaces exist which have RTM_NEWLINK arrived after lldpd initialization.

  • Phenomenon:
  1. Incorrect Chassis ID - Chassis ID being incorrect, should be mac but show hostname instead

         a. Fail to find eth0 and fallback to hostname.
         WARNING lldp#lldpcli[29]: cannot find port eth0
    
  2. lldpcli config failure - The port is up already, but later lldp cannot find the port, hence missing port up events and never be able to recover. The symptom will be both sides are missing lldp entries.

         a. <11>2026-02-05T04:18:42.052245+00:00 ATL21-0101-0014-12BT0 ERR lldp#lldpmgrd[38]: Command failed '['lldpcli', 'configure', 'ports', 'Ethernet501', 'lldp', 'portidsubtype', 'local', 'etp63f', 'description', 'ATL210101580129:A1.PORT8']': 2026-02-05T04:18:42 [WARN/lldpctl] cannot find port Ethernet501#012 - command was failed 6 times, disabling retry
    
Work item tracking
  • Microsoft ADO 36610002:

How I did it

now sonic is using lldpd 1.0.16.
There is a known issue in lldpd community: In some cases lldpd cannot get all interfaces · Issue #611 · lldpd/lldpd
And it's fixed, but no tag for 1.0.16 :daemon/netlink: use a different socket for changes and queries · lldpd/lldpd@88fe3fa
Add this commit as a new patch for sonic to fix this issue.

How to verify it

config reload can repro this issue easily on 5640 full topology testbed.
Try run "config reload" and verify if all lldp neighbors are up.

Which release branch to backport (provide reason below if selected)

  • 202305
  • 202311
  • 202405
  • 202411
  • 202505
  • 202511

Tested branch (Please provide the tested image version)

Description for the changelog

Link to config_db schema for YANG module changes

Signed-off-by: Sonic Build Admin [email protected]

A picture of a cute animal (not mandatory but encouraged)

<!--
     Please make sure you've read and understood our contributing guidelines:
     https://github.com/Azure/SONiC/blob/gh-pages/CONTRIBUTING.md

     ** Make sure all your commits include a signature generated with `git commit -s` **

     If this is a bug fix, make sure your description includes "fixes #xxxx", or
     "closes #xxxx" or "resolves #xxxx"

     Please provide the following information:
-->

#### Why I did it
On 5640 full topology testbed,  during system boots up, 457(456 Ethernet + eth0) interfaces are booting up, lldpd is initializing too.
when lldpd initializing, it will send RTM_GETLINK dump to get all interfaces, but during this period, some new interfaces are boots up, lldpd subscribes async notification of netlink update(`levent_iface_subscribe`).
Since queries and changes are using same `sokcet cfg->g_netlink->nl_socket,` previous `RTM_GETLINK` dump interfaces(`netlink_recv RTM_GETLINK`) is impacted by the new RTM_NEWLINK messages handling process(`netlink_change_cb`).
About 200+ interfaces are missing in lldp neighbor. Only 200+ interfaces exist which have RTM_NEWLINK arrived after lldpd initialization.

- Phenomenon:

1. Incorrect Chassis ID - Chassis ID being incorrect, should be mac but show hostname instead

            a. Fail to find eth0 and fallback to hostname.
            WARNING lldp#lldpcli[29]: cannot find port eth0

1. lldpcli config failure - The port is up already, but later lldp cannot find the port, hence missing port up events and never be able to recover. The symptom will be both sides are missing lldp entries.

            a. <11>2026-02-05T04:18:42.052245+00:00 ATL21-0101-0014-12BT0 ERR lldp#lldpmgrd[38]: Command failed '['lldpcli', 'configure', 'ports', 'Ethernet501', 'lldp', 'portidsubtype', 'local', 'etp63f', 'description', 'ATL210101580129:A1.PORT8']': 2026-02-05T04:18:42 [WARN/lldpctl] cannot find port Ethernet501#012 - command was failed 6 times, disabling retry

##### Work item tracking
- Microsoft ADO **36610002**:

#### How I did it
now sonic is using lldpd 1.0.16.
There is a known issue in lldpd community: In some cases lldpd cannot get all interfaces · Issue sonic-net#611 · lldpd/lldpd
And it's fixed, but no tag for 1.0.16 :daemon/netlink: use a different socket for changes and queries · lldpd/lldpd@88fe3fa
Add this commit as a new patch for sonic to fix this issue.

#### How to verify it

<!--
If PR needs to be backported, then the PR must be tested against the base branch and the earliest backport release branch and provide tested image version on these two branches. For example, if the PR is requested for master, 202211 and 202012, then the requester needs to provide test results on master and 202012.
-->
config reload can repro this issue easily on 5640 full topology testbed.
Try run "config reload" and verify if all lldp neighbors are up.

#### Which release branch to backport (provide reason below if selected)

<!--
- Note we only backport fixes to a release branch, *not* features!
- Please also provide a reason for the backporting below.
- e.g.
- [x] 202006
-->

- [ ] 202305
- [ ] 202311
- [ ] 202405
- [ ] 202411
- [ ] 202505
- [x] 202511

#### Tested branch (Please provide the tested image version)

<!--
- Please provide tested image version
- e.g.
- [x] 20201231.100
-->

- [ ] <!-- image version 1 -->
- [ ] <!-- image version 2 -->

#### Description for the changelog
<!--
Write a short (one line) summary that describes the changes in this
pull request for inclusion in the changelog:
-->

<!--
 Ensure to add label/tag for the feature raised. example - PR#2174 under sonic-utilities repo. where, Generic Config and Update feature has been labelled as GCU.
-->

#### Link to config_db schema for YANG module changes
<!--
Provide a link to config_db schema for the table for which YANG model
is defined
Link should point to correct section on https://github.com/Azure/sonic-buildimage/blob/master/src/sonic-yang-models/doc/Configuration.md
-->

Signed-off-by: Sonic Build Admin <[email protected]>

#### A picture of a cute animal (not mandatory but encouraged)
@mssonicbld
Copy link
Collaborator Author

Original PR: #25436

@mssonicbld
Copy link
Collaborator Author

/azp run Azure.sonic-buildimage

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@mssonicbld mssonicbld merged commit 2d19bca into sonic-net:202511 Mar 16, 2026
18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant