GSOC2019DCN

From Nsnam
Jump to navigation Jump to search

GSOC2019DCN

Main Page - Roadmap - Summer Projects - Project Ideas - Developer FAQ - Tools - Related Projects

HOWTOs - Installation - Troubleshooting - User FAQ - Samples - Models - Education - Contributed Code - Papers

Return to GSoC 2019 Projects page.

Project Overview

  • Project name: Framework of Studying Flow Completion Time Minimization for Data Center Networks
  • Abstract: This project aims to make NS-3 more friendly to researchers working on the contemporary research topic in Data Center Networks (DCN) to use NS-3 as an effective simulation tool to evaluate their ideas. The theme of the project is to augment NS-3 with further support of Data Center Network (DCN) related simulation and research, with a special focus in the flow-based performance optimization, e.g., implementing useful modules in NS-3 ecosystem including Multi Level Feedback Queue scheduling, spine-leaf topology helper, flow statistics analysis helper and so forth.
  • About Me: I will soon join the University of Pennsylvania as a first-year Ph.D. student focusing on Computer Systems and Networking. I obtained my master degree in Wireless Systems at KTH Royal Institute of Technology, Sweden and Bachelor of Engineering in Automatic Control at Zhejiang University, China.
  • Code: To be included.

Technical Approach

The big picture of the project is to augment DCN support for NS-3. This project specifically looks at supporting flow-based performance optimization in NS-3 which involves multiple aspects including packet scheduling, packet tagging, topology helper, performance evaluation helper, load balancing and so forth. The Multi-Level Feedback Queue scheduling disciplines and Shortest Job First are used to support minimizing Flow Completion Time (FCT) with or without the information of the flow size. The spine-leaf topology is often used in the DCN simulation to evaluate the DCN proposal and metrics such as the average FCT, 99th percentile are the indicators to analyze the potential DCN proposal that involves novel scheduling, congestion control, routing, or load balancing approaches for DCN. The implementation will align with the classical and state-of-the-art DCN research via incorporating these necessary components for DCN research.

Milestones and Deliverables

This project aims to make NS-3 more friendly to researchers working on the contemporary research topic in DCN to use NS-3 as an effective simulation tool to evaluate their ideas so we would adjust the deliverables to best serve the purposes. The entire GSoC period is divided into 3 phases. For now, the deliverables at the end of each phase are as mentioned below:

Phase 1

  • Implementation of Multi-Level Feedback Queue scheduling.
  • Implementation of Shorted Job First based scheduling.
  • Implementation of the tagging of the metadata of the (remaining) flow size in the packet with corresponding application or helpers.

Phase 2

  • Implementation of the spine-leaf DCN topology helper and NetAnim support.
  • Implementation of flow synthesizer and flow statistics analysis helper.
  • Provide examples of using representative traffic distribution in DCN for DCN simulation.

Phase 3

  • Provide example program for data center networking simulation in NS-3 reproducing the classical work in the domain, e.g., pFabric, PIAS.
  • Buffer time for adding other prioritized targets for supporting DCN research in NS-3, e.g., the load balancing algorithms (e.g., other than ECMP), congestion control, TCP incast simulation in DCN.

Weekly Plan (Continuous Update)

Below is the weekly plan including the core technical details.

Week1 May 27 - June 2

  • Implement Multi-Level Feedback Queue (MLFQ) as a new queueing discipline for traffic control layer src/traffic-control/model/mlfq-queue-disc.{h,cc} and the surrounding update of NS-3 codebase.
  • Discussions
    • How to tag priority information for the packet? When there is an incoming packet passing from the IP layer, MLFQ will check the flow table and decide on the priority of the packet (2~8, depending on the MLFQ configuration). Such priority information will be encoded at the packet header, typically the TypeOfService field. Shall we use the PacketTag (with an internal field of uint8_t) or ByteTag or others to tag such information?
    • Concerns of packet fragmentation: will the tagging information be lost when passing through the network stack?
    • MLFQ is for the network edges, when we use MLFQ, we need to use the existing PrioQueueDisc under the traffic control module to classify the packet to the corresponding FIFO queue (2~16 queues, depending on the PrioQueueDisc configuration) based on the priority information. We need to consider this when implementing the MLFQ and we probably need to modify PrioQueueDisc classifier as well.

Weekly Progress (Continuous update)

Below is the weekly progress including the core technical details.

Community Bonding Period

  • Prepared wiki page for the project and the introduction text to the NS-3 developer mailing list.
  • Met with mentors and discuss the details of the proposal.
    • Consider the trace, variables to be exposed to the users (e.g., TCP window size, queueing delay...)
    • Check Fqcodel for similar hashing implementation.
    • Complete the full cycle of the NS-3 feature before moving to the next (implementation, text, example, documentation)
  • Got familiar with the previous DCN project DCTCP (GSOC2017).
  • Forked the ns3-dev repo (sync with commit eda73a35) and created a sample branch for review.

Week1 May 27 - June 2