Re: Calculation of IPv6 fragmented part length
Ryota Ozaki <[email protected]>
| Newsgroups | gmane.os.netbsd.devel.network |
|---|---|
| Message-ID | <CAKrYomhaS3-r6B0C-Nz0-FScVC3Wex5HMT8Z1w983y6RzRANBQ@mail.gmail.com> |
On Mon, Apr 15, 2024 at 9:36 PM Yasuyuki KOZAKAI <[email protected]> wrote: > > > > 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. Oh, I see, thanks. It seems we used to use it, but not now. ozaki-r > > > 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