Routing in Ad Hoc Networks of Mobile Hosts: A Simulation Exercise

MECH 590: Directed Studies with Dr. Gerard McLean

B. Cameron Lesiuk, B. Eng.

December 16, 1998

Department of Mechanical Engineering

University of Victoria, Victoria, BC, Canada


This report was written in partial fulfillment of a MECH 590 Directed Studie s course with my supervisor, Dr. Ged McLean. This report was written in Frame Bu ilder and later translated into HTML form.

Click here to return to my home page.


This report documents an effort to investigate, implement, and simulate the Dynamic Source Routing (DSR) protocol for ad hoc networks of mobile nodes. DSR operation is briefly presented.

A packet-level network simulator was developed to simulate the operation of DSR. Investigations previously done by Johnson were repeated using this simulator, and a comparrison of the results made. In the end, due to time constraints, only a small subset of Johnsonís original simulations were repeated and the results analyzed.

Table of Contents

List of Tables

Table 1: Parameter values used in the simulation.

List of Figures

Figure 1.1: Ad hoc network of four wireless mobile nodes.
Figure 1.2: Ad hoc network partitioned into two separate networks.
Figure 1.3: Ad hoc network with a one-way link.

Figure 2.1: A packet being source routed from node 9 to node 5.

Figure 3.1: An ad hoc network illustrating use of the route cache.
Figure 3.2: Node 4 notices the route can be shortened.

Figure 4.1: Comparison of simulation results to Johnson [3].
Figure 4.2: Network topology resulting in more than three-hop routes.

1. Introduction

This report documents an effort to investigate, implement, and simulate a routing protocol for ad hoc networks of mobile nodes. The protocol investigated is the Dynamic Source Routing (DSR) protocol as discussed in [3]. The primary purpose of the investigation is to develop an understanding and hands-on appreciation of ad hoc routing protocols: their behavior, nuances, and complexity. A secondary goal of the exercise is to independently implement a packet level network simulator and repeat the simulations done by Johnson in [3]. This allows comparisons to be made between the work done by Johnson in 1996 and the work described in this report.

This report is divided into three main components. An overview of ad hoc networks of mobile hosts is presented in the remainder of this introduction. A description of the Dynamic Source Routing protocol is presented in Sections 2 and 3. Finally, a description of the network simulator, simulation environment, and simulation results with commentary are provided in Section 4.

1.1 Ad Hoc Networks of Mobile Nodes

An ad hoc network is a collection of mobile nodes forming a temporary network without the aid of any centralized administration or standard support services. In this paper, it is assumed mobile hosts use wireless RF transceivers as their network interface, although many of the same principles will apply to infrared and wire based networks. Some form of routing protocol is necessary in these ad hoc networks since two nodes wishing to exchange packets may not be able to communicate directly.

Figure 1.1 illustrates an ad hoc network with four wireless mobile nodes. In this example, each node is within transmission range of two neighboring nodes (indicated by the circles around each node), but is out of range of a third. If two nodes which are not within range of each other wish to exchange information, they must enlist the aid of intermediary nodes to forward information on their behalf. In Figure 1.1, if node 1 sends a packet to node 4, it must send it first to node 2 (or 3). Node 2 can then forward the packet on to node 4.

Figure 1.1: Ad hoc network of four wireless mobile nodes.

Each time a packet is transmitted to a neighboring node, it is said to have made a hop. In the above example, when node 1 sends a packet to node 4, the packet makes two hops: first from node 1 to node 2, and second from node 2 to node 4.

Sometimes in a network of mobile nodes, parts of the network may become isolated and separate. This effect is called network partitioning and is illustrated in Figure 1.2. When network partitioning occurs, nodes can continue to exchange information within the same partition, but it is impossible for information to flow between partitions.

Figure 1.2: Ad hoc network partitioned into two separate networks.

