These are the software tools to accompany the PEVA journal paper
"Simulation Modeling of Zoom Network Traffic: A Case Study", written by
Mehdi Karamollahi, Carey Williamson, and Martin Arlitt from the University of Calgary.

There are three C source code files:

  makeworkload.c  - generates a synthetic workload for Zoom meetings/sessions

  route.c   - simulates the routing of this workload on a network topology

  balance.c  - simulates different Zoom server load balancing strategies

You should be able to compile and run these on any Linux system.

Usage:
  cc -o makeworkload makeworkload.c -lm
  cc -o route route.c
  cc -o balance balance.c

# To make a Zoom workload file:
  cc -o makeworkload makeworkload.c -lm     (with MEETINGS_ONLY and DEBUG both disabled)
  ./makeworkload > temp.dat
  grep eeting temp.dat | awk '{print $1,$2,$3,$4,$5,$6,$7}' > meetings.dat   (to save meeting level info)
  grep -v eeting temp.dat > temp2.dat   (to remove extraneous meeting level output)
  sort -n temp2.dat > sessions.dat    (to ensure the file is now in timestamp order)
  cp sessions.dat workload.dat
  
# To simulate 'workload.dat' on network topology 'topology.dat':
  ./route           (takes about 2 minutes on the example provided)
          (enable the LINK debug option for detailed usage on U-R link)

# To test Zoom server load balancing policies, either use the "meetings.dat"
# file that you made above, or make a new separate one like this:
  cc -o makeworkload makeworkload.c -lm     (with MEETINGS_ONLY and DEBUG both enabled)
  ./makeworkload > meetings.dat
  ./balance < meetings.dat > stats.dat   (produces time series data for plotting)


The example data files provided correspond to one of those used
for the paper mentioned above. To generate your own files,
edit the workload generation parameter settings as desired,
and change the random number seed. Have fun!
