On this page

Automatic shutdown: Route limit exceeded

If a BGP session goes down and birdc show protocols reports

Automatic shutdown: Route limit exceeded

the peer sent more routes than the session's configured route limit allows. This is most common with transit providers and large networks that send a full table (for example, Hurricane Electric's IPv6 table), which can be larger than Pathvector's default limits.

Default limits

Every peer gets an import limit, which caps how many prefixes BIRD will accept from the peer after filtering:

Option Default
import-limit4 1000000
import-limit6 300000

Receive limits (receive-limit4/receive-limit6) count routes before filtering and require the global keep-filtered option. Export limits (export-limit4/export-limit6) cap the number of routes announced to the peer. Receive and export limits are not set by default.

If auto-import-limits is enabled for a peer, import-limit4 and import-limit6 are replaced with the info_prefixes4 and info_prefixes6 values from the peer's PeeringDB record. These values are maintained by the peer and are often set for what the network originates, not for a full table. Don't use auto-import-limits on transit sessions; set explicit limits instead.

See Route Limits for more detail.

Violation actions

import-limit-violation, receive-limit-violation, and export-limit-violation control what BIRD does when a limit is exceeded. The default is disable.

Action Behavior
warn Log a warning and keep the session up
block Keep the session up but ignore any further routes beyond the limit
restart Restart the session (it will be shut down again if the peer still sends too many routes)
disable Shut down the session and keep it down until it's manually re-enabled (Automatic shutdown)

Recovering a session

With the disable action, the session stays down after the limit trips, even after you raise the limit. Once you've increased the limit and run pathvector generate, bring the session back up with birdc. Pathvector's protocol names are the peer name in uppercase with non-alphanumeric characters removed, followed by _AS<asn>_v4 or _AS<asn>_v6:

birdc show protocols                 # find the protocol name
birdc enable HURRICANE_AS6939_v6     # re-enable a disabled session
birdc restart HURRICANE_AS6939_v6    # or restart it

Example: full-table transit peer

peers:
  Hurricane:
    asn: 6939
    neighbors:
      - 203.0.113.1
      - 2001:db8::1
    local-pref: 80
    # Full table sizes grow over time, leave plenty of headroom
    import-limit4: 1500000
    import-limit6: 500000
    # Don't take the session down if the limit is reached; log and stop accepting new routes instead
    import-limit-violation: block
    # Use explicit limits, PeeringDB values describe originated routes and are too small for a full table
    auto-import-limits: false
    # Transit providers send routes from the whole DFZ
    filter-irr: false
    filter-transit-asns: false