Versatile Network Codes: Energy Consumption in Heterogeneous IoT Devices

In an Internet of Things (IoT), the number of interconnected devices is huge and has been increasing drastically. Their generated data requires powerful aggregated computing resources and consumes enormous energy for processing and transmission. Having said that, most IoT devices are very limited and heterogeneous in computing capabilities, causing a big challenge for designing a commonly used interconnect that is both reliable and energy-efficient. Random Linear Network Coding (RLNC) schemes have proven its capability both theoretically and in practical deployment not only to increase throughput and reliability but also to reduce latency and energy consumption. However, it is unclear how different variations of RLNC, in particular, Fulcrum codes aimed for heterogeneous devices perform in heterogeneous IoT settings. In this paper, we conduct a measurement campaign, allowing for a fair comparison among the state of the art RLNC families, with regard to energy consumption, decoding probability, and goodput. The study provides insights and guidelines for applying RLNC schemes to data transmission in heterogeneous IoT networks.


I. INTRODUCTION
With the fast-dissemination of wireless smart devices, the interconnection between a large number of devices becomes more important. Since these devices are getting smaller, cheaper, and diverse in purposes, we can expect an Internet of Things (IoT) environment built with a massive amount of heterogeneous devices. This allows communicating quickly and efficiently between interoperable IoT devices. Here, the interoperability refers to the basic ability of heterogeneous IoT devices to interconnect and interact with each other [1]. However, many of the IoT devices will be difficult to recharge or even change their batteries, especially those deployed in hard-to-access places such as forests, mountains, and underwater. Therefore, reducing The associate editor coordinating the review of this manuscript and approving it for publication was Irfan Ahmed . energy consumption is one of the hot research topics. Furthermore, since the wireless sensor network (WSN), as a subset of IoT, concentrates on computational resource-constrained IoT devices, it cannot achieve massive interoperability and interconnection with traditional communication strategies. Therefore, additional techniques are also required for such operations in WSNs, which can lead to increase cost and reduce functionality [2].
Many studies have attempted to solve the interconnection issues of WSN, and network coding (NC) has proven to have advantages enhancing the robustness and reducing delays of WSN communications [3]. Since then, NC has been in the spotlight and researched continuously in both wired and wireless communication networks. In conventional NC, a challenge is how to determine the local coding vector so that exists an invertible decoding matrix at each receiving node [4]. Ho et al. [5] proposed random linear network VOLUME 8, 2020 This work is licensed under a Creative Commons Attribution 4.0 License. For more information, see https://creativecommons.org/licenses/by/4.0/ coding (RLNC), which has been considered as the most practical NC scheme. RLNC enables all nodes to perform a random linear combination of input data to generate output data over a finite field, such as the Galois field (GF). Since this combination is independent at each node, the coding coefficients used to generate each coded packet that is transmitted along with the payloads. This allows the decoders to obtain the global coding vector and use it to recover the original data at the destination node (details are described in Section II). The success of RLNC has derived many variations of the coding strategies to optimize for such low latency, higher throughput, security, and computational complexity. These include sliding-window RLNC [6]- [8], sparse RLNC (S-RLNC) [9], [10], tunable sparse network coding (TSNC) [11]- [14], perpetual network coding [15], fulcrum network coding (FNC) [16], dynamic sparsity and expansion packets FNC (DSEP-FNC) [17], and so on. A drawback of network coding when compared to traditional end-to-end coding schemes is its complexity. In general, the larger the field sizes used, the better the performance of the code, but also the complexity involved. For that reason, FNC was specially designed for heterogeneous devices, in which receiving nodes can trade-off the number of received packets with decoding complexity. The decoders may choose the size of the GF to decode. Depending on the computing capabilities of the device, the decoder can decode with fewer packets and a larger GF, or listen for more packets and decode with a smaller GF, which is less complex. Previous studies [16], [18]- [20] have shown that FNC outperforms conventional RLNC in terms of not only a reduction in computational complexity but also an increase in decoding probability and throughput. Besides, in the case of DSEP-FNC [17], a variation of FNC, it significantly reduces the computational complexity while maintaining high decoding probability and throughput. However, all of the performance improvements of FNC and DSEP-FNC were verified by simulation only, not by practical implementations.
Therefore, this paper focuses on investigating whether those advantages of FNC and DSEP-FNC can actually be translated into reduced computational complexity and energy consumption in high-end, off-the-shelf IoT devices, namely Odroid-XU4 and Odroid-C2 [21]. Although some previous studies measured the consumed energy of RLNC and compared it with its variations such as S-RLNC and TSNC [22], [23], this paper is, to our knowledge, the first study to explore the energy consumption and performance aspects of the latest FNC and DSEP-FNC through IoT devices. We first choose four notable representatives of network codes that are energy-efficient. Then, we measure and compare the energy consumed for the encoding and decoding processes in the Odroid devices. In addition, we evaluate the decoding probability and goodput (i.e., processing speed) of the chosen NC schemes. In particular, since it is well-known there is a tradeoff between decoding probability and goodput, we focus on providing a perspective on which type of NC scheme can best compensate for this along with low energy consumption in the IoT devices.
The remainder of this paper is organized as follows: Section II provides fundamentals of RLNC, FNC, and their variations, S-RLNC and DSEP-FNC. Section III and IV describe the evaluation setup and metrics, and evaluate the performances, such as energy consumption, goodput, and decoding probability, in the two types of Odroid devices with different computing power, respectively. Finally, Section V provides its conclusion and new directions for future work.

II. BACKGROUND AND FUNDAMENTALS
It is well known that end-to-end erasure correcting codes, such as Raptor codes [24]- [26] and LT codes [27], reduce the computational complexity of the decoding process although it imposes non-negligible delay. These codes are even better than RLNC in terms of computational complexity, but they do not provide the advantages that can be gained from intermediate nodes such as recoding, unlike RLNC. Therefore, the sparsity property was applied to RLNC and led to such S-RLNC and TSNC, which was proven to be effective in the reduction of the computational complexity while maintaining the unique advantages of RLNC. In particular, [22] and [23] showed that S-RLNC consumes less energy than TSNC in IoT devices, while maintaining similar throughput performance. In other words, S-RLNC has been considered as one of the most energy-efficient network code. However, these RLNC-based network codes including S-RLNC are not actually suitable for heterogeneous IoT devices because of the adaptively unchangeable GF size in accordance with the network condition and the capability of IoT devices.
For that reason, FNC [16] and its adaptive decoders [20], [28] are proposed in which the GF size can be adaptively changed at receivers. That is, the receivers can choose GF size that they can afford. FNC has advantages in terms of resilience and heterogeneity but does not show much reduction of computational complexity compared to RLNC. In fact, reducing the computational complexity is very important to reduce the energy consumed in IoT devices. Therefore, DSEP-FNC [17] applied the dynamic sparsity property to FNC and showed outstanding performance in terms of the decoding probability and computational complexity. However, both FNC and DESP-FNC have never been practically evaluated in practical high-end IoT devices as well as never been measured the energy consumed in the devices to compare with other codes.
Therefore, this paper focuses on comparing the heterogeneity-proper FNC and DSEP-FNC with the energyefficient S-RLNC. Toward this end, this section first describes the fundamentals of four NC schemes: i) RLNC, ii) S-RLNC, iii) FNC, and iv) DSEP-FNC.

A. ORIGINAL RLNC
For encoding of RLNC (see 2 nd quadrant of Fig. 1), original input data is first divided into n packets P (or symbols), known as a generation. These packets are multiplied with a coding coefficient vectors randomly generated from a GF. Through this series of the linear combination, the size of coded packets K remains equal to that of original packets. In other words, the overall encoding process generating multiple coded packets can be considered as a system of linear equations with randomly generated coefficients over GF.
In order for successful decoding of the original packets, the coding vectors used for encoding must be transmitted to the receiver. In practice, they are appended as headers to the encoded packets and sent to the receiver. To recover the original packets P from the coded packets K , the receiver needs enough linearly independent coded packets to solve the linear system of equations. Gaussian elimination is commonly used to solve a linear system of equations AX = B, where A, X , and B correspond to , P, and K , respectively. This has an advantage over the conventional uncoded approach because the receiver no longer needs to collect each individual data packet. In theory, it is enough to receive coded packets equal to the number of original data packets. However, due to the randomness of the generation of coding coefficients, some packets might be linearly dependent. Therefore, the system might need some extra packets (overhead) to overcome these linear dependencies [29]. If the finite field used is large enough e.g. GF(2 8 ), this overhead can be made arbitrarily small. However, the increase of finite field causes the computational cost which is not suitable for heterogeneous IoT devices.

