If using IOS, NX-OS or IOS-XR network operating system, the debug routine works simply, like in shown example below. Exactly 2 commands are needed to use interactive protocol debugging while being in need of troubleshoot in some situation:

configure terminal
 logging console
end

Enable specific IOS protocol debugging option:

terminal monitor
debug ip ospf adj

The tools are integrated into the environement.

Using FRRouting, the routing debugging routine will not work exactly the same way. vtysh has no option to interactive write protocol debug to the vtysh prompt. Also the terminal monitor is missing from vtysh - the command does exist on telnet.

But redirect-ing the '''debugging output''' to the local syslog instead works.

Debug FRRouting in a interactive manner much like it is known from the Cisco CLI output. Without the need of editing the system node files.

This article is a simple demonstration using the RIPng, OSPF6 and IS-IS routing protocol debugging, to show the different debug options in action.

Following setup steps are for the FRR's ''vtysh'' shell. Enable the routing protocol debugging to be redirected the nodes system syslog:

conf
 log syslog debugging
end
wr

Enable the routing protocol debugging in the FRR vtysh. First example below is showing a RIPNG routing protocol debug.

R1#debug ripng events

Exit the vtysh shell environement:

R1#exit

Using the linux shell, tail the syslog debugging messages. RIPng routing protocol debugging messages arriving in the syslog. The debug ripng events output in the system syslog:

user % tail -f /var/log/messages

Apr 11 20:46:17 frr daemon.debug ripngd[1811]: [PFFNW-H080S] RIPng update timer expired! Apr 11 20:46:17 frr daemon.debug ripngd[1811]: [NF770-F9RZW] RIPng update routes on interface eth0 Apr 11 20:46:23 frr daemon.debug ripngd[1811]: [HF070-58CKY] RIPng packet received from fe80::ee0:aff:feaa:0 port 521 on eth0 (VRF default) Apr 11 20:46:47 frr daemon.debug ripngd[1811]: [HF070-58CKY] RIPng packet received from fe80::ee0:aff:feaa:0 port 521 on eth0 (VRF default) Apr 11 20:46:54 frr daemon.debug ripngd[1811]: [PFFNW-H080S] RIPng update timer expired! Apr 11 20:46:54 frr daemon.debug ripngd[1811]: [NF770-F9RZW] RIPng update routes on interface eth0 Apr 11 20:47:08 frr daemon.debug ripngd[1811]: [HF070-58CKY] RIPng packet received from fe80::ee0:aff:feaa:0 port 521 on eth0 (VRF default)

After finished, disable the active debug using the no debug ripng events command:

R1#no debug ripng events

Second example output is showing the OSPF routing protocols. OSPF6 example debugging output.

R1#debug ospf6 neighbor event

The debug ospf6 neighbor event output in the system syslog:

user % tail -f /var/log/messages

