NAME

  EX_HdrProcessingOrder_HFD_10 - Extension Header Processing Order 
                                 (Fragment Header precedes Destination Options Header, 
                                 Error from Destination Options)

TARGET

  Host and Router

SYNOPSIS

INITIALIZATION

  None

TEST PROCEDURE

Verify that a node properly processes the headers of an IPv6 packet in the correct order.

   TN                          NUT
    |                           |
    |-------------------------->|
    |   Test Packet             |
    |                           |
    |                           |
    |<--------------------------|
    |   ICMP Error              |
    |                           |
    v                           v

  1. TN transmits Test Packet, an Echo Request that has a Hop-by-Hop Options header, 
     Fragment header, and Destination Options header in that order.
     The IPv6 header has a Payload Length that is not a multiple of 8 octets, 
     and the Fragment header does not have the M-bit set.
     The Destination Options header has an unknown Option Type 135.
  2. Observe the packets transmitted by the NUT.

  Test Packet Data is:

        IPv6 Header
            Version            = 6
            Traffic Class      = 0
            FlowLabel          = 0
            PayloadLength      = 37
            NextHeader         = 0 (Hop-by-Hop Options Header)
            SourceAddress      = TN Link Local Address
            DestinationAddress = NUT Link Local Address

        Hop-by-Hop Options Header
            NextHeader         = 44 (Fragment Header)
            HeaderExtLength    = 0
            OptionType         = 1 (PadN)
            OptDataLength      = 4
            pad                = {0, 0, 0, 0}

        Fragment Header
            NextHeader         = 60 (Destination Options Header)
            FragmentOffset     = 0
            MFlag              = 0
            FragmentID         = 104

        Destination Options Header
            NextHeader         = 58 (ICMPv6)
            HeaderExtLength    = 0
            OptionType         = 0x87 (unknown, msb:10)
            OptDataLength      = 4 (for 8 octets alignment)
            data               = {0, 0, 0, 0}

        ICMP Echo Request
            Type           = 128 (Echo Request)
            Code           = 0
            Checksum       = (auto)
            Identifier     = 0xffff
            SequenceNumber = 1
            PayloadData    = {1, 2, 3, 4, 5}

JUDGEMENT

  PASS: The NUT must send an ICMPv6 Parameter Problem message to TN.
        The Code field must be 2(unrecognized IPv6 Option encountered).
        If the IPv6 Parameter Problem message includes a Fragment Header, 
        the Pointer field must be 0x3A(offset of the Option type field in the Destination Options header).
        If the IPv6 Parameter Problem message does not include a Fragment Header, 
        the Pointer field must be 0x32(offset of the Option type field in the Destination Options header).
        The NUT must discard the Echo Request from TN.

        IPv6 Header
            Version             = 6
            Traffic Class       = 0
            FlowLabel           = 0
            PayloadLength       = 85
            NextHeader          = 58 (ICMPv6)
            SourceAddress       = NUT Link Local Address
            Destination Address = TN Link Local Address

        ICMP Error
            Type           = 4 (Parameter Problem)
            Code           = 2 (unrecognized IPv6 option encountered)
            Checksum       = (auto)
            Pointer        = 50 or 58 (Offset to Option Type field in Destination Options Header)
                                      (if this value is 50, the fragment header in Echo request is discarded by reassembly.)
            PayloadData    = (Sent Packet)

CLEANUP

Common Test Cleanup

REFERENCE

SEE ALSO

  perldoc V6evalTool