B. S-RLNC
This scheme was proposed to reduce the computational complexity for both encoding and decoding [9]. The idea is to utilize sparse coding coefficient rows, with only a relatively small prescribed number of non-zero coding coefficients w in the coding coefficient matrix . The studies [9], [11] have shown that S-RLNC is a good for computation-limited applications. However, since it increases the overhead due to redundant transmissions, the probability of receiving linearly dependent packets increases with the sparsity of the coefficients vectors. That is, for a fixed number of received packets the decoding probability of S-RLNC is much lower than that of original RLNC. Thus, the sparsity lever w needs to be dynamically adjusted to reduce the number of linear dependencies and to increase the decoding probability at a decoder.

C. ORIGINAL FNC
In RLNC and its variations including S-RLNC, only one GF size must be fixed for encoding, e.g. GF(2 8 ), and it VOLUME 8, 2020 cannot be changed in the middle of transmission even if the receiver has not enough capability to recover it. Solving this problem would be more critical to heterogeneous IoT devices having different capabilities. For that reason, FNC exploits a combination of two GF sizes, e.g. GF (2) and GF (2 8 ), for the encoding and decoding. As illustrated in 3 rd quadrant of Fig. 1, the original packets P are first multiplied with the outer coding coefficient vectors C that randomly selected by a higher-field size such as GF (2 8 ) to create r expansion packets o , which is as follows: These packets are concatenated into the original ones P to create outer-coded packets . This stage is also called pre-coding and generally performed by a systematic code. More specifically, the r expansion packets ensure a high probability of receiving linearly independent coded packets and increase the robustness against packet losses over error-prone networks. A small r is suitable when linearly dependent coded packets and packet losses are unlikely to occur. However, when there are frequent linearly dependent coded packets or packet losses, a larger r will substantially increase the probability of linearly independent coded packets and the resilience against packets losses. Subsequently, each outer-coded packet o j (j = 1, 2, . . . , n, n+1, n+2, . . . , n+r), is also multiplied with the inner coding coefficient vector λ ,j to generate inner-coded packets (I ) as where λ ,j are randomly selected by the encoder from a lowerfield size such as GF (2). The inner case is processed by either a systematic code or a non-systematic code. Similar to RLNC, FNC also needs to receive coded packets equal to the number of original data packets to recover the original data packets. For instance, if the number of original packets P is four and encoded like 3 rd quadrant of Fig. 1, the number of transmitted packets I are six. Although of course, this is higher than the number of original ones, the overhead is assumed to be negligible for larger generation sizes [8]. Assuming that the receiver with high capability only collects four among six packets due to packet erasures, it is possible to recover the original packets since the outer and combined decoders employed at the receiver. On the other hand, if the receiver has a low computational capability, it can wait to receive six linearly independent packets to decode the original information using the inner decoder. In essence, Fulcrum codes are the versatile network codes allowing to trade between the total number of packets needed to decode, and the computational complexity that the device must invest.

D. DSEP-FNC
DSEP-FNC [17], which inherits all the benefits of original FNC, is the combination of dynamic sparse coding and dynamic tuning the expansion packets in FNC. The main purpose is to reduce the computational complexity while maintaining a high decoding probability at both sending and receiving devices. This allows to deal with the challenges of static sparsity w in S-RLNC, static sparse FNC [18], and fixed expansion packets r by dynamically adapting these parameters in FNC encoding process.
For the dynamic sparse inner coding coefficients, we define w(j) [17,Eq. (13)] as the number of packets from the set O of outer-coded packets that are to be combined for forming the next inner-coded packet i j , which is given as where j = 0, 1, . . . , n + r − 1, δ is a nominal prescribed number of extra coded packets, and µ is the number of expansion packets that are considered for the inner encoding (0 ≤ µ ≤ r). The function automatically adjusts the sparsity level toward each new inner-coded packet i l generated by Eq. (2). These sparsity values are set to 1 and not exceed (n+r)/2. The low sparsity level of inner-coded packets transmitted benefits the computational complexity at the beginning of a generation, while the increase of the sparsity levels at the end of a generation helps to reduce the number of linearly dependent coded packets [11], [17]. This leads to an increase in the decoding probability compared to the S-RLNC and a reduction of the energy consumption compared to the original FNC.
In addition, the dynamic expansion packets r minimize the computational complexity toward the outer and combined decoders by adjusting the number of expansion packets µ from 0 to r within a given generation. First, the encoder generates the inner-coded packets without expansion packets at the beginning of a generation and then to increase the number of expansion packets included in the inner-coded packets towards the end of a generation. With the combination of variable µ, the inner-coded packets generated by Eq. (2) can be rewritten as where λ ,j are randomly generated depending on the sparsity level w(j) as defined in Eq. (3). When nearing the end of a generation, the decoder has collected a large number of linearly independent coded packets, which decreases the probability of newly received coded packets being linearly independent. With this adjustment, DSEP-FNC encoder can create the inner coded packets with strong robustness and a high probability of receiving linearly independent coded packets against packet losses over error-prone networks.

