Skip to content

Config notes for FRR, BIRD and EOS #9

Description

@jbemmel

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions