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
'Network Engineering > OpenSource' 카테고리의 다른 글
How to configure Internal BGP and Router Reflector with Bird? (0) | 2020.05.11 |
---|---|
How to configure External BGP with Bird? (0) | 2020.05.10 |
How to outbound external connection of GN3 devices over remote server? (0) | 2019.06.14 |
How to Configuration VXLAN in Ubuntu 16.04 (0) | 2018.08.16 |
How to Configure “ipvsadm” in Ubuntu (0) | 2018.08.10 |