III. MEASUREMENT CAMPAIGN
The section describes the evaluation methodology of energy consumption and goodput, and furthermore, the evaluation setup and the parameters.

A. IOT DEVICES AND EVALUATION SETUP
To measure the energy consumption, we use a DC Power Analyzer Agilent N6705B from Keysight, which provides the accuracy of up to 0.025% for both the Voltmeter and Ammeter. Odroid-XU4 and Odroid-C2, representing highend IoT devices [21], are used for this measurement. Their powers are supplied by the power analyzer and connected with one another over an Ethernet to exchange the data, as shown in Fig. 2. Odroid-XU4 has heterogeneous cores with 32 bits processors providing high performance and energy saving, while Odroid-C2 has homogeneous cores only with 64 bits processors. More specifically, Odroid C2 and XU4 feature the Amlogic system on a chip (SoC) and Samsung Exynos SoC, respectively. Both include an ARM central processing unit (CPU) and an on-chip graphics processing unit (GPU) which are widely used in IoT nodes. The C2 model has an Amlogic S905 Cortex-A53 quad-core CPU clocked up to 1.5 GHz, whereas the XU4 one has a Samsung Exynos5422 Cortex-A15 and Cortex-A7 quad-core CPUs clocked up to 2.0 GHz. We implemented the four NC schemes on top of the Kodo library [30] to measure energy consumption and goodput. To automate the measurement process, i.e. the running of multiple tests with multiple parameters, the storing of log files with the measurement results and the synchronization between the measurements, and the loggings, we used the standard commands for programmable instruments (SCPI) which is a programming language for controlling tests and measurement instruments. This helped us to trigger the measurements and data logging of the energy device when the measured devices start carrying out the encoding or decoding process. These triggers allowed us to determine the starting and ending points of the coding process, and easily differentiate the idle state from the coding processing state (for both encoding and decoding) as shown in Fig. 3.

B. ENERGY CONSUMPTION AND GOODPUT METRICS
The energy consumption for each configuration parameter is calculated by multiplying the measured supply voltage by the measured current provided by the energy measurement device. We compute the encoding and decoding current by subtracting the average current while in the idle state as shown in Fig. 3. The energy per bit E is defined as the product of the average power P (Watt) by the coding processing time T (s) and divided by the total number of coded bits which is specifically presented in [23] and rewritten as follows.
where B is the data packet size (byte). Due to using r expansion packets, n is replaced with n + r in Eq. (5) for both FNC and DSEP-FNC schemes. The encoding goodput is defined as the amount of payload data in a generation, divided by the encoding processing time. The amount of data is determined by n × B for both RLNC and S-RLNC encoders, and (n + r) × B for both FNC and DSEP-FNC encoders including outer encoding o 1 , o 2 , . . . , o r and inner encoding i 1 , i 2 , . . . , i n+r . Similarly, the decoding goodput is also defined as the amount of payload data in a generation (n + r) × B for the FNC inner decoder and n × B for the FNC outer, FNC combined, and RLNC decoders, divided by the total decoding processing time for successfully recovering n original packets.

C. PARAMETER SETTINGS
The data packet size was fixed to 1500 bytes which mimic the maximum size of Ethernet packets. The Galois field GF(2 8 ) was used for FNC and FNC-DSEP outer coding, whereas the FNC and FNC-DSEP inner coding was carried out over the Galois field GF (2). The number of original packets in a generation was varied from n = 16 to 256. The number VOLUME 8, 2020 of expansion packets was varied from r = 2 to 6 and the density is fixed to d = 0.05 or d = 0.1. We conducted over ten thousand independent replications for each evaluation scenario resulting in 95% confidence intervals that are too tight to be visible in the plots.

IV. PERFORMANCE EVALUATION
This section examines the energy consumption, decoding probability, goodput for RLNC, S-RLNC, FNC, and DSEP-FNC with the evaluation methodology in Section III. Fig. 4 shows the energy consumed for the encoding, decoding, and total processes in the Odroid-XU4. We first observe that S-RLNC (dot line) and DSEP-FNC (dash line) consume less energy compared to the original RLNC and FNC in both encoding and decoding processes due to their sparsity characteristics. Since it is already well-known that the sparsity characteristics allow a reduction of computational complexity, this fact is predictable enough. However, as the generation sizes increase, S-RLNC with high GF size (dot line with square markers) consumes more energy and has a similar tendency to the original FNC. That is, all types of DSEP-FNC and S-RLNC with low GF size only show the improved performance compared to others in terms of energy consumption. Fig. 4(a) shows the consumed energy of encoding as an increase in the number of generation sizes. In particular, we observe that the encoder of DSEP-FNC consumes very small energy compared to FNC encoder and RLNC GF(2) encoder, and it consumes the lowest energy even for large generation sizes (n ≥ 64). This is mainly due to the particular adjustment of sparsity level (the number of non-zero coefficients in each coding vector is controlled by w(j) and changed from very low to high during the encoding process) and expansion packets (by adjusting the number of expansion packets µ from 0 to r within a given generation) in DSEP encoder. S-RLNC GF(2) encoder also takes advantage of low sparsity by fixing the static sparsity during the encoding process, but its energy consumption is higher than DSEP-FNC encoder in large generation sizes (n > 64). This is because the energy consumption of S-RLNC is the fixed level of sparsity, e.g. d = 0.05, that gives nearly constant the number of non-zero coefficients in each coding vector within a given generation size. Therefore, for n = 256, the number of nonzero coefficients in each coding vector is 12.8 on average, whereas, the sparsity level w(j) in DSEP-FNC is dynamically adjusted during the encoding process.

A. ENERGY CONSUMPTION
Similarly, the decoding process of S-RLNC and DSEP-FNC surpasses the counterpart schemes in terms of energy consumption, as shown in Fig. 4(b). This is because of low sparsity level in both S-RLNC and DSEP-FNC, and there is, thus, a significant reduction of the computational complexity of decoding process which mainly impacts on the decrease of energy consumption. Consequently, the total energy consumption of DSEP and S-RLNC is also small, as shown in Fig. 4(c). More specifically, we observe that DSEP-FNC inner reduces the total energy consumption by up to 73%, 25%, and 72% as compared with RLNC, S-RLNC, and FNC, respectively, for the low field using GF (2). DSEP-FNC outer and combined also reduce the total energy consumption by up to 90%, 75%, and 70%, respectively, for the high field using GF (2 8 ). This significant reduction is because of the sparse inner coding which is sped up the reduced number of non-zero coding coefficients in the DSEP-FNC approaches. This fact is clearer in the case of S-RLNC with GF (2), which saves the most consumed energy in the small generation sizes between n = 16 and 64, with only one and three non-zero coding coefficients in average. Fig. 5 shows the consumed energy in Odroid-C2 for both encoding and decoding processes. For simplicity, we only choose and present only S-RLNC and DSEP-FNC that are shown low energy consumption in Odroid-XU4 (see Fig. 4(c)). We observe that Odroid-C2 has similar tendency to Odroid-XU4 for both encoding and decoding. However, Odroid-C2 equipped with 64-bit quad-core single boards (cortex-A53 CPU) shows that it is low power hardware with high-performance [31], compared to Odroid-XU4 equipped with four 32-bit cores (cortex-A15 and cortex-A7 CPU). This leads to the energy consumption of both encoding and decoding for Odroid-C2 is lower than Odroid-XU4 as presented in Fig. 5.

B. DECODING PROBABILITY
From the results of energy consumption, we can observe that S-RLNC and DSEP-FNC consume similar energy in the IoT devices. Of course, S-RLNC consumes slightly lower energy for small generation sizes n. However, the fixed sparsity in S-RLNC significantly impacts on the decoding probability as we explained in Section II-B. Fig. 6 shows the decoding probability of S-RLNC and DSEP-FNC as a function of the number of the received extra packet. In the low field size, both S-RLNC GF(2) and DSEP-FNC inner have severe performance degradation. Even if S-RLNC GF(2) has better performance than DSEP-FNC inner, both have very poor performance, which may impose significant delay due to the retransmission. On the other hand, DSEP-FNC outer and combined outperform S-RLNC GF (2 8 ) in terms of decoding probability, even if S-RLNC GF(2 8 ) is slightly better when the number of extra packet is greater than or equal to 1. In addition, only DSEP-FNC outer and combined achieve almost 100% decoding probability when receiving more than two extra packets. This means that DSEP-FNC requires a shorter delay to complete the transmission of a given generation because DSEP-FNC is designed as a dynamic sparsity and expansion packets in the coding coefficients. It also allows either to substantially reduce the computational complexity at the beginning of generation, or to increase the decoding probability and robust packets against the loss of channels by adjusting high-density level at the end of generation. On the contrary, S-RLNC sets the static sparsity in the coding coefficients during the coding process. Therefore, although the energy consumption is low, the decoding probability is not as high as DSEP-FNC. In summary, only DSEP-FNC combined and outer achieve almost 100% decoding probability while maintaining low energy consumption.

