draft-ietf-manet-packetbb-06.txt   draft-ietf-manet-packetbb-07.txt 
Mobile Ad hoc Networking (MANET) T. Clausen Mobile Ad hoc Networking (MANET) T. Clausen
Internet-Draft LIX, Ecole Polytechnique, France Internet-Draft LIX, Ecole Polytechnique, France
Intended status: Standards Track C. Dearlove Intended status: Standards Track C. Dearlove
Expires: December 22, 2007 BAE Systems Advanced Technology Expires: December 31, 2007 BAE Systems Advanced Technology
Centre Centre
J. Dean J. Dean
Naval Research Laboratory Naval Research Laboratory
C. Adjih C. Adjih
INRIA Rocquencourt INRIA Rocquencourt
June 20, 2007 June 29, 2007
Generalized MANET Packet/Message Format Generalized MANET Packet/Message Format
draft-ietf-manet-packetbb-06 draft-ietf-manet-packetbb-07
Status of this Memo Status of this Memo
By submitting this Internet-Draft, each author represents that any By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79. aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
skipping to change at page 1, line 40 skipping to change at page 1, line 40
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on December 22, 2007. This Internet-Draft will expire on December 31, 2007.
Copyright Notice Copyright Notice
Copyright (C) The IETF Trust (2007). Copyright (C) The IETF Trust (2007).
Abstract Abstract
This document specifies a multi-message packet format that may be This document specifies a multi-message packet format that may be
used by mobile ad hoc network routing and other protocols. used by mobile ad hoc network routing and other protocols.
skipping to change at page 2, line 24 skipping to change at page 2, line 24
3. Applicability Statement . . . . . . . . . . . . . . . . . . . 6 3. Applicability Statement . . . . . . . . . . . . . . . . . . . 6
4. Protocol Overview and Functioning . . . . . . . . . . . . . . 7 4. Protocol Overview and Functioning . . . . . . . . . . . . . . 7
5. Signaling Framework . . . . . . . . . . . . . . . . . . . . . 8 5. Signaling Framework . . . . . . . . . . . . . . . . . . . . . 8
5.1. Packets . . . . . . . . . . . . . . . . . . . . . . . . . 8 5.1. Packets . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.2. Messages . . . . . . . . . . . . . . . . . . . . . . . . . 9 5.2. Messages . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.2.1. Address Blocks . . . . . . . . . . . . . . . . . . . . 11 5.2.1. Address Blocks . . . . . . . . . . . . . . . . . . . . 11
5.3. TLVs and TLV Blocks . . . . . . . . . . . . . . . . . . . 13 5.3. TLVs and TLV Blocks . . . . . . . . . . . . . . . . . . . 13
5.3.1. TLVs . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.3.1. TLVs . . . . . . . . . . . . . . . . . . . . . . . . . 13
5.3.2. Constraints . . . . . . . . . . . . . . . . . . . . . 16 5.3.2. Constraints . . . . . . . . . . . . . . . . . . . . . 16
5.4. Padding . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.4. Padding . . . . . . . . . . . . . . . . . . . . . . . . . 16
6. TLV specification . . . . . . . . . . . . . . . . . . . . . . 17 6. TLV specification . . . . . . . . . . . . . . . . . . . . . . 18
6.1. Address Block TLV Specification . . . . . . . . . . . . . 17 6.1. Address Block TLV Specification . . . . . . . . . . . . . 18
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19
8. Security Considerations . . . . . . . . . . . . . . . . . . . 19 8. Security Considerations . . . . . . . . . . . . . . . . . . . 21
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 20 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 22
9.1. Normative References . . . . . . . . . . . . . . . . . . . 20 9.1. Normative References . . . . . . . . . . . . . . . . . . . 22
9.2. Informative References . . . . . . . . . . . . . . . . . . 20 9.2. Informative References . . . . . . . . . . . . . . . . . . 22
Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 21 Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 23
A.1. Address Block Examples . . . . . . . . . . . . . . . . . . 21 A.1. Address Block Examples . . . . . . . . . . . . . . . . . . 23
A.2. TLV Examples . . . . . . . . . . . . . . . . . . . . . . . 22 A.2. TLV Examples . . . . . . . . . . . . . . . . . . . . . . . 24
Appendix B. Illustrations . . . . . . . . . . . . . . . . . . . 25 Appendix B. Illustrations . . . . . . . . . . . . . . . . . . . 27
Appendix B.1. Packet . . . . . . . . . . . . . . . . . . . . . . . 25 Appendix B.1. Packet . . . . . . . . . . . . . . . . . . . . . . . 27
Appendix B.2. Message and Padding . . . . . . . . . . . . . . . . 27 Appendix B.2. Message and Padding . . . . . . . . . . . . . . . . 29
Appendix B.3. Message Body . . . . . . . . . . . . . . . . . . . . 33 Appendix B.3. Message Body . . . . . . . . . . . . . . . . . . . . 35
Appendix B.4. Address Block . . . . . . . . . . . . . . . . . . . 34 Appendix B.4. Address Block . . . . . . . . . . . . . . . . . . . 36
Appendix B.5. TLV Block . . . . . . . . . . . . . . . . . . . . . 36 Appendix B.5. TLV Block . . . . . . . . . . . . . . . . . . . . . 38
Appendix B.6. TLV . . . . . . . . . . . . . . . . . . . . . . . . 36 Appendix B.6. TLV . . . . . . . . . . . . . . . . . . . . . . . . 38
Appendix C. Complete Example . . . . . . . . . . . . . . . . . . 39 Appendix C. Complete Example . . . . . . . . . . . . . . . . . . 44
Appendix D. Contributors . . . . . . . . . . . . . . . . . . . . 41 Appendix D. Contributors . . . . . . . . . . . . . . . . . . . . 46
Appendix E. Acknowledgements . . . . . . . . . . . . . . . . . . 42 Appendix E. Acknowledgements . . . . . . . . . . . . . . . . . . 47
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 43 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 48
Intellectual Property and Copyright Statements . . . . . . . . . . 44 Intellectual Property and Copyright Statements . . . . . . . . . . 49
1. Introduction 1. Introduction
This document specifies the syntax of a general purpose multi-message This document specifies the syntax of a general purpose multi-message
packet format for information exchange between MANET routers. packet format for information exchange between MANET routers.
Messages consist of a message header, which is designed for control Messages consist of a message header, which is designed for control
of message dissemination, and a message body, which contains protocol of message dissemination, and a message body, which contains protocol
information. Only the syntax of the message body is specified. All information. Only the syntax of the message body is specified. All
syntactical entities, including messages and packets, are specified syntactical entities, including messages and packets, are specified
using regular expressions. using regular expressions.
skipping to change at page 13, line 9 skipping to change at page 13, line 9
* mid-length = address-length - head-length - tail-length * mid-length = address-length - head-length - tail-length
<mid> is omitted if mid-length == 0, otherwise each <mid> is a field <mid> is omitted if mid-length == 0, otherwise each <mid> is a field
of length mid-length octets, representing the mid of the of length mid-length octets, representing the mid of the
corresponding address in the address block. corresponding address in the address block.
5.3. TLVs and TLV Blocks 5.3. TLVs and TLV Blocks
A TLV block is defined by: A TLV block is defined by:
<tlv-block> = <tlv-length> <tlv-block> = <tlvs-length>
<tlv>* <tlv>*
where: where:
<tlv-length> is a 16 bit field, which contains the total length (in <tlvs-length> is a 16 bit field, which contains the total length (in
octets) of all of the immediately following <tlv> elements. octets) of all of the immediately following <tlv> elements.
<tlv> is defined in Section 5.3.1. <tlv> is defined in Section 5.3.1.
5.3.1. TLVs 5.3.1. TLVs
There are three kinds of TLV, each represented by an element <tlv>: There are three kinds of TLV, each represented by an element <tlv>:
o A packet TLV, included in a packet header. o A packet TLV, included in a packet header.
skipping to change at page 13, line 39 skipping to change at page 13, line 39
* all addresses in the address block; OR * all addresses in the address block; OR
* any continuous sequence of addresses in the address block; OR * any continuous sequence of addresses in the address block; OR
* a single address in the address block. * a single address in the address block.
<tlv> is defined by: <tlv> is defined by:
<tlv> = <tlv-type> <tlv> = <tlv-type>
<tlv-subtype>?
<tlv-semantics> <tlv-semantics>
<index-start>? <index-start>?
<index-stop>? <index-stop>?
<length>? <length>?
<value>? <value>?
where: where:
<tlv-type> is an 8 bit field, specifying the type of the TLV, <tlv-type> is an 8 bit field, specifying the type of the TLV,
specific to the TLV kind (i.e. packet, message, or address block specific to the TLV kind (i.e. packet, message, or address block
TLV). TLV).
<tlv-semantics> is an 8 bit field specifying the interpretation of <tlv-semantics> is an 8 bit field specifying the interpretation of
the remainder of the TLV: the remainder of the TLV:
bit 0 (extended) and bit 1 (novalue): MUST NOT both be set ('1'). bit 0 (hassubtype): if cleared ('0'), then <tlv-subtype> is not
included in the <tlv>. If set ('1'), then <tlv-subtype> is
included in the <tlv>.
bit 1 (extended) and bit 2 (novalue): MUST NOT both be set ('1').
Otherwise, they are interpreted according to Table 2. Otherwise, they are interpreted according to Table 2.
+----------+---------+--------------+--------------+ +----------+---------+--------------+--------------+
| extended | novalue | <length> | <value> | | extended | novalue | <length> | <value> |
+----------+---------+--------------+--------------+ +----------+---------+--------------+--------------+
| 0 | 0 | 8 bits | included | | 0 | 0 | 8 bits | included |
| | | | | | | | | |
| 0 | 1 | not included | not included | | 0 | 1 | not included | not included |
| | | | | | | | | |
| 1 | 0 | 16 bits | included | | 1 | 0 | 16 bits | included |
+----------+---------+--------------+--------------+ +----------+---------+--------------+--------------+
Table 2 Table 2
bit 2 (noindex) and bit 3 (singleindex): MUST NOT both be set bit 3 (noindex) and bit 4 (singleindex): MUST NOT both be set
('1'). The former MUST be set ('1') and the latter MUST be ('1'). The former MUST be set ('1') and the latter MUST be
cleared ('0') for packet or message TLVs. They are interpreted cleared ('0') for packet or message TLVs. They are interpreted
according to Table 3. according to Table 3.
+---------+-------------+---------------+--------------+ +---------+-------------+---------------+--------------+
| noindex | singleindex | <index-start> | <index-stop> | | noindex | singleindex | <index-start> | <index-stop> |
+---------+-------------+---------------+--------------+ +---------+-------------+---------------+--------------+
| 0 | 0 | included | included | | 0 | 0 | included | included |
| | | | | | | | | |
| 0 | 1 | included | not included | | 0 | 1 | included | not included |
| | | | | | | | | |
| 1 | 0 | not included | not included | | 1 | 0 | not included | not included |
+---------+-------------+---------------+--------------+ +---------+-------------+---------------+--------------+
Table 3 Table 3
bit 4 (multivalue): this bit serves to specify how the <value> bit 5 (multivalue): this bit serves to specify how the <value>
field is interpreted, as specified below. This bit MUST be field is interpreted, as specified below. This bit MUST be
cleared ('0') for packet or message TLVs, if the singleindex cleared ('0') for packet or message TLVs, if the singleindex
bit is set ('1'), or if the novalue bit is set ('1'). bit is set ('1'), or if the novalue bit is set ('1').
bits 5-7: are RESERVED and MUST each be cleared ('0') to be in bits 6-7: are RESERVED and MUST each be cleared ('0') to be in
accordance with this version of the specification. accordance with this version of the specification.
<tlv-subtype> is an 8 bit field, specifying the subtype of the TLV,
specific to the TLV type and kind (i.e. packet, message, or
address block TLV).
tlv-subtype is a variable, defined to equal <tlv-subtype> if
present, or 0 otherwise.
tlv-fulltype is a variable, defined by:
* tlv-fulltype = 256 * <tlv-type> + tlv-subtype;
<index-start> and <index-stop> when present are each an 8 bit field, <index-start> and <index-stop> when present are each an 8 bit field,
interpreted as follows: interpreted as follows.
index-start and index-stop are variables, defined according to index-start and index-stop are variables, defined according to
Table 4. The variable end-index is defined as follows: Table 4. The variable end-index is defined as follows:
+ For message and packet TLVs: * For message and packet TLVs:
- end-index = 0 + end-index = 0
+ For address block TLVs: * For address block TLVs:
- end-index = <num-addr> - 1 + end-index = <num-addr> - 1
+---------+-------------+---------------+---------------+ +---------+-------------+---------------+---------------+
| noindex | singleindex | index-start = | index-stop = | | noindex | singleindex | index-start = | index-stop = |
+---------+-------------+---------------+---------------+ +---------+-------------+---------------+---------------+
| 0 | 0 | <index-start> | <index-stop> | | 0 | 0 | <index-start> | <index-stop> |
| | | | | | | | | |
| 0 | 1 | <index-start> | <index-start> | | 0 | 1 | <index-start> | <index-start> |
| | | | | | | | | |
| 1 | 0 | 0 | end-index | | 1 | 0 | 0 | end-index |
+---------+-------------+---------------+---------------+ +---------+-------------+---------------+---------------+
Table 4 Table 4
For an address block TLV, the TLV applies to the addresses from For an address block TLV, the TLV applies to the addresses from
position index-start to position index-stop (inclusive) in the position index-start to position index-stop (inclusive) in the
address block, where the first address has position zero. address block, where the first address has position zero.
number-values is a variable, defined by: number-values is a variable, defined by:
+ number-values = index-stop - index-start + 1 * number-values = index-stop - index-start + 1
<length> is omitted or is a 8 or 16 bit field according to Table 2. <length> is omitted or is a 8 or 16 bit field according to Table 2.
If present it MUST NOT be zero. If the multivalue bit is set If present it MUST NOT be zero. If the multivalue bit is set
('1') then <length> MUST be an integral multiple of number-values, ('1') then <length> MUST be an integral multiple of number-values,
and the variable single-length is defined by: and the variable single-length is defined by:
* single-length = <length> / number-values * single-length = <length> / number-values
If the multivalue bit is cleared ('0'), then the variable single- If the multivalue bit is cleared ('0'), then the variable single-
length is defined by: length is defined by:
skipping to change at page 16, line 10 skipping to change at page 16, line 27
octets. In an address block TLV, <value> is associated with the octets. In an address block TLV, <value> is associated with the
addresses from index-start to index-stop, inclusive. If the addresses from index-start to index-stop, inclusive. If the
multivalue bit is cleared ('0') then the whole of this field is multivalue bit is cleared ('0') then the whole of this field is
associated with each of the indicated addresses. If the associated with each of the indicated addresses. If the
multivalue bit is set ('1') then this field is divided equally multivalue bit is set ('1') then this field is divided equally
into number-values fields, each of length single-length octets and into number-values fields, each of length single-length octets and
these are associated, in order, with the indicated addresses. these are associated, in order, with the indicated addresses.
5.3.2. Constraints 5.3.2. Constraints
TLVs in the same TLV block MUST be sorted in ascending TLV type TLVs in the same TLV block MUST be sorted in non-descending tlv-
order. fulltype order.
Two or more TLVs of the same type associated with the same address Packet and message TLVs MUST be defined so as to indicate whether two
block MUST NOT both cover any address. TLVs with the same tlv-fulltype are, or are not, allowed in the same
packet or message TLV block, respectively.
TLVs of the same type associated with the same address block MUST be Two or more TLVs with the same tlv-fulltype in the same address block
sorted in ascending index-start order. TLV block MUST NOT be associated with the same copy of an address
(i.e. they must not have overlapping index ranges).
TLVs with the same tlv-fulltype associated with the same address
block MUST be sorted in ascending index-start order.
5.4. Padding 5.4. Padding
Packet headers and messages MAY be padded to ensure 32 bit alignment Packet headers and messages MAY be padded to ensure 32 bit alignment
of each message contained within the packet and of the overall packet of each message contained within the packet and of the overall packet
length. length.
All elements are an integer multiple of octets, hence padding can be All elements are an integer multiple of octets, hence padding can be
accomplished by inserting an integer number of <pad-octet> elements accomplished by inserting an integer number of <pad-octet> elements
after the element that is to be 32 bit aligned. after the element that is to be 32 bit aligned.
skipping to change at page 17, line 12 skipping to change at page 18, line 12
The padding after a message may be freely changed when a message is The padding after a message may be freely changed when a message is
forwarded without affecting the message. forwarded without affecting the message.
6. TLV specification 6. TLV specification
This document specifies one address block TLV, which is included to This document specifies one address block TLV, which is included to
allow a standardized way of representing network addresses. allow a standardized way of representing network addresses.
6.1. Address Block TLV Specification 6.1. Address Block TLV Specification
+----------------------+------+--------+----------------------------+ +---------------+------+---------+--------+-------------------------+
| Name | Type | Length | Value | | Name | Type | Subtype | Length | Value |
+----------------------+------+--------+----------------------------+ +---------------+------+---------+--------+-------------------------+
| PREFIX_LENGTH | 0 | 8 bits | Indicates that the address | | PREFIX_LENGTH | 0 | 0 | 8 bits | Indicates that the |
| | | | is a network address, | | | | | | address is a network |
| | | | rather than a host | | | | | | address, rather than a |
| | | | address. The value is the | | | | | | host address. The |
| | | | length of the | | | | | | value is the length of |
| | | | prefix/netmask, in bits. | | | | | | the prefix/netmask, in |
+----------------------+------+--------+----------------------------+ | | | | | bits. |
+---------------+------+---------+--------+-------------------------+
Table 5 Table 5
An address in an address block without an associated PREFIX_LENGTH An address in an address block without an associated PREFIX_LENGTH
TLV may be considered to have a prefix length equal to the address TLV may be considered to have a prefix length equal to the address
length in bits (i.e. address-length times 8). length in bits (i.e. 8 * address-length).
7. IANA Considerations 7. IANA Considerations
A new registry for message types must be created with initial A new registry for message types must be created with initial
assignments as specified in Table 6. Future values in the range assignments as specified in Table 6. Future values in the range
5-127 can be allocated using standards action [3]. Additionally, 5-127 can be allocated using standards action [3]. Additionally,
values in the range 128-255 are reserved for private/local use. values in the range 128-255 are reserved for private/local use.
+-------+----------------------------------------+ +------+------------------------+
| Value | Description | | Type | Description |
+-------+----------------------------------------+ +------+------------------------+
| 0 | MUST NOT be allocated. | | 0 | MUST NOT be allocated. |
| | | | | |
| 1-4 | RESERVED | | 1-4 | RESERVED |
+-------+----------------------------------------+ +------+------------------------+
Table 6 Table 6
Message type 0 MUST NOT be allocated because a zero-octet signifies a Message type 0 MUST NOT be allocated because a zero-octet signifies a
packet header and zero-octets are used for padding. Message types 1 packet header and zero-octets are used for padding. Message types 1
to 4 are reserved because they are used by OLSR [4], which uses a to 4 are reserved because they are used by OLSR [4], which uses a
compatible packet/message header format. compatible packet/message header format.
A new registry for packet TLV types must be created, with no initial A new registry for packet TLV types must be created, with no initial
assignments. Future values in the range 0-127 can be allocated using assignments. Future values in the range 0-127 can be allocated using
standards action [3]. Additionally, values in the range 128-255 are standards action [3]. Additionally, values in the range 128-255 are
reserved for private/local use. reserved for private/local use. If a packet TLV type is allocated
then a new registry for subtypes of that type must be created. A
document which defines a packet TLV type MUST also specify the
mechanism by which its subtypes are allocated, from among those in
[3].
A new registry for message TLV types must be created with no initial A new registry for message TLV types must be created with no initial
assignments. Future values in the range 0-127 can be allocated using assignments. Future values in the range 0-127 can be allocated using
standards action [3]. Additionally, values in the range 128-255 are standards action [3]. Additionally, values in the range 128-255 are
reserved for private/local use. reserved for private/local use. If a message TLV type is allocated
then a new registry for subtypes of that type must be created. A
document which defines a message TLV type MUST also specify the
mechanism by which its subtypes are allocated, from among those in
[3].
A new registry for address block TLV types must be created with A new registry for address block TLV types must be created with
initial assignments as specified in Table 7. Future values in the initial assignments as specified in Table 7. Future values in the
range 1-127 can be allocated using standards action [3]. range 1-127 can be allocated using standards action [3].
Additionally, values in the range 128-255 are reserved for private/ Additionally, values in the range 128-255 are reserved for private/
local use. local use. If an address block TLV type is allocated then a new
registry for subtypes of that type must be created. A document which
defines an address block TLV type MUST also specify the mechanism by
which its subtypes are allocated, from among those in [3].
+--------------------+-------+--------------------------------------+ +---------------+------+---------+----------------------------------+
| Mnemonic | Value | Description | | Mnemonic | Type | Subtype | Description |
+--------------------+-------+--------------------------------------+ +---------------+------+---------+----------------------------------+
| PREFIX_LENGTH | 0 | Indicates that associated addresses | | PREFIX_LENGTH | 0 | 0 | Indicates that associated |
| | | are network addresses, with given | | | | | addresses are network addresses, |
| | | prefix length, in bits. | | | | | with given prefix length, in |
+--------------------+-------+--------------------------------------+ | | | | bits. |
| | | | |
| | 0 | 1-255 | RESERVED |
+---------------+------+---------+----------------------------------+
Table 7 Table 7
Subtypes indicated as RESERVED may be allocated by standards action,
as specified in [3].
8. Security Considerations 8. Security Considerations
Messages are designed to be carriers of protocol information and MAY, Messages are designed to be carriers of protocol information and MAY,
at each hop, be forwarded and/or processed according to the at each hop, be forwarded and/or processed according to the
information in the message header by the protocol using this information in the message header by the protocol using this
specification. specification.
For forwarded messages where the message is unchanged by forwarding For forwarded messages where the message is unchanged by forwarding
nodes, then end-to-end security MAY be implemented, between nodes nodes, then end-to-end security MAY be implemented, between nodes
with an existing security association, by including a suitable with an existing security association, by including a suitable
skipping to change at page 23, line 9 skipping to change at page 25, line 9
If network addresses a.b.0.0/16, c.d.0.0/16, c.d.e.0/24 and If network addresses a.b.0.0/16, c.d.0.0/16, c.d.e.0/24 and
c.d.e.f/32 are to be represented using a single address block c.d.e.f/32 are to be represented using a single address block
containing a.b.0.0, c.d.0.0, c.d.e.0 and c.d.e.f, with the prefix containing a.b.0.0, c.d.0.0, c.d.e.0 and c.d.e.f, with the prefix
lengths added using one or more address block TLVs of type lengths added using one or more address block TLVs of type
PREFIX_LENGTH (0), then this can be done in a number of ways. PREFIX_LENGTH (0), then this can be done in a number of ways.
Possible examples are: Possible examples are:
o Using one multivalue TLV covering all of the addresses: o Using one multivalue TLV covering all of the addresses:
* <semantics> has noindex and multivalue set (value 20); * <semantics> has noindex and multivalue set (value 40);
* <index-start> and <index-stop> are omitted; * <index-start> and <index-stop> are omitted;
* <length> = 4 (single-length = 1). * <length> = 4 (single-length = 1).
* The TLV is then 0 20 4 16 16 24 32 (7 octets). * The TLV is then 0 40 4 16 16 24 32 (7 octets).
o Using one multivalue TLV omitting the last address (a prefix o Using one multivalue TLV omitting the last address (a prefix
length of 32 is the default): length of 32 is the default):
* <semantics> has multivalue set (value 16); * <semantics> has multivalue set (value 32);
* <index-start> = 0; * <index-start> = 0;
* <index-stop> = 2 * <index-stop> = 2
* <length> = 3 (single-length = 1). * <length> = 3 (single-length = 1).
* The TLV is then 0 16 0 2 3 16 16 24 (8 octets). * The TLV is then 0 32 0 2 3 16 16 24 (8 octets).
o Using two single value TLVs, omitting the last address. First: o Using two single value TLVs, omitting the last address. First:
* <semantics> = 0; * <semantics> = 0;
* <index-start> = 0; * <index-start> = 0;
* <index-stop> = 1; * <index-stop> = 1;
* <length> = 1; * <length> = 1;
* <value> = 16. * <value> = 16.
* The TLV is then 0 0 0 1 1 16 (6 octets). * The TLV is then 0 0 0 1 1 16 (6 octets).
Second: Second:
* <semantics> has singlevalue set (value 8); * <semantics> has singlevalue set (value 16);
* <index-start> = 2; * <index-start> = 2;
* <index-stop> is omitted; * <index-stop> is omitted;
* <length> = 1; * <length> = 1;
* <value> = 24. * <value> = 24.
* The TLV is then 0 8 2 1 24 (5 octets). * The TLV is then 0 16 2 1 24 (5 octets).
Total length of TLVs is 11 octets. Total length of TLVs is 11 octets.
In this case the first of these is the most efficient. In other In this case the first of these is the most efficient. In other
cases patterns such as the others may be preferred. Regardless of cases patterns such as the others may be preferred. Regardless of
efficiency, any of these may be used. efficiency, any of these may be used.
Assuming the definition of an address block TLV with type EXAMPLE Assuming the definition of an address block TLV with type EXAMPLE
which has no value (it is sufficient to simply indicate which which has no value (it is sufficient to simply indicate which
addresses are examples), for the same address block, with the second addresses are examples), for the same address block, with the second
and third addresses being examples, this can be indicated with a and third addresses being examples, this can be indicated with a
single TLV: single TLV:
o <semantics> has novalue set (value 2); o <semantics> has novalue set (value 4);
o <index-start> = 1; o <index-start> = 1;
o <index-stop> = 2; o <index-stop> = 2;
o <length> and <value> are omitted. o <length> and <value> are omitted.
o The TLV is then EXAMPLE 2 1 2 (4 octets). o The TLV is then EXAMPLE 4 1 2 (4 octets).
Assuming the definition of a message TLV with type DATA which can Assuming the definition of a message TLV with type DATA which can
take a value field of any length, for such a message TLV with 8 take a value field of any length, for such a message TLV with 8
octets of data (a to h): octets of data (a to h):
o <semantics> has noindex set (value 4); o <semantics> has noindex set (value 8);
o <index-start> and <index-stop> are omitted; o <index-start> and <index-stop> are omitted;
o <length> = 8. o <length> = 8.
o The TLV is then DATA 4 8 a b c d e f g h (11 octets). o The TLV is then DATA 8 8 a b c d e f g h (11 octets).
If, in this example, the number of data octets were 256 or greater If, in this example, the number of data octets were 256 or greater
then <semantics> would also have extended set and have value 5. The then <semantics> would also have extended set and have value 10. The
length would require two octets (most significant first). The TLV length would require two octets (most significant first). The TLV
length would be 4 + N octets, where N is the number of data octets 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). (it can be 3 + N octets if N is 255 or less).
Appendix B. Illustrations Appendix B. Illustrations
This informative appendix illustrates the elements, which are This informative appendix illustrates the elements, which are
normatively specified in Section 5 using regular expressions. normatively specified in Section 5 using regular expressions.
Bits labeled Reserved, Resv, or Rsv are cleared ('0'). Bits labeled Bits labeled Reserved, Resv, or Rsv are cleared ('0'). Bits labeled
skipping to change at page 36, line 34 skipping to change at page 38, line 34
| TLV | | TLV |
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Appendix B.6. TLV Appendix B.6. TLV
0 1 2 3 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 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 |Resv |M|0|0|0|0| Index Start | Index Stop | | Type |Rsv|M|0|0|0|0|0| Index Start | Index Stop |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Length | | | Length | |
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ |
| Value | | Value |
| | | |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
0 1 2 3 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 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 |Resv |M|0|0|0|1| Index Start | Index Stop | | Type |Rsv|M|0|0|0|0|1| Subtype | 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 |Rsv|M|0|0|0|1|0| Index Start | Index Stop |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Length | | | Length | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| | | |
| Value | | Value |
| | | |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
0 1 2 3 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 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 |Resv |0|0|0|1|0| Index Start | Index Stop | | Type |Rsv|M|0|0|0|1|1| Subtype | 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 |Rsv|0|0|0|1|0|0| Index Start | Index Stop |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
0 1 2 3 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 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 |Resv |M|0|1|0|0| Length | | | Type |Rsv|0|0|0|1|0|1| Subtype | 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 |Rsv|M|0|1|0|0|0| Length | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| | | |
| Value | | Value |
| | | |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
0 1 2 3 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 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 |Resv |M|0|1|0|1| Length | | Type |Rsv|M|0|1|0|0|1| Subtype | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
| Value | | Value |
| | | |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
0 1 2 3 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 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 |Resv |0|0|1|1|0| | Type |Rsv|M|0|1|0|1|0| 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 |Rsv|M|0|1|0|1|1| Subtype | 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 |Rsv|0|0|1|1|0|0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
0 1 2 3 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 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 |Resv |0|1|0|0|0| Index Start | Length | | Type |Rsv|0|0|1|1|0|1| Subtype |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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 |Rsv|0|1|0|0|0|0| Index Start | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
| Value | | Value |
| | | |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
0 1 2 3 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 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 |Resv |0|1|0|0|1| Index Start | Length | | Type |Rsv|0|1|0|0|0|1| Subtype | 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 |Rsv|0|1|0|0|1|0| Index Start | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Length (cont) | | | Length (cont) | |
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ |
| | | |
| Value | | 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 |Rsv|0|1|0|0|1|1| Subtype | Index Start |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Length | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| |
| Value |
| |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+-+-+-+-+-+-+-+-+
0 1 2 3 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 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 |Resv |0|1|0|1|0| Index Start | | Type |Rsv|0|1|0|1|0|0| 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 |Rsv|0|1|0|1|0|1| Subtype | Index Start |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Appendix C. Complete Example Appendix C. Complete Example
An example packet, using IPv4 addresses (length four octets) is An example packet, using IPv4 addresses (length four octets) is
shown. This packet has a header, indicated by the initial octet 0. shown. This packet has a header, indicated by the initial octet 0.
The packet header has semantics octet 0, and hence has a packet The packet header has semantics octet 0, and hence has a packet
sequence number, but no packet TLV block. sequence number, but no packet TLV block.
The packet contains a single message. This message has semantics The packet contains a single message. This message has semantics
octet 0, and hence has a complete message header, including octet 0, and hence has a complete message header, including
originator address, hop limit, hop count and message sequence number originator address, hop limit, hop count and message sequence number
(which is type independent). The message has a message TLV block (which is type independent). The message has a message TLV block
with content length 9 octets, containing a single TLV. This TLV has with content length 9 octets, containing a single TLV. This TLV has
the noindex bit of its semantics octet 4 set, and has value length 6 the noindex bit of its semantics octet 8 set, and has value length 6
octets. The message then has two address blocks each with a octets. The message then has two address blocks each with a
following TLV block. following TLV block.
The first address block contains 3 addresses. It has the notail bit The first address block contains 3 addresses. It has the notail bit
of its semantics octet 2 set, and has head length 2 octets, hence mid of its semantics octet 2 set, and has head length 2 octets, hence mid
length two octets. It is followed by a TLV block, with content length two octets. It is followed by a TLV block, with content
length 9 octets, containing two TLVs. The first of these TLVs has length 9 octets, containing two TLVs. The first of these TLVs has
the noindex bit of its semantics octet 4 set, and has a single value the noindex bit of its semantics octet 8 set, and has a single value
of length 2 octets, which applies to all of the addresses in the of length 2 octets, which applies to all of the addresses in the
address block. The second of these TLVs has the novalue bit of its address block. The second of these TLVs has the novalue bit of its
semantics octet 2 set, and hence has no length or value fields. It semantics octet 4 set, and hence has no length or value fields. It
does have index fields, which indicate those addresses this TLV does have index fields, which indicate those addresses this TLV
applies to. applies to.
The second address block contains 2 addresses. It has the nohead and The second address block contains 2 addresses. It has the nohead and
zerotail bits of its semantics octet 5 set, and has tail length 2 zerotail bits of its semantics octet 5 set, and has tail length 2
octets, hence mid length two octets. The two tail octets of each octets, hence mid length two octets. The two tail octets of each
address are zero. It is followed by a TLV block with content length address are zero. It is followed by a TLV block with content length
5 octets. This TLV block contains a single TLV of type PREFIX_LENGTH 5 octets. This TLV block contains a single TLV of type PREFIX_LENGTH
that has the multivalue and noindex bits of its semantics octet 20 that has the multivalue and noindex bits of its semantics octet 40
set, and a value field length of 2 octets, indicating two values each set, and a value field length of 2 octets, indicating two values each
of one octet length. There is one final padding octet 0 that is not of one octet length. There is one final padding octet 0 that is not
included in the message length of 59 octets. included in the message length of 59 octets.
0 1 2 3 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 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 0 0|0 0 0 0 0 0 0 0| Packet Sequence Number | |0 0 0 0 0 0 0 0|0 0 0 0 0 0 0 0| Packet Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message Type |0 0 0 0 0 0 0 0|0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1| | Message Type |0 0 0 0 0 0 0 0|0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Originator Address | | Originator Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Hop Limit | Hop Count | Message Sequence Number | | 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 0 0 1 0 0| |0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1| TLV Type |0 0 0 0 1 0 0 0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0 0 0 0 0 1 1 0| Value | |0 0 0 0 0 1 1 0| Value |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Value (cont) |0 0 0 0 0 0 1 1| | Value (cont) |0 0 0 0 0 0 1 1|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0 0 0 0 0 0 1 0|0 0 0 0 0 0 1 0| Head | |0 0 0 0 0 0 1 0|0 0 0 0 0 0 1 0| Head |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Mid | Mid | | Mid | Mid |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Mid |0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1| | Mid |0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TLV Type |0 0 0 0 0 1 0 0|0 0 0 0 0 0 1 0| Value | | TLV Type |0 0 0 0 1 0 0 0|0 0 0 0 0 0 1 0| Value |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Value (cont) | TLV Type |0 0 0 0 0 0 1 0| Index Start | | Value (cont) | TLV Type |0 0 0 0 0 1 0 0| Index Start |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Index Stop |0 0 0 0 0 0 1 0|0 0 0 0 0 1 0 1|0 0 0 0 0 0 1 0| | Index Stop |0 0 0 0 0 0 1 0|0 0 0 0 0 1 0 1|0 0 0 0 0 0 1 0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Mid | Mid | | Mid | Mid |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1| PREFIX_LENGTH |0 0 0 1 0 1 0 0| |0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1| PREFIX_LENGTH |0 0 1 0 1 0 0 0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0 0 0 0 0 0 1 0| Value0 | Value1 |0 0 0 0 0 0 0 0| |0 0 0 0 0 0 1 0| Value0 | Value1 |0 0 0 0 0 0 0 0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Appendix D. Contributors Appendix D. Contributors
This specification is the result of the joint efforts of the This specification is the result of the joint efforts of the
following contributors from the OLSRv2 Design Team -- listed following contributors from the OLSRv2 Design Team -- listed
alphabetically. alphabetically.
 End of changes. 61 change blocks. 
98 lines changed or deleted 233 lines changed or added

This html diff was produced by rfcdiff 1.33. The latest version is available from http://tools.ietf.org/tools/rfcdiff/