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

  1. Stop-and-Wait Protocol — Sends one packet at a time, waiting for an acknowledgment before proceeding.

  2. 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:

  1. Throughput

  2. Average Delay per Packet

  3. Performance Metric

Output

Artifact