C. GOODPUT
From the previous results, we confirm that only DSEP-FNC outer and combined not only significantly improve the decoding probability but also keep the low energy consumption in the IoT devices. In addition, they also show the improved performance in terms of goodput, especially for encoding, as shown in Fig. 7(a) and (c). More specifically, as compared to S-RLNC GF(2 8 ), the processing speed of DSEP-FNC encoding is three times faster despite saving energy up to 42% in the high generation size.
This trend is also maintained in the decoding process. We observe that DSEP-FNC combined decoder saves about 32% of the consumed energy in the decoding process, and furthermore, its processing speed is up to four times faster, as compared with S-RLNC GF(2 8 ) (see Fig. 7(b) and (d)). Of course, S-RLNC GF(2) shows less energy consumption and faster processing than DSEP-FNC combined, but these performances become similar to DSEP-FNC combined when the generation size is high. In particular, since S-RLNC GF(2) aggravates the decoding probability, it would impose significant delay rather than DSEP-FNC combined.
And one more interesting thing is that Odroid-XU4 consumes more energy than Odroid-C2 but it shows a faster processing, as illustrated in Fig. 7. This is because Odroid-XU4 is equipped with multiple cores, while Odroid-C2 is equipped with a single core. Therefore, Odroid-XU4 can achieve a fast encoding or decoding process.

D. EVALUATION SUMMARY
Our evaluations can be summarized in following points: 1) Because of the sparsity characteristics, S-RLNC and DSEP-FNC consume significantly less energy in the two types of Odroid devices than their original versions, RLNC and FNC, respectively. 2) For encoding, DSEP-FNC overall consumes less energy than S-RLNC regardless of GF sizes, but more energy than S-RLNC GF(2) in small generation sizes. 3) For decoding using low field size, i.e. S-RLNC GF (2) and DSEP-FNC inner, they consume similar energy on average in the IoT devices. However, they aggravate the decoding probability because of the bad influence of the fixed sparsity and would impose significant delay due to additional transmissions. 4) For decoding using higher field size, DSEP-FNC outer and combined outperform S-RLNC GF(2 8 ) in terms of energy consumption, except for the small generation sizes. 5) All, S-RLNC GF(2 8 ), and DSEP-FNC outer and combined, have outstanding performance in terms of decoding probability. However, DSEP-FNC combined shows faster processing time and is up to four times faster than S-RLNC GF(2 8 ). 6) Consequently, in terms of versatility including energy efficiency, decoding probability, and goodput in IoT devices, using DSEP-FNC combined is more proper than using other network codes.

V. CONCLUSION
It is well known among the network coding community that S-RLNC is more energy-efficient than the original RLNC at the trade-off of a reduced decoding probability. Furthermore, recently proposed codes in the literature, such as Fulcrum Network Codes (FNC) also demonstrate advanced characteristics. To find out how different variations RLNC codes perform, in terms of reliable and energy-efficient in the IoT domain, we conduct a measurement campaign. Particularly, we measure energy consumption, decoding probability, and goodput of four representatives, RLNC, S-RLNC, FNC, and DSEP-FNC. We observe that DSEP-FNC outperforms S-RLNC and achieves both high energy efficiency and high decoding probability. Specifically, DSEP-FNC encoder reduces energy consumption by about 42% in most of the cases without compromising the decoding probability, as compared to S-RLNC encoder. Additionally, the combined decoder of DSEP-FNC increases the goodput by up to four times while reducing energy consumption by at least 30%. Demonstrating an outstanding performance across a wide range of parameters, such as generation size and the number of extra packets, DESP-FNC and its combined decoder can be an appropriate candidate for interconnecting heterogeneous IoT devices. Possible directions for future work include analyzing the impact of using these versatile network codes in practical MAC protocols such as ZigBee. This direction is important because ZigBee-based WSN may consist of thousands of nodes that perform the processing and communicate with each other. In particular, NC recoding mechanism should be investigated more in this MAC protocol. It would improve the performances of intermediate IoT devices that do not support for higher layers.