IPv6 Improvement

This project is part of the Google Summer of Code 2012

It is maintained by JonathanCalmels (@exxo) under BjoernZeeb's (@bz) direction

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.

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

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.

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 :

  1. Migrate all the addressing to AF_independant format (sockaddr_storage …)
  2. Change all the AF_specific calls to be also IPv6 compliant (getaddrinfo / getnameinfo …)

On August 13, 2012 :

  1. Finish previous steps in case of mishaps
  2. Enhance the unit-tests
  3. Correct uprising bugs
  4. Adjustment of other options (IPv6 host only / IPv4-IPv6 mapping …)

On August 20, 2012 :

  1. Cleaning of code + documentation.

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

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 ??)

The Google summer of code has now ended.

However note that this project plan is still relevant and needs further work (any volunteer ?).

  • ipv6/ipv6improvement.txt
  • Last modified: 2020/10/27 01:14
  • by SashaVigole