Simulating

Standard 20x500 Baseline NMS Challenge Topology

Using DaSSFNet


Brief Description

The topology of the network is a graph of 20 "network clouds" or "campuses" that form a ring. Shortcuts between campuses are provided for those that are 4 hops and 10 hops away. Each campus contains a total of 4 hosts running server applications (both TCP and UDP), 504 hosts running client applications (either TCP or UDP), and 30 routers. That is, the entire network comes with 10,080 client hosts, 80 server hosts, and 600 routers to direct traffic to their destinations.

There are three types of traffic models: one for pure TCP traffic, one for pure UDP, and one being a mixture of the two. In case of pure TCP or pure UDP, the 504 clients on one campus are all trying to retrieve a file of 50KB in size from the 4 servers on the campus next to it in the ring. In case of mixed TCP and UDP traffic, TCP clients are connecting to servers on the next campus; UDP clients are connecting to servers on the campus three hops away down the ring. Each campus has 264 TCP clients and 240 UDP clients.

In the model, each campus is a different SSF timeline, capable of running on a different processor. We are able to distribute and run this model on 20 workstations using DaSSFNet.

A more detailed description of the topology and the traffic load of the model can be found at http://www.renesys.com/~ato/gallery/baseline/index.html, where the DML configuration files used for simulation can also be downloaded.

We made a tar ball here for you to have all required DML files in one place.

Simulation Requirements

1. Install DaSSF

The C++ SSFNet, also known as DaSSFNet, is built on top of our high-performance parallel simulator DaSSF. In order for you to run this model, first you need to download the latest version of DaSSF from DaSSF Home Page.

DaSSF is capable of running both on shared-memory multiprocessors and distributed cluster of workstations. For the reset of the discussion, we assume you want to simulate the model on a network of Linux clusters. In this case, you need to have MPI installed and ready to run. To compile DaSSF with MPI options, you also need to set a few environment variables. Consult with the User's Manual (Section 2.3.2) for detailed installation instructions. The following steps assume that MPI is available and the required environment variables are already set. Follow these steps to build the DaSSF kernel.

The very last step sets the environment variable DaSSF_HOME necessary for compiling DaSSFNet. Note that `pwd` is quoted within in a pair of backward apostrophes to function as a command (not shown clearly in html).

If you're planning to run the models only on a sequential or shared-memory multiprocessor machine, you can save the trouble setting up the MPI environment variables. You may just follow the steps above to install DaSSF, except that, when configuring DaSSF, you do not want to set the option "--enable-mpi".

2. Build DaSSFNet

It's time to build DaSSFNet. First, download it from DaSSFNet Home Page.

Simply untar it to a directory and build it by doing a 'make'. Be sure to have DaSSF installed and the environment variable DaSSF_HOME points to DaSSF's root directory before compiling DaSSFNet.

After DaSSFNet is compiled, an executable is generated. If you are on a PC Linux workstation, the executable is named dassf-X86-LINUX. Now, we are almost set to run the model.

3. Other DML files

DaSSFNet contains a variety of network protocols, including TCP, UDP, HTTP, IP, etc. However, the current version does not contain routing protocols like OSPF and BGP. This will create a problem for running the baseline model. Fortunately, DaSSFNet is able to set up the host's routing table from DML scripts. The routing table is obtained from running this model in Java SSFNet. We managed to dump the routing tables for all hosts and routers during the simulation.

You need to have the dumped routing table baseline20x500-ftable.dml for DaSSFNet to run baseline models.

To run DaSSFNet on distributed machines, you also need to provide mappings of the timelines (i.e. campuses in the baseline model) to the distributed nodes. This is done by supplying another DML to the DaSSFNet executable. If you want to run DaSSFNet on multiple machines, you need the following files: mymap-2.dml, mymap-4.dml, and mymap-10.dml. They provide mappings of the 20 campuses to a cluster of 2, 4, 10 machines.

Running Simulation

Now, we are all set to run the baseline model. Assuming all required DML files are in the same directory as the DaSSFNet executable, and assuming we want to run this model on ten machines (2 campuses on each machine), here is what you may want to do:

       % mpirun -np 10 dassfnet-X86-LINUX 0 1000 -heap 200 \
             baseline20x500-tcpudp.dml network.dml params.dml \
             baseline20x500-ftable.dml mymap-10.dml
    

Here, we use mpirun to initiate the MPI program on ten machines. Of course, how the ten nodes are chosen from your cluster of machines depends on how you set up MPI. Different versions of MPI have different requirements. The file out.tcpudp.m10.n1 contains the result of a simulation run on our Linux cluster. You can use this as a reference to compare with yours.

If you're compiling DaSSF to run only on one machine (without --enable-mpi option), you can run the model as follows (assuming you want to use two processors):

       % ./dassfnet-X86-LINUX 0 1000 -n 2 -heap 800 baseline20x500-tcpudp.dml \
             network.dml params.dml baseline20x500-ftable.dml 
    

Enjoy!


This page is prepared by