GSOC2019DCN

From Nsnam
Revision as of 10:00, 21 May 2019 by Liangcheng-yu (Talk | contribs)

Jump to: navigation, search

GSOC2019DCN

Main Page - Current Development - Developer FAQ - Tools - Related Projects - Project Ideas - Summer Projects

Installation - Troubleshooting - User FAQ - HOWTOs - 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

The entire GSoC period is divided into 3 phases. The deliverable at the end of each phase is 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 other prioritized targets for supporting DCN research in NS-3, e.g., the load balancing algorithms, 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.

Weekly Progress (Continuous update)

Community Bonding Period

  • Prepare wiki page for the project and the introduction text to the NS-3 developer mailing list.
  • Meet with mentors and discuss the details of the proposal.
  • Get familiar with the previous DCN project DCTCP (GSOC2017).
  • Fork the ns3-dev repo (sync with commit eda73a35) and created a sample branch for review.

Week1 May 27 - June 2

  • 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.