Another situation found in wireless networks is illustrated in Figure 1.3. In this example, node 1 has a large enough range to transmit packets directly to node 3. However, node 3 has a much smaller range and must enlist the help of node 2 in order to return packets to node 1. This makes the link between node 1 and node 3 appear as a one-way or unidirectional link.

Figure 1.3: Ad hoc network with a one-way link.

In summary, routing protocols for ad hoc networks face several challenges. Ad hoc networks require multi-hop forwarding to facilitate information exchange. Wireless links are nonuniform and can cause unidirectional links. By their very nature, mobile nodes tend to "wander around", changing their network location and link status on a regular basis, sometimes partitioning the network. Furthermore, new nodes may unexpectedly join the network or existing nodes may leave or be turned off. It is the goal of ad hoc routing protocols to provide network connectivity despite these challenges.

2. Dynamic Source Routing

Dynamic Source Routing (DSR) [1],[3]-[5] is designed to allow nodes to dynamically discover a source route across multiple network hops to any destination in an ad hoc network. Source routing is a routing technique in which the sender of a packet determines the complete sequence of nodes through which to forward the packet. The sender explicitly lists this path in the packetís header, identifying each forwarding "hop" by the address of the next node to which to transmit the packet on its way to the destination node. A key advantage of source routing is that intermediate hops do not need to maintain routing information in order to route the packets they receive, since the packets themselves already contain all necessary routing information. An example of a packet moving through an ad hoc network with source routing is illustrated in Figure 2.1.

Figure 2.1: A packet being source routed from node 9 to node 5.

DSR is broken down into three functional components: routing, route discovery and route maintenance. Routing has already been described above and is relatively trivial. Route discovery is the mechanism by which a node wishing to send a packet to a destination obtains a path to the destination. Route maintenance is the mechanism by which a node detects a break in its source route and obtains a corrected route. 

2.1 Route Discovery

To perform route discovery, a source node broadcasts a route request packet with a recorded source route listing only itself. The route request packet also contains a unique sequence number generated by the source. Each node that hears the route request adds its own address to the source route in the packet, and then rebroadcasts the packet. The route request packet propagates hop-by-hop outward from the source node until either the destination node is found or until another node is found that can supply a route to the target.

To prevent route request packets from being broadcast around in loops, nodes will not forward route requests if they are already listed as a hop in the route. To reduce congestion and duplication, each node maintains a small cache of recently received route request < sequence numbers / source address > pairs and does not propagate copies of a route request packet after the first.

All source routes learned by a node are kept (memory permitting) in a route cache, which is used to further reduce the cost of route discovery. A node may learn of routes from virtually any packet the node forwards or overhears. When a node wishes to send a packet, it examines its own route cache and performs route discovery only if no suitable source route is found.

Further, when a node receives a route request for which it has a route in its cache, it does not propagate the route request, but instead returns a route reply to the source node. The route reply contains the full concatenation of the route from the source (from the request packet), and the route leading to the destination (from the route cache).

2.2 Route Maintenance

Conventional routing protocols integrate route discovery with route maintenance by continuously sending periodic routing updates. If the status of a link or node changes, the periodic updates will eventually reflect the change to all other nodes, presumably resulting in the computation of new routes. However, using route discovery, there are no periodic messages of any kind from any of the mobile nodes. Instead, while a route is in use, the route maintenance procedure monitors the operation of the route and informs the sender of any routing errors.

If a node along the path of a packet detects an error, the node returns a route error packet to the sender. The route error packet contains the address of the node at both ends of the hop in error. When a route error packet is received or overheard, the hop in error is removed from any route caches; all routes which contain this hop must be truncated at that point.

There are many methods of returning a route error packet to the sender. The easiest of these, which is only applicable in networks which only use bidirectional links, is to simply reverse the route contained in the packet from the original node. If unidirectional links are used in the network, the DSR protocol in [1] presents several alternative methods of returning route error packets to the sender.

