The Swing Traffic Generator (original) (raw)

A brief description of Swing

Swing is a closed-loop, network responsive traffic generator that accurately captures the packet interactions of a range of applications using a simple structural model. Starting from observed traffic at a single point in the network, Swing automatically extracts distributions for user, application, and network behavior. It then generates live packet traffic corresponding to the underlying models in a network emulation (ModelNet) environment running commodity network protocol stacks. By modeling fine-grained user, network and application behavior Swing can reproduce burstiness in traffic across a range of timescales. Swing also provides users with a set of intuitive knobs that can be tuned to project traffic to alternate scenarios. For instance, it allows the user to change assumptions about network conditions, application mix and application characteristics, for instance the response size of objects, to generate new traffic.

Kashi Venkatesh Vishwanath

Amin Vahdat

Changelog

README

Swing, is a closed-loop traffic generator, aimed for laboratory experiments. The current beta release possibly contains a number of bugs that have not manifested in the limited testing the authors have done before releasing the source code. We would love to hear about any such findings. Any ideas for improvements are of course, always welcome.

Please read all the categories, INSTALL, USAGE, ASSUMPTIONS, and DESCRIPTION before prooceeding with experimentation.

The brief explanation here assumes BASH as the shell environment. Please alter the commands as appropriate per your environment.

ASSUMPTIONS:

INSTALL:

$ ./configure --prefix= $ make $ make install

USAGE:

$ export SWINGHOME=

(i.e. same as that used in prefix above)

$ export PATH=${SWINGHOME}:${PATH}

now here are two different usage scenarios

Scenario1:

Say you have a single file (in pcap format).
Rename it as fileboth.dump

create a directory for storing the trace, say tracedir1
$ mkdir /home/john/tracedir1
$ cp tracefile.dump /home/john/tracedir1/

say the outputs are in some dir ${SWINGTRACES}
and this particular expt is in dir swingexpt1
now call
$ swing_masterscript.sh /home/john/tracedir1  <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi>S</mi><mi>W</mi><mi>I</mi><mi>N</mi><mi>G</mi><mi>H</mi><mi>O</mi><mi>M</mi><mi>E</mi></mrow><mi>s</mi><mi>w</mi><mi>i</mi><mi>n</mi><mi>g</mi><mi>e</mi><mi>x</mi><mi>p</mi><mi>t</mi><mn>1</mn></mrow><annotation encoding="application/x-tex">{SWINGHOME} swingexpt1 </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8778em;vertical-align:-0.1944em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05764em;">S</span><span class="mord mathnormal" style="margin-right:0.13889em;">W</span><span class="mord mathnormal" style="margin-right:0.07847em;">I</span><span class="mord mathnormal">NG</span><span class="mord mathnormal" style="margin-right:0.08125em;">H</span><span class="mord mathnormal" style="margin-right:0.05764em;">OME</span></span><span class="mord mathnormal">s</span><span class="mord mathnormal" style="margin-right:0.02691em;">w</span><span class="mord mathnormal">in</span><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="mord mathnormal">e</span><span class="mord mathnormal">x</span><span class="mord mathnormal">pt</span><span class="mord">1</span></span></span></span>{SWINGTRACES}

After the expt the trace will be collected in dir ${SWINGTRACES}/swingexpt1
as fileboth, file0 and file1

Scenario2:

Say you have two files (file0 and file1), corresponding
to the two directions of traffic

create a directory for storing the trace, say tracedir1
$ mkdir /home/john/tracedir1
$ cp file0 file1 /home/john/tracedir1/

say the outputs are in some dir ${SWINGTRACES}
and this particular expt is in dir swingexpt1
now call
$ swing_masterscript.sh /home/john/tracedir1  <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi>S</mi><mi>W</mi><mi>I</mi><mi>N</mi><mi>G</mi><mi>H</mi><mi>O</mi><mi>M</mi><mi>E</mi></mrow><mi>s</mi><mi>w</mi><mi>i</mi><mi>n</mi><mi>g</mi><mi>e</mi><mi>x</mi><mi>p</mi><mi>t</mi><mn>1</mn></mrow><annotation encoding="application/x-tex">{SWINGHOME} swingexpt1 </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8778em;vertical-align:-0.1944em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05764em;">S</span><span class="mord mathnormal" style="margin-right:0.13889em;">W</span><span class="mord mathnormal" style="margin-right:0.07847em;">I</span><span class="mord mathnormal">NG</span><span class="mord mathnormal" style="margin-right:0.08125em;">H</span><span class="mord mathnormal" style="margin-right:0.05764em;">OME</span></span><span class="mord mathnormal">s</span><span class="mord mathnormal" style="margin-right:0.02691em;">w</span><span class="mord mathnormal">in</span><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="mord mathnormal">e</span><span class="mord mathnormal">x</span><span class="mord mathnormal">pt</span><span class="mord">1</span></span></span></span>{SWINGTRACES}

After the expt the trace will be collected in dir ${SWINGTRACES}/swingexpt1
as fileboth, file0 and file1

Note, that both scenarios are almost identical.

DESCRIPTION:

swing_masterscript.sh involves 3 stages

Stage 0: Convert 2way trace (say fileboth.dump) to 1way traces (file0 and file1) if neeeded. (scripts/swing_trace_convert_2way_2_1way.sh)

Stage 1: Extract user/network/application parameters from the trace (scripts/swing_extractuserappnwparams.sh)

Stage 2: Configure the expt with metadata etc. Run the xpt. Collect the resulting swing trace. (scripts/swing_exptpreprocess.sh)

These stages can be called independently too. Please modify as appropriate.

Kashi Venkatesh Vishwanath swingxficgenerator@gmail.com

 </swingxficgenerator@gmail.com>

| ToN '09 | | Swing: Realistic and Responsive Network Traffic Generation Proceedings of IEEE/ACM Transactions on Networking 2009. Kashi Vishwanath, Amin Vahdat | | ------------------------------------------------------ | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | USENIX '08 | | Evaluating Distributed Systems: Does Background Traffic Matter? Proceedings of USENIX 2008, Boston, MA. Kashi Vishwanath, Amin Vahdat | | SIGCOMM '06 | | Realistic and Responsive Network Traffic Generation. Proceedings of ACM SIGCOMM 2006, Pisa, Italy. [Slides .ppt] Kashi Vishwanath, Amin Vahdat | | SIGCOMM '05 | | Swing: Generating Representative High-Speed Packet Traces. Extended Abstract, ACM SIGCOMM 2005, Philadelphia Kashi Vishwanath, Amin Vahdat |