Implementation of linear network coding over a flexible emulator

This dissertation has the main objective of study and implement network coding (NC) techniques in a flexible emulator, programmed in a language that allows the coexistence of entities running parallel code, in order to emulate each node independently. The dissertation starts with the study of NC’s c...

ver descrição completa

Detalhes bibliográficos
Autor principal: Coelho, Nuno Bettencourt (author)
Formato: masterThesis
Idioma:eng
Publicado em: 2017
Assuntos:
Texto completo:http://hdl.handle.net/10071/13019
País:Portugal
Oai:oai:repositorio.iscte-iul.pt:10071/13019
Descrição
Resumo:This dissertation has the main objective of study and implement network coding (NC) techniques in a flexible emulator, programmed in a language that allows the coexistence of entities running parallel code, in order to emulate each node independently. The dissertation starts with the study of NC’s concept and with the characterization of the different type of coding methods, with a focus on linear network coding (LNC). . A flexible Java emulator (named Net Genius) was developed, which not only allows numerous topologies of networks, but also different types of coding. In addition, the emulator allows to emulate the networks in two different modes: with a distributed network or with a centralized network. In order to present the differences between the LNC approach and the traditional approach used in packet networks (based in routing tables), the emulator allows the user to choose between these two types of approach, assessing the impact of having network coding over user-defined networks. When implementing LNC, the concept of generations of packets was introduced in order to avoid combining packets from different sources. Leveraging on this, the transfer matrix at each node is calculated based on the coded packets and not based on the information stored in each node. In addition to this, a mechanism to code packets at the source was implemented, as well as a mechanism to introduce errors in the connection links. This allowed to emulate networks with different link error probabilities, in order to assess the resilience of the different approaches to the presence of failures.