A few years ago, I have read about Quagga. It is software router which can install on the Linux such as Ubuntu. I have heard about this FRRouting which is next generation of the Quagga. In this post, I will configure some feature from FRRouting.

 

1. Installation

I will use Ubuntu 18.04. In this instruction, there are steps to install for Debian Linux. 

By the instruction, It will be work. 

After installation, I can check the the directory created in "/etc/frr/" like below.

 

2. Crash Log File.

This is the directory, "/var/tmp/frr/<daemon>[-<instance>].<pid>/crashlog" which I have refer.

 

3. Daemon Configuration.

After I start the FRR with "/etc/init.d/frr start" command, I can check the listen Port. I can see "staticd" and "zebra" daemon are loaded. This is the basic daemon.

When I want to more routing protocol, there are 2 things necessary, configuration file such as bgpd.conf and activate the protocol. 

The configuration sample files are located under the "/usr/share/doc/frr/examples/zebra.conf.sample". (Please not that those file has ownership by "frr". Thus I need to update with "chown frr.frr zebra.conf".)

When I handle the Quagga at first time, There are something difficult to use it. It is "Intergrated-vtysh-config". I need each configuration file to load each routing protocol. This means that I have to edit each file.

I think that FRR improve this part rather than before. Please read this. there are "frr.conf" file.

If this file "frr.conf" is existed, each configuration file will not be loaded. I have to remove "frr.conf" to load each file.

4. How to save configurartion file on VTY Shell mode.

In FRR, VTY Shell (Intergrated mode) is useful. However, there are something import. Basically, the routing protocol works on each daemon with each configuration file. It is not simple to load from common configuration file "frr.conf" to each daemon. This relationship make some consideration about the save file.

I configure "service intergrated-vtysh-config" in frr.conf and try to save with "write intergrated" insted "write file"

4. Enable BGP Feature of FRRouting

In "/etc/frr/daemon" filel there is the step to define the protocol what I want. In my case, I will active BGP Protocol It looks like below.

root@ip-10-10-0-134:~# cat /etc/frr/daemons   
bgpd=yes
ospfd=no
ospf6d=no 

At this time, I only activate BGP Protocol.

 

5. Configure Internal BGP with Route Reflector.

In this post, I handle similar environment with bird opensource. I think it will be good comparison. This .

 

Host #1 (Top) Host #2 (Left side of Bottom) Host #3 (Right side of Bottom)
ip-10-10-0-64# show running-config 
Building configuration...

Current configuration:
!
frr version 7.3
frr defaults traditional
hostname ip-10-10-0-64
log syslog informational
no ipv6 forwarding
service integrated-vtysh-config
!
router bgp 65001
 bgp router-id 10.10.0.64
 neighbor 10.10.0.107 remote-as 65001
 neighbor 10.10.0.134 remote-as 65001
 !
 address-family ipv4 unicast
  neighbor 10.10.0.107 route-reflector-client
  neighbor 10.10.0.134 route-reflector-client
 exit-address-family
!
line vty
!
end
ip-10-10-0-107# show running-config 
Building configuration...

Current configuration:
!
frr version 7.3
frr defaults traditional
hostname ip-10-10-0-107
log syslog informational
no ipv6 forwarding
service integrated-vtysh-config
!
interface lo
 ip address 1.1.1.1/32
 ip address 1.1.1.2/32
!
router bgp 65001
 bgp router-id 10.10.0.107
 neighbor 10.10.0.64 remote-as 65001
 !
 address-family ipv4 unicast
  redistribute connected
 exit-address-family
!
line vty
!
end
ip-10-10-0-134# show running-config 
Building configuration...

Current configuration:
!
frr version 7.3
frr defaults traditional
hostname ip-10-10-0-134
log syslog informational
no ipv6 forwarding
service integrated-vtysh-config
!
interface lo
 ip address 2.2.2.1/32
 ip address 2.2.2.2/32
