Topology Generator

This page describes the topologyGenerator tool available in GIT repository: https://gitlab.cern.ch/tdaq-simulation/topologyGenerator

Motivation

  • The topology description might be available from many different sources: ONOS controler, Floodlight, Mininet, a real network, a script that creates the topology, etc, etc
  • The topology description might be necesary from many different tools, which use their own format: PowerDEVS, OMNET++, Mininet, .. even SDN controllers can receive the topology (ONOS, Floodlight)
  • PowerDEVS can simulate accurately data networks, but to describe the topology it is done by dragging and dropping atomic models. This error prone and impractical as it is time consuming.
In particular for the PhaseI the topology is not very well defined and it is desired to try different topologies and configurations. We need a tool that simplifies the creation of topologies.
In PowerDEVS the topology is given by the top coupled model.

Expectations (use cases?)

here

Architecture

Overview

online here: https://www.draw.io/#G0B0Spz4YE9z7_T2gtNEo5Uld5Mkk

  • Sources: TopologyGenerator can read/consume topology definitions from different heterogenous sources.
    Currently implemented:
    • ONOS, using the REST API.
    • Using a custom script add nodes, links and routers.
  • Ouputs:TopologyGenerator can generate topologies in different formats
    Currently implemented:
    • PowerDEVS using the .pdm format (coupled model structure). It also generates parameters (.scilab) and flow definitions (.cpp)

Full simulation environment

How does the topology generator fits into the current SDN and simulation workflow:

Architecture Implementation

To implement the architecture we use the Adapter or Provider pattern so simplify adding new sources or output formats

Features

  1. Templates: the pdmBuilder uses templates to generate the .pdm files. There are files /templates/<elemClassName>.pdm.template (ej: /template/host.pdm.template) which are used during the construction of the output
    These facilitates to change the generated model --> for example to change the implementation of the queues to use priority_queues. Or to groups model within coupled models easily
  2. Source specification: the source (and it parameters) is specified by command line arguments. This way the user can choose which source to use for the generation
    1. MOCK: uses the topology specified within the code
      createTopology.rb -n MOCK
    2. ONOS: uses the ONOS REST API to consult the current topology nodes
      createTopology.rb -n ONOS
  3. Unit tests: the tool has unit tests implemented to verify its behaviour
  4. (in development) Generation of simulation flow: the .pdm generator creates the defineFlows.cpp file which defines the flows which will be used in the simulations
    In the simulation a Flow is an object with the following properties: 1) a Path from the src to the dst with all the intermediate hops (routers/switches) 2) Period and Size generation distributions, 3) ToS field to assign priorities to the flow
    1. We decided:
      1. ONOS provide paths for each pair <src, dst>. We will generate a flow for every one of these paths. Thus, there will be n^2 total flows defined.
      2. The generation Period and Size distributions are read from the configuration parameters (scilab). We decided to generate a new set of parameters for each of the flows.
        The Period and Size will be generated to be 0. The user can edit manually the desired generation for each server (or change the template)
      3. Same for the type of service field.
        TODO: it is necesary to change the PowerDEVS simulation to implement reading this from a scilab parameter
      4. The priority queues will be generated with all weights set to 1 (normal queue). The user can edit manually the desired generation for each server (or change the template)
  5. (in development) Generation of simulation parameters: the
Decitions
  • The generated code will work with default values
  • The user will have to change the scilab parameters to accomodate for the desired simulation
    • Generatiosn period and size (default to 0)
    • Queue priorities (default to all weights=1)
    • etc

Generated Topology (discussion and options)

disscussion on which structure to generate here

Pending tasks

  1. Currently the topology is generated without a nice graphical view. Each element is possition within the .pdm one after the other.
    It would be good to implement an algorithm that sorts the boxes in a nice way
  2. Templates; adapt the templates in order to: 1) generate priority queues and its parameters 2) put link or ports within the routers and host to clean up the main view
  3. Simulation tool, no the generator:
    1. make the multiFlowGenerator atomic model and use it in the generation
    2. read the ToS from the scilab param
    3. implement the ToS ->Priority queue mapping --> then generate the parameters
-- MatiasAlejandroBonaventura - 2016-09-23
Edit | Attach | Watch | Print version | History: r4 < r3 < r2 < r1 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r4 - 2016-09-30 - MatiasAlejandroBonaventura
 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    Main All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback