Skip to content
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

IPV6 route:When the number of equal-cost routes exceeds three, the equal-cost routes cannot be fully synchronized to the kernel. #14714

Closed
Anita-ctrl opened this issue Nov 2, 2023 · 9 comments
Labels
triage Needs further investigation

Comments

@Anita-ctrl
Copy link

Describe the bug
When I configure IPV6 equal-cost routing, the equal-cost routing configuration fails when I configure the third path.

  • [ ×] Did you check if this is a duplicate issue?
  • [ √] Did you test it on the latest FRRouting/frr master branch?

To Reproduce

  1. Configure the interface GE0_1 ipv4 address(192.168.10.1/24), configure the interface GE0_1 ipv6 address (2010::1/64)
  2. Configure IPV4 static routing
    ip route 3.3.3.3/32 192.168.10.3
    ip route 3.3.3.3/32 192.168.10.2
    ip route 3.3.3.3/32 192.168.10.1
    IPv4 equal cost routing is successfully delivered to the kernel
  3. Configure IPV6 static routing
    ip route 3010::1/128 2010::2
    ip route 3010::1/128 2010::3
    ip route 3010::1/128 2010::4
    The first two equal-cost routes can be successfully delivered to the kernel, but the third equal-cost route cannot be delivered to the
    kernel.But found through vtysh that it can be successfully installed to FRRouting,
  4. The zebra log is shown below

6150015530_121487801847_IMG_20231102_175837_ B@33be13

Expected behavior
I hope that IPV6 equal-cost routing can be successfully delivered to the kernel.

Screenshots

Versions

  • OS Version:centos
  • Kernel:linux3.10.0
  • FRR Version:FRRouting9.0

Additional context
When I use the ip route command, I find that the route can be successfully delivered to the kernel.
ip route add 3010::1/128 nexthop via 2010::2 nexthop via 2010::3 nexthop via 2010::4
It should be noted that I have not found this problem on the ubuntu system

@Anita-ctrl Anita-ctrl added the triage Needs further investigation label Nov 2, 2023
@donaldsharp
Copy link
Member

We are going to need to see more data:

janelle.pinkbelly.org(config)# ipv6 route 1::1/128 2603:6080:602:509e::3
janelle.pinkbelly.org(config)# ipv6 route 1::1/128 2603:6080:602:509e::4
janelle.pinkbelly.org(config)# ipv6 route 1::1/128 2603:6080:602:509e::5
janelle.pinkbelly.org(config)# do show ipv6 route static
Codes: K - kernel route, C - connected, S - static, R - RIPng,
       O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,
       v - VNC, V - VNC-Direct, A - Babel, D - SHARP, F - PBR,
       f - OpenFabric, t - Table-Direct,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

S>* 1::1/128 [1/0] via 2603:6080:602:509e::3, enp1s0, weight 1, 00:00:05
  *                via 2603:6080:602:509e::4, enp1s0, weight 1, 00:00:05
  *                via 2603:6080:602:509e::5, enp1s0, weight 1, 00:00:05

As that this just works for me. Can we see show int brief? as a starting spot

@Anita-ctrl
Copy link
Author

We are going to need to see more data:

janelle.pinkbelly.org(config)# ipv6 route 1::1/128 2603:6080:602:509e::3
janelle.pinkbelly.org(config)# ipv6 route 1::1/128 2603:6080:602:509e::4
janelle.pinkbelly.org(config)# ipv6 route 1::1/128 2603:6080:602:509e::5
janelle.pinkbelly.org(config)# do show ipv6 route static
Codes: K - kernel route, C - connected, S - static, R - RIPng,
       O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,
       v - VNC, V - VNC-Direct, A - Babel, D - SHARP, F - PBR,
       f - OpenFabric, t - Table-Direct,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

S>* 1::1/128 [1/0] via 2603:6080:602:509e::3, enp1s0, weight 1, 00:00:05
  *                via 2603:6080:602:509e::4, enp1s0, weight 1, 00:00:05
  *                via 2603:6080:602:509e::5, enp1s0, weight 1, 00:00:05

As that this just works for me. Can we see show int brief? as a starting spot

@donaldsharp

1.This is my interface address

GE0_1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000 >link/ether 00:50:56:88:34:96 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.1/24 brd 192.168.10.255 scope global GE0_1 valid_lft forever preferred_lft forever
inet6 2010::1/64 scope global valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fe88:3496/64 scope link valid_lft forever preferred_lft forever
  1. I use vtysh to configure static routing
    2.1 Routing information before configuration
2010::/64 dev GE0_1 proto kernel metric 256 pref medium
fe80::/64 dev Admin proto kernel metric 101 pref medium
fe80::/64 dev sslproxy proto kernel metric 256 pref medium
fe80::/64 dev edrpeer proto kernel metric 256 pref medium
fe80::/64 dev GE0_4 proto kernel metric 256 pref medium
fe80::/64 dev GE0_3 proto kernel metric 256 pref medium
fe80::/64 dev GE0_1 proto kernel metric 256 pref medium
fe80::/64 dev GE0_2 proto kernel metric 256 pref medium

2.2 Configuration delivery process

[root@localhost bin]# ./vtysh
Hello, this is FRRouting (version 7.5.1-MyOwnFRRVersion-g9fb7d9c41).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
This is a git build of frr-7.5-68-g9fb7d9c41
Associated branch(es):
      local:V6R01C00SPC300

localhost.localdomain# configure
localhost.localdomain(config)# ip route 3010::1/128 2010::2
localhost.localdomain(config)# ip route 3010::1/128 2010::3
localhost.localdomain(config)# ip route 3010::1/128 2010::4
localhost.localdomain(config)# q
localhost.localdomain# show
babel             debugging         interface         mac               openfabric        rpki              vnc               yang
bfd               dmvpn             ip                memory            pbr               running-config    vrf               zebra
bgp               error             ipv6              modules           route-map         startup-config    vrrp
bmp               evpn              isis              mpls              route-map-unused  thread            watchfrr
daemons           fpm               logging           nexthop-group     router-id         version           work-queues
localhost.localdomain# show ipv6 route
Codes: K - kernel route, C - connected, S - static, R - RIPng,
      O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,
      v - VNC, V - VNC-Direct, A - Babel, D - SHARP, F - PBR,
      f - OpenFabric,
      > - selected route, * - FIB route, q - queued, r - rejected, b - backup
K>* ::/96 [0/1024] unreachable (ICMP unreachable), 01w4d00h
K>* ::ffff:0:0/96 [0/1024] unreachable (ICMP unreachable), 01w4d00h
K>* 2002:a00::/24 [0/1024] unreachable (ICMP unreachable), 01w4d00h
K>* 2002:7f00::/24 [0/1024] unreachable (ICMP unreachable), 01w4d00h
K>* 2002:a9fe::/32 [0/1024] unreachable (ICMP unreachable), 01w4d00h
K>* 2002:ac10::/28 [0/1024] unreachable (ICMP unreachable), 01w4d00h
K>* 2002:c0a8::/32 [0/1024] unreachable (ICMP unreachable), 01w4d00h
K>* 2002:e000::/19 [0/1024] unreachable (ICMP unreachable), 01w4d00h
C>* 2010::/64 is directly connected, GE0_1, 00:15:41
S>* 3010::1/128 [1/0] via 2010::2, GE0_1, weight 1, 00:00:34
 *                   via 2010::3, GE0_1, weight 1, 00:00:34
 *                   via 2010::4, GE0_1, weight 1, 00:00:34
K>* 3ffe:ffff::/32 [0/1024] unreachable (ICMP unreachable), 01w4d00h
C * fe80::/64 is directly connected, edr, 00:00:05
C * fe80::/64 is directly connected, sslproxypeer, 00:00:06
C * fe80::/64 is directly connected, GE0_1, 01w4d00h
C * fe80::/64 is directly connected, GE0_2, 01w4d00h
C * fe80::/64 is directly connected, GE0_3, 01w4d00h
C * fe80::/64 is directly connected, GE0_4, 01w4d00h
C * fe80::/64 is directly connected, edrpeer, 01w4d00h
C * fe80::/64 is directly connected, sslproxy, 01w4d00h
C>* fe80::/64 is directly connected, Admin, 01w4d00h

