diff options
| author | Anuradha Karuppiah <anuradhak@nvidia.com> | 2021-09-28 11:18:43 -0700 | 
|---|---|---|
| committer | Anuradha Karuppiah <anuradhak@nvidia.com> | 2021-10-01 09:02:25 -0700 | 
| commit | 23aa35ade57501a408fa57f346450a40f1b0158c (patch) | |
| tree | e40b918cf818fd21c356c69502f2b08e143c0dae /bgpd/bgp_trace.h | |
| parent | 2e2d2be87f9de25aab5ac9556f7aef0f2fa79bc0 (diff) | |
bgpd: initial batch of evpn lttng tracepoints
Low overhead bgp-evpn TPs have been added which push data out in a binary
format -
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
root@switch:~# lttng list --userspace |grep "frr_bgp:evpn"
      frr_bgp:evpn_mh_nh_rmac_zsend (loglevel: TRACE_DEBUG_LINE (13)) (type: tracepoint)
      frr_bgp:evpn_mh_nh_zsend (loglevel: TRACE_INFO (6)) (type: tracepoint)
      frr_bgp:evpn_mh_nhg_zsend (loglevel: TRACE_INFO (6)) (type: tracepoint)
      frr_bgp:evpn_mh_vtep_zsend (loglevel: TRACE_INFO (6)) (type: tracepoint)
      frr_bgp:evpn_bum_vtep_zsend (loglevel: TRACE_INFO (6)) (type: tracepoint)
      frr_bgp:evpn_mac_ip_zsend (loglevel: TRACE_INFO (6)) (type: tracepoint)
