Skip to main content

Discover Plotting Utility Within Ns2web

In my previous articles, I have discussed about the Virtual Labs and IEEE WCM Feature Article on ns2web. Today, I would briefly discuss about ns2web with specific focus on one of its more general features -- data plotting utility.

Ns2web is the core component of the Advanced Network Technology Virtual Labs. At a high level it has two basic jobs to perform:
  1. Execute the NS-2 simulations in a remote server based on the user input code.
  2. Help users perform different types of post-simulation analysis using the trace file generated.
As such, ns2web itself becomes a sort of mini-project :) Currently, ns2web and the version of it used with the ANT VLab differ on a few minor aspects. The former offers a ``guided scenario generator'' to the users, and an option to export the graphs as external images.

However, ns2web is not only for performing network simulations! The software provides a useful feature that might interest you if you want to quickly plot some nice line plots.

As shown in Figure 1,  just type in (or copy-paste) a sequence of (x, y) values, (optionally) specify the plot title and axes labels, and click on the ``Plot Data'' button. That's it! Your plot is ready.

Generate a line plot based on any data
Figure 1: Generate a line plot based on any data.

Figure 2 plots the squares of the first few positive integers using the above method.

Plot of squares of integers
Figure 2: Plot of squares of integers.

But wait, there's more! You can actually export the plot so generated into an EPS, PDF or a PNG file as well, as shown in Figure 3. The file in the EPS format is useful if you are authoring a research article.

Export the plot as an EPS/PDF/PNG file
Figure 3: Export the plot as an EPS/PDF/PNG file.
 As you might have noticed, the exported plots look a bit different from the one displayed in the website itself. Indeed, it is so. The matplotlib library of Python is used to generate the plots at the back-end.

Finally, as shown in Figure 4, you can plot multiple line plots together. And yes, you can export such multiple line plots into a single external file.

Plot multiple functions together
Figure 4: Plot multiple functions together.
So, happy (and easy) plotting!


Popular posts from this blog

Specifying Source and Destination of Messages

One of the frequently asked questions in the community is how to specify which particular nodes would act as source(s) and destination(s) of the messages created in the ONE simulator. The simulator, in fact, provides a pair of settings (shown below in bold face) aimed for this particular purpose.

Let us consider that there are $n + 1$ nodes in an OMN.  Further, let the nodes with addresses from $x$ to $y$, both inclusive, would create messages. The nodes in the range $w$ to $z$, both inclusive, would be the destinations of those messages, where $0 \le x \le y \le n$, and $0 \le w \le z \le n$. Then, the corresponding simulation scenario can be configured as follows.

## Message creation parameters # How many event generators Events.nrof = 1 # Class of the first event generator Events1.class = MessageEventGenerator # (Following settings are specific for the MessageEventGenerator class) # Creation interval in seconds (one new message every 25 to 35 seconds) Events1.interval = 25,35 # Me…

Effects of Buffer Size on Delay Tolerant Routing

In this post, we look at how buffer size affects, if at all, the performance of the routing protocols in DTNs. For this purpose, we will consider the following five routing protocols:
EpidemicPROPHETSpray-and-Wait (SnW) First Contact (FC) Direct Delivery (DD)  Detailed discussion of these protocols is scoped out here. We just note that in case of Epidemic, there is unlimited replication of the messages. In PROPHET, however, the replication is usually less than that of Epidemic. On the other hand, SnW has a fixed limit (L) on possible number of replications of a message. Finally, FC and DD involve message forwarding -- not replication. So, in the latter cases, there is always a single copy of any message in the DTN.

We will consider the buffer sizes from 20 MB to 180 MB, both inclusive, in steps of 20 MB so that we have total 9 different buffer sizes. We will use the real-life connection traces from Infocom'06. Therefore, we will need to simulate 5 * 9 = 45 scenarios to get the rel…

Controlling Transmission Range from within the Simulation

While simulating scenarios with the ONE simulator, one typically defines one or more network interfaces, and add them to the nodes as required. This use case prevails in most of the scenarios. However, a drawback here is that different network interfaces are mutually incompatible — an interface of type 1 can't communicate with any interface not of type 1.

Under certain circumstances, it might be required to control the transmission range of one or more network interfaces dynamically from within the simulation. For example, in one of my works, "On emotional aspects in Mission-Oriented Opportunistic Networks", I have considered the case where users occasionally turn off their device radios based on their contemporary emotions. In particular, the following shows how to set the radio range to 0: ModuleCommunicationBus comBus = host.getComBus(); // Store the original radio range the first time it is reset if (this.originalRadioRange == -1) { this.originalRadioRange = Double…