Navigation

  • index
  • FRR latest documentation »
  • BGP Link-State

BGP Link-State¶

BGP Link-State (BGP-LS) is a mechanism to distribute network topology information via BGP. It enables BGP to carry link-state information learned from IGP protocols (IS-IS, OSPF) to other BGP speakers. This is useful for applications such as Software-Defined Networking (SDN) controllers, Traffic Engineering, and network visualization tools that need a complete view of the network topology.

BGP-LS is defined in RFC 9552.

Overview¶

BGP-LS introduces a new BGP AFI/SAFI combination (AFI 16388, SAFI 71) to carry link-state Network Layer Reachability Information (NLRI). The link-state NLRI describes nodes, links, and prefixes in the network topology.

Three types of BGP-LS NLRI are defined:

  • Node NLRI - Describes routers/nodes in the network

  • Link NLRI - Describes links between nodes

  • Prefix NLRI - Describes IPv4/IPv6 prefixes advertised by nodes

BGP-LS carries topology information in a new BGP path attribute called the BGP-LS Attribute (type 29), which contains various TLVs describing node properties, link metrics, bandwidth, prefix attributes, and other topology characteristics.

Configuration¶

BGP-LS Producer Configuration¶

To enable BGP-LS and originate topology information from the local IGP, configure the link-state address family:

router bgp 65001
 neighbor 192.0.2.1 remote-as 65002
 !
 address-family link-state
  neighbor 192.0.2.1 activate
 exit-address-family

When the link-state address family is activated on a neighbor, BGP will:

  1. Negotiate BGP-LS capability during session establishment

  2. Receive IGP topology updates from Zebra (IS-IS and OSPF)

  3. Convert IGP topology to BGP-LS NLRI (Node, Link, Prefix)

  4. Advertise BGP-LS routes to the activated neighbor

BGP-LS Consumer Configuration¶

To receive and process BGP-LS information from peers without originating routes:

router bgp 65002
 neighbor 192.0.2.2 remote-as 65001
 !
 address-family link-state
  neighbor 192.0.2.2 activate
 exit-address-family

BGP-only Fabric Topology Distribution¶

In a BGP-only fabric, topology is derived from BGP sessions and BGP routing state rather than from IGP protocols.

This behavior aligns with the IETF document draft-ietf-idr-bgp-ls-bgp-only-fabric.

FRR uses BGP-LS to advertise Node, Link, and Prefix topology for the fabric.

Use the following command under the link-state address family to enable export of BGP-only fabric topology:

distribute bgp-fabric-link-state [instance-id WORD]¶

Enable BGP-LS export for BGP-only fabrics. When enabled, FRR originates BGP-LS Node, Link, and Prefix NLRIs from BGP adjacency and BGP RIB data.

This command is configured under address-family link-state link-state.

instance-id is optional and sets the BGP-LS identifier in originated NLRIs. If omitted, FRR uses 0.

Example for a BGP-only fabric speaker with default instance-id:

router bgp 65001
 neighbor 10.255.1.2 remote-as 65000
 !
 address-family link-state link-state
  distribute bgp-fabric-link-state
  neighbor 10.255.1.2 activate
 exit-address-family

Example for a BGP-only fabric speaker with explicit instance-id:

router bgp 65001
 neighbor 10.255.1.2 remote-as 65000
 !
 address-family link-state link-state
  distribute bgp-fabric-link-state instance-id 100
  neighbor 10.255.1.2 activate
 exit-address-family

Per-neighbor Link Identifier Configuration¶

The following commands let you override local and remote link identifiers carried in BGP-LS Link NLRIs for a specific BGP neighbor. These commands are configured under router bgp and accept 32-bit values.

neighbor <A.B.C.D|X:X::X:X|WORD> local-link-id (1-4294967295)¶

Set the local link identifier in the neighbor's Link NLRI. If unset, FRR uses the interface kernel ifindex (a unique per-interface identifier) as the fallback value.

neighbor <A.B.C.D|X:X::X:X|WORD> remote-link-id (1-4294967295)¶

Set the remote link identifier in the neighbor's Link NLRI. If unset, FRR uses 0 as fallback.

Displaying BGP-LS Information¶

Show All BGP-LS NLRIs¶

show bgp link-state link-state [json]¶

Display all BGP-LS routes in the link-state RIB. Shows Node, Link, and Prefix NLRI with their associated attributes.

