r2 - 06 Jul 2008 - 19:19:32 - Main.acwarrieYou are here: TWiki >  Main Web > Projects > DiffQ > DiffQMOREScripts

DiffQ+MORE Scripts Documentation

This page provides documentation on various scripts needed to run MORE and DiffQ+MORE on WiSeNet.

MORE Setup

Introduction

MORE is a transport protocol which combines opportunistic routing and linear network coding. The original MORE code was obtained from the authors and modified to run on WiSeNet. In MORE, the source transmits encoded packets at full rate, intermediate nodes which happen to overhear packets will re-encode them and re-transmit them. The retransmission rate for each node is calculated based on the link loss rates across the testbed. The source node calcuates this retransmission rate as a "credit-factor" for each node which is a real number > 0. The credit-factor is the number of packets to be forwarded per packet overheard from the network.

Credit-factor Calculation

The script quickrun.py (from the original MORE codebase) /wisenet/devel/videos-scripts calculates the credit factors for all nodes on the testbed for a single flow:

quickrun.py [linksFile] [src-ip] [dst-ip] more

  • linksFile: linksFile as generated in "DiffQ Scripts". Assumes nodesFile is also present in the same directory.
  • src-ip, dst-ip: source and destination wireless IPs (10.0.XX.XX)
  • more: 4th parameter should be set to "more"

The script generates a file "more.feed" containing the credit-factor as well as the distance from the source in ETX metric for intermediate nodes:

10.0.XX.XX.ip m.set XXX etx

10.0.XX.XX.ip m.outflow XXX

10.0.XX.XX.ip m.inflow XXX

The credit-factor for node 10.0.XX.XX is m.outflow/m.inflow and the etx is the second parameter from m.set.

The script getMOREForwarders3.py in /wisenet/devel/videos-scripts repeatedly invokes quickrun.py to calculate the credit factors for a set of flows, and then optionally uploads them to each node:

getMOREForwarders3.py [flowFile] [numForwarders] [dryRun ? (0|1)]

  • flowFile: the beFileRunXX.txt files containing flow information (described in "DiffQ Scripts").
  • numForwarders: For the current version of DiffQ+MORE, this is no longer used, use a dummy number of 3 for this parameter.
  • dryRun: 1: do not upload credit-factor to nodes 0: upload credit factor to nodes

The dryRun feature allows the user to test/debug the output without actually uploading credit-factors to all nodes on the test-bed. If dryRun is disabled, getMOREForwarders3.py will invoke /mnt/devel/usr/src/diffq-clo-more/setCF to transfer the credit-factors to all nodes. This is done by setCF by message passing to the MORE source/forwarder. Hence the MORE source/forwarder should be running on all nodes before running getMOREForwarders.py.

The MORE source/forwarder is /mnt/devel/usr/src/more0/rctx2. Please see Details on DiffQ+MORE Code Base for more details on the code structure for MORE.

MORE Experiments

Running MORE Experiments

Running MORE experiments requires a series of steps:

  • create flow list using genBEFlows.py as described in "DiffQ Scripts".
  • get the link quality files: linksFile and nodesFile as described in "DiffQ Scripts".
  • run the MORE source/forwarder on all nodes. The output should be stored into log files to be parsed later for statistics.
  • run getMOREForwarders3.py with the linksFile and the flows file as parameters as desribed above, to generate and disseminate credit-factors to all nodes. This will also start the transmission by MORE sources.
  • after the experiment is over, kill all MORE sources/forwarders.
  • get statistics, as described below.

A sample script runAllMORE.py is present in /wisenet/devel/videos-scripts which performs the above steps. The function runMOREExp(...) runs a full experiment with multiple runs:

runMOREExp(label, moreAlgo, numRuns, runDir, expTime)

  • label: the output of rctx from each node is stored in /wisenet/devel/snXXXX/[label]_[run].log. The naming convention of label for MORE experiments is to have the last 5 letters to be either "more0" or "more1", e.g. "experiment1_more0". This is later used by getBEStats.py to generate statistics.
  • moreAlgo: 0: default MORE, 1: DiffQ+MORE.
  • numRuns: number of runs in experiment.
  • runDir: directory containing the flow files.
  • expTime: duration of experiment.

Running DiffQ+MORE Experiments

Running DiffQ+MORE is exactly same as above, except for few changes:

  • The DiffQ scheduling kernel module needs to be inserted:
algoCtl more1 start
  • the function runMOREExp() should be called with moreAlgo=1 as opposed to MORE which uses moreAlgo=0.
  • at the end of the experiment, the kernel module needs to removed:
algoCtl diffq stop
  • Note that we remove diffq, not more1, since the kernel module name is still diffq.ko

Getting MORE Statistics

The script getBEStats.py can generate statistics for MORE experiments, in a similar way as single-path experiments:

getBEStats.py [number of runs] [duration] [protocol]

The parameters are similar to single-path experiments as described in "DiffQ Scripts", except for the parameter protocol:

* protocol: the script looks at last 5 letters of protocol to decide the algorithm, by convention protocol should correspond to "label" while invoking runMOREExp() above, with the last 5 letters being "more0" for MORE or "more1" for DiffQ+MORE.

-- Main.acwarrie - 05 Jul 2008

Edit | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r2 < r1 | More topic actions
 
Powered by TWiki
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback