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