Skip to content

BFD Monitoring

Observium polls Bidirectional Forwarding Detection (BFD) sessions as BFD Session entities. BFD sessions can be graphed, grouped, placed into scheduled maintenance and associated with alert checkers in the same way as other entity types.

BFD collection is performed by the poller. A separate BFD discovery process is not required.

Web interface

The global Routing > BFD page provides:

  • Overview for permitted-device health, session states and operating-system distribution.
  • Issues for missing sessions, non-up sessions, active fault diagnostics and sessions over the flap threshold.
  • Sessions for filtering and sorting the currently collected sessions.

The device BFD tab provides the same session and graph views scoped to one device. Follow the Session # link in a session row or issue list to open the engineering detail view. It shows all normalized fields, collection state, timers, counters, lifecycle data, existing state/interval/packet graphs and any vendor-specific attributes retained by the poller. The source MIB links directly to its object reference on mibs.observium.org.

An explicit detail link can still display a known session which is missing from the current poll; ordinary session lists show current sessions only. For optional booleans and counters, Unsupported means the source MIB did not provide the field, while No or zero is a value actually reported by the device. A diagnostic shown as Historical belongs to an earlier state change and is not itself an active fault.

Alerting

For an active session which is expected to be up, use an ALL checker:

Text Only
1
2
3
bfd_poll_enabled equals 1
bfd_admin_status equals enabled
bfd_oper_status notequals up

bfd_poll_enabled means the session was present in the current SNMP poll. When a previously known session is not returned, Observium evaluates it with bfd_poll_enabled = 0 and does not reuse its old operational metrics. A separate collection/missing-session checker can therefore use:

Text Only
1
bfd_poll_enabled equals 0

An alert delay of one or more polls is recommended for the missing-session checker if a single incomplete SNMP response should be tolerated.

The operational values are up, down, init, adminDown and, on older Alcatel implementations, failing. Administrative values are enabled, disabled, adminDown and down.

bfd_diagnostic is the reason for the current or most recent state change on most implementations. A non-noDiagnostic value can remain after a session recovers, so it should normally be combined with a non-up operational state rather than alerted on by itself.

bfd_transition_count counts transitions inside the configured BFD debounce window and returns to zero when the window expires. bfd_transition_delta and bfd_flap_event are single-poll signals.

Metrics which the selected MIB does not provide are omitted from alert evaluation. Use the bfd_mib association attribute when an alert depends on a vendor-specific metric.

Vendor data

Source MIB State and admin status Diagnostics and liveness Intervals and counters Caveats
BFD-STD-MIB Uses bfdSessOperStatus for actual operational status and the per-session administrative status. Falls back to bfdSessState only when the operational object is absent. Diagnostic, remote-heard and echo-desired fields are available. Desired TX, required RX and negotiated TX are available. The standard table does not provide negotiated RX or packet counters. Source and destination addresses use the standard InetAddress objects.
EXTREME-IETF-BFD-MIB Uses the per-session Extreme administrative and protocol states; the global disabled state takes precedence. Diagnostic and remote-heard fields are available. Echo state is derived from the operating mode. Desired TX, required RX, negotiated TX, control-packet counters and session-up count are collected. The MIB provides no negotiated RX or session-down count. Multipoint session types are represented by the canonical multiHop type while their native type remains available as vendor data.
CISCO-IETF-BFD-MIB Uses the Cisco session state. Per-session admin is not exposed; Observium uses the global disabled state when set and otherwise reports enabled for an existing session. Current session diagnostic, remote-heard and echo-desired fields are available. Desired intervals and packet/up counters are collected from the session and performance tables. Some IOS XE agents report a local address in the peer-address object, so Observium suppresses it as a peer when it resolves locally. Some agents also report remote-heard as false while the session is up; do not alert on that metric alone. No down/change counter is defined by this MIB.
HUAWEI-BFD-MIB Uses the Huawei session state. Admin status is global rather than per-session. Diagnostic code 9 is normalized as a peer administrative-down indication. Echo state is derived from the operating mode. Remote-heard is not exposed. Actual TX/RX values are converted from milliseconds and exposed as desired TX/required RX. Packet and session-down counters come from the performance table. Hop type is inferred from interface binding and may be incomplete on platform-specific session types.
JNX-BFD-STD-MIB Uses the Juniper session state. Admin status is global rather than per-session. Diagnostic, remote-heard and echo-desired fields are available. Desired intervals and packet/up counters are available when the performance table is implemented. The session address may be local or remote; Observium checks local inventory before classifying it. Hop type is inferred from the BFD UDP destination port.
JUNIPER-BFD-MIB Extension only. No independent session state. Adds interface and Junos-specific threshold/protocol metadata to JNX-BFD-STD-MIB sessions. It is not a standalone session source.
ALCATEL-IND1-BFD-MIB Uses the Alcatel session state, including the legacy failing state. Admin status is global rather than per-session. Diagnostic, remote-heard and echo-desired fields are available. Negotiated intervals are converted from milliseconds; packet and session-up counters are collected from the performance table. Hop type is inferred from the BFD UDP destination port. Demand/echo operating mode is not treated as hop type.

Unknown or unmapped operational values are not converted to down. The affected row is skipped for that poll and becomes eligible for the bfd_poll_enabled = 0 checker.

Useful association attributes

The most useful BFD association attributes are:

  • bfd_mib
  • bfd_index and bfd_uid
  • bfd_session_type
  • bfd_local_address and bfd_remote_address
  • bfd_local_port
  • bfd_vrf_name and vrf_id
  • peer_device_id and peer_port_id

The complete metric and attribute list is in the Entity Type Reference.