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'