IPv6 Intelligence

Solaris IPv6

Sun includes solid IPv6 support in its current Solaris 10 Unix operating system, with comparable features on the Solaris Express and OpenSolaris (2009.6) derivates. IPv6 support was first added with Solaris 8 from March 2000 onwards, with subsequent releases adding several IPv6 features — as of Solaris 10/Solaris Express the functionality is relative complete with a good integration into the base operating system.

Left for future work (maybe inside the OpenSolaris community) are several of the newer subprotocols, most notably DHCPv6 server and IPv6 mobility.

Content from Last updated July 2009. 2007, 2006.
Current version Solaris 10 5/09, Solaris Express (1/08), OpenSolaris 2009.6
Tested version Solaris Express 5/06 (OpenSolaris) — equivalent to Solaris 10
Documentation for Solaris 10-8

Basic IPv6 functions

Overview

IPv6 is active depending on the choice while the installation of Solaris. IPv6 is selected by default, in which case Solaris configures automatically IPv6 link-local addresses for each interface and afterward performs stateless autoconfiguration.

IPv6 can be manually activated for each interface with the creation of the file /etc/hostname6.if (if being the name of the interface). For regular IPv6 operation the file can be left empty. However, configuration options can be added for more complex functionality. After creating the file, the system has to be restarted. Upon booting, the network stack sends out router solicitations, waits for router advertisements and tries to autoconfigure a global address.

Preference

Solaris prefers IPv6 if a DNS query results in IPv4 and IPv6 addresses being sent back (A and AAAA RRs).

Privacy Extensions

Privacy addresses are not enabled by default. Their generation has to be added to the configuration file of the Neighbor Discovery Daemon (in.ndpd) residing in /etc/inet/ndpd.conf: if TmpAddrsEnabled true (if being the name of the interface.)
Afterward in.ndpd has to be restarted. In our tests, however, the privacy addresses were not used for communication. Maybe the address selection policy did not work or was not configured correctly.

Packet Filter/Firewall

Since at least Solaris 10 the IP Filter (IPF) packet filter is included in the base system, which includes support for IPv6 filtering since the Solaris 10 6/06 release. IPv6 filtering functionality is equivalent to the IPv4 part including stateful TCP and UDP filtering, similar filtering rules syntax and the same commands, with added options. Notable absent are support for IPv6 jumbograms.9

The IP Filter tools have an added -6 option, allowing IPv6 usage (ipf -6, ipfstat -6).

up

Tunnelling IPv4/IPv6

Configured tunnels

Solaris supports configured tunnels with the ip.tun0 tunnel-interface. Setting up a manual tunnel requires a configuration file and a reboot.

Beforehand, you need the following information:

$host-ipv4
IPv4-address of the host
$router-ipv4
IPv4-address of the router/tunnel-server

Create a proper configuration file /etc/hostname6.ip.tun0: tsrc $host-ipv4 tdst $router-ipv4 up Afterward the system needs a reboot. (The tunnel can be set up and activated manually — rebooting is the recommended procedure as per Sun documentation.)

6to4

Linux supports automatic 6to4-tunnelling with the ip.6to4tun0 tunnel-interface. Setting up a 6to4 tunnel requires small configuration and a reboot.

Beforehand, you need the following information:

$host-ipv4
IPv4-address of the host

Create a proper configuration file /etc/hostname6.ip.6to4tun0: tsrc $host-ipv4 up Afterward activate the 6to4 routing over the 6to4 anycast address: /usr/sbin/6to4relay -e As with configured tunnels, the system needs a reboot. (The tunnel can be set up and activated manually — rebooting is the recommended procedure as per Sun documentation.)

up

DHCPv6

Solaris and OpenSolaris include DHCPv6 client software in their base operating system (via the existing DHCP dhcpagent) since December 2006, first available in Solaris 10 8/07.

The DHCPv6 client software was developed within the OpenSolaris Project and added support for basic DHCPv6 functionality as defined in RFC 3315 (stateful DHCPv6).1 However, no more DHCPv6 options or extensions were integrated at this point. (Most notably, no temporary/Privacy addresses and no prefix delegation.)8

More DHCPv6 functionality (server, relay and more options) can be obtained through external packages (see DHCPv6 software overview for comparison):

