[Update 1]
I am updating the scope and details of this project , taking @PulkoMandy suggestion into account .
-
Implement Stateless Auto Address Configuration for ipv6 .
This involves
i) Implementing Duplicate Address Detection (#8319 (Haiku needs IPv6 Duplicate Address Detection) – Haiku)
ii) Implementing Router Advertisement handling(#11862 (Net server multi-protocol rework) – Haiku) and sending Router Solicitation message .
iii) Defining address scope flags for ipv6 → Link- Local, global -
Making address configuration independent for ipv4 and ipv6 → Currently , changing the address configuration mode for ipv4 or ipv6 through the networkstatus app or ifconfig command affects the settings of the other address family . This needs to be taken care of .(#7228 (RFC: BNetworkInterfaceAddress needs to store auto-configuration flags) – Haiku)
Questions
-
#8319 (Haiku needs IPv6 Duplicate Address Detection) – Haiku - This ticket outlines the steps for duplicate address detection . The first and last step mentions about joining and leaving a well known MLDv2 multicast group . In Google, I did not find any article mentioning about these steps for Duplicate Address Detection . Hence my question is
a) Why implementing these 2 steps are necessary ?
b) What is the multicast address value of this well known multicast group in MLDv2 ?
c) Does the joingroup function described here (Cross Reference: /haiku/src/add-ons/kernel/network/protocols/ipv6/ipv6.cpp) trying to achieve the joining into a multicast group ? I see no use of icmpv6 in this case .
d) Same question as (c) for leavegroup function .(Cross Reference: /haiku/src/add-ons/kernel/network/protocols/ipv6/ipv6.cpp) -
The address scope flags for ipv6 (link local, global) needs to be stored at interface address level, is that correct ? Which means they need to be implemented in BNetworkInterfaceAddress class ?
-
Should we introduce a separate flag to indicate ipv6 auto-config just like IFF_AUTO_CONFIGURED for ipv4 ? otherwise, NetServer should not set IFF_AUTO_CONFIGURED flag on the interface during ipv6 auto-configuration .
(Initial Post)
Hi everyone, I am looking forward to apply for GSOC 2024 under Haiku . I am interested to work on the project titled Ipv6 finalization and Stabilization (Duration 175 hours ). The project roughly covers the following topics
-
#7228 - Separation of configuration settings for ipv4 and ipv6 .
In the current codebase , if we try to auto-configure ipv4 through ifconfig or networkStatus GUI, it affects ipv6 and vice-versa . -
#8319 - Implementing Duplicate Address Detection
Currently , there is no auto-configuration mechanism properly implemented for ipv6 , like DAD or DHCPv6 . The link local address generation is pre-existing but that needs to be coupled with DAD to make the ipv6 addressing fully functional, allowing us to access websites through ipv6 . -
#11862 - Making the netserver and AutoConfigLooper more generalised for different protocols instead of being ipv4 specific .
The ticket highlights the following features to be functional :
For ipv4, DHCP(already present) and 169.254.x.x based on MAC(already present)
For ipv6 , router advertisement (to be taken care in DAD)
The ticket also mentions about zeroconf for ipv4 and DHCPv6 for ipv6 but these two have not been emphasised in the ticket .
I have some questions regarding these topics
- Regarding point 3, should we be aiming to include both DHCPv6 and DAD in the project scope ?
- How should I go about testing the functionality for ipv6 ? My router probably doesn’t support ipv6 but I have no way of knowing for sure because it’s a public wifi router and I dont have access to the router’s webpage .
- Should zeroconf be taken care of as part of this project ?