# Survey of Network Coding Based P2P File Sharing in Large Scale Networks
## 5 Discussion  
In this section, we discuss the approaches that are surveyed in the previous section. Avalanche is the first network coding based P2P file sharing system that improves in terms of communication but adds huge overhead in terms of computation. All subsequent studies attempt to decrease the computation overhead. In a sparse network coding scheme, the studies suggest that the network coding may be applied into some pieces rather than be applied on all the file pieces. However, whether these pieces should be selected randomly or deterministically is not clear. Furthermore, whether two original pieces or more are sufficient for encoding is not verified.  
\begin{table}
\begin{tabular}{p{56.9 pt} p{113.8 pt} p{113.8 pt} p{113.8 pt} p{113.8 pt} p{113.8 pt}} \hline \hline
**Reference** & **Approach** & **Main Findings** & **Verification Method** & **Network Topology** & **Performance Metrics** \\ \hline [PERSON] et al. [91] & Proposing first P2P overlapping coding scheme by introducing grid and diagonal structures. & - The proposed scheme can mainly reduce network overhead by up to 70\%. & Simulation & Mesh & - Decoding complexity overhead trade-off. \\ \hline [PERSON] et al. [96] & Proposing head-toe overlapping scheme over network topology & - Overlapping can reduce network for line networks. & - Overlapping is appropriate for minimal streams. &  
In generation based scheme, the studies agree that the network coding should be applied per generation rather than on all file data. However, the optimal size of a generation and subsequently to how many generations the file should be partitioned is not agreed upon. The arguments that generation coding outperforms sparse coding [62; 67] are not supported. Moreover, there is a conflict about the scheduling policy among generations: random, sequential, round-robin, or rarest-first. In terms of network overhead, disjointed generation coding incurs additional overhead that is each encoded piece is sent with the generation sequence it belongs to. On the other hand, overlapping generations coding adds even more additional overhead, which is the sequences of the overlapping generations.  
Alternatively, the combined network coding scheme attempts to mix the features of generation coding and sparse coding and get rid of their limitations. The studies for this scheme are limited and do not agree upon the optimal generation size and encoding size.  
Based on the extensive survey, the discussion, and our partial simulation, Table 7 compares the coding approaches in terms of robustness to churn, decoding speed, and network overhead. More stars \"\(\star\)\" means greater robustness to churn, whereas the more arrows \(\uparrow\) means greater network overhead. The comparison is approximated, and we believe that, for more precise comparison, specific variations of each schemes should be simulated.  
After this discussion, it can be stated that using network coding in P2P file sharing networks is a trade-off process, a trade-off between communication and computation, a trade-off between computation and content availability, and a trade-off between the size of the finite field and the linear dependency of the encoded packets. The studies agree in certain aspects. For example, the studies suggest the use of generation coding or sparse coding algorithms and their variations rather than the use of full coding. However, they conflict in other aspects such as determining the optimal generation size or determining the encoding size in the case of sparse coding. Furthermore, the studies show a solution for special topologies with special characteristics, while they do not propose a general framework.