CHAPTER 5
|
|
Next Header |
|
Hop-by-Hop Options header |
|
Jumbo OL Messages (Messages with large |
|
Authentication Headers |
|
Control headers |
|
Source Routing Headers |
This section describes the OL message format. All OL messages have a header that is at least twelve bytes long and a payload field. Multiple payloads can be concatenated by using extension headers, as indicated in the Next Header field.

Figure 5.3.
OL Message Header.
Version
(4 bit):
Version of the protocol. The current version is 0x0
LAS
(2 bit):
Size of the logical address field
Dmd
(2 bit)
Delivery mode. Currently defined delivery modes are:
0x0 Multicast
0x1 Flood
0x2 Unicast
0x3 Anycast
(not implemented)
Traffic
Class (8 bit):
Specifies
Quality of Service (QoS) class (not used)
Flow
Label (16 bit)
Assigned for QoS purposes (not used)
OL
Message Length (16 bits) Length
of entire payload following this
header
Next
Header (8 bit)
Specifies
the type of the following header. Currently the following headers are allowed:
·
Raw
(0x05)
Identifies an AD RAW message. This data is interpreted by the application
program.
·
AD
Message (0x01, 0x02)
Contains a formatted AD
message that uses the Message ADF format. There are two versions, with different
lengths for the Message ID field.
·
AD Stream
(0x03, 0x04)
Contains a formatted AD message or an ADF message that uses the Stream ADF
format. There are two versions, with different lengths for the Stream ID field.
Hop
Limit (8 bit):
Corresponds
to Time-to-Live (same as in IP data)
SrcLA
((LAS+1)*4 bytes)
Logical address of the source of the OL Message
DestLA ((LAS+1)*4 bytes) Logical address of the destination of the OL Message

Figure 5.4. Message Header of AD Raw Message.
Payload
Length (16 bits)
Length
of Payload field in bytes.
Next
Header (8 bit)
Specifies
the type of the next header.
ADF messages are associated with a Finite State Machine (FSM), which knows how to process and interpret the ADF message. The FSM is identified by a FSM Identifier. For each FSM, there may be different ADF message types. These are identified by the Type field. Note that the Type field is specific to the FSM ID.
Recall: The finite state machines are part of the message store which is not included in HyperCast 2.0.

Figure 5.5.
Message Header of ADF Message.
Next
Header (8 bit)
Specifies
the type of the next header.
Payload
Length (16 bits)
Length
of Payload field in bytes.
FSM
ID (16 bits)
Identifies a Finite State machine, which processes this message. The
finite state machine is implemented in the message store. Each finite state
machine provides a certain service, which is defined in the message store.
·
0x00: No
service (best effort delivery)
·
0x01: Local
acknowledgements (Local ACK)
·
0x02: Global
acknowledgments (Global ACK)
·
0x03:
Stateful flooding
·
0x03:
Synchronization
·
0x04: Incast
(reverse multicast)
Type
(8 bits)
ADF Message type. The interpretation of the message type may be dependent
on the FSM ID.
The following types are defined for all FSM’s:
· Payload Data (Type = 0x80): The message contains payload data
·
Retransmission
(Type = 0x81): The message contains a retransmission of payload data
·
Mergeable
Payload (Type =
0x82): The payload of this message is “mergeable” . This type is used for
transmission of Incast messages.
The
FSM specific types are specified in Table
For
each service, different types of ADF_Control messages are necessary.
Table 5.3. Interpretation of Type field in ADF message header.
|
Service |
FSM
ID |
Definition
and Interpretation of Type field |
|
No
Service |
0x00 |
None
defined: |
|
Local
ACK |
0x01 |
0x01:
Local NACK = Request for
Retransmission |
|
0x02:
Local ACK |
||
|
0x03:
Request Local ACK = Request
for sending a
Local ACK |
||
|
0x04:
Local_Reset = Resets state machine for this
message |
||
|
Global
ACK |
0x02 |
0x05:
Global NACK = Request for Retransmission |
|
0x06:
Global ACK (full) |
||
|
0x07:
Global ACK (partial) |
||
|
0x08:
Global ACK (partial done) |
||
|
0x09:
Request Global ACK = Request
for sending a
Global ACK |
||
|
0x0a:
Global_Reset = Resets Message |
||
|
Stateful
Flooding |
0x03 |
None |
|
Synchronization |
0x04 |
0x0b:
QuerySyncAll = Requests Information on
Message Store of Neighbor |
|
0x0c:
QueryMsgSync = Requests State Information
for a specific list of
messages |
||
|
0x0d:
HaveIt = Sent in response to a
QueryMsgSyncAll, QueryMsgSync, or sent
without any request |
||
|
0x0e:
Don’tHaveIt = Sent in response to a
QueryMsgSyncAll, QueryMsgSync, or sent
without any request |
||
|
0x0f:
NACK_SYNC |
||
|
Incast |
0x05 |
None |
MsgID
(8 or 10 bytes):
Message Identifier. This should be a unique number,
for example, a random number, or “Physical address + Transport layer Port
number + Counter”. Uniqueness is not enforced.
Sender
LA:
Logical address of the overlay socket which originally generated this
message. This fields is used for control data (such as acknowledgments) which
hare sent to the sender of an ADF message. The Sender LA is needed to calculate
the next hop (parent) in the tree with Sender LA as root. The LAS size is
known from the OL Header.
ADF stream messages are similar to ADF messages in that they have a finite state machine and different message types. The main difference is that the message identifier in the ADF message (MsgID) is replaced by a stream identifier (Stream ID) with a sequence number. The ADF stream message is used to associate multiple ADF messages with a “stream”.
Figure 5.6. Message Header of ADF Message.
StreamID
(8 or 10 bytes):
A number that identify
the stream. For each stream there can be only a single sender.
FSM
ID
Identifies
a Finite State machine. Has the same interpretation as in the ADF message.
·
0x06: Best
Effort Ordering
Type
(Not
worked out yet)
Currently, only one type is defined:
0x80 Payload = Data message
Sequence
number:
A number that indicates the order of the payload
within a stream. The sequence
number can be byte oriented or message oriented.