The following list describes the IPv6 packet header format fields in greater detail.
Figure 12-14 shows the layout for IPv6 packets.
The Priority Classification Field
As mentioned earlier, the Priority Classification field is a 4-bit field that holds the value of the datagram, which ultimately determines the transmission order of that datagram. What is briefly explained here is the intricate workings of this tiny 4-bit field. The field divided the datagram into one of two classifications: Congestion Controlled or Non-Congestion Controlled. The latter are always routed as a priority over the former. If the datagram is Congestion Controlled it is sensitive to congestion on the network bandwidth. If congestion occurs while the datagram is on the network, it can be slowed down and held in temporary caches until the problem is resolved and the bandwidth clears. Furthermore, each of the classifications is broken down even further into sub-categories. The subcategories of non-congestion controlled datagrams have not been accepted as standard yet; however, the powers that be have accepted the sub categories classification of the congestion controlled datagrams as defined in Table 12-4.
The Flow Label field is new to the IPv6 header. It can be used to help identify the sender and destination of many IP datagrams. It does this by establishing a specified value of the flow label for all datagrams in the transmission. The routers in the path to the server assemble entries in their routing caches, indicating which way to route the datagrams with an identical flow label.
There are some concerns you might have, such as large caches and repeated values. These potential problems have been fixed with IPv6. To prevent caches from growing too large or holding old information, IPv6 stipulates the cache maintained in a routing device cannot be kept for more than six seconds. If a new datagram with the same flow label is not received within that period, the data in the cache is dumped. To prevent repeated values from the sending machine, the sender must wait six seconds before using the same flow label value for another destination. IPv6 also allows flow labels to be used to reserve a route for time-critical applications. This is useful when using a real-time application that has to send several datagrams along the same route as it needs as rapid a transmission of those datagrams as possible. It establishes the route by sending datagrams ahead of time, all the while being careful not to exceed the time-out on the interim routers. This allows for the constant flow of data from sender to receiver without having to wait while the sending machine contacts the router every time it sends a packet.
IPv6 Header Extensions
IPv6 has the ability to allow additional headers to be tacked onto the original IP header. This might be needed when a simple routing to the destination is not possible, or when special services, such as authentication, are required for the datagram. With this in mind, IPv6 defines many types of Header extensions. These extensions are identified by a number placed in the next header field of the original IP header. Many extensions can be appended onto one IP header, with each extensions next header field indicating the next extensions.
A routing header extension can be added to the IP header when the transmitting machine wants to control the routing of a particular datagram, instead of leaving it to the whim of the routers along the path. This extension can also be used to give route instructions to the destination machine. The routing extension includes fields for each IP address in the desired route.