Example output:

router# show bgp link-state link-state
BGP table version is 15, local router ID is 192.0.2.1
Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
              i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

   Network          Next Hop            Metric LocPrf Weight Path
*> [1][0.0.0.0][6][0][0][0300.0000.0001]
                    0.0.0.0(vrf1)            0         32768 ?
*> [2][0.0.0.0][6][0][0][0300.0000.0001][0300.0000.0002][192.0.2.1][192.0.2.2]
                    0.0.0.0(vrf1)            0         32768 ?

With the json option, output is displayed in JSON format suitable for programmatic processing.

Show Specific BGP-LS NLRI¶

show bgp link-state link-state NLRI [json]¶

Display detailed information about a specific BGP-LS NLRI identified by its NLRI string. The NLRI string format is:

  • Node NLRI: [1][IGP-ID][Protocol][Instance][AS][Area/Domain][IGP-Router-ID]

  • Link NLRI: [2][IGP-ID][Protocol][Instance][AS][Area][Local-Router-ID][Remote-Router-ID][Local-IP][Remote-IP]

  • Prefix NLRI: [3|4][IGP-ID][Protocol][Instance][AS][Area][Router-ID][Prefix]

Example:

router# show bgp link-state link-state [1][0.0.0.0][6][0][0][0300.0000.0001]
BGP routing table entry for [1][0.0.0.0][6][0][0][0300.0000.0001]
Paths: (1 available, best #1, table link-state)
  Not advertised to any peer
  Local from 0.0.0.0 (192.0.2.1)
    Origin incomplete, metric 0, localpref 100, valid, sourced, local, best (First path received)
    Last update: Thu Jan 23 10:15:42 2026

    Node Descriptors:
      Protocol-ID: IS-IS Level 2
      AS Number: 0
      IGP Router-ID: 0300.0000.0001

    Node Attributes:
      Router-ID: 192.0.2.1
      ISIS Area-ID: 49.0001
      Node Flags: 0x00

Use show bgp [afi] [safi] summary to display BGP session summary including link-state address family statistics.

Debugging¶

debug bgp linkstate¶

Enable debugging for BGP-LS operations including:

  • NLRI encoding/decoding

  • Attribute processing

  • IGP topology updates

  • Route origination and withdrawal

  • TED updates

Configuration Example¶

Complete example with IS-IS IGP and BGP-LS:

! IS-IS configuration
router isis 1
 net 49.0001.0300.0000.0001.00
 is-type level-2-only
 topology ipv6-unicast
!
interface eth0
 ip router isis 1
 isis network point-to-point
!
! BGP configuration with Link-State
router bgp 65001
 bgp router-id 192.0.2.1
 neighbor 192.0.2.100 remote-as 65002
 neighbor 192.0.2.100 description SDN-Controller
 !
 address-family link-state
  neighbor 192.0.2.100 activate
 exit-address-family

In this example:

  • IS-IS is configured to run on the local router

  • BGP session is established with an SDN controller (192.0.2.100)

  • Link-state address family is activated for the controller neighbor

  • BGP-LS will automatically convert IS-IS topology to BGP-LS NLRI and advertise it to the controller

Use Cases¶

BGP-LS is typically used in the following scenarios:

SDN Controllers

SDN controllers use BGP-LS to obtain a complete view of the network topology for path computation, traffic engineering, and network optimization.

PCE (Path Computation Element)

PCE servers use BGP-LS to maintain an up-to-date TED for computing MPLS-TE and SR-TE paths.

Network Monitoring and Visualization

Network management systems use BGP-LS to visualize network topology and monitor link utilization, metrics, and failures.

Multi-Domain TE

BGP-LS enables traffic engineering across multiple IGP domains by sharing topology information between domains via BGP.

Logo

Table of Contents

  • BGP Link-State
    • Overview
    • Configuration
      • BGP-LS Producer Configuration
      • BGP-LS Consumer Configuration
      • BGP-only Fabric Topology Distribution
      • Per-neighbor Link Identifier Configuration
    • Displaying BGP-LS Information
      • Show All BGP-LS NLRIs
      • Show Specific BGP-LS NLRI
    • Debugging
    • Configuration Example
    • Use Cases

This Page

  • Show Source

Quick search

Navigation

  • index
  • FRR latest documentation »
  • BGP Link-State
© Copyright 2026, FRR. Created using Sphinx 5.3.0.