Mobile Ad hoc Networks Working Group | C. Perkins |
Internet-Draft | Futurewei |
Intended status: Standards Track | March 9, 2015 |
Expires: September 10, 2015 |
AODVv2 Example RFC 5444 Packets
draft-perkins-manet-aodvv2pkts-00
The revised Ad Hoc On-demand Distance Vector (AODVv2) routing protocol is intended for use by mobile routers in wireless, multihop networks. AODVv2 determines unicast routes among AODVv2 routers within the network in an on-demand fashion, offering rapid convergence in dynamic topologies. This document provides some examples of AODVv2 messages encapsulated into simple packets according to the RFC 5444 specification.
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."
This Internet-Draft will expire on September 10, 2015.
Copyright (c) 2015 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. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
The revised Ad Hoc On-demand Distance Vector (AODVv2) routing protocol [formerly named DYMO] enables on-demand, multihop unicast routing among AODVv2 routers in mobile ad hoc networks [MANETs][RFC2501]. AODVv2 determines unicast routes among AODVv2 routers within the network in an on-demand fashion, offering rapid convergence in dynamic topologies. This document provides some examples of AODVv2 messages encapsulated into simple packets according to the RFC 5444 specification [RFC5444]).
The basic operations of the AODVv2 protocol are route discovery and route maintenance. Route discovery is performed when an AODVv2 router must transmit a packet towards a destination for which it does not have a route. Route maintenance is performed to avoid prematurely expunging routes from the route table, and to avoid dropping packets when a route breaks. When a data packet is received to be forwarded but there is no valid route for the destination, then the AODVv2 router of the source of the packet is notified via a Route Error (RERR) message.
This document uses terminology from [RFC5444] and [I-D.ietf-manet-aodvv2], reproduced here for convenience.
This document uses the Data Elements and conventions found in Table 1.
Data Elements | Meaning |
---|---|
msg_hop_limit | Number of hops allowable for the message |
msg_hop_count | Number of hops traversed so far by the message |
AckReq | Acknowledgement Requested for RREP |
MetricType | The metric type for values in MetricList |
PktSource | Source address of a data packet |
AddressList | A list of IP addresses |
OrigAddr | IP address of the Originating Node |
TargAddr | IP address of the Target Node |
UnreachableAddress | An unreachable IP address |
PrefixLengthList | Routing prefixes associated with addresses in AddressList |
SeqNum | Sequence Number, used in RERR messages |
SeqNumList | A list of SeqNums |
OrigSeqNum | Originating Node Sequence Number |
TargSeqNum | Target Node Sequence Number |
MetricList | Metric values for routes to addresses in AddressList |
OrigAddrMetric | Metric value for route to OrigAddr |
TargAddrMetric | Metric value for route to TargAddr |
ValidityTime | Included in ValidityTimeList |
ValidityTimeList | ValidityTime values for routes to Addresses in AddressList |
In its default mode of operation, AODVv2 sends messages using the parameters for port number and IP protocol specified in [RFC5498]. Unless otherwise specified, the address for AODVv2 multicast messages (for example, RREQ or RERR) is the link-local multicast address LL-MANET-Routers [RFC5498]. All AODVv2 routers subscribe to LL-MANET-Routers [RFC5498] to receive AODVv2 messages. The IPv4 TTL (IPv6 Hop Limit) field for all packets containing AODVv2 messages is set to 255. This mechanism, known as "The Generalized TTL Security Mechanism" (GTSM) [RFC5082] helps to assure that packets have not traversed any intermediate routers. IP packets containing AODVv2 protocol messages are given priority queuing and channel access.
The following subsections show example RFC 5444-compliant packets for AODVv2 message types RREQ, RREP, RERR, and RREP_Ack. These proposed message formats are designed based on expected savings from IPv6 addressable MANET nodes, and a layout for the Address TLVs that may be viewed as natural, even if perhaps not the absolute most compact possible encoding.
For RteMsgs (i.e., RREQ and RREP), the msg-hdr fields are followed by an Address Block, containing OrigAddr and TargAddr. There must be AddrTLVs of type Metric and either OrigSeqNum or TargSeqNum.
There is no MetricType Message TLV present, so the Metric AddrTLV measures HopCount. The Metric Address Block TLV also provides a way for the AODV router generating the RteMsg to supply an initial nonzero cost for the route to its client node (OrigAddr or TargAddr, for RREQ or RREP respectively).
In all cases, the length of an address (32 bits for IPv4 and 128 bits for IPv6) inside an AODVv2 message is indicated by the msg-addr-length (MAL) in the msg-header, as specified in [RFC5444].
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 +-+-+-+-+-+-+-+-+ | PV=0 | PF=0 | +-+-+-+-+-+-+-+-+
Figure 1: RFC 5444 Packet Header
The RFC 5444 header preceding AODVv2 messages in this document has the format illustrated in Figure 1.
The fields in Figure 1 are to be interpreted as follows:
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | msg-type=RREQ | MF=4 | MAL=3 | msg-size=28 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | msg-hop-limit | msg.tlvs-length=0 | num-addr=2 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |1|0|0|0|0| Rsv | head-length=3 | Head (bytes for Orig & Target): +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ :Head(Orig&Targ)| Orig.Mid | Target.Mid |addr.TLV.len=11: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ :addr.TLV.len=11|type=OrigSeqNum|0|1|0|1|0|0|Rsv| Index-start=0 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | tlv-length=2 | Orig.Node Sequence # | type=Metric | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0|1|0|1|0|0|Rsv| Index-start=0 | tlv-length=1 | OrigAddrHopCt | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2: Example IPv4 RREQ, with OrigSeqNum and Metric Address Block TLVs
Figure 2 illustrates an example RREQ message format. Figure 2 are to be interpreted as follows:
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | msg-type=RREP | MF=4 | MAL=3 | msg-size=28 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | msg-hop-limit | msg.tlvs-length=0 | num-addr=2 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |1|0|0|0|0| Rsv | head-length=3 | Head (bytes for Orig & Target): +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ :Head(Orig&Targ)| Orig.Mid | Target.Mid |addr.TLV.len=11: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ :addr.TLV.len=11|type=TargSeqNum|0|1|0|1|0|0|Rsv| Index-start=1 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | tlv-length=2 | Targ.Node Sequence # | type=Metric | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0|1|0|1|0|0|Rsv| Index-start=1 | tlv-length=1 | TargAddrHopCt | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 3: Example IPv4 RREP, with TargSeqNum TLV and 1 Metric
Figure 3 illustrates a packet format for an example RREP message.
The fields in Figure 3 are to be interpreted as follows:
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | msg-type=RERR | MF=4 | MAL=3 | msg-size=24 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | msg-hop-limit | msg.tlvs-length=0 | num-addr=2 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |1|0|0|0|0| Rsv | head-length=3 | Head (for both destinations) : +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ :Head (3rd byte)| Mid (Dest_1) | Mid (Dest_2) | addr.TLV.len=7: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ :addr.TLV.len=7 | type=SeqNum |0|0|1|1|0|1|Rsv| tlv-length=4 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Dest_1 Sequence # | Dest_2 Sequence # | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 4: Example IPv4 RERR with Two UnreachableAddresses
Figure 4 illustrates an example RERR message format. Figure 4 are to be interpreted as follows:
The figure below illustrates a packet format for an example RREP_Ack 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |msgtype=RREPAck| MF=0 | MAL=3 | msg-size=4 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 5: Example IPv4 RREP_Ack
The fields in Figure 3 are to be interpreted as follows:
[I-D.ietf-manet-aodvv2] | Perkins, C., Ratliff, S., Dowdell, J., Steenbrink, L. and V. Mercieca, "Dynamic MANET On-demand (AODVv2) Routing", Internet-Draft draft-ietf-manet-aodvv2-07, March 2015. |
[RFC2501] | Corson, M. and J. Macker, "Mobile Ad hoc Networking (MANET): Routing Protocol Performance Issues and Evaluation Considerations", RFC 2501, January 1999. |
[RFC4193] | Hinden, R. and B. Haberman, "Unique Local IPv6 Unicast Addresses", RFC 4193, October 2005. |
[RFC5082] | Gill, V., Heasley, J., Meyer, D., Savola, P. and C. Pignataro, "The Generalized TTL Security Mechanism (GTSM)", RFC 5082, October 2007. |
[RFC5444] | Clausen, T., Dearlove, C., Dean, J. and C. Adjih, "Generalized Mobile Ad Hoc Network (MANET) Packet/Message Format", RFC 5444, February 2009. |
[RFC5497] | Clausen, T. and C. Dearlove, "Representing Multi-Value Time in Mobile Ad Hoc Networks (MANETs)", RFC 5497, March 2009. |
[RFC5498] | Chakeres, I., "IANA Allocations for Mobile Ad Hoc Network (MANET) Protocols", RFC 5498, March 2009. |