Sor23-reproducing-network-research-results

=Teaching Computer Networks with Reproducible Research [Bringing foundational results into the classroom] =

About
Student: Kurva Prashanth Mentors: Fraida Fund Wiki: https://ospo.ucsc.edu/project/osre23/nyu/edunet/

=Introduction= About your project

Project Outcomes:

=Project goals=

Tech Stack
=Project Timeline= I plan to complete all the tasks before the coding period ends. Apart from this, I will write blogs weekly, reporting my progress and also the experiences I had while contributing this project.

During the coding period, I will do the following things:
 * Discuss ideas with the mentors, take feedback and work on
 * On an average i will be able to dedicate 30 to 35 hours per week
 * I am ready to adapt whatever my mentor suggests me and I will try my best to complete proposed work
 * Find other material tobe added

The GSoC official coding period begins on May 29, 2023, and ends on November 6, 2023.

NOTE : In view of my semester exams in June for a maximum period of two weeks, most of the work is scheduled in the second half of the coding period. I can’t work during the exam period. I would make sure to compensate for this by putting extra hours in the remaining period.

=Implementation Plan= To work on this project, It requires experience with bash scripting, build systems and linux management. I have an experience with Debian live build system and customized my low end machine with robotics and networking packages in which it has 2GB RAM and 30GB hard disk installed Debian 11 "Bullseye" with XFCE Desktop environment on it and I'm just curious to work on low end hardware, optimise software to make run very well on resource constrained devices.

I am mostly into Systems Programming, Embedded Linux, and Robotics. I use programming languages such as Assembly (x86, RISC-V), C, Python and shell scripting for Installing different packages and applications which I use. I prefer to work in a terminal over GUI and also mostly I use robotics, networking, embedded linux development tools like cross-compiler toolchains, emulators, Assemblers, Debugger, mininet, ns3, ROS, OpenCV, Wireshark, etc.

I also write good reports and blogs, I’ve previously written some blogs about free software and open hardware and experiences I had. Check here

Classic TCP result, about the fairness of TCP flows sharing a bottleneck: "Analysis of the Increase and Decrease Algorithms for Congestion Avoidance in Computer Networks" by Van Jacobson et al. (1988)
The classic TCP result about the fairness of TCP flows sharing a bottleneck is commonly referred to as the "TCP fairness" result. This result shows that when multiple TCP flows traverse a bottleneck link, each flow will receive an equal share of the available bandwidth, regardless of the number of flows or their round-trip times.

Based on mentor suggestion i'll work on to reroduce figure 5 in the paper thatshows the fairness of TCP flows sharing a bottleneck. It plots the throughput of each TCP flow against time, where each flow has a different round-trip time. The plot demonstrates that TCP flows with shorter round-trip times achieve higher throughputs than those with longer round-trip times. However, when the throughput is normalized by the round-trip time, all flows achieve a similar throughput, indicating TCP fairness.

In order to reproduce something like Figure 5, i'll try use of a  network simulator, such as NS-3 or ns-2, to simulate multiple TCP flows sharing a bottleneck link to vary the round-trip time of each flow and plot the throughput of each flow against time. Then, normalize the throughput by the round-trip time and plot the results to demonstrate TCP fairness.

I'm thinking that reproducing Figure 5 exactly may not be feasible, as the original experiments were conducted in a different networking environment and used different parameters than those available today. However, I'll follow a similar methodology, to reproduce the TCP fairness result and demonstrate the robustness of TCP congestion control mechanisms.


 * Workflow to reproduce TCP fairness using a network simulator


 * 1) Setting up the network topology:
 * 2) Creating two nodes and a bottleneck link with limited bandwidth
 * 3) Connecting the nodes through the bottleneck link
 * 4) Adding multiple TCP flows:
 * 5) Creating two TCP flows with different round-trip times and  simulate
 * 6) Recording the throughput of each flow over time and plotting the throughput of each flow over time

Working Conditions

 * I plan to undertake this project from my residence or my university dormitory at Hyderabad.
 * I would be available full-time (40+ hours/week). My work timings are very flexible, but I usually work from 14:00 till 23:00 in UTC+5:30 (IST).
 * I have previously completed GSOC and multiple academic projects working remotely from residence or dormitory and face no electricity and internet network reliability issues. The space is suitable for video calls and a productive environment as per my liking.
 * Local development system (laptop) specifications:
 * Operating System:
 * Primary: Debian
 * Secondary: FreeBSD
 * Secondary: FreeBSD

These secifications are sufficient for development and research work, along with the support of resources from UCSC OSPO/mentor, for remote servers if required.

Contingency
If I get stuck on my project and my mentor isn’t around, I will use the following resources:
 * 1) Ask on the forum


 * Teaching-on-Testbeds Repositories:
 * 1) https://github.com/teaching-on-testbeds


 * Documentation and Repositories on Teaching-on-Testbeds:
 * 1) https://teaching-on-testbeds.github.io/resources/


 * Mailing lists:
 * 1) Cloudlab

=Biographical Information=

Introduction
I am Kurva Prashanth, a senior undergraduate pursuing major in Electronics & Communication Engineering.

I have been actively contributing to open-source organizations, having participated successfully in Google Summer of Code (2022) with BeagleBoard.org. I also interned as a Robotics Research Intern at Robotics Research Center, International Institute of Informational Technology Hyderabad.

I have a good understanding and decent experience of software and hardware engineering-related development methodologies, tools, and usage.

Background
Here are technical and non-technical ways where I contributed.
 * Contributions
 * Free Software Movement of India
 * Hacktivist: Actively contributing to free software projects, gave talks on Free Software & Open Hardware, Git, Mobile & Desktop Freedom, Dark Patterns
 * Speaker, International Debian Conference 2021


 * Swecha Telangana
 * Designed, optimized, and sliced 3D models and maintained production line of 3D printed projects and open hardware prototyping equipment.
 * In Mobile Autonomous Cart project using ROS + Docker, development tools to advance robotic software design and deployment by utilizing advances in Linux containers.
 * Organised Debian Bullseye Release event
 * Course Manager and Teaching Assistant for Liberating Devices course ( Mobile & Desktop Freedom )
 * Utilized Android Tools ( adb, fastboot ), Bash scripts and command-line tools to remove proprietary malware from mobiles/watches and desktops.
 * Porting and Enabling the Government School Computer labs in our locality to specific use of free softwares and Installing BalaSwecha OS( A GNU/Linux distribution based on Debian ).

Trajectory

 * I am interested in eventually pursuing graduate studies in academic research and work in research roles at the intersection of Robotics Systems, Networks, and Security. Along with my additional interest in embedded and Operating Systems. This initiative [2023 Summer of Reproducibility] gives me the necessary exposure and experience to work on reproducing research results and to prepare me to get started on work i might continue in graduate school, hone my research skills, and test out challenges of reusing code in Networking Research.
 * I plan to collaborate and engage in academic research and Open Source communities and continually get super involved ina topic i care about. This oportunity will play a crucial role in solidifying as a undergraduate student as i graduate and transition to graduate school.

Contact information
IRC Nick: krvprashanth Matrix: @krvprashanth:matrix.org Github: https://github.com/krvprashanth Gitlab: https://code.swecha.org/krvprashanth School: Vidya Jyothi Institute of Technology Country: India Primary language: English, Telugu Typical work hours: 6AM-11AM, 4PM-10PM (GMT +5:30) IST Previous GSoC participation: First time I am participating in GSoC.

Misc
=References=