tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Calculation of IPv6 fragmented part length



> Just curious, how did you find the issue? It seems to rarely occur.


I run IPv6 Ready Logo Phase-2 Self Test tool 5.0.8 and the following test failed.
I don’t know why the test author chose the fragment size.


Reference:
IPv6 Core Protocols Test Specification and Self Test tool
    https://www.ipv6ready.org/resources/ipv6-core-protocols.html


================================================================
NAME

  F_Reassembly_Valid - Fragment Reassembly (All Fragments are Valid)
TARGET

  Host and Router
SYNOPSIS

  F_Reassembly_Valid.seq [-tooloption ...] -pkt F_Reassembly_Valid.def

    -tooloption : v6eval tool option

INITIALIZATION

  None
TEST PROCEDURE

Verify that a node correctly reassembles fragmented packets and distinguishes between packet fragments using the Source Address, Destination Address and Fragment ID.

    TN                         NUT
    |                           |
    |-------------------------->|
    |   Echo Request (1st)      |
    |                           |
    |-------------------------->|
    |   Echo Request (2nd)      |
    |                           |
    |-------------------------->|
    |   Echo Request (3rd)      |
    |                           |
    |<--------------------------|
    |   Echo Reply              |
    |                           |
    |                           |
    v                           v

  1. TN transmits 1st, 2nd and 3rd Fragments in order. 
     All fragments have the same Source Address, Destination Address, and Fragment ID.
  2. Observe the packets transmitted by the NUT.

  Echo Request Data (original) is:
        IPv6 Header
            Version            = 6
            Traffic Class      = 0
            FlowLabel          = 0
            PayloadLength      = 88
            NextHeader         = 58 (ICMPv6)
            SourceAddress      = TN Link Local Address
            DestinationAddress = NUT Link Local Address

        ICMP Echo Request
            Type           = 128 (Echo Request)
            Code           = 0
            Checksum       = (auto)
            Identifier     = (auto)
            SequenceNumber = 0
            PayloadData    = data repeat{0x1, 40}
                             data repeat{0x2, 40}

  Echo Request Data (1st fragment) is:
        IPv6 Header
            Version            = 6
            Traffic Class      = 0
            FlowLabel          = 0
            PayloadLength      = 40
            NextHeader         = 44 (Fragment Header)
            SourceAddress      = TN Link Local Address
            DestinationAddress = NUT Link Local Address

        Fragment Header
            NextHeader         = 58 (ICMPv6)
            FragmentOffset     = 0
            MFlag              = 1
            Identification     = 32bit (Automatic generation)

        Payload
            data               = 32 octets from the head of ICMP Echo request

  Echo Request Data (2nd fragment) is:
        IPv6 Header
            Version            = 6
            Traffic Class      = 0
            FlowLabel          = 0
            PayloadLength      = 40
            NextHeader         = 44 (Fragment Header)
            SourceAddress      = TN Link Local Address
            DestinationAddress = NUT Link Local Address

        Fragment Header
            NextHeader         = 58 (ICMPv6)
            FragmentOffset     = 4
            MFlag              = 1
            Identification     = 32bit (Automatic generation)

        Payload
            data               = 32 octets from the back of ICMP Echo request

  Echo Request Data (3rd fragment) is:
        IPv6 Header
            Version            = 6
            Traffic Class      = 0
            FlowLabel          = 0
            PayloadLength      = 32
            NextHeader         = 44 (Fragment Header)
            SourceAddress      = TN Link Local Address
            DestinationAddress = NUT Link Local Address

        Fragment Header
            NextHeader         = 58 (ICMPv6)
            FragmentOffset     = 8
            MFlag              = 0
            Identification     = 32bit (Automatic generation)

        Payload
            data               = 24 octets from the back of ICMP Echo request

JUDGEMENT

  PASS: The NUT must transmit an Echo Reply to TN in response to the reassembled Echo Request.
        IPv6 Header
            Version             = 6
            Traffic Class       = 0
            FlowLabel           = 0
            PayloadLength       = 88
            NextHeader          = 58 (ICMPv6)
            SourceAddress       = NUT Link Local Address
            Destination Address = TN Link Local Address

        ICMP Echo Reply
            Type           = 129 (Echo Reply)
            Code           = 0
            Checksum       = (auto)
            Identifier     = (same as Echo Request)
            SequenceNumber = (same as Echo Request)
            PayloadData    = (same as Echo Request)

CLEANUP

Common Test Cleanup

REFERENCE

RFC 8200 - IPv6 Specification

SEE ALSO

  perldoc V6evalTool


Home | Main Index | Thread Index | Old Index