V6Direct · Pathvector

Example Pathvector configuration for V6Direct

This page shows a minimal Pathvector configuration to connect your ASN to V6Direct (AS213413) over an IPv6 tunnel and announce your prefixes using BIRD2 as the data plane.

Assumptions

  • You already have a working tunnel to a V6Direct PoP.
  • Your tunnel link /64: 2001:db8:100::/64 (you: 2001:db8:100::1, V6Direct: 2001:db8:100::2).
  • Your ASN: 65001, V6Direct ASN: 213413.[web:2]
  • Your routed prefix: 2001:db8:1234::/48.

Minimal pathvector.yml

# /etc/pathvector.yml
asn: 65001
router-id: 192.168.0.100
source4: 192.168.0.100
source6: 2001:db8:100::1

kernel:
  learn: true
  export: false

default-route: false
keep-filtered: true

prefixes:
  - 2001:db8:1234::/48

# ============================================================================
# TEMPLATES
# ============================================================================

templates:

  upstream:
    description: "Primary upstream"
    import: true
    export: true
    local-pref: 200

    filter-rpki: true
    filter-bogon-routes: true
    filter-bogon-asns: true
    filter-prefix-length: true
    filter-transit-asns: false

    announce-originated: true
    announce:
      - "65001:0:13"
      - "65001:0:14"

    add-on-import:
      - "65001:0:11"

    add-on-export:
      - "65001:0:10"


  peering:
    description: "IXP / Private Peering"
    import: true
    export: true
    local-pref: 150

    filter-rpki: true
    filter-bogon-routes: true
    filter-bogon-asns: true
    filter-prefix-length: true
    filter-transit-asns: true

    announce-originated: true
    announce:
      - "65001:0:14"

    add-on-import:
      - "65001:0:13"

    add-on-export:
      - "65001:0:10"


  downstream-fulltable:
    description: "Customer – Full Table"
    import: true
    export: true
    local-pref: 250

    filter-rpki: true
    filter-bogon-routes: true
    filter-bogon-asns: true
    filter-prefix-length: true
    filter-transit-asns: true

    announce-all: true
    announce-originated: true
    announce-default: false


    add-on-import:
      - "65001:0:14"


  downstream-default:
    description: "Customer – Default Only"
    import: true
    export: true
    local-pref: 250

    filter-rpki: true
    filter-bogon-routes: true
    filter-bogon-asns: true
    filter-transit-asns: true

    announce-default: true
    announce-originated: true

    add-on-import:
      - "65001:0:14"

# ============================================================================
# PEERS
# ============================================================================

peers:
  V6D_UP:
    asn: 213413
    template: upstream
    listen6: 2001:db8:100::1
    import: true
    export: true
    import-limit6: 9999999
    neighbors:
      - 2001:db8:100::2

This keeps policies simple: import everything from V6Direct and export all your prefixes tagged in prefixes.

Generate and load BIRD config

# Generate BIRD config from pathvector.yml
sudo pathvector generate

# Check generated config
ls /etc/bird/

# Check if it's running
sudo pathvector s p

verify that your BGP session to V6Direct is established and your prefix is announced.

Optional: add RPKI and IRR

Pathvector can use RPKI and IRR for route filtering. You can point it to an RTR server such as Cloudflare’s public RPKI server and a bgpq4 IRR client for stricter routing policies.