Apr 12 18:00:07 frr822 daemon.debug ospf6d[1804]: [TT486-9H7F8] Neighbor Event 2.2.2.2%eth0: HelloReceived Apr 12 18:00:07 frr822 daemon.debug ospf6d[1804]: [ZQ6TC-H6X0S] calling ospf6_lsdb_remove [Network Id:0.0.0.2 Adv:1.1.1.1] Apr 12 18:00:07 frr822 daemon.debug ospf6d[1804]: [H03RR-VGZ33] SPF on DB (#LSAs): Area 0: 4 I/F eth0: 2 I/F lo: 0 Apr 12 18:00:17 frr822 daemon.debug ospf6d[1804]: [TT486-9H7F8] Neighbor Event 2.2.2.2%eth0: HelloReceived Apr 12 18:00:17 frr822 daemon.debug ospf6d[1804]: [KF5Q0-MQ9NH] Neighbor Event 2.2.2.2%eth0: 2Way-Received Apr 12 18:00:17 frr822 daemon.debug ospf6d[1804]: [HMJTV-GYRAV] Neighbor Event 2.2.2.2%eth0: AdjOK? Apr 12 18:00:17 frr822 daemon.debug ospf6d[1804]: [NW6S6-VBVF0] Neighbor Event 2.2.2.2%eth0: NegotiationDone Apr 12 18:00:17 frr822 daemon.debug ospf6d[1804]: [YJ981-ADPMN] Neighbor Event 2.2.2.2%eth0: ExchangeDone Apr 12 18:00:17 frr822 daemon.debug ospf6d[1804]: [H03RR-VGZ33] SPF on DB (#LSAs): Area 0: 5 I/F eth0: 2 I/F lo: 0 Apr 12 18:00:17 frr822 daemon.debug ospf6d[1804]: [Y6JDB-9F2AJ] Neighbor Event 2.2.2.2%eth0: LoadingDone Apr 12 18:00:17 frr822 daemon.debug ospf6d[1804]: [H03RR-VGZ33] SPF on DB (#LSAs): Area 0: 5 I/F eth0: 2 I/F lo: 0 Apr 12 18:00:22 frr822 daemon.debug ospf6d[1804]: [H03RR-VGZ33] SPF on DB (#LSAs): Area 0: 5 I/F eth0: 2 I/F lo: 0 Apr 12 18:00:27 frr822 daemon.debug ospf6d[1804]: [TT486-9H7F8] Neighbor Event 2.2.2.2%eth0: HelloReceived Apr 12 18:00:37 frr822 daemon.debug ospf6d[1804]: [TT486-9H7F8] Neighbor Event 2.2.2.2%eth0: HelloReceived

After finished, disable the active debug using the no debug ospf6 neighbor event command:

R1#no debug ospf6 neighbor event

Third example debugging output is for the IS-IS routing protocol.

R1#debug isis update packets

The debug isis update packets output in the system syslog:

user % tail -f /var/log/messages

Apr 12 18:20:31 frr822 daemon.debug isisd[1837]: [H62XJ-ECWS5] ISIS-Upd (1): Rcvd L2 LSP on eth0, cirType L2, cirID 0 Apr 12 18:20:31 frr822 daemon.debug isisd[1837]: [W94A6-X8H4D] ISIS-Upd (1): Rcvd L2 LSP 2222.2222.2222.00-00, seq 0x0000000e, cksum 0xd1fd, lifetime 1133s, len 77, on eth0 Apr 12 18:20:43 frr822 daemon.debug isisd[1837]: [H62XJ-ECWS5] ISIS-Upd (1): Rcvd L2 LSP on eth0, cirType L2, cirID 0 Apr 12 18:20:43 frr822 daemon.debug isisd[1837]: [W94A6-X8H4D] ISIS-Upd (1): Rcvd L2 LSP 2222.2222.2222.00-00, seq 0x0000000f, cksum 0xb2bd, lifetime 1174s, len 92, on eth0

After finished, disable the active debug using the no debug isis update packets command:

R1#no debug isis update packets

To verify if still any active or forgotten debug is running, use the show debug command:

R1#show debug

The routing specific configuration troubleshooting using FRR now is simplified. Configured without the need of touching system specific files, for ad hoc debugging situation. Running multi-vendor networking topologies using the same routing protocol might get into hitting implementation specific bugs. Different vendor implementations do not share default settings regarding to the used routing protocol. Different vendors name same technology different way and setup own defaults, read the Administrative Distance on various network operating systems. Different vendors have also own set of presets on routing protocols like RIPng/OSPF/IS-IS/BGP. For example a platform specific OSPF setting might not be available in other routing implementations.

The appliance used in the examples is running on alpinelinux and FRRouting. Detailed setup instructions for this FRR appliance read the Building 64bit alpine linux GNS3 FRRouting appliance article. Setup and ready in 10 minutes, for free, a advanced router specifically for GNS3 netlab usage.