IPv6 datagram is still forwarded according to the longest compliance of destination address with an entry in the routing table. Routing header allows entering into this process and determines nodes through which the IPv6 datagram should be forwarded.
Currently, IPv6 provides two types of Routing header. Routing Type field is used to distinguish the types of Routing header.
This type of Routing header allows determining the nodes which IPv6 datagram has to pass in the given order. It also serves as a record of which nodes the IPv6 datagram has already passed. Type 0 Routing header has the following format:
The Type 0 Routing header contains a list of all nodes, which datagram has to pass. The sender takes the first address from the list and places it in the Destination Address field of IPv6 header and destination address of the target node is placed at the end of the list before the datagram is sent. When the datagram arrives at the destination address (a router in the path), the Segments Left field of the Routing header is decremented by 1. This field indicates the next node address in order from the end of the list. The router places this address in the Destination Address field of IPv6 header before the datagram is sent. This process is repeated at each router that is listed in the list until the datagram reaches its target node. This fact indicates zero value in the Segments Left field of the Routing header.
The Type 0 Routing header allows determining the exact path of the datagram. It also allows verifying the functionality of this connection. This is an advantage. So this type of Routing header was introduced to test the reachability between any two nodes.
The main disadvantage of this type of Routing header is the possibility of overloading the transmission path. It allows concatenating any number of Routing headers in the IPv6 datagram, which causes that the datagram will be in the network for very long time. This fact can lead to creation of data flows with a huge volume. Another disadvantage is that a datagram can pass through the NAT (Network Address Translation) and firewall. In this case, the private address is placed at the end of the list of Routing header and public address of the router that performs the translation addresses is placed at the list as intermediate.
The above problems have led to prohibition of the use the Type 0 Routing header and definition RFC 5095 that describes the ways to deal with such forwarded datagrams.
This type of Routing header was specially defined for mobility and uses the same mechanisms as the type 0. However, the type 2 reduces the number of concatenated Routing headers only to one header with a single address and thereby reduces its abuse.