[aodvv2-discuss] Re: RFC5444 tables

  • From: Victoria Mercieca <vmercieca0@xxxxxxxxx>
  • To: "aodvv2-discuss@xxxxxxxxxxxxx" <aodvv2-discuss@xxxxxxxxxxxxx>
  • Date: Wed, 29 Apr 2015 15:07:39 +0100

Hi Lotte, everyone,

I've tweaked this text a bit further and here is the end result (attached).
This replaces the table we previously had in the RFC 5444 Representation
section, and the preceding paragraph. The first part of this section was
left unchanged.

Thanks Lotte for coming up with this text, I think it makes it SO much
clearer and I'm sure Henning will be pleased too!

Kind regards,
Vicky.

On Wed, Apr 29, 2015 at 10:39 AM, Lotte Steenbrink <
lotte.steenbrink@xxxxxxxxxxxx> wrote:

Hi Victoria,

Am 29.04.2015 um 10:59 schrieb Victoria Mercieca <vmercieca0@xxxxxxxxx>:

Hi Lotte,

I've just put your text into the document and this is how its turned out -
attached (I removed some whitespace because when it generated tables, it
only included the first row, and the other rows were garbled text
underneath it)

I think it looks great. The 69 character thing doesn't matter, because as
you say below, its a table which gets fitted to the page width anyway.


it looks very nice indeed!

I do need to check the references etc., but here's the first look of it
anyway. What does everyone think?

More comments in line.


On Wed, Apr 29, 2015 at 9:41 AM, Lotte Steenbrink <
lotte.steenbrink@xxxxxxxxxxxx> wrote:

Hi Vicky, hi all,

Am 29.04.2015 um 10:12 schrieb Victoria Mercieca <vmercieca0@xxxxxxxxx>:

Hi Charlie, hi all,

Comments in line.

On Wed, Apr 29, 2015 at 7:39 AM, Charlie Perkins <
charles.perkins@xxxxxxxxxxxxx> wrote:

Hello Lotte,

It says "Each address is connected to its PrefixLength."

But if all the PrefixLengths are the default (32 for IPv4, 128 for IPv6),
no PrefixLength field is required.

Why dont we just give this information to RFC5444 and let it deal with
it? This is what RFC5444 says on prefix length:

<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.

Where we have:

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


So, wont the RFC5444 parser decide what to do?

- If all prefix lengths are the same as the address length, it would
surely omit the prefix length field.
- If all prefix lengths were not equal to the address length, but
were the same as each other, it would use a single prefix length (
ahassingleprelen).
- If prefix lengths are not all the same, it would need to use
multiple prefix lengths (ahasmultiprelen).

This is an RFC5444 thing, AODVv2 doesnt need to try to force it.


Sounds reasonable to me. But then I should add a remark that if no prefix
length is specified (as this is legal in the rest of the draft), prefix
length should equal address length, right?

Yes. Is that clear in the draft at the moment?


I just checked the most recent update I could find (-9b) and I think it is
:)

Cheers,
Lotte




Also, the table has to be somehow formatted to look good within the
constraints imposed by RFC formats. So, tables with row widths greater
than 69 characters become far less readable.

This was my only concern.


I was trying to adhere to the pandoc table format, hoping that pandoc2rfc
would translate it into an RFC-appropriate table. Apparently that went
wrong.. Would it be okay if Vicky sent me the markdown/pandoc file she's
currently working with so I can figure out and test the tables and supply
you with something that's proven to work? :)

My bad, I wrote that before I actually tested it. I think it looks great
:)

Regards,
Vicky


Regards,
Lotte



The data elements for each message need to be broken into much
more clearly separated sections, something more like

###################### RREP #########################

than "## RREP", but this might have something to do with
whatever md needs.

"## RREP" means a "9.2" type heading in the markdown format. But yes, we
will need to incorporate Lotte's text with the 69 character constraint.

Regards,
Vicky.


Regards,
Charlie P.


On 4/21/2015 8:50 AM, Lotte Steenbrink wrote:

## RREQ

### Message header
Corresponding Data Element Header field Value
-------------------------- --------------- -----
msg_hop_limit <msg-hop-limit> ???

msg_hop_count <msg-hop-count> Number of hops traversed so
far
by the message

Message Type <msg-type> RREQ

### Address Block TLVs
A RREQ contains two Addresses, OrigAddr and TargAddr.
Because Address Block TLVs are always associated with a specific
address, the following section will contain one table per Address.
Each address is connected to its PrefixLength.
The numeric values of each TLV Type are specified in section TODO.

#### OrigAddr/PrefixLength

Corresponding Data Element TLV type Extension type Value
-------------------------- ------------ -------------- -----
OrigSeqNum OrigSeqNum -- Sequence Number
of the node
which
initiated the route discovery

OrigAddrMetric Metric MetricType Metric Value for
the route from OrigNode
to TargNode,
as calculated
by Metric of
MetricType


#### TargAddr/PrefixLength

Corresponding Data Element TLV type Extension type Value
-------------------------- ------------ -------------- -----
TargSeqNum (optional) TargSeqNum -- value of a
previously
known
TargSeqNum (optional)

### Message TLVs

none.

## RREP

### Message header
Corresponding Data Element Header field Value
-------------------------- --------------- -----
msg_hop_limit <msg-hop-limit> ???

msg_hop_count <msg-hop-count> Number of hops traversed so
far
by the message
Message Type
<msg-type> RREP

### Address Block TLVs
A RREP contains two Addresses, OrigAddr and TargAddr.
Because Address Block TLVs are always associated with a specific
address, the following section will contain one table per Address.
Each address is connected to its PrefixLength.
The numeric values of each TLV Type are specified in section TODO.

#### OrigAddr/PrefixLength

Corresponding Data Element TLV type Extension type Value
-------------------------- ------------ -------------- -----
none -- -- --

#### TargAddr/PrefixLength

Corresponding Data Element TLV type Extension type Value
-------------------------- ------------ -------------- -----
TargSeqNum TargSeqNum -- Sequence number
of the TargNode

TargAddrMetric Metric MetricType Metric Value for
the route from TargNode
to OrigNode,
as calculated
by Metric of
MetricType


### Message TLVs
A RREP message may contain the AckReq message TLV to monitor
bidirectional connectivity, as described in section TODO.

Corresponding Data Element TLV type Extension type Value
-------------------------- ------------ -------------- -----
AckReq AckReq -- 0


## RERR

### Message header
Corresponding Data Element Header field Value
-------------------------- --------------- -----
msg_hop_limit <msg-hop-limit> ???

Message Type <msg-type> RERR

### Address Block TLVs
RERR messages contain one or more Addresses, all of type
UnreachableAddress. Each UnreachableAddress has its own PrefixLength and is
associated with the following TLVs.

#### UnreachableAddress/PrefixLength
Corresponding Data Element TLV type Extension type Value
-------------------------- ------------ -------------- -----
SeqNum (optional) SeqNum -- The Sequence
Number associated with

UnreachableAddress

MetricType (optional) MetricType -- Metric Type of
the broken route entry

### Message TLVs
A RERR message may contain one optional message TLV, as detailed in
section TODO.

Corresponding Data Element TLV type Extension type Value
-------------------------- ------------ -------------- -----
PktSource PktSource -- The IP address
of the unreachable
destination
triggering RERR generation






<RFC5444 section - Lotte.txt>



The following sections show how AODVv2 data elements are represented
in RFC 5444 messages. See Section 12 for more information about the
Message TLVs and Address Block TLVs AODVv2 defines, and the type
numbers allocated.

8.1. RREQ

8.1.1. Message Header

+---------------+-----------------+---------------------------------+
| Data Element | Header Field | Value |
+---------------+-----------------+---------------------------------+
| msg_hop_limit | <msg-hop-limit> | MAX_HOPCOUNT |
| msg_hop_count | <msg-hop-count> | Number of hops traversed so far |
| | | by the message. |
| Message Type | <msg-type> | RREQ |
+---------------+-----------------+---------------------------------+

8.1.2. Message TLV Block

A RREQ contains no Message TLVs.

8.1.3. Address Block

A RREQ contains two Addresses, OrigAddr and TargAddr, and each
address has an associated prefix length.

+-------------------------+-----------------------------------------+
| Data Elements | Address Block |
+-------------------------+-----------------------------------------+
| OrigAddr/OrigPrefixLen | <head> <mid> <tail> and <prefix-length> |
| TargAddr/TargPrefixLen | <head> <mid> <tail> and <prefix-length> |
+-------------------------+-----------------------------------------+

8.1.4. Address Block TLV Block

Address Block TLVs are always associated with addresses in the
Address Block. The following sections show the TLVs that apply to
each Address.

8.1.4.1. Address Block TLVs for OrigAddr










Perkins, et al. Expires October 31, 2015 [Page 47]

Internet-Draft AODVv2 April 2015


+-------------+------------+------------+---------------------------+
| Data | TLV Type | Extension | Value |
| Element | | Type | |
+-------------+------------+------------+---------------------------+
| OrigSeqNum | OrigSeqNum | -- | Sequence Number of |
| | | | RREQ_Gen, the router |
| | | | which initiated route |
| | | | discovery. |
| OrigMetric | Metric | MetricType | Metric for the route to |
| /MetricType | | (optional) | OrigAddr, using |
| | | | MetricType. |
+-------------+------------+------------+---------------------------+

MetricType, if not included, is assumed to be DEFAULT_METRIC_TYPE.

8.1.4.2. Address Block TLVs for TargAddr

+----------------+------------+------------+------------------------+
| Data Element | TLV Type | Extension | Value |
| | | Type | |
+----------------+------------+------------+------------------------+
| TargSeqNum | TargSeqNum | -- | The last known |
| (optional) | | | TargSeqNum for |
| | | | TargAddr. |
+----------------+------------+------------+------------------------+

8.2. RREP

8.2.1. Message Header

+---------------+-----------------+---------------------------------+
| Data Element | Header Field | Value |
+---------------+-----------------+---------------------------------+
| msg_hop_limit | <msg-hop-limit> | <msg-hop-count> from |
| | | corresponding RREQ. |
| msg_hop_count | <msg-hop-count> | Number of hops traversed so far |
| | | by the message. |
| Message Type | <msg-type> | RREP |
+---------------+-----------------+---------------------------------+

8.2.2. Message TLV Block

A RREP may contain the AckReq message TLV in order to monitor
adjacency, as described in Section 6.2.







Perkins, et al. Expires October 31, 2015 [Page 48]

Internet-Draft AODVv2 April 2015


+--------------------+-----------+-----------------+--------+
| Data Element | TLV Type | Extension Type | Value |
+--------------------+-----------+-----------------+--------+
| AckReq (optional) | AckReq | -- | None |
+--------------------+-----------+-----------------+--------+

8.2.3. Address Block

A RREP contains two Addresses, OrigAddr and TargAddr, and each
address has an associated prefix length.

+-------------------------+-----------------------------------------+
| Data Elements | Address Block |
+-------------------------+-----------------------------------------+
| OrigAddr/OrigPrefixLen | <head> <mid> <tail> and <prefix-length> |
| TargAddr/TargPrefixLen | <head> <mid> <tail> and <prefix-length> |
+-------------------------+-----------------------------------------+

8.2.4. Address Block TLV Block

Address Block TLVs are always associated with addresses in the
Address Block. The following sections show the TLVs that apply to
each Address.

8.2.4.1. Address Block TLVs for OrigAddr

No Address Block TLVs apply to OrigAddr in a RREP.

8.2.4.2. Address Block TLVs for TargAddr

+-------------+------------+-------------+--------------------------+
| Data | TLV Type | Extension | Value |
| Element | | Type | |
+-------------+------------+-------------+--------------------------+
| TargSeqNum | TargSeqNum | -- | Sequence number of |
| | | | RREP_Gen, the router |
| | | | which created the RREP. |
| TargMetric | Metric | MetricType | Metric for the route to |
| /MetricType | | (optional) | TargAddr, using |
| | | | MetricType. |
+-------------+------------+-------------+--------------------------+

MetricType, if not included, is assumed to be DEFAULT_METRIC_TYPE.








Perkins, et al. Expires October 31, 2015 [Page 49]

Internet-Draft AODVv2 April 2015


8.3. RREP_Ack

8.3.1. Message Header

+----------------+------------------+-----------+
| Data Element | Header Field | Value |
+----------------+------------------+-----------+
| msg_hop_limit | <msg-hop-limit> | 1 |
| Message Type | <msg-type> | RREP_Ack |
+----------------+------------------+-----------+

8.3.2. Message TLV Block

A RREP_Ack contains no Message TLVs.

8.3.3. Address Block

A RREP_Ack contains no Address Block.

8.3.4. Address Block TLV Block

A RREP_Ack contains no Address Block TLV Block.

8.4. RERR

8.4.1. Message Header

+----------------+------------------+---------------+
| Data Element | Header Field | Value |
+----------------+------------------+---------------+
| msg_hop_limit | <msg-hop-limit> | MAX_HOPCOUNT |
| Message Type | <msg-type> | RERR |
+----------------+------------------+---------------+

8.4.2. Message TLV Block

A RERR may contain the PktSource message TLV as detailed in
Section 7.4.

+-------------+-----------+-----------+-----------------------------+
| Data | TLV Type | Extension | Value |
| Element | | Type | |
+-------------+-----------+-----------+-----------------------------+
| PktSource | PktSource | -- | The source IP address of |
| (optional) | | | the packet triggering RERR |
| | | | generation. |
+-------------+-----------+-----------+-----------------------------+




Perkins, et al. Expires October 31, 2015 [Page 50]

Internet-Draft AODVv2 April 2015


8.4.3. Address Block

A RERR contains one Address, the Unreachable Address, for each route
that is no longer valid. Each address has an associated prefix
length.

+------------------------------+------------------------------------+
| Data Element | Address Block |
+------------------------------+------------------------------------+
| AddressList/PrefixLengthList | <head> <mid> <tail> and <prefix- |
| | length> |
+------------------------------+------------------------------------+

8.4.4. Address Block TLV Block

Address Block TLVs are always associated with addresses in the
Address Block. The following section shows the TLVs that apply to
each Unreachable Address in the RERR.

8.4.4.1. Address Block TLVs for Unreachable Addresses

+------------+--------+------------+--------------------------------+
| Data | TLV | Extension | Value |
| Element | Type | Type | |
+------------+--------+------------+--------------------------------+
| SeqNum | SeqNum | -- | Sequence Number associated |
| (optional) | | | with invalid route to the |
| | | | Unreachable Address. |
| MetricType | Metric | MetricType | None. Extension Type set to |
| (optional) | | | MetricType of the route to the |
| | | | Unreachable Address. |
+------------+--------+------------+--------------------------------+

MetricType, if not included, is assumed to be DEFAULT_METRIC_TYPE.

Other related posts: