# ncmanet Network Coding in various wireless multi hop network types. ## Overview ncmanet is a tool that implements various techniques to improve some performance characteristics of wireless multi hop networks. Specifically, it may be used to enlarge or enhance throughput, robustness or energy efficiency or to efficiently solve the broadcast storm problem in WMHNs. More detailled infos on how a methodology of optimising for one or multiple of those things in a given topology might look like can be found further below. The current implementation is based on the pcapplusplus library and configured to run on Linux mesh type 802.11s drivers. ## Repository structure |-archive: contains old and partly irrelevant stuff \ |-config: contains configuration yaml files \ |-Makefile: makefile to build program from source \ |-pcaps: directory to store pcaps in that may be used for in- and output \ |-README.md: this file \ |-src: contains source code \ |-thn: program executable for exchanging first hop neighbourhood info and thus gathering two hop neighbourhood info \ |-utils: scripts that may be used to (partly) automate various tasks ## Installation ### Required Hardware Any devices supporting 802.11 mesh networks may work. \ I am using ASUS USB N14 devices connected to x86 based Linux machines and run by the rt2800usb driver provided by Linux. ### Configuration For hardware configuration, take a look at and/or use the 'utils/enable_mesh.bash' script. ### Installation Tested on Fedora 30. Should run on most Linux platforms. \ Install [yaml-cpp 0.6.3](https://github.com/jbeder/yaml-cpp) and [pcapplusplus v21.05](https://pcapplusplus.github.io/docs/install). \ Make sure the header files get installed into /usr/local/include (should be the default) or change the stegorator Makefile later accordingly. \ Download this repository, go into this folder and run `make`. ## Usage ### Program configuration Before executing the command, you must first create a configuration file. Please take a look at the example configuration files in the config folder to get a thorough understanding of their structure. A complete list of configuration options and their description will be added in the future. To get started easily, simply modify the ip and mac address values according to your settings. ### Program execution Program execution looks like this: `./thn `. \ Example: `./thn ./config/wlp0s20u1.yaml`