1 Implementation of Random Linear Network Coding on OpenGL-enabled Graphics Cards Péter Vingelmann * , Péter Zanaty * , Frank H. P. Fitzek and Hassan Charaf * * Budapest University of Technology and Economics Aalborg University, Department of Electronic Systems Abstract— This paper describes the implementation of network coding on OpenGL-enabled graphics cards. Network coding is an interesting approach to increase the capacity and robustness in multi-hop networks. The current problem is to implement random linear network coding on mobile devices which are limited in computational power, energy, and memory. Some mobile devices are equipped with a 3D graphics accelerator, which could be used to do most of the RLNC related calculations. Such a cross-over have already been used in computationally demanding research tasks as in physics or medicine. As a first step the paper focuses on the implementation of RLNC using the OpenGL library and NVidia’s Cg toolkit on desktop PCs and laptops. Several measurement results show that the implementation on the graphics accelerator is outperforming the CPU by a significant margin. The OpenGL implementation performs relatively better with larger generation sizes due to the parallel nature of GPUs. Therefore the paper shows an appealing solution for the future to perform network coding on mobile devices. I. I NTRODUCTION AND MOTIVATION Network coding is getting more and more attention lately. After the introduction of the concept by Ahlswede in 2002 [1], a large number of research works has been carried out looking into the different aspects of network coding. [2] The majority of research papers in the field deals with the construction of network codes [13], [9] and the application of network coding to different communication scenarios [7], [11], namely fixed networks, meshed wireless network, underwater communica- tion, and many more. The idea behind network coding is to take several original packets and combine them into one coded packet, which has the length of one of the original packets. If a sender is combining N packets, the receiver needs to receive at least N coded packets successfully to decode the original packets. Each coded packet is holding the so-called encoding vector to give the receiver the knowledge which packets have been combined. Thus, as any other coding scheme, network coding can be used to deal with erasures. In addition to that, network coding offers the possibility to recode packets inside the network. In contrast to other coding schemes that only work end to end, each node has the possibility to recombine coded packets into a new coded packet. This feature is of great help whenever packet flows are intersecting as in fixed or meshed wireless networks. In order to understand this feature we give the following example. Consider the communication topology of a wireless meshed network with five nodes given in Figure 1(a): MD1 is sending packets to MD2 using MD R as a relay due to the fact that a direct communication between MD1 and MD2 is not possible. The communication of MD1 and MD2 is part of an ongoing stream A, whereas the sender and source are not depicted here. The same holds for MD3 and MD4 working on stream B. Without network coding the relay would easily become the bottleneck forwarding packets of stream A and B. In case both streams are working at the capacity limit, the data rate after the relay would be half of the original one. Using network coding, we would apply some sort of inter flow coding for each stream. That means packets of stream A are coded mostly probably already at the sender and decoded at the receiver. The same applies for stream B. The interflow coding assures the robustness for the given stream. On top of the inter flow coding, we will apply an intra flow coding. Due to the given scenario, MD2 can overhear packets of MD3 and MD4 is doing the same with MD1. Whenever MD1 and MD3 are transmitting packets of their given stream A and B, the relay MD R will probably receive both packets. Also MD 2 and MD 3 will receive packets even though those packets do not belong to their stream (see Figure 1(b)). The relay MD R will take both packets and code these together into a new coded packet referred to as packet C. The coding could be a simple XOR of both packets (see Figure 1(c)). Packet C will be broadcast to MD2 and MD4. At each receiver the packet C will be XORed again with the packet A or B. E.g. MD4 has packet A before (which did not belong to stream B), which will become packet B after the XORing with packet C (see Figure 1(d)). At MD2 the coded packet allows to retrieve packet A. Thus, with one packet transmission, the relay satisfied two nodes at the same time. As these first examples are only addressing the advantages of network coding in a nutshell, the interested readers are referred to [3], [5]. As stated beforehand the basic concepts of network coding has been shown in many research works. But only a small number of research works has been carried out in the actual implementation of network coding considering the complexity and resource constraints. The implication of network coding on the computational power, the memory and energy consumption is of special interests if network coding is performed on mobile devices, such as commercial mobile phones [12] or small wireless sensors [6]. The energy consumption is of special interest on battery driven devices to optimize their operational time. The energy consumption related to network coding can be divided into two different fields. European Wireless 2009 118