NAME

  EX_NH_UnexpectedEN - Unexpected Next Header in Extension Header - End Node

TARGET

  Host and Router

SYNOPSIS

INITIALIZATION

  None

TEST PROCEDURE

Verify that a node discards a packet with an unexpected next header in an extension header and transmits an ICMPv6 Parameter Problem message to the source of the packet.

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

    1. TN transmits Test packet, which has a Destinatin Options header with a Next Header field of 60.
       The actual extension header that follows is a Fragment header.
       The Fragment Offset is 0x10E0(so that the first 8 bits of this 13 bit field would be 135).
       The second reserved field is 0x2 and the more bit is clear. 
       (If processed as a Destination Options header, this would be processed as Option Data Length equals 4).
    2. Observe the Packets transmitted by the NUT.

  Test Packet Data is:

        IPv6 Header
            Version            = 6
            Traffic Class      = 0
            FlowLabel          = 0
            PayloadLength      = 16
            NextHeader         = 60 (Destination Options Header)
            SourceAddress      = TN Address
            DestinationAddress = NUT Address

        Destination Options Header
            NextHeader      = 60 (Destination Options Header)
            HeaderExtLength = 0
            OptionType      = 1 (PadN)
            OptDataLength   = 4
            pad             = {0, 0, 0, 0}

        Fragment Header                    as Destination Options Header
            NextHeader      = 58 (ICMPv6)  <= Next Header
            Reserved        = 0            <= Reserved
            Fragment Offset = 0x10E0       <= | Option (135(Undefined),
            Reserved2       = 0x2          <= |         DataLen = 4)
            MFlag           = 0            <= |
            Fragment ID     = 0            <= OptData

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

JUDGEMENT

  PASS: From the Next Header field in the Destination Options header, 
        the NUT expects the Fragment header to be a Destination Options header.
        Thus, the Fragment Offset would be interpreted as if it were an Option Type.
        The NUT should send an ICMPv6 Prameter Problem message to TN.
        The Code field should be 2(unrecognized IPv6 Option encounterd).
        The Pointer field should be 0x32(offset of the Fragment Offset in the Fragment header).
        The NUT should discard Test Packet and should not send an Echo Reply to TN.

        IPv6 Header
            Version            = 6
            Traffic Class      = 0
            FlowLabel          = 0
            PayloadLength      = 80
            NextHeader         = 58 (ICMPv6)
            SourceAddress      = NUT Address
            DestinationAddress = TN Address

        ICMP Error
            Type           = 4 (Parameter Problem)
            Code           = 2 (unrecognized IPv6 Option encountered)
            Checksum       = (auto)
            Pointer        = 52 (Offset to Fragment ID in Fragment Header)
            PayloadData    = (Sent Packet)

CLEANUP

Common Test Cleanup

REFERENCE

SEE ALSO

  perldoc V6evalTool