Skip to content
Thomas Mangin edited this page Apr 8, 2026 · 2 revisions

Pre-Alpha. This page describes behavior that may change.

Route loop detection ingress filter per RFC 4271 Section 9 and RFC 4456 Section 8. Silently discards incoming UPDATE messages that indicate a routing loop.

Category

Core.

Configuration

Loaded automatically. No configuration is needed. The filter is registered at the protocol stage and runs on every received UPDATE.

Behaviour

The filter walks the path attributes of each incoming UPDATE once and performs three checks:

  1. AS loop (all sessions, RFC 4271 S9): if the local ASN appears anywhere in the AS_PATH attribute (in AS_SEQUENCE or AS_SET segments), the route is rejected.
  2. Originator-ID loop (iBGP only, RFC 4456 S8): if the ORIGINATOR_ID attribute matches the local Router ID, the route is rejected.
  3. Cluster-list loop (iBGP only, RFC 4456 S8): if the local Router ID appears in the CLUSTER_LIST attribute, the route is rejected.

The filter operates directly on the wire-format UPDATE payload with zero-copy attribute iteration. Rejected routes are logged at debug level and silently dropped before reaching the decision process.

Interactions

  • Runs as a protocol-stage ingress filter inside the BGP reactor. It is part of the filter chain that every received UPDATE passes through before route selection.
  • No dependencies on other plugins. The filter is self-contained and stateless.
  • Works with 2-byte and 4-byte ASN encodings depending on the peer's capability negotiation.

Source

main/internal/component/bgp/reactor/filter/

See also

Home

About

First Steps

Configuration

Operation

Interfaces

Plugins

Plugin Development

Chaos Testing

Blueprints

Development

Reference

Clone this wiki locally