Table Of Contents
Table Of Contents

Visualizing Transport Path Activity

Goals

INET offers a range of network traffic visualizers that operate at different levels of the network stack. In this showcase, we will focus on TransportRouteVisualizer that provides graphical representation of transport layer traffic between two endpoints by displaying polyline arrow along the path that fades as the traffic ceases.

This showcase contains two simulation models, each highlighting various aspects of the transport path activity visualizer, allowing for a comprehensive understanding of its features.

INET version: 4.0

About the Visualizer

In INET, transport path activity can be visualized by including a TransportRouteVisualizer module in the simulation. Adding an IntegratedVisualizer is also an option because it also contains a TransportRouteVisualizer. Transport path activity visualization is disabled by default; it can be enabled by setting the visualizer’s displayRoutes parameter to true.

TransportRouteVisualizer observes packets that pass through the transport layer, i.e. carry data from/to higher layers.

The activity between two nodes is represented visually by a polyline arrow which points from the source node to the destination node. TransportRouteVisualizer follows packets throughout their path so that the polyline goes through all nodes which are the part of the path of packets. The arrow appears after the first packet has been received, then gradually fades out unless it is reinforced by further packets. Color, fading time and other graphical properties can be changed with parameters of the visualizer.

By default, all packets and nodes are considered for the visualization. This selection can be narrowed with the visualizer’s packetFilter and nodeFilter parameters.

Enabling Visualization of Transport Path Activity

The following example shows how to enable transport path activity visualization with its default settings. In the first example, we configure a simulation for a wired network. This simulation can be run by choosing the EnablingPathVisualizationWired configuration from the ini file.

The wired network contains two connected StandardHost type nodes: source and destination.

../../../../../_images/TransportPathVisualizerSimpleWired_v0615.png

The source node will be continuously sending UDP packets to the destination node by using a UdpBasicApp application.

In this simulation, pathVisualizer's type is TransportRouteVisualizer. It is enabled by setting the displayRoutes parameter to true.

*.pathVisualizer.*.displayRoutes = true

The following video shows what happens when the simulation is run.

At the beginning of the video, a red strip appears and moves from source to destination. This strip is the standard OMNeT++ animation for packet transmissions and has nothing to do with TransportRouteVisualizer. When the packet is received in whole by destination (the red strip disappears), an arrow is added by TransportRouteVisualizer between the two hosts, indicating transport path activity. The packet’s name is also displayed above the arrow.

Note, however, that the ARP packets do not activate the visualization, because ARP packets do not pass through the transport layer. The transport path activity arrow fades out quickly because the fadeOutTime parameter of the visualizer is set to a small value.

Our next simulation model is the wireless variant of the above example. In this network, we use two AdhocHost’s. The traffic and the visualization settings are the same as the configuration of the wired example. The simulation can be run by choosing the EnablingPathVisualizationWireless configuration from the ini file.

Here is the network for the wireless configuration.

../../../../../_images/TransportPathVisualizerSimpleWireless_v0615.png

The following video shows what happens when the simulation is run.

This animation is similar to the video of the wired example (apart from an extra blue dotted line which is also part of the standard OMNeT++ packet animation). Note, however, that the ACK and ARP frames do not activate the visualization because these frames do not pass through the transport layer.

Filtering Transport Path Activity

In complex networks where many nodes and several protocols are used, it is often useful to be able to filter network traffic and visualize only the part of the network traffic we are interested in.

In this simulation, we show how to use packetFilter and nodeFilter. The simulation can be run by choosing the Filtering configuration from the ini file.

We set up a complex network with five routers (router0..router4), four etherSwitches (switch0..switch4) and eight endpoints. The source nodes (source1 and source2) are continuously generating traffic by a UdpBasicApp application, which is handled by a UdpSink application in the destination nodes (destination1 and destination2). VideoStreamServer streams video (sends VideoStrmPK-frag packets) to videoStreamClient. The remaining two endpoints (host1 and host2) are inactive in this simulation.

../../../../../_images/TransportPathVisualizerFiltering_v0615.png

In our first experiment, we want to observe the traffic generated by UdpBasicApp. For this reason, we configure the visualizer’s packetFilter parameter to display only the UDPBasicAppData packets. Video stream traffic will not be visualized by transport path activity visualizer. We adjust the visualizer’s fadeOutMode and the fadeOutTime parameters so that the transport path activity arrow does not fade out completely before the next UDPBasicAppData packet arrives.

*.visualizer.*.transportRouteVisualizer.displayRoutes = true
*.visualizer.*.transportRouteVisualizer.fadeOutMode = "simulationTime"
*.visualizer.*.transportRouteVisualizer.fadeOutTime = 1.2s
*.visualizer.*.transportRouteVisualizer.packetFilter = "*UdpBasicAppData*"

The following video has been captured from the simulation and shows what happens if packetFilter is set.

You can see that although there are both video stream and UDPBasicAppData traffic in the network, TransportRouteVisualizer displays only the latter, due to the presence of the packetFilter parameter.

In the first experiment, we filtered network traffic based on packets. In INET, it is also possible to filter traffic based on network nodes. In our second experiment, we want to display traffic only between source1 and destination1. For this reason, we set the visualizer’s nodeFilter parameter to display only the part of the traffic between source1 and destination1. PacketFilter is still enabled in this simulation so that the video stream will not be visualized.

We add the following line to the configuration:

*.visualizer.*.transportRouteVisualizer.nodeFilter = "source1 or switch* or router* or destination1"

The following video has been captured from the simulation and shows what happens if nodeFilter is set.

If you observe the default OMNeT++ packet transmission animation (red stripes), you can see that although there is UDP data traffic between both source-destination pairs, the traffic is visualized only between source1 and destination1 because of the nodeFilter parameter setting.

Sources: omnetpp.ini, TransportPathVisualizerShowcase.ned

More Information

This example only demonstrates the key features of transport path visualization. For more information, refer to the TransportRouteVisualizer NED documentation.

Try It Yourself

If you already have INET and OMNeT++ installed, start the IDE by typing omnetpp, import the INET project into the IDE, then navigate to the inet/showcases/visualizer/canvas/transportpathactivity folder in the Project Explorer. There, you can view and edit the showcase files, run simulations, and analyze results.

Otherwise, there is an easy way to install INET and OMNeT++ using opp_env, and run the simulation interactively. Ensure that opp_env is installed on your system, then execute:

$ opp_env run inet-4.0 --init -w inet-workspace --install --chdir \
   -c 'cd inet-4.0.*/showcases/visualizer/canvas/transportpathactivity && inet'

This command creates an inet-workspace directory, installs the appropriate versions of INET and OMNeT++ within it, and launches the inet command in the showcase directory for interactive simulation.

Alternatively, for a more hands-on experience, you can first set up the workspace and then open an interactive shell:

$ opp_env install --init -w inet-workspace inet-4.0
$ cd inet-workspace
$ opp_env shell

Inside the shell, start the IDE by typing omnetpp, import the INET project, then start exploring.

Discussion

Use this page in the GitHub issue tracker for commenting on this showcase.