FRRouting / frr

The FRRouting Protocol Suite

Home Page:https://frrouting.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Non-persistent RIP issue upon Docker FRR restart.

Senkyw opened this issue · comments

Description

Hello,

During my tests, I noticed an issue with the RIP functionality. It occurs when the Docker is restarted. The RIP doesn't recover properly, resulting in the absence of the RIP neighbor to exchange with a second Docker FRR. There's a switch between the two to establish connections via RIP.

Version

FRRouting 8.3.1 (NDC-RPA1) on Linux(4.19.0-18-amd64).

How to reproduce

My architecture consists of 2 Docker FRR instances, A and B, connected via a central switch.

steps:

  1. Initialization of Docker instances FRR A and FRR B (see configuration below).
  2. Adding connections. ( networks)
  3. Verification of proper functioning (RIP mounted, end-to-end ping functional).
  4. Restart of Docker instance FRR "A".
  5. After connecting to the Docker post-restart, the FRR service is stopped. Manually restarting it via /etc./init.d/frr start.
  6. All configurations are correct: show run okay, interfaces okay, service okay. However, end-to-end ping no longer works.
  7. Upon examining the RIP events on FRR "A", it's noticed that it stops sending anything to the other FRR "B", but it still receives and updates its routing table. ( loosing gateway on FRR "B")

FRR configuration :
vrf vrf_ndc
ip nht resolve-via-default
exit-vrf
!
router rip vrf vrf_ndc
redistribute connected route-map rm_TO_RIP
redistribute static route-map rm_TO_RIP
version 2

!
ip prefix-list deny-all seq 5 deny any
ip prefix-list allow-all seq 5 permit 0.0.0.0/0 le 32
ip prefix-list DEFAULT_ROUTE seq 5 permit 0.0.0.0/0
ip prefix-list TO_RIP description ***xxxxxxxxxx ***
ip prefix-list TO_RIP seq 5 deny 0.0.0.0/0 le 32
!
route-map rm_TO_RIP permit 15
match ip address prefix-list TO_RIP

Expected behavior

The RIP functionality is no longer operational.

Actual behavior

Same

Additional context

No response

Checklist

  • I have searched the open issues for this bug.
  • I have not included sensitive information in this report.

Could you try newer versions (9.1, 10.0)?

Yes I also tried version 10 and I still have the same issue

I don't understand if this is only related to Docker or if running the normal way is also bad?

it is the normal operation of the frr that does not work properly because when we restart the docker , the service restarts correctly and the ripd process no longer returns a request to update the routing table.

Please show show ip route, show ip rip, show ip rip status before/after restart.

Here is your demand :


                BEFORE

---------------FRR_A show ip route-------------------

FRR_A# show ip route vrf vrf_ndc
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, F - PBR,
f - OpenFabric,

  • selected route, * - FIB route, q - queued, r - rejected, b - backup
    t - trapped, o - offload failure

VRF vrf_ndc:
R>* 0.0.0.0/0 [120/2] via 10.XXX.XXX.XX, fip0.XXX, weight 1, 00:01:08
K * 0.0.0.0/0 [255/8192] unreachable (ICMP unreachable), 03:36:45
S>* 10.X.X.X/24 [1/0] via 100.X.X.X, eth3, weight 1, 03:36:30
C>* 10.XXX.XXX.XX/30 is directly connected, fip0.XXX, 03:24:47
C>* 10.XXX.XXX.XX/30 is directly connected, fip0.XXX, 03:24:47
S>* 20.X.X.X/24 [1/0] via 100.X.X.X, eth3, weight 1, 00:44:47
C>* 100.X.X.X/24 is directly connected, eth3, 03:36:45
R>* 100.X.X.X/24 [120/2] via 10.XXX.XXX.XX, fip0.XXX, weight 1, 00:01:08

---------------FRR_B show ip route--------------------

FRR_B# show ip rip vrf vrf_ndc
Codes: R - RIP, C - connected, S - Static, O - OSPF, B - BGP
Sub-codes:
(n) - normal, (s) - static, (d) - default, (r) - redistribute,
(i) - interface

 Network            Next Hop         Metric From            Tag Time

