I'm sponsoring this open exposure fast-track for Jingjing Duan and
myself. The timer is set to 06/06/2008.
Background
"Zebra Routing Suite" (PSARC 2004/448) originally added Zebra to
Solaris, delivering through SFW and /usr/sfw. This was then
replaced by Quagga (a Zebra branch) with "SFWQuagga: SFW integration
of Quagga routing suite" (PSARC 2005/571), which also added SMF
support via routeadm(1M) in ON, subsequently reworked by "Quagga SMF
Modifications" (PSARC 2006/552).
Finally, "Move quagga files from /usr/sfw to /usr" (PSARC 2008/038)
moved Quagga out of the /usr/sfw swamp. It still delivers via the
SFW consolidation.
In addition to the usual BGP, OSPF, and RIP, the upstream quagga.net
sources also support IS-IS, an OSI-derived routing protocol, but
that module runs only on Linux and *BSD, and was not ported to
Solaris. It thus was omitted by those previous projects.
This Project
This project ports Quagga's IS-IS daemon to OpenSolaris. IS-IS is
roughly equivalent to OSPF in terms of its operation and usage.
Although IS-IS does have some slight technical advantages, the main
reason for integrating it into OpenSolaris is to satisfy the
administrators who have chosen to deploy it on other systems. It's
a compatibility feature.
IS-IS uses ISO datagrams, and thus requires raw network access.
Because we're delivering the source upstream to quagga.net, which
compiles on many older Sun platforms, we use standard DLPIv2 rather
than the newer OpenSolaris libdlpi convenience library. We intend
to support only Ethernet interfaces, as our PPP doesn't include
OSINLCP, and other link layers don't include OSI bindings.
Selecting anything other than an Ethernet interface in configuration
will generate an error message. (Nothing we're doing prohibits
supporting those other interfaces at some future time.) (A future
project may add socket-level support for non-IP communication.)
The IS-IS daemon in Quagga computes routes for both IPv4 and IPv6.
It does not support OSI routing. (We don't have OSI forwarding, so
that doesn't matter.)
Otherwise, this project is trivial in architecture; it follows the
established Quagga model. The stability levels here, where they
conflict with prior cases, are intended to correct errors in those
cases. (The ".sample" files are not interfaces; they're
documentation. The PID files and related internal paths are
private, as is the SMF manifest.)
Usage
Users are expected to configure /etc/quagga/zebra.conf (as usual),
and then configure /etc/quagga/isisd.conf with the IS-IS instance
data. They can then do this to start up IS-IS:
routeadm -s routing-svcs=isis:quagga -e ipv4-routing -u
The SMF service itself may also be manipulated by users. There are
the usual set of options that can be modified with routeadm for all
Quagga family daemons, and the service uses the same
solaris.smf.{manage,value}.routing authorizations as the rest of
Quagga.
Interfaces Exported
IS-IS Standard (RFC 1142 / ISO DP 10589)
/usr/sbin/isisd Volatile (command line)
isisd(8) Not-An-Interface (man page)
isisd 2608/tcp Committed (/etc/services entry)
/etc/quagga/isisd.conf Uncommitted (protocol configuration)
/etc/quagga/isisd.conf.sample Not-An-Interface
/etc/quagga/README.Solaris Not-An-Interface
/var/run/isisd.pid Project Private
/var/run/isisd.vty Project Private
quaggaadm [-e] isisd Committed (new option)
zebra protocol Project Private (internal IPC)
/var/svc/manifest/network/routing/quagga.xml
Project Private (modified)
/lib/svc/method/quagga Project Private (modified)
SUNWsfman Volatile (man page delivery)
SUNWquaggar Uncommitted
SUNWquaggau Uncommitted
svc:/network/routing/isis:quagga Committed
config_file, vty_port, vty_address, Committed (service config)
user, group, pid_file
--
James Carlson, Solaris Networking <james.d.carlson at sun.com>
Sun Microsystems / 35 Network Drive 71.232W Vox +1 781 442 2084
MS UBUR02-212 / Burlington MA 01803-2757 42.496N Fax +1 781 442 1677