Network Coding 6th Sem - Performance Evaluation and Implementation of Network Coding on Mobile Devices using IEEE802.11 Technology
Jakob Sloth Nielsen
Karsten Fyhn Nielsen
In todays world of cell phones, laptops and internet tablets, an increasing number of devices are using wireless communication to obtain and share data in networks.
However this increase in the density of nodes in wireless networks also increases the risk of congestion, delay, transmission errors and collisions.
The end result of this is a decrease in throughput, i.e. the amount of data sent from one node to another.
If, in a network, several nodes are interested in the same set of data and this data has to be distributed between them,
this may be done efficiently with broadcast if ideal communication is assumed, i.e. no transmission errors.
However, as mentioned above, wireless networks often experiences many kinds of problems,
which requires retransmissions to reliably distribute the data.
These retransmissions requires bandwidth, and the more transmission errors, the more bandwidth is needed for overhead. Also transmissions cost a lot of energy, which makes it a limited ressource.
This project has attempted to solve this problem using network coding. When using traditional routing techniques, intermediate nodes between the source and the destination are relaying and replicating data messages. With network coding, intermediate nodes code incoming messages, e.g. by using exclusive-ORs for packet combinations. The packets for coding are chosen in the way such that the destination node is capable of decoding information. The more coding opportunities an intermediate node can find, the greater is the amount of information combined in one coded packet and the less overall number of transmissions is required. This should increase the throughput and decrease energy consumption, which is very important for mobile devices.
An implementation for the Nokia N810 platform has been made and tests have been carried out. The developed implementation consists of of the following four levels:
Test Application: At this level, a GUI has been implemented to show the distribution of packets. This level also manages a logging facility.
Framework: This level is responsible for placing the implementation of network coding as an extra protocol between the IP and MAC layers. This has one very important advantage. It relies only on the information in the IP-header, which may be retrieved using raw sockets directly after the MAC layer. By also placing the implementation beneath the normal IP layer, it becomes possible to use a virtual network interface, as the interface between the first and the second level. Thereby communication between the two levels can happen solely through standard Berkely socket calls. The framework also provides functions for sending packets through the socket, and for sending special packets, that start and stop the lower levels. With very few changes this level could be run as a daemon on the OS instead, making it a completely separate entity from the application or applications using it.
Logistics Platform: It contains all the data structures and functions for the logistics of network coding. In the implementation of network coding for distributed wireless grids, this especially is the knowledge of which packets the local node has, and the knowledge of which packets all remote nodes have.
Schemes: This level is the algorithms for encoding and decoding. These may be different as well, even while using the same logistics. For this implementation two schemes have been implemented. One scheme for reliable broadcast, and one for network coding.
The results show that network coding performs better in the chosen scenarios.
Pictures of the implementation and testbed may be seen in the pictures below.