STRAW - STreet RAndom Waypoint - vehicular mobility model for network simulations

30-second pitch

The Random Waypoint (RWP) mobility model, though popular, can lead to incredibly inaccurate results when evaluating the performance of wireless ad-hoc network protocols and applications. STRAW (STreetRAndom Waypoint) provides more accurate simulation results by using a vehicular mobility model on real US cities, based on the operation of real vehicular traffic. STRAW's current implementation is written for the highly efficient JiST/SWANS discrete-event simulator, and is open source and available for free.

STRAW is part of the C3 (Car-to-Car Cooperation) project.

To date, STRAW and SWANS++ have been downloaded 3509 times.

Screen shot of STRAW with the enhanced visualization tool.

Long Introduction

The community is increasingly interested in developing network protocols and services for vehicular ad-hoc networks (VANETs). Due in part to the prohibitive cost of deploying and implementing such systems in the real world, most research in this area relies on simulation for evaluation. A key component of these simulations is a realistic vehicular mobility model that ensures conclusions drawn from such experiments will carry through to real deployments.

Unlike many other mobile ad-hoc environments where node movement occurs in an open field (such as conference rooms and cafés), vehicular nodes are constrained to streets often separated by buildings, trees or other objects. Street layouts and different obstructions increase the average distance between nodes and, in most cases, reduce the overall signal strength received at each node. We argue that a more realistic mobility model with the appropriate level of detail for vehicular networks is critical for accurate network simulation results. The STRAW (STreet RAndom Waypoint) mobility model addresses this issue by constraining node movement to streets defined by map data for real US cities and limit their mobility according to vehicular congestion and simplified traffic control mechanisms.

We have shown that the performance of wireless network protocols in urban environments is dramatically different than that in an open-field Random Waypoint model and, further, that the type of urban environment can significantly impact the performance of a protocol. We also argue that an integrated vehicular traffic and network traffic simulator is essential when VANET applications are expected to influence the mobility of participating vehicles.



Graduate Students


Version history

  • 1.3 Added support for lane-changing, flows of traffic and repeatable routes.
    Where is version 1.3? Version 1.3 is currently provided only through the SWANS++ project. I will "backpatch" the JiST/SWANS distribution and post it here at a later date.
  • 1.2.1 Fixed patch compatibility with new version of
  • 1.2 Released visualization tool, minor changes to StreetMobility.
  • 1.1 Significantly improved A* search time, other minor changes.
  • 1.0 First public release.

Upcoming features

  • Incorporating path loss models for buildings and other vehicles (Status: building phase)
  • Interaction with real-time, real-world positional information (Status: planning phase)
  • Support for additional map sources (Status: ongoing)

If you would like to suggest features, to have access to beta software or otherwise participate in this project, please contact This email address is being protected from spambots. You need JavaScript enabled to view it. . Also, if you have extended STRAW, please consider making your code public. I have created a repository in SourceForge (see below).

SWANS/STRAW Development

As of 2/21/2006, I have created a SourceForge project, SWANS++, to serve as a central access point for SWANS development and extensions. You will currently find files releases and anonymous CVS access to the Ceratias visualization tool and STRAW.

If you have developed extensions for SWANS or would like to extend STRAW or Ceratias, please use the SourceForge site and request to be added to the project. By working together and openly, we can improve SWANS and provide a much richer simulation environment for the community.

Wish List

There are a number of projects related to this work that I would like to see happen, but I don't have the time to do myself. Please contact me with ideas to add to this list and/or links to projects that address any of these issues. This site has gotten over 1,000 hits in the first few months, so I'd like it to be a resource for all developers in the JiST/SWANS community.

  • Improved MAC layer
  • Support for and examples of real-world wireless and mobility trace data
  • Support for and examples of real-world wireless trace data
  • Support for Java 5.0
  • ...


Frequently Asked Questions

  • Q: I get the following error:
    Simulation exception!
    java.lang.IndexOutOfBoundsException: list maximum exceeded
    at sun.reflect.GeneratedMethodAccessor15.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(
    at java.lang.reflect.Method.invoke(
    at jist.runtime.Controller.processEvent(
    at jist.runtime.Controller.eventLoop(

    A: This is due to the default implementation of MessageQueues in SWANS. For whatever reason, the queue throws an exception instead of simply dropping the message. A workaround is to place a return statement at the line throwing the exception. A more advanced workaround will notify higher layers of the reason for the drop.