IPv6 Improvement
This project is part of the Google Summer of Code 2012
It is maintained by JonathanCalmels (@exxo) under BjoernZeeb's (@bz) direction
Contents
Short Description
Nowadays with the lack of IPv4 addresses and the increase of addressing demands, the IPv6 needs to be implemented conscientiously to ensure a perfect failover.
This project aims to correct most of pending tasks listed in the FreeBSD TODO list mainly in userland. Furthermore It intends to provide to developers the ability to compile these codes for specific environments thus helping the creation of a fully IPv4-less FreeBSD distribution in the near future.
General development approach
Considering the variety of the programs concerned and their maintainability, we must deal with several points in particular :
- Use of special addresses (INADDR_ANY, IN6ADDR_ANY_INIT)
- Addressing structures (sockaddr_in, sockaddr_in6, sockaddr_storage)
- Socket creation (PF_INET/AF_INET, PF_INET6/AF_INET6)
- Addresses conversion (inet_ntoa, inet_aton, inet_addr, inet_pton ...)
- Addresses resolution (gethostbyname, getaddrinfo limited to AF_INET, getnameinfo ...)
- Multicast (IP_ADD_MEMBERSHIP, IPV6_ADD_MEMBERSHIP ...)
- Testing macros (IN6_IS_ADDR_LOOPBACK ...)
- Further issues (IPv4 mapped checking, IPV6_ONLY, IPv6 link local interface ...)
Thus, each program must be audited on an individual basis and properly tested to ensure its perfect functioning
Development priority
Given the amount of software needing to be patched, the priority would be focusing on basic utilities (who, rusers, quota, ping, getent ...), most used softwares (CVS client, OpenSSL, Sendmail ...) and possibly start looking at the DHCPv6 implementation, listed as well in the TODO list.
Milestones
The project begin on May 21, 2012 and the deadline will be on August 20, 2012
Below, several milestones have already been setup
On July 9-13, 2012 :
- Migrate all the addressing to AF_independant format (sockaddr_storage ...)
- Change all the AF_specific calls to be also IPv6 compliant (getaddrinfo / getnameinfo ...)
On August 13, 2012 :
- Finish previous steps in case of mishaps
- Enhance the unit-tests
- Correct uprising bugs
- Adjustment of other options (IPv6 host only / IPv4-IPv6 mapping ...)
On August 20, 2012 :
- Cleaning of code + documentation.
Test Plan and Release Notes
An IPv6 FreeBSD testbed will be deployed to test all modifications and every patch will be available at this address.
The following situations will be tested :
- Host involving a dual stack network (inet4/inet6) with inet6 fully configured
- Host involving a dual stack network (inet4/inet6) without inet6 configured
- Host including inet6 only
Some regression test would also be written as needed so that we can be sure everything went fine during the IPv6 migration.
For any request please refer to exxo@FreeBSD.org
Software Notes
Listed below the informations on the softwares analyzed (see also https://socsvn.freebsd.org/socsvn/soc2012/exxo/softnotes.txt)
Path |
Status |
Comment |
openssl-1.0.1c |
FIXED |
patch provided. Bio connect is not concerned by this patch |
contrib/cvs |
FIXED |
patch updated |
usr.bin/who |
OK |
software dependant, utmpx fixed it |
usr.bin/systat |
FIXED |
patch provided. systat now supports IPv6 when using ignore/display/show netstat commands |
usr.bin/quota |
FIXED |
patch provided. quota should now work correctly on NFSv6 shares |
usr.bin/newkey |
OK |
the address lookup is not used anymore |
contrib/bsnmp |
PENDING |
|
usr.bin/ypwhich |
FIXED |
patch provided. ypwhich now works with the new YPBIND protocol (v3) |
usr.sbin/ypbind |
FIXED |
patch provided. New protocol (v3), backward compatible with version 2 |
usr.bin/getent |
OK |
handle IPv6 apart from the "network" mode (RFC 1101 for inet6 ??) |
Final GSoC result (update)
The Google summer of code has now ended.
However note that this project plan is still relevant and needs further work (any volunteer ?).
Related links
IPv6 in FreeBSD http://www.freebsd.org/ipv6/
IPv6 FreeBSD Handbook http://www.freebsd.org/doc/handbook/network-ipv6.html
Kame project http://www.kame.net/