Route maintenance can also be performed using end-to-end acknowledgments rather than the hop-by-hop acknowledgments described above. As long as some route exists by which the two end nodes can communicate, route maintenance is possible. In this case, existing transport or application level replies or acknowledgments, or explicitly requested network level acknowledgments, may be used to indicate the status of the nodeís route to the other node.

3. Optimizations

A number of optimizations are possible to the basic operation of route discovery and route maintenance as described in Section 2. These optimizations can reduce the number of overhead packets and can improve the average efficiency of the routes used on data packets. This section discusses some of these optimizations.

3.1 Leveraging the Route Cache

The active routes in a nodeís route cache in effect form a tree of routes, rooted at this node, to other nodes in the ad hoc network. For example, Figure 3.1 shows an ad hoc network of five mobile nodes. Node 1 has earlier completed a route discovery for node 4 and has cached the route to 4 through 2 and 3.

Figure 3.1: An ad hoc network illustrating use of the route cache.

Since nodes 2 and 3 are on the route to 4, node 1 also learns the route to both of these nodes from its route discovery for 4. If 1 later performs a route discovery and learns the route to 6 through 2 and 3, it can represent this in its route cache with the addition of the single new hop from 3 to 6. Consequently, if node 1 learns it can reach 3 in a single hop, it can use this new route to shorten both routes leading to 4 and 6 in its route cache.

A node can add entries to its route cache any time it learns a new route. In particular, when a node forwards a data packet as an intermediate hop in the packetís path, the node is able to observe the entire route in the packet. Thus, for example, when node 2 forwards packets from node 1 to 4, node 2 can add the route information from that packet to its own route cache. In this case, node 2 learns of routes to node 1, 3, and 4. If a node forwards a route request or reply packet, it can also add the route information from the route record in the packet to its own cache. Finally, since all wireless network transmissions are inherently broadcast, a node may be able to configure its network interface into promiscuous receive mode, and can then add to its route cache the route information from any packet it overhears.

A node may use its route cache to avoid propagating a route request packet received from another node. Suppose a node receives a route request packet for a target for which the node has a cached source route entry; the node may append this cached route to the accumulated route record in the packet, and may return this route in a route reply packet to the initiator without propagating (re-broadcasting) the route request. 

3.2 Route Discovery Using Expanding Ring Search

The propagating nature of a basic route request packet means that potentially every node in the ad hoc network will be disturbed whenever a request packet is created. To reduce this network-wide cost, nodes may limit the maximum propagation of their route requests by including a hop count limit in the request packet. Once the packet has reached its hop count limit, the packet will not be forwarded any further. By transmitting multiple request packets, with increasing hop count limits, route discovery operations can be orchestrated to disturb remote nodes less at the cost of slightly more disturbances locally. In large networks, it is expected this would result in a net decrease in the overall bandwidth consumed by the route discovery process.

3.3 Reflecting Shorter Routes

While two nodes are communicating with each other using cached routes, it is desirable for the nodes to begin using shorter routes should the possibility arise. In many cases, the basic route maintenance procedure is sufficient to accomplish this, since if one of the nodes moves enough to allow the route to be shortened, it will likely also move out of transmission range of another hop in the existing route.

An improvement to this method is possible if nodes operate their network interfaces in promiscuous receive mode. Suppose somewhere in the forwarding of a packet, mobile node 2 transmits a packet to node 3, with node 4 being the next hop after 3 in the route in the packet, as illustrated in Figure 3.2. If 4 receives this packet, it can examine the packet header to see that the packet reached it from 2 in one hop rather than two as intended by the route in the packet. In this case, 4 may infer the route may be shortened to exclude the intermediate hop through 3. Node 4 then sends an unsolicited route reply packet to the original sender of the packet, informing it that it can now reach 4 in one hop from 2. As with other route reply packets, other nodes which receive this route reply may also incorporate this change into their route caches.

Figure 3.2: Node 4 notices the route can be shortened.

3.4 Improved Handling of Errors

When a network becomes partitioned, two nodes may wish to communicate which are physically unable to do so. If a new route discovery were to be initiated for each packet sent by a node in this situation, a large number of unproductive route request packets would be propagated throughout the subset of the network partition. In order to reduce the overhead from such route discovery attempts, an exponential backoff is used to limit the rate at which new route discoveries may be initiated by a node for the same target. If the node attempts to send additional data packets to this same node, the subsequent packets are buffered until a route reply is received, or until they are dropped.

Another optimization possible to improve the handling of errors is to use promiscuous receive mode to allow nodes to eavesdrop on route error packets being sent to other nodes. Since a route error packet names both ends of the route hop causing the error, any node receiving the error packet can update its route cache to reflect the fact that the two nodes indicated in the packet can no longer directly communicate. A node receiving a route error packet can simply search its route cache for any routes using this hop, and for each such route found, the route is truncated at this hop. All nodes on the route before this hop are still reachable on this route, but subsequent nodes are not.

4. Network Simulation

The primary purpose of the simulation exercise in this report was to develop an understanding and hands-on appreciation of ad hoc routing protocols: their behavior, nuances, and complexity. To achieve this goal, a network simulator was created and run, similar to the work and investigations of Johnson in [3]. Although this work is somewhat dated and more extensive network simulations have been done by Broch et al [2], it was felt following the preliminary work of Johnson would provide more benefit and understanding than merely downloading and running the network simulations used by Broch.

In [3], Johnson describes their simulation environment, assumptions, and results. One of the difficulties in analyzing and objectively comparing ad hoc routing protocols is the complete lack of standard metrics. Therefore, to facilitate a meaningful comparison of results to those found in the literature, the simulator, assumptions, and simulation scenarios of Johnson were to be repeated. This not only facilitates confirmation of results from this investigation, but would also serve to support Johnsonís findings.

Section 4.1 describes the simulation environment developed and the assumptions made. Section 4.2 presents the results of simulations and discusses them in comparison to Johnsonís work.

4.1 Simulation Environment and Assumptions

A packet-level simulator was constructed similar in character to that described in [3]. The simulator implements the basic DSR protocol along with some optimizations described in Section 3. Optimizations not implemented in this simulation were some route cache optimizations and route reflection. It is important to note Johnson implemented a more complete set of the possible optimizations, and results were expected to vary accordingly.

The basic simulation parameters were chosen to model an ad hoc network consisting of a collection of mobile nodes moving around in a medium-sized room. The area in which the nodes move is square, 9 meters on a side. Each node moves with a velocity between 0.3 and 0.7 meters per second (somewhere between a slow walk and a quick stroll), and each transceiver has a range of 3 meters. These parameters could represent, for example, a group of nodes using diffuse infrared transceivers, or since the parameters are related and can be scaled linearly, they could also represent a number of cars with radio-equipped portables driving (very quickly) around an area of 1 square kilometer.

Each node is initially placed at a random position within the simulation area. As the simulation progresses, each node pauses at its current location for a period called the pause time. After this pause time has expired, each node randomly chooses a new location to move to and a velocity between 0.3 and 0.7 meters per second at which to move there. Each node continues this behavior, alternately pausing and moving to a new location, for the duration of the simulation. Using this model, nodes appear to wander through the room with their restlessness determined by the pause time constant.

Whenever a node transmits a packet, some method must be used to determine which of the surrounding nodes will receive a copy of the packet. While the simulationís transmission model is simple, it still estimates the basic performance of a wireless medium with a collision-avoiding link layer protocol (though collisions are still possible due to node movement). Furthermore, nodes are given relatively equal access to the shared bandwidth and small packet transmission delays (jitter) are introduced to avoid synchronization problems.

In the simulation, each node can be the originator of up to three simultaneous conversations with other nodes, with the other participant in the conversation chosen randomly from among the other nodes. While a node is the initiator of less than three conversations, it initiates a new conversation with a randomly chosen partner after an average period of 15 seconds. Each conversation lasts for a predetermined number of packets, the number being chosen at random from between 500 and 1500 packets.