2.3 ip monitor info

[root@localhost ~]# ip monitor
3010::1 via 2010::2 dev GE0_1 proto 196 metric 20 pref medium
Deleted 3010::1 via 2010::2 dev GE0_1 proto 196 metric 20 pref medium
3010::1 via 2010::2 dev GE0_1 proto 196 metric 20 pref medium
3010::1 via 2010::3 dev GE0_1 proto 196 metric 20 pref medium
Deleted 3010::1 via 2010::2 dev GE0_1 proto 196 metric 20 pref medium
3010::1 via 2010::2 dev GE0_1 proto 196 metric 20 pref medium
Deleted 3010::1 via 2010::2 dev GE0_1 proto 196 metric 20 pref medium

2.4 Routing information after configuration

[root@localhost ~]# ip -6 r
2010::/64 dev GE0_1 proto kernel metric 256 pref medium
3010::1 via 2010::3 dev GE0_1 proto 196 metric 20 pref medium
fe80::/64 dev Admin proto kernel metric 101 pref medium
fe80::/64 dev sslproxy proto kernel metric 256 pref medium
fe80::/64 dev edrpeer proto kernel metric 256 pref medium
fe80::/64 dev GE0_4 proto kernel metric 256 pref medium
fe80::/64 dev GE0_3 proto kernel metric 256 pref medium
fe80::/64 dev GE0_1 proto kernel metric 256 pref medium
fe80::/64 dev GE0_2 proto kernel metric 256 pref medium

2.5 os

[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

[root@localhost ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

@Anita-ctrl
Copy link
Author

@donaldsharp

Note: Although my device uses version FRRouting 7.5.1, version FRRouting 9.0 also has this problem. However, if I use an ubuntu >system with arm architecture, this problem will not occur.

@Anita-ctrl
Copy link
Author

@donaldsharp

show interface brief

localhost.localdomain# show interface brief
Interface       Status  VRF             Addresses
---------       ------  ---             ---------
Admin           up      default         10.113.53.181/22
GE0_1           up      default         192.168.10.1/24
                                       + 2010::1/64
GE0_2           up      default
GE0_3           up      default
GE0_4           up      default
auth            up      default
authpeer        up      default
edr             up      default
edrpeer         up      default
lo              up      default
sslproxy        up      default
sslproxypeer    up      default

@donaldsharp
Copy link
Member

what does show zebra give us?

@Anita-ctrl
Copy link
Author

@donaldsharp
show ipv6 route
image
ip -6 r
image
show zebra
image
show zebra client
image
show zebra dplane
image
show zebra router table summary
image

@sysoleg
Copy link
Contributor

sysoleg commented Nov 24, 2023

It appears that the Linux kernel commit [1] is not in your RHEL7 3.10 kernel, but in the Ubuntu kernel, so you won't see any problems there. FRR removes both ipv4 and ipv6 routes exactly as described in the commit description. So if you're installing a third path, only the first nexthop of an existing two-path route will be deleted. Unsurprisingly, this leads to a "File exists" error when adding the final (three-path) route.

  1. torvalds/linux@0ae8133

Copy link

This issue is stale because it has been open 180 days with no activity. Comment or remove the autoclose label in order to avoid having this issue closed.

@frrbot
Copy link

frrbot bot commented May 23, 2024

This issue will be automatically closed in the specified period unless there is further activity.

@frrbot frrbot bot closed this as completed May 30, 2024
@frrbot frrbot bot closed this as completed May 30, 2024
@frrbot frrbot bot removed the autoclose label May 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
triage Needs further investigation
Projects
None yet
Development

No branches or pull requests

3 participants