TTR Networks

Intermediate · IPv4 over an IPv6-only core (RFC 8950) · section 7 of 8

Where it fits, and a checklist

✓ Lab-tested 17 October 2026 on VyOS 2026.10.16-0024-rolling, FRR 10.2.1

Where it fits

  • IPv6-only backbones carrying IPv4 between edges, as in this lab. Edge routers that face IPv4-only customers keep IPv4 on those links only.
  • IX route servers that peer with members over IPv6 only and still exchange IPv4 routes. Some IXs have trialled or deployed this.
  • BGP unnumbered in data centres: sessions over link-local addresses only, with IPv4 routes carried with IPv6 next hops. It's the same mechanism without any global addresses on the links.

Checklist

  • Every router needs a manually set BGP router ID if it has no IPv4 address. Keep it unique within your AS.
  • capability extended-nexthop on both ends of every IPv6 session that carries IPv4, and the IPv4 unicast address family enabled on it.
  • Both sides must support RFC 8950. FRR (and so VyOS), BIRD, Junos, IOS XR, SR OS and others do; check before relying on a peer's equipment.
  • Linux-based routers need kernel 5.2 or later to install IPv4 routes with IPv6 gateways.
  • Plan for traceroutes full of 192.0.0.8, and make sure your filters don't drop ICMP sourced from it.
  • Routes marked inaccessible with odd IPv4 next hops mean the capability isn't negotiated. Check show bgp neighbors <peer> for "Extended nexthop: advertised and received".
R1's final configuration (real output)
vyos@R1:~$ show configuration commands | match "interfaces ethernet eth. (address|description)|protocols bgp|host-name"
set interfaces ethernet eth0 address '2001:db8:0:1::1/64'
set interfaces ethernet eth0 description 'TO-C1'
set interfaces ethernet eth1 address '2001:db8:0:2::1/64'
set interfaces ethernet eth1 description 'TO-R2'
set protocols bgp neighbor 2001:db8:0:1::2 address-family ipv4-unicast
set protocols bgp neighbor 2001:db8:0:1::2 capability extended-nexthop
set protocols bgp neighbor 2001:db8:0:1::2 description 'C1'
set protocols bgp neighbor 2001:db8:0:1::2 remote-as '64512'
set protocols bgp neighbor 2001:db8:0:2::2 address-family ipv4-unicast
set protocols bgp neighbor 2001:db8:0:2::2 capability extended-nexthop
set protocols bgp neighbor 2001:db8:0:2::2 description 'R2'
set protocols bgp neighbor 2001:db8:0:2::2 remote-as '64501'
set protocols bgp parameters router-id '0.0.0.1'
set protocols bgp system-as '64500'
set system host-name 'R1'
  • Lines 2–5: Only IPv6 addresses.
  • Lines 7–11: Extended next hop on both sessions.
  • Line 14: The manual router ID.
R2's final configuration (real output)
vyos@R2:~$ show configuration commands | match "interfaces ethernet eth. (address|description)|protocols bgp|host-name"
set interfaces ethernet eth0 address '2001:db8:0:2::2/64'
set interfaces ethernet eth0 description 'TO-R1'
set interfaces ethernet eth1 address '192.0.2.1/30'
set interfaces ethernet eth1 description 'TO-C2'
set protocols bgp neighbor 192.0.2.2 address-family ipv4-unicast
set protocols bgp neighbor 192.0.2.2 description 'C2'
set protocols bgp neighbor 192.0.2.2 remote-as '64502'
set protocols bgp neighbor 2001:db8:0:2::1 address-family ipv4-unicast
set protocols bgp neighbor 2001:db8:0:2::1 capability extended-nexthop
set protocols bgp neighbor 2001:db8:0:2::1 description 'R1'
set protocols bgp neighbor 2001:db8:0:2::1 remote-as '64500'
set protocols bgp system-as '64501'
set system host-name 'R2'
  • Line 4: IPv4 only towards C2.
  • Line 10: Extended next hop towards R1.