Back to GSoC 2020 projects
- 1 Project Overview
- 2 Weekly Reports
- 2.1 Community Bonding Period: 4th May to 1st June
- 2.2 Week 1: 1st June - 7th June
- 2.3 Week 2: 8th June - 14th June
- 2.4 Week 3: 15th June - 21st June
- 2.5 Week 4: 22nd June - 28th June
- 2.6 Week 5: 29th June - 5th July
- 2.7 Week 6: 6th July - 12th July
- 2.8 Week 7: 13th July - 19th July
- 2.9 Week 8: 20th July - 26th July
- 2.10 Week 9: 27th July - 2nd August
- 2.11 Week 10: 3rd August - 9th August
- 2.12 Week 11: 10th August - 16th August
- 2.13 Week 12: 17th August - 23rd August
- Project Name: NetDevice up/down consistency and event chain
- Student: Ananthakrishnan S
- Mentors: Tommaso Pecorella, Zoraze Ali, Joe Dizhi Zhou
- Abstract: There are a variety of NetDevices available in ns-3 which aides in different simulation scenarios such as WifiNetDevice, PointToPointNetDevice, CsmaNetDevice etc. As of now, there are inconsistencies between the state of NetDevices and IP interfaces attached to them. When a NetDevice gets disconnected, the associated IP Interface must be informed about this change. As of now, IP Interface is not informed. The way different NetDevices handle link change is also inconsistent. This project aims at inspecting the behavior of mainly PointToPointNetDevice, CsmaNetDevice as well as WifiNetDevice and setting a consistent behavior. LteNetDevice being more complex to work on will be studied and if possible be implemented as well. Additionally, the event chain that gets triggered when an IP Interface changes its state will be examined as well.
- Repository: Link
- About Me: I am a final year M.Tech student at the National Institute of Technology, Surathkal, Karnataka. I am currently working on implementing a publisher-subscriber model in ndnSIM, which is built on top of ns-3. In my first year, I have worked on extending AQM Evaluation Suite in ns-3 based on RFC 7928. I was a GCI mentor for ns-3 in 2019.
- Final Project Report: https://ananthu-dev.github.io/net-device-consistency-gsoc-2020/
Community Bonding Period: 4th May to 1st June
- Created a Project Wiki page.
- Opened up a shared google document to add and review information, comparisons, and code designs relevant to the project. The document will be kept updated as the project moves forward.Link to doc.
- Studied the events that happen when Network Devices changes state in Linux kernel (5.7-rc6).
Week 1: 1st June - 7th June
- A general guideline on the behavior of NetDevices has been made based on Documentation and research did during the Community bonding period. The guideline can be found here here.
- Made a proposal on how to implement the said guideline in ns-3. The proposal is included in the guideline.
Week 2: 8th June - 14th June
- Added class NetDeviceState that is to be aggregated with NetDevice class. It will be aggregated by NetDevices that support NetDevice behavior described in the class. Commit: link
- Started a section that describes NetDevice behavior in the Network module. Commit: link
Week 3: 15th June - 21st June
- Revised the initial implementation of NetDevice behavior after discussions with mentors. The new implementation will enable specializations for specific NetDevices.
Week 4: 22nd June - 28th June
- Created CsmaNetDeviceState class to integrate the architecture into CsmaNetDevice.
- Modified CsmaHelper class to help user turn off/on the device or Detach the device from a channel.
Week 5: 29th June - 5th July
- Added test suite for checking the functionality of CsmaNetDeviceState.
- Added LOG macros and documentation in the code.
- Integrated feedbacks from mentor.
Week 6: 6th July - 12th July
- Studied the working of WiFi.
- Started looking into ns-3 WiFi module.
- Added more test cases to CsmaNetDeviceStateTest to test whether callbacks are fired properly.
- Ran check-style.py on all files I modified.
- Made changes as per suggested by mentors.
- Integrated code provided by Tommaso Pecorella to fix Gitlab Issue #234 to my code. Issue, Commit.
Week 7: 13th July - 19th July
- Made classes in Wifi module for NetDeviceState integration. commit
- Made classes in PointToPoint module for NetDeviceState integration. commit
- Created a merge request to merge GSoC phase 1 work. link.
Week 8: 20th July - 26th July
- Implemented NetDeviceState in Wifi module. Made changes in each mac classes to setup and setdown WifiNetDevice. commit
- Worked on more issues pointed out in Merge request discussion.
Week 9: 27th July - 2nd August
- Made some corrections in implementation of NetDeviceState in Wifi as pointed out by wifi maintainers.
- Made more changes to Phase 1 merge request as suggested by mentors.
Week 10: 3rd August - 9th August
- Written test cases for WifiNetDeviceState implementation. (commit)
- Started a discussion with maintainers of modules that will be affected by this project so that no more changes will be needed on the NetDeviceState base implementation.
Week 11: 10th August - 16th August
- Reached a final consensus on the implementation of NetDeviceState base class.
- Discussed issues in NetDeviceState implementation for Wifi and fixed them. commit
- Changed NetDeviceState architecture according to the final agreed upon design (proposed-changes) and generated a merge request for that (merge-request).
Week 12: 17th August - 23rd August
- see final project report: https://ananthu-dev.github.io/net-device-consistency-gsoc-2020/