[haiku-development] GSoc - IPv6 implementation for Haiku OS

  • From: Atis Elsts <the.kfx@xxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Tue, 30 Mar 2010 16:16:43 +0300

Hello. I'm looking forward to participating in Google Summer of Code
2010. I plan to submit a proposal related to "Implement IPv6 support
for Haiku" project idea.

I am new to Haiku OS, but I have significant familiarity with IPv6 as
a programmer, as well as familiarity with Linux kernel networking code
and networking concepts in general. I feel enthusiastic about the
prospects of IPv6 protocol and think that it will soon become a really
necessary part of every desktop operating system.

At the moment I am studying the source code of Haiku OS and it's
network stack. Opinions regarding to what aspects of Haiku OS should
be learned first are welcome :)

What follows is a rough draft of the list of the points that are
required for IPv6 support (in my opinion). Please make your comments
about this list and the scope of its tasks.

---

Haiku IPv6 roadmap:

The points in different categories are sorted to roughly correspond to
the order of the implementation. This is not a ready proposal yet and
I do not claim that all these points will make it to my GSoC proposal.

* Addressing:
- basic IPv6 static addressing support
- neighbor discovery support (i.e. the equivalent of ARP for IPv6)
- DAD (duplicate address detection)
- dynamic link-local scoped addresses
- host side address autoconfiguration

* Routing
- connected route support
- default route support
- static route support

* API:
- AF_INET6 family support for sockets
  This includes: [Vijayakumar]
  adding sockaddr_in6 structure
  writing support for IPv6 specific getsockopt and setsockopt calls
  adding getnameinfo(), getaddrinfo(), inet_pton() and inet_ntop() functions

* Tools:
- ifconfig utility - allow to work with IPv6 addresses
- route utility - allow to work with IPv6 routes
- ping - for testing IPv6 connectivity and ICMPv6 support
- traceroute over IPv6 (UDP over IPv6 support required first)
- telnet over IPv6 (TCP over IPv6 support required first)
(later tasks:)
- FTP over IPv6 and wget over IPv6 (TCP required first)

* Protocols:
- limited ICMPv6 support, as much is needed to make address neighbor
discovery, DAD, autocofiguration, and ping to work.
  Message types that need to be supported: [ICMPv6] [AutoConf] [NeighDisc]
  - Echo Reply Message
  - Echo Request Message
  - Neighbor Solicitation Message (similar to ARP request for IPv4)
  - Neighbor Advertisement Message (similar to ARP response for IPv4)
  - Router Solicitation Message (Tx only)
  - Router Advertisement Message (Rx only)
(not sure about whether there will be enough time for these:)
- TCP support over IPv6
- UDP support over IPv6

The main information about IPv6 is taken from [IPv6] and [Hagen].

The list does not contain points like "DHCPv6 client" or "tunnelling
support", that according to [von Gluck] can be supported without
implementing them in Haiku OS itself.

The lost also does not include support for RADVD (router side address
autoconfiguration). I don't think it's needed at all, at least for the
first releases of the OS, because Haiku OS is meant to be a host side
OS, not a router, right?

And it does not include support for multicast over IPv6 (MLD protocol)
or PPP over IPv6 support.

References:
[IPv6] - RFC 2460 - Internet Protocol, Version 6 (IPv6) Specification
[ICMPv6] - RFC 4443 - Internet Control Message Protocol (ICMPv6) for
the Internet Protocol Version 6 (IPv6) Specification
[AutoConf] - RFC 4862 - IPv6 Stateless Address Autoconfiguration
[NeighDisc] - RFC 4861 - Neighbor Discovery for IP version 6 (IPv6)
[Hagen] - IPv6 Essentials by Silvia Hagen,
http://oreilly.com/catalog/9780596001254
[Vijayakumar] - Google Summer of Code 2009 Haiku IPv6 proposal by
Smita Vijayakumar,
www.cse.ohio-state.edu/~vijayaks/GSoC/Haiku_Proposal.pdf
[von Gluck] - Mail about possible IPv6 features in Haiku,
//www.freelists.org/post/haiku/IPv6-protocol-stack-developement,1

Other related posts: