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.
Exit the vtysh shell environement:
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:
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:
Second example output is showing the OSPF routing protocols. OSPF6 example debugging output.
The debug ospf6 neighbor event
output in the system syslog:
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:
Third example debugging output is for the IS-IS routing protocol.
The debug isis update packets
output in the system syslog:
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:
To verify if still any active or forgotten debug
is running, use the show debug
command:
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.