2.2.2.3 REQUEST

The REQUEST message is sent by a Resolver to a Publisher so that it can request a route entry for a given key in the Publisher's cache, as seen in an ADVERTISE message.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

FieldID1

Length1

Reserved

FieldID2

Length2

Size

Offset

FieldID3

Length3

Nonce (16 bytes)

...

...

FieldID4

Length4

NumEntries

ArrayLength

ElementFieldType

EntryLength

IDList (variable)

...

FieldID5 (optional)

Length5 (optional)

Credential (variable)

...

FieldID6 (optional)

Length6 (optional)

Signature (variable)

...

FieldID7 (optional)

Length7 (optional)

KeyIdentifier (variable)

...

FieldID1 (2 bytes): If present, this field MUST be set to 0x0040 (FLAGS_FIELD). MUST be present if and only if the protocol is executing in membership or confidential security mode.

Length1 (2 bytes): If present, this field MUST be set to 0x0006. MUST be present if and only if FieldID1 is present.

Reserved (4 bytes): If present, this field MUST be set to zero and ignored on receipt. MUST be present if and only if FieldID1 is present.

FieldID2 (2 bytes): MUST be set to 0x0098 (SPLIT_CONTROLS). MUST be present if and only if the protocol is executing in membership or confidential security mode.

Length2 (2 bytes): MUST be set to 0x0008. MUST be present if and only if FieldID2 is present.

Size (2 bytes): Size, in bytes, of the remainder of the message, starting from FieldID3 (inclusive). This field MUST NOT be greater than 0x91E4 (37348), which is large enough to hold a Certificate Chain and a maximum-sized extended payload. MUST be present if and only if FieldID2 is present.

Offset (2 bytes): Byte offset, in network byte order, of the message fragment in the original message. It MUST be a multiple of 1188. MUST be present if and only if FieldID2 is present.

FieldID3 (2 bytes): MUST be set to 0x0093 (NONCE).

Length3 (2 bytes): MUST be set to 0x0014 (20 bytes).

Nonce (16 bytes): The nonce for the conversation.

FieldID4 (2 bytes): MUST be set to 0x0060 (DRT_ID_ARRAY).

Length4 (2 bytes): MUST be set to 12+(NumEntries*EntryLength).

NumEntries (2 bytes): The number of keys in the IDList field. This field MUST be in the range 0x0000 to 0x7FFF.

ArrayLength (2 bytes): The length of the array of entries. This field MUST be set to 8+(NumEntries*EntryLength).

ElementFieldType (2 bytes): The type of entries in the array. This field MUST be set to 0x0030 (DRT_ID).

EntryLength (2 bytes): The length, in bytes, of each array element. This field MUST be set to 0x20 (32 bytes).

IDList (variable): A set of 32-byte keys.

FieldID5 (2 bytes): Optional. MUST be set to 0x0080 (CREDENTIAL). MUST be present if and only if the protocol is executing in membership or confidential security mode.

Length5 (2 bytes): Optional. MUST be present if and only if FieldID5 is present. If present, it MUST be set to 4 plus the length in bytes of the Credential field.

Credential (variable): Optional. MUST be present if and only if FieldID5 is present. Contains a Credential structure defined in the security profile and provided by the upper-layer application.

FieldID6 (2 bytes): Optional. MUST be set to 0x00A5 (SIGNATURE). MUST be present if and only if the protocol is executing in membership or confidential security mode.

Length6 (2 bytes): Optional. MUST be present if and only if FieldID6 is present. If present, it MUST be set to 4 plus the length in bytes of the Signature field.

Signature (variable): Optional. MUST be present if and only if FieldID6 is present. Contains a Signature structure defined in the security profile and provided by the upper-layer application. The signature is calculated over the IDList field.

FieldID7 (2 bytes): Optional. MUST be set to 0x00A6 (KEY_IDENTIFIER). MUST be present if and only if the protocol is executing in membership or confidential security mode.

Length7 (2 bytes): Optional. MUST be present if and only if FieldID7 is present. If present, it MUST be set to 4 plus the length in bytes of the KeyIdentifier field.

KeyIdentifier (variable): Optional. MUST be present if and only if FieldID7 is present. Contains a Key Identifier structure defined in the security profile and provided by the upper-layer application. This field is used to indicate which portion of the Credential field is used to generate the Signature field.