In this guide we will provide detailed guide which will help you to establish BGP session between FastNetMon and FRR.
FRR is a network routing toolkit which includes support for many routing protocols. In this guide we will work only with BGP protocol and we will use Ubuntu as platform. The very same guide should work well on Debian platform too.
First we need to install FRR. Unfortuately, even latest versions of Linux distributions do not ship fresh versions of FRR and we will use their official repository to install it.
If you have FRR installed you can skip this guide to configuration step.
Add GPG key into trust store:
curl -s https://deb.frrouting.org/frr/keys.asc | sudo apt-key add -
Add FRR repositories into system:
FRRVER="frr-stable" echo deb https://deb.frrouting.org/frr $(lsb_release -s -c) $FRRVER | sudo tee -a /etc/apt/sources.list.d/frr.list
Install FRR:
sudo apt update sudo apt install -y frr frr-pythontools
Enable BGP daemon:
sudo sed -i "s/^bgpd=no/bgpd=yes/" /etc/frr/daemons
Restart FRR daemons:
sudo systemctl restart frr
Check that bgpd daemon is running:
ps aux|grep bgpd
You need to check that following daemons are in list of running processes:
root 11177 0.0 0.0 38544 2872 ? S<s 15:05 0:00 /usr/lib/frr/watchfrr -d -F traditional zebra bgpd staticd frr 11195 0.0 0.0 203564 10124 ? S<sl 15:05 0:00 /usr/lib/frr/bgpd -d -F traditional -A 127.0.0.1
Then open /etc/frr/frr.conf and add following content (please replace IPs for correct ones for machine itself and machine with FastNetMon):
frr defaults traditional log syslog informational debug bgp events debug bgp filters debug bgp fsm debug bgp keepalives debug bgp updates router bgp 65001 bgp router-id 192.168.1.106 bgp log-neighbor-changes neighbor 192.168.1.201 remote-as 65001 neighbor 192.168.1.201 soft-reconfiguration inbound
Apply configuration:
sudo systemctl restart frr
Then you will need to check that BGP peering session is configured properly on FastNetMon’s side.
After that you can check BGP status from FRR that way:
sudo vtysh -c "show bgp summary" IPv4 Unicast Summary (VRF default): BGP router identifier 192.168.1.106, local AS number 65001 vrf-id 0 BGP table version 0 RIB entries 0, using 0 bytes of memory Peers 1, using 724 KiB of memory Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd PfxSnt Desc 192.168.1.201 4 65001 27 27 0 0 0 00:12:34 0 0 N/A Total number of neighbors 1
Check detailed peer status from FRR:
sudo vtysh -c "show ip bgp nei"
Example output:
BGP neighbor is 192.168.1.201, remote AS 65001, local AS 65001, internal link Local Role: undefined Remote Role: undefined BGP version 4, remote router ID 192.168.1.201, local router ID 192.168.1.106 BGP state = Established, up for 00:20:57 Last read 00:00:27, Last write 00:00:27 Hold time is 90 seconds, keepalive interval is 30 seconds Configured hold time is 180 seconds, keepalive interval is 60 seconds Configured conditional advertisements interval is 60 seconds Neighbor capabilities: 4 Byte AS: advertised and received Extended Message: advertised AddPath: IPv4 Unicast: RX advertised Extended nexthop: received Address families by peer: IPv4 Unicast Long-lived Graceful Restart: advertised Route refresh: advertised and received(new) Enhanced Route Refresh: advertised Address Family IPv4 Unicast: advertised and received Hostname Capability: advertised (name: fastlab1,domain name: n/a) not received Graceful Restart Capability: advertised Graceful restart information: Local GR Mode: Helper* Remote GR Mode: Disable R bit: False N bit: False Timers: Configured Restart Time(sec): 120 Received Restart Time(sec): 0 Message statistics: Inq depth is 0 Outq depth is 0 Sent Rcvd Opens: 2 1 Notifications: 0 0 Updates: 0 1 Keepalives: 42 42 Route Refresh: 0 0 Capability: 0 0 Total: 44 44 Minimum time between advertisement runs is 0 seconds For address family: IPv4 Unicast Update group 1, subgroup 1 Packet Queue length 0 Community attribute sent to this neighbor(all) 1 accepted prefixes Connections established 1; dropped 0 Last reset 00:21:07, No AFI/SAFI activated for peer Internal BGP neighbor may be up to 255 hops away. Local host: 192.168.1.106, Local port: 179 Foreign host: 192.168.1.201, Foreign port: 54455 Nexthop: 192.168.1.106 Nexthop global: fd30:4a5b:de4c:0:20c:29ff:fec8:20c5 Nexthop local: fe80::20c:29ff:fec8:20c5 BGP connection: shared network BGP Connect Retry Timer in Seconds: 120 Read thread: on Write thread: on FD used: 24
Check BGP status from GoBGP using this command:
gobgp nei 192.168.1.106
Example output:
BGP neighbor is 192.168.1.106, remote AS 65001 BGP version 4, remote router ID 192.168.1.106 BGP state = ESTABLISHED, up for 00:12:57 BGP OutQ = 0, Flops = 0 Hold time is 90, keepalive interval is 30 seconds Configured hold time is 90, keepalive interval is 30 seconds Neighbor capabilities: multiprotocol: ipv4-unicast: advertised and received route-refresh: advertised and received extended-nexthop: advertised Local: nlri: ipv4-unicast, nexthop: ipv6 UnknownCapability(6): received graceful-restart: received Remote: restart flag set, notification flag set 4-octet-as: advertised and received add-path: received Remote: ipv4-unicast: receive enhanced-route-refresh: received long-lived-graceful-restart: received Remote: ipv4-unicast, restart time 0 sec, forward flag set UnknownCapability(73): received cisco-route-refresh: received Message statistics: Sent Rcvd Opens: 12 1 Notifications: 0 0 Updates: 0 0 Keepalives: 26 26 Route Refresh: 0 0 Discarded: 0 0 Total: 38 27 Route statistics: Advertised: 0 Received: 0 Accepted: 0
Blackhole some example host from FastNetMon side:
sudo fcli set blackhole 11.22.33.44
Then check that prefix was accepted by FRR using this command:
sudo vtysh -c "show ip bgp nei 192.168.1.201 received-routes"
Example output:
BGP table version is 0, local router ID is 192.168.1.106, vrf id 0 Default local pref 100, local AS 65001 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 RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *> 11.22.33.44/32 1.2.3.4 100 0 ? Total number of prefixes 1
This guide covers only BGP peering session setup. We did not create any filters or policies to apply BGP blackhole. You need to do it on your own using BGP communities provided by your ISP.