<chapter id="ipv6-ref-76"><title>IPv6 in Depth
(Reference)</title><highlights><para>This chapter contains the following reference information about the
Solaris 10 IPv6 implementation.</para><itemizedlist><listitem><para><olink targetptr="ipv6-ref-77" remap="internal">IPv6 Addressing Formats Beyond
the Basics</olink></para>
</listitem><listitem><para><olink targetptr="ipv6-ref-2" remap="internal">IPv6 Packet Header Format</olink></para>
</listitem><listitem><para><olink targetptr="ipv6-ref-81" remap="internal">Dual-Stack Protocols</olink></para>
</listitem><listitem><para><olink targetptr="ipv6-ref-83" remap="internal">Solaris 10 IPv6 Implementation</olink></para>
</listitem><listitem><para><olink targetptr="ipv6-ref-34" remap="internal">IPv6 Neighbor Discovery Protocol</olink></para>
</listitem><listitem><para><olink targetptr="ipv6-ref-33" remap="internal">IPv6 Routing</olink></para>
</listitem><listitem><para><olink targetptr="ipv6-ref-47" remap="internal">IPv6 Tunnels</olink></para>
</listitem><listitem><para><olink targetptr="ipv6-ref-64" remap="internal">IPv6 Extensions to Solaris
Name Services</olink></para>
</listitem><listitem><para><olink targetptr="ipv6-ref-71" remap="internal">NFS and RPC IPv6 Support</olink></para>
</listitem><listitem><para><olink targetptr="ipv6-ref-103" remap="internal">IPv6 Over ATM Support</olink></para>
</listitem>
</itemizedlist><para>For an overview of IPv6, refer to <olink targetptr="ipv6-overview-7" remap="internal">Chapter&nbsp;3, Planning an IPv6 Addressing Scheme (Overview)</olink>. For tasks on configuring
an IPv6-enabled network, refer to <olink targetptr="ipv6-config-tasks-1" remap="internal">Chapter&nbsp;7, Enabling IPv6 on a Network (Tasks)</olink>.</para>
</highlights><sect1 id="ipv6-ref-77"><title>IPv6 Addressing Formats Beyond the Basics</title><para><olink targetptr="ipv6-overview-7" remap="internal">Chapter&nbsp;3, Planning an IPv6 Addressing Scheme (Overview)</olink> introduces the most common IPv6 addressing
formats: unicast site address and link-local address. This section includes
in-depth explanations of addressing formats that are not covered in detail
in <olink targetptr="ipv6-overview-7" remap="internal">Chapter&nbsp;3, Planning an IPv6 Addressing Scheme (Overview)</olink>:</para><itemizedlist><listitem><para><olink targetptr="ipv6-ref-107" remap="internal">6to4-Derived Addresses</olink></para>
</listitem><listitem><para><olink targetptr="ipv6-overview-201" remap="internal">IPv6 Multicast Addresses
in Depth</olink></para>
</listitem>
</itemizedlist><sect2 id="ipv6-ref-107"><title>6to4-Derived Addresses</title><para>If you plan to configure a 6to4 tunnel from a router or host endpoint,
you must advertise the 6to4 site prefix  in the <filename>/etc/inet/ndpd.conf</filename> file
on the endpoint system. For an introduction and tasks for configuring 6to4
tunnels, refer to <olink targetptr="ipv6-config-tasks-24" remap="internal">How to Configure
a 6to4 Tunnel</olink>. </para><para>The next figure shows the parts of a 6to4 site prefix.</para><figure id="ipv6-ref-fig-78"><title>Parts of a 6to4 Site Prefix</title><mediaobject><imageobject><imagedata entityref="six-4-prefix"/>
</imageobject><textobject><simpara>This figure shows the format of a 6to4 site prefix and
shows a site prefix example. The cited tables explain the information in the
figure.</simpara>
</textobject>
</mediaobject>
</figure><para>The next figure shows the parts of a subnet prefix for a 6to4 site,
such as you would include in the <filename>ndpd.conf</filename> file.</para><figure id="ipv6-ref-fig-79"><title>Parts of a 6to4 Subnet Prefix</title><mediaobject><imageobject><imagedata entityref="six-4-advert"/>
</imageobject><textobject><simpara>This figure shows the format of a 6to4 prefix and shows
a prefix example. The following context explains the information in the figure.</simpara>
</textobject>
</mediaobject>
</figure><para>This table explains the parts of a 6to4 subnet prefix.</para><informaltable frame="topbot"><tgroup cols="3" colsep="0" rowsep="0"><colspec colwidth="41.25*"/><colspec colwidth="31.25*"/><colspec colname="colspec0" colwidth="77.51*"/><thead><row rowsep="1"><entry><para>Part</para>
</entry><entry><para>Length</para>
</entry><entry><para>Definition</para>
</entry>
</row>
</thead><tbody><row><entry><para>Prefix</para>
</entry><entry><para>16 bits</para>
</entry><entry><para>6to4 prefix label 2002 (0x2002).</para>
</entry>
</row><row><entry><para>IPv4 address</para>
</entry><entry><para>32 bits</para>
</entry><entry><para>Unique IPv4 address that is already configured on the 6to4 interface.
For the advertisement, you specify the hexadecimal representation of the IPv4
address, rather than the IPv4 dotted-decimal representation.</para>
</entry>
</row><row><entry><para>Subnet ID</para>
</entry><entry><para>16 bits</para>
</entry><entry><para>Subnet ID, which must be a value that is unique for the link at your
6to4 site.</para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable><sect3 id="ipv6-ref-53"><title>6to4-Derived Addressing on a Host</title><para>When an IPv6 host receives the 6to4-derived prefix by way of a
router advertisement, the host  automatically reconfigures a 6to4-derived
address on an interface. The address has the following format:</para><screen><replaceable>prefix:IPv4-address:subnet-ID:interface-ID</replaceable>/64</screen><para>The output from the <command>ifconfig</command> <option>a</option> command
on a host with a 6to4 interface might resemble the following:</para><screen>qfe1:3: flags=2180841&lt;UP,RUNNING,MULTICAST,ADDRCONF,ROUTER,IPv6>
 mtu 1500 index 7
        inet6 2002:8192:56bb:9258:a00:20ff:fea9:4521/64 </screen><para>In this output, the 6to4-derived address follows <literal>inet6</literal>.</para><para>This table explains the parts of the 6to4-derived address.</para><informaltable frame="topbot"><tgroup cols="3" colsep="0" rowsep="0"><colspec colwidth="36.03*"/><colspec colname="colspec0" colwidth="23.32*"/><colspec colwidth="90.65*"/><thead><row rowsep="1"><entry><para>Address Part</para>