During a conversation, packets are sent to the partner at a random rate between 2 and 5 packets per second. Packet lengths are chosen with a distribution such that 70% of the packets are long packets (1000 bytes) and the remainder are short packets (32 bytes). On top of this payload, protocol overhead adds to the overall packet size and varies according to protocol requirements (such as the length of the source route). To give the appearance of a two way conversation, the partner sends a return packet back to the originator for every packet it receives. These return packets have the same length distribution as the originatorís packets.

Packet transmission in the simulator is based on a network using link level acknowledgments at each hop, although acknowledgments are not provided for broadcast packets. Transmissions to a node that is out of range always fail while transmissions to a node in range fail with a probability of 5%. The data link layer in the simulator will make up to 2 retransmission attempts if the first transmission fails. Each time a sender transmits a packet, the other nodes in range of the sender each have a 95% chance of overhearing the packet. The bandwidth for transmitting data is 100 KBytes per second.

There are a number of parameters such as timeouts and holdoff periods which must be configured within the protocol. The values used in the simulator are shown in Table 1. As far as the author can tell, these values are comparable to those used in [3].

Table 1: Parameter values used in the simulation.

Parameter Value
Nonpropagating (1-hop) route request time out 100 ms
Route request (multi-hop) time out 500 ms
Maximum route request period (after backoff) 10 s
Packet forwarding jitter 1-2 ms

Nonpropagating route request time out: When a node initiates route discovery, the first packet transmitted is a route request packet with a hop limit of 1. This queries the local neighbors of the node and saves the expense of a full network-wide route request should the destination be found to be a neighbor. The nonpropagating route request time out is the time the initiating node will wait, after transmission of the limited route request packet, before a multi-hop route request packet is transmitted.

Route request time out: If, after a route request packet is transmitted, no reply is received in this amount of time, the node will retransmit the route request packet. Note, however, to avoid excessive congestion in the event of a network partition, each route request timeout becomes progressively longer (backoff) to a maximum limit.

Maximum route request period: Assuming a node performing route discovery consistently receives no route reply packets, it will backoff from retransmitting the route request packet. This value is the maximum timeout before another route request packet is sent; the node will not backoff beyond this value.

Packet forwarding jitter: When a node receives a packet which it is to be retransmitted to either another hop in the network or simply rebroadcast, it delays transmission of the packet this random time to introduce artificial jitter. This avoids transmission synchronization in the simulation which can result in uniform transmission patterns and skewed results.

The simulator does not attempt to model channel contention. Given a suitable data link layer protocol such as GAMA-PS [7], the chance of data being lost to collision during periods of channel contention grows small, although at the expense of more delay in packet sending and receipt as each node waits for its turn to use the bandwidth. Therefore, while the model in this investigation should accurately show the number of packets that will be received, the latency of any individual packet exchange cannot be determined.

The simulator also does not model unidirectional links. This choice is necessarily implied by the requirement of implementing the DSR protocol on top of a data link layer with link level acknowledgments.

A final minor limitation of the simulator is the environment is assumed to be devoid of obstacles to transmission or movement. Further, transmission failures are assumed to be uniformly distributed and independent. This does not take into account spatially localized failures due to noise or interference such as from microwave ovens (for radio) or windows and reflections (for infrared). 

4.2 Simulation Results and Discussion

Johnson [3] originally executed 20 runs of the simulator for each of a number of different movement rates and number of mobile nodes in the simulated ad hoc network. Each run simulated 4000 seconds of execution (just over one hour), with each node moving and communicating as described in the previous section. The movement of the mobile nodes was determined by the pause time, with pause times ranging from 0 to 4000 seconds. With a pause time of 0, all nodes are constantly in motion, whereas with a pause time of 4000, nodes do not move during the run from their initial randomly chosen locations. The ad hoc network in each run consisted of 6, 12, 18 or 24 mobile nodes.

