Tunneling IPv6 Dynamic Routing Protocols over IPv4
In this short article, we will explore the options we have for running dynamic routing protocols in IPv6-over-IPv4 tunnels. If you’d like to skip to the results, just scroll to the very bottom of the page.
We will use the following topology, with one tunnel interface per tunneling method:

Tunnel #
Mode
100
GRE
200
Manual 6in4
300
6to4
400
6RD
R1 tunnel configuration:
R3 tunnel configuration:
Ping verifcation to make sure all tunnels are reachable:
Testing
Tunneling OSPFv3 over IPv4
First we’ll try to establish an OSPF adjacency on all tunnels:
OSPF is only established on tun100 and tun200. These are our two point-to-point tunnels, for which a tunnel destination is explicitly specified. Therefore broadcast/multicast traffic is tunneled directly to the destination. 6to4 and 6rd have no destination specified - the IPv4 tunnel endpoint destinatinon is dynamically generated based on the IPv6 destination.
Tunneling ISIS over IPv4
Next we’ll try to run ISIS over the tunnel interfaces.
An ISIS adjacency only forms on tun100, which is our GRE tunnel. Why is that?
This is because ISIS discovery frames do not use IPv6. GRE is able to encapsulate any protocol, but 6in4 can only encapsulation IPv6 in IPv4. In the pcap below, you can see the protocol type is OSI in the GRE header:

The manual 6in4 tunnel cannot encapsulate non-IPv6 traffic.
Tunneling BGP IPv6 Unicast over IPv4
Finally we’ll run BGP for IPv6 over the tunnels, creating one peer per tunnel:
All four BGP sessions come up, because the BGP session uses a unicast TCP connection, not multicast discovery.
Summary
GRE
6in4 (Manual)
6to4
6rd
OSPF/EIGRP/RIP (Any dynamic routing protocol that uses IP)
✔️
✔️
✖️
✖️
ISIS
✔️
✖️
✖️
✖️
BGP
✔️
✔️
✔️
✔️
Last updated