> ## Documentation Index
> Fetch the complete documentation index at: https://docs.siderolabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

> BGPInstanceConfig configures a native BGP routing instance on the host.

# BGPInstanceConfig

```yaml theme={null}
apiVersion: v1alpha1
kind: BGPInstanceConfig
name: fabric # Name of the BGP routing instance.
localASN: 65001 # Local autonomous system number for the BGP instance.
# Names or aliases of the links whose addresses are originated into BGP as host routes (/32, /128).
advertise:
    - dummy0
multipath: true # Enable ECMP (multipath) for routes learned from multiple neighbors. Defaults to false.
# Selected routes to import from other BGP instances. Imports are one-way: matching best paths
importRoutes:
    - bgpInstance: workload # Name of the source BGP instance.
      # CIDR selectors. A learned route matches when it is contained by one of these prefixes.
      prefixes:
        - 198.51.100.0/24
# BGP neighbors in this routing instance.
neighbors:
    - link: enp1s0 # Link name or alias for an unnumbered (IPv6 link-local) session. Mutually exclusive with `address`.
      peerASN: 65000 # Expected peer ASN. Zero accepts any ASN advertised by the peer (eBGP "external").
      holdTime: 9s # BGP hold time for this neighbor. Zero uses the implementation default.
      # BFD (Bidirectional Forwarding Detection) settings for this neighbor.
      bfd:
        transmitInterval: 300ms # Desired minimum transmit interval. Zero uses the implementation default.
        receiveInterval: 300ms # Required minimum receive interval. Zero uses the implementation default.
        detectMultiplier: 3 # BFD detection multiplier. Zero uses the implementation default.
    - link: enp2s0 # Link name or alias for an unnumbered (IPv6 link-local) session. Mutually exclusive with `address`.
      peerASN: 65000 # Expected peer ASN. Zero accepts any ASN advertised by the peer (eBGP "external").
      holdTime: 9s # BGP hold time for this neighbor. Zero uses the implementation default.
      # BFD (Bidirectional Forwarding Detection) settings for this neighbor.
      bfd:
        transmitInterval: 300ms # Desired minimum transmit interval. Zero uses the implementation default.
        receiveInterval: 300ms # Required minimum receive interval. Zero uses the implementation default.
        detectMultiplier: 3 # BFD detection multiplier. Zero uses the implementation default.

# # BGP router-id. If not set, it is derived from the first advertised address.
# routerID: 10.0.0.1

# # Preferred source address set on routes installed from BGP (the kernel route `src` / RTA_PREFSRC,
# routeSource: 10.0.0.1
```

