Mobile Ad Hoc Networking Working Group Elizabeth M. Royer INTERNET DRAFT University of California, Santa Barbara 15 July 2000 Charles E. Perkins Nokia Research Center Multicast Ad hoc On-Demand Distance Vector (MAODV) Routing draft-ietf-manet-maodv-00.txt Status of This Memo This document is a submission by the Mobile Ad Hoc Networking Working Group of the Internet Engineering Task Force (IETF). Comments should be submitted to the manet@itd.nrl.navy.mil mailing list. Distribution of this memo is unlimited. This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. 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." The list of current Internet-Drafts can be accessed at: http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at: http://www.ietf.org/shadow.html. Abstract The multicast operation of the Ad hoc On-Demand Distance Vector (AODV) routing protocol (MAODV) is intended for use by mobile nodes in an ad hoc network. It offers quick adaptation to dynamic link conditions, low processing and memory overhead, and low network utilization. It creates bi-directional shared multicast trees connecting multicast sources and receivers. These multicast trees are maintained as long as group members exist within the connected portion of the network. Each multicast group has a group leader whose responsibility is maintaining the group sequence number, which is used to ensure freshness of routing information. Royer, Perkins Expires 15 December 2000 [Page i] Internet Draft Multicast AODV 15 July 2000 Contents Status of This Memo i Abstract i 1. Introduction 2 2. Overview 2 3. Route Tables 3 4. MAODV Terminology 5 5. Route Request (RREQ) Message Format 6 6. Route Reply (RREP) Message Format 6 7. Multicast Activation (MACT) Message Format 7 8. Group Hello (GRPH) Message Format 8 9. Protocol Operation 9 9.1. Maintaining Multicast Tree Utilization Records . . . . . 9 9.2. Generating Route Requests . . . . . . . . . . . . . . . . 9 9.2.1. Controlling Route Request broadcasts . . . . . . 10 9.3. Receiving Route Requests . . . . . . . . . . . . . . . . 10 9.4. Generating Route Replies . . . . . . . . . . . . . . . . 11 9.5. Forwarding Route Replies . . . . . . . . . . . . . . . . 12 9.6. Route Activation . . . . . . . . . . . . . . . . . . . . 12 9.7. Multicast Tree Pruning . . . . . . . . . . . . . . . . . 13 9.8. Repairing a Broken Link . . . . . . . . . . . . . . . . . 14 9.9. Tree Partitions . . . . . . . . . . . . . . . . . . . . . 16 9.10. Reconnecting Two Trees . . . . . . . . . . . . . . . . . 17 9.11. Maintaining Local Connectivity . . . . . . . . . . . . . 17 9.12. Group Hello Messages . . . . . . . . . . . . . . . . . . 18 9.13. Actions After Reboot . . . . . . . . . . . . . . . . . . 19 9.14. Interfaces . . . . . . . . . . . . . . . . . . . . . . . 20 10. Extensions 20 10.1. Multicast Group Leader Extension Format . . . . . . . . . 20 10.2. Multicast Group Rebuild Extension Format . . . . . . . . 21 10.3. Multicast Group Information Extension Format . . . . . . 21 11. Configuration Parameters 22 Royer, Perkins Expires 15 December 2000 [Page 1] Internet Draft Multicast AODV 15 July 2000 12. Security Considerations 23 1. Introduction The Multicast Ad hoc On-Demand Distance Vector (MAODV) protocol enables dynamic, self-starting, multihop routing between participating mobile nodes wishing to join or participate in a multicast group within an ad hoc network. The membership of these multicast groups is free to change during the lifetime of the network. MAODV enables mobile nodes to establish a tree connecting multicast group members. Mobile nodes are able to respond quickly to link breaks in multicast trees by repairing these breaks in a timely manner. In the event of a network partition, multicast trees are established independently in each partition, and trees for the same multicast group are quickly connected if the network components merge. One distinguishing feature of MAODV is its use of sequence numbers for multicast groups. Each multicast group has its own sequence number, which is initialized by the multicast group leader and incremented periodically. Using these sequence numbers ensures that routes found to multicast groups are always the most current ones available. Given the choice between two routes to a multicast tree, a requesting node always selects the one with the greatest sequence number. MAODV is the multicast protocol associated with the Ad hoc On-Demand Distance Vector (AODV) routing protocol, and as such it shares many similarities and packet formats with AODV. The Route Request and Route Reply packet types are based on those used by AODV, as is the unicast Route Table. Similarly, many of the configuration parameters used by MAODV are defined by AODV. The reader is referred to the AODV Internet draft [2] for the suggested values of those parameters, as well as for details on the unicast operation of AODV. 2. Overview Route Requests (RREQs), Route Replies (RREPs), Multicast Activations (MACTs), and Group Hellos (GRPHs) are the message types utilized by the multicast operation AODV. RREQs and RREPs are handled as specified in [2], except for certain procedures controlled by new flags (see section 5, 6). These message types are handled by UDP, and normal IP header processing applies. So, for instance, the requesting node is expected to use its IP address as the source IP address for the messages. The range of dissemination of broadcast RREQs can be indicated by the TTL in the IP header. Fragmentation is typically not required. Royer, Perkins Expires 15 December 2000 [Page 2] Internet Draft Multicast AODV 15 July 2000 As long as the multicast group members remain connected (within a ``multicast tree''), MAODV does not play any role. When a node either wishes to join a multicast group or find a route to a multicast group, the node uses a broadcast RREQ to discover a route to the multicast tree associated with that group. For join requests, a route is determined when the RREQ reaches a node that is already a member of the multicast tree, and the node's record of the multicast group sequence number is at least as great as that contained in the RREQ. For non-join requests, any node with a current route to the multicast tree may respond to the RREQ. A current route is defined as an unexpired multicast route table entry whose associated sequence number for the multicast group is at least as great as that contained in the RREQ. The route to the multicast tree is made available by unicasting a RREP back to the source of the RREQ. Since each node receiving the request caches a route back to the source of the request, the RREP can be unicast back to the source from any node able to satisfy the request. Once the source node has waited the discovery period to receive RREPs, it selects the best route to the multicast tree and unicasts the next hop along that route a MACT message. This message activates the route. Nodes monitor the link status of next hops on the multicast tree. When a link break on the multicast tree is detected, the tree branch should be immediately repaired through the use of the RREQ/RREP/MACT messages. A multicast group leader is associated with each multicast group. The primary responsibility of this node is the initialization and maintenance of the group sequence number. A Group Hello message is periodically broadcast across the network by the multicast group leader. This message carries a multicast group and group sequence number and corresponding group leader IP address. This information is used for disseminating updated group sequence numbers throughout the multicast group and for repairing multicast trees after a previously disconnected portion of the network containing part of the multicast tree becomes reachable once again. 3. Route Tables MAODV is a routing protocol, and it deals with route table management. Route table information must be kept even for ephemeral routes, such as are created to temporarily store reverse paths towards nodes originating RREQs. MAODV uses the following fields with each route table entry, which are based on the route table defined in the AODV Internet Draft [2]: - Destination IP Address Royer, Perkins Expires 15 December 2000 [Page 3] Internet Draft Multicast AODV 15 July 2000 - Destination Sequence Number - Hop Count (number of hops needed to reach destination) - Last Hop Count (described in subsection 9.2.1) - Next Hop - Next Hop Interface - List of Precursors - Lifetime (expiration or deletion time of the route) - Routing Flags The following information is stored in each entry of the multicast route table for multicast tree routes: - Multicast Group IP Address - Multicast Group Leader IP Address - Multicast Group Sequence Number - Next Hops - Hop Count to next Multicast Group Member - Hop Count to Multicast Group Leader The Next Hops field is a linked list of structures, each of which contains the following fields: - Next Hop IP Address - Next Hop Interface - Link Direction - Activated Flag The direction of the link is relative to the location of the group leader, i.e. UPSTREAM is a next hop towards the group leader, and DOWNSTREAM is a next hop away from the group leader. A node on the multicast tree must necessarily have only one UPSTREAM link. The IP Address of a Next Hop MUST NOT be used to forward multicast messages until after a MACT message has activated the route (see Section 9.6). The Next Hop Interface fields in the Route Table and Next Hop field of the Multicast Route Table are used for recording the outgoing interface on which the next hop can be reached (see Section 9.14). Nodes MAY also maintain a Group Leader Table, which is an association between multicast groups and their corresponding group leaders. The fields of the group leader table are the following: Royer, Perkins Expires 15 December 2000 [Page 4] Internet Draft Multicast AODV 15 July 2000 - Multicast Group IP Address - Group Leader IP Address This table can be used when discovering routes to multicast groups, as described in Section 9.2. 4. MAODV Terminology This protocol specification uses conventional meanings [1] for capitalized words such as MUST, SHOULD, etc., to indicate requirement levels for various protocol features. This section defines other terminology used with MAODV that is not already defined in [3]. group leader A node which is a member of the given multicast group and which is typically the first such group member in the connected portion of the network. This node is responsible for initializing and maintaining the multicast group destination sequence number. group leader table The table where ad hoc nodes keep information concerning each multicast group and its corresponding group leader. There is one entry in the table for each multicast group for which the node has received a Group Hello (see Section 9.2). multicast tree The tree containing all nodes which are members of the multicast group and all nodes which are needed to connect the multicast group members. multicast route table The table where ad hoc nodes keep routing (including next hops) information for various multicast groups. reverse route A route set up to forward a reply (RREP) packet back to the source from the destination or from an intermediate node having a route to the destination. Royer, Perkins Expires 15 December 2000 [Page 5] Internet Draft Multicast AODV 15 July 2000 5. Route Request (RREQ) Message Format 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 |J|R|G| Reserved | Hop Count | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Other fields as specified for AODV....... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ The format of the Route Request message remains as specified in [2], except that the following flags have been added: J Join flag; set when source node wants to join a multicast group. R Repair flag; set when a node wants to initiate a repair to connect two previously disconnected portions of the multicast tree. When a node wishes to repair a multicast tree, it appends the Multicast Group Rebuild extension (see Section 10.2). When a node wishes to unicast the RREQ for a multicast group to the group leader, it includes the Multicast Group Leader extension (see Section 10.1). 6. Route Reply (RREP) Message Format 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 |R| Reserved |Prefix Sz| Hop Count | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Other fields as specified for AODV....... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ The format of the Route Reply message remains as specified in [2], except that the following flag has been added: R Repair flag; set when a node is responding to a repair request to connect two previously disconnected portions of the multicast tree. When the RREP is sent for a multicast destination, the Multicast Group Information extension is appended (see Section 10.3). Royer, Perkins Expires 15 December 2000 [Page 6] Internet Draft Multicast AODV 15 July 2000 7. Multicast Activation (MACT) Message Format 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 |J|P|G|U|R| Reserved | Hop Count | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Multicast Group IP address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source IP address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ The format of the Multicast Activation message is illustrated above, and contains the following fields: Type 4 J Join flag; set when a node is joining the multicast group, as opposed to finding a route to the group for the transmission of data messages. P Prune flag; set when a node wishes to prune itself from the tree, unset when the node is activating a tree link. G Group Leader flag; set by a multicast tree member that fails to repair a multicast tree link breakage, and indicates to the group member receiving the message that it should become the new multicast group leader. U Update flag; set when a multicast tree member has repaired a broken tree link and is now a new distance from the group leader. R Reboot flag; set when a node has just rebooted (see Section 9.13). Reserved Sent as 0; ignored on reception. Hop Count The distance of the sending node from the multicast group leader. Used only when the 'U' flag is set; otherwise sent as 0. Multicast Group IP Address The IP address of the Multicast Group for which a route is supplied. Royer, Perkins Expires 15 December 2000 [Page 7] Internet Draft Multicast AODV 15 July 2000 Source IP Address The IP address of the sending node. Source Sequence Number The current sequence number for route information generated by the source of the route request. To prune itself from the tree (i.e., inactivate its last link to the multicast tree), a multicast tree member sends a MACT with the 'P' flag = 1 to its next hop on the multicast tree. A multicast tree member that has more than one next hop to the multicast tree SHOULD NOT prune itself from the multicast tree. 8. Group Hello (GRPH) Message Format 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 |U|O| Reserved | Hop Count | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Group Leader IP address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Multicast Group IP address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Multicast Group Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ The format of the Group Hello message is illustrated above, and contains the following fields: Type 5 U Update flag; set when there has been a change in group leader information. O Off_Mtree flag; set by a node receiving the group hello that is not on the multicast tree. Reserved Sent as 0; ignored on reception. Hop Count The number of hops the packet has traveled. Used by multicast tree nodes to update their distance from the group leader when the M flag is not set. Group Leader IP Address The IP address of the group leader. Royer, Perkins Expires 15 December 2000 [Page 8] Internet Draft Multicast AODV 15 July 2000 Multicast Group IP Address The IP address of the Multicast Group for which the sequence number is supplied. Multicast Group Sequence Number The current sequence number of the multicast group. 9. Protocol Operation This section describes the scenarios under which nodes generate control messages for multicast communication, and how the fields in the messages are handled. 9.1. Maintaining Multicast Tree Utilization Records For each multicast tree to which a node belongs, either because it is a member of the group or because it is a router for the multicast tree, the node maintains a list of next hops -- i.e., those 1-hop neighbors that are likewise a part of the multicast tree. This list of next hops is used for forwarding messages received for the multicast group. A node forwards a multicast message to every such next hop, except that neighbor from which the message arrived. If there are multiple next hops, the forwarding operation MAY be performed by broadcasting the multicast packet to the node's neighbors; only the neighbors that belong to the multicast tree and have not already received the packet continue to forward the multicast packet. 9.2. Generating Route Requests A node sends a RREQ either when it determines that it should be a part of a multicast group, and it is not already a member of that group, or when it has a message to send to the multicast group but does not have a route to that group. If the node wishes to join the multicast group, it sets the `J' flag in the RREQ; otherwise, it leaves the flag unset. The destination address of the RREQ is always set to the multicast group address. If the node knows the group leader and has a route to it, the node MAY place the group leader's address in the Multicast Group Leader extension (Section 10.1), and unicast the RREQ to the corresponding next hop for that destination. Otherwise, if the node does not have a route to the group leader, or if it does not know who the multicast group leader is, it broadcasts the RREQ and does not include the extension field. After transmitting the RREQ, the node waits for the reception of a RREP. The node may resend the RREQ up to RREQ_RETRIES additional Royer, Perkins Expires 15 December 2000 [Page 9] Internet Draft Multicast AODV 15 July 2000 times if a RREP is not received. If a RREQ was unicast to a group leader and a RREP is not received within RREP_WAIT_TIME milliseconds, the node broadcasts subsequent RREQs for that multicast group across the network. If a RREP is not received after RREQ_RETRIES additional requests, the node may assume that there are no other members of that particular group within the connected portion of the network. If it wanted to join the multicast group, it then becomes the multicast group leader for that multicast group and initializes the sequence number of the multicast group. Otherwise, if it only wanted to send packets to that group without actually joining the group, it drops the packets it had for that group and aborts the session. When the node wishes to join or send a message to a multicast group, it first consults its Group Leader Table. Based on the existence of an entry for the multicast group in this table, the node then formulates and sends the RREQ as described at the beginning of this section. 9.2.1. Controlling Route Request broadcasts To prevent unnecessary network-wide broadcasts of RREQs, the source node SHOULD use an expanding ring search technique as specified in [2]. When a RREP is received, the Hop Count to the group leader used in the RREP packet is remembered as Last Hop Count for that node in the routing table. When a new route to the same multicast group is required at a later time (e.g., upon a link break in the multicast tree), the TTL in the RREQ IP header is initially set to this Last Hop Count plus TTL_INCREMENT. Thereafter, following each timeout the TTL is incremented by TTL_INCREMENT until TTL = TTL_THRESHOLD is reached, as in [2]. 9.3. Receiving Route Requests When a node receives a RREQ, the node checks whether the 'J' flag of the RREQ is set. If the 'J' flag is set, the node can only respond if it is a member of the multicast tree for the indicated multicast group, and if its record of the multicast group sequence number is at least as great as that contained in the RREQ. If the 'J' flag is not set, then the node can respond if it has an unexpired route to the multicast group and the above multicast group sequence number criteria is met. If the node does not meet either of these conditions, it rebroadcasts the RREQ from its interface(s) but using its own IP address in the IP header of the outgoing RREQ. The Destination Sequence Number in the RREQ is updated to the maximum of the existing Destination Sequence Number in the RREQ and the multicast group sequence number in the Royer, Perkins Expires 15 December 2000 [Page 10] Internet Draft Multicast AODV 15 July 2000 multicast route table (if an entry exists) of the current node. The TTL or hop limit field in the outgoing IP header is decreased by one. The Hop Count field in the broadcast RREQ message is incremented by one, to account for the new hop through the intermediate node. The node always creates or updates a reverse route as specified in [2]. This reverse route would be needed in case the node receives an eventual RREP back to the node which originated the RREQ (identified by the Source IP Address). In addition to creating or updating the route table entry for the source node, the node receiving the RREQ also creates a next hop entry for the multicast group in its multicast route table. If no entry exists for the multicast group, it creates one, and then places the node from which it received the RREQ as next hop for that group. It leaves the Activated flag associated with this next hop unset. The direction for this next hop entry is DOWNSTREAM. 9.4. Generating Route Replies If a node receives a join RREQ for a multicast group, and it is already a member of the multicast tree for that group, the node updates its multicast route table and then generates a RREP message. The Source and Destination IP Addresses in RREQ message are copied to corresponding fields in the RREP message. The RREP contains the current sequence number for the multicast group and the IP address of the group leader. Furthermore, the node initializes the Hop Count field of the RREP to zero. Additional information about the multicast group is entered into the Multicast Group Information extension (see Section 10.3). It unicasts the RREP back to the node indicated by the Source IP Address field of the received RREQ. A node can respond to a join RREQ only if it is a member of the multicast tree. If a node receives a multicast route request that is not a join message, it can reply if it has a current route to the multicast tree. Otherwise it continues forwarding the request. If a node receives a join RREQ for a multicast group and it is not already a member of the multicast tree for that group, it rebroadcasts the RREQ to its neighbors. When a node receives a RREQ for a multicast group which has its own IP address in the Destination IP address of the IP header, that means that the source node expects this destination node to be the multicast group leader. In this case, if the node is in fact not the group leader, it can simply ignore the RREQ. The source node will time out after RREP_WAIT_TIME milliseconds and will broadcast a new RREQ without the group leader address specified. Royer, Perkins Expires 15 December 2000 [Page 11] Internet Draft Multicast AODV 15 July 2000 Regardless of whether the multicast group leader or a multicast tree member generates the RREP, the RREP fields are set as follows: Hop Count 0 Destination IP Address The IP address of the multicast group. Destination Sequence Number The current multicast group sequence number. Lifetime The time for which nodes receiving the RREP consider the route to be valid (only used it the RREQ is not a join request). The Multicast Group Information extension described in Section 10.3 is also included for join requests. If the node generating the RREP is not on the multicast tree (because the RREQ was not a join RREQ), it places its distance from the multicast tree in the Hop Count field, instead of 0. 9.5. Forwarding Route Replies If an intermediate node receives a RREP in response to a RREQ that it has transmitted (or retransmitted on behalf of some other node), it creates a multicast group next hop entry for the node from which it received the RREP. The direction of this next hop is UPSTREAM, and the Activated flag is left unset. Additionally, the node updates the Lifetime field in the route table entry associated with the node from which it received the RREP. It then increments the Hop Count and Multicast Group Hop Count fields or the RREP and forwards this packet along the path to the source of the RREQ. When the node receives more than one RREP for the same RREQ, it saves the route information with the greatest sequence number, and beyond that the lowest hop count; it discards all other RREPs. This node forwards the first RREP towards the source of the RREQ, and then forwards later RREPs only if they have a greater sequence number or smaller metric. 9.6. Route Activation When a node broadcasts a RREQ message, it is likely to receive more than one reply since any node in the multicast tree can respond. The RREP message sets up route pointers as it travels back to the source node. If the request is a join request, these route pointers may eventually graft a branch onto the multicast tree. Also, because Royer, Perkins Expires 15 December 2000 [Page 12] Internet Draft Multicast AODV 15 July 2000 multicast data packets may be transmitted as broadcast traffic, the route to the multicast tree must be explicitly selected. Otherwise, each node with a route to the tree which receives a multicast data packet will rebroadcast the packet, resulting in an inefficient use of network bandwidth. Hence, it is necessary to activate only one of the routes created by the RREP messages. The RREP containing the largest destination sequence number is chosen to be the branch added to the multicast tree (or the path to the multicast tree, if the request was a non-join). In the event that a node receives more than one RREP with the same (largest) sequence number, it selects the first one with the smallest hop count, i.e., the shortest distance to a member of the multicast tree. After waiting RREP_WAIT_TIME milliseconds, the node must select the route it wishes to use as its link to the multicast tree. This is accomplished by sending a Multicast Activation (MACT) message. The Destination IP Address field of the MACT packet is set to the IP address of the multicast group. If the node is joining the multicast group, it sets the join flag of this message. The node unicasts this message to the selected next hop, effectively activating the route. It then sets the Activated flag in the next hop Multicast Route Table entry associated with that node. After receiving this message, the node to which the MACT was sent activates the route entry for the link in its multicast route table, thereby finalizing the creation of the tree branch. All neighbors not receiving this message time out and delete that node as a next hop for the multicast group in their route tables, having never activated the route entry for that next hop. Two scenarios exist for a neighboring node receiving the MACT message. If this node was previously a member of the multicast tree, it does not propagate the MACT message any further. However, if the next hop selected by the source node's MACT message was not previously a multicast tree member, it will have propagated the original RREQ further up the network in search of nodes which are tree members. Thus it is possible that this node also received more than one RREP, as noted in Section 9.5. When the node receives a MACT selecting it as the next hop, it unicasts its own MACT to the node it has chosen as its next hop, and so on up the tree, until a node which was already a part of the multicast tree is reached. 9.7. Multicast Tree Pruning A multicast group member can revoke its member status at any time. However, it can only actually leave the multicast tree if it is not a tree router for any other nodes in the multicast group (i.e., if it Royer, Perkins Expires 15 December 2000 [Page 13] Internet Draft Multicast AODV 15 July 2000 is a leaf node). If a node wishing to leave the multicast group is a leaf node, it unicasts to its next hop on the tree a MACT message with the 'P' flag set and with the Destination IP Address set to the IP address of the multicast group. It then deletes the multicast group information for that group from its multicast route table. When its next hop receives this message, it deletes the sending node's information from its list of next hops for the multicast tree. If the removal of the sending node causes this node to become a leaf node, and if this node is also not a member of the multicast group, it may in turn prune itself by sending its own MACT message up the tree. When the multicast group leader wishes to leave the multicast group, it proceeds in a manner similar to the one just described. If it is a leaf node, it may leave the group and unicast a prune message to its next hop. The next hop acts in the manner described in Section 9.10, since the prune message is coming from its upstream neighbor. Otherwise, if the group leader is not a leaf node, it may not prune itself from the tree. It takes the actions described in Section 9.9, where it selects one of its next hops and unicasts to it the MACT with set 'G' flag. 9.8. Repairing a Broken Link Branches of the multicast tree become invalid if a broken link results in an infinite metric being associated with the next hop route table entry. When a broken link is detected between two nodes on the multicast tree, the two nodes should delete the link from their list of next hops for the multicast group. The node downstream of the break (i.e., the node which is further from the multicast group leader) is responsible for initiating the repair of the broken link. In order to repair the tree, the downstream node broadcasts a RREQ with destination IP address set to the IP address of the multicast group and with the 'J' flag set. The destination sequence number of the RREQ is the last known sequence number of the multicast group. The node also includes the Multicast Group Leader Extension. The Multicast Group Hop Count field of this extension is set to the distance of the source node from the multicast group leader. A node MUST have a hop count to the multicast group leader less than or equal to the indicated value in order to respond. This hop count requirement prevents nodes on the same side of the break as the node initiating the repair from replying to the RREQ. The RREQ is broadcast using an expanding rings search, as described in Section 9.2.1. Because of the high probability that other nearby nodes can be used to rebuild the route, the original RREQ is broadcast with a TTL (time to live) field value equal to TTL_INCREMENT plus the Multicast Group Hop Count. In this way, Royer, Perkins Expires 15 December 2000 [Page 14] Internet Draft Multicast AODV 15 July 2000 the effects of the link breakage may be localized. If no reply is received within RREP_WAIT_TIME milliseconds, the node SHOULD increment the TTL of each successive RREQ by TTL_INCREMENT, until either a route is determined, or TTL_THRESHOLD is reached. After this point, if a route is still not discovered, each additional RREQ is broadcast with TTL = NET_DIAMETER. Up to RREQ_RETRIES additional broadcasts may be attempted after TTL = NET_DIAMETER is reached. A node receiving this RREQ can respond if it meets the following conditions: - It is a member of the multicast tree. - Its record of the multicast group sequence number is at least as great as that contained in the RREQ. - Its hop count to the multicast group leader is less than or equal to the contained in the Multicast Group Hop Count extension field. If the originating node receives more than one RREP, route activation occurs as described in the previous section. At the end of the discovery period, the node selects its next hop and unicasts a MACT message to that node to activate the link, as described in Section 9.6. Since the node was repairing a tree break, it is likely that it is now a different distance from the group leader than it was before the break. If this is the case, it must inform its DOWNSTREAM next hops of their new distance from the group leader. It does this by broadcasting a MACT message with the 'U' flag set, and the Hop Count field set to the node's new distance from the group leader. This 'U' flag indicates that multicast tree nodes should update their distance from the group leader. When a node on the multicast tree receives the MACT message with the 'U' flag set, it determines whether this packet arrived from its UPSTREAM neighbor. If it did not, the node discards the packet. Otherwise, it increments the Hop Count value contained in the MACT packet and updates it distance to the group leader to be this node value. If this node has one or more downstream next hops, it in turn must send a MACT message with a set 'U' flag to its next hops, and so on. When a link break occurs, it is possible that the tree will be repaired through different intermediate nodes. If the node UPSTREAM of the break is not a group member, and if the loss of that link causes it to become a leaf node, it sets a prune timer to wait for the link to be repaired. This PRUNE_TIMEOUT should be larger than RREP_WAIT_TIMEOUT to give the link time to be repaired. If, when this timer expires, the node has not received a MACT message selecting it to be a part of the repaired tree branch, it prunes Royer, Perkins Expires 15 December 2000 [Page 15] Internet Draft Multicast AODV 15 July 2000 itself from the tree by sending a MACT with set 'P' flag to its next hop, as previously described. 9.9. Tree Partitions It is possible that after a link breaks, the tree cannot be repaired due to a network partition. If the node attempting to repair a tree link break does not receive a response after RREQ_RETRIES attempts, it can be assumed that the network has become partitioned and the multicast tree cannot be repaired at this time. In this situation, if the node which initiated the route rebuilding is a multicast group member, it becomes the new multicast group leader for its part of the multicast tree partition. It increments the group sequence number and then broadcasts a Group Hello (GRPH) for this multicast group. The 'U' flag in the GRPH is set, indicating that there has been a change in the group leader information. All nodes receiving this message update their group leader table to indicate the new group leader information. Nodes which are a part of the multicast tree also update the group leader and sequence number information for that group in their multicast route table. On the other hand, if the node which had initiated the repair is not a multicast group member, there are two possibilities. If it only has one next hop for the multicast tree, it prunes itself from the tree by unicasting a MACT message, with the 'P' flag set, to its next hop. The node receiving this message notes that the message came from its upstream link, i.e., from a node that is closer to the group leader than it is. If the node receiving this message is a multicast group member, it becomes the new group leader and broadcasts a GRPH message as indicated above. Otherwise, if it is not a multicast group member and it only has one other next hop link, it similarly prunes itself from the tree. This process continues until a multicast group member is reached. The other possibility is that the node which initiated the rebuilding is not a group member and has more than one next hop for the tree. In this case, it cannot prune itself, since doing so would partition the tree. It instead selects one of its next hops and unicasts a MACT with the 'G' flag set to that node. This flag indicates that the next group member to receive this message should become the new group leader. It then changes the direction of that link to be UPSTREAM. If the node receiving the MACT is a group member, then this node becomes the new group leader. Otherwise, the node unicasts its own MACT message with the 'G' flag set to one of its next hops, and changes the direction of that link. Once a group member is reached, the new group leader is determined. Royer, Perkins Expires 15 December 2000 [Page 16] Internet Draft Multicast AODV 15 July 2000 9.10. Reconnecting Two Trees In the event that a link break cannot be repaired, the multicast tree remains partitioned until the two parts of the network become connected once again. A node from one partition of the network knows that it has come into contact with a node from the other partition of the network by noting the difference in the GRPH message multicast group leader information. The multicast group leader with the lower IP address initiates the tree repair. For the purposes of this explanation, call this node GL1. GL1 unicasts a RREQ with both the 'J' and 'R' flags set to the group leader of the other network partition (GL2), using the node from which it received the GRPH as the next hop. This RREQ contains the current value of GL1's multicast group sequence number. If any node that receives the RREQ is a member of GL2's multicast tree, it MUST forward the RREQ along its upstream link, i.e. towards GL2. This prevents any loops from being formed after the repair. Upon receiving the RREQ, GL2 takes the larger of its and the received multicast group sequence number, increments this value by one, and responds with a RREP. This is the group leader which becomes the leader of the reconnected multicast tree. The 'R' flag of the RREP is set, indicating that this RREP is in response to a repair request. As the RREP is propagated back to GL1, nodes add the incoming and outgoing links to the multicast route table next hop entries if these entries do not already exist. The nodes also activate these entries, thereby adding the branch on to the multicast tree. If a node that was previously a member of GL1's tree receives the RREP, it MUST forward the packet along its link to its previous group leader (GL1). It then updates its group leader information to reflect GL2 as the new group leader, changes the direction of the next hop link associated with GL1 to DOWNSTREAM, and sets the direction of the link on which it received the RREP to UPSTREAM. When GL1 receives the RREP, it updates its group leader information and sets the link from which it received the RREP as its upstream link. The tree is now reconnected. The next time GL2 broadcasts a GRPH, it sets the `U' flag to indicate that there is a change in the group leader information and group members should update the corresponding information. All network nodes update their group leader table to reflect the new group leader information. 9.11. Maintaining Local Connectivity Each node on the multicast tree MUST keep track of its neighbors which are next hops on the multicast tree. This is done as specified in [2]. If a link to the next hop cannot be detected by any of the methods specified therein, the forwarding node MUST assume that the Royer, Perkins Expires 15 December 2000 [Page 17] Internet Draft Multicast AODV 15 July 2000 link is broken, and take corrective action by following the methods specified in Section 9.8. Whenever the multicast tree is used for the transmission of data packets, a node on the tree must hear from each of its next hop neighbors every RETRANSMIT_TIME. The node can hear from its neighbors through one of the methods previously described, or through the reception of a rebroadcast of a data packet from these next hops, if the data packets are being transmitted by broadcast. If a node does not hear from one of its multicast tree next hops within RETRANSMIT_TIME, and if the multicast tree is actively being used to transmit data packets, then the node MUST assume the link to its next hop is broken, and proceed as described in Section 9.8. Decreasing the amount of time between when a node must hear from its next hops from ALLOWED_HELLO_LOSS * HELLO_INTERVAL milliseconds to RETRANSMIT_TIME allows for the quickest detection of broken links and fewer data packet losses. 9.12. Group Hello Messages If a node sends a RREQ to join a multicast group (`J' flag set) and after RREQ_RETRIES attempts does not receives a response, it then becomes the multicast group leader. The node initializes the multicast group sequence number and then broadcasts a GRPH message to inform network nodes that it is now the group leader for the multicast group. To ensure nodes maintain consistent and up-to-date information about who the multicast group leaders are, any node which is a group leader for a multicast group broadcasts such a GRPH across the network every GROUP_HELLO_INTERVAL milliseconds. The contents of the GRPH fields are set as follows: U Flag 0 M Flag 0 Hop Count 0 Group Leader IP Address The IP Address of the group leader. Multicast Group IP Address The IP Address of the Multicast Group for which the node is the group leader. Multicast Group Sequence Number One plus the last known sequence number of the multicast group. Royer, Perkins Expires 15 December 2000 [Page 18] Internet Draft Multicast AODV 15 July 2000 Nodes receiving the GRPH increment the Hop Count field by one before forwarding the message. When a node not on the multicast tree receives the GRPH message, it sets the 'M' flag. This indicates that this incarnation of the message has traveled off the multicast tree, and hence cannot be used by group members to verify their distance from the group leader. The 'U' flag is set by the group leader whenever there has been a change in group leader information. It informs nodes that they should update the group leader information associated with the indicated multicast group. A node receiving the GRPH message first verifies that is has not already received the GRPH message with the same group IP address/group sequence number pair in the last BCAST_ID_SAVE milliseconds. If it has, it silently discards the message. Otherwise, the node updates its group leader table to reflect the current multicast group IP address/group leader IP address combination, and increments the Hop Count value in the message. If the node receiving the GRPH message is a member of the multicast tree, it also updates this information in its multicast route table. If the 'M' flag is unset, then this node can also use the Hop Count value to verify its current distance from the group leader. After processing the GRPH message, the node buffers the group IP address/ group sequence number combination to avoid multiple processings of the same GRPH message. It then rebroadcasts the message to its neighbors. 9.13. Actions After Reboot A node participating in the multicast tree that reboots (or restarts the routing daemon) loses all of its multicast tree information. Upon reboot, the rebooted node does not know whether it was previously a member of the multicast tree. Hence, it should unconditionally broadcast a MACT message with set Reboot ('R') flag to inform neighboring nodes that it has lost its multicast group information. When a node on the multicast tree receives the reboot MACT message, it checks whether this message came from one of its next hops on the multicast tree. If so, one of two situations exists. If the reboot MACT came from a downstream link, the node deletes that link from its list of next hops and sets a prune timer according to the guidelines in Section 9.8. Otherwise, if the reboot MACT came from a node's upstream link, it must rebuild the tree branch as is also indicated in Section 9.8. Royer, Perkins Expires 15 December 2000 [Page 19] Internet Draft Multicast AODV 15 July 2000 9.14. Interfaces Because MAODV should operate smoothly over wired, as well as wireless, networks, and because it is likely that MAODV will also be used with multi-homed radios, the interface over which packets arrive must be known to MAODV whenever a packet is received. This includes the reception of RREQ, RREP, MACT, and GRPH messages. Whenever a packet is received from a new neighbor, the interface on which that packet was received is recorded into the route table entry for that neighbor, along with all the other appropriate routing information. Similarly, whenever a route to a new destination is learned, the interface through which the destination can be reached is also recorded into the destination's route table entry. When multiple interfaces are available, a node receiving and rebroadcasting a RREQ or GRPH message rebroadcasts that message on all interfaces except the one on which it was received. If a node is participating on the multicast tree, and if multicast data packets are being sent as broadcast traffic, a multicast tree node should only rebroadcast a packet on those interfaces which have multicast tree next hops. 10. Extensions This section specifies for multicast extensions for RREQ and RREP messages, conforming to the format defined in [2]. 10.1. Multicast Group Leader Extension Format This extension is appended to a RREQ by a node wishing to repair a multicast tree. 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 | Length | Multicast Group Leader IP ... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... Address (continued) | Previous Hop IP Address ... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... (continued) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Type 3 Length 8 Royer, Perkins Expires 15 December 2000 [Page 20] Internet Draft Multicast AODV 15 July 2000 Multicast Group Leader IP Address The IP Address of the Multicast Group Leader. Previous Hop IP Address The IP Address of the node which previously received the RREQ. This field is used when the RREQ is unicast to the group leader when a node wishes to join a multicast group. This extension is used when unicasting the RREQ to the group leader. Each node receiving the RREQ updates the Previous Hop IP Address field to reflect its address. 10.2. Multicast Group Rebuild Extension Format This extension is appended to a RREQ by a node wishing to repair a multicast tree. 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 | Length | Multicast Group Hop Count | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Type 4 Length 2 Multicast Group Hop Count The distance in hops of the node sending the RREQ from the Multicast Group Leader. This extension is used for rebuilding a multicast tree branch. It is used to ensure that only nodes as least as close to the group leader as indicated by the Multicast Group Hop Count field respond to the request. 10.3. Multicast Group Information Extension Format The following extension is used to carry additional information for the RREP message (see Section 6) when sent to establish a route to a multicast destination. Royer, Perkins Expires 15 December 2000 [Page 21] Internet Draft Multicast AODV 15 July 2000 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 | Length | Multicast Group Hop Count | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Multicast Group Leader IP Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Type 5 Length 6 Multicast Group Hop Count The distance of the node from the Multicast Group Leader. Multicast Group Leader IP Address The IP Address of the current Multicast Group Leader. This extension is included when responding to a RREQ to join a multicast group. The node responding to the RREQ places its distance from the group leader in the Multicast Group Hop Count field. 11. Configuration Parameters This section gives default values for some important values associated with MAODV protocol operations. A particular mobile node may wish to change certain of the parameters, in particular the NET_DIAMETER, MY_ROUTE_TIMEOUT, ALLOWED_HELLO_LOSS, RREQ_RETRIES, and possibly the HELLO_INTERVAL. In the latter case, the node should advertise the HELLO_INTERVAL in its Hello messages, by appending a Hello Interval Extension to the RREP message. Choice of these parameters may affect the performance of the protocol. Royer, Perkins Expires 15 December 2000 [Page 22] Internet Draft Multicast AODV 15 July 2000 Multicast Parameters Value ---------------------- ----- GROUP_HELLO_INTERVAL 5,000 Milliseconds MTREE_BUILD 2 * REV_ROUTE_LIFE PRUNE_TIMEOUT ACTIVE_ROUTE_TIMEOUT RETRANSMIT_TIME 750 Milliseconds Additional AODV Parameters -------------------------- ACTIVE_ROUTE_TIMEOUT ALLOWED_HELLO_LOSS BCAST_ID_SAVE DELETE_PERIOD HELLO_INTERVAL NET_DIAMETER NEXT_HOP_WAIT NODE_TRAVERSAL_TIME REV_ROUTE_LIFE RREP_WAIT_TIME RREQ_RETRIES TTL_START TTL_INCREMENT TTL_THRESHOLD Please see [2] for a discussion of and the appropriate values for the Additional AODV Parameters. 12. Security Considerations Currently, MAODV does not specify any special security measures. Route protocols, however, are prime targets for impersonation attacks, and must be protected by use of authentication techniques involving generation of unforgeable and cryptographically strong message digests or digital signatures. It is expected that, in environments where security is an issue, that IPSec authentication headers will be deployed along with the necessary key management to distribute keys to the members of the ad hoc network using MAODV. Royer, Perkins Expires 15 December 2000 [Page 23] Internet Draft Multicast AODV 15 July 2000 References [1] S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. Request for Comments (Best Current Practice) 2119, Internet Engineering Task Force, Mar. 1997. [2] C. Perkins, E. Royer, and S. Das. Ad hoc on demand distance vector (AODV) routing (work in progress). Internet Draft, Internet Engineering Task Force, Mar. 2000. [3] C. E. Perkins. Terminology for Ad-Hoc Networking (work in progress). draft-ietf-manet-terms-00.txt, Nov. 1997. Author's Addresses Questions about this memo can be directed to: Elizabeth M. Royer Dept. of Electrical and Computer Engineering University of California, Santa Barbara Santa Barbara, CA 93106 +1 805 893 7788 +1 805 893 3262 (fax) eroyer@alpha.ece.ucsb.edu Charles E. Perkins Communications Systems Laboratory Nokia Research Center 313 Fairchild Drive Mountain View, CA 94303 USA +1 650 625 2986 +1 650 691 2170 (fax) charliep@iprg.nokia.com Royer, Perkins Expires 15 December 2000 [Page 24]