NAME

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

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 has 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 Header)
            FragmentOffset     = 0
            MFlag              = 1
            FragmentID         = 103

        Destination Header
            NextHeader         = 58 (ICMPv6)
            HeaderExtLength    = 0
            OptionType         = 0x87 (unknown, msb:10)
            OptDataLength      = 4
            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 should send an ICMPv6 Parameter Problem message to TN.
        The Code field must be 0(erroneous header field encountered).
        The Pointer field should be 0x04(offset of Payload Length field in the IPv6 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       = Target Link Local Address
            Destination Address = Tester Link Local Address

        ICMP Error
            Type           = 4 (Parameter Problem)
            Code           = 0 (erroneous header field encountered)
            Checksum       = (auto)
            Pointer        = 4 (Payload Length field in IPv6 Header)
            PayloadData    = (Sent Packet)

CLEANUP

Common Test Cleanup

REFERENCE

SEE ALSO

  perldoc V6evalTool