a lightweight network simulator

tssnet is a fast and easy-to-use simulator of networks of TCP and UDP flows. tssnet is available as a library with a C interface. Also available is a Python wrapper with functions for logging and plotting metrics versus time. A simple script suffices to define a network, simulate it and plot metrics.

  log = [ metrics at t1,
      metrics at t2,
      metrics at t3,
      . . . ]
create network
  add nodes, links
  add tcp / udp flows

  while not done
   update network
   log metrics

plot metrics
  plot tcp_log

Unlike traditional network simulators, tssnet does not do packet-level simulation. Instead, tssnet does timestep stochastic simulation (TSS). The simulated state is updated probabilistically at steps of time (rather than at every packet transmission). Consequently tssnet is fast, especially for high-speed networks: the computational cost does not increase with link bandwidth; the memory cost does not increase with the number of packets in transit.

TSS is the successor to a deterministic timestep method, named Z-iteration, that computes time-dependent averages assuming Poisson traffic. Ibrahim Matta came up with the Z-iteration for multi-class queues. Catalin Popescu extended it to networks of queues with tcp flows. Andrezj Kochut made the timestep method probabilistic and extended the traffic to diffusion processes, resulting in TSS. Arun Vasan extended TSS to 802.11 links.

Upcoming versions of tssnet will have more capabilities (dynamic routing, intermittent application load, 802.11 links, etc).

Questions? Email me (Udaya Shankar) at shankar@cs.umd.edu.

home user guide examples downloads