UDP Sender
Computer Networking ● Software Development ● Python ● Docker ● Congestion Control
Role
Student Programmer
Organization
Computer Networks — UC Davis
Tools Used
Python, Socket API, JSON
Home / Technical Projects / UDP Sender
A systems-level networking project focused on understanding packet-based data transmission using the UDP protocol. Built to simulate real-world conditions by incorporating latency, buffer constraints, and varying network throughput inside a Docker environment.
Background
This project involves developing a UDP sender in Python to transmit a large file from a Docker container to a UDP receiver. The sender must support multiple congestion control protocols while operating under an emulated network profile that introduces delays, buffer limits, and throughput constraints.
Overview
Transmit the file in 1024-byte packets
Use sequence numbers for ordering
Measure throughput (bytes/second)
Measure per-packet delay (seconds)
Output a performance metric
Requirements
Stop-and-Wait Protocol — Sends one packet at a time, waiting for an acknowledgment before proceeding.
Fixed Sliding Window (Window Size = 100) — Sends up to 100 packets before requiring ACKs.
Protocols Implemented
The sender is evaluated using:
Metric = 0.3 × (Throughput / 1000) + 0.7 × (Average delay per packet)
Throughput in bytes per second
Delay in seconds
Performance Metric
Each run prints three lines:
Throughput
Average Delay per Packet
Performance Metric
Output
Artifact