sonic-net / sonic-buildimage

Scripts which perform an installable binary image build for SONiC
Other
730 stars 1.4k forks source link

Static routes does not work until send ping to nexthop IP address from DUT #5946

Open ppikh opened 3 years ago

ppikh commented 3 years ago

Description

When you add static route on SONiC device - this static route does not work until you send ping to nexthop IP or until do ping to route destination from SONiC device.

Test setup In reproduce scenario we will use 1 SONiC device(DUT) and 2 linux hosts(HA and HB). DUT connected to HA via link Ethernet64 DUT connected to HB via link Ethernet0 HA connected to DUT via link enp4s0f0 HB connected to DUT via link enp6s0f0

Steps to reproduce the issue:

  1. On DUT device do: sudo config interface ip add Ethernet0 30.0.0.1/24 sudo config interface ip add Ethernet64 31.0.0.1/24 sudo config route add prefix 40.0.0.0/24 nexthop 30.0.0.2
  2. On HA do: ip addr add 31.0.0.2/24 dev enp4s0f0 ip route add 40.0.0.0/24 via 31.0.0.1
  3. On HB do: ip addr add 30.0.0.2/24 dev enp6s0f0 ip route add 31.0.0.0/24 via 30.0.0.1 ip link add name dummy type dummy ip link set dummy up ip addr add dev dummy 40.0.0.1/32
  4. Do ping from HA to 40.0.0.1
  5. Do ping from DUT to 40.0.0.1
  6. Do ping from HA to 40.0.0.1

Describe the results you received: In step 4 ping failed, we can not get response from 40.0.0.1 In step 5 ping passed, in step 6 ping also passed.

Describe the results you expected: Ping passed in steps 4, 5 and 6.

Additional information you deem important (e.g. issue happens only occasionally): issue reproduce 100%

SONiC Software Version: SONiC.HEAD.25-a79c3c21 Distribution: Debian 9.13 Kernel: 4.9.0-11-2-amd64 Build commit: a79c3c21 Build date: Mon Nov 16 09:06:39 UTC 2020 Built by: XXXXXXXXX

Platform: x86_64-mlnx_msn3700-r0 HwSKU: ACS-MSN3700 ASIC: mellanox Serial Number: XXXXXXXXX Uptime: 09:07:09 up 11:48, 1 user, load average: 1.13, 1.20, 1.03

Docker images: REPOSITORY TAG IMAGE ID SIZE docker-syncd-mlnx HEAD.25-a79c3c21 0636ef41fcee 398MB docker-syncd-mlnx latest 0636ef41fcee 398MB docker-sonic-telemetry HEAD.25-a79c3c21 e2490db8a213 353MB docker-sonic-telemetry latest e2490db8a213 353MB docker-router-advertiser HEAD.25-a79c3c21 0108fdf37d69 290MB docker-router-advertiser latest 0108fdf37d69 290MB docker-platform-monitor HEAD.25-a79c3c21 66302be6d41d 664MB docker-platform-monitor latest 66302be6d41d 664MB docker-fpm-frr HEAD.25-a79c3c21 7f443adb2c18 335MB docker-fpm-frr latest 7f443adb2c18 335MB docker-teamd HEAD.25-a79c3c21 3baca95f9e20 315MB docker-teamd latest 3baca95f9e20 315MB docker-lldp-sv2 HEAD.25-a79c3c21 aa0fd8009ce0 312MB docker-lldp-sv2 latest aa0fd8009ce0 312MB docker-dhcp-relay HEAD.25-a79c3c21 4d583d73e313 299MB docker-dhcp-relay latest 4d583d73e313 299MB docker-database HEAD.25-a79c3c21 781d0050177b 289MB docker-database latest 781d0050177b 289MB docker-snmp-sv2 HEAD.25-a79c3c21 e168230b1884 348MB docker-snmp-sv2 latest e168230b1884 348MB docker-orchagent HEAD.25-a79c3c21 12b68b8483fc 333MB docker-orchagent latest 12b68b8483fc 333MB docker-sflow HEAD.25-a79c3c21 4d7b05f3b944 315MB docker-sflow latest 4d7b05f3b944 315MB docker-nat HEAD.25-a79c3c21 8330dbb84ded 316MB docker-nat latest 8330dbb84ded 316MB docker-sonic-mgmt-framework HEAD.25-a79c3c21 1e6a1005f7af 427MB docker-sonic-mgmt-framework latest 1e6a1005f7af 427MB

prsunny commented 3 years ago

This is the current design/limitation for static routes. NH must be resolved before adding routes.

liat-grozovik commented 3 years ago

Thanks @prsunny for the reply. I wonder if this flow should be fixed as it seems strange to expect NH to be resolved before adding static route.