The ND Redirect message is used to inform a host of a better first-hop node on the way to the intended destination node. You can think of it as “you can get there through me, but there is a better route going to this router”
The Redirect message can also be used to inform a host that the destination is in fact a neighbor (in its home subnet). You can think of this as saying “you don’t need to send this to me, the destination is right there in your own subnet – just deliver it directly”. This is done by setting the Target Address equal to the packet Destination Address. Due to things such as multiple /64 prefixes in a single physical subnet, this may not be as obvious as it sounds. The gateway router has a better view of the whole network than an internal node does, so it can more easily tell that a destination is actually in the home subnet. If a host gets this feedback, it should try normal on-link delivery using Ethernet (or whatever).
The syntax looks complicated because there are two 128 bit addresses:
Fields in the IPv6 Packet Header:
The Source Address field is set to the link-local address of the sending interface.
The Destination Address field is set to the source address from the packet that needs to be redirected. This should be the original sender of the packet.
The Hop Limit field is set to 255.
Fields in the RA message:
The Type field (8 bits) contains 137 for Redirect.
The Code field (8 bits) must contain zero.
The Checksum field (16 bits) contains a standard IP checksum.
The Reserved field (32 bits) is unused and must be set to zero.
The Target Address (128 bits) is the IPv6 address that is the better next hop (preferred router). When the destination is a neighbor of the sender (“it’s in your home subnet!”) then this field should contain the same value as the Destination Address below.
The Destination Address (128 bits) is the destination IPv6 address of the packet which is being redirected.
The Options field (starting in byte 40, after the Destination Address) can contain the following:
Up to one instance of Target Link_Layer Address option – the Link Layer Address of the Target node. It should be included if known. On NBMA (Non-Broadcast Multiple Access) links, this option must be included.
Up to one instance of Redirected Header option – as much as possible of the IP packet that must be redirected, without making the entire packet exceed 1280 bytes.