The Open Source Routing Machine or OSRM is a C ++ implementation of a high-performance routing engine for shortest paths in road networks . Licensed under the permissive 2-clause BSD license, OSRM is a free network service. OSRM supports Linux, FreeBSD, Windows, and Mac OS X platform.
It combines sophisticated routing algorithms with the OpenStreetMap (OSM) project. Shortest path computation on a continous sized network can take up to several seconds if it is done without a so-called speedup-technique. OSRM uses an implementation of Contraction Hierarchies and is able to compute and output a shortest path between any origin and destination within a few milliseconds, whereby the pure route computation takes much less time. Most effort is spent in annotating the route and transmitting the geometry over the network.
Since it is designed with OpenStreetMap compatibility in mind, OSM data files can be easily imported. A demo installation is sponsored by Karlsruhe Institute of Technologyand previously by Geofabrik. OSRM is under active development. The screen shot image shown is since Sept 2015 out of date with loss of expectant routing service features.
OSRM was part of the 2011 Google Summer of Code class. 
FeaturesScreenshot showing a route with multiple waypoints
- ‘Click-to-drag’ dynamic routing in Google Maps
- Alternative routes
- Free-to-use API
- Free and open-source under the simplified two-clause BSD license
- Jump up^ https://github.com/Project-OSRM/osrm-backend/blob/master/LICENCE.TXT
- Jump up^ “Improvements to the Open Source Routing Machine (OSRM).” Google Summer of Code 2011. Accessed May 2012.