S(r) 0.0.0.0/0 100.X.X.X 1 self 0
R(n) 10.X.X.X/24 10.XXX.XXX.XX 2 10.XXX.XXX.XX 0 02:36
C(r) 10.XXX.XXX.X/30 0.0.0.0 1 self 0
C(r) 100.X.X.X/24 0.0.0.0 1 self 0

------------------FRR_A show ip rip--------------------------

FRR_A# show ip rip vrf vrf_ndc
Codes: R - RIP, C - connected, S - Static, O - OSPF, B - BGP
Sub-codes:
(n) - normal, (s) - static, (d) - default, (r) - redistribute,
(i) - interface

 Network            Next Hop         Metric From            Tag Time

R(n) 0.0.0.0/0 10.XXX.XXX.XX 2 10.XXX.XXX.XX 0 02:55
S(r) 10.X.X.X/24 100.X.XXX.X 1 self 0
S(r) 20.X.X.X/24 100.X.X.X 1 self 0
R(n) 100.X.X.X/24 10.XXX.XXX.XX 2 10.XXX.XXX.XX 0 02:55

-------------------FRR_B show ip rip-------------------------

FRR_B# show ip rip vrf vrf_ndc
Codes: R - RIP, C - connected, S - Static, O - OSPF, B - BGP
Sub-codes:
(n) - normal, (s) - static, (d) - default, (r) - redistribute,
(i) - interface

 Network            Next Hop         Metric From            Tag Time

S(r) 0.0.0.0/0 100.X.X.X 1 self 0
R(n) 10.X.X.X/24 10.X.XX.X 2 10.X.XXX.XX 0 02:31
C(r) 10.XXX.X.X/30 0.0.0.0 1 self 0
C(r) 100.X.X.X/24 0.0.0.0 1 self 0

--------------------FRR_A show ip rip status-----------------------

FRR_A# show ip rip vrf vrf_ndc status
Routing Protocol is "rip"
Sending updates every 30 seconds with +/-50%, next due in 24 seconds
Timeout after 180 seconds, garbage collect after 120 seconds
Outgoing update filter list for all interface is not set
fip0.XXX filtered by (prefix-list) TO_RIP
fip0.XXX filtered by (prefix-list) TO_RIP
Incoming update filter list for all interface is not set
fip0.XXX filtered by nothing
fip0.XXX filtered by nothing
Default redistribution metric is 1
Redistributing: static
Default version control: send version 2, receive version 2
Interface Send Recv Key-chain
Routing for Networks:
10.X.XXX.XX
10.X.XXX.XX
Routing Information Sources:
Gateway BadPackets BadRoutes Distance Last Update
10.XX.XXX.XX 0 0 120 00:00:03
Distance: (default is 120)

---------------------FRR_B show ip rip status--------------------------

FRR_B# show ip rip vrf vrf_ndc status
Routing Protocol is "rip"
Sending updates every 30 seconds with +/-50%, next due in 25 seconds
Timeout after 180 seconds, garbage collect after 120 seconds
Outgoing update filter list for all interface is not set
fip0.XXX filtered by (prefix-list) TO_RIP
Incoming update filter list for all interface is not set
fip0.XXX filtered by nothing
Default redistribution metric is 1
Redistributing: connected static
Default version control: send version 2, receive version 2
Interface Send Recv Key-chain
Routing for Networks:
10.X.X.X
Routing Information Sources:
Gateway BadPackets BadRoutes Distance Last Update
10.X.X.X 0 0 120 00:00:09
Distance: (default is 120)


                AFTER

---------------FRR_A show ip route-------------------

FRR_A# show ip route vrf vrf_ndc
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, F - PBR,
f - OpenFabric,

  • selected route, * - FIB route, q - queued, r - rejected, b - backup
    t - trapped, o - offload failure

VRF vrf_ndc:
K>* 0.0.0.0/0 [255/8192] unreachable (ICMP unreachable), 03:44:27
S>* 10.X.X.X/24 [1/0] via 100.X.X.X, eth3, weight 1, 03:44:12
C>* 10.X.X.X/30 is directly connected, fip0.XXX, 03:32:29
C>* 10.X.X.X/30 is directly connected, fip0.XXX, 03:32:29
S>* 20.X.X.X/24 [1/0] via 100.X.X.X, eth3, weight 1, 00:52:29
C>* 100.X.X.X/24 is directly connected, eth3, 03:44:27

---------------FRR_B show ip route-------------------

FRR_B# show ip route vrf vrf_ndc
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
T - Table, v - VNC, V - VNC-Direct, A - Babel, F - PBR,
f - OpenFabric,

  • selected route, * - FIB route, q - queued, r - rejected, b - backup
    t - trapped, o - offload failure

VRF vrf_ndc:
S>* 0.0.0.0/0 [1/0] via 100.0.2.1, eth3, weight 1, 4d00h20m
K * 0.0.0.0/0 [255/8192] unreachable (ICMP unreachable), 4d00h21m
C>* 10.X.X.X/30 is directly connected, fip0.219, 03:37:08
C>* 100.X.X.X/24 is directly connected, eth3, 4d00h21m

-------------------FRR_A show ip rip-------------------------

FRR_A# show ip rip vrf vrf_ndc
Codes: R - RIP, C - connected, S - Static, O - OSPF, B - BGP
Sub-codes:
(n) - normal, (s) - static, (d) - default, (r) - redistribute,
(i) - interface

 Network            Next Hop         Metric From            Tag Time

R(n) 0.0.0.0/0 10.X.X.X 2 10.X.X.X 0 02:34
S(r) 10.X.X.X/24 100.X.X.X 1 self 0
S(r) 20.X.X.X/24 100.X.X.X 1 self 0
R(n) 100.X.X.X/24 10.X.X.X 2 10.X.X.X 0 02:34

-------------------FRR_B show ip rip-------------------------

FRR_B# show ip rip vrf vrf_ndc
Codes: R - RIP, C - connected, S - Static, O - OSPF, B - BGP
Sub-codes:
(n) - normal, (s) - static, (d) - default, (r) - redistribute,
(i) - interface

 Network            Next Hop         Metric From            Tag Time

S(r) 0.0.0.0/0 100.X.X.X 1 self 0
C(r) 10.X.X.X/30 0.0.0.0 1 self 0
C(r) 100.X.X.X/24 0.0.0.0 1 self 0

---------------------FRR_A show ip rip status--------------------------

FRR_A# show ip rip vrf vrf_ndc status
Routing Protocol is "rip"
Sending updates every 30 seconds with +/-50%, next due in 7 seconds
Timeout after 180 seconds, garbage collect after 120 seconds
Outgoing update filter list for all interface is not set
fip0.XXX filtered by (prefix-list) TO_RIP
fip0.XXX filtered by (prefix-list) TO_RIP
Incoming update filter list for all interface is not set
fip0.XXX filtered by nothing
fip0.XXX filtered by nothing
Default redistribution metric is 1
Redistributing: static
Default version control: send version 2, receive version 2
Interface Send Recv Key-chain
Routing for Networks:
10.X.X.X
10.X.X.X
Routing Information Sources:
Gateway BadPackets BadRoutes Distance Last Update
10.X.X.X 0 0 120 00:00:13
Distance: (default is 120)

---------------------FRR_B show ip rip status--------------------------

FRR_B# show ip rip vrf vrf_ndc status
Routing Protocol is "rip"
Sending updates every 30 seconds with +/-50%, next due in 1 seconds
Timeout after 180 seconds, garbage collect after 120 seconds
Outgoing update filter list for all interface is not set
fip0.219 filtered by (prefix-list) TO_RIP
Incoming update filter list for all interface is not set
fip0.219 filtered by nothing
Default redistribution metric is 1
Redistributing: connected static
Default version control: send version 2, receive version 2
Interface Send Recv Key-chain
Routing for Networks:
10.X.X.X
Routing Information Sources:
Gateway BadPackets BadRoutes Distance Last Update
Distance: (default is 120)