<table>
  <thead>
    <tr>
      <th>Field</th>
      <th>Type</th>
      <th>Description</th>
      <th>Value(s)</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>`name`</td>
      <td>string</td>
      <td>Name of the BGP routing instance.</td>

      <td />
    </tr>

    <tr>
      <td>`vrf`</td>
      <td>string</td>
      <td>Linux VRF link used by this routing instance. If unset, the default routing domain is used.</td>

      <td />
    </tr>

    <tr>
      <td>`localASN`</td>
      <td>uint32</td>
      <td>Local autonomous system number for the BGP instance.</td>

      <td />
    </tr>

    <tr>
      <td>`routerID`</td>
      <td>Addr</td>
      <td>BGP router-id. If not set, it is derived from the first advertised address.</td>

      <td />
    </tr>

    <tr>
      <td>`routeSource`</td>
      <td>Addr</td>
      <td>Preferred source address set on routes installed from BGP (the kernel route `src` / RTA\_PREFSRC,<br />equivalent to FRR's `ip protocol bgp route-map SETSRC`). If not set, the kernel selects the source address.</td>

      <td />
    </tr>

    <tr>
      <td>`advertise`</td>
      <td>\[]string</td>
      <td>Names or aliases of the links whose addresses are originated into BGP as host routes (/32, /128).</td>

      <td />
    </tr>

    <tr>
      <td>`multipath`</td>
      <td>bool</td>
      <td>Enable ECMP (multipath) for routes learned from multiple neighbors. Defaults to false.</td>

      <td />
    </tr>

    <tr>
      <td>`maxPaths`</td>
      <td>uint8</td>
      <td>Maximum number of ECMP next-hops to install. Zero uses the implementation default.</td>

      <td />
    </tr>

    <tr>
      <td>`installRoutes`</td>
      <td>bool</td>
      <td>Install routes learned from BGP neighbors into the Linux routing table. Defaults to true.<br />When false, learned routes remain in this instance's BGP RIB and can still be selected by<br />`importRoutes`, but Talos does not install them into the Linux FIB.</td>

      <td />
    </tr>

    <tr>
      <td>`importRoutes`</td>
      <td><a href="#importroutes%5B%5D">BGPImportRoute</a></td>
      <td>Selected routes to import from other BGP instances. Imports are one-way: matching best paths<br />learned from each source instance are preserved and advertised by this instance with its own<br />next hop. Locally originated and previously imported paths are not recursively imported.<br />Selectors in a single target instance must not overlap, giving each imported prefix one source.</td>

      <td />
    </tr>

    <tr>
      <td>`neighbors`</td>
      <td><a href="#neighbors%5B%5D">BGPNeighborConfig</a></td>
      <td>BGP neighbors in this routing instance.</td>

      <td />
    </tr>
  </tbody>
</table>

## importRoutes\[]

BGPImportRoute selects routes learned by another BGP instance for one-way import.

<table>
  <thead>
    <tr>
      <th>Field</th>
      <th>Type</th>
      <th>Description</th>
      <th>Value(s)</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>`bgpInstance`</td>
      <td>string</td>
      <td>Name of the source BGP instance.</td>

      <td />
    </tr>

    <tr>
      <td>`prefixes`</td>
      <td>\[]Prefix</td>
      <td>CIDR selectors. A learned route matches when it is contained by one of these prefixes.</td>

      <td />
    </tr>
  </tbody>
</table>

## neighbors\[]

BGPNeighborConfig configures a concrete BGP neighbor.

<table>
  <thead>
    <tr>
      <th>Field</th>
      <th>Type</th>
      <th>Description</th>
      <th>Value(s)</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>`address`</td>
      <td>Addr</td>
      <td>Neighbor IP address for a numbered session. Mutually exclusive with `link`.</td>

      <td />
    </tr>

    <tr>
      <td>`link`</td>
      <td>string</td>
      <td>Link name or alias for an unnumbered (IPv6 link-local) session. Mutually exclusive with `address`.</td>

      <td />
    </tr>

    <tr>
      <td>`peerASN`</td>
      <td>uint32</td>
      <td>Expected peer ASN. Zero accepts any ASN advertised by the peer (eBGP "external").</td>

      <td />
    </tr>

    <tr>
      <td>`localASN`</td>
      <td>uint32</td>
      <td>Local ASN override for this neighbor. Zero uses the instance local ASN.</td>

      <td />
    </tr>

    <tr>
      <td>`passive`</td>
      <td>bool</td>
      <td>Wait for the neighbor to establish the connection instead of initiating it.</td>

      <td />
    </tr>

    <tr>
      <td>`holdTime`</td>
      <td>Duration</td>
      <td>BGP hold time for this neighbor. Zero uses the implementation default.</td>

      <td />
    </tr>

    <tr>
      <td>`bfd`</td>
      <td><a href="#bfd">BGPBFDConfig</a></td>
      <td>BFD (Bidirectional Forwarding Detection) settings for this neighbor.<br />The presence of this block enables BFD; an empty block uses the implementation defaults.<br />BFD is supported only when the BGP instance uses the default routing domain, not a VRF.</td>

      <td />
    </tr>
  </tbody>
</table>

### bfd

BGPBFDConfig configures BFD for a BGP neighbor.

<table>
  <thead>
    <tr>
      <th>Field</th>
      <th>Type</th>
      <th>Description</th>
      <th>Value(s)</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>`transmitInterval`</td>
      <td>Duration</td>
      <td>Desired minimum transmit interval. Zero uses the implementation default.</td>

      <td />
    </tr>

    <tr>
      <td>`receiveInterval`</td>
      <td>Duration</td>
      <td>Required minimum receive interval. Zero uses the implementation default.</td>

      <td />
    </tr>

    <tr>
      <td>`detectMultiplier`</td>
      <td>uint8</td>
      <td>BFD detection multiplier. Zero uses the implementation default.</td>

      <td />
    </tr>
  </tbody>
</table>