root@switch:~#
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
In addition to the tracepoints a babeltrace python plugin for pretty
printing (binary data is converted into grepable strings). Sample usage -
frr_babeltrace.py trace_path
Sample tracepoint output -
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1. frr_bgp: evpn_mac_ip_zsend
frr_bgp:evpn_mac_ip_zsend {'action': 'add', 'vni': 1007, 'mac': '00:02:00:00:00:04', 'ip': 'fe80::202:ff:fe00:4', 'vtep': '27.0.0.15', 'esi': '03:44:38:39:ff:ff:01:00:00:02'}
2. frr_bgp: evpn_mh_vtep_zsend
frr_bgp:evpn_mh_vtep_zsend {'action': 'add', 'esi': '03:44:38:39:ff:ff:01:00:00:02', 'vtep': '27.0.0.16'}
3. frr_bgp: evpn_mh_nhg_zsend
frr_bgp:evpn_mh_nhg_zsend {'action': 'add', 'type': 'v4', 'nhg': 74999998, 'esi': '03:44:38:39:ff:ff:01:00:00:02', 'vrf': 85}
4. frr_bgp: evpn_mh_nh_zsend
frr_bgp:evpn_mh_nh_zsend {'nhg': 74999998, 'vtep': '27.0.0.16', 'svi': 93}
5. frr_bgp: evpn_mh_nh_rmac_zsend
frr_bgp:evpn_mh_nh_rmac_zsend {'action': 'add', 'vrf': 85, 'nh': '::ffff:1b00:12', 'rmac': '00:02:00:00:00:50'}
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
Diffstat (limited to 'bgpd/bgp_trace.h')
| -rw-r--r-- | bgpd/bgp_trace.h | 90 | 
1 files changed, 90 insertions, 0 deletions
diff --git a/bgpd/bgp_trace.h b/bgpd/bgp_trace.h index 303e06c9c9..1b740d69b5 100644 --- a/bgpd/bgp_trace.h +++ b/bgpd/bgp_trace.h @@ -35,6 +35,9 @@  #include "bgpd/bgpd.h"  #include "lib/stream.h" +#include "bgpd/bgp_evpn_private.h" +#include "bgpd/bgp_evpn_mh.h" +  /* clang-format off */ @@ -243,6 +246,93 @@ TRACEPOINT_EVENT(  )  TRACEPOINT_LOGLEVEL(frr_bgp, bgp_dest_unlock, TRACE_INFO) +TRACEPOINT_EVENT( +	frr_bgp, +	evpn_mac_ip_zsend, +	TP_ARGS(int, add, struct bgpevpn *, vpn, +		const struct prefix_evpn *, pfx, +		struct in_addr, vtep, esi_t *, esi), +	TP_FIELDS( +		ctf_string(action, add ? "add" : "del") +		ctf_integer(vni_t, vni, vpn->vni) +		ctf_array(unsigned char, mac, &pfx->prefix.macip_addr.mac, +			sizeof(struct ethaddr)) +		ctf_array(unsigned char, ip, &pfx->prefix.macip_addr.ip, +			sizeof(struct ipaddr)) +		ctf_integer_network_hex(unsigned int, vtep, vtep.s_addr) +		ctf_array(unsigned char, esi, esi, sizeof(esi_t)) +	) +) +TRACEPOINT_LOGLEVEL(frr_bgp, evpn_mac_ip_zsend, TRACE_INFO) + +TRACEPOINT_EVENT( +	frr_bgp, +	evpn_bum_vtep_zsend, +	TP_ARGS(int, add, struct bgpevpn *, vpn, +		const struct prefix_evpn *, pfx), +	TP_FIELDS( +		ctf_string(action, add ? "add" : "del") +		ctf_integer(vni_t, vni, vpn->vni) +		ctf_integer_network_hex(unsigned int, vtep, +			pfx->prefix.imet_addr.ip.ipaddr_v4.s_addr) +	) +) +TRACEPOINT_LOGLEVEL(frr_bgp, evpn_bum_vtep_zsend, TRACE_INFO) + +TRACEPOINT_EVENT( +	frr_bgp, +	evpn_mh_vtep_zsend, +	TP_ARGS(bool, add, struct bgp_evpn_es *, es, +		struct bgp_evpn_es_vtep *, es_vtep), +	TP_FIELDS( +		ctf_string(action, add ? "add" : "del") +		ctf_string(esi, es->esi_str) +		ctf_string(vtep, es_vtep->vtep_str) +	) +) +TRACEPOINT_LOGLEVEL(frr_bgp, evpn_mh_vtep_zsend, TRACE_INFO) + +TRACEPOINT_EVENT( +	frr_bgp, +	evpn_mh_nhg_zsend, +	TP_ARGS(bool, add, bool, type_v4, uint32_t, nhg_id, +		struct bgp_evpn_es_vrf *, es_vrf), +	TP_FIELDS( +		ctf_string(action, add ? "add" : "del") +		ctf_string(type, type_v4 ? "v4" : "v6") +		ctf_integer(unsigned int, nhg, nhg_id) +		ctf_string(esi, es_vrf->es->esi_str) +		ctf_integer(int, vrf, es_vrf->bgp_vrf->vrf_id) +	) +) +TRACEPOINT_LOGLEVEL(frr_bgp, evpn_mh_nhg_zsend, TRACE_INFO) + +TRACEPOINT_EVENT( +	frr_bgp, +	evpn_mh_nh_zsend, +	TP_ARGS(uint32_t, nhg_id, struct bgp_evpn_es_vtep *, vtep, +		struct bgp_evpn_es_vrf *, es_vrf), +	TP_FIELDS( +		ctf_integer(unsigned int, nhg, nhg_id) +		ctf_string(vtep, vtep->vtep_str) +		ctf_integer(int, svi, es_vrf->bgp_vrf->l3vni_svi_ifindex) +	) +) +TRACEPOINT_LOGLEVEL(frr_bgp, evpn_mh_nh_zsend, TRACE_INFO) + +TRACEPOINT_EVENT( +	frr_bgp, +	evpn_mh_nh_rmac_zsend, +	TP_ARGS(bool, add, struct bgp_evpn_nh *, nh), +	TP_FIELDS( +		ctf_string(action, add ? "add" : "del") +		ctf_integer(int, vrf, nh->bgp_vrf->vrf_id) +		ctf_string(nh, nh->nh_str) +		ctf_array(unsigned char, rmac, &nh->rmac, +			sizeof(struct ethaddr)) +	) +) +TRACEPOINT_LOGLEVEL(frr_bgp, evpn_nh_rmac_zsend, TRACE_INFO)  /* clang-format on */  #include <lttng/tracepoint-event.h>  | 
