GSOC2025AqmEvaluation: Difference between revisions
Jump to navigation
Jump to search
Davidzylin (talk | contribs) |
Davidzylin (talk | contribs) |
||
(9 intermediate revisions by the same user not shown) | |||
Line 7: | Line 7: | ||
* '''Project Name:''' Upgrade the AQM Evaluation Suite for ns-3 | * '''Project Name:''' Upgrade the AQM Evaluation Suite for ns-3 | ||
* '''Student:''' David Lin | * '''Student:''' David Lin | ||
* '''Mentors:''' Mohit Tahiliani and Tom Henderson | * '''Mentors:''' Mohit P. Tahiliani, Aniket Singh and Tom Henderson | ||
* '''Google Page:''' [https://summerofcode.withgoogle.com/programs/2025/projects/d7sZPqy6 LINK] | * '''Google Page:''' [https://summerofcode.withgoogle.com/programs/2025/projects/d7sZPqy6 LINK] | ||
* '''Project Proposal:''' [https://davidzylin.notion.site/Proposal-Upgrade-the-AQM-Evaluation-Suite-for-ns-3-1bbad0d7128d80be9d7df771f053491e?pvs=143 LINK] | * '''Project Proposal:''' [https://davidzylin.notion.site/Proposal-Upgrade-the-AQM-Evaluation-Suite-for-ns-3-1bbad0d7128d80be9d7df771f053491e?pvs=143 LINK] | ||
Line 30: | Line 30: | ||
= Weekly Updates = | = Weekly Updates = | ||
* '''Community Bonding Period''' | * '''Community Bonding Period (May 8-31, 2025)''' | ||
** Migrated the existing AQM Evaluation Suite codebase from [https://github.com/aqm-eval-suite/ns-3-dev-git GitHub] to the new [https://gitlab.com/gsoc2025aqmevaluation/ns-3-dev GitLab] repository for centralized development. | ** Migrated the existing AQM Evaluation Suite codebase from [https://github.com/aqm-eval-suite/ns-3-dev-git GitHub] to the new [https://gitlab.com/gsoc2025aqmevaluation/ns-3-dev GitLab] repository for centralized development. | ||
** Conducted an in-depth analysis of the original AQM Evaluation Suite paper. Extracted key highlights and formulated a structured list of [https://gitlab.com/gsoc2025aqmevaluation/ns-3-dev/-/issues/1 action items] to align with recent advancements in ns-3. | ** Conducted an in-depth analysis of the original AQM Evaluation Suite paper. Extracted key highlights and formulated a structured list of [https://gitlab.com/gsoc2025aqmevaluation/ns-3-dev/-/issues/1 action items] to align with recent advancements in ns-3. | ||
** | ** The original aqm-eval-suite was based on ns-3.30, and during the migration process, I identified an issue in the AggressiveSender scenario starting from ns-3.41, where aggressive TCP variants (BIC, HighSpeed, YeAH) no longer matched prior results (for more detailed comparisons, please see [https://gitlab.com/gsoc2025aqmevaluation/ns-3-dev/-/issues/6 #6]). Comparing with the examples from tcp-cubit, I discovered enabling pacing through <code>Config::SetDefault("ns3::TcpSocketState::EnablePacing", BooleanValue(true));</code> restores expected behaviour and notably, NewReno remains unaffected. | ||
* '''Week 1 (June 1-7, 2025)''' | * '''Week 1 (June 1-7, 2025)''' | ||
** | |||
** | ** ns-3 has transitioned from Waf to CMake as the primary build system, but the AQM evaluation suite still uses Waf configuration. I've migrated the existing build system from Waf to CMake for compatibility with latest version of ns-3 ([https://gitlab.com/gsoc2025aqmevaluation/ns-3-dev/-/merge_requests/1 Changes]). Ensured successful compilation across supported platforms and passed all tests. | ||
** | ** The original paper for AQM Evaluation Suite uses TCP BIC for the aggressive sender as TCP CUBIC wasn't implemented in ns-3; However, TCP CUBIC is now supported in ns-3. I've added support for TCP CUBIC in the AQM Evaluation Suite and replaced TCP BIC with TCP CUBIC for default aggressive congestion control in the examples. This addressed the limitation of the paper and aligns with the requirements from RFC 7928; | ||
** The original paper for AQM Evaluation Suite states "TCP NewReno is the default congestion control in ns-3" but latest ns-3 uses CUBIC as default. I've investigated and validated ([https://gitlab.com/gsoc2025aqmevaluation/ns-3-dev/-/work_items/4 #4]) that TCP NewReno is indeed explicitly configured to eliminate surprises due to version upgrades as latest ns-3 uses CUBIC as default. | |||
* '''Week 2 (June 8-14, 2025)''' | * '''Week 2 (June 8-14, 2025)''' | ||
** | ** The original paper for AQM Evaluation Suite had the limitation that ECN support was under development, whereas now ns-3 has ECN support available. I've evaluated ECN support for AQM algorithms as outlined in RFC 7928 §4.5, and I've implemented the changes such that ECN was activated both at the queue level (e.g., for RED) and at the TCP sender level, based on ns-3 documentation and examples. For supported scenarios, ECN can be enabled through the <code>--ecn=true</code> flag. Results confirm that ECN configurations are taking effect, as the queue delay v.s. good-put shows that the algorithms that support ECN have values more concentrated around the mean, resulting in a smaller ellipsoid. This indicates a reduction in variance and a tighter Gaussian distribution, with the data clustering more closely around the center, which is the effect of ECN. Pfifo remains identical as the algorithm doesn't support ECN. For the comparisons, please see [https://gitlab.com/gsoc2025aqmevaluation/ns-3-dev/-/merge_requests/4 !4]. | ||
* '''Week 3 (June 15-21, 2025)''' | * '''Week 3 (June 15-21, 2025)''' | ||
** Originally, the AQM Evaluation Suite saves each run under the <code>aqm-eval-output</code> folder, and each run will be overwritten by the subsequent runs. I've redesigned the behaviour so that each run will be saved separately, each run will create the <code>aqm-eval-output/{timestamp}</code> folder, and will also have a <code>run_config.json</code> file to record the configuration of each run. | |||
** After the paper has been published, there were additional AQM algorithms that are implemented in ns-3, they are <code>ns3::CobaltQueueDisc</code>, <code>ns3::FqCobaltQueueDisc</code>, <code>ns3::FqCoDelQueueDisc</code>, <code>ns3::FqPieQueueDisc</code>, <code>ns3::TbfQueueDisc</code>. The new AQM algorithms that support ECN has also been enabled. | |||
* '''Week 4 (June 22-28, 2025)''' | |||
= Resources = | = Resources = |
Latest revision as of 04:10, 27 June 2025
Main Page - Roadmap - Summer Projects - Project Ideas - Developer FAQ - Tools - Related Projects
HOWTOs - Installation - Troubleshooting - User FAQ - Samples - Models - Education - Contributed Code - Papers
Back to GSoC 2025 projects
Project Overview
- Project Name: Upgrade the AQM Evaluation Suite for ns-3
- Student: David Lin
- Mentors: Mohit P. Tahiliani, Aniket Singh and Tom Henderson
- Google Page: LINK
- Project Proposal: LINK
- Project Goals: The AQM Evaluation Suite is an automated framework based on RFC 7928 that simplifies simulation setup, topology creation, traffic generation, execution, and results visualization of AQM algorithms in ns-3. Originally developed in 2017 and maintained until 2019, the suite now needs an upgrade to: (1) Migrate its build system from waf to CMake (2) Integrate support for state-of-the-art AQM algorithms and enhanced ECN functionalities (3) Update simulation examples to reflect modern traffic control models (4) Package and publish the suite on the ns-3 App Store
- Repository: LINK
- About Me: I'm a CS undergrad student at the University of Toronto. I've been deeply passionate about computer network and systems in general, it's my honour to work with such a wonderful community like ns-3!
Milestones
- CMake Migration
- Migrate the AQM Evaluation Suite’s build system from Waf to CMake
- TCP & ECN Enhancements
- Upgrading the configuration defaults, including replacing TCP BIC with TCP Cubic in the evaluation suite. ECN support will be added by incorporating new tests and scenarios that utilize ECN signaling and feedback mechanisms. If other configuration defaults require updating, those changes will also be made.
- Upgrade AQM Algorithms
- Support newer AQM algorithms. Parameter configurations will be added following RFC 7928 guidelines, and new scenarios will be implemented to demonstrate modern traffic control use cases.
- Packaging
- The module will be prepared for submission to the ns-3 App Store or into the mainline, including compliance with metadata and technical requirements.
Weekly Updates
- Community Bonding Period (May 8-31, 2025)
- Migrated the existing AQM Evaluation Suite codebase from GitHub to the new GitLab repository for centralized development.
- Conducted an in-depth analysis of the original AQM Evaluation Suite paper. Extracted key highlights and formulated a structured list of action items to align with recent advancements in ns-3.
- The original aqm-eval-suite was based on ns-3.30, and during the migration process, I identified an issue in the AggressiveSender scenario starting from ns-3.41, where aggressive TCP variants (BIC, HighSpeed, YeAH) no longer matched prior results (for more detailed comparisons, please see #6). Comparing with the examples from tcp-cubit, I discovered enabling pacing through
Config::SetDefault("ns3::TcpSocketState::EnablePacing", BooleanValue(true));
restores expected behaviour and notably, NewReno remains unaffected.
- Week 1 (June 1-7, 2025)
- ns-3 has transitioned from Waf to CMake as the primary build system, but the AQM evaluation suite still uses Waf configuration. I've migrated the existing build system from Waf to CMake for compatibility with latest version of ns-3 (Changes). Ensured successful compilation across supported platforms and passed all tests.
- The original paper for AQM Evaluation Suite uses TCP BIC for the aggressive sender as TCP CUBIC wasn't implemented in ns-3; However, TCP CUBIC is now supported in ns-3. I've added support for TCP CUBIC in the AQM Evaluation Suite and replaced TCP BIC with TCP CUBIC for default aggressive congestion control in the examples. This addressed the limitation of the paper and aligns with the requirements from RFC 7928;
- The original paper for AQM Evaluation Suite states "TCP NewReno is the default congestion control in ns-3" but latest ns-3 uses CUBIC as default. I've investigated and validated (#4) that TCP NewReno is indeed explicitly configured to eliminate surprises due to version upgrades as latest ns-3 uses CUBIC as default.
- Week 2 (June 8-14, 2025)
- The original paper for AQM Evaluation Suite had the limitation that ECN support was under development, whereas now ns-3 has ECN support available. I've evaluated ECN support for AQM algorithms as outlined in RFC 7928 §4.5, and I've implemented the changes such that ECN was activated both at the queue level (e.g., for RED) and at the TCP sender level, based on ns-3 documentation and examples. For supported scenarios, ECN can be enabled through the
--ecn=true
flag. Results confirm that ECN configurations are taking effect, as the queue delay v.s. good-put shows that the algorithms that support ECN have values more concentrated around the mean, resulting in a smaller ellipsoid. This indicates a reduction in variance and a tighter Gaussian distribution, with the data clustering more closely around the center, which is the effect of ECN. Pfifo remains identical as the algorithm doesn't support ECN. For the comparisons, please see !4.
- The original paper for AQM Evaluation Suite had the limitation that ECN support was under development, whereas now ns-3 has ECN support available. I've evaluated ECN support for AQM algorithms as outlined in RFC 7928 §4.5, and I've implemented the changes such that ECN was activated both at the queue level (e.g., for RED) and at the TCP sender level, based on ns-3 documentation and examples. For supported scenarios, ECN can be enabled through the
- Week 3 (June 15-21, 2025)
- Originally, the AQM Evaluation Suite saves each run under the
aqm-eval-output
folder, and each run will be overwritten by the subsequent runs. I've redesigned the behaviour so that each run will be saved separately, each run will create theaqm-eval-output/{timestamp}
folder, and will also have arun_config.json
file to record the configuration of each run. - After the paper has been published, there were additional AQM algorithms that are implemented in ns-3, they are
ns3::CobaltQueueDisc
,ns3::FqCobaltQueueDisc
,ns3::FqCoDelQueueDisc
,ns3::FqPieQueueDisc
,ns3::TbfQueueDisc
. The new AQM algorithms that support ECN has also been enabled.
- Originally, the AQM Evaluation Suite saves each run under the
- Week 4 (June 22-28, 2025)
Resources
- AQM Evaluation Suite [Paper] [Implementation]
- RFC 7928
- Traffic Control Model in ns-3