Assessing the Internet Topology Zoo in a Software-Defined Network Emulator


The Topology Generator

The topology generator uses graphical desciptions of the Internet Topology Zoo (ITZ) [2], which is a store for data of network topologies. Operators publish information about their networks, such that the ITZ database contains topologies from AboveNet to Zamren. In our examples we use the German research network (DFN) topology. All topologies are in a graphical format, that uses the extensible markup language (XML) as description basis. The graphical format provides enough information to build up testbed networks with respect to real world topologies. Listing 1 depicts the important elements to structure the network. To identify, which purpose the key elements are used for, the field contains the relevant information. Here, especially the label for a node and its longitude and latitude positions are needed to rebuild the network in Mininet [1]. Moreover, the edge element specifies the connections between the nodes and is needed to link the switches in Mininet.


<?xml version="1.0" encoding="utf-8"?>
<graphml ...>
  <key"key" attr.type="int" for="edge" id="d36" />
  <graph edgedefault="undirected">
    <data key="d0">2/01/11</data>
    <data key="d1">Germany</data>
    <data key="d2">Country</data>
    <data key="d3">DFN</data>
    <data key="d28">1</data>
    <node id="0">
      <data key="d29">1</data>
      <data key="d30">50.83333</data>
      <data key="d31">Germany</data>
      <data key="d32">0</data>
      <data key="d33">12.91667</data>
      <data key="d34">CHE</data>
    <edge source="0" target="1">
      <data key="d35">e52</data>
      <data key="d36">0</data>

from mininet.topo import Topo ...

class GeneratedTopo( Topo ): def __init__( self, **opts ): # Initialize Topology Topo.__init__( self, **opts ) # switches first CHE = self.addSwitch( 's0' ) ... # and now hosts CHE_host = self.addHost( 'h0' ) ... # add edges between switch and corresponding host self.addLink( CHE , CHE_host ) ... # add edges between switches self.addLink( CHE , LEI, bw=10, delay='0.348009502ms') ...
topos = { 'generated': ( lambda: GeneratedTopo() ) } ...

if __name__ == '__main__': sshd( setupNetwork() )
Listing 1. Selection of important values of the graphml format for the DFN topology Listing 2. The transformation of Listing 1 to Python for establishing the topology in Mininet

Topologies to be used in Mininet are executable/loadable Python classes interfacing with the Mininet API. So each usable Mininet topology is similar , having the same content in the head and the tail of a file. The parts, where the files for Mininet and the ITZ basically differ is the definition of

  • host entries,
  • switch entries and
  • links between switches and hosts.

There are several commandline arguments available when using the ITZ Topology Parser:

  • -f [filename of GraphML input file]
  • –file [filename of GraphML input file]
  • -o [filename of GraphML output file]
  • –output [filename of GraphML output file]
  • -b [number as integer for bandwidth in Mbit]
  • –bw [number as integer for bandwidth in Mbit]
  • –bandwidth [number as integer for bandwidth in Mbit]
  • -c [controller ip as string]
  • –controller [controller IP as string]

Some other notes on the parser usage:

  • Files have to be in the same directory.
  • Without any input, program will terminate.
  • Without specified output, outputfile will have the same name as the input file, means the argument for the outputfile can be omitted.
  • If omitted, bandwidth is initialized with "10". (Mbit)
  • If omitted, the remote controller IP is initialized with "", the standard IP for the host OS when using Oracle Virtualbox for virtualization.


Evaluation Suite for Mininet

To evaluate the performance of Mininet the distributed Internet traffic generator (D-ITG) [3] was used. It offers a rich variety of probability distributions for the traffic generation and uses some models proposed to emulate sources of various protocols. With it, it is possible to generate various packet streams and collect statistics with a logging server.


Measurement Trials

Measurement trials architectureFigure 1: The topology for the measurement trials


Figure 1 depicts the topology of a few measurement trials. S1 to S6 are the switches in the topology, while Sender/Receiver denote the hosts that are handling generated traffic. To sum up, in total we performed four trials, each for TCP and UDP with a duration of five minutes for each trial in the following setups:

  1. Only Sender 1 and Receiver 1 are responsible for the traffic on the topology without switch S4.
  2. Sender 1 and Receiver 1 are handling the traffic on the full topology.
  3. Both sender/receiver pairs are responsible for the traffic without switch .
  4. Both sender/receiver pairs are handling the traffic on the full topology.

Sources and Data Sets

  • The source code is made available on GitHub or you can download a compressed archive here.
  • The data set of the first measurement trial is also available at GitHub and as compressed archive here.



  1. Mininet
  2. Internet Topology Zoo (ITZ)
  3. Distributed Internet Traffic Generator (D-ITG)