An open API service indexing awesome lists of open source software.

https://github.com/rnuv/packet-flow

Custom Transport Protocol built on top of UDP that reliably transfers files through a simulated link.
https://github.com/rnuv/packet-flow

c networking tcp udp wireshark

Last synced: over 1 year ago
JSON representation

Custom Transport Protocol built on top of UDP that reliably transfers files through a simulated link.

Awesome Lists containing this project

README

          

# Packet Flow

## Description

A File transfer solution that implements a custom transport protocol in order to reliably send real time traffic through a simulated link. `Sender.c` and `Receiver` files are the application layer and calls the PacketFlow protocol implemented in `Relible.c` and `ReliableImpl.c` to transfer a file. The reliable transport protocol implements state transitions, connection setup and teardown. The protocol encapsulates a segment with a PacketFlow header and checksum, sends the data to the receiever and manages the ACK segments received. It uses sliding window in order to manage packet reordering and ensure the receiver has received all of the packets, regardless of packet loss within the link. The retransmission timer is set based on an RTO estimation. The connection is established through a three way handshake that generates an initial sequence number for the packet. The sequence numbers also wrap around the maximum limit. PacketFlow also implements congestion control through a TCP Reno like method that uses additive increase and exponential decrease when packet loss is detected through missing ACKs or retransmission timeout. This maximizes the bandwidth utilization. The congestion control is tested by measuring the fairness of mutiple connections through Jain's fairness index. The `grader.py` runs unit tests to test the PacketFlow implementation.

## Pictures





PacketFlow Tests for different links and configurations






Network Model

## Technologies
- ![C](https://img.shields.io/badge/c-%2300599C.svg?style=for-the-badge&logo=c&logoColor=white)
- ECE/CS 356 Duke University

---
*Made with <3 by Arnav, circa 2022*