Channel Allocation in Substitution Networks


The code here corresponds to the following paper:

Anthony Busson, Isabelle Guérin-Lassous, Ha Pham The Anh. Channel Assignment in IEEE 802.11-based Substitution Networks. BalkanCom 2018. Podgorica. Montenegro. June 2018. [pdf]


The code gives the channel allocation according to different algorithms:

  • allocation with only one frequency (algo=0)
  • allocation that minimizes the conflict graph (algo=1) - the optimal is gien through an exhaustive search (can be long)
  • allocation that maximizes the end-to-end throughput and given by the heuristic described in the paper (algo=2)
  • allocation that maximizes the end-to-end throughput - the optimal is gien through an exhaustive search (can be very long) (algo=3)

The output consists in two files:

  • a text file in the folder dataTheo with the theoretical throughput for each path (1, 2 or 3 paths). A path may be couter-productive (decreases the overall throughput), in this case this path is neglected. The throughput on each path gives also the optimal load sharing that must be applied at the source.
  • a ns-3 simulation file that allows to estimate the maximal throughput through simulations. It has been tested for ns-3 version until ns3.26 (there are some warning for this version). This file must be copied in the scratch folder of ns-3 and execute. To obtain the throughput you must parse the error output and count the number of RX entries. The parser is not provided here. The parameter "nbOfSamples" indicates the number of ns-3 files that must be generated.

The topology consists in a source and a destination connected through a mesh wireless networks composed of 1, 2, or 3 paths. The routers location can be completely static (topology 0) or lightly random. For the later, we move routers a little bit around their original location to have different transmission rates on the links but the path is the same as the other topology. 

It has been coded for Linux but may work on other OS.

Compile and test:


To obtain the usage just type:


Usage: ./simulator topology nbOfNodes nbOfRadios maxFreq nbOfSamples nbOfRoutes algorithm
-- topology: 0-> pathTopology 1-> pathTopologyRandom
-- nbOfNodes: number of nodes
-- nbOfRadios: number of radios
-- maxFreq: number of available frequencies
-- nbOfSamples: number of NS3 file to simulate the capacity
-- nbOfRoutes: number of routes between the source and the destination
-- algorithm: One frequency=0 Minimize the conflict graph (optimal)=1  Throughput_Heuristic=2 Throughput_Optimal=3

For example, the command for a channel assignment given by our heuristic with 2 routes, 8 nodes, 2 radios per router, 8 available channels and random routers location, is:

             ./simulator 1 8 2 3 1 2 2

A script is given in the archive that allows you to test the execution time of the heuristic with 1, 2 and 3 paths ( It generates three files (1path.out, 2path.out and 3path.out) that contains the execution time for 100 tests. To test it: