Timeline - ns-3-dpdk-integration/ns-3-dpdk GitHub Wiki

Welcome to the Integration-of-DPDK-in-ns-3 wiki!

Here you can find the weekly progress report of the project.

Week 0 (July 30 - Aug 5)

Week 1 (Aug 6 - Aug 12)

Week 2 (Aug 13 - Aug 19)

Week 3 (Aug 20 - Aug 26)

  • Detailed reading on Core DPDK architecture and EAL from the programmers guide.
  • Understood DPDK code architecture by this video material.

Week 4 (Aug 27 - Sept 2)

  • Created DpdkNetDevice module.
  • Compiled sample DPDK application in ns-3 : Link to doc.
  • Provided parameters for initializing EAL.
  • Initialized EAL.

Week 5 (Sept 3 - Sept 9)

  • Initialized 'mbuf' memory pool under DpdkInit
  • Initialized available ports on the system.
  • Added a function to check the status of the link and printing the statistics for the same.

Week 6 (Sept 10 - Sept 16)

  • Created rings for transmission/retrieval of packets to/from the nic.
  • Overridden IsLinkUp() function to check the status of the link.
  • Added Write() function
    • Converts the incoming packet from buffer to rte_mbuf data structure.
    • Enqueues the packet on the Tx rte_ring.
  • Added Read() function
    • Dequeues single packet from the Rx rte_ring.
    • Reads the data in mbuf and returns the length.
  • Added HandleTx() function
    • Read a burst of packets from the Tx rte_ring.
    • Persistently write all of those burst of packets on the nic Tx ring.
  • Added HandleRx() function
    • Read a burst of packets from the nic Rx ring.
    • Write that burst of packets to the Rx rte_ring.
  • Added LaunchCore() function which calls HandleTx() and HandleRx() functions.

Week 7 (Sept 17 - Sept 23)

  • Started implementation of DpdkNetDeviceReader

Week 8 (Sept 24 - Sept 30)

  • Finished implementation of DpdkNetDeviceReader

Week 9 (Oct 1 - Oct 7)

  • Fixed error on VM not sending packets.

Week 10 (Oct 8 - Oct 14)

  • Fixed packets not being dequeued.

Week 11 (Oct 15 - Oct 21)

  • Installed the project on a real system.

Week 12 (Oct 22 - Oct 28)

  • Fixed bug on packets not being written to the NIC.

Week 13 (Oct 29 - Nov 04)

  • Fixed bug on packets not being written to the NIC.
  • Fixed bug on multiple binding requirement.
  • Code cleanup - comments and printf statements.
  • Edited usage of compiler flags to the ns-3 module only.
  • Renamed DPDKNetDevice to DpdkNetDevice.
  • Created Model Diagram for the project.

Week 14 (Nov 05 - Nov 11)

  • Discussion started with DPDK mailing list over optimizations

Week 15 (Nov 12 - Nov 18)

  • Implemented new Rx/Tx logic. Follow branch newrxtx
  • Implemented no memcopy logic.

Week 16 (Nov 19 - Nov 25)

  • Implemented suggestions by mailing list over buffer to packet map. DpdkNetDevice now uses buffer instead of rte_ring.

Week 17 (Nov 26 - Dec 2)

  • Updated Tx timeout for buffer.

Week 18 (Dec 3 - Dec 9)

  • Learned usage of Intel VTune Analyzer.

Week 19 (Dec 10 - Dec 16)

  • Profiled DpdkNetDevice using Hotspots analysis of VTune..

Week 20 (Dec 17 - Dec 23)

  • Started optimizing DpdkNetDevice by suggestions from VTune analysis.

Week 21 (Dec 24 - Dec 30)

  • Optimized IsLinkUp() function.

Week 22 (Dec 31 - Jan 6)

  • Optimized and changed prototype of Read() method.

Week 23 (Jan 7 - Jan 13)

  • Made Tx timeout as command line arguments and tested DpdkNetDevice for different timeouts.

Week 24 (Jab 14 - Jan 20)

  • Modified the flush logic.
  • HandleRx() replaces DpdkNetDeviceReader to read packets.

Week 25 (Jan 21 - Jan 27)

  • Modified HandleRx() function.

Week 26 (Jan 28 - Feb 3)

  • Fixed packet losses during simulations.

Week 27 (Feb 4 - Feb 10)

  • Compiled ns-3 in optimized mode.

Week 28 (Feb 11 - Feb 17)

  • Improved support for burst Tx of packets.

Week 29 (Feb 18 - Feb 24)

  • Added ping application in the OnOff example to calculate RTT for UDP flows.
  • Generating results from tests to compare DpdkNetDevice with FdNetDevice.

Week 30 (Feb 25 - Mar 3)

  • Code cleaning.
  • Multiple packet size testing for TCP flows.