ISATAP (Intra-Site Automatic Tunnel Addressing Protocol) is an IPv6 transition mechanism meant to transmit IPv6 packets between dual-stack nodes on top of an IPv4 network.
Unlike 6over4 (an older similar protocol using IPv4 multicast), ISATAP uses IPv4 as a virtual nonbroadcast multiple-access network (NBMA) data link layer, so that it does not require the underlying IPv4 network infrastructure to support multicast.
ISATAP defines a method for generating a link-local IPv6 address from an IPv4 address, and a mechanism to perform on top of IPv4.
Any host wishing to participate in ISATAP over a given IPv4 network can set up a virtual IPv6 network interface. The link-local address is determined by prepending fe80::0200:5efe:…
for globally unique addresses, or fe80::0000:5efe:…
for private addresses, in front of the 32 bits of the host's IPv4 address.
For example, the global IPv4 address 192.0.2.143
would use fe80::0200:5efe:192.0.2.143
as its link-local IPv6 address. The shortened notation would be fe80::200:5efe:c000:28f
(where c0 00 02 8f
is 192.0.2.143
in hexadecimal notation).
Because ISATAP uses IPv4 as a non multicast/broadcast-capable (unlike Ethernet) link layer, ICMPv6 Neighbor Discovery cannot be done in the usual manner. That is why ISATAP is a bit more complex than 6over4.
From the viewpoint of the IPv6 packet, the link layer is the IPv4 packet. As the link layer address, the IPv4 address, is contained in the lower-order 32-bits of the IPv6 address, Neighbor Discovery is not really needed. However, the lack of multicast support prevents the use of automatic Router Discovery. Therefore, ISATAP hosts must be configured with a potential routers list (PRL). Each of these routers is infrequently probed by an ICMPv6 Router Discovery message, to determine which of them are functioning, and to perform unicast-only autoconfiguration (typically, obtain the list of on-link IPv6 prefixes that can be used).