Page MenuHomePhabricator

Nokia SR-Linux ARP resolution bug on v24.10.x+
Closed, ResolvedPublic

Description

We have observed a bug with Nokia SR-Linux that affects ARP resolution from directly connected hosts. The specific problem is that the switch does not transmit an ARP reply to requests from the host. If the switch needs to ARP for the host it will do so, the host will reply, and both sides will have a working arp-cache for a time. But if the ARP is initiated from the host towards an irb0 sub-interface on the switch the request goes unanswered.

We have an open case with Nokia on this matter and have been trying to work through it with their engineers.

Problem Detail

We have a network-instance configured for the private1-d3-eqiad vlan:

A:lsw1-d3-eqiad# info flat network-instance vlan-1079
set / network-instance vlan-1079 type mac-vrf
set / network-instance vlan-1079 admin-state enable
set / network-instance vlan-1079 description private1-d3-eqiad
set / network-instance vlan-1079 interface ethernet-1/48.1079
set / network-instance vlan-1079 interface irb0.1079

We have a local irb0 sub-interface configured to act as the gateway for hosts in this vlan:

set / interface irb0 subinterface 1079 admin-state enable
set / interface irb0 subinterface 1079 ipv4 admin-state enable
set / interface irb0 subinterface 1079 ipv4 address 10.64.181.1/24
set / interface irb0 subinterface 1079 ipv4 arp timeout 600
set / interface irb0 subinterface 1079 ipv4 arp learn-unsolicited true
set / interface irb0 subinterface 1079 ipv4 arp host-route populate dynamic
set / interface irb0 subinterface 1079 ipv4 arp evpn advertise dynamic
set / network-instance vlan-1079 interface irb0.1079
set / network-instance PRODUCTION interface irb0.1079

And a sub-interface on a port connected to a server configured which is also part of vlan-1079:

set / interface ethernet-1/48 subinterface 1079 type bridged
set / interface ethernet-1/48 subinterface 1079 admin-state enable
set / interface ethernet-1/48 subinterface 1079 vlan encap single-tagged vlan-id 1079

The switch does learn this MAC address from the host:

A:lsw1-d3-eqiad# show network-instance vlan-1079 bridge-table mac-table all
-------------------------------------------------------------------------------------------------------------------
Mac-table of network instance vlan-1079
-------------------------------------------------------------------------------------------------------------------
+--------------------+---------------------+------------+----------------+---------+--------+---------------------+
|      Address       |  Destination        | Dest Index |      Type      | Active  | Aging  | Last Update         |
+====================+=====================+============+================+=========+========+=====================+
| A8:E5:EC:78:4F:3C  | irb-interface       | 0          | irb-interface  | true    | N/A    | 2025-11-04T12:04:38 |
| B0:26:28:47:5F:A1  | ethernet-1/48.1079  | 3          | learnt         | true    | 1193   | 2025-11-04T12:05:30 |
+--------------------+---------------------+------------+----------------+---------+--------+---------------------+

On the host we have an IP configured statically:

root@sretest1006:~# ip -4 -br addr show dev ens2f1np1.1079
ens2f1np1.1079@if4 UP             10.64.181.187/24

The switch is able to ARP and get an answer from the host, populating its own table:

A:lsw1-d3-eqiad# show arpnd arp-entries interface irb0 subinterface 1079
+-----------+-------------------+-----------------+---------+--------------------+--------------------+
| Interface |   Subinterface    |    Neighbor     | Origin  | Link layer address | Expiry             |
+===========+===================+=================+=========+====================+====================+
| irb0      |              1079 |   10.64.181.187 | dynamic | B0:26:28:47:5F:A1  | 4 minutes from now |
+-----------+-------------------+-----------------+---------+--------------------+--------------------+

Our test server has no ARP entry for the irb0.1079 IP though:

root@sretest1006:~# ip neigh show
fe80::aae5:ecff:fe78:4f3c dev ens2f1np1.1079 lladdr a8:e5:ec:78:4f:3c router STALE

When we try to ping the gateway/ARP we see the outgoing ARP requests in a tcpdump, but receive no replies:

cmooney@sretest1006:~$ sudo tcpdump -c 4 -e -i ens2f1np1 -l -p -nn vlan 1079
listening on ens2f1np1, link-type EN10MB (Ethernet), snapshot length 262144 bytes
11:30:36.254952 b0:26:28:47:5f:a1 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 62: vlan 1079, p 0, ethertype ARP (0x0806), Request who-has 10.64.181.1 tell 255.255.255.255, length 44
11:30:37.256129 b0:26:28:47:5f:a1 > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 62: vlan 1079, p 0, ethertype ARP (0x0806), Request who-has 10.64.181.1 tell 255.255.255.255, length 44

We've replicated this on different hardware devices on servers, so it does not seem to be a faulty unit (see P74895).

Affected versions

Through trial-end-error we have been able to confirm the problem does not occur with SR-Linux v24.7.2, but it does occur with version v24.10.1, so the bug was presumably introduced in that release. I have checked through the release notes for v24.10.1 and while there are many changes nothing jumps out as a major adjustment to ARP or neighbor discovery.

