BMP monitoring: FRR, BIRD, and Arista EOS
Speakers dial the collector in active mode (default TCP 11019). Keep the BMP session on the management network so it does not follow the data-plane RIB.
On the Linux images (FRR and BIRD), eth0 is moved into VRF mgmt (table 42) at boot. EOS uses Management0.
These snippets are what the network-validation BMP templates emit (templates/module/bmp/).
FRR
BMP is a bgpd module. /etc/frr/daemons must load it; the last assignment of bgpd_options wins:
bgpd_options=" -A 127.0.0.1 -M bmp"
The station sits in the default BGP instance (the data-plane RIB) and sources the TCP session from eth0:
router bgp 65001
bmp targets netom
bmp connect 192.0.2.10 port 11019 min-retry 5000 max-retry 60000 source-interface eth0 vrf mgmt
bmp monitor ipv4 unicast pre-policy
bmp monitor ipv6 unicast pre-policy
bmp monitor <af> unicast pre-policy is emitted for each of IPv4 and IPv6 that the node runs. That line covers every BGP neighbor. FRR has no per-peer BMP stanza; a subset of sessions is not selectable.
vrf mgmt on bmp connect selects the management routing table for the session. That keyword is from jbemmel/frr feature/bmp-transport-vrf, built as xform/frr:latest. Stock FRR images omit it; eth0 still has to reach the collector.
BIRD
The BMP protocol itself lives in VRF mgmt and is sourced from the management address. Putting protocol bmp in that VRF needs jbemmel/bird feature/bmp-management-vrf, image xform/bird-bmp-mgmt-vrf:latest (the default BIRD image version).
protocol bmp bmp_netom {
vrf "mgmt";
system name "r1";
local address 192.168.143.101;
station address ip 192.0.2.10 port 11019;
monitoring rib in pre_policy;
monitoring rib in post_policy;
}
local address is the IPv4 address on eth0 without the prefix length.
protocol bmp watches every BGP protocol. The per-peer stanza is on that protocol's channel: BIRD drops import routes unless the channel keeps an import table, and pre-policy BMP reads that table. Every BGP channel therefore needs both lines when BMP is on:
ipv4 {
import all;
import table on;
…
};
Same for ipv6.
Arista EOS
Checked on EOS 4.36.2F. The port belongs on connection mode active, and the source is update-source. A station with no export-policy reports peer state and zero routes.
router bgp 65001
bgp monitoring
monitoring station netom
connection address 192.0.2.10
connection mode active port 11019
update-source Management0
export-policy received routes pre-policy
export-policy bgp rib bestpaths
| Statement |
What it sends |
export-policy received routes pre-policy |
Adj-RIB-In, every BGP neighbor |
export-policy bgp rib bestpaths |
Loc-RIB (locally originated prefixes) |
There is no working per-peer stanza on 4.36.2F. neighbor <peer> bmp monitor (and the same line on a peer group) is rejected, so the template does not emit it. The station export-policy is what turns route monitoring on for the peers.
These forms are also rejected on 4.36.2F, so the station never dials or never exports routes:
connection address … port …
local interface
route monitoring loc-rib
BMP monitoring: FRR, BIRD, and Arista EOS
Speakers dial the collector in active mode (default TCP 11019). Keep the BMP session on the management network so it does not follow the data-plane RIB.
On the Linux images (FRR and BIRD),
eth0is moved into VRFmgmt(table 42) at boot. EOS usesManagement0.These snippets are what the network-validation BMP templates emit (
templates/module/bmp/).FRR
BMP is a
bgpdmodule./etc/frr/daemonsmust load it; the last assignment ofbgpd_optionswins:The station sits in the default BGP instance (the data-plane RIB) and sources the TCP session from
eth0:bmp monitor <af> unicast pre-policyis emitted for each of IPv4 and IPv6 that the node runs. That line covers every BGP neighbor. FRR has no per-peer BMP stanza; a subset of sessions is not selectable.vrf mgmtonbmp connectselects the management routing table for the session. That keyword is from jbemmel/frrfeature/bmp-transport-vrf, built asxform/frr:latest. Stock FRR images omit it;eth0still has to reach the collector.BIRD
The BMP protocol itself lives in VRF
mgmtand is sourced from the management address. Puttingprotocol bmpin that VRF needs jbemmel/birdfeature/bmp-management-vrf, imagexform/bird-bmp-mgmt-vrf:latest(the default BIRD image version).local addressis the IPv4 address oneth0without the prefix length.protocol bmpwatches every BGP protocol. The per-peer stanza is on that protocol's channel: BIRD drops import routes unless the channel keeps an import table, and pre-policy BMP reads that table. Every BGP channel therefore needs both lines when BMP is on:Same for
ipv6.Arista EOS
Checked on EOS 4.36.2F. The port belongs on
connection mode active, and the source isupdate-source. A station with noexport-policyreports peer state and zero routes.export-policy received routes pre-policyexport-policy bgp rib bestpathsThere is no working per-peer stanza on 4.36.2F.
neighbor <peer> bmp monitor(and the same line on a peer group) is rejected, so the template does not emit it. The stationexport-policyis what turns route monitoring on for the peers.These forms are also rejected on 4.36.2F, so the station never dials or never exports routes:
connection address … port …local interfaceroute monitoring loc-rib