Difference between revisions of "GSOC2022NeighborCacheFinalReport"

From Nsnam
Jump to: navigation, search
(Phase 1)
Line 38: Line 38:
  
 
During phase 1, I did parallel jobs for the two methods we discussed during the community bonding period.
 
During phase 1, I did parallel jobs for the two methods we discussed during the community bonding period.
The first method is to create a locally shared neighbor cache per network. In this approach, we create a new data structure for the locally shared neighbor cache,  which is a map of map <em>std::unordered_map<Ipv4Address, Cache *, Ipv4AddressHash> PerfectCache<em>, the key is the network address and the value is the pointer to a normal cache, (this is necessary to deal with the scenario that one interface has multiple IP addresses which are from different network address). We created child classes <em>PerfectArpL3Protocol </em> and <em> PerfectArpCache </em> from <em>ArpL3Protocol </em> and <em> ArpCache </em>, override functions <em> CreateCache </em>, <em> Flush </em>, <em> CreateCache </em>, <em> Lookup </em>, <em> Add </em> to deal with the new data structure of neighbor cache, make it shared among devices in same networks and update dynamically with IP address added/removed. We made this method work but finally didn't choose it, the prototype can be found in my branch [https://gitlab.com/ZhiHengD/ns-3-dev/-/commits/gsoc gsoc]
+
The first method is to create a locally shared neighbor cache per network. In this approach, we create a new data structure for the locally shared neighbor cache,  which is a map of map <em>std::unordered_map<Ipv4Address, Cache *, Ipv4AddressHash> PerfectCache</em>, the key is the network address and the value is the pointer to a normal cache, (this is necessary to deal with the scenario that one interface has multiple IP addresses which are from different network address). We created child classes <em>PerfectArpL3Protocol </em> and <em> PerfectArpCache </em> from <em>ArpL3Protocol </em> and <em> ArpCache </em>, override functions <em> CreateCache </em>, <em> Flush </em>, <em> CreateCache </em>, <em> Lookup </em>, <em> Add </em> to deal with the new data structure of neighbor cache, make it shared among devices in same networks and update dynamically with IP address added/removed. We made this method work but finally didn't choose it, the prototype can be found in my branch [https://gitlab.com/ZhiHengD/ns-3-dev/-/commits/gsoc gsoc]

Revision as of 04:31, 10 September 2022

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

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

Back to GSoC 2022 projects

Project Overview

  • Project Name: Perfect ARP and NDP
  • Student: Zhiheng Dong
  • Mentors: Tommaso Pecorella, Ameya Deshpande, Manoj Kumar Rana

The project aims to implement a “Perfect” version of ARP and NDP which produce caches that contain all needed IP address–MAC address mapping. ARP and NDP are sometimes intrusive in high-level testing, it will introduce unexpected noise to the simulation (unwanted delays, packet drops, etc.). The new method generates all needed ARP/NDP caches before simulation start to avoid the delay and message overhead of address resolution in simulations that are focused on other performance aspects.

Merge Requests, Commits, and Project Details

Project Wiki Page: GSOC2022PerfectArp

Project Plan: link

Merge Requests
No. Name Status Commit
[1] Internet: GSoC-22 generate ARP/NDISC cache automatically Merged link
[2] [https://gitlab.com/nsnam/ns-3-dev/-/merge_requests/1068 internet: GSoC-22 dynamic neighbor cache Reviewing link

Community Bonding Period

During the community bonding period, we did some preparation work:

  • Create a wiki page that will be maintained as the GSoC project evolves.
  • Set a weekly meeting with my mentors for reports and discussions.
  • Discuss the details about how to implement the ideas mentioned in the proposal and some other new ideas.
  • Layout a project plan.

Phase 1

During phase 1, I did parallel jobs for the two methods we discussed during the community bonding period. The first method is to create a locally shared neighbor cache per network. In this approach, we create a new data structure for the locally shared neighbor cache, which is a map of map std::unordered_map<Ipv4Address, Cache *, Ipv4AddressHash> PerfectCache, the key is the network address and the value is the pointer to a normal cache, (this is necessary to deal with the scenario that one interface has multiple IP addresses which are from different network address). We created child classes PerfectArpL3Protocol and PerfectArpCache from ArpL3Protocol and ArpCache , override functions CreateCache , Flush , CreateCache , Lookup , Add to deal with the new data structure of neighbor cache, make it shared among devices in same networks and update dynamically with IP address added/removed. We made this method work but finally didn't choose it, the prototype can be found in my branch gsoc