2.2.3.1 Fragment Payload Packet
The Fragment payload is an ISAKMP payload, as specified in [RFC2408] section 3.1. The payload type value for a Fragment payload is 0x84 from the private payload type range, as specified in [RFC2408] section 3.1. A Fragment payload MUST be preceded by an ISAKMP header that has this payload type.
The following illustration describes the Fragment Payload packet.
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
3 |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Next_Payload |
RESERVED |
Payload_Length |
|||||||||||||||||||||||||||||
Fragment_ID |
Fragment_Number |
Flags |
|||||||||||||||||||||||||||||
Fragment_Data (variable) |
|||||||||||||||||||||||||||||||
... |
Next_Payload (1 byte): Identifier for the payload type, which MUST specify the next payload in the message. For a Fragment payload, this field MUST be set to 0.
RESERVED (1 byte): This field MUST be set to zero. The responder (1) MUST ignore this field on receipt. This behavior is identical to IKE.
Payload_Length (2 bytes): This field MUST be the length, in bytes, of the payload, including the generic payload header. This is identical to IKE.
Fragment_ID (2 bytes): This field is 2 bytes and contains the fragment ID. It MUST specify the same value for every fragment that is generated from a particular IKE message.
Fragment_Number (1 byte): This field MUST indicate the order in which the fragments are sent. The first fragment MUST have a fragment number of 1, and each subsequent fragment MUST have a fragment number that is one greater than that of the previous fragment. Because the maximum size of an IKE message is limited to 64 KB by UDP and fragments are aligned on the minimum MTU for IPv4 and IPv6, the fragment number cannot wrap.
Flags (1 byte): The Flags field MUST have the following value.
-
Value
Meaning
LAST_FRAGMENT
0x01
This flag indicates the last fragment in the message.
-
All other bits of the Flags field MUST be set to zero on the initiator and ignored on the responder (1). For more details on flag semantics, see section 3.1.
Fragment_Data (variable): This field MUST contain the fragment data. The size of the Fragment_Data field MUST be computed by subtracting the size of the Fragment payload header (8 bytes) from the value of the Payload_Length field.