up

PPPv6

Solaris integrates the same IPv6-capable PPP daemon into its base system as most Linux distributions do — the standard, IPv6-capable (Paul’s PPP Package) ppp.2

The PPP software supports (in version 2.4.3) RFC 2472 3 and was tested successfully with IPv6 on DSL (via PPPoE). The PPP daemon pppd tries to negotiate IPv6 when establishing the PPP link (IPv6CP) and successfully creates a link-local address for the PPP interface. The IPv6 stack afterward receives RAs on the PPP link and configures an global address on the PPP interface.

Configuration of the PPP daemon is not IPv6-specific. The following /etc/ppp/peers/pppoetest contains configuration for a PPPoE link (if is the used ethernet interface)

sppptun
plugin pppoe.so
connect "/usr/lib/inet/pppoec/if"
noccp
noauth
user username
password secret
The PPPoE/PPPv6 connection then can be established manually (with debugging): pppd debug updetach call pppoetest +ipv6 ipv6cp-use-persistent

up

Supported IPv6 RFCs & IDs

Solaris 10

Table 1: Solaris 10 (8/07) IPv6 RFCs and IDs4
Document Title
RFC 1886 DNS extensions to support IPv6
RFC 1981 Path MTU discovery for IP version 6
RFC 2019 Transmission of IPv6 packets over FDDI
RFC 2080 RIPng for IPv6
RFC 2292 IPv6 Advanced Sockets API (since Solaris Express 1/04)
RFC 2373 IPv6 Addressing
RFC 2374 IPv6 Aggregatable Global Unicast Address Format
RFC 2428 FTP Extensions for IPv6 and NATs
RFC 2452 IPv6 IPv6 Management Information Base for the Transmission Control Protocol
RFC 2454 IPv6 IPv6 Management Information Base for the User Datagram Protocol
RFC 2460 Internet protocol, version 6 (IPv6) specification
RFC 2461 Neighbor discovery for IP version 6 (IPv6)
RFC 2462 IPv6 stateless address autoconfiguration
RFC 2463 Internet Control Message Protocol (ICMPv6) for the Internet protocol version 6 (IPv6) specification
RFC 2464 Transmission of IPv6 packets over Ethernet networks
RFC 2465 Management Information Base for IPv6: Textual Conventions and General Group
RFC 2466 Management Information Base for IPv6: ICMPv6
RFC 2472
(deduced)
PPPv6
RFC 2492 IPv6 over ATM/pvc
RFC 2553 Basic Socket Interface Extensions for IPv6
RFC 2893 Transition Mechanisms for IPv6 Hosts and Routers
RFC 3041 Privacy Extensions
RFC 3056 6to4; also as router. (since Solaris 10 3/05)
RFC 3068 Anycast prefix for 6to4 relay router
RFC 3315 Basic Stateful DHCPv6 (since 12/2006 (code/OpenSolaris) — Solaris 10 8/07) 7
RFC 3484 Default Address selection can be changed with a policy table (since Solaris 10 3/05)
RFC 3596 DNS Extensions to support IPv6
RFC 3810 Multicast Listener Discovery Version 2 (MLDv2)
RFC 4007 IPv6 Scoped Address Architecture
RFC 4193 Unique Local IPv6 Unicast Addresses
RFC 4213 Transition Mechanisms for IPv6 Host and Routers
RFC 4291 IPv6 Addressing Architecture
RFC 4443 Internet Control Message Protocol (ICMPv6) for the Internet ProtoVersion 6 (IPv6) Specification
N/A IPv4-over-IPv6 and IPv6-over-IPv4 tunnels (since Solaris 10 3/05)
N/A IPv6 IPsec (with automatic keying — IKE)
N/A IPv6 for X11

Solaris 9

