diff options
Diffstat (limited to 'doc/rfc/rfc5444.txt')
-rw-r--r-- | doc/rfc/rfc5444.txt | 3363 |
1 files changed, 3363 insertions, 0 deletions
diff --git a/doc/rfc/rfc5444.txt b/doc/rfc/rfc5444.txt new file mode 100644 index 0000000..59fc6e1 --- /dev/null +++ b/doc/rfc/rfc5444.txt @@ -0,0 +1,3363 @@ + + + + + + +Network Working Group T. Clausen +Request for Comments: 5444 LIX, Ecole Polytechnique +Category: Standards Track C. Dearlove + BAE Systems ATC + J. Dean + Naval Research Laboratory + C. Adjih + INRIA Rocquencourt + February 2009 + + + Generalized Mobile Ad Hoc Network (MANET) Packet/Message Format + +Status of This Memo + + This document specifies an Internet standards track protocol for the + Internet community, and requests discussion and suggestions for + improvements. Please refer to the current edition of the "Internet + Official Protocol Standards" (STD 1) for the standardization state + and status of this protocol. Distribution of this memo is unlimited. + +Copyright Notice + + Copyright (c) 2009 IETF Trust and the persons identified as the + document authors. All rights reserved. + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents (http://trustee.ietf.org/ + license-info) in effect on the date of publication of this document. + Please review these documents carefully, as they describe your rights + and restrictions with respect to this document. + +Abstract + + This document specifies a packet format capable of carrying multiple + messages that may be used by mobile ad hoc network routing protocols. + + + + + + + + + + + + + + + +Clausen, et al. Standards Track [Page 1] + +RFC 5444 MANET Packet Format February 2009 + + +Table of Contents + + 1. Introduction ....................................................3 + 2. Notation and Terminology ........................................4 + 2.1. Notation ...................................................4 + 2.1.1. Elements ............................................4 + 2.1.2. Variables ...........................................5 + 2.2. Terminology ................................................5 + 3. Applicability Statement .........................................6 + 4. Protocol Overview and Functioning ...............................7 + 5. Syntactical Specification .......................................7 + 5.1. Packets ....................................................8 + 5.2. Messages ...................................................9 + 5.3. Address Blocks ............................................11 + 5.4. TLVs and TLV Blocks .......................................14 + 5.4.1. TLVs ...............................................14 + 5.4.2. TLV Usage ..........................................17 + 5.5. Malformed Elements ........................................18 + 6. IANA Considerations ............................................18 + 6.1. Expert Review: Evaluation Guidelines ......................18 + 6.2. Message Types .............................................20 + 6.2.1. Message-Type-Specific TLV Registry Creation ........20 + 6.3. Packet TLV Types ..........................................21 + 6.3.1. Packet TLV Type Extension Registry Creation ........21 + 6.4. Message TLV Types .........................................21 + 6.4.1. Message TLV Type Extension Registry Creation .......22 + 6.5. Address Block TLV Types ...................................22 + 6.5.1. Address Block TLV Type Extension Registry + Creation ...........................................23 + 7. Security Considerations ........................................23 + 7.1. Authentication and Integrity Suggestions ..................23 + 7.2. Confidentiality Suggestions ...............................24 + 8. Contributors ...................................................25 + 9. Acknowledgments ................................................25 + 10. References ....................................................26 + 10.1. Normative References .....................................26 + 10.2. Informative References ...................................27 + Appendix A. Multiplexing and Demultiplexing .......................28 + Appendix B. Intended Usage ........................................28 + Appendix C. Examples ..............................................30 + C.1. Address Block Examples ....................................30 + C.2. TLV Examples ..............................................32 + Appendix D. Illustrations .........................................34 + D.1. Packet ....................................................34 + D.2. Message ...................................................38 + D.3. Message Body ..............................................44 + D.4. Address Block .............................................45 + + + + +Clausen, et al. Standards Track [Page 2] + +RFC 5444 MANET Packet Format February 2009 + + + D.5. TLV Block .................................................52 + D.6. TLV .......................................................53 + Appendix E. Complete Example ......................................57 + +1. Introduction + + This document specifies the syntax of a packet format designed for + carrying multiple routing protocol messages for information exchange + between MANET (Mobile Ad hoc NETwork) routers. Messages consist of a + Message Header, which is designed for control of message + dissemination, and a Message Body, which contains protocol + information. Only the syntax of the packet and messages is + specified. + + This document specifies: + + o A packet format, allowing zero or more messages to be contained + within a single transmission. A packet with zero messages may be + sent in case the only information to exchange is contained in the + Packet Header. + + o A message format, where a message is composed of a Message Header + and a Message Body. + + o A Message Header format, which contains information that may be + sufficient to allow a protocol using this specification to make + processing and forwarding decisions. + + o A Message Body format, containing attributes associated with the + message or the originator of the message, as well as blocks of + addresses, or address prefixes, with associated attributes. + + o An Address Block format, where an Address Block represents sets of + addresses, or address prefixes, in a compact form with aggregated + addresses. + + o A generalized type-length-value (TLV) format representing + attributes. Each TLV can be associated with a packet, a message, + or one or more addresses or address prefixes in a single Address + Block. Multiple TLVs can be included, each associated with a + packet, a message, and the same, different, or overlapping sets of + addresses or address prefixes. + + The specification has been explicitly designed with the following + properties, listed in no particular order, in mind: + + Parsing logic - The notation used in this specification facilitates + generic, protocol-independent parsing logic. + + + +Clausen, et al. Standards Track [Page 3] + +RFC 5444 MANET Packet Format February 2009 + + + Extensibility - Packets and messages defined by a protocol using + this specification are extensible by defining new messages and new + TLVs. Protocols using this specification will be able to + correctly identify and skip such new messages and TLVs, while + correctly parsing the remainder of the packet and message. + + Efficiency - When reported addresses share common bit sequences + (e.g., address prefixes or IPv6 interface identifiers), the + Address Block representation allows for a compact representation. + Compact Message Headers are ensured through permitting inclusion + of only required Message Header elements. The multi-message + packet structure allows a reduction in the number of transmitted + octets and in the number of transmitted packets. The structure of + packet and message encoding allows parsing, verifying, and + identifying individual elements in a single pass. + + Separation of forwarding and processing - A protocol using this + specification can be designed such that duplicate detection and + controlled-scope message forwarding decisions can be made using + information contained in the Message Header, without processing + the Message Body. + +2. Notation and Terminology + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and + "OPTIONAL" in this document are to be interpreted as described in + [RFC2119]. + + Additionally, this document uses the notation in Section 2.1 and the + terminology in Section 2.2. + +2.1. Notation + + The following notations, for elements and variables, are used in this + document. + + This format uses network byte order (most significant octet first) + for all fields. The most significant bit in an octet is numbered bit + 0, and the least significant bit of an octet is numbered bit 7 + [Stevens]. + +2.1.1. Elements + + This specification defines elements. An element is a group of any + number of consecutive bits that together form a syntactic entity + represented using the notation <element>. Each element in this + document is defined as either: + + + +Clausen, et al. Standards Track [Page 4] + +RFC 5444 MANET Packet Format February 2009 + + + o a specifically sized field of bits OR + + o a composite element, composed of other <element>s. + + A composite element is defined as follows: + + <element> := specification + + where, on the right hand side following :=, specification is + represented using the regular expression syntax defined in + [SingleUNIX]. Only the following notation is used: + + <element1><element2> - Indicates that <element1> is immediately + followed by <element2>. + + (<element1><element2>) - Indicates a grouping of the elements + enclosed by the parentheses. + + ? - Zero or one occurrences of the preceding element or group. + + * - Zero or more occurrences of the preceding element or group. + +2.1.2. Variables + + Variables are introduced into the specification solely as a means to + clarify the description. The following two notations are used: + + <foo> - If <foo> is an unsigned integer field, then <foo> is also + used to represent the value of that field. + + bar - A variable, usually obtained through calculations based on the + value(s) of element(s). + +2.2. Terminology + + This document uses the following terminology: + + Packet - The top level entity in this specification. A packet + contains a Packet Header and zero or more messages. + + Message - The fundamental entity carrying protocol information, in + the form of address objects and TLVs. + + Address - A number of octets that make up an address of the length + indicated by the encapsulating Message Header. The meaning of an + address is defined by the protocol using this specification. + + + + + +Clausen, et al. Standards Track [Page 5] + +RFC 5444 MANET Packet Format February 2009 + + + Address Prefix - An address plus a prefix length, with the prefix + length being a number of address bits measured from the left/most + significant end of the address. + + Address Object - Either an address, or an address prefix, as + specified in an Address Block in this specification. + + TLV - A type-length-value structure. This is a generic way in which + an attribute can be represented and correctly parsed without the + parser having to understand the attribute. + +3. Applicability Statement + + This specification describes a generic packet format, designed for + use by MANET routing protocols. The specification has been inspired + by and extended from that used by the OLSR (Optimized Link State + Routing) protocol [RFC3626]. + + MANETs are, commonly though not exclusively, characterized as being + able to run over wireless network interfaces of limited to moderate + capacity. MANETs are therefore less tolerant of wasted transmitted + octets than are most wired networks. This specification thus + represents a tradeoff between sometimes competing attributes, + specifically efficiency, extensibility, and ease of use. + + Efficiency is supported by reducing packet size and by allowing + multiple disjoint messages in a single packet. Reduced packet size + is primarily supported by address aggregation, optional Packet Header + and Message Header fields, and optional fields in Address Blocks and + TLVs. Supporting multi-message packets allows a reduction in the + number of packets, each of which can incur significant bandwidth + costs from transport, network, and lower layers. + + This specification provides both external and internal extensibility. + External extensibility is supported by the ability to add Packet TLVs + and to define new Message Types. Internal extensibility is supported + by the ability to add Message TLVs and Address Block TLVs to existing + messages. Protocols can define new TLV Types, and hence the contents + of their Value fields, and new Message Types (see Section 6.1). + Protocols can also reuse TLV Type definitions from other protocols + that also use this specification. + + This specification aims at being sufficiently expressive and flexible + to be able to accommodate different classes of MANET routing + protocols (e.g., proactive, reactive, and hybrid routing protocols) + as well as extensions thereto. Having a common packet and message + + + + + +Clausen, et al. Standards Track [Page 6] + +RFC 5444 MANET Packet Format February 2009 + + + format, and a common way of representing IP addresses and associated + attributes, allows generic parsing code to be developed, regardless + of the algorithm used by the routing protocol. + + All addresses within a message are assumed to be of the same size, + specified in the Message Header. In the case of mixed IPv6 and IPv4 + addresses, IPv4 addresses can be represented as IPv4-mapped IPv6 + addresses as specified in [RFC4291]. + + The messages defined by this specification are designed to carry + MANET routing protocol signaling between MANET routers. This + specification includes elements that can support scope-limited + flooding, as well as being usable for point-to-point delivery of + MANET routing protocol signaling in a multi-hop network. Packets may + be unicast or multicast and may use any appropriate transport + protocol or none. + + A MANET routing protocol using the message format defined by this + specification can constrain the syntax (for example, requiring a + specific set of Message Header fields) that the protocol will employ. + Protocols with such restrictions need not be able to parse all + possible message structures as defined by this document but must be + coherent in message generation and reception of messages that they + define. If a protocol specifies which elements are included, then + direct indexing of the appropriate fields is possible, dependent on + the syntax restrictions imposed by the protocol. Such protocols may + have more limited extensibility. + +4. Protocol Overview and Functioning + + This specification does not describe a protocol. It describes a + packet format, which may be used by any mobile ad hoc network routing + protocol. + +5. Syntactical Specification + + This section normatively provides the syntactical specification of a + packet, represented by the element <packet> and the elements from + which it is composed. The specification is given using the notation + in Section 2.1. + + Graphical illustrations of the layout of specified elements are given + in Appendix D, a graphical illustration of a complete example (a + packet including a message with Address Blocks and TLVs) is given in + Appendix E. + + This format uses network byte order, as indicated in Section 2.1. + + + + +Clausen, et al. Standards Track [Page 7] + +RFC 5444 MANET Packet Format February 2009 + + +5.1. Packets + + <packet> is defined by: + + <packet> := <pkt-header> + <message>* + + where <message> is as defined in Section 5.2. Successful parsing is + terminated when all octets of the packet (as defined by the datagram + containing the packet) are used. + + <pkt-header> is defined by: + + <pkt-header> := <version> + <pkt-flags> + <pkt-seq-num>? + <tlv-block>? + + where: + + <version> is a 4-bit unsigned integer field and specifies the + version of the specification on which the packet and the contained + messages are constructed. This document specifies version 0. + + <pkt-flags> is a 4-bit field, specifying the interpretation of the + remainder of the Packet Header: + + bit 0 (phasseqnum): If cleared ('0'), then <pkt-seq-num> is not + included in the <pkt-header>. If set ('1'), then <pkt-seq-num> + is included in the <pkt-header>. + + bit 1 (phastlv): If cleared ('0'), then <tlv-block> is not + included in the <pkt-header>. If set ('1'), then <tlv-block> + is included in the <pkt-header>. + + bits 2-3: Are RESERVED and SHOULD each be cleared ('0') on + transmission and SHOULD be ignored on reception. + + <pkt-seq-num> is omitted if the phasseqnum flag is cleared ('0'); + otherwise, is a 16-bit unsigned integer field, specifying a Packet + Sequence Number. + + <tlv-block> is omitted if the phastlv flag is cleared ('0') and is + otherwise as defined in Section 5.4. + + It is assumed that the network layer is able to deliver the exact + payload length, thus avoiding having to carry the packet length in + the packet. + + + +Clausen, et al. Standards Track [Page 8] + +RFC 5444 MANET Packet Format February 2009 + + +5.2. Messages + + Packets may, in addition to the Packet Header, contain one or more + messages. Messages contain: + + o A Message Header. + + o A Message TLV Block that contains zero or more TLVs, associated + with the whole message. + + o Zero or more Address Blocks, each containing one or more address + objects. + + o An Address Block TLV Block, containing zero or more TLVs and + following each Address Block, through which addresses can be + associated with additional attributes. + + <message> is defined by: + + <message> := <msg-header> + <tlv-block> + (<addr-block><tlv-block>)* + + <msg-header> := <msg-type> + <msg-flags> + <msg-addr-length> + <msg-size> + <msg-orig-addr>? + <msg-hop-limit>? + <msg-hop-count>? + <msg-seq-num>? + + where: + + <tlv-block> is as defined in Section 5.4. + + <addr-block> is as defined in Section 5.3. + + <msg-type> is an 8-bit unsigned integer field, specifying the type + of the message. + + <msg-flags> is a 4-bit field, specifying the interpretation of the + remainder of the Message Header: + + bit 0 (mhasorig): If cleared ('0'), then <msg-orig-addr> is not + included in the <msg-header>. If set ('1'), then <msg-orig- + addr> is included in the <msg-header>. + + + + +Clausen, et al. Standards Track [Page 9] + +RFC 5444 MANET Packet Format February 2009 + + + bit 1 (mhashoplimit): If cleared ('0'), then <msg-hop-limit> is + not included in the <msg-header>. If set ('1'), then <msg-hop- + limit> is included in the <msg-header>. + + bit 2 (mhashopcount): If cleared ('0'), then <msg-hop-count> is + not included in the <msg-header>. If set ('1'), then <msg-hop- + count> is included in the <msg-header>. + + bit 3 (mhasseqnum): If cleared ('0'), then <msg-seq-num> is not + included in the <msg-header>. If set ('1'), then <msg-seq-num> + is included in the <msg-header>. + + <msg-addr-length> is a 4-bit unsigned integer field, encoding the + length of all addresses included in this message (<msg-orig-addr> + as well as each address included in Address Blocks as defined in + Section 5.3), as follows: + + <msg-addr-length> = the length of an address in octets - 1 + + <msg-addr-length> is thus 3 for IPv4 addresses, or 15 for IPv6 + addresses. + + address-length is a variable whose value is the length of an address + in octets and is calculated as follows: + + address-length = <msg-addr-length> + 1 + + <msg-size> is a 16-bit unsigned integer field, specifying the number + of octets that make up the <message>, including the <msg-header>. + + <msg-orig-addr> is omitted if the mhasorig flag is cleared ('0'); + otherwise, is an identifier with length equal to address-length + that can serve to uniquely identify the MANET router that + originated the message. + + <msg-hop-limit> is omitted if the mhashoplimit flag is cleared + ('0'); otherwise, is an 8-bit unsigned integer field that can + contain the maximum number of hops that the message should be + further transmitted. + + <msg-hop-count> is omitted if the mhashopcount flag is cleared + ('0'); otherwise, is an 8-bit unsigned integer field that can + contain the number of hops that the message has traveled. + + <msg-seq-num> is omitted if the mhasseqnum flag is cleared ('0'); + otherwise, is a 16-bit unsigned integer field that can contain a + sequence number, generated by the message's originator MANET + router. + + + +Clausen, et al. Standards Track [Page 10] + +RFC 5444 MANET Packet Format February 2009 + + +5.3. Address Blocks + + An Address Block can specify one or more addresses, all of which will + be address-length octets long, as specified using the <msg-addr- + length> in the <msg-header> of the message containing the Address + Block. An Address Block can also specify prefix lengths that can be + applied to all addresses in the Address Block, if appropriate. This + allows an Address Block to specify either addresses or address + prefixes. A protocol may specify that an address with a maximum + prefix length (equal to the address length in bits, i.e., 8 * + address-length) is considered to be an address, rather than an + address prefix, thus allowing an Address Block to contain a mixture + of addresses and address prefixes. The common term "address object" + is used in this specification to cover both of these; note that an + address object in an Address Block always includes the prefix length, + if present. + + An address is specified as a sequence of address-length octets of the + form Head:Mid:Tail. There are no semantics associated with Head, + Mid, or Tail; this representation is solely to allow aggregation of + addresses, which often have common parts (e.g., common prefixes or + multiple IPv6 addresses on the same interface). An Address Block + contains an ordered set of addresses all sharing the same Head and + the same Tail, but having individual Mids. Independently, Head and + Tail may be empty, allowing for representation of address objects + that do not have common Heads or common Tails. Detailed examples of + Address Blocks are included in Appendix C.1. + + An Address Block can specify address prefixes: + + o with a single prefix length for all address prefixes OR + + o with a prefix length for each address prefix. + + <address-block> is defined by: + + <address-block> := <num-addr> + <addr-flags> + (<head-length><head>?)? + (<tail-length><tail>?)? + <mid>* + <prefix-length>* + + where: + + <num-addr> is an 8-bit unsigned integer field containing the number + of addresses represented in the Address Block, which MUST NOT be + zero. + + + +Clausen, et al. Standards Track [Page 11] + +RFC 5444 MANET Packet Format February 2009 + + + <addr-flags> is an 8-bit field specifying the interpretation of the + remainder of the Address Block: + + bit 0 (ahashead): If cleared ('0'), then <head-length> and <head> + are not included in the <address-block>. If set ('1'), then + <head-length> is included in the <address-block>, and <head> is + included in the <address-block> unless <head-length> is zero. + + bit 1 (ahasfulltail) and bit 2 (ahaszerotail): Are interpreted + according to Table 1. A combination not shown in that table + MUST NOT be used. + + bit 3 (ahassingleprelen) and bit 4 (ahasmultiprelen): Are + interpreted according to Table 2. A combination not shown in + that table MUST NOT be used. + + bits 5-7: Are RESERVED and SHOULD each be cleared ('0') on + transmission and SHOULD be ignored on reception. + + +--------------+--------------+---------------+---------------------+ + | ahasfulltail | ahaszerotail | <tail-length> | <tail> | + +--------------+--------------+---------------+---------------------+ + | 0 | 0 | not included | not included | + | 1 | 0 | included | included unless | + | | | | <tail-length> is | + | | | | zero | + | 0 | 1 | included | not included | + +--------------+--------------+---------------+---------------------+ + + Table 1: Interpretation of the ahasfulltail and ahaszerotail flags + + +------------+-----------+------------------+-----------------------+ + | ahassingle | ahasmulti | number of | prefix length of the | + | prelen | prelen | <prefix-length> | nth address prefix, | + | | | fields | in bits | + +------------+-----------+------------------+-----------------------+ + | 0 | 0 | 0 | 8 * address-length | + | 1 | 0 | 1 | <prefix-length> | + | 0 | 1 | <num-addr> | nth <prefix-length> | + +------------+-----------+------------------+-----------------------+ + + Table 2: Interpretation of the + ahassingleprelen and ahasmultiprelen flags + + <head-length> if present, is an 8-bit unsigned integer field that + contains the number of octets in the Head of all of the addresses + in the Address Block, i.e., each <head> element included is <head- + length> octets long. + + + +Clausen, et al. Standards Track [Page 12] + +RFC 5444 MANET Packet Format February 2009 + + + head-length is a variable, defined to equal <head-length>, if + present, or 0 otherwise. + + <head> is omitted if head-length is equal to 0; otherwise, it is a + field of the head-length leftmost octets common to all the + addresses in the Address Block. + + <tail-length> if present, is an 8-bit unsigned integer field that + contains the number of octets in the Tail of all of the addresses + in the Address Block, i.e., each <tail> element included is <tail- + length> octets long. + + tail-length is a variable, defined to equal <tail-length>, if + present, or 0 otherwise. + + <tail> is omitted if tail-length is equal to 0, or if the + ahaszerotail flag is set ('1'); otherwise, it is a field of the + tail-length rightmost octets common to all the addresses in the + Address Block. If the ahaszerotail flag is set ('1'), then the + tail-length rightmost octets of all the addresses in the Address + Block are 0. + + mid-length is a variable that MUST be non-negative, defined by: + + mid-length := address-length - head-length - tail-length + + i.e., each <mid> element included is mid-length octets long. + + <mid> is omitted if mid-length is equal to 0; otherwise, each <mid> + is a field of length mid-length octets, representing the Mid of + the corresponding address in the Address Block. When not omitted, + an Address Block contains exactly <num-addr> <mid> fields. + + <prefix-length> is an 8-bit unsigned integer field containing the + length, in bits, of an address prefix. If the ahassingleprelen + flag is set ('1'), then a single <prefix-length> field is included + that contains the prefix length of all addresses in the Address + Block. If the ahasmultiprelen flag is set ('1'), then <num-addr> + <prefix-length> fields are included, each of which contains the + prefix length of the corresponding address prefix in the Address + Block (in the same order). Otherwise, no <prefix-length> fields + are present; each address object can be considered to have a + prefix length equal to 8 * address-length bits. The Address Block + is malformed if any <prefix-length> element has a value greater + than 8 * address-length. + + + + + + +Clausen, et al. Standards Track [Page 13] + +RFC 5444 MANET Packet Format February 2009 + + +5.4. TLVs and TLV Blocks + + A TLV allows the association of an arbitrary attribute with a message + or a packet, or with a single address or a contiguous set of + addresses in an Address Block. The attribute (value) is made up from + an integer number of consecutive octets. Different attributes have + different types; attributes that are unknown when parsing can be + skipped. + + TLVs are grouped in TLV Blocks, with all TLVs within a TLV Block + associating attributes with either the packet (for the TLV Block in + the Packet Header), the message (for the TLV Block immediately + following the Message Header), or to addresses in the immediately + preceding Address Block. Individual TLVs in a TLV Block immediately + following an Address Block can associate attributes to a single + address, a range of addresses, or all addresses in that Address + Block. When associating an attribute with more than one address, a + TLV can include one value for all addresses or one value per address. + Detailed examples of TLVs are included in Appendix C.2. + + A TLV Block is defined by: + + <tlv-block> := <tlvs-length> + <tlv>* + + where: + + <tlvs-length> is a 16-bit unsigned integer field that contains the + total number of octets in all of the immediately following <tlv> + elements (<tlvs-length> not included). + + <tlv> is as defined in Section 5.4.1. + +5.4.1. TLVs + + There are three kinds of TLV, each represented by an element <tlv>: + + o A Packet TLV, included in the Packet TLV Block in a Packet Header. + + o A Message TLV, included in the Message TLV Block in a message, + before any Address Blocks. + + o An Address Block TLV, included in an Address Block TLV Block + following an Address Block. An Address Block TLV applies to: + + + + + + + +Clausen, et al. Standards Track [Page 14] + +RFC 5444 MANET Packet Format February 2009 + + + * all address objects in the Address Block, OR + + * any continuous sequence of address objects in the Address + Block, OR + + * a single address object in the Address Block. + + <tlv> is defined by: + + <tlv> := <tlv-type> + <tlv-flags> + <tlv-type-ext>? + (<index-start><index-stop>?)? + (<length><value>?)? + + where: + + <tlv-type> is an 8-bit unsigned integer field, specifying the type + of the TLV, specific to the TLV kind (i.e., Packet TLV, Message + TLV, or Address Block TLV). + + <tlv-flags> is an 8-bit field specifying the interpretation of the + remainder of the TLV: + + bit 0 (thastypeext): If cleared ('0'), then <tlv-type-ext> is not + included in the <tlv>. If set ('1'), then <tlv-type-ext> is + included in the <tlv>. + + bit 1 (thassingleindex) and bit 2 (thasmultiindex): Are + interpreted according to Table 3. A combination not shown in + that table MUST NOT be used. Both of these flags MUST be + cleared ('0') in Packet TLVs and Message TLVs. + + bit 3 (thasvalue) and bit 4 (thasextlen): Are interpreted + according to Table 4. A combination not shown in that table + MUST NOT be used. + + bit 5 (tismultivalue): This flag serves to specify how the + <value> field is interpreted, as specified below. This flag + MUST be cleared ('0') in Packet TLVs and Message TLVs, if the + thasmultiindex flag is cleared ('0'), or if the thasvalue flag + is cleared ('0'). + + bits 6-7: Are RESERVED and SHOULD each be cleared ('0') on + transmission and SHOULD be ignored on reception. + + + + + + +Clausen, et al. Standards Track [Page 15] + +RFC 5444 MANET Packet Format February 2009 + + + +-----------------+----------------+---------------+--------------+ + | thassingleindex | thasmultiindex | <index-start> | <index-stop> | + +-----------------+----------------+---------------+--------------+ + | 0 | 0 | not included | not included | + | 1 | 0 | included | not included | + | 0 | 1 | included | included | + +-----------------+----------------+---------------+--------------+ + + Table 3: Interpretation of the + thassingleindex and thasmultiindex flags + + +-----------+------------+--------------+---------------------------+ + | thasvalue | thasextlen | <length> | <value> | + +-----------+------------+--------------+---------------------------+ + | 0 | 0 | not included | not included | + | 1 | 0 | 8 bits | included unless <length> | + | | | | is zero | + | 1 | 1 | 16 bits | included unless <length> | + | | | | is zero | + +-----------+------------+--------------+---------------------------+ + + Table 4: Interpretation of the thasvalue and thasextlen flags + + <tlv-type-ext> is an 8-bit unsigned integer field, specifying an + extension of the TLV Type, specific to the TLV Type and kind + (i.e., Packet TLV, Message TLV, or Address Block TLV). + + tlv-type-ext is a variable, defined to equal <tlv-type-ext>, if + present, or 0 otherwise. + + tlv-fulltype is a variable, defined by: + + tlv-fulltype := 256 * <tlv-type> + tlv-type-ext + + <index-start> and <index-stop> when present, in an Address Block TLV + only, are each an 8-bit unsigned integer field. + + index-start and index-stop are variables, defined according to + Table 5. The variable end-index is defined as follows: + + * For Message TLVs and Packet TLVs: + + end-index := 0 + + * For Address Block TLVs: + + end-index := <num-addr> - 1 + + + + +Clausen, et al. Standards Track [Page 16] + +RFC 5444 MANET Packet Format February 2009 + + + An Address Block TLV applies to the address objects from position + index-start to position index-stop (inclusive) in the Address + Block, where the first address object has position zero. + + +-----------------+----------------+----------------+---------------+ + | thassingleindex | thasmultiindex | index-start := | index-stop := | + +-----------------+----------------+----------------+---------------+ + | 0 | 0 | 0 | end-index | + | 1 | 0 | <index-start> | <index-start> | + | 0 | 1 | <index-start> | <index-stop> | + +-----------------+----------------+----------------+---------------+ + + Table 5: Interpretation of the + thassingleindex and thasmultiindex flags + + number-values is a variable, defined by: + + number-values := index-stop - index-start + 1 + + <length> is omitted or is an 8-bit or 16-bit unsigned integer field + according to Table 4. If the tismultivalue flag is set ('1'), + then <length> MUST be an integral multiple of number-values, and + the variable single-length is defined by: + + single-length := <length> / number-values + + If the tismultivalue flag is cleared ('0'), then the variable + single-length is defined by: + + single-length := <length> + + <value> if present (see Table 4), is a field of length <length> + octets. In an Address Block TLV, <value> is associated with the + address objects from positions index-start to index-stop, + inclusive. If the tismultivalue flag is cleared ('0'), then the + whole of this field is associated with each of the indicated + address objects. If the tismultivalue flag is set ('1'), then + this field is divided equally into number-values fields, each of + length single-length octets, and these are associated, in order, + with the indicated address objects. + +5.4.2. TLV Usage + + A TLV associates an attribute with a packet, a message, or one or + more consecutive address objects in an Address Block. The + interpretation and processing of this attribute, and the relationship + + + + + +Clausen, et al. Standards Track [Page 17] + +RFC 5444 MANET Packet Format February 2009 + + + (including order of processing) between different attributes + associated with the same entity MUST be defined by any protocol that + uses this specification. + + Any protocol using this specification MUST define appropriate + behaviors if this associated information is inconsistent, in + particular if two TLVs of the same type but with different values + apply to the same entity (packet, message, or address) but this is + not meaningful. The protocol MUST also specify an appropriate + processing order for TLVs associated with a given entity. + +5.5. Malformed Elements + + An element is malformed if it cannot be parsed according to its + syntactical specification (including if there are insufficient octets + available). If the malformed element is in the Packet Header, then + the packet MUST be silently discarded, and contained messages MUST + NOT be processed and MUST NOT be forwarded. If the malformed element + is contained in a message (i.e., is in the Message TLV Block, an + Address Block, or an Address Block TLV Block), then that message MUST + be silently discarded; it MUST NOT be processed and MUST NOT be + forwarded. + +6. IANA Considerations + + This document introduces four namespaces that have been registered: + Message Types, Packet TLV Types, Message TLV Types, and Address Block + TLV Types. This section specifies IANA registries for these + namespaces and provides guidance to the Internet Assigned Numbers + Authority regarding registrations in these namespaces. + + The following terms are used with the meanings defined in [BCP26]: + "Namespace", "Assigned Value", "Registration", "Unassigned", + "Reserved", "Hierarchical Allocation", and "Designated Expert". + + The following policies are used with the meanings defined in [BCP26]: + "Private Use", "Expert Review", and "Standards Action". + +6.1. Expert Review: Evaluation Guidelines + + For registration requests where an Expert Review is required, the + Designated Expert SHOULD take the following general recommendations + into consideration: + + o The purpose of these registries is to support Standard and + Experimental MANET routing and related protocols and extensions to + these protocols. + + + + +Clausen, et al. Standards Track [Page 18] + +RFC 5444 MANET Packet Format February 2009 + + + o The intention is that all registrations will be accompanied by a + published RFC. + + o In order to allow for registration prior to the RFC being approved + for publication, the Designated Expert can approve the + registration once it seems clear that an RFC is expected to be + published. + + o The Designated Expert will post a request to the MANET WG mailing + list, or to a successor thereto as designated by the Area + Director, for comments and reviews. This request will include a + reference to the Internet-Draft requesting the registration. + + o Before a period of 30 days has passed, the Designated Expert will + either approve or deny the registration request and publish a note + of the decision to the MANET WG mailing list or its successor, as + well as inform IANA and the IESG. A denial note MUST be justified + by an explanation and, in cases where it is possible, suggestions + as to how the request can be modified so as to become acceptable + SHOULD be provided. + + For the registry for Message Types, the following guidelines apply: + + o Registration of a Message Type implies creation of two registries + for Message-Type-specific Message TLVs and Message-Type-specific + Address Block TLVs. The document that requests the registration + of the Message Type MUST indicate how these Message-Type-specific + TLV Types are to be allocated, from any options in [BCP26], and + any initial allocations. The Designated Expert SHOULD take the + allocation policies specified for these registries into + consideration in reviewing the Message Type allocation request. + + For the registries for Packet TLV Types, Message TLV Types, and + Address Block TLV Types, the following guidelines apply: + + o These are Hierarchical Allocations, i.e., allocation of a type + creates a registry for the extended types corresponding to that + type. The document that requests the registration of the type + MUST indicate how these extended types are to be allocated, from + any options in [BCP26], and any initial allocations. Normally + this allocation should also undergo Expert Review, but with the + possible allocation of some type extensions as Reserved, + Experimental, and/or Private. + + o The request for a TLV Type MUST include the specification of the + permitted size, syntax of any internal structure, and meaning, of + the Value field (if any) of the TLV. + + + + +Clausen, et al. Standards Track [Page 19] + +RFC 5444 MANET Packet Format February 2009 + + + For the registries for Message TLV Types and Address Block TLV Types, + the following additional guidelines apply: + + o TLV Type values 0-127 are common for all Message Types. TLVs that + receive registrations from the 0-127 interval SHOULD be modular in + design to allow reuse among protocols. + + o TLV Type values 128-223 are Message-Type-specific TLV Type values, + relevant only in the context of the containing Message Type. + Registration of TLV Type values within the 128-223 interval + requires that a registry in the 128-223 interval exists for a + specific Message Type value (see Section 6.2.1), and registrations + are made in accordance with the allocation policies specified for + these Message-Type-specific registries. Message-Type-specific TLV + Types SHOULD be registered for TLVs that the Designated Expert + deems too Message-Type-specific for registration of a 0-127 value. + Multiple different TLV definitions MAY be assigned the same TLV + Type value within the 128-223 interval, given that they are + associated with different Message-Type-specific TLV Type + registries. Where possible, existing global TLV definitions and + modular global TLV definitions for registration in the 0-127 range + SHOULD be used. + +6.2. Message Types + + A new registry for Message Types has been created, with initial + assignments and allocation policies as specified in Table 6. + + +---------+-------------+-------------------+ + | Type | Description | Allocation Policy | + +---------+-------------+-------------------+ + | 0-223 | Unassigned | Expert Review | + | 224-255 | Unassigned | Experimental Use | + +---------+-------------+-------------------+ + + Table 6: Message Types + +6.2.1. Message-Type-Specific TLV Registry Creation + + When a Message Type is registered, then registries MUST be specified + for both Message-Type-specific Message TLVs (Table 8) and Message- + Type-specific Address Block TLVs (Table 10). A document that creates + a Message-Type-specific TLV registry MUST also specify the mechanism + by which Message-Type-specific TLV Types are allocated, from among + those in [BCP26]. + + + + + + +Clausen, et al. Standards Track [Page 20] + +RFC 5444 MANET Packet Format February 2009 + + +6.3. Packet TLV Types + + A new registry for Packet TLV Types has been created, with initial + assignments and allocation policies as specified in Table 7. + + +---------+-------------+-------------------+ + | Type | Description | Allocation Policy | + +---------+-------------+-------------------+ + | 0-223 | Unassigned | Expert Review | + | 224-255 | Unassigned | Experimental Use | + +---------+-------------+-------------------+ + + Table 7: Packet TLV Types + +6.3.1. Packet TLV Type Extension Registry Creation + + When a Packet TLV Type is registered, then a new registry for type + extensions of that type must be created. A document that defines a + Packet TLV Type MUST also specify the mechanism by which its type + extensions are allocated, from among those in [BCP26]. + +6.4. Message TLV Types + + A new registry for Message-Type-independent Message TLV Types has + been created, with initial assignments and allocation policies as + specified in Table 8. + + +---------+-----------------------+-----------------------+ + | Type | Description | Allocation Policy | + +---------+-----------------------+-----------------------+ + | 0-127 | Unassigned | Expert Review | + | 128-223 | Message-Type-specific | Reserved, see Table 9 | + | 224-255 | Unassigned | Experimental Use | + +---------+-----------------------+-----------------------+ + + Table 8: Message TLV Types + + Message TLV Types 128-223 are reserved for Message-Type-specific + Message TLVs, for which a new registry is created with the + registration of a Message Type, and with initial assignments and + allocation policies as specified in Table 9. + + + + + + + + + + +Clausen, et al. Standards Track [Page 21] + +RFC 5444 MANET Packet Format February 2009 + + + +---------+-----------------------------+-------------------+ + | Type | Description | Allocation Policy | + +---------+-----------------------------+-------------------+ + | 0-127 | Common to all Message Types | Reserved | + | 128-223 | Message-Type-specific | See Below | + | 224-255 | Common to all Message Types | Reserved | + +---------+-----------------------------+-------------------+ + + Table 9: Message-Type-specific Message TLV Types + + Allocation policies for Message-Type-specific Message TLV Types MUST + be specified when creating the registry associated with the + containing Message Type, see Section 6.2.1. + +6.4.1. Message TLV Type Extension Registry Creation + + If a Message TLV Type is registered, then a new registry for type + extensions of that type must be created. A document that defines a + Message TLV Type MUST also specify the mechanism by which its type + extensions are allocated, from among those in [BCP26]. + +6.5. Address Block TLV Types + + A new registry for Message-Type-independent Address Block TLV Types + has been created, with initial assignments and allocation policies as + specified in Table 10. + + +---------+-----------------------+------------------------+ + | Type | Description | Allocation Policy | + +---------+-----------------------+------------------------+ + | 0-127 | Unassigned | Expert Review | + | 128-223 | Message-Type-specific | Reserved, see Table 11 | + | 224-255 | Unassigned | Experimental Use | + +---------+-----------------------+------------------------+ + + Table 10: Address Block TLV Types + + Address Block TLV Types 128-223 are reserved for Message-Type- + specific Address Block TLVs, for which a new registry is created with + the registration of a Message Type, and with initial assignments and + allocation policies as specified in Table 11. + + + + + + + + + + +Clausen, et al. Standards Track [Page 22] + +RFC 5444 MANET Packet Format February 2009 + + + +---------+-----------------------------+-------------------+ + | Type | Description | Allocation Policy | + +---------+-----------------------------+-------------------+ + | 0-127 | Common to all Message Types | Reserved | + | 128-223 | Message-Type-specific | See Below | + | 224-255 | Common to all Message Types | Reserved | + +---------+-----------------------------+-------------------+ + + Table 11: Message-Type-specific Address Block TLV Types + + Allocation policies for Message-Type-specific Address Block TLV Types + MUST be specified when creating the registry associated with the + containing Message Type, see Section 6.2.1. + +6.5.1. Address Block TLV Type Extension Registry Creation + + When an Address Block TLV Type is registered, then a new registry for + type extensions of that type must be created. A document that + defines a Message TLV Type MUST also specify the mechanism by which + its type extensions are allocated, from among those in [BCP26]. + +7. Security Considerations + + This specification does not describe a protocol; it describes a + packet format. As such, it does not specify any security + considerations; these are matters for a protocol using this + specification. However, some security mechanisms are enabled by this + specification and may form part of a protocol using this + specification. Mechanisms that may form part of an authentication + and integrity approach in a protocol using this specification are + described in Section 7.1. Mechanisms that may form part of a + confidentiality approach in a protocol using this specification are + described in Section 7.2. There is, however, no requirement that a + protocol using this specification should use either. + +7.1. Authentication and Integrity Suggestions + + The authentication and integrity suggestions made here are based on + the intended usage in Appendix B, specifically that: + + o Messages are designed to be carriers of protocol information and + MAY, at each hop, be forwarded and/or processed by the protocol + using this specification. + + o Packets are designed to carry a number of messages between + neighboring MANET routers in a single transmission and over a + single logical hop. + + + + +Clausen, et al. Standards Track [Page 23] + +RFC 5444 MANET Packet Format February 2009 + + + Consequently: + + o For forwarded messages where the message is unchanged by + forwarding MANET routers, end-to-end authentication and integrity + MAY be implemented, between MANET routers with an existing + security association, by including a suitable Message TLV + containing a cryptographic signature in the message. Since <msg- + hop-count> and <msg-hop-limit> are the only fields that should be + modified when such a message is forwarded in this manner, this + signature can be calculated based on the entire message, including + the Message Header, with the <msg-hop-count> and <msg-hop-limit> + fields set to 0, if present. + + o Hop-by-hop packet level authentication and integrity MAY be + implemented, between MANET routers with an existing security + association, by including a suitable Packet TLV containing a + cryptographic signature to the packet. Since packets are received + as transmitted, this signature can be calculated based on the + entire packet or on parts thereof as appropriate. + +7.2. Confidentiality Suggestions + + This specification does not explicitly enable protecting packet/ + message confidentiality. Such confidentiality would normally, when + required, be provided hop-by-hop, either by link-layer mechanisms or + at the IP layer using [RFC4301], and would apply to a packet only. + + It is possible, however, for a protocol using this specification to + protect the confidentiality of information included in a Packet, + Message, or Address Block TLV by specifying that the Value field of + that TLV Type be encrypted, as well as specifying the encryption + mechanism. + + In an extreme case, all information can be encrypted by defining + either: + + o A packet, consisting of only a Packet Header (with no messages) + and containing a Packet TLV, where the Packet TLV Type indicates + that its Value field contains one or more encrypted messages. + Upon receipt, and once this Packet TLV is successfully decrypted, + these messages may then be parsed according to this specification + and processed according to the protocol using this specification. + + o A message, consisting of only a Message Header and a single + Message TLV, where the Message TLV Type indicates that its Value + field contains an encrypted version of the message's remaining + Message TLVs, Address Blocks, and Address Block TLVs. Upon + receipt, and once this Message TLV is successfully decrypted, the + + + +Clausen, et al. Standards Track [Page 24] + +RFC 5444 MANET Packet Format February 2009 + + + complete message may then be parsed according to this + specification and processed according to the protocol using this + specification. + + In either case, the protocol MUST define the encrypted TLV Type, as + well as the format of the encrypted data block contained in the Value + field of the TLV. + +8. Contributors + + This specification is the result of the joint efforts of the + following contributors from the OLSRv2 Design Team, listed + alphabetically: + + o Cedric Adjih, INRIA, France, <Cedric.Adjih@inria.fr> + + o Emmanuel Baccelli, INRIA, France, <Emmanuel.Baccelli@inria.fr> + + o Thomas Heide Clausen, LIX, Ecole Polytechnique, France, + <T.Clausen@computer.org> + + o Justin W. Dean, NRL, USA, <jdean@itd.nrl.navy.mil> + + o Christopher Dearlove, BAE Systems, UK, + <chris.dearlove@baesystems.com> + + o Satoh Hiroki, Hitachi SDL, Japan, <hiroki.satoh.yj@hitachi.com> + + o Philippe Jacquet, INRIA, France, <Philippe.Jacquet@inria.fr> + + o Monden Kazuya, Hitachi SDL, Japan, <kazuya.monden.vw@hitachi.com> + +9. Acknowledgments + + The authors would like to acknowledge the team behind OLSR [RFC3626], + including Anis Laouiti (INT, France), Pascale Minet, Laurent Viennot + (both at INRIA, France), and Amir Qayyum (Center for Advanced + Research in Engineering, Pakistan) for their contributions. Elwyn + Davies (Folly Consulting, UK), Lars Eggert (Nokia, Finland), Chris + Newman (Sun Microsystems, USA), Tim Polk (NIST, USA), and Magnus + Westerlund (Ericsson, Sweden) all provided detailed reviews and + insightful comments. + + The authors would like to gratefully acknowledge the following people + for intense technical discussions, early reviews, and comments on the + specification and its components (listed alphabetically): + + + + + +Clausen, et al. Standards Track [Page 25] + +RFC 5444 MANET Packet Format February 2009 + + + o Brian Adamson (NRL) + + o Teco Boot (Infinity Networks) + + o Florent Brunneau (LIX) + + o Ian Chakeres (CenGen) + + o Alan Cullen (BAE Systems) + + o Ulrich Herberg (LIX) + + o Joe Macker (NRL) + + o Yasunori Owada (Niigata University) + + o Charlie E. Perkins (WiChorus) + + o Henning Rogge (FGAN) + + o Andreas Schjonhaug (LIX) + + and the entire IETF MANET working group. + +10. References + +10.1. Normative References + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", RFC 2119, BCP 14, March 1997. + + [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing + Architecture", RFC 4291, February 2006. + + [BCP26] Narten, T. and H. Alvestrand, "Guidelines for Writing + an IANA Considerations Section in RFCs", BCP 26, + RFC 5226, May 2008. + + [SingleUNIX] IEEE Std 1003.1, The Open Group, and ISO/IEC JTC + 1/SC22/WG15, "Single UNIX Specification, Version 3, + 2004 Edition", April 2004. + + + + + + + + + + +Clausen, et al. Standards Track [Page 26] + +RFC 5444 MANET Packet Format February 2009 + + +10.2. Informative References + + [RFC3626] Clausen, T. and P. Jacquet, "The Optimized Link State + Routing Protocol", RFC 3626, October 2003. + + [RFC4301] Kent, S. and K. Seo, "Security Architecture for the + Internet Protocol", RFC 4301, December 2005. + + [Stevens] Stevens, W., "TCP/IP Illustrated Volume 1 - The + Protocols", 1994. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Clausen, et al. Standards Track [Page 27] + +RFC 5444 MANET Packet Format February 2009 + + +Appendix A. Multiplexing and Demultiplexing + + The packet and message format specified in this document is designed + to allow zero or more messages to be contained within a single + packet. Such messages may be from the same or different protocols. + Thus, a multiplexing and demultiplexing process MUST be present. + + Multiplexing messages on a given MANET router into a single packet, + rather than having each message generate its own packet, reduces the + total number of octets and the number of packets transmitted by that + MANET router. + + The multiplexing and demultiplexing process running on a given UDP + port or IP protocol number, and its associated protocols, MUST: + + o For each Message Type, a protocol -- unless specified otherwise, + the one making the IANA reservation for that Message Type -- MUST + be designated as the "owner" of that Message Type. + + o The Packet Header fields, including the Packet TLV Block, are used + by the multiplexing and demultiplexing process, which MAY make + such information available for use in its protocol instances. + + o The <pkt-seq-num> field, if present, contains a sequence number + that is incremented by 1 for each packet generated by a node. The + sequence number after 65535 is 0. In other words, the sequence + number "wraps" in the usual way. + + o Incoming messages MUST be either silently discarded or MUST be + delivered to the instance of the protocol that owns the associated + Message Type. Incoming messages SHOULD NOT be delivered to any + other protocol instances and SHOULD NOT be delivered to more than + one protocol instance. + + o Outgoing messages of a given type MUST be generated only by the + protocol instance that owns that Message Type and be delivered to + the multiplexing and demultiplexing process. + + o If two protocols both wish to use the same Message Type, then this + interaction SHOULD be specified by the protocol that is the + designated owner of that Message Type. + +Appendix B. Intended Usage + + This appendix describes the intended usage of Message Header fields, + including their content and use. Alternative uses of this + specification are permitted. + + + + +Clausen, et al. Standards Track [Page 28] + +RFC 5444 MANET Packet Format February 2009 + + + The message format specified in this document is designed to carry + MANET routing protocol signaling between MANET routers and to support + scope-limited flooding as well as point-to-point delivery. + + Messages are designed to be able to be forwarded over one or more + logical hops, in a new packet for each logical hop. Each logical hop + may consist of one or more IP hops. + + Specifically, scope-limited flooding is supported for messages when: + + o The <msg-orig-addr> field, if present, contains the unique + identifier of the MANET router that originated the message. + + o The <msg-seq-num> field, if present, contains a sequence number + that starts at 0 when the first message of a given type is + generated by the originator node, and that is incremented by 1 for + each message generated of that type. The sequence number after + 65535 is 0. In other words, the sequence number "wraps" in the + usual way. + + o If the <msg-orig-addr> and <msg-seq-num> fields are both present, + then the Message Header provides for duplicate suppression, using + the identifier consisting of the message's <msg-orig-addr>, <msg- + seq-num>, and <msg-type>. These serve to uniquely identify the + message in the MANET within the time period until <msg-seq-num> is + repeated, i.e., wraps around to a matching value. + + o <msg-hop-limit> field, if present, contains the number of hops on + which the packet is allowed to travel before being discarded by a + MANET router. The <msg-hop-limit> is set by the message + originator and is used to prevent messages from endlessly + circulating in a MANET. When forwarding a message, a MANET router + should decrease the <msg-hop-limit> by 1, and the message should + be discarded when <msg-hop-limit> reaches 0. + + o <msg-hop-count> field, if present, contains the number of hops on + which the packet has traveled across the MANET. The <msg-hop- + count> is set to 0 by the message originator and is used to + prevent messages from endlessly circulating in a MANET. When + forwarding a message, a MANET router should increase <msg-hop- + count> by 1 and should discard the message when <msg-hop-count> + reaches 255. + + o If the <msg-hop-limit> and <msg-hop-count> fields are both + present, then the Message Header provides the information to make + forwarding decisions for scope-limited flooding. This may be by + any appropriate flooding mechanism specified by a protocol using + this specification. + + + +Clausen, et al. Standards Track [Page 29] + +RFC 5444 MANET Packet Format February 2009 + + +Appendix C. Examples + + This appendix contains some examples of parts of this specification. + +C.1. Address Block Examples + + The following examples illustrate how some combinations of addresses + may be efficiently included in Address Blocks. These examples are + for IPv4, with address-length equal to 4. a, b, c, etc. represent + distinct, non-zero octet values. + + Note that it is permissible to use a less efficient representation, + in particular one in which the ahashead and ahasfulltail flags are + cleared ('0'), and hence head-length = 0, tail-length = 0, mid-length + = address-length, and (with no address prefixes) the Address Block + consists of the number of addresses, <addr-flags> with value 0, and a + list of the unaggregated addresses. This is the most efficient way + to represent a single address, and the only way to represent, for + example, a.b.c.d and e.f.g.h in one Address Block. + + Examples: + + o To include a.b.c.d, a.b.e.f, and a.b.g.h: + + * head-length = 2; + + * tail-length = 0; + + * mid-length = 2; + + * <addr-flags> has ahashead set (value 128); + + * <tail-length> and <tail> are omitted. + + The Address Block is then 3 128 2 a b c d e f g h (11 octets). + + o To include a.b.c.g and d.e.f.g: + + * head-length = 0; + + * tail-length = 1; + + * mid-length = 3; + + * <addr-flags> has ahasfulltail set (value 64); + + * <head-length> and <head> are omitted. + + + + +Clausen, et al. Standards Track [Page 30] + +RFC 5444 MANET Packet Format February 2009 + + + The Address Block is then 2 64 1 g a b c d e f (10 octets). + + o To include a.b.d.e and a.c.d.e: + + * head-length = 1; + + * tail-length = 2; + + * mid-length = 1; + + * <addr-flags> has ahashead and ahasfulltail set (value 192). + + The Address Block is then 2 192 1 a 2 d e b c (9 octets). + + o To include a.b.0.0, a.c.0.0, and a.d.0.0: + + * head-length = 1; + + * tail-length = 2; + + * mid-length = 1; + + * <addr-flags> has ahashead and ahaszerotail set (value 160); + + * <tail> is omitted. + + The Address Block is then 3 160 1 a 2 b c d (8 octets). + + o To include a.b.0.0 and c.d.0.0: + + * head-length = 0; + + * tail-length = 2; + + * mid-length = 2; + + * <addr-flags> has ahaszerotail set (value 32); + + * <head> and <tail> are omitted. + + The Address Block is then 2 32 2 a b c d (7 octets). + + o To include a.b.0.0/n and c.d.0.0/n: + + * head-length = 0; + + * tail-length = 2; + + + + +Clausen, et al. Standards Track [Page 31] + +RFC 5444 MANET Packet Format February 2009 + + + * mid-length = 2; + + * <addr-flags> has ahaszerotail and ahassingleprelen set (value + 48); + + * <head> and <tail> are omitted. + + The Address Block is then 2 48 2 a b c d n (8 octets). + + o To include a.b.0.0/n and c.d.0.0/m: + + * head-length = 0; + + * tail-length = 2; + + * mid-length = 2; + + * <addr-flags> has ahaszerotail and ahasmultiprelen set (value + 40); + + * <head> and <tail> are omitted. + + The Address Block is then 2 40 2 a b c d n m (9 octets). + +C.2. TLV Examples + + Assume the definition of an Address Block TLV with type EXAMPLE1 (and + no type extension) that has single octet values per address. There + are a number of ways in which values a, a, b, and c may be associated + with the four addresses in the preceding Address Block, where c is a + default value that can be omitted. + + Examples: + + o Using one multivalue TLV to cover all of the addresses: + + * <tlv-flags> has thasvalue and tismultivalue set (value 20); + + * <index-start> and <index-stop> are omitted; + + * <length> = 4 (single-length = 1). + + * The TLV is then EXAMPLE1 20 4 a a b c (7 octets). + + o Using one multivalue TLV and omitting the last address: + + * <tlv-flags> has thasmultiindex, thasvalue, and tismultivalue + set (value 52); + + + +Clausen, et al. Standards Track [Page 32] + +RFC 5444 MANET Packet Format February 2009 + + + * <index-start> = 0; + + * <index-stop> = 2; + + * <length> = 3 (single-length = 1). + + * The TLV is then EXAMPLE1 52 0 2 3 a a b (8 octets). + + o Using two single value TLVs and omitting the last address. First: + + * <tlv-flags> has thasmultiindex and thasvalue set (value 48); + + * <index-start> = 0; + + * <index-stop> = 1; + + * <length> = 1; + + * <value> = a. + + * The TLV is then EXAMPLE1 48 0 1 1 a (6 octets). + + Second: + + * <tlv-flags> has thassingleindex and thasvalue set (value 80); + + * <index-start> = 2; + + * <index-stop> is omitted; + + * <length> = 1; + + * <value> = b. + + * The TLV is then EXAMPLE1 80 2 1 b (5 octets). + + Total length of TLVs is 11 octets. + + In this case, the first of these is the most efficient. In other + cases, patterns such as the others may be preferred. Regardless of + efficiency, any of these may be used. + + Assume the definition of an Address Block TLV with type EXAMPLE2 (and + no type extension) that has no value and that is to be associated + with the second and third addresses in an Address Block. This can be + indicated with a single TLV: + + + + + +Clausen, et al. Standards Track [Page 33] + +RFC 5444 MANET Packet Format February 2009 + + + o <tlv-flags> has thasmultiindex set (value 32); + + o <index-start> = 1; + + o <index-stop> = 2; + + o <length> and <value> are omitted. + + o The TLV is then EXAMPLE2 32 1 2 (4 octets). + + Assume the definition of a Message TLV with type EXAMPLE3 (and no + type extension) that can take a Value field of any length. For such + a TLV with 8 octets of data (a to h): + + o <tlv-flags> has thasvalue set (value 16); + + o <index-start> and <index-stop> are omitted; + + o <length> = 8. + + o The TLV is then EXAMPLE3 16 8 a b c d e f g h (11 octets). + + If, in this example, the number of data octets were 256 or greater, + then <tlv-flags> would also have thasextlen set and have value 24. + The length would require two octets (most significant first). The + TLV length would be 4 + N octets, where N is the number of data + octets (it can be 3 + N octets if N is 255 or less). + +Appendix D. Illustrations + + This informative appendix illustrates the elements that are + normatively specified in Section 5. + + Bits labeled Rsv should be cleared ('0'). Bits labeled M may be + cleared ('0') or set ('1'). + +D.1. Packet + + This section illustrates possible options for the <packet> element. + These are differentiated by the flags field in the first octet. The + packet may include any number (zero or more) of messages. The number + of messages is determined from when the packet is exhausted, given + the packet length from the network layer. + + + + + + + + +Clausen, et al. Standards Track [Page 34] + +RFC 5444 MANET Packet Format February 2009 + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |0|0|0|0|0|0|Rsv| | + +-+-+-+-+-+-+-+-+ | + | Message | + | | + | +-+-+-+-+-+-+-+-+ + | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | Message | + | +-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |0|0|0|0|1|0|Rsv| Packet Sequence Number | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | Message | + | | + | +-+-+-+-+-+-+-+-+ + | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | Message | + | +-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + + + + + +Clausen, et al. Standards Track [Page 35] + +RFC 5444 MANET Packet Format February 2009 + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |0|0|0|0|0|1|Rsv| | + +-+-+-+-+-+-+-+-+ | + | | + | Packet TLV Block | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | | + +-+-+-+-+-+-+-+-+ | + | Message | + | | + | +-+-+-+-+-+-+-+-+ + | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | Message | + | +-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + + + + + + + + + + + + + + + + + + + + + + +Clausen, et al. Standards Track [Page 36] + +RFC 5444 MANET Packet Format February 2009 + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |0|0|0|0|1|1|Rsv| Packet Sequence Number | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | Packet TLV Block | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | Message | + | | + | +-+-+-+-+-+-+-+-+ + | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | Message | + | +-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + + + + + + + + + + + + + + + + + + + + + +Clausen, et al. Standards Track [Page 37] + +RFC 5444 MANET Packet Format February 2009 + + +D.2. Message + + This section illustrates possible options for the <message> element. + These are differentiated by their second (flags) octet. The length + of the Message Body is determined using the Message Size field, which + is the combined length of all the fields shown. The field labeled + MAL defines the length of all addresses (including the Originator + Address, if present, and all addresses in Address Blocks) in octets, + as one more than the value in the field. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Message Type |0|0|0|0| MAL | Message Size | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + | Message Body | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Message Type |1|0|0|0| MAL | Message Size | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Originator Address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + | Message Body | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Message Type |0|1|0|0| MAL | Message Size | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Hop Limit | | + +-+-+-+-+-+-+-+-+ | + | Message Body | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + +Clausen, et al. Standards Track [Page 38] + +RFC 5444 MANET Packet Format February 2009 + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Message Type |1|1|0|0| MAL | Message Size | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Originator Address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Hop Limit | | + +-+-+-+-+-+-+-+-+ | + | Message Body | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Message Type |0|0|1|0| MAL | Message Size | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Hop Count | | + +-+-+-+-+-+-+-+-+ | + | Message Body | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Message Type |1|0|1|0| MAL | Message Size | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Originator Address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Hop Count | | + +-+-+-+-+-+-+-+-+ | + | Message Body | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + + + + + + + +Clausen, et al. Standards Track [Page 39] + +RFC 5444 MANET Packet Format February 2009 + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Message Type |0|1|1|0| MAL | Message Size | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Hop Limit | Hop Count | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | Message Body | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Message Type |1|1|1|0| MAL | Message Size | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Originator Address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Hop Limit | Hop Count | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | Message Body | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Message Type |0|0|0|1| MAL | Message Size | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Message Sequence Number | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | Message Body | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + + + + + + +Clausen, et al. Standards Track [Page 40] + +RFC 5444 MANET Packet Format February 2009 + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Message Type |1|0|0|1| MAL | Message Size | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Originator Address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Message Sequence Number | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | Message Body | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Message Type |0|1|0|1| MAL | Message Size | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Hop Limit | Message Sequence Number | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | Message Body | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Message Type |1|1|0|1| MAL | Message Size | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Originator Address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Hop Limit | Message Sequence Number | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | Message Body | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + + + + +Clausen, et al. Standards Track [Page 41] + +RFC 5444 MANET Packet Format February 2009 + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Message Type |0|0|1|1| MAL | Message Size | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Hop Count | Message Sequence Number | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | Message Body | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Message Type |1|0|1|1| MAL | Message Size | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Originator Address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Hop Count | Message Sequence Number | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | Message Body | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Message Type |0|1|1|1| MAL | Message Size | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Hop Limit | Hop Count | Message Sequence Number | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + | Message Body | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + + + + + + +Clausen, et al. Standards Track [Page 42] + +RFC 5444 MANET Packet Format February 2009 + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Message Type |1|1|1|1| MAL | Message Size | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Originator Address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Hop Limit | Hop Count | Message Sequence Number | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + | Message Body | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Clausen, et al. Standards Track [Page 43] + +RFC 5444 MANET Packet Format February 2009 + + +D.3. Message Body + + This section illustrates the format of a Message Body (the <message> + element excluding its initial <msg-header> element). The Message + Body includes one Message TLV Block (containing zero or more TLVs) + and may include any number (zero or more) of Address Block and + Address Block TLV Block pairs. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + | Message TLV Block | + | +-+-+-+-+-+-+-+-+ + | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | Address Block | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | | + +-+-+-+-+-+-+-+-+ | + | Address Block TLV Block | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+ + | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | Address Block | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | Address Block TLV Block | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + + + + +Clausen, et al. Standards Track [Page 44] + +RFC 5444 MANET Packet Format February 2009 + + +D.4. Address Block + + This section illustrates possible options for the <addr-block> + element. These are differentiated by their second (flags) octet. + The number of Mid elements is equal to the number of addresses + (except when mid-length is zero, when there are no Mid elements). + Where a variable number of prefix length fields is shown, their + number is equal to the number of addresses. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Number Addrs |0|0|0|0|0| Rsv | Mid | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Mid (cont) | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | Mid | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Mid (cont) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Number Addrs |1|0|0|0|0| Rsv | Head Length | Head | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Head (cont) | Mid | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | Mid | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + + + + + + + + + + + +Clausen, et al. Standards Track [Page 45] + +RFC 5444 MANET Packet Format February 2009 + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Number Addrs |0|1|0|0|0| Rsv | Tail Length | Tail | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Tail (cont) | Mid | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | Mid | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Number Addrs |1|1|0|0|0| Rsv | Head Length | Head | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Head (cont) | Tail Length | Tail | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Mid | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | Mid | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Number Addrs |0|0|1|0|0| Rsv | Tail Length | Mid | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Mid (cont) | | + +-+-+-+-+-+-+-+-+ | + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | Mid | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + + + + + + +Clausen, et al. Standards Track [Page 46] + +RFC 5444 MANET Packet Format February 2009 + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Number Addrs |1|0|1|0|0| Rsv | Head Length | Head | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Head (cont) | Tail Length | Mid | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + : ... : + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Mid | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Number Addrs |0|0|0|1|0| Rsv | Mid | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Mid (cont) | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | Mid | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Mid (cont) | Prefix Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Number Addrs |1|0|0|1|0| Rsv | Head Length | Head | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Head (cont) | Mid | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | Mid | Prefix Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + + + + + + +Clausen, et al. Standards Track [Page 47] + +RFC 5444 MANET Packet Format February 2009 + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Number Addrs |0|1|0|1|0| Rsv | Tail Length | Tail | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Tail (cont) | Mid | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | Mid | Prefix Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Number Addrs |1|1|0|1|0| Rsv | Head Length | Head | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Head (cont) | Tail Length | Tail | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Mid | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | Mid | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Prefix Length | + +-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Number Addrs |0|0|1|1|0| Rsv | Tail Length | Mid | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Mid (cont) | | + +-+-+-+-+-+-+-+-+ | + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | Mid | Prefix Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + + + + +Clausen, et al. Standards Track [Page 48] + +RFC 5444 MANET Packet Format February 2009 + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Number Addrs |1|0|1|1|0| Rsv | Head Length | Head | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Head (cont) | Tail Length | Mid | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + : ... : + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Mid | Prefix Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Number Addrs |0|0|0|0|1| Rsv | Mid | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Mid (cont) | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | Mid | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Mid (cont) | Prefix Length | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | Prefix Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + + + + + + + + + + + + + + +Clausen, et al. Standards Track [Page 49] + +RFC 5444 MANET Packet Format February 2009 + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Number Addrs |1|0|0|0|1| Rsv | Head Length | Head | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Head (cont) | Mid | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | Mid | Prefix Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | Prefix Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Number Addrs |0|1|0|0|1| Rsv | Tail Length | Tail | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Tail (cont) | Mid | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | Mid | Prefix Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | Prefix Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + + + + + + + + + + +Clausen, et al. Standards Track [Page 50] + +RFC 5444 MANET Packet Format February 2009 + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Number Addrs |1|1|0|0|1| Rsv | Head Length | Head | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Head (cont) | Tail Length | Tail | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Mid | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | Mid | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Prefix Length | | + +-+-+-+-+-+-+-+-+ | + : ... : + | +-+-+-+-+-+-+-+-+ + | | Prefix Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Number Addrs |0|0|1|0|1| Rsv | Tail Length | Mid | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Mid (cont) | | + +-+-+-+-+-+-+-+-+ | + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | Mid | Prefix Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | Prefix Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + + + + + + + + +Clausen, et al. Standards Track [Page 51] + +RFC 5444 MANET Packet Format February 2009 + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Number Addrs |1|0|1|0|1| Rsv | Head Length | Head | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Head (cont) | Tail Length | Mid | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + : ... : + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Mid | Prefix Length | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | Prefix Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +D.5. TLV Block + + This section illustrates the format of a <tlv-block> element. There + may be any number (zero or more) of TLVs, with total length of the + TLVs (in octets) equal to the Length field. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Length | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | TLV | + | +-+-+-+-+-+-+-+-+ + | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + : ... : + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | TLV | + | +-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + + +Clausen, et al. Standards Track [Page 52] + +RFC 5444 MANET Packet Format February 2009 + + +D.6. TLV + + This section illustrates possible options for the <tlv> element. + These are differentiated by their second (flags) octet. If there are + no Index fields, then this may be a Packet TLV, Message TLV, or + Address Block TLV; if there are one or two Index fields, then this + must be an Address Block TLV. The Length field gives the length of + the Value field (in octets). + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type |0|0|0|0|0|0|Rsv| + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type |1|0|0|0|0|0|Rsv| Type Ext | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type |0|1|0|0|0|0|Rsv| Index Start | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type |1|1|0|0|0|0|Rsv| Type Ext | Index Start | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type |0|0|1|0|0|0|Rsv| Index Start | Index Stop | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type |1|0|1|0|0|0|Rsv| Type Ext | Index Start | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Index Stop | + +-+-+-+-+-+-+-+-+ + + + + + +Clausen, et al. Standards Track [Page 53] + +RFC 5444 MANET Packet Format February 2009 + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type |0|0|0|1|0|M|Rsv| Length | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | Value | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type |1|0|0|1|0|M|Rsv| Type Ext | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + | Value | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type |0|1|0|1|0|0|Rsv| Index Start | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + | Value | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type |1|1|0|1|0|0|Rsv| Type Ext | Index Start | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Length | | + +-+-+-+-+-+-+-+-+ | + | Value | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+ + + + +Clausen, et al. Standards Track [Page 54] + +RFC 5444 MANET Packet Format February 2009 + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type |0|0|1|1|0|M|Rsv| Index Start | Index Stop | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Length | | + +-+-+-+-+-+-+-+-+ | + | Value | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type |1|0|1|1|0|M|Rsv| Type Ext | Index Start | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Index Stop | Length | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | Value | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type |0|0|0|0|1|M|Rsv| Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + | Value | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+ + + + + + + + + + + + + + +Clausen, et al. Standards Track [Page 55] + +RFC 5444 MANET Packet Format February 2009 + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type |1|0|0|1|1|M|Rsv| Type Ext | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Length (cont) | | + +-+-+-+-+-+-+-+-+ | + | Value | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type |0|1|0|1|1|0|Rsv| Index Start | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Length (cont) | | + +-+-+-+-+-+-+-+-+ | + | | + | Value | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type |1|1|0|1|1|0|Rsv| Type Ext | Index Start | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Length | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | Value | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+ + + + + + + + + + + + +Clausen, et al. Standards Track [Page 56] + +RFC 5444 MANET Packet Format February 2009 + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type |0|0|1|1|1|M|Rsv| Index Start | Index Stop | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Length | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | Value | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+ + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type |1|0|1|1|1|M|Rsv| Type Ext | Index Start | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Index Stop | Length | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + | | + | Value | + | | + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+ + +Appendix E. Complete Example + + The following example packet is included with the intent to exemplify + how Packet Headers and Message Headers are constructed, and how + addresses and attributes are encoded using Address Blocks and TLV + Blocks. This example is specifically not constructed to exhibit + maximum message or packet size reduction. + + The Packet Header has the phasseqnum flag of its flags field set + (value 8), and hence has a Packet Sequence Number, but no Packet TLV + Block. + + The packet contains a single message with length 54 octets. This + message has the mhasorig, mhashoplimit, mhashopcount, and mhasseqnum + flags of its four-bit flags field set (value 15), and hence includes + an Originator Address, a Hop Limit, a Hop Count, and a Message + Sequence Number (which is type independent). Its four-bit Message + Address Length field has value 3, and hence addresses in the message + have length four octets, here being IPv4 addresses. The message has + a Message TLV Block with content length 9 octets, containing a single + + + +Clausen, et al. Standards Track [Page 57] + +RFC 5444 MANET Packet Format February 2009 + + + Message TLV. This TLV has the thasvalue flag of its flags octet set + (value 16), and hence contains a Value field, with preceding Value + Length 6 octets. The message then has two Address Blocks, each with + a following Address Block TLV Block. + + The first Address Block contains 2 address prefixes. It has the + ahaszerotail and ahassingleprelen flags of its flags octet set (value + 48), and hence has no Head (head-length is zero octets). It has a + tail-length of 2 octets, hence mid-length is two octets. The two + Tail octets of each address are not included (since ahaszerotail is + set) and have value zero. The Address Block has a single prefix + length. The following Address Block TLV Block is empty (content + length 0 octets). + + The second Address Block contains 3 addresses. It has the ahashead + flag of its flags octet set (value 128), has head-length 2 octets, + and no Tail (tail-length is zero octets); hence, mid-length is two + octets. It is followed by an Address Block TLV Block, with content + length 9 octets, containing two Address Block TLVs. The first of + these TLVs has the thasvalue flag of its flags octet set (value 16), + and has a single value of length 2 octets, which applies to all of + the addresses in the Address Block. The second of these TLVs has the + thasmultiindex flag of its flags octet set (value 32), and hence has + no Value Length or Value fields. It has two Index fields (Index + Start and Index Stop), which indicate those addresses this TLV + applies to (inclusive range, counting from zero). + + + + + + + + + + + + + + + + + + + + + + + + + +Clausen, et al. Standards Track [Page 58] + +RFC 5444 MANET Packet Format February 2009 + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |0 0 0 0 1 0 0 0| Packet Sequence Number | Message Type | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |1 1 1 1 0 0 1 1|0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0| Orig Addr | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Originator Address (cont) | Hop Limit | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Hop Count | Message Sequence Number |0 0 0 0 0 0 0 0| + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |0 0 0 0 1 0 0 1| TLV Type |0 0 0 1 0 0 0 0|0 0 0 0 0 1 1 0| + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Value | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Value (cont) |0 0 0 0 0 0 1 0|0 0 1 1 0 0 0 0| + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |0 0 0 0 0 0 1 0| Mid | Mid | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Mid (cont) | Prefix Length |0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0| + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |0 0 0 0 0 0 1 1|1 0 0 0 0 0 0 0|0 0 0 0 0 0 1 0| Head | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Head (cont) | Mid | Mid | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Mid (cont) | Mid |0 0 0 0 0 0 0 0| + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |0 0 0 0 1 0 0 1| TLV Type |0 0 0 1 0 0 0 0|0 0 0 0 0 0 1 0| + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Value | TLV Type |0 0 1 0 0 0 0 0| + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Index Start | Index Stop | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + + + + + + + + + + + + + + + + +Clausen, et al. Standards Track [Page 59] + +RFC 5444 MANET Packet Format February 2009 + + +Authors' Addresses + + Thomas Heide Clausen + LIX, Ecole Polytechnique + + Phone: +33 6 6058 9349 + EMail: T.Clausen@computer.org + URI: http://www.thomasclausen.org/ + + + Christopher M. Dearlove + BAE Systems ATC + + Phone: +44 1245 242194 + EMail: chris.dearlove@baesystems.com + URI: http://www.baesystems.com/ + + + Justin W. Dean + Naval Research Laboratory + + Phone: +1 202 767 3397 + EMail: jdean@itd.nrl.navy.mil + URI: http://pf.itd.nrl.navy.mil/ + + + Cedric Adjih + INRIA Rocquencourt + + Phone: +33 1 3963 5215 + EMail: Cedric.Adjih@inria.fr + URI: http://menetou.inria.fr/~adjih/ + + + + + + + + + + + + + + + + + + + +Clausen, et al. Standards Track [Page 60] + |