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