Check out the new USENIX Web site. next up previous
Next: Access to UNIX Hosts Up: The Services Previous: Backups

Printing

We find that printing is constantly fraught with problems due to printer jams and out of control print jobs that need to be cancelled. Doesn't anyone just print ASCII anymore? Network printing is fraught with badly written protocol stacks on the client and printer end.

In particular, most network printers prefer to have only one machine talking to them at a time (this defies our definition of a ``network printer'' but this is the reality we have to deal with). NT clients lose a lot of printing features unless they are talking directly to NT servers. Our bias is to spool to some central machine (or its hot standby) so that we have a single point of control when jobs need to be cancelled, etc.

Our solution is as follows: UNIX clients funnel jobs to a UNIX print server using the LPD protocol [RFC1179]. NT clients funnel jobs to an NT print server using the native NT print protocols. The NT print server funnels jobs to the UNIX print server using LPD. The UNIX print server is the only machine that directly talks to printers.

The UNIX print server is a Sun Solaris 2.6 host running LPRng [Powell] which is freely available software. LPRng completely replaces the printing system on Solaris, but is backwards compatible. LPRng's strong point is that it compensates for the broken LPR implementations frequently found in today's network devices (both clients that send jobs to it and the network printers that receive jobs). It converts non-PostScript data into PostScript. It detects and compensates for badly formatted PostScript data. It also does a fine job of accepting from and sending to properly functioning LPD implementations.

Funneling all jobs to a single UNIX server means a single spool to access when bad jobs need to be removed. In fact, LPRng can be configured to permit anyone to kill a job in the queue, something we do since we trust our customers. We have one machine spool the print jobs for each group of printers. This machine is a single point of failure but many of our UNIX compute servers can function as a stand-in for our print spooler when needed. All of our configuration files refer to the spooler by a DNS alias (CNAME) rather than the host's real name. If the spooler dies, a simple change to the DNS will direct all print jobs to a replacement machine.


next up previous
Next: Access to UNIX Hosts Up: The Services Previous: Backups
Tom Limoncelli
6/13/1998