[FROG] FRR Adding IPv6 Routes

Tran (US), Katherine K katherine.k.tran at boeing.com
Mon Apr 6 17:19:15 EDT 2020


Hello,

The next hop toggles between being accessible and not accessible. I run the "show ipv6 route" command at two different times and the IPv6 routes toggles between being added and removed.

Vtysh terminal output of the Relay
-----------------------------------------
Relay# 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 route, r - rejected route

B>* 2001:db8:1:1::/64 [20/1024] via fe80::1:2, eth2, 00:00:00
B>* 2001:db8:1:2::/64 [20/1024] via fe80::2:2, eth3, 00:00:00
B>* 2001:db8:1:3::/64 [20/1024] via fe80::1:2, eth2, 00:00:00
B>* 2001:db8:1:4::/64 [20/1024] via fe80::2:2, eth3, 00:00:00
B   fd80::1:0/112 [20/0] via fe80::1:2, eth2, 00:00:00
C>* fd80::1:0/112 is directly connected, eth2, 00:00:21
B>* fd80::1:2/128 [20/1024] via fe80::1:2, eth2, 00:00:00
B   fd80::2:0/112 [20/0] via fe80::2:2, eth3, 00:00:00
C>* fd80::2:0/112 is directly connected, eth3, 00:00:21
B>* fd80::2:2/128 [20/1024] via fe80::2:2, eth3, 00:00:00
C * fe80::/10 is directly connected, eth3, 00:00:20
C * fe80::/10 is directly connected, eth2, 00:00:20
C * fe80::/10 is directly connected, eth3, 00:00:21
C>* fe80::/10 is directly connected, eth2, 00:00:21
C * fe80::/64 is directly connected, eth1, 00:00:17
C>* fe80::/64 is directly connected, eth0, 00:00:17

Relay# 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 route, r - rejected route

C>* fd80::1:0/112 is directly connected, eth2, 00:02:13
C>* fd80::2:0/112 is directly connected, eth3, 00:02:13
C * fe80::/10 is directly connected, eth3, 00:02:12
C * fe80::/10 is directly connected, eth2, 00:02:12
C * fe80::/10 is directly connected, eth3, 00:02:13
C>* fe80::/10 is directly connected, eth2, 00:02:13
C * fe80::/64 is directly connected, eth1, 00:02:09
C>* fe80::/64 is directly connected, eth0, 00:02:09


Below are the frr.conf config files for my configuration.
The Relay, Server 1 and Server 2 are all connected to N3.

Relay Config File
--------------------
log file /var/log/frr/frr.log debugging
!
interface eth0
  ip address 10.0.4.2/24

!
interface eth1

  ipv6 address 2001::1/64
!
interface aero2

  ipv6 address fe80::1:1/10
  ipv6 address fd80::1:1/112
!
interface aero3

  ipv6 address fe80::2:1/10
  ipv6 address fd80::2:1/112
!
! Static routes
ip route 0.0.0.0/0 10.0.4.1
!
!
!
! BGP configuration
!
! You should configure the AS number below,
! along with this router's peers.
!
router bgp 1
  bgp router-id 10.0.4.2
  no bgp default ipv4-unicast
  neighbor fd80::1:2 remote-as 2
  neighbor fd80::1:2 interface aero2
  neighbor fd80::2:2 remote-as 3
  neighbor fd80::2:2 interface aero3
  address-family ipv6
  neighbor fd80::1:2 activate
  neighbor fd80::1:2 next-hop-self
  neighbor fd80::1:2 default-originate
  neighbor fd80::1:2 distribute-list blackhole out
  neighbor fd80::2:2 activate
  neighbor fd80::2:2 next-hop-self
  neighbor fd80::2:2 default-originate
  neighbor fd80::2:2 distribute-list blackhole out
! access-list blackhole deny any
  exit-address-family
!
  ipv6 access-list blackhole deny any
!

Server1 config file
----------------------
log file /var/log/frr/frr.log debugging
interface eth0
  ip address 10.0.2.2/24
!
interface aero0
 ipv6 address fe80::1:2/10
  ipv6 address fd80::1:2/112
!
! Static routes
!
ip route 0.0.0.0/0 10.0.2.1
!
!
! BGP configuration
!
! You should configure the AS number below,
! along with this router's peers.
!
router bgp 2
  bgp router-id 10.0.2.2
  no bgp default ipv4-unicast
  neighbor fd80::1:1 remote-as 1
  neighbor fd80::1:1 interface aero0
  neighbor fd80::1:1 advertisement-interval 0
  address-family ipv6
  redistribute connected
  redistribute static
  redistribute kernel
  neighbor fd80::1:1 activate
  neighbor fd80::1:1 next-hop-self
  neighbor fd80::1:1 distribute-list 101 out
  exit-address-family
  !
  ipv6 access-list 101 permit 2001::/16
  ipv6 access-list 101 permit fd80::/10
  ipv6 access-list 101 deny any
  !

Server2 config file
----------------------
interface eth0
  ip address 10.0.3.2/24
!
interface aero0
  ipv6 address fe80::2:2/10
  ipv6 address fd80::2:2/112
!
! Static routes
ip route 0.0.0.0/0 10.0.3.1
!
!
! BGP configuration
!
! You should configure the AS number below,
! along with this router's peers.
!
router bgp 3
  bgp router-id 10.0.3.2
  no bgp default ipv4-unicast
  neighbor fd80::2:1 remote-as 1
  neighbor fd80::2:1 interface aero0
  neighbor fd80::2:1 advertisement-interval 0
  address-family ipv6
  redistribute connected
  redistribute static
  redistribute kernel
  neighbor fd80::2:1 activate
  neighbor fd80::2:1 next-hop-self
  neighbor fd80::2:1 distribute-list 101 out
  exit-address-family
!
ipv6 access-list 101 permit 2001::/16
ipv6 access-list 101 permit fd80::/10
ipv6 access-list 101 deny any

N3 config file
---------------------
interface eth2
!
interface eth3
!
interface eth4
!
interface eth5
!
interface eth0
!
interface eth1
!

Thank you,
Katherine


From: Tim Bray [mailto:tim at provu.co.uk]
Sent: Thursday, April 02, 2020 3:31 PM
To: frog at lists.frrouting.org
Subject: Re: [FROG] FRR Adding IPv6 Routes

On 02/04/2020 22:25, Tran (US), Katherine K wrote:

I am trying to switch from Quagga to  FRR, but I am having issues adding distributed IPv6 routes. Although the IPv6 routes get added, they keep toggling between being added and removed. This did not occur while using Quagga.

A difference between the added IPv6 routes of Quagga and FRR was that (1) the Quagga routes are by protocol zebra and (2) the FRR routes are by protocol 186, which I deduced to be bgpd. This can be seen by initiating the command "ip -6 ro sh".

Quagga
----------
2001:XXXX:X:X::/64 via fe80::1:2 dev eth0 proto zebra metric 1024 pref medium

FRR
-----
2001:XXXX:X:X::/64 via fe80::1:2 dev eth0 proto 186 metric 20 pref medium




I think, the display of 186 it just because you need the `friendly` names specifying

You could edit etc/iproute2/rt_protos and add the missing numbers and the output would look better.    See below.

I suspect this is not why routes are being added and withdrawn.



$ more /etc/iproute2/rt_protos
#
# Reserved protocols.
#
0    unspec
1    redirect
2    kernel
3    boot
4    static
8    gated
9    ra
10    mrt
11    zebra
12    bird
13    dnrouted
14    xorp
15    ntk
16      dhcp
42    babel
186    bgp
187    isis
188    ospf
189    rip
192    eigrp



Not sure what else to say.  Can you post some more config?

if you type

do show ipv6 route <a prefix>

what comes out?

Is the next hop accessible?



I'd keep trying, because FRR fixes so many IPv6 problems you don't know were problems until you switched to FRR :)



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.frrouting.org/pipermail/frog/attachments/20200406/b584430f/attachment.html>


More information about the frog mailing list