<!DOCTYPE HTML PUBLIC "-//FreeBSD//DTD HTML 4.01 Transitional-Based Extension//EN" [
<!-- Copyright (c) 2011 The FreeBSD Foundation
     All rights reserved.
    
     This documentation was written by Bjoern Zeeb under sponsorship from
     the FreeBSD Foundation.
    
     Redistribution and use in source and binary forms, with or without
     modification, are permitted provided that the following conditions
     are met:
     1. Redistributions of source code must retain the above copyright
	notice, this list of conditions and the following disclaimer.
     2. Redistributions in binary form must reproduce the above copyright
	notice, this list of conditions and the following disclaimer in the
	documentation and/or other materials provided with the distribution.
    
     THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
     ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
     FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     SUCH DAMAGE.

     $FreeBSD$
-->
<!ENTITY base CDATA "..">
<!ENTITY date "$FreeBSD$">
<!ENTITY title "FreeBSD IPv6-only Support">
<!ENTITY % navinclude.developers "INCLUDE">
<!ENTITY % catnav.ipv6 "INCLUDE">
<!ENTITY % catnav SYSTEM "ipv6.ent"> %catnav;
<!ENTITY ipv6onlysnap "http://wiki.freebsd.org/IPv6Only">

]>
<html>
  &header;
  &catnav;
    <h2>IPv4, Dual-Stack and what is &quot;IPv6-only&quot;?</h2>
    <p>For multiple decades the Internet has been running on the Internet
      Protocol version 4 (IPv4).  You may know IPv4 addresses like 192.0.2.1.
      IPv6, the Internet Protocol version 6, is the successor to that and has
      a larger address space and longer addresses like
      2001:db8:4672:6565:2026:5043:2d42:5344.  A dual-stack (DS) system
      supports both address families, IPv4 and IPv6.  Dual-stack is the
      default for &os; releases shipping at this time and has been since 2003.
      An IPv6-only system is one that has been configured to use only IPv6
      support; IPv4 support is completely removed from the system.  Providing
      IPv6-only snapshots of &os; shows that it has no strict internal
      dependence on Internet Protocol version 4, and is ready to run in a pure
      IPv6 environment.
    </p>

    <h2>IPv6-only history</h2>
    <p>The IPv6 only kernel has started as a research project in 2008 when &os;
      <a href="&base;/doc/en_US.ISO8859-1/books/handbook/jails.html">Jails</a>
      gained IPv6 support and it became possible to have jails without IPv4.</p>

    <p>The FreeBSD kernel has long been able to be compiled for dual-stack or
      without INET6 support.
      It was time for feature parity in that area as well.
      As an intermediate step there were efforts to get the kernel compiling
      without any IP support at all, which helped to narrow down the
      problematic cases.</p>

    <p>As of
      <a href="http://svn.freebsd.org/changeset/base/221353">SVN r221353</a>
      it is now possible to compile the kernel without INET but with INET6
      support.
    </p>

    <h2>How can I get a system without INET support?</h2>
    <p>There are two ways to get this:</p>
    <ul>
      <li>The easy way is to download an IPv6-only snapshot we provide and
	test that put.  See the <a href="&ipv6onlysnap;">IPv6-only</a> wiki
	page for the latest snapshot builds and download links.</li>
      <li>Alternatively you can install any FreeBSD HEAD (9.x or later) as of
	May 2nd 2011 or later and compile your own kernel.  See the
	<a href ="&base;/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html">
	Handbook</a> for how to do this.</li>
    </ul>

    <h2>Doing IPv6-only when the world tries to get to dual-stack?</h2>
    <p>In a time where you hear numbers that about 4% of end users could
      actually successfully access IPv6-only services it may indeed sound
      strange.  The BSD network stack however was used as a reference
      implementation for the first time of TCP/IP and again was for IPv6 and
      there are some parts of the world already that are limited to IPv6-only.
      Over time, as IPv6 deployment proceeds, we expect to see a lot more of
      this.</p>

    <p>On the other hand having the IPv4 fall back option of dual-stack hides
      a lot of IPv6 errors and omissions.  Supposedly IPv6-ready software
      breaks when running without IPv4.  We want to help early in the process
      to catch and fix these problems and want to encourage other software
      developers to do the same.  FreeBSD is used in embedded device and
      targeting servers while at the same time people build desktop systems
      with it.  This entirety allows us to provide a turnkey solution, an
      ideal platform for thorough testing.
    </p>

    <h2>FAQ</h2>

    <h3>Do you have a sample kernel configuration for me?</h3>
    <p>Yes we do.  It is as simple as:
    </p>
    <pre>
include GENERIC
ident GENERIC-IPV6ONLY
makeoptions MKMODULESENV+="WITHOUT_INET_SUPPORT="
nooptions INET
nodevice gre
    </pre>

    <h3>I am not doing kernels but desktop applications. What about me?</h3>
    <p>
      &os; ships with a lot of applications running fine on command line.
      If you prefer to test on a preconfigured graphical desktop,
      <a href="http://www.pcbsd.org/">PC-BSD</a>, a &os; derived desktop
      distribution is providing IPv6-only snapshots as well.
    </p>

    <h3>Is this limited to &os;?</h3>
    <p>No.
      While we provide the kernel and parts of user space for you to start
      with, a lot of open sources and commercial software running on a
      <span class="TRADEMARK">UNIX</span>&reg; or
      <span class="TRADEMARK">UNIX</span>&reg;-like operating system
      (e.g. <span class="TRADEMARK">&reg;Linux</span>) should be able to
      compile and run on FreeBSD with minimal efforts.  Also see the next
      question.
    </p>

    <h3>Does everything just work on IPv6-only in &os;</h3>
    <p>While are doing our best, some things are not yet working without
      IPv4.  Very few parts of the kernel still depend on IPv4 and we are
      working on these.  In user space you can find three different categories:
    </p>
    <ol>
      <li>Software that is maintained as &os; base.  We are actively working
	on these as we find problems.  Patches from the community are always
	welcome.</li>
      <li>Software that is shipped with &os; base but imported from a 3rd
	party project.  We are trying our best to get any problems solved and
	are working with upstream vendors.<br>
	If you are part of such a project you may want to test on IPv6-only
	yourself to be really IPv6-ready with your next release!  Try our
	snapshots.</li>
      <li>Software that is part of &os <a href="&base;/ports/">ports</a>
	or any other open source or commercial software running on &os;.
	We will lend a hand if needed and possible but are hoping for the
	community to make best use of our snapshots and improve the overall
	IPv6 readiness of software.</li>
    </ol>

    <!-- should we provide bsdinstall sample information? -->

    &footer;
  </body>
</html>