!
router bgp 65001
 bgp router-id 10.10.0.134
 neighbor 10.10.0.64 remote-as 65001
 !
 address-family ipv4 unicast
  redistribute connected
 exit-address-family
!
line vty
!
end

 

6. Result

After configuration, I can verify the result. It works well like below.

Host #1 (Top)
ip-10-10-0-64# show ip bgp summary 

IPv4 Unicast Summary:
BGP router identifier 10.10.0.64, local AS number 65001 vrf-id 0
BGP table version 6
RIB entries 9, using 1656 bytes of memory
Peers 2, using 41 KiB of memory

Neighbor        V         AS MsgRcvd MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd
10.10.0.107     4      65001      10      12        0    0    0 00:04:38            3
10.10.0.134     4      65001       6       7        0    0    0 00:01:01            3

Host #2 (Left side of Bottom)
ip-10-10-0-107# show ip bgp summary 

IPv4 Unicast Summary:
BGP router identifier 10.10.0.107, local AS number 65001 vrf-id 0
BGP table version 5
RIB entries 9, using 1656 bytes of memory
Peers 1, using 20 KiB of memory

Neighbor        V         AS MsgRcvd MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd
10.10.0.64      4      65001      12      10        0    0    0 00:04:34            2

Host #3 (Right side of Bottom)
ip-10-10-0-134# show ip bgp summary 

IPv4 Unicast Summary:
BGP router identifier 10.10.0.134, local AS number 65001 vrf-id 0
BGP table version 6
RIB entries 9, using 1656 bytes of memory
Peers 1, using 20 KiB of memory

Neighbor        V         AS MsgRcvd MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd
10.10.0.64      4      65001       6       5        0    0    0 00:00:53            3

Host #2 and Host #3 are not connected directly. However, there can understand each other.

Host #2 (Left side of Bottom)
ip-10-10-0-107# show ip route
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, D - SHARP,
       F - PBR, f - OpenFabric,
       > - selected route, * - FIB route, q - queued route, r - rejected route

K>* 0.0.0.0/0 [0/100] via 10.10.0.1, ens5, src 10.10.0.107, 00:16:04
C>* 1.1.1.1/32 is directly connected, lo, 00:07:08
C>* 1.1.1.2/32 is directly connected, lo, 00:07:04
B>* 2.2.2.1/32 [200/0] via 10.10.0.134, ens5, 00:04:47
B>* 2.2.2.2/32 [200/0] via 10.10.0.134, ens5, 00:04:47
C>* 10.10.0.0/24 is directly connected, ens5, 00:16:04
K>* 10.10.0.1/32 [0/100] is directly connected, ens5, 00:16:04

Host #3 (Right side of Bottom)
ip-10-10-0-134# show ip route
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, D - SHARP,
       F - PBR, f - OpenFabric,
       > - selected route, * - FIB route, q - queued route, r - rejected route

K>* 0.0.0.0/0 [0/100] via 10.10.0.1, ens5, src 10.10.0.134, 00:15:39
B>* 1.1.1.1/32 [200/0] via 10.10.0.107, ens5, 00:04:32
B>* 1.1.1.2/32 [200/0] via 10.10.0.107, ens5, 00:04:32
C>* 2.2.2.1/32 is directly connected, lo, 00:05:16
C>* 2.2.2.2/32 is directly connected, lo, 00:05:13
C>* 10.10.0.0/24 is directly connected, ens5, 00:15:39
K>* 10.10.0.1/32 [0/100] is directly connected, ens5, 00:15:39

 

Reference 

[ 1 ] http://docs.frrouting.org/en/latest/ 

[ 2 ] https://deb.frrouting.org/

[ 3 ] https://blog.naver.com/happy_jhyo/70155768908

[ 4 ] http://docs.frrouting.org/en/latest/vtysh.html

[ 5 ] https://github.com/FRRouting/frr/issues/966

[ 6 ] https://createnetech.tistory.com/55

[ 7 ] https://createnetech.tistory.com/53?category=672584

 

 

+ Recent posts