</entry><entry><para>Length</para>
</entry><entry><para>Definition</para>
</entry>
</row>
</thead><tbody><row><entry><para><replaceable>prefix</replaceable></para>
</entry><entry><para>16 bits</para>
</entry><entry><para><literal>2002</literal>, which is the 6to4 prefix</para>
</entry>
</row><row><entry><para><replaceable>IPv4-address</replaceable></para>
</entry><entry><para>32 bits</para>
</entry><entry><para><literal>8192:56bb</literal>, which is the IPv4 address, in hexadecimal
notation, for the 6to4 pseudo-interface that is configured on the 6to4 router</para>
</entry>
</row><row><entry><para><emphasis>subnet-ID</emphasis></para>
</entry><entry><para>16 bits</para>
</entry><entry><para><literal>9258</literal>, which is the address of the subnet of which
this host is a member</para>
</entry>
</row><row><entry><para><emphasis>interface-ID</emphasis></para>
</entry><entry><para>64 bits</para>
</entry><entry><para><literal>a00:20ff:fea9:4521</literal>, which is the interface ID of
the host interface that is configured for 6to4</para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect3>
</sect2><sect2 id="ipv6-overview-201"><title>IPv6 Multicast Addresses in Depth</title><para>The IPv6 multicast address provides a method for distributing identical
information or services to a defined group of interfaces, called the <emphasis>multicast
group</emphasis>. Typically, the interfaces of the multicast group are on
different nodes. An interface can belong to any number of multicast groups.
Packets sent to the multicast address go to all members of the multicast group.
For example, one use of multicast addresses is for broadcasting information,
similar to the capability of the IPv4 broadcast address.</para><para>The following table shows the format of the multicast address.</para><table frame="all" id="chapter1-tbl-22"><title>IPv6 Multicast Address Format</title><tgroup cols="7" colsep="1" rowsep="1"><colspec colname="colspec0" colwidth="77.70*"/><colspec colname="colspec1" colwidth="49.45*"/><colspec colname="colspec2" colwidth="58.35*"/><colspec colname="colspec4" colwidth="55.90*"/><colspec colname="colspec6" colwidth="59.52*"/><colspec colname="colspec5" colwidth="137.02*"/><colspec colname="colspec3" colwidth="129.05*"/><tbody><row><entry><para>8 bits</para>
</entry><entry><para>4 bits</para>
</entry><entry><para>4 bits</para>
</entry><entry><para>8 bits</para>
</entry><entry><para>8 bits</para>
</entry><entry><para>64 bits</para>
</entry><entry><para>32 bits</para>
</entry>
</row><row><entry><para><literal>11111111</literal></para>
</entry><entry><para><replaceable>FLGS</replaceable></para>
</entry><entry><para><literal>SCOP</literal></para>
</entry><entry><para><replaceable>Reserved</replaceable></para>
</entry><entry><para><replaceable>Plen</replaceable></para>
</entry><entry><para><replaceable>Network prefix</replaceable></para>
</entry><entry><para><replaceable>Group ID</replaceable></para>
</entry>
</row>
</tbody>
</tgroup>
</table><para>The following is a summary of the contents of each field.</para><itemizedlist><listitem><para><literal>11111111</literal> &ndash; Identifies the address
as a multicast address.</para>
</listitem><listitem><para><replaceable>FLGS</replaceable> &ndash; Set of the four flags
0,0,P,T. The first two flags must be zero. The P field has one of the following
values:</para><itemizedlist><listitem><para>0 = Multicast address that is not assigned based on the network
prefix</para>
</listitem><listitem><para>1 = Multicast address that is assigned based on the network
prefix</para>
</listitem>
</itemizedlist><para>If P is set to 1, then T must also be 1.</para>
</listitem><listitem><para><replaceable>Reserved</replaceable> - Reserved value of zero.</para>
</listitem><listitem><para><replaceable>Plen</replaceable> - Number of bits in the site
prefix that identify the subnet, for a multicast address that is assigned
based on a site prefix.</para>
</listitem><listitem><para><replaceable>Group ID</replaceable> - Identifier for the multicast
group, either permanent or dynamic.</para>
</listitem>
</itemizedlist><para>For complete details about the multicast format, refer to <ulink url="ftp://ftp.rfc-editor.org/in-notes/rfc3306.txt" type="text_url">RFC 3306,
"Unicast-Prefix-based IPv6 Multicast Addresses</ulink>.</para><para>Some IPv6 multicast addresses are permanently assigned by the Internet
Assigned Numbers Authority (IANA). Some examples are the All Nodes Multicast
Addresses and All Routers Multicast Addresses that are required by all IPv6
hosts and IPv6 routers. IPv6 multicast addresses can also be dynamically allocated.
For more information about the proper use of multicast addresses and groups,
see <ulink url="ftp://ftp.rfc-editor.org/in-notes/rfc3307.txt" type="text">RFC
3307, "Allocation Guidelines for IPv6 Multicast Addresses"</ulink>.</para>
</sect2>
</sect1><sect1 id="ipv6-ref-2"><title>IPv6 Packet Header Format</title><para>The IPv6 protocol defines a set of headers, including the basic IPv6
header and the IPv6 extension headers. The following figure shows the fields
that appear in the IPv6 header and the order in which the fields appear.</para><figure id="ipv6-ref-fig-80"><title>IPv6 Basic Header Format</title><mediaobject><imageobject><imagedata entityref="HeaderFormat.epsi"/>
</imageobject><textobject><simpara>Diagram shows that the 128 bit IPv6 header consist of
eight fields, including the source and destination addresses.</simpara>
</textobject>
</mediaobject>
</figure><para>The following list describes the function of each header field.</para><itemizedlist><listitem><para><emphasis role="strong">Version</emphasis> &ndash; 4-bit version
number of Internet Protocol = 6.</para>
</listitem><listitem><para><emphasis role="strong">Traffic class</emphasis> &ndash; 8-bit
traffic class field.</para>
</listitem><listitem><para><emphasis role="strong">Flow label</emphasis> &ndash; 20-bit
field. </para>
</listitem><listitem><para><emphasis role="strong">Payload length</emphasis> &ndash;
16-bit unsigned integer, which is the rest of the packet that follows the
IPv6 header, in octets.</para>
</listitem><listitem><para><emphasis role="strong">Next header</emphasis> &ndash; 8-bit
selector. Identifies the type of header that immediately follows the IPv6
header. Uses the same values as the IPv4 protocol field.</para>
</listitem><listitem><para><emphasis role="strong">Hop limit</emphasis> &ndash; 8-bit
unsigned integer. Decremented by one by each node that forwards the packet.
The packet is discarded if the hop limit is decremented to zero.</para>
</listitem><listitem><para><emphasis role="strong">Source address</emphasis> &ndash;
128 bits. The address of the initial sender of the packet. </para>
</listitem><listitem><para><emphasis role="strong">Destination address</emphasis> &ndash;
128 bits. The address of the intended recipient of the packet. The intended
recipient is not necessarily the recipient if an optional routing header is
present.</para>
</listitem>
</itemizedlist><sect2 id="ipv6-ref-3"><title>IPv6 Extension Headers</title><para>IPv6 options are placed in separate extension headers that are located
between the IPv6 header and the transport-layer header in a packet. Most IPv6
extension headers are not examined or processed by any router along a packet's
delivery path until the packet arrives at its final destination. This feature
provides a major improvement in router performance for packets that contain
options. In IPv4, the presence of any options requires the router to examine
all options.</para><para>Unlike IPv4 options, IPv6 extension headers can be of arbitrary
length. Also, the number of options that a packet carries is not limited to
40 bytes. This feature, in addition to the manner in which IPv6 options are
processed, permits IPv6 options to be used for functions that are not practical
in IPv4. </para><para>To improve performance when handling subsequent option headers, and
the transport protocol that follows, IPv6 options are always an integer multiple
of 8 octets long. The integer multiple of 8 octets retains the alignment of
subsequent headers.</para><para>The following IPv6 extension headers are currently defined:</para><itemizedlist><listitem><para><emphasis role="strong">Routing</emphasis> &ndash; Extended
routing, such as IPv4 loose source route</para>
</listitem><listitem><para><emphasis role="strong">Fragmentation</emphasis> &ndash; Fragmentation
and reassembly</para>
</listitem><listitem><para><emphasis role="strong">Authentication</emphasis> &ndash;
Integrity and authentication, and security </para>
</listitem><listitem><para><emphasis role="strong">Encapsulating Security Payload</emphasis> &ndash;
Confidentiality</para>
</listitem><listitem><para><emphasis role="strong">Hop-by-Hop options</emphasis> &ndash;
Special options that require hop-by-hop processing</para>
</listitem><listitem><para><emphasis role="strong">Destination options</emphasis> &ndash;
Optional information to be examined by the destination node</para>
</listitem>
</itemizedlist>
</sect2>
</sect1><sect1 id="ipv6-ref-81"><title>Dual-Stack Protocols</title><para>The term <emphasis>dual-stack</emphasis> normally refers to a complete
duplication of all levels in the protocol stack from applications to the network
layer. One example of complete duplication is a system that runs both the
OSI and TCP/IP protocols. </para><para>The Solaris OS is <emphasis>dual-stack</emphasis>, meaning that the
Solaris OS implements both IPv4 and IPv6 protocols. When you install the operating
system, you can choose to enable the IPv6 protocols in the IP layer or use
only the default IPv4 protocols. The remainder of the TCP/IP stack is identical.
Consequently, the same transport protocols, TCP UDP and SCTP, can run over
both IPv4 and IPv6. Also, the same applications can run over both IPv4 and
IPv6. <olink targetptr="ipv6-ref-fig-82" remap="internal">Figure 11&ndash;4</olink> shows how
the IPv4 and IPv6 protocols work as a dual-stack throughout the various layers
of the Internet protocol suite.</para><figure id="ipv6-ref-fig-82"><title>Dual-Stack Protocol Architecture</title><mediaobject><imageobject><imagedata entityref="dual.epsi"/>
</imageobject><textobject><simpara>Illustrates IPv4 and IPv6 protocols work as a dual-stack
through the various OSI layers.</simpara>
</textobject>
</mediaobject>
</figure><para>In the dual-stack scenario, subsets of both hosts and routers are upgraded
to support IPv6, in addition to IPv4. The dual-stack approach ensures that
the upgraded nodes can always interoperate with IPv4-only nodes by using IPv4.</para>
</sect1><sect1 id="ipv6-ref-83"><title>Solaris 10 IPv6 Implementation</title><para>This section describes the files, commands, and daemons that enable
IPv6 in the Solaris OS.</para><sect2 id="ipv6-ref-72"><title>IPv6 Configuration Files</title><para>This section describes the configuration files that are part of an IPv6
implementation:</para><itemizedlist><listitem><para><olink targetptr="ipv6-ref-10" remap="internal">ndpd.conf Configuration File</olink></para>
</listitem><listitem><para><olink targetptr="ipv6-ref-73" remap="internal">IPv6 Interface Configuration
File</olink></para>
</listitem><listitem><para><olink targetptr="ipv6-ref-16" remap="internal">/etc/inet/ipaddrsel.conf Configuration
File</olink></para>
</listitem>
</itemizedlist><sect3 id="ipv6-ref-10"><title><filename>ndpd.conf</filename> Configuration
File</title><para>The <filename>/etc/inet/ndpd.conf</filename> file is used to configure
options that are used by the <literal>in.ndpd</literal> Neighbor Discovery
daemon. For a router, you primarily use <filename>ndpd.conf</filename> to
configure the site prefix to be advertised to the link. For a host, you use <filename>ndpd.conf</filename> to turn off address autoconfiguration or to configure
temporary addresses.</para><para>The next table shows the keywords that are used in the <filename>ndpd.conf</filename> file.</para><table frame="topbot" pgwide="100" id="ipv6-ref-tbl-84"><title><filename>/etc/inet/ndpd.conf</filename> Keywords</title><tgroup cols="2" colsep="1" rowsep="1"><colspec colwidth="85.00*"/><colspec colwidth="311.00*"/><thead><row><entry><para>Variable</para>
</entry><entry><para>Description</para>
</entry>
</row>
</thead><tbody><row><entry><para><literal>ifdefault</literal></para>
</entry><entry><para>Specifies the router behavior for all interfaces. Use the following
syntax to set router parameters and corresponding values:</para><para><command>ifdefault [<replaceable>variable-value</replaceable>]</command></para>
</entry>
</row><row><entry><para><literal>prefixdefault</literal></para>
</entry><entry><para>Specifies the default behavior for prefix advertisements. Use the following
syntax to set router parameters and corresponding values:</para><para><command>prefixdefault [<replaceable>variable-value</replaceable>]</command></para>
</entry>
</row><row><entry><para><literal>if</literal></para>
</entry><entry><para>Sets per-interface parameters. Use the following syntax:</para><para><command>if <replaceable>interface</replaceable> [<replaceable>variable-value</replaceable>]</command></para>
</entry>
</row><row><entry><para><literal>prefix</literal></para>
</entry><entry><para>Advertises per-interface prefix information. Use the following syntax:</para><para><command>prefix <replaceable>prefix</replaceable>/<replaceable>length</replaceable> <replaceable>interface</replaceable> [<replaceable>variable-value</replaceable>]</command></para>
</entry>
</row>
</tbody>
</tgroup>
</table><para>In the <filename>ndpd.conf</filename> file, you use the keywords in
this table with a set of router configuration variables. These variables are
defined in detail in <ulink url="http://www.ietf.org/rfc/rfc2461.txt?number=2461" type="text_url">RFC 2461, Neighbor Discovery for IP Version 6 (IPv6)</ulink>. </para><para>The next table shows the variables for configuring an interface, along
with brief definitions.</para><table frame="topbot" pgwide="100" id="ipv6-ref-tbl-105"><title><filename>/etc/inet/ndpd.conf</filename> Interface Configuration Variables</title><tgroup cols="3" colsep="0" rowsep="0"><colspec colname="colspec1" colwidth="38.75*"/><colspec colname="colspec2" colwidth="34.97*"/><colspec colname="colspec0" colwidth="76.28*"/><thead><row rowsep="1"><entry><para>Variable</para>
</entry><entry><para>Default</para>
</entry><entry><para>Definition</para>
</entry>
</row>
</thead><tbody><row><entry><para><literal>AdvRetransTimer</literal></para>
</entry><entry><para>0</para>
</entry><entry><para>Specifies the value in the Retrans Timer field in the advertisement
messages sent by the router.</para>
</entry>
</row><row><entry><para><literal>AdvCurHopLimit</literal></para>
</entry><entry><para>Current diameter of the Internet</para>
</entry><entry><para>Specifies the value to be placed in the current hop limit in the advertisement
messages sent by the router.</para>
</entry>
</row><row><entry><para><literal>AdvDefaultLifetime</literal></para>
</entry><entry><para>3 + <literal>MaxRtrAdvInterval</literal></para>
</entry><entry><para>Specifies the default lifetime of the router advertisements.</para>
</entry>
</row><row><entry><para><literal>AdvLinkMTU</literal></para>
</entry><entry><para>0</para>
</entry><entry><para>Specifies a maximum transmission unit (MTU) value to be sent by the
router. The zero indicates that the router does not specify MTU options.</para>
</entry>
</row><row><entry><para><literal>AdvManaged Flag</literal></para>
</entry><entry><para>False</para>
</entry><entry><para>Indicates the value to be placed in the Manage Address Configuration
flag in the router advertisement.</para>
</entry>
</row><row><entry><para><literal>AdvOtherConfigFlag</literal></para>
</entry><entry><para>False</para>
</entry><entry><para>Indicates the value to be placed in the Other Stateful Configuration
flag in the router advertisement.</para>
</entry>
</row><row><entry><para><literal>AdvReachableTime</literal></para>
</entry><entry><para>0</para>
</entry><entry><para>Specifies the value in the Reachable Time field in the advertisement
messages sent by the router.</para>
</entry>
</row><row><entry><para><literal>AdvSendAdvertisements</literal></para>
</entry><entry><para>False</para>
</entry><entry><para>Indicates whether the node should send out advertisements and respond
to router solicitations. You need to explicitly set this variable to &ldquo;TRUE&rdquo;
in the <filename>ndpd.conf</filename> file to turn on router advertisement
functions. For more information, refer to <olink targetptr="ipv6-config-tasks-21" remap="internal">How to Configure an IPv6-Enabled Router</olink>.</para>
</entry>
</row><row><entry><para><literal>DupAddrDetect</literal></para><para><literal>Transmits</literal></para>
</entry><entry><para>1</para>
</entry><entry><para>Defines the number of consecutive neighbor solicitation  messages that
the Neighbor Discovery protocol should send during duplicate address detection
of the local node's address.</para>
</entry>
</row><row><entry><para><literal>MaxRtrAdvInterval</literal></para>
</entry><entry><para>600 seconds</para>
</entry><entry><para>Specifies the maximum time to wait between sending unsolicited multicast
advertisements.</para>
</entry>
</row><row><entry><para><literal>MinRtrAdvInterval</literal></para>
</entry><entry><para>200 seconds</para>
</entry><entry><para>Specifies the minimum time to wait between sending unsolicited multicast
advertisements.</para>
</entry>
</row><row><entry><para><literal>StatelessAddrConf</literal></para>
</entry><entry><para>True</para>
</entry><entry><para>Controls whether the node configures its IPv6 address through stateless
address autoconfiguration. If False is declared in <filename>ndpd.conf</filename>,
then the address must be manually configured. For more information, refer
to <olink targetptr="ipv6-config-tasks-70" remap="internal">How to Configure a User-Specified
IPv6 Token</olink>.</para>
</entry>
</row><row><entry><para><literal>TmpAddrsEnabled</literal></para>
</entry><entry><para>False</para>
</entry><entry><para>Indicates whether a temporary address should be created for all interfaces
or for a particular interface of a node. For more information, refer to <olink targetptr="ipv6-config-tasks-106" remap="internal">How to Configure a Temporary Address</olink>.</para>
</entry>
</row><row><entry><para><literal>TmpMaxDesyncFactor</literal></para>
</entry><entry><para>600 seconds</para>
</entry><entry><para>Specifies a random value to be subtracted from the preferred lifetime
variable <literal>TmpPreferredLifetime</literal> when <command>in.ndpd</command> starts.
The purpose of the <literal>TmpMaxDesyncFactor</literal> variable is to prevent
all the systems on your network from regenerating their temporary addresses
at the same time. <literal>TmpMaxDesyncFactor</literal> allows you to change
the upper bound on that random value.</para>
</entry>
</row><row><entry><para><literal>TmpPreferredLifetime</literal></para>
</entry><entry><para>False</para>
</entry><entry><para>Sets the preferred lifetime of a temporary address. For more information,
refer to <olink targetptr="ipv6-config-tasks-106" remap="internal">How to Configure a Temporary
Address</olink>.</para>
</entry>
</row><row><entry><para><literal>TmpRegenAdvance</literal></para>
</entry><entry><para>False</para>
</entry><entry><para>Specifies the lead time in advance of address deprecation for a temporary
address. For more information, refer to <olink targetptr="ipv6-config-tasks-106" remap="internal">How to Configure a Temporary Address</olink>.</para>
</entry>
</row><row><entry><para><literal>TmpValidLifetime</literal></para>
</entry><entry><para>False</para>
</entry><entry><para>Sets the valid lifetime for a temporary address. For more information,
refer to <olink targetptr="ipv6-config-tasks-106" remap="internal">How to Configure a Temporary
Address</olink>.</para>
</entry>
</row>
</tbody>
</tgroup>
</table><para>The next table shows the variables that are used for configuring IPv6
prefixes.</para><table frame="topbot" pgwide="100" id="ipv6-ref-tbl-106"><title><filename>/etc/inet/ndpd.conf</filename> Prefix Configuration Variables</title><tgroup cols="3" colsep="0" rowsep="0"><colspec colwidth="27.37*"/><colspec colwidth="19.29*"/><colspec colwidth="52.33*"/><thead><row rowsep="1"><entry><para>Variable</para>
</entry><entry><para>Default</para>
</entry><entry><para>Definition</para>
</entry>
</row>
</thead><tbody><row><entry><para><literal>AdvAutonomousFlag</literal></para>
</entry><entry><para>True</para>
</entry><entry><para>Specifies the value to be placed in the Autonomous Flag field in the
Prefix Information option. </para>
</entry>
</row><row><entry><para><literal>AdvOnLinkFlag</literal></para>
</entry><entry><para>True</para><para></para>
</entry><entry><para>Specifies the value to be placed in the on-link  flag (&ldquo;L-bit&rdquo;)
in the Prefix Information option.</para>
</entry>
</row><row><entry><para><literal>AdvPreferredExpiration</literal></para>
</entry><entry><para>Not set</para>
</entry><entry><para>Specifies the preferred expiration date of the prefix.</para>
</entry>
</row><row><entry><para><literal>AdvPreferredLifetime</literal></para>
</entry><entry><para>604800 seconds</para>
</entry><entry><para>Specifies the value to be placed in the preferred lifetime in the Prefix
Information option. </para>
</entry>
</row><row><entry><para><literal>AdvValidExpiration</literal></para>
</entry><entry><para>Not set</para>
</entry><entry><para>Specifies the valid expiration date of the prefix.</para>
</entry>
</row><row><entry><para><literal>AdvValidLifetime</literal></para>
</entry><entry><para>2592000 seconds</para>
</entry><entry><para>Specifies the valid lifetime of the prefix that is being configured.</para>
</entry>
</row>
</tbody>
</tgroup>
</table><example id="eobnx"><title><filename>/etc/inet/ndpd.conf</filename> File</title><para>The following example shows how the keywords and configuration variables
are used in the <filename>ndpd.conf</filename> file. Remove the comment (#)
to activate the variable.</para><screen># ifdefault      [<replaceable>variable-value</replaceable> ]*
# prefixdefault [<replaceable>variable-value</replaceable> <replaceable></replaceable>]*
# if <replaceable>ifname</replaceable>   [<replaceable>variable-value</replaceable> <replaceable></replaceable>]*
# prefix <replaceable>prefix</replaceable>/<replaceable>length</replaceable> <replaceable>ifname</replaceable>
#
#  Per interface configuration variables
#
#DupAddrDetectTransmits
#AdvSendAdvertisements
#MaxRtrAdvInterval
#MinRtrAdvInterval
#AdvManagedFlag
#AdvOtherConfigFlag
#AdvLinkMTU
#AdvReachableTime
#AdvRetransTimer
#AdvCurHopLimit
#AdvDefaultLifetime
#
# Per Prefix:  AdvPrefixList configuration variables
#
#
#AdvValidLifetime
#AdvOnLinkFlag
#AdvPreferredLifetime
#AdvAutonomousFlag
#AdvValidExpiration
#AdvPreferredExpiration

ifdefault AdvReachableTime 30000 AdvRetransTimer 2000
prefixdefault AdvValidLifetime 240m AdvPreferredLifetime 120m

if qe0 AdvSendAdvertisements 1
prefix 2:0:0:56::/64 qe0
prefix fec0:0:0:56::/64 qe0

if qe1 AdvSendAdvertisements 1
prefix 2:0:0:55::/64 qe1
prefix fec0:0:0:56::/64 qe1

if hme1 AdvSendAdvertisements 1
prefix  2002:8192:56bb:1::/64 qfe0 

if hme1 AdvSendAdvertisements 1
prefix  2002:8192:56bb:2::/64 hme1</screen>
</example>
</sect3><sect3 id="ipv6-ref-73"><title>IPv6 Interface Configuration File</title><para>IPv6 uses the <filename>/etc/hostname6.</filename><replaceable>interface</replaceable> file
at start up to automatically define IPv6 logical interfaces. When you select
the IPv6 Enabled option during Solaris installation, the installation program
creates an <filename>/etc/hostname6.</filename><replaceable>interface</replaceable> file
for the primary network interface, in addition to the <filename>/etc/hostname.</filename><replaceable>interface</replaceable> file.</para><para>If more than one physical interface is detected during installation,
you are prompted as to whether you want to configure these interfaces. The
installation program creates IPv4 physical interface configuration files and
IPv6 logical interface configuration files for each additional interface that
you indicate. </para><para>As with IPv4 interfaces, you can also configure IPv6 interfaces manually,
after Solaris installation. You create<filename>/etc/hostname6.</filename><replaceable>interface</replaceable> files for the new interfaces. For instructions for
manually configuring interfaces, refer to  <olink targetptr="fwawf" remap="internal">Chapter&nbsp;6,
Administering Network Interfaces (Tasks)</olink>.</para><para>The network interface configuration file names have the following syntax:</para><screen>hostname.<replaceable>interface</replaceable>
hostname6.<replaceable>interface</replaceable></screen><para>The <replaceable>interface</replaceable> variable has the following
syntax:</para><screen><replaceable>dev</replaceable>[.<replaceable>module</replaceable>[.<replaceable>module</replaceable> ...]]<replaceable>PPA</replaceable></screen><variablelist><varlistentry><term><replaceable>dev</replaceable></term><listitem><para>Indicates a network interface device. The device can be a
physical network interface, such as <literal>eri</literal> or <literal>qfe</literal>,
or a logical interface, such as a tunnel. See <olink targetptr="ipv6-ref-73" remap="internal">IPv6
Interface Configuration File</olink> for more details. </para>
</listitem>
</varlistentry><varlistentry><term><replaceable>Module</replaceable></term><listitem><para>Lists one or more <literal>STREAMS</literal> modules to be
pushed onto the device when the device is plumbed.</para>
</listitem>
</varlistentry><varlistentry><term><replaceable>PPA</replaceable></term><listitem><para>Indicates the physical point of attachment.</para>
</listitem>
</varlistentry>
</variablelist><para>The syntax [.[.]] is also accepted.</para><example id="eoboa"><title>IPv6 Interface Configuration Files</title><para>The following are examples of valid IPv6 configuration file names:</para><screen>hostname6.qfe0
hostname.ip.tun0
hostname.ip6.tun0
hostname6.ip6to4tun0
hostname6.ip.tun0
hostname6.ip6.tun0</screen>
</example>
</sect3><sect3 id="ipv6-ref-16"><title><filename>/etc/inet/ipaddrsel.conf</filename> Configuration
File</title><para>The <filename>/etc/inet/ipaddrsel.conf</filename> file contains the
IPv6 default address selection policy table. When you install the Solaris
OS with IPv6 enabled, this file contains the contents that are shown in <olink targetptr="ipv6-admintasks-tbl-75" remap="internal">Table 11&ndash;5</olink>. </para><para>You can edit the contents of <filename>/etc/inet/ipaddrsel.conf</filename>.
However, in most cases, you should refrain from modifying this file. If modification
is necessary, refer to the procedure <olink targetptr="ipv6-admintasks-77" remap="internal">How
to Administer the IPv6 Address Selection Policy Table</olink>. For more information
on <filename>ippaddrsel.conf</filename>, refer to <olink targetptr="euaza" remap="internal">Reasons
for Modifying the IPv6 Address Selection Policy Table</olink> and the <olink targetdoc="refman4" targetptr="ipaddrsel.conf-4" remap="external"><citerefentry><refentrytitle>ipaddrsel.conf</refentrytitle><manvolnum>4</manvolnum></citerefentry></olink> man page.</para>
</sect3>
</sect2><sect2 id="ipv6-ref-74"><title>IPv6-Related Commands</title><para>This section describes commands that are added with the Solaris IPv6
implementation. The text also describes modifications to existing commands
to support IPv6. </para><sect3 id="ipv6-ref-108"><title><command>ipaddrsel</command> Command</title><para>The <command>ipaddrsel</command> command enables you to modify the IPv6
default address selection policy table.</para><para>The Solaris kernel uses the IPv6 default address selection policy table
to perform destination address ordering and source address selection for an
IPv6 packet header. The <filename>/etc/inet/ipaddrsel.conf</filename> file
contains the policy table. </para><para>The following table lists the default address formats and their priorities
for the policy table. You can find technical details for IPv6 address selection
in the <olink targetdoc="refman7" targetptr="inet6-7p" remap="external"><citerefentry><refentrytitle>inet6</refentrytitle><manvolnum>7P</manvolnum></citerefentry></olink> man
page.</para><table frame="topbot" id="ipv6-admintasks-tbl-75"><title>IPv6 Address Selection
Policy Table</title><tgroup cols="3" colsep="0" rowsep="0"><colspec colname="colspec0" colwidth="33*"/><colspec colname="colspec1" colwidth="33*"/><colspec colname="colspec2" colwidth="33*"/><thead><row rowsep="1"><entry><para>Prefix</para>
</entry><entry><para>Precedence</para>
</entry><entry><para>Definition</para>
</entry>
</row>
</thead><tbody><row><entry><para><literal>::1/128</literal></para>
</entry><entry><para>50</para>
</entry><entry><para>Loopback</para>
</entry>
</row><row><entry><para><literal>::/0</literal></para>
</entry><entry><para>40</para>
</entry><entry><para>Default</para>
</entry>
</row><row><entry><para><literal>2002::/16</literal></para>
</entry><entry><para>30</para>
</entry><entry><para>6to4</para>
</entry>
</row><row><entry><para><literal>::/96</literal></para>
</entry><entry><para>20</para>
</entry><entry><para>IPv4 Compatible</para>
</entry>
</row><row><entry><para><literal>::ffff:0:0/96</literal></para>
</entry><entry><para>10</para>
</entry><entry><para>IPv4</para>
</entry>
</row>
</tbody>
</tgroup>
</table><para>In this table, IPv6 prefixes (<literal>::1/128</literal> and <literal>::/0</literal>)
take precedence over 6to4 addresses (<literal>2002::/16</literal>) and IPv4
addresses (<literal>::/96</literal> and <literal>::ffff:0:0/96</literal>).
Therefore, by default, the kernel selects the global IPv6 address of the interface
for packets going to another IPv6 destination. The IPv4 address of the interface
has a lower priority, particularly for packets going to an IPv6 destination.
Given the selected IPv6 source address, the kernel also uses the IPv6 format
for the destination address.</para><sect4 id="euaza"><title>Reasons for Modifying the IPv6 Address Selection
Policy Table</title><para>Under most instances, you do not need to change the IPv6 default address
selection policy table. If you do need to administer the policy table, you
use the <command>ipaddrsel</command> command.</para><para>You might want to modify the policy table under the following circumstances:</para><itemizedlist><listitem><para>If the system has an interface that is used for a 6to4 tunnel,
you can give higher priority to 6to4 addresses.</para>
</listitem><listitem><para>If you want a particular source address to be used only in
communications with a particular destination address, you can add these addresses
to the policy table. Then, you can use <command>ifconfig</command> to flag
these addresses as preferred. </para>
</listitem><listitem><para>If you want IPv4 addresses to take precedence over IPv6 addresses,
you can change the priority of <literal>::ffff:0:0/96</literal> to a higher
number.</para>
</listitem><listitem><para>If you need to assign a higher priority to deprecated addresses,
you can add the deprecated address to the policy table. For example, site-local
addresses are now deprecated in IPv6. These addresses have the prefix <literal>fec0::/10</literal>. You can change the policy table to give higher priority to site-local
addresses.</para>
</listitem>
</itemizedlist><para>For details about the <command>ipaddrsel</command> command, refer to
the <command>ipaddrsel</command>(1M) man page.</para>
</sect4>
</sect3><sect3 id="ipv6-ref-17"><title><command>6to4relay</command> Command</title><para><emphasis>6to4 tunneling</emphasis> enables communication between
isolated 6to4 sites. However, to transfer packets with a native, non-6to4
IPv6 site, the 6to4 router must establish a tunnel with a 6to4 relay router.
 The <emphasis>6to4 relay router</emphasis> then forwards the 6to4 packets
to the IPv6 network and ultimately, to the native IPv6 site. If your 6to4-enabled
site must exchange data with a native IPv6 site, you use the <command>6to4relay</command> command
to enable the appropriate tunnel.</para><para>Because the use of relay routers is insecure, tunneling to a relay router
is disabled by default in the Solaris OS. Carefully consider the issues that
are involved in creating a tunnel to a 6to4 relay router before deploying
this scenario. For detailed information on 6to4 relay routers, refer to <olink targetptr="ipv6-ref-56" remap="internal">Considerations for Tunnels to a 6to4 Relay Router</olink>.
If you decide to enable 6to4 relay router support, you can find the related
procedures in <olink targetptr="ipv6-config-tasks-24" remap="internal">How to Configure a 6to4
Tunnel</olink>.</para><sect4 id="ipv6-ref-18"><title>Syntax of <command>6to4relay</command></title><para>The <command>6to4relay</command> command has the following syntax:</para><screen>6to4relay -e [-a <emphasis>IPv4-address</emphasis>] -d -h</screen><variablelist><varlistentry><term><option>e</option></term><listitem><para>Enables support for tunnels between the 6to4 router and an
anycast 6to4 relay router. The tunnel endpoint address is then set to <literal>192.88.99.1</literal>, the default address for the anycast group of 6to4 relay routers.</para>
</listitem>
</varlistentry><varlistentry><term><option>a</option> <replaceable>IPv4-address</replaceable></term><listitem><para>Enables support for tunnels between the 6to4 router and a
6to4 relay router with the specified <replaceable>IPv4-address</replaceable>.</para>
</listitem>
</varlistentry><varlistentry><term><option>d</option></term><listitem><para>Disables support for tunneling to the 6to4 relay router, the
default for the Solaris OS.</para>
</listitem>
</varlistentry><varlistentry><term><option>h</option></term><listitem><para>Displays help for <command>6to4relay</command>.</para>
</listitem>
</varlistentry>
</variablelist><para>For more information, refer to the <command>6to4relay</command>(1M)
man page.</para><example id="eobon"><title>Default Status Display of 6to4 Relay Router Support</title><para>The <command>6to4relay</command> command, without arguments, shows
the current status of 6to4 relay router support. This example shows the default
for the Solaris OS implementation of IPv6.</para><screen># <userinput>/usr/sbin/6to4relay</userinput>
6to4relay:6to4 Relay Router communication support is disabled</screen>
</example><example id="eobog"><title>Status Display With 6to4 Relay Router Support Enabled</title><para>If relay router support is enabled, <command>6to4relay</command> displays
the following output:</para><screen># <userinput>/usr/sbin/6to4relay</userinput>
6to4relay:6to4 Relay Router communication support is enabled
IPv4 destination address of Relay Router=192.88.99.1</screen>
</example><example id="eobok"><title>Status Display With a 6to4 Relay Router Specified</title><para>If you specify the <option>a</option> option and an IPv4 address to
the <command>6to4relay</command> command, the IPv4 address that you give with <option>a</option> is displayed instead of <literal>192.88.99.1</literal>.</para><para><command>6to4relay</command> does not report successful execution of
the <option>d</option>, <option>e</option>, and<option>a</option> <replaceable>IPv4
address</replaceable> options. However, <command>6to4relay</command> does
display any error messages that might be generated when you run these options.</para>
</example>
</sect4>
</sect3><sect3 id="ipv6-ref-21"><title><command>ifconfig</command> Command Extensions
for IPv6 Support</title><para>The <filename>ifconfig</filename> command enables IPv6 interfaces
and the tunneling module to be plumbed. <command>ifconfig</command> uses an
extended set of ioctls to configure both IPv4 and IPv6 network interfaces.
The following describes <command>ifconfig</command> options that support IPv6
operations. See <olink targetptr="ipconfig-141" remap="internal">Monitoring the Interface Configuration
With the ifconfig Command</olink> for a range of both IPv4 and IPv6 tasks
that involve <command>ifconfig</command>.</para><variablelist><varlistentry><term><command>index</command></term><listitem><para>Sets the interface index.</para>
</listitem>
</varlistentry><varlistentry><term><command>tsrc</command>/<command>tdst</command></term><listitem><para>Sets the tunnel source or destination.</para>
</listitem>
</varlistentry><varlistentry><term><command>addif</command></term><listitem><para>Creates the next available logical interface.</para>
</listitem>
</varlistentry><varlistentry><term><command>removeif</command></term><listitem><para>Deletes a logical interface with a specific IP address.</para>
</listitem>
</varlistentry><varlistentry><term><command>destination</command></term><listitem><para>Sets the point-to-point destination address for an interface.</para>
</listitem>
</varlistentry><varlistentry><term><command>set</command></term><listitem><para>Sets an address, netmask, or both for an interface.</para>
</listitem>
</varlistentry><varlistentry><term><command>subnet</command></term><listitem><para>Sets the subnet address of an interface.</para>
</listitem>
</varlistentry><varlistentry><term><command>xmit</command>/<command>-xmit</command></term><listitem><para>Enables or disables packet transmission on an interface.</para>
</listitem>
</varlistentry>
</variablelist><para><olink targetptr="ipv6-config-tasks-1" remap="internal">Chapter&nbsp;7, Enabling IPv6 on a Network (Tasks)</olink> provides IPv6 configuration procedures.</para><example id="eobol"><title>Adding a Logical IPv6 Interface With the <option>addif</option> Option of the <command>ifconfig</command> Command</title><para>The following form of the <command>ifconfig</command> command creates
the <literal>hme0:3</literal> logical interface:</para><screen># <userinput>ifconfig hme0 inet6 addif up</userinput>
Created new logical interface hme0:3</screen><para>This form of <command>ifconfig</command> verifies the creation of the
new interface:</para><screen># <userinput>ifconfig hme0:3 inet6</userinput>
hme0:3: flags=2000841&lt;UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 2
		inet6  inet6 fe80::203:baff:fe11:b321/10</screen>
</example><example id="eobob"><title>Removing a Logical IPv6 Interface With the <option>removeif</option> Option of the <command>ifconfig</command> Command</title><para>The following form of the <command>ifconfig</command> command removes
the <literal>hme0:3</literal> logical interface.</para><screen># <userinput>ifconfig hme0:3 inet6 down</userinput>

# <userinput>ifconfig hme0 inet6 removeif 1234::5678</userinput></screen>
</example><example id="ipv6-ref-ex-86"><title>Using <command>ifconfig</command> to Configure
an IPv6 Tunnel Source</title><screen># <userinput>ifconfig ip.tun0 inet6 plumb index 13</userinput></screen><para>Opens the tunnel to be associated with the physical interface name.</para><screen># <userinput>ifconfig ip.tun0 inet6</userinput>
ip.tun0: flags=2200850&lt;POINTOPOINT,RUNNING,MULTICAST,NONUD,
#IPv6> mtu 1480 index 13
		inet tunnel src 0.0.0.0 
		inet6 fe80::/10 --> :: </screen><para>Configures the streams that are needed for TCP/IP to use the tunnel
device and report the status of the device.</para><screen># <userinput>ifconfig ip.tun0 inet6 tsrc 120.46.86.158 tdst 120.46.86.122</userinput></screen><para>Configures the source and the destination address for the tunnel.</para><screen># <userinput>ifconfig ip.tun0 inet6</userinput>
ip.tun0: flags=2200850&lt;POINTOPOINT,RUNNING,MULTICAST,NONUD,
IPv6> mtu 1480 index 13
		inet tunnel src 120.46.86.158  tunnel dst 120.46.86.122
		inet6 fe80::8192:569e/10 --> fe80::8192:567a</screen><para>Reports the new status of the device after the configuration.</para>
</example><example id="ipv6-ref-ex-88"><title>Configuring a 6to4 Tunnel Through <command>ifconfig</command> (Long Form)</title><para>This example of a 6to4 pseudo-interface configuration uses the subnet
ID of 1 and specifies the host ID, in hexadecimal form.</para><screen># <userinput>ifconfig ip.6to4tun0 inet6 plumb</userinput>
# <userinput>ifconfig ip.6to4tun0 inet tsrc 129.146.86.187 \
2002:8192:56bb:1::8192:56bb/64 up</userinput></screen><screen># <userinput>ifconfig ip.6to4tun0 inet6</userinput>
ip.6to4tun0: flags=2200041&lt;UP,RUNNING,NONUD,IPv6>mtu 1480 index 11
        inet tunnel src 129.146.86.187 
        tunnel hop limit 60 
        inet6 2002:8192:56bb:1::8192:56bb/64 </screen>
</example><example id="ipv6-ref-ex-89"><title>Configuring a 6to4 Tunnel Through <command>ifconfig</command> (Short Form)</title><para>This example shows the short form for configuring a 6to4 tunnel.</para><screen># <userinput>ifconfig ip.6to4tun0 inet6 plumb</userinput>
# <userinput>ifconfig ip.6to4tun0 inet tsrc 129.146.86.187 up</userinput></screen><screen># <userinput>ifconfig ip.6to4tun0 inet6</userinput>
ip.6to4tun0: flags=2200041&lt;UP,RUNNING,NONUD,IPv6>mtu 1480 index 11
        inet tunnel src 129.146.86.187 
        tunnel hop limit 60 
        inet6 2002:8192:56bb::1/64 </screen>
</example>
</sect3><sect3 id="ipv6-ref-23"><title><command>netstat</command> Command Modifications
for IPv6 Support</title><para>The <command>netstat</command> command displays both IPv4 and
IPv6 network status. You can choose which protocol information to display
by setting the <literal>DEFAULT_IP</literal> value in the <filename>/etc/default/inet_type</filename> file or by using the <option>f</option> command-line option. With
a permanent setting of <literal>DEFAULT_IP</literal>, you can ensure that <command>netstat</command> displays only IPv4 information. You can override this setting
by using the <option>f</option> option. For more information on the <filename>inet_type</filename> file, see the <olink targetdoc="refman4" targetptr="inet-type-4" remap="external"><citerefentry><refentrytitle>inet_type</refentrytitle><manvolnum>4</manvolnum></citerefentry></olink> man
page.</para><para>The <option>p</option> option of the <literal>netstat</literal> command
displays the net-to-media table, which is the ARP table for IPv4 and the neighbor
cache for IPv6. See the <olink targetdoc="refman1m" targetptr="netstat-1m" remap="external"><citerefentry><refentrytitle>netstat</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> man
page for details. See <olink targetptr="ipv6-admintasks-16" remap="internal">How to Display
the Status of Sockets</olink> for descriptions of procedures that use this
command.</para>
</sect3><sect3 id="ipv6-ref-24"><title><literal>snoop</literal> Command Modifications
for IPv6 Support</title><para>The <command>snoop</command> command can capture both IPv4 and
IPv6 packets. This command can display IPv6 headers, IPv6 extension headers,
ICMPv6 headers, and Neighbor Discovery protocol data. By default, the <command>snoop</command> command displays both IPv4 and IPv6 packets. If you specify the <literal>ip</literal> or <literal>ip6</literal> protocol keyword, the <command>snoop</command> command
displays only IPv4 or IPv6 packets. The IPv6 filter option enables you to
filter through all packets,  both IPv4 and IPv6, displaying only the IPv6
packets. See the <olink targetdoc="refman1m" targetptr="snoop-1m" remap="external"><citerefentry><refentrytitle>snoop</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> man
page for details. See <olink targetptr="ipv6-admintasks-10" remap="internal">How to Monitor
IPv6 Network Traffic</olink> for procedures that use the <command>snoop</command> command.</para>
</sect3><sect3 id="ipv6-ref-25"><title><command>route</command> Command Modifications
for IPv6 Support</title><para>The <command>route</command> command operates on both IPv4 and
IPv6 routes, with IPv4 routes as the default. If you use the <option>inet6</option> option
on the command line immediately after the <command>route</command> command,
operations are performed on IPv6 routes. See the <olink targetdoc="refman1m" targetptr="route-1m" remap="external"><citerefentry><refentrytitle>route</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> man page for details. </para>
</sect3><sect3 id="ipv6-ref-26"><title><command>ping</command> Command Modifications
for IPv6 Support</title><para>The <command>ping</command> command can use both IPv4 and IPv6
protocols to probe target hosts. Protocol selection depends on the addresses
that are returned by the name server for the specific target host. By default,
if the name server returns an IPv6 address for the target host, the <command>ping</command> command uses the IPv6 protocol. If the server returns only an IPv4
address, the <command>ping</command> command uses the IPv4 protocol. You can
override this action by using the <option>A</option> command-line option to
specify which protocol to use.</para><para>For detailed information, see the <olink targetdoc="refman1m" targetptr="ping-1m" remap="external"><citerefentry><refentrytitle>ping</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> man page. For procedures that use <command>ping</command>, refer to <olink targetptr="ipv6-admintasks-53" remap="internal">Probing Remote
Hosts With the ping Command</olink>.</para>
</sect3><sect3 id="ipv6-ref-27"><title><command>traceroute</command> Command Modifications
for IPv6 Support</title><para>You can use the <command>traceroute</command> command to trace
both the IPv4 and IPv6 routes to a specific host. From a protocol perspective, <command>traceroute</command> uses the same algorithm as <command>ping</command>. Use
the <option>A</option> command-line option to override this selection. You
can trace each individual route to every address of a multihomed host by using
the <option>a</option> command-line option. </para><para>For detailed information, see the <olink targetdoc="refman1m" targetptr="traceroute-1m" remap="external"><citerefentry><refentrytitle>traceroute</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> man page. For procedures
that use <command>traceroute</command>, refer to <olink targetptr="ipv6-admintasks-72" remap="internal">Displaying Routing Information With the traceroute
Command</olink>.</para>
</sect3>
</sect2><sect2 id="ipv6-ref-75"><title>IPv6-Related Daemons</title><para>This section discusses the IPv6-related daemons.</para><sect3 id="ipv6-ref-28"><title><filename>in.ndpd</filename> Daemon, for Neighbor
Discovery</title><para>The<command>in.ndpd</command> daemon implements the IPv6 Neighbor
Discovery protocol and router discovery. The daemon also implements address
autoconfiguration for IPv6. The following shows the supported options of <command>in.ndpd</command>.</para><variablelist><varlistentry><term><option>d</option></term><listitem><para>Turns on debugging.</para>
</listitem>
</varlistentry><varlistentry><term><option>D</option></term><listitem><para>Turns on debugging for specific events.</para>
</listitem>
</varlistentry><varlistentry><term><option>f</option></term><listitem><para>Specifies a file to read configuration data from,  instead
of the default <filename>/etc/inet/ndpd.conf</filename> file.</para>
</listitem>
</varlistentry><varlistentry><term><option>I</option></term><listitem><para>Prints related information for each interface.</para>
</listitem>
</varlistentry><varlistentry><term><option>n</option></term><listitem><para>Does not loop back router advertisements.</para>
</listitem>
</varlistentry><varlistentry><term><option>r</option></term><listitem><para>Ignores received packets.</para>
</listitem>
</varlistentry><varlistentry><term><option>v</option></term><listitem><para>Specifies verbose mode, reporting various types of diagnostic
messages.</para>
</listitem>
</varlistentry><varlistentry><term><option>t</option></term><listitem><para>Turns on packet tracing.</para>
</listitem>
</varlistentry>
</variablelist><para>The <command>in.ndpd</command> daemon is controlled by parameters
that are set in the <filename>/etc/inet/ndpd.conf</filename> configuration
file and any applicable parameters in the <filename>/var/inet/ndpd_state.</filename><replaceable>interface</replaceable> startup file.</para><para>When the <filename>/etc/inet/ndpd.conf</filename> file exists, the file
is parsed and used to configure a node as a router. <olink targetptr="ipv6-ref-tbl-84" remap="internal">Table 11&ndash;2</olink> lists the valid keywords
that might appear in this file. When a host is booted, routers might not be
immediately available. Advertised packets by the router might be dropped.
Also, advertised packets might not reach the host. </para><para>The <filename>/var/inet/ndpd_state</filename>.<replaceable>interface</replaceable> file
is a state file. This file is updated periodically by each node. When the
node fails and is restarted, the node can configure its interfaces in the
absence of routers. This file contains the interface address, the last time
that the file was updated, and how long the file is valid. This file also
contains other parameters that are &ldquo;learned&rdquo; from previous router
advertisements.</para><note><para>You do not need to alter the contents of state files. The <command>in.ndpd</command> daemon automatically maintains state files.</para>
</note><para>See the <olink targetdoc="refman1m" targetptr="in.ndpd-1m" remap="external"><citerefentry><refentrytitle>in.ndpd</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> man
page and the <olink targetdoc="refman4" targetptr="ndpd.conf-4" remap="external"><citerefentry><refentrytitle>ndpd.conf</refentrytitle><manvolnum>4</manvolnum></citerefentry></olink> man
page for lists of configuration variables and allowable values.</para>
</sect3><sect3 id="ipv6-ref-31"><title><filename>in.ripngd</filename> Daemon, for
IPv6 Routing</title><para>The <filename>in.ripngd</filename> daemon implements the Routing
Information Protocol next-generation for IPv6 routers (RIPng). RIPng defines
the IPv6 equivalent of RIP. When you configure an IPv6 router with the <command>routeadm</command> command and turn on IPv6 routing, the <command>in.ripngd</command> daemon
implements RIPng on the router.</para><para>The following shows the supported options of RIPng.</para><variablelist><varlistentry><term><option>p</option> <replaceable>n</replaceable></term><listitem><para><replaceable>n</replaceable> specifies the alternate port
number that is used to send or receive RIPnG packets.</para>
</listitem>
</varlistentry><varlistentry><term><option>q</option></term><listitem><para>Suppresses routing information.</para>
</listitem>
</varlistentry><varlistentry><term><option>s</option></term><listitem><para>Forces routing information even if  the daemon is acting as
a router.</para>
</listitem>
</varlistentry><varlistentry><term><option>P</option></term><listitem><para>Suppresses use of poison reverse.</para>
</listitem>
</varlistentry><varlistentry><term><option>S</option></term><listitem><para>If <filename>in.ripngd</filename> does not act as a router,
the daemon enters only a default route for each router.</para>
</listitem>
</varlistentry>
</variablelist>
</sect3><sect3 id="fapbh"><title><command>inetd</command> Daemon and IPv6 Services</title><para>An IPv6-enabled server application can handle both IPv4 requests and
IPv6 requests, or IPv6 requests only. The server always handles  requests
through an IPv6 socket. Additionally, the server uses the same protocol that
the corresponding client uses. To add or modify a service for IPv6, use the
commands available from the Service Management Facility (SMF).</para><itemizedlist><listitem><para>For information about the SMF commands, refer to <olink targetdoc="sysadv1" targetptr="dzhqq" remap="external"><citetitle remap="section">SMF Command-Line Administrative Utilities</citetitle> in <citetitle remap="book">System Administration Guide: Basic Administration</citetitle></olink>.</para>
</listitem><listitem><para>For an example task that uses SMF to configure an IPv4 service
manifest that runs over SCTP, refer to <olink targetptr="ermig" remap="internal">How to Add
Services That Use the SCTP Protocol</olink>.</para>
</listitem>
</itemizedlist><para>To configure an IPv6 service, you must ensure that the <literal>proto</literal> field
value in the <command>inetadm</command> profile for that service lists the
appropriate value:</para><itemizedlist><listitem><para>For a service that handles both IPv4 and IPv6 requests, choose <literal>tcp6</literal>, <literal>udp6</literal>, or <literal>sctp</literal>. A <literal>proto</literal> value  of <literal>tcp6</literal>, <literal>udp6</literal>, or <literal>sctp6</literal> causes <command>inetd</command> to pass on an IPv6 socket
to the  server. The server contains an IPv4-mapped address in case a IPv4
client  has a request.</para>
</listitem><listitem><para>For a service that handles only IPv6 requests, choose <literal>tcp6only</literal> or <literal>udp6only</literal>. With either of these values for <literal>proto</literal>, <command>inetd</command>  passes the server an IPv6 socket.</para>
</listitem>
</itemizedlist><para>If you replace a Solaris command with another implementation, you must
verify that the implementation of that service supports IPv6. If the implementation
does not support IPv6, then you must specify the <literal>proto</literal> value
as either <literal>tcp</literal>, <literal>udp</literal>, or <literal>sctp</literal>.</para><para>Here is a profile that results from running <command>inetadm</command> for
an <literal>echo</literal> service manifest that supports both IPv4 and IPv6
and runs over SCTP:</para><screen># inetadm -l svc:/network/echo:sctp_stream
	SCOPE    NAME=VALUE	  name="echo"
	         endpoint_type="stream"
	         proto="sctp6"
	         isrpc=FALSE
	         wait=FALSE
	         exec="/usr/lib/inet/in.echod -s"
	         user="root"
	default  bind_addr=""
	default  bind_fail_max=-1
	default  bind_fail_interval=-1
	default  max_con_rate=-1
	default  max_copies=-1
	default  con_rate_offline=-1
	default  failrate_cnt=40
	default  failrate_interval=60
	default  inherit_env=TRUE
	default  tcp_trace=FALSE
	default  tcp_wrappers=FALSE</screen><para>To change the value of the <literal>proto</literal> field, use the following
syntax:</para><screen># <userinput>inetadm -m <replaceable>FMRI</replaceable> proto="<replaceable>transport-protocols</replaceable>"</userinput></screen><para>All servers that are provided with Solaris software require only one
profile entry that specifies <literal>proto</literal> as <literal>tcp6</literal>, <literal>udp6</literal>, or <literal>sctp6</literal>. However, the remote shell server
(<literal>shell</literal>)  and the remote execution server (<literal>exec</literal>)
now are composed of a single service  instance, which requires a <literal>proto</literal> value
containing both the <literal>tcp</literal> and <literal>tcp6only</literal> values.
 For example, to set the <literal>proto</literal> value for <command>shell,</command> you
would issue the following command:</para><screen># <userinput>inetadm -m network/shell:default proto="tcp,tcp6only"</userinput></screen><para>See IPv6 extensions to the Socket API in <olink targetdoc="netproto" remap="external"><citetitle remap="book">Programming Interfaces Guide</citetitle></olink> for more details
on writing IPv6-enabled servers that use sockets.</para><sect4 id="fapcd"><title>Considerations When Configuring a Service for IPv6</title><para>When you add or modify a service for IPv6, keep in mind the following
caveats:</para><itemizedlist><listitem><para>You need to specify the <literal>proto</literal> value as <literal>tcp6</literal>, <literal>sctp6</literal>, or <literal>udp6</literal> to enable
both IPv4 or IPv6 connections. If you specify the value for <literal>proto</literal> as <literal>tcp</literal>, <literal>sctp</literal>, or <literal>udp</literal>, the service
uses only IPv4.</para>
</listitem><listitem><para>Though you can add a service instance that uses one-to-many
style SCTP sockets for <command>inetd</command>, this is not recommended. <command>inetd</command> does not work with one-to-many style SCTP sockets.</para>
</listitem><listitem><para>If a service requires two entries because its <literal>wait-status</literal> or <literal>exec</literal>  properties differ, then you must create
two instances/services  from the original service.</para>
</listitem>
</itemizedlist>
</sect4>
</sect3>
</sect2>
</sect1><sect1 id="ipv6-ref-34"><title>IPv6 Neighbor Discovery Protocol</title><para>IPv6 introduces the Neighbor Discovery protocol, as described in  <ulink url="http://www.ietf.org/rfc/rfc2461.txt?number=2461" type="text_url">RFC
2461, Neighbor Discovery for IP Version 6 (IPv6)</ulink>. For an overview
of major Neighbor Discovery features, refer to <olink targetptr="chapter1-40" remap="internal">IPv6
Neighbor Discovery Protocol Overview</olink>.</para><para>This section discusses the following features of the Neighbor Discovery
protocol:</para><itemizedlist><listitem><para><olink targetptr="ipv6-overview-21" remap="internal">ICMP Messages From Neighbor
Discovery</olink></para>
</listitem><listitem><para><olink targetptr="chapter1-43" remap="internal">Autoconfiguration Process</olink></para>
</listitem><listitem><para><olink targetptr="ipv6-ref-38" remap="internal">Neighbor Solicitation and Unreachability</olink></para>
</listitem><listitem><para><olink targetptr="chapter1-52" remap="internal">Duplicate Address Detection
Algorithm</olink></para>
</listitem><listitem><para><olink targetptr="chapter1-41" remap="internal">Comparison of Neighbor Discovery
to ARP and Related IPv4 Protocols</olink></para>
</listitem>
</itemizedlist><sect2 id="ipv6-overview-21"><title>ICMP Messages From Neighbor Discovery</title><para>Neighbor Discovery defines five new Internet Control Message Protocol
(ICMP) messages. The messages serve the following purposes:</para><itemizedlist><listitem><para><emphasis role="strong">Router solicitation</emphasis> &ndash;
When an interface becomes enabled, hosts can send router solicitation messages.
The solicitations request routers to generate router advertisements immediately,
rather than at their next scheduled time.</para>
</listitem><listitem><para><emphasis role="strong">Router advertisement</emphasis> &ndash;
Routers advertise their presence, various link parameters, and various Internet
parameters. Routers advertise either periodically, or in response to a router
solicitation  message. Router advertisements contain prefixes that  are used
for on-link determination or address configuration, a suggested hop-limit
value, and so on.</para>
</listitem><listitem><para><emphasis role="strong">Neighbor solicitation</emphasis> &ndash;
Nodes send neighbor solicitation messages to determine the link-layer address
of a neighbor. Neighbor solicitation messages are also sent to verify that
a neighbor is still reachable by a cached link-layer address. Neighbor solicitations
are also used for duplicate address detection.</para>
</listitem><listitem><para><emphasis role="strong">Neighbor advertisement</emphasis> &ndash;
A node sends neighbor advertisement messages in response to a neighbor solicitation
message. The node can also send unsolicited neighbor advertisements to announce
a link-layer address change.</para>
</listitem><listitem><para><emphasis role="strong">Redirect</emphasis> &ndash; Routers use
redirect messages to inform hosts of a better first hop for a destination,
or that the destination is on the same link.</para>
</listitem>
</itemizedlist>
</sect2><sect2 id="chapter1-43"><title>Autoconfiguration Process</title><para>This section provides an overview of the typical steps that are
performed by an interface during autoconfiguration. Autoconfiguration is performed
only on multicast-capable links. </para><orderedlist><listitem><para>A multicast-capable interface is enabled, for example, during
system startup of a node.</para>
</listitem><listitem><para>The node begins the autoconfiguration process by generating
a link-local address for the interface.</para><para>The link-local address
is formed from the Media Access Control (MAC) address of the interface.</para>
</listitem><listitem><para>The node sends a neighbor solicitation message that contains
the tentative link-local address as the target. </para><para>The purpose of
the message is to verify that the prospective address is not already in use
by another node on the link. After verification, the link-local address can
be assigned to an interface. </para><orderedlist><listitem><para>If another node already uses the proposed address, that node
returns a neighbor advertisement stating that the address is already in use.</para>
</listitem><listitem><para>If another node is also attempting to use the same address,
the node also sends a neighbor solicitation for the target. </para><para>The
number of neighbor solicitation transmissions or retransmissions, and the
delay between consecutive solicitations, are link specific. You can set these
parameters, if necessary.</para>
</listitem>
</orderedlist>
</listitem><listitem><para>If a node determines that its prospective link-local address
is not unique, autoconfiguration stops. At that point, you must manually configure
the link-local address of the interface. </para><para>To simplify recovery,
you can supply an alternate interface ID that overrides the default identifier.
Then, the autoconfiguration mechanism can resume by using the new, presumably
unique, interface ID. </para>
</listitem><listitem><para>When a node determines that its prospective link-local address
is unique, the node assigns the address to the interface.</para><para>At this
point, the node has IP-level connectivity with neighboring nodes. The remaining
autoconfiguration steps are performed only by hosts. </para>
</listitem>
</orderedlist><sect3 id="chapter1-53"><title>Obtaining a Router Advertisement</title><para>The next phase of autoconfiguration involves obtaining a router
advertisement or determining that no routers are present. If routers are present,
the routers send router advertisements that specify what type of autoconfiguration
a host should perform.</para><para>Routers send router advertisements periodically. However, the
delay between successive advertisements is generally longer than a host that
performs autoconfiguration can wait. To quickly obtain an advertisement, a
host sends one or more router solicitations to the all-routers multicast group. </para>
</sect3><sect3 id="chapter1-54"><title>Prefix Configuration Variables</title><para>Router advertisements also contain prefix variables with information
that stateless address autoconfiguration uses to generate prefixes. The Stateless
Address Autoconfiguration field in router advertisements are processed independently.
One option field that contains prefix information, the Address Autoconfiguration
flag, indicates whether the option even applies to stateless autoconfiguration.
If the option field does apply, additional option fields contain a subnet
prefix with lifetime values. These values indicate the length of time that
addresses created from the prefix remain preferred and valid.</para><para>Because routers periodically generate router advertisements, hosts continually
receive new advertisements. IPv6-enabled hosts process the information that
is contained in each advertisement. Hosts add to the information. They also
refresh the information that is received in previous advertisements.</para>
</sect3><sect3 id="chapter1-55"><title>Address Uniqueness</title><para>For security reasons, all addresses must be tested for uniqueness
prior to their assignment to an interface. The situation is different for
addresses that are created through stateless autoconfiguration. The uniqueness
of an address is determined primarily by the portion of the address that is
formed from an  interface ID. Thus, if a node has already verified the uniqueness
of a link-local address, additional addresses need not be tested individually.
The addresses must be created from the same interface ID. In contrast, all
addresses that are obtained manually should be tested individually for uniqueness.
System administrators at some sites believe that the overhead of performing
duplicate address detection outweighs its benefits. For these sites, the use
of duplicate address detection can be disabled by setting a per-interface
configuration flag.</para><para>To accelerate the autoconfiguration process, a host can generate its
link-local address, and verify its uniqueness, while the host waits for a
router advertisement. A router might delay a response to a router solicitation
for a few seconds. Consequently, the total time necessary to complete autoconfiguration
can be significantly longer if the two steps are done serially.</para>
</sect3>
</sect2><sect2 id="ipv6-ref-38"><title>Neighbor Solicitation and Unreachability</title><para>Neighbor Discovery uses <emphasis>neighbor solicitation</emphasis> messages
to determine if more than one node is assigned the same unicast address. <emphasis>Neighbor unreachability detection</emphasis> detects the failure of a neighbor
or the failure of the forward path to the neighbor. This detection requires
positive confirmation that packets that are sent to a neighbor are actually
reaching that neighbor. Neighbor unreachability detection also determines
that packets are being processed properly by the node's IP layer.</para><para>Neighbor unreachability detection uses confirmation from two sources:
upper-layer protocols and neighbor solicitation messages. When possible, upper-layer
protocols provide a positive confirmation that a connection is making <emphasis>forward
progress</emphasis>.  For example, when new TCP acknowledgments are received,
it is confirmed that previously sent data has been delivered correctly.</para><para>When a node does not get positive confirmation from upper-layer protocols,
the node sends unicast neighbor solicitation messages. These messages solicit
neighbor advertisements as reachability confirmation from the next hop. To
reduce unnecessary network traffic, probe messages are sent only to neighbors
to which the node is actively sending packets. </para>
</sect2><sect2 id="chapter1-52"><title>Duplicate Address Detection Algorithm</title><para>To ensure that all configured addresses are likely to be unique
on a particular link, nodes run a <emphasis>duplicate address detection</emphasis> algorithm
on addresses. The nodes must run the algorithm before assigning the addresses
to an interface. The duplicate address detection algorithm is performed on
all addresses.</para><para>The autoconfiguration process that is described in this section applies
only to hosts, and not routers. Because host autoconfiguration uses information
that is advertised by routers, routers need to be configured by some other
means. However, routers generate link-local addresses by using the mechanism
that is described in this chapter. In addition, routers are expected to successfully
pass the duplicate address detection algorithm on all addresses prior to assigning
the address to an interface.</para>
</sect2><sect2 id="eobqo"><title>Proxy Advertisements</title><para>A router that accepts packets on behalf of a target address can issue
non-override neighbor advertisements. The router can accept packets for a
target address that is unable to respond to neighbor solicitations.  Currently,
the use of proxy is not specified. However, proxy advertising can potentially
be used to handle cases such as mobile nodes that have moved off-link. Note
that the use of proxy is not intended as a general mechanism to handle nodes
that do not implement this protocol.</para>
</sect2><sect2 id="eobqn"><title>Inbound Load Balancing</title><para>Nodes with replicated interfaces might need to load balance the reception
of incoming packets across multiple network interfaces on the same link. Such
nodes have multiple link-local addresses assigned to the same interface. For
example, a single network driver can represent multiple network interface
cards as a single logical interface that has multiple link-local addresses.</para><para>Load balancing is handled by allowing routers to omit the source link-local
address from router advertisement packets. Consequently, neighbors must use
neighbor solicitation messages to learn link-local addresses of routers. Returned
neighbor advertisement messages can then contain link-local addresses that
differ, depending on which issued the solicitation.</para>
</sect2><sect2 id="eobqr"><title>Link-Local Address Change</title><para>A node that knows its link-local address has been changed can send out
multicast  unsolicited, neighbor advertisement packets. The node can send
multicast packets to all nodes to update cached link-local addresses that
have become invalid. The sending of unsolicited advertisements is a performance
enhancement only. The detection algorithm for neighbor unreachability ensures
that all nodes reliably discover the new address, though the delay might be
somewhat longer.</para>
</sect2><sect2 id="chapter1-41"><title>Comparison of Neighbor Discovery to ARP and
Related IPv4 Protocols</title><para>The functionality of the IPv6 Neighbor Discovery protocol corresponds
to a combination of the IPv4 protocols: Address Resolution Protocol (ARP),
Internet Control Message Protocol (ICMP) Router Discovery, and ICMP Redirect.
IPv4 does not have a generally agreed on protocol or mechanism for neighbor
unreachability detection. However, host requirements do specify some possible
algorithms for dead gateway detection. Dead gateway detection is a subset
of the problems that neighbor unreachability detection solves.</para><para>The following list compares the Neighbor Discovery protocol to the related
set of IPv4 protocols.</para><itemizedlist><listitem><para>Router discovery is part of the base IPv6 protocol set. IPv6 hosts
do not need to <command>snoop</command> the routing protocols to find a router.
IPv4 uses ARP, ICMP router discovery, and ICMP redirect for router discovery.</para>
</listitem><listitem><para>IPv6 router advertisements carry link-local addresses. No additional
packet exchange is needed to resolve the router's link-local address.  </para>
</listitem><listitem><para>Router advertisements carry site prefixes for a link. A separate
mechanism is not needed to configure the netmask, as is the case with IPv4.</para>
</listitem><listitem><para>Router advertisements enable address autoconfiguration. Autoconfiguration
is not implemented in IPv4.</para>
</listitem><listitem><para>Neighbor Discovery enables IPv6 routers to advertise an MTU for
hosts to use on the link. Consequently, all nodes use the same MTU value on
links that lack a well-defined MTU. IPv4 hosts on the same network might have
different MTUs.</para>
</listitem><listitem><para>Unlike IPv4 broadcast addresses, IPv6 address resolution multicasts
are spread over 4 billion (2^32)  multicast addresses, greatly reducing address
resolution-related interrupts on nodes other than the target. Moreover, non-IPv6
machines should not be interrupted at all.</para>
</listitem><listitem><para>IPv6 redirects contain the link-local address of the new first
hop. Separate address resolution is not needed on receiving a redirect.</para>
</listitem><listitem><para>Multiple site prefixes can be associated with the same IPv6
network. By default, hosts learn all local site prefixes from router advertisements.
However, routers can be configured to omit some or all prefixes from router
advertisements. In such instances, hosts assume that destinations are on remote
networks. Consequently, hosts send the traffic to routers. A router can then
issue redirects, as appropriate.</para>
</listitem><listitem><para>Unlike IPv4, the recipient of an IPv6 redirect message assumes
that the new next-hop is on the local network. In IPv4, a host ignores redirect
messages that specify a next-hop that is not on the local network, according
to the network mask. The IPv6 redirect mechanism is analogous to the XRedirect
facility in IPv4. The redirect mechanism is useful on non-broadcast and shared
media links. On these networks, nodes should not  check for all prefixes for
local link destinations.</para>
</listitem><listitem><para>IPv6 neighbor unreachability detection improves packet delivery
in the presence of failing routers. This capability improves packet delivery
over partially failing or partitioned links. This capability also improves
packet delivery over nodes that change their link-local addresses. For example,
mobile nodes can move off the local network without losing any connectivity
because of stale ARP caches. IPv4 has no corresponding method for neighbor
unreachability detection.</para>
</listitem><listitem><para>Unlike ARP, Neighbor Discovery detects half-link failures
by  using neighbor unreachability detection. Neighbor Discovery avoids sending
traffic to neighbors when two-way connectivity is absent.</para>
</listitem><listitem><para>By using link-local addresses to uniquely identify routers, IPv6
hosts can maintain the router associations. The ability to identify routers
is required for router advertisements and for redirect messages. Hosts need
to maintain router associations if the site uses new global prefixes. IPv4
does not have a comparable method for identifying routers.</para>
</listitem><listitem><para>Because Neighbor Discovery messages have a hop limit of 255
upon receipt, the protocol is immune to spoofing attacks originating from
off-link nodes. In contrast, IPv4 off-link nodes can send ICMP redirect messages.
IPv4 off-link nodes can also send router advertisement messages.</para>
</listitem><listitem><para>By placing address resolution at the ICMP layer, Neighbor
Discovery becomes more media independent than ARP. Consequently, standard
IP authentication and security mechanisms can be used.</para>
</listitem>
</itemizedlist>
</sect2>
</sect1><sect1 id="ipv6-ref-33"><title>IPv6 Routing</title><para>Routing in IPv6 is almost identical to IPv4 routing under Classless
Inter-Domain Routing (CIDR). The only difference is that the addresses are
128-bit IPv6 addresses instead of 32-bit IPv4 addresses. With very straightforward
extensions, all of IPv4's routing algorithms, such as OSPF, RIP, IDRP, and
IS-IS, can be used to route IPv6.</para><para>IPv6 also includes simple routing extensions that support powerful new
routing capabilities. The following list describes the new routing capabilities:</para><itemizedlist><listitem><para>Provider selection that is based on policy, performance, cost,
and so on</para>
</listitem><listitem><para>Host mobility, route to current location</para>
</listitem><listitem><para>Auto-readdressing, route to new address</para>
</listitem>
</itemizedlist><para>You obtain the new routing capabilities by creating sequences of IPv6
addresses that use the IPv6 routing option. An IPv6 source uses the routing
option to list one or more intermediate nodes, or topological group, to be
visited on the way to a packet's destination. This function is very similar
in function to IPv4's loose source and record route option.</para><para>To make address sequences a general function, IPv6 hosts are required,
in most instances, to reverse routes in a packet that a host receives. The
packet must be successfully authenticated by using the IPv6 authentication
header. The packet must contain address sequences in order to return the packet
to its originator. This technique forces IPv6 host implementations to support
the handling and reversal of source routes. The handling and reversal of source
routes is the key that enables providers to work with hosts that implement
the new IPv6 capabilities such as provider selection and extended addresses.</para><sect2 id="ipv6-ref-35"><title>Router Advertisement</title><para>On multicast-capable links and point-to-point links, each router periodically
sends to the multicast group a router advertisement packet that announces
its availability. A host receives router advertisements from all routers,
building a list of default routers. Routers generate router advertisements
frequently enough so that hosts learn of their presence within a few minutes.
However, routers do not advertise frequently enough to rely on an absence
of advertisements to detect router failure. A separate detection algorithm
that determines neighbor unreachability provides failure detection. </para><sect3 id="ipv6-ref-36"><title>Router Advertisement Prefixes</title><para>Router advertisements contain a list of subnet prefixes that is
used to determine if a host is on the same link (on-link) as the router. The
list of prefixes is also used for  autonomous address configuration. Flags
that are associated with the prefixes specify the intended uses of a particular
prefix. Hosts use the advertised on-link prefixes to build and maintain a
list that is used to decide when a packet's destination is on-link or beyond
a router. A destination can be on-link even though the destination is not
covered by any advertised on-link prefix. In such instances, a router can
send a redirect. The redirect informs the sender that the destination is a
neighbor.</para><para>Router advertisements, and per-prefix flags, enable routers to inform
hosts how to perform stateless address autoconfiguration. </para>
</sect3><sect3 id="ipv6-ref-37"><title>Router Advertisement Messages</title><para>Router advertisement messages also contain Internet parameters,
such as the hop limit, that hosts should use in outgoing packets. Optionally,
router advertisement messages also contain link parameters, such as the link
MTU. This feature enables the centralized administration of critical parameters.
The parameters can be set on routers and automatically propagated to all hosts
that are attached.    </para><para>Nodes accomplish address resolution by sending to the multicast group
a neighbor solicitation that asks the target node to return its link-layer
address. Multicast neighbor solicitation messages are sent to the solicited-node
multicast address of the target address. The target returns its link-layer
address in a unicast neighbor advertisement message. A single request-response
pair of packets is sufficient for both the initiator and the target to resolve
each other's link-layer addresses. The initiator includes its link-layer address
in the neighbor solicitation.     </para>
</sect3>
</sect2>
</sect1><sect1 id="ipv6-ref-47"><title>IPv6 Tunnels</title><para>To minimize any dependencies at a dual-stack, IPv4/IPv6 site, all the
routers in the path between two IPv6 nodes do not need to support IPv6. The
mechanism that supports such a network configuration is called <emphasis>tunneling</emphasis>. Basically, IPv6 packets are placed inside IPv4 packets, which
are then routed through the IPv4 routers. The following figure illustrates
the tunneling mechanism through IPv4 routers, which are indicated in the figure
by &ldquo;R.&rdquo;</para><figure id="ipv6-ref-fig-95"><title>IPv6 Tunneling Mechanism</title><mediaobject><imageobject><imagedata entityref="tunnel.epsi"/>
</imageobject><textobject><simpara>Illustrates how IPv6 packets that are placed inside IPv4
packets are tunneled through routers that use IPv4.</simpara>
</textobject>
</mediaobject>
</figure><para>The Solaris IPv6 implementation includes two types of tunneling mechanisms:</para><itemizedlist><listitem><para>Configured tunnels between two routers, as in <olink targetptr="ipv6-ref-fig-95" remap="internal">Figure 11&ndash;5</olink></para>
</listitem><listitem><para>Automatic tunnels that terminate at the endpoint hosts</para>
</listitem>
</itemizedlist><para>A configured tunnel is currently used on the Internet for other purposes,
for example, on the MBONE, the IPv4 multicast backbone. Operationally, the
tunnel consists of two routers that are configured to have a virtual point-to-point
link between the two routers over the IPv4 network. This kind of tunnel is
likely to be used on some parts of the Internet for the foreseeable future.</para><para>Automatic tunnels require IPv4-compatible addresses. Automatic
tunnels  can be used to connect IPv6 nodes when IPv6 routers are not available.
These tunnels can originate either on a dual-stack host or on a dual-stack
router by configuring an automatic tunneling network interface. The tunnels
always terminate on the dual-stack host. These tunnels work by dynamically
determining the destination IPv4 address, which is the endpoint of the tunnel,
by extracting the address from the IPv4-compatible destination address.</para><sect2 id="ipv6-ref-49"><title>Configured Tunnels</title><para>Tunneling interfaces have the following format:</para><screen>ip.tun <replaceable>ppa</replaceable></screen><para><replaceable>ppa</replaceable> is the physical point of attachment.</para><para>At system startup, the tunneling module (<command>tun</command>)
is pushed, by the <command>ifconfig</command> command, on top of IP to create
a virtual interface. The push is accomplished by creating the appropriate <filename>hostname6.*</filename> file.</para><para>For example, to create a tunnel to encapsulate IPv6 packets over an
IPv4 network, IPv6 over IPv4, you would create the following file name:</para><screen>/etc/hostname6.ip.tun0</screen><para>The content of this file is passed to <command>ifconfig</command> after
the interfaces have been plumbed. The content becomes the parameters that
are necessary to configure a point-to-point tunnel.</para><example id="ipv6-ref-ex-96"><title><filename>hostname6.ip.tun0</filename> File
for an IPv6 Over IPv4 Tunnel</title><para>The following is an example of entries in the <filename>hostname6.ip.tun0</filename> file:</para><screen>tsrc 10.10.10.23 tdst 172.16.7.19 up
addif 2001:db8:3b4c:1:5678:5678::2 up</screen>
</example><para>In this example, the IPv4 source and destination addresses are
used as tokens to autoconfigure IPv6 link-local addresses. These addresses
are the source and destination for the <literal>ip.tun0</literal> interface.
 Two interfaces are configured. The <literal>ip.tun0</literal> interface is
configured. A logical interface,  <literal>ip.tun0:1</literal>, is also configured.
The logical interface has the source and destination IPv6 addresses specified
by the <command>addif</command> command.</para><para>The contents of these configuration files are passed to <command>ifconfig</command> without
change when the system is started in multiuser mode. The entries in <olink targetptr="ipv6-ref-ex-96" remap="internal">Example 11&ndash;11</olink> are equivalent to the
following:</para><screen># <userinput>ifconfig ip.tun0 inet6 plumb</userinput>
# <userinput>ifconfig ip.tun0 inet6 tsrc 10.0.0.23 tdst 172.16.7.19 up</userinput>
# <userinput>ifconfig ip.tun0 inet6 addif 2001:db8:3b4c:1:5678:5678::2 up</userinput></screen><para>The following shows the output of <command>ifconfig</command> <option>a</option> for
this tunnel.</para><screen width="100">ip.tun0: flags=2200850&lt;UP,POINTOPOINT,RUNNING,MULTICAST,
  NONUD,IPv6> mtu 1480 index 6
        inet tunnel src 10.0.0.23  tunnel dst 172.16.7.19
        inet6 fe80::c0a8:6417/10 --> fe80::c0a8:713
ip.tun0:1: flags=2200850&lt;UP,POINTOPOINT,RUNNING,MULTICAST,NONUD,IPv6> mtu 1480 
  index 5
        inet6 2001:db8:3b4c:1:5678:5678::2 </screen><para>You can configure more logical interfaces by adding lines to the configuration
file by using the following syntax:</para><screen>addif IPv6-source IPv6-destination up</screen><note><para>When either end of the tunnel is an IPv6 router that advertises
one or more prefixes over the tunnel, you do not need <command>addif</command> commands
in the tunnel configuration files. Only <literal>tsrc</literal> and <literal>tdst</literal> might be required because all other addresses are autoconfigured.</para>
</note><para>In some situations, specific source and destination link-local addresses
need to be manually configured for a particular tunnel. Change the first line
of the configuration file to include these link-local addresses.  The following
line is an example:</para><screen>tsrc 10.0.0.23 tdst 172.16.7.19 fe80::1/10 fe80::2 up</screen><para>Notice that the source link-local address has a prefix length of 10.
 In this example, the <literal>ip.tun0</literal> interface resembles the following:</para><screen width="100">ip.tun0: flags=2200850&lt;UP,POINTOPOINT,RUNNING,MULTICAST,NONUD,IPv6> mtu 1480 
index 6
        inet tunnel src 10.0.0.23  tunnel dst 172.16.7.19
        inet6 fe80::1/10 --> fe80::2</screen><para>To create a tunnel to encapsulate IPv6 packets over an IPv6 network,
IPv6 over IPv6, you create the following file name:</para><screen>/etc/hostname6.ip6.tun0</screen><example id="ipv6-ref-ex-97"><title><filename>hostname6.ip6.tun0</filename> File
for an IPv6 over IPv6 Tunnel</title><para>The following is an example of entries in the <filename>hostname6.ip6.tun0</filename> file
for IPv6 encapsulation over an IPv6 network:</para><screen>tsrc 2001:db8:3b4c:114:a00:20ff:fe72:668c 
        tdst 2001:db8:15fa:25:a00:20ff:fe9b:a1c3
fe80::4 fe80::61 up</screen>
</example><para>To create a tunnel to encapsulate IPv4 packets over an IPv6 network,
IPv4 over IPv6, you would create the following file name:</para><screen>/etc/hostname.ip6.tun0</screen><example id="ipv6-ref-ex-98"><title><filename>hostname.ip6.tun0</filename> File
for an IPv4 Over IPv6 Tunnel</title><para>The following is an example of entries in the <filename>hostname.ip6.tun0</filename> file
for IPv4 encapsulation over an IPv6 network:</para><screen>tsrc 2001:db8:3b4c:114:a00:20ff:fe72:668c 
         tdst 2001:db8:15fa:25:a00:20ff:fe9b:a1c3
10.0.0.4 10.0.0.61 up</screen>
</example><para>To create a tunnel to encapsulate IPv4 packets over an IPv4 network,
IPv4 over IPv4, you would create the following file name:</para><screen>/etc/hostname.ip.tun0</screen><example id="ipv6-ref-ex-99"><title><filename>hostname.ip.tun0</filename> for
an IPv4 Over IPv4 Tunnel</title><para>The following is an example of entries in the <filename>hostname.ip.tun0</filename> file
for IPv4 encapsulation over an IPv4 network:</para><screen>tsrc 172.16.86.158 tdst 192.168.86.122
10.0.0.4 10.0.0.61 up</screen>
</example><para>For specific information about <command>tun</command>, see the <olink targetdoc="refman7" targetptr="lc-tun-7m" remap="external"><citerefentry><refentrytitle>tun</refentrytitle><manvolnum>7M</manvolnum></citerefentry></olink>  man page. For a general
description of tunneling concepts during the transition to IPv6, see <olink targetptr="ipv6-overview-160" remap="internal">Overview of IPv6 Tunnels</olink>. For a description
of procedures for configuring tunnels, see <olink targetptr="ipv6-config-tasks-17" remap="internal">Tasks for Configuring Tunnels for IPv6 Support
(Task Map)</olink>.</para>
</sect2><sect2 id="ipv6-ref-50"><title>6to4 Automatic Tunnels</title><para>The Solaris OS includes 6to4 tunnels as a preferred interim method
for making the transition from IPv4 to IPv6 addressing. 6to4 tunnels enable
isolated IPv6 sites to communicate across an automatic tunnel over an IPv4
network that does not support IPv6. To use 6to4 tunnels, you must configure
a boundary router on your IPv6 network as one endpoint of the 6to4 automatic
tunnel. Thereafter, the 6to4 router can participate in a tunnel to another
6to4 site, or, if required, to a native IPv6, non-6to4 site.</para><para>This section provides reference materials on the following 6to4 topics:</para><itemizedlist><listitem><para>Topology of the 6to4 tunnel</para>
</listitem><listitem><para>6to4 addressing, including the format of the advertisement</para>
</listitem><listitem><para>Description of packet flow across a 6to4 tunnel</para>
</listitem><listitem><para>Topology of a tunnel between a 6to4 router and a 6to4 relay
router</para>
</listitem><listitem><para>Points to consider before you configure 6to4 relay router
support</para>
</listitem>
</itemizedlist><para>More information about 6to4 routing is available from the following
sources.</para><informaltable frame="topbot" pgwide="100"><tgroup cols="2" colsep="0" rowsep="0"><colspec colname="colspec2" colwidth="39.76*"/><colspec colname="colspec3" colwidth="60.24*"/><thead><row rowsep="1"><entry><para>Task or Detail</para>
</entry><entry><para>For Information</para>
</entry>
</row>
</thead><tbody><row><entry><para>Tasks for configuring a 6to4 tunnel</para>
</entry><entry><para><olink targetptr="ipv6-config-tasks-24" remap="internal">How to Configure a 6to4 Tunnel</olink></para>
</entry>
</row><row><entry><para>6to4-related RFC</para>
</entry><entry><para><ulink url="ftp://ftp.rfc-editor.org/in-notes/rfc3056.txt" type="text_url">RFC 3056, "Connection of IPv6 Domains via IPv4 Clouds"</ulink></para>
</entry>
</row><row><entry><para>Detailed information about the <command>6to4relay</command> command,
which enables support for tunnels to a 6to4 relay router</para>
</entry><entry><para><olink targetdoc="refman1m" targetptr="x-6to4relay-1m" remap="external"><citerefentry><refentrytitle>6to4relay</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink></para>
</entry>
</row><row><entry><para>6to4 security issues</para>
</entry><entry><para><ulink url="ftp://ftp.rfc-editor.org/in-notes/rfc3964.txt" type="text"> Security
Considerations for 6to4</ulink></para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable><sect3 id="ipv6-ref-51"><title>Topology of a 6to4 Tunnel</title><para>The following figure shows a 6to4 tunnel between two 6to4 sites.</para><figure id="ipv6-ref-fig-100"><title>Tunnel Between Two 6to4 Sites</title><mediaobject><imageobject><imagedata entityref="tun-6-4-sites"/>
</imageobject><textobject><simpara>The figure shows a 6to4 tunnel, which is described in
the following context.</simpara>
</textobject>
</mediaobject>
</figure><para>The figure depicts two isolated 6to4 networks, Site A and Site
B. Each site has configured a router with an external connection to an IPv4
network. A 6to4 tunnel across the IPv4 network connects the 6to4 sites.</para><para>Before an IPv6 site can become a 6to4 site, you must configure
at least one router interface for 6to4 support. This interface must provide
the external connection to the IPv4 network. The address that you configure
on <literal>qfe0</literal> must be globally unique. In this figure, boundary
Router A's interface <literal>qfe0</literal> connects Site A to the IPv4 network.
Interface <literal>qfe0</literal> must already be configured with an IPv4
address before you can configure <literal>qfe0</literal> as a 6to4 pseudo-interface. </para><para>In the figure, 6to4 Site A is composed of two subnets, which are connected
to interfaces <literal>hme0</literal> and <literal>hme1</literal> on Router
A. All IPv6 hosts on either subnet of Site A automatically reconfigure with
6to4-derived addresses on receipt of the advertisement from Router A.</para><para>Site B is the opposite endpoint of the tunnel from Site A. To correctly
receive traffic from Site A, a boundary router on Site B must be configured
for 6to4 support. Otherwise, packets that the router receives from Site A
are not recognized and dropped.</para>
</sect3><sect3 id="ipv6-ref-55"><title>Packet Flow Through the 6to4 Tunnel</title><para>This section describes the path of packets from a host at one
6to4 site to a host in a remote 6to4 site. This scenario uses the topology
that is shown in <olink targetptr="ipv6-ref-fig-100" remap="internal">Figure 11&ndash;6</olink>.
Moreover, the scenario assumes that the 6to4 routers and 6to4 hosts are already
configured.</para><orderedlist><listitem><para>A host on Subnet 1 of 6to4 Site A sends a transmission, with
a host at 6to4 Site B as the destination. Each packet header in the flow has
a source 6to4-derived address and destination 6to4-derived address. </para>
</listitem><listitem><para>6to4 Router A receives the outgoing packets and creates a
tunnel over an IPv4 network to 6to4 Site B.</para>
</listitem><listitem><para>Site A's router encapsulates each 6to4 packet into an IPv4
header. Then the router uses standard IPv4 routing procedures to forward the
packet over the IPv4 network.</para>
</listitem><listitem><para>Any IPv4 routers that the packets encounter use the packets'
destination IPv4 address for forwarding. This address is the globally unique
IPv4 address of the interface on Router B, which also serves as the 6to4 pseudo-interface.</para>
</listitem><listitem><para>Packets from Site A arrive at Router B, which decapsulates
the IPv6 packets from the IPv4 header.</para>
</listitem><listitem><para>Router B then uses the destination address in the IPv6 packet
to forward the packets to the recipient host at Site B.</para>
</listitem>
</orderedlist>
</sect3><sect3 id="ipv6-ref-56"><title>Considerations for Tunnels to a 6to4 Relay
Router</title><para>6to4 relay routers function as endpoints for tunnels from 6to4 routers
that need to communicate with native IPv6, non-6to4 networks. Relay routers
are essentially bridges between the 6to4 site and native IPv6 sites. Because
this solution is very insecure, by default, the Solaris OS does not enable
6to4 relay router support. However, if your site requires such a tunnel, you
use the <command>6to4relay</command> command to enable the following tunneling
scenario.</para><figure id="ipv6-ref-fig-101"><title>Tunnel From a 6to4 Site to a 6to4 Relay
Router</title><mediaobject><imageobject><imagedata entityref="tun-6-4-relay"/>
</imageobject><textobject><simpara>This figure shows a tunnel between a 6to4 router and
6to4 relay router. The following context further describes the figure.</simpara>
</textobject>
</mediaobject>
</figure><para>In <olink targetptr="ipv6-ref-fig-101" remap="internal">Figure 11&ndash;7</olink>,
6to4 Site A needs to communicate with a node at the native IPv6 Site B. The
figure shows the path of traffic from Site A onto a 6to4 tunnel over an IPv4
network. The tunnel has 6to4 Router A and a 6to4 relay router as its endpoints.
Beyond the 6to4 relay router is the IPv6 network, to which IPv6 Site B is
connected. </para><sect4 id="ipv6-ref-57"><title>Packet Flow Between a 6to4 Site and Native
IPv6 Site</title><para>This section describes the flow of packets from a 6to4 site to
a native IPv6 site. The text uses the scenario that is shown in <olink targetptr="ipv6-ref-fig-101" remap="internal">Figure 11&ndash;7</olink> as an example.</para><orderedlist><listitem><para>A host on 6to4 Site A sends a transmission that specifies
as the destination a host at native IPv6 Site B. Each packet header in the
flow has a 6to4-derived address as its source address. The destination address
is a standard IPv6 address.</para>
</listitem><listitem><para>6to4 Router A receives the outgoing packets and creates a
tunnel over an IPv4 network to a 6to4 relay router.</para><para>6to4 relay
routers that are part of the 6to4 relay router anycast group have the address <literal>192.88.99.1</literal>. This anycast address is the default address for 6to4
relay routers. If you need to use a specific 6to4 relay router, you can override
the default and specify that router's IPv4 address. </para>
</listitem><listitem><para>Site A's 6to4 router encapsulates each packet into a IPv4
header, which has the IPv4 address of the 6to4 relay router as its destination.
The 6to4 router uses standard IPv4 routing procedures to forward the packet
over the IPv4 network. Any IPv4 routers that the packets encounter forward
the packets to the 6to4 relay router.</para>
</listitem><listitem><para>The physically closest anycast 6to4 relay router to Site A
retrieves the packets that are destined for the <literal>192.88.99.</literal>1
anycast group. </para>
</listitem><listitem><para>The relay router decapsulates the IPv4 header from the 6to4
packets, revealing the native IPv6 destination address. </para>
</listitem><listitem><para>The relay router then sends the now IPv6-only packets onto
the IPv6 network, where the packets are ultimately retrieved by a router at
Site B. The router then forwards the packets to the destination IPv6 node.</para>
</listitem>
</orderedlist>
</sect4>
</sect3>
</sect2>
</sect1><sect1 id="ipv6-ref-64"><title>IPv6 Extensions to Solaris Name Services</title><para>This section describes naming changes that were introduced by the implementation
of IPv6. You can store IPv6 addresses in any of the Solaris naming services,
NIS, LDAP, DNS, and files. You can also use NIS over IPv6 RPC transports to
retrieve any NIS data.</para><sect2 id="ipv6-ref-68"><title>DNS Extensions for IPv6</title><para>An IPv6-specific resource record, the AAAA resource record, has been
specified by in RFC 1886 <citetitle>DNS Extensions to Support IP Version 6</citetitle>.
This AAAA record maps a host name into a 128 bit IPv6 address. The PTR record
is still used with IPv6 to map IP addresses into host names. The 32 four bit
nibbles of the 128 bit address are reversed for an IPv6 address. Each nibble
is converted to its corresponding hexadecimal ASCII value. Then, <literal>ip6.int</literal> is appended.</para>
</sect2><sect2 id="ipv6-ref-69"><title>Changes to the <filename>nsswitch.conf</filename> File</title><para>IPv6
support has been added to the NIS, LDAP, and DNS name services. Consequently,
the <filename>nsswitch.conf</filename> file has been modified to support IPv6
lookups. </para><para>The following diagram shows the new relationship between the <filename>nsswitch.conf</filename> file and the new name services databases for applications
that use the <command>gethostbyname</command> and <command>getipnodebyname</command> commands.
Items in italics are new. The <command>gethostbyname</command> command checks
only for IPv4 addresses that are stored in <filename>/etc/inet/hosts</filename>. If the lookup fails, then the command checks the database
that is specified in the <literal>hosts</literal> entry in the <filename>nsswitch.conf</filename> file.</para><figure id="ipv6-ref-fig-102"><title>Relationship Between <filename>nsswitch.conf</filename> and Name Services</title><mediaobject><imageobject><imagedata entityref="NSCD-figure1.epsi"/>
</imageobject><textobject><simpara>Diagram shows the relationship between NIS, NIS+, Files,
and DNS database and the nsswitch.conf file.</simpara>
</textobject>
</mediaobject>
</figure><para>For more information on name services, see <olink targetdoc="sysadv5" remap="external"><citetitle remap="book">System Administration Guide: Naming and Directory Services (DNS, NIS, and LDAP)</citetitle></olink>.</para>
</sect2><sect2 id="ipv6-ref-70"><title>Changes to Name Service Commands</title><para>To support IPv6, you can look up IPv6 addresses with the existing
name service commands. For example, the <command>ypmatch</command> command
works with the new NIS maps. The <command>nslookup</command> command can look
up the new AAAA records in DNS.</para>
</sect2>
</sect1><sect1 id="ipv6-ref-71"><title>NFS and RPC IPv6 Support</title><para>NFS software and Remote Procedure Call (RPC) software support IPv6 in
a seamless manner. Existing commands that are related to NFS services have
not changed. Most RPC applications also  run on IPv6 without any change. Some
advanced RPC applications with transport knowledge might require updates.</para>
</sect1><sect1 id="ipv6-ref-103"><title>IPv6 Over ATM Support</title><para>The Solaris OS supports IPv6 over ATM,  permanent virtual circuits (PVC),
and static switched virtual circuits (SVC).  </para>
</sect1>
</chapter>