Spines is a generic messaging infrastructure that provides transparent unicast, multicast and anycast communication over dynamic, multi-hop networking environments without the need for expensive router programming environments or low level router coding. It provides automatic reconfiguration and network flexibility required for research and production deployments.

Some of the main usages of Spines are:

  • Create generic network topologies with dynamic link characteristics (bandwidth, latency, loss rate, burstiness) on regular computer clusters.
  • Deploy overlay networks in the Internet, to achieve additional services not available in the current networking infrastructure (e.g. overlay multicast), as well as improved performance for existing services.
  • Create a logical LAN over unorganized, multi-hop hybrid and wireless networks. As an example, it provides the communication infrastructure between wireless access points in SMesh, a completely transparent wireless mesh network with instantaneous handoff.
  • Deploy an intrusion-tolerant overlay network on existing Internet (IP) infrastructure to overcome attacks and compromises in both the underlying network and overlay itself. The intrusion-tolerant overlay provides performance guarantees (i.e., strict timeliness or strict reliability) even while under attack. See Intrusion Tolerant Documentation for more details.

Spines instantiates virtual router nodes on participating computers and creates virtual links between these nodes. Spines uses best-effort links, as well as reliable and soft real-time links between the nodes for store and forward capabilities. Packets are routed automatically through the network topology. The Spines topology can be dynamically adjusted, and nodes select their routing based on various metrics including hop distance, latency or packet loss.

In order to use Spines, applications use an API almost identical to the Unix Socket interface. Virtually any socket-based application can be easily adapted to work with Spines. The Spines API provides TCP and UDP-like functions for both reliable and best effort point to point communication, and also provides multicast functionality in a transparent way, very similar to IP Multicast.

Spines was created by Yair Amir, Claudiu Danilov, John Schultz, Daniel Obenshain, Thomas Tantillo, and Amy Babay. It is currently developed by the Distributed Systems and Networks Lab at Johns Hopkins University and at Spread Concepts, LLC.

Spines may be freely used and distributed under some conditions. Please review the license agreement for more details.


  • Version 5.5 - Dec 23, 2020
  • Version 5.4 - Nov 26, 2018
  • Version 5.3 - Mar 9, 2018
  • Version 5.2 - May 17, 2017
  • Version 5.1 - May 17, 2016
  • Version 5.0 - Jan 26, 2015
  • Version 4.0 - Sep 4, 2013
  • Version 3.2 - May 15, 2009
  • Version 3.1 - Mar 21, 2008
  • Version 3.0 - May 31, 2007
  • Version 2.2 - Dec 20, 2005
  • Version 2.1 - Jan 18, 2005
  • Version 2.0 - Dec 14, 2003
  • Version 1.0 - Jan 17, 2003

Complete Change Log.

Related publications

Distributed Systems and Networks Lab
Computer Science Department, Johns Hopkins University
207 Malone Hall
3400 North Charles Street
Baltimore, MD 21218
TEL: (410) 516-5562