Table 2: Solaris 9 IPv6 RFCs and IDs5
Document Title
RFC 1886 DNS extensions to support IPv6
RFC 1981 Path MTU discovery for IP version 6
RFC 2019 Transmission of IPv6 packets over FDDI
RFC 2080 RIPng for IPv6
RFC 2373 IPv6 Addressing
RFC 2374 IPv6 Aggregatable Global Unicast Address Format
RFC 2428 FTP Extensions for IPv6 and NATs
RFC 2452 IPv6 IPv6 Management Information Base for the Transmission Control Protocol
RFC 2454 IPv6 IPv6 Management Information Base for the User Datagram Protocol
RFC 2460 Internet protocol, version 6 (IPv6) specification
RFC 2461 Neighbor discovery for IP version 6 (IPv6)
RFC 2462 IPv6 stateless address autoconfiguration
RFC 2463 Internet Control Message Protocol (ICMPv6) for the Internet protocol version 6 (IPv6) specification
RFC 2464 Transmission of IPv6 packets over Ethernet networks
RFC 2465 Management Information Base for IPv6: Textual Conventions and General Group
RFC 2466 Management Information Base for IPv6: ICMPv6
RFC 2472
(guessed)
PPPv6
RFC 2492 IPv6 over ATM/pvc
RFC 2553 Basic Socket Interface Extensions for IPv6
RFC 2893 Transition Mechanisms for IPv6 Hosts and Routers
RFC 3056 6to4; also as router. (since Solaris 9 4/03)
RFC 3068 Anycast prefix for 6to4 relay router
N/A IPv4-over-IPv6 and IPv6-over-IPv4 tunnels (since Solaris 9 9/02)
N/A IPv6 IPsec (only manual keying)
N/A IPv6 for X11

Solaris 8

Table 3: Solaris 8 IPv6 RFCs and IDs6
Document Title
RFC 1886 DNS extensions to support IPv6
RFC 1981 Path MTU discovery for IP version 6
RFC 2019 Transmission of IPv6 packets over FDDI
RFC 2080 RIPng for IPv6
RFC 2373 IPv6 Addressing
RFC 2374 IPv6 Aggregatable Global Unicast Address Format
RFC 2428 FTP Extensions for IPv6 and NATs
RFC 2452 IPv6 IPv6 Management Information Base for the Transmission Control Protocol
RFC 2454 IPv6 IPv6 Management Information Base for the User Datagram Protocol
RFC 2460 Internet protocol, version 6 (IPv6) specification
RFC 2461 Neighbor discovery for IP version 6 (IPv6)
RFC 2462 IPv6 stateless address autoconfiguration
RFC 2463 Internet Control Message Protocol (ICMPv6) for the Internet protocol version 6 (IPv6) specification
RFC 2464 Transmission of IPv6 packets over Ethernet networks
RFC 2465 Management Information Base for IPv6: Textual Conventions and General Group
RFC 2466 Management Information Base for IPv6: ICMPv6
RFC 2553 Basic Socket Interface Extensions for IPv6
RFC 2893 Transition Mechanisms for IPv6 Hosts and Routers

up

References

  1. Solaris 10 System Administration Guide: IP Services pp. 415-471 (Sun Microsystems, Inc.: June 2007. Accessed 11.9.2007)
  2. Paul’s PPP Package Homepage (Paul Mackerras: n.d. Accessed 20.12.2006)
  3. PPPD(8) manual page from pppd version 2.4.3 (Paul Mackerras: n.d. Accessed 15.1.2007)
  4. Solaris 10 What’s New (Sun Microsystems, Inc.: 2009. Accessed July 2009) and
    Special Interoperability Test Certification of the Sun Microsystems SPARC T2000 and X86 V40z 32-bit and 64-bit Platforms Running Solaris 10 for IPv6 Capability (Defense Information Systems Agency/Joint Interoperability Test Command (JITC): May 2008. Accessed April 2009) and
    Sun Solaris 10 IPv6 Letter of Compliance for DISA/JITC (Sun Microsystems: January 2008. Accessed April 2009)
  5. What’s New in the Solaris 9 Operating Environment (Sun Microsystems, Inc.: May 2002. Accessed 20.9.2006)
  6. IPv6 Networking for the Solaris 8 Operating Environment (Sun Microsystems, Inc.: 2001. Accessed 20.9.2006)
  7. See DHCPv6 section
  8. opensolaris-arc Mailinglist: 2006/597 DHCPv6 Client [restart] from James Carlson on 3.11.2006 (OpenSolaris project. Accessed 11.9.2007)
  9. System Administration Guide: IP Services: IPv6 for Solaris IP Filter (Sun Microsystems, Inc.: 2008, part-number 816-4554-16. Accessed April 2009)

up