Options

The obvious thing to do would be to run version v24.7.2 for now while Nokia work through the bug. However there are some obstacles to doing this:

  1. OpenConfig support is not present in v24.7.2
    • Without this our gnmi openconfig stats collection is broken, which we depend on for graphs and BGP alerting
  2. The upcoming release v25.10.1 is also likely to have this bug, but it contains several new features we need:
    • Option to insert the physical server port ID in DHCP option 82 info, instead of "irb0.<vlan-id>"
    • Support for DHCP-relay sub-option 5 (RFC3527) allowing us to source the DHCP relay packets from an IP outside the subnet the request is made on (fixing T358488)

Codfw tests

It remains to be seen if this issue will also present itself in codfw, where we have Nokia leaf switches too. The difference there is the switches are not running EVPN as well, however this problem seems local between host and switch, so there is no reason to assume it's related to enabling EVPN. When we can get a test host reimaged successfully in codfw we will test this as high priority.

The good news is that the switches in codfw are for new servers, where we should be able to select UEFI mode and not rely on DHCP option 82. We also have no "stetched" layer-2 public vlan in those rows, so we do not need the RFC3527 support. What we would still be missing is the OpenConfig support, but perhaps we could use Nokia-native paths instead to collect data and alert.

Event Timeline

cmooney triaged this task as Medium priority.

Nokia have come back to say they were able to reproduce the issue, and confirm the cause as well as the fact it is not a problem in the latest SR-Linux release:

Thanks for your patience while our team has been working to resolve this issue. Our R&D team has provided us with additional details and further findings regarding the issue.

The issue has been identified as a software bug starting in version 24.10. The D2/D2L platforms enforce port-group rules. For each group of four ports, all ports must use all 25G or all 1G/10G speeds. In SR Linux 24.10, when a port is placed in the admin-state disabled state the automatic speed detection may not correctly determine the port’s speed. This causes incompatible speed values across the port group which triggers the problem state you observed in your setup.

The issue has been resolved in release 25.7.1 and beyond. We understand that a major upgrade may not be feasible, so R&D is actively working on incorporating the fix the next release 24.10.7 as well.

R&D has also shared a workaround for your current version – manually set the port-speed for the ports which are admin-disabled in your port group.

For example, on device lsw1-d3, you have eth-1/44 and eth-1/46 with 1G copper RJ45 connected but admin-disabled, and eth-1/47, eth-1/48 with 10G DAC. As a work-around, you could manually configure the port speed for all ports in the phys-group as below:

set /interface ethernet-1/44 ethernet port-speed 1G
set /interface ethernet-1/46 ethernet port-speed 1G
set /interface ethernet-1/47 ethernet port-speed 10G
set /interface ethernet-1/48 ethernet port-speed 10G

Please let me know if you have any further questions about the findings from this case.

I tested and the proposed work-around does solve the issue:

https://drive.google.com/file/d/1UVW_jWOdWhoiCdUrksqR8RvGqSBJtOaP

So I think we can likely move forward on this basis for now.

Change #1216595 had a related patch set uploaded (by Ayounsi; author: Ayounsi):

[operations/homer/public@master] [WIP] Nokia: ensure disabled ports speed is set correctly

https://gerrit.wikimedia.org/r/1216595

Change #1216595 merged by jenkins-bot:

[operations/homer/public@master] Nokia: ensure disabled ports speed is set correctly

https://gerrit.wikimedia.org/r/1216595

Change #1216822 had a related patch set uploaded (by Cathal Mooney; author: Cathal Mooney):

[operations/homer/public@master] Nokia disabled port speeds setting - only set on D2L model

https://gerrit.wikimedia.org/r/1216822

Change #1216822 merged by jenkins-bot:

[operations/homer/public@master] Nokia disabled port speeds setting - only set on D2L model

https://gerrit.wikimedia.org/r/1216822

Icinga downtime and Alertmanager silence (ID=2a98251c-6798-469c-a3de-57fcfb13969f) set by cmooney@cumin1003 for 2:00:00 on 17 host(s) and their services with reason: upgradiing sr-linux on Nokia switches codfw

lsw1-e[2,4-5]-codfw,lsw1-e[2,4-5]-codfw IPv6,lsw1-e[2,4-5]-codfw.mgmt,lsw1-f[2,4]-codfw,lsw1-f[2,4]-codfw IPv6,lsw1-f[2,4]-codfw.mgmt,ssw1-e1-codfw,ssw1-f1-codfw

Icinga downtime and Alertmanager silence (ID=1aee9e7e-d36b-4c56-8cac-746f48098c6f) set by cmooney@cumin1003 for 2:00:00 on 2 host(s) and their services with reason: upgradiing sr-linux on Nokia switches codfw

ssw1-e1-codfw.mgmt,ssw1-f1-codfw.mgmt

Closing this. The work-around is working well and we will upgrade the OS version in eqiad over the coming months.