In IPv6, extension headers are used to encode optional Internet-layer information.
Extension headers are placed between the IPv6 header and the upper layer header in a packet.
Extension headers are chained together using the next header field in the IPv6 header. The next header field indicates to the router which extension header to expect next. If there are no more extension headers, the next header field indicates the upper layer header (TCP header, User Datagram Protocol [UDP] header, ICMPv6 header, an encapsulated IP packet, or other items).