NAME

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


TARGET

  Host and Router


SYNOPSIS

  EX_HdrProcessingOrder_HDF_10M.seq [-tooloption ...] -pkt EX_HdrProcessingOrder_HDF_10M.def
    -tooloption : v6eval tool option


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, 
     Destination Options header, and Fragment header, in that order.
     The Destination Options header has an unknown Option Type 135.
     The IPv6 header has a Payload Length that is not a multiple of 8 octets, 
     and the Fragment header has the M-bit set.
  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         = 60 (Destination Options Header)
            HeaderExtLength    = 0
            OptionType         = 1 (PadN)
            OptDataLength      = 4
            pad                = {0, 0, 0, 0}
        Destination Options Header
            NextHeader         = 44 (Fragment Header)
            HeaderExtLength    = 0
            OptionType         = 135 (unknown, msb: 10)
            OptDataLength      = 4
            data               = {0, 0, 0, 0}
        Fragment Header
            NextHeader         = 58 (ICMPv6)
            FragmentOffset     = 0
            MFlag              = 1
            FragmentID         = 101
        ICMPv6 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).
        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 (Offset to unrecognized option)
            PayloadData    = (Sent Packet)


CLEANUP

Common Test Cleanup


REFERENCE

RFC 8200 - IPv6 Specification


SEE ALSO

  perldoc V6evalTool