Implementation of Reliable Transport layer protocol and network protocol
In continuation of my previous blog, I share implementation of a simple reliable transport layer protocol along with network layer protocol for file transfer over an overlay network. The project uses routing information protocol1 as a routing protocol for transmitting file across an overlay network.We use a garbler logic to introduce errors in data packets to be transmitted so that the reliability of the protocol is tested. UDP is used as an underlying transport protocol. UDP is connection-less and not reliable unlike TCP as it doesn’t resend data packet if it doesn’t reach the destination. To make UDP reliable, a transport protocol is developed on top of it which takes care of segmentation, reassembly of data packets as well as re-transmission if it doesn’t reach the destination. TLP (our transport layer protocol uses NLP i.e network layer protocol to send data to the destination using what we have used as a routing protocol (RIP) over a UDP socket.Network topology is fed to the system using config files which will be of the following format. <Node ID of the current node> <No of links to that node> <Node ID of neighbour1> <IP addr of neighbour1> <Data port used to communicate with neighbour1> <Control port used to communicate with neighbour1> . . . . . <Node ID of neighbour n> <IP addr of neighbour n> <Data port used to communicate with neighbour n> <Control port used to communicate with neighbour n>RIP works by learning about the network topology from it’s adjacent neighbors which follow a recursive approach and the entire network info is learnt by all the nodes in overlay network over a period of time in this way. This is accomplished by every node (computer) transmitting a data packet to it’s neighbor every ‘T’ seconds. If a particular node doesn’t transmit info to it’s adjacent neighbors till the timeout ‘t’ secs, it’s presumed dead and an alternate path is built up which is used to send file/data to the destination.More details present in the readme.txt file above which is uploaded along with the entire source code. Stay tuned for more interesting stuff. [eeSFL]
Saurabh An avid reader, responsible for generating creative content ideas for golibrary.co. His interests include algorithms and programming languages. Blogging is a hobby and passion.