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)
- Referred netmap video material.
- Read netmap in ns-3 paper: Network Emulation Support in ns-3 Through Kernel Bypass Techniques.
Week 1 (Aug 6 - Aug 12)
- Installation of Netmap support in ns-3.
- Netmap in ns-3 code understanding : Link to summary doc.
- Referred DPDK video material.
Week 2 (Aug 13 - Aug 19)
- Referred DPDK programmers guide.
- Installation of DPDK.
- Created proposal for project.
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
toDpdkNetDevice.
- 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 ofrte_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()
replacesDpdkNetDeviceReader
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.