It was the aim of this investigation to repeat these same simulation executions using an independently constructed simulator. Unfortunately, this goal has proved unattainable at this time. The primary cause was the extended amount of time dedicated to the construction of the simulator itself. Coding and validation of the separate application and physical layers, followed by the complete implementation of the DSR protocol required substantially more time than initially expected. Furthermore, the complexity of the task of implementing a full blown routing protocol was also more than expected. Finally, it was very apparent the simulation had to run fault-free (or at least fault-tolerant) so that the simulator did not crash halfway through a simulation; a regular application can be restarted where it left off, but a simulation has to start all over (I will include state preservation capabilities in future network simulators). Thus the time spent debugging the simulator was also increased. These simulator production problems left little time in which actual simulations could be performed.

The computation time required to run simulations presented the second major hurdle. It was found the simulator required approximately two seconds of execution time to execute one second of simulated time per node. Thus a simulation with 6 nodes requires approximately 12 seconds of execution time for every 1 second of simulation time. For the simulations to match those of Johnson in [3], simulation execution times of between 12 and 48 hours or more per scenario would be required. To duplicate the entire suite of scenarios as performed by Johnson, nearly four straight computing months would be required (assuming the simulator never crashed). On the limited computing facilities of the author (two somewhat-obsolete Linux machines) this proved to be a limiting factor in the size and diversity of the simulations which could be performed. In the end, only seven simulations were completed in the time available for this project. Five tests were run with 6 nodes, for 1000 seconds (unlike Johnsonís 4000). Two tests were run with 12 nodes, one for 158 seconds and another for 762 seconds.

These limited simulations could still be analyzed and compared with the findings of Johnson, albeit with little statistical validity. These comparisons are made in Figure 4.1. Note Johnsonís simulation results are the average response of 20 simulations for each scenario, whereas Lesiukís results are single simulation results.

Figure 4.1: Comparison of simulation results to Johnson [3].

The discrepancy between the simulation results is considerable. It should be noted all of Johnsonís simulations ran for a full 4000 seconds, whereas the simulations in this investigation ran for 1000 (or less, in the case of the 12-node simulations). Consequently, anomalous activity at the beginning of the simulation is amplified. Without more controlled conditions, the effects of the unimplemented optimizations in the DSR protocol cannot be factored out either. Finally, the 6-node simulations represent a worst-case scenario of all of the simulations due to the frequent network partitioning, especially during simulations with high node mobility.

An interesting and unexpected result of the simulations showed, in both 6 and 12-node simulations, networks with lower pause time effectively became unable to route any packets requiring more than one hop. Unfortunately, Johnson does not provide hop count statistics to support this claim. However, it appears as though, for high node mobility, the routing protocol may operate equivalently if all packets were simply broadcast to the first-hop neighbors, with no multi-hop propagation of packets.

After construction of the network simulator, and intimate analysis of DSR and the simulation scenarios, the entire simulation context was found to be lacking. First of all, the simulationís physical dimensions are very small. With a node transmission radius of 3 meters and a square environment with 9 meters a side, the theoretical maximum number of simultaneous transmissions is 4. For practical purposes, this is generally limited to only one or two nodes being able to transmit at a time.

Secondly, the only way for a routeís hop count to go above 3 in this environment is for simulations where nodes happen to form into long thin networks weaving around the environment, as illustrated in Figure 4.2. In this event, network partitions are more likely to form than long network chains. Although hop counts as long as 7 were observed in a simulation with 12 nodes, hop counts over 3 represented less than 6% of all routes used. The vast majority (68%) of routes consisted of only 1 hop. This is in start contrast to the simulations by Broch et al [2] where hop counts of 1, 2, and 3 hops formed 32%, 24%, and 19% of routes respectively.


Figure 4.2: Network topology resulting in more than three-hop routes.

5. Conclusions

This paper presents an introduction to the Dynamic Source Routing protocol. Route discovery, route maintenance, and several optimization procedures were discussed.

A packet layer network simulator was created according to the model described by Johnson in [3]. Originally, all of Johnsonís simulations were planned to be repeated. However, time constraints and computing facilities permitted only 7 token simulations to be performed.

The investigations performed in this exercise have effectively provided both insight and experience into the development, implementation, operation and limitations of the DSR protocol. Experience was also gained in the development and analysis of a network simulator.

6. References

[1] Josh Broch, David Johnson, David Maltz, The Dynamic Source Routing Protocol for Mobile Ad Hoc Networks, Internet Draft, draft-ietf-manet-dsr-00.txt, March 13, 1998. Work in progress.

[2] Josh Broch, David A. Maltz, David B. Johnson, Yih-Chun Hu, Jorjeta Jetcheva, A Performance Comparison of Multi-Hop Wireless Ad Hoc Network Routing Protocols, Proceedings of the Fourth Annual ACM/IEEE International Conference on Mobile Computing and Networking (MobiCom Ď98), October 25, 1998.

[3] David Johnson, Dynamic Source Routing in Ad Hoc Wireless Networks, Mobile Computing, Kluwer Academic Publishers, pp 153-181, 1996.

[4] David B. Johnson, Routing in Ad Hoc Networks of Mobile Hosts, Proceedings of the IEEE Workshop on Mobile Computing Systems and Applications, pp 158-163, December, 1994.

[5] David Johnsom, David Maltz, Protocols for Adaptive Wireless and Mobile Networking, IEEE Personal Communications, Volume 3 Issue 1, February, 1996.

[6] B. Cameron Lesiuk, Routing in Ad Hoc Networks of Mobile Hosts, Mech590 Report, University of Victoria, December 2, 1998.

[7] Andrew Muir, J. J. Garcia-Luna-Aceves, An Efficient Packet Sensing MAC protocol for wireless networks, Mobile Networks and Applications, Vol 3, pp 221-234, 1998.

7. Glossary of Terms

address Each node in a network has a unique identifier called the nodeís address. This address is used in routing to determine where packets should be sent.

ad hoc For the scope of this paper, ad hoc means unplanned and/or established for one specific reason or occasion.

ad hoc network A network which is formed without a priori knowledge or planning. Nodes belonging to an ad hoc network do not share any central authority or support structure.

broadcast A packet which is broadcast is received by every and all nodes within transmission range of the sender.

hop Each time a packet is transmitted, it is said to have performed one hop. Multi-hop networks require nodes in the network to enlist the aid of neighboring nodes to forward packets towards a destination node.

link A communication channel by which a node can send packets to another node.

loop Some protocols, when they have not converged, can set up routing loops. A loop is formed when two nodes do not agree on the shortest path to a destination. For example, suppose node A routes a packet to node B, but B subsequently routes the packet back to A. In this example, the packet will be routed between nodes A and B ad infinitum, or until their routing logic is synchronized and the routing protocol converges.

mobile node A node which is willing and able to physically move location, resulting in network topology changes.

partition Sometimes, in an ad hoc network, the network can break apart and groups of nodes can be out of range of other groups of nodes. When this happens, the network is said to be partitioned. Each group is called a network partition.

router A node willing to forward and route packets on behalf of other nodes. In ad hoc networks, typically every node acts as a router.

source routing In source routing, a node wishing to send a node will completely describe the path packets should take to a destination. In some networks, such as ATM, source routing is accomplished based on a complete knowledge of the network topology. In ad hoc networks, source routing usually requires special route discovery procedures.

topology The graph representing node positions and their links to other nodes. The topology is said to change when links change state (are either created or destroyed) or nodes change state (are appear, disappear, or move).

Appendix: Network Simulator Source Code

The source code for the network simulator referenced in this report can be found at

B. Cameron Lesiuk