Hello,

 

So it looks like the routes are added in bgp. But, when I do "show ipv6 route", the routes still toggle back and forth in being removed and added...

 

Is there anything strange or off about the added bgp routes below?

 

AERO-Relay# show bgp

BGP table version is 48939, local router ID is 10.0.4.2, vrf id 0 Default local pref 100, local AS 1 Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,

               i internal, r RIB-failure, S Stale, R Removed Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self Origin codes:  i - IGP, e - EGP, ? - incomplete

 

   Network                           Next Hop            Metric LocPrf      Weight Path

> 2001:db8:1:1::/64        fe80::1:2             1024                        0 2 ?

> 2001:db8:1:2::/64        fe80::2:2             1024                        0 3 ?

> 2001:db8:1:3::/64        fe80::1:2             1024                        0 2 ?

> 2001:db8:1:4::/64        fe80::2:2             1024                        0 3 ?

> fd80::1:0/112                 fe80::1:2                0                            0 2 ?

> fd80::1:2/128                 fe80::1:2             1024                        0 2 ?

> fd80::2:0/112                 fe80::2:2                0                            0 3 ?

> fd80::2:2/128                 fe80::2:2             1024                        0 3 ?

 

Displayed  8 routes and 8 total paths

AERO-Relay# show bgp summary

 

IPv6 Unicast Summary:

BGP router identifier 10.0.4.2, local AS number 1 vrf-id 0 BGP table version 49506 RIB entries 11, using 2112 bytes of memory Peers 2, using 43 KiB of memory

 

Neighbor             V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ               Up/Down State/PfxRcd

fd80::1:2              4          2        18                     15           0              0    0 00:11:55            4

fd80::2:2              4          3        18                     19           0              0    0 00:11:55            4

 

Total number of neighbors 2

 

Regards,

Katherine

 

 

From: frog [mailto:frog-bounces@lists.frrouting.org] On Behalf Of Tran (US), Katherine K
Sent: Monday, April 06, 2020 2:54 PM
To: Tim Bray <tim@provu.co.uk>; frog@lists.frrouting.org
Subject: Re: [FROG] FRR Adding IPv6 Routes

 

I am running in Ubuntu 18.04 with Linux kernel version 4.15.0-91-generic. Looks like the MTU is 1400 for each interface aero2 and aero3. Would that be causing the issue?

 

Doesn’t look like the bgp session stay up either….

 

AERO-Relay# show bgp summary

 

IPv6 Unicast Summary:

BGP router identifier 10.0.4.2, local AS number 1 vrf-id 0

BGP table version 11120

RIB entries 13, using 2496 bytes of memory

Peers 2, using 43 KiB of memory

 

Neighbor        V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd

fd80::1:2       4          2         8         5        0    0    0 00:01:32            4

fd80::2:2       4          3         8         5        0    0    0 00:01:32            4

 

The net.ipv6.route.max_size is currently set to the default value of 4096. I will see if I can change it.

 

Thanks,

Katherine

 

From: Tim Bray [mailto:tim@provu.co.uk]
Sent: Monday, April 06, 2020 2:37 PM
To: Tran (US), Katherine K <katherine.k.tran@boeing.com>; frog@lists.frrouting.org
Subject: Re: [FROG] FRR Adding IPv6 Routes

 

 

And

 

do show bgp summary.

 

Do the bgp sessions stay up?  Show long timers?

 

 

Another very long shot question - which linux kernel version?  And do you have any interfaces with MTU different to 1500?   

There is an IPv6 funny

try

sysctl net.ipv6.route.max_size=2147483647

There isn't really a route cache for IPv6 in modern linux.  But there is a bug which causes problems if you have different MTU.    some details here.

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=861115

(sorry, quick reply)

 

Tim

 

 

 

On 06/04/2020 22:19, Tran (US), Katherine K wrote:

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@provu.co.uk]
Sent: Thursday, April 02, 2020 3:31 PM
To: frog@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 :)