Line-Printer sind passé

15.12.2000
Die Open-Source-Software "Cups" erlaubt nicht nur die Ausgabe von Dokumenten auf fernen Geräten über das Internet. Sie erhöht zudem die Ausfallsicherheit der Server und bringt "frischen Wind" in die Welt der Unix-Printer.

Von: Michael Rößler

Unix-Drucker beruhen historisch gesehen auf zwei Verfahren. Sie arbeiten entweder mit dem "AT&T-Line-Printer"-System oder mit dem weit verbreiteten "Berkeley Line Printer Daemon" (LPD). Beide Systeme wurden in den 70er Jahren für Zeilendrucker konzipiert und später an die heute üblichen Seitendrucker angepasst. Die alten Drucksysteme ersetzt inzwischen das Programmpaket "LPRng", das gegenüber den Vorgängern abwärtskompatibel ist. Obwohl in vieler Hinsicht verbessert, hat das auf Zeilendrucker ausgelegte Verfahren nach wie vor Schwächen grundsätzlicher Art.

Jedes Drucksystem arbeitet mit User-Kommandos und einem Spooling-System. Fast alle Geräte verwenden darüber hinaus Filter, die verschiedene Dateiformate ineinander überführen. Denn ohne diese Zusätze kommen sie lediglich mit Postscript- oder ASCII-Dateien zurecht. Die besten Ergebnisse erzielen Unix-Anwender nach wie vor mit einem Postscript-Drucker. Zwar können sie mit Hilfe des Programms "Ghostscript" Postscript-Dateien auch auf preiswerten Laser- und Tintenstrahldruckern ausgeben, jedoch mit Qualitätsverlusten.

Viele Benutzer vermissen unter Unix eine einfache Möglichkeit, ihre Drucker zu konfigurieren. Während es unter Microsoft Windows vergleichsweise einfach ist, Einstellungen zu Auflösung, Papierquelle, Papierausgabe und Duplex-Druck zu verändern, erfordert dieselbe Aufgabe unter Unix sehr viele Eingaben in der Kommandozeile. Häufig umgeht der Systemadministrator das Problem, indem er unterschiedliche Druckerwarteschlangen oder Print-Queues anlegt. Aus der Sicht des Anwenders erscheint dies jedoch wenig hilfreich, weil dann jeder Satz von Einstellungen einen eigenen Druckernamen erhält.

Ausgabe über das Internet

Die von Easy Software Products entwickelte Open-Source-Software "Cups" verfolgt einen neuen Ansatz, denn sie setzt das "Internet Printing Protocol" (IPP) um. Verschiedene freie Zusatzprogramme erleichtern zudem die bequeme Nutzung aller Möglichkeiten des Druckers. Das Internet Printing Protocol ist eine Erweiterung des Hypertext Transfer Protocol 1.1 (HTTP/1.1) und ermöglicht die Ausgabe auf entfernten Druckern. Aktuell ist die Version 1.0; im Januar 2001 sollen der Nachfolger IPP 1.1, und dazu passend, Cups 1.1 zur Verfügung stehen.

Der zentrale Bestandteil von Cups ist der "Scheduler". Zu seinen Aufgaben gehört die Verwaltung einer Liste der im LAN zur Verfügung stehenden Drucker und das Entfernen von Jobs aus der Queue. Der Scheduler ist ein HTTP/1.1-Server, der nicht nur die Drucker-Requests via IPP entgegennimmt, sondern auch als vollwertiger Web-Server für die Administration, die Dokumentation und das Monitoring dient.

Die wichtigste Konfigurationsdatei heißt cupsd.conf und enthält die Einstellungen des Schedulers. Sie ähnelt der Parameterdatei des Apache-Web-Servers und regelt neben dem Verhalten des Daemons auch den Zugriff darauf. Des Weiteren gibt es Konfigurationsdateien für Drucker- und Klassendefinitionen sowie PPD-Dateien (PPD = Postscript Printer Description).

Die Drucker- und Klassendefinitionen beschreiben die verfügbaren Drucker und Druckerklassen. Klassen sind eine Besonderheit von Cups, die in dieser Form anderen Drucksystemen fehlen. Sie fassen mehrere Geräte zusammen und leiten einen Job jeweils an den nächsten freien Drucker einer Gruppe weiter. Die Lastverteilung erfolgt dabei nach dem "Round-Robin-Prinzip".

Das Cups-API stellt spezifische Funktionen zur Verfügung wie das Einstellen von Printjobs in die Warteschlangen, das Abfragen von Druckerinformationen, die Manipulation von PPD-Dateien und den Zugriff auf die Ressourcen über HTTP und IPP. Für sie gilt im Gegensatz zum Rest von Cups die GNU-Lizenz "Lesser Gnu Public Licence" (LGPL), sodass Hersteller sie in Nicht-Open-Source-Programme einbinden dürfen. Cups hat ein Kommandozeilen-Interface für Berkeley- und System-V-Befehle. Das erlaubt eine einfache Migration von alten Drucksystemen, und zwar ohne Anwendungen anzupassen.

Server-Administration im Web

Die mitgelieferten Filter dienen, wie Filter bei den älteren Drucksystemen, der Konvertierung und dem direkten Ausdruck von unterschiedlichen Dateiformaten. Eine wichtige Aufgabe ist die Ausgabe von Postscript-Dateien auf Nicht-Postscript-Druckern. Dabei arbeiten sie mit dem Programm Ghostscript, das in einer angepassten Version ohne die Ghostscript-Druckertreiber Bestandteil von Cups ist.

Die Cups-Imaging-Bibliothek stellt den Filtern Funktionen für die Verwaltung von großen Bildern, das Skalieren von Bildern für den Druckprozess, die Farbraumkonvertierungen und das Farbmanagement zur Verfügung. Sie wird von allen Dateifiltern, Ghostscript und allen Druckertreibern benutzt. Was die Geräteschnittstellen betrifft, unterstützt die Software den parallelen Port, das serielle Interface, USB und die Printing-Protokolle "Line Printer Demon" (LPD), IPP, und "Appsocket" beziehungsweise "Jetdirect" von HP. Somit steuert sie sowohl lokale Ausgabestellen als auch Netzwerkdrucker an.

Zur Verwaltung der Geräte bedient sich der Cups-Anwender sowohl der Kommandozeile als auch eines Web-Frontends, das zum Scheduler gehört. Außerdem kann er auf freie Tools zurückgreifen, wie zum Beispiel "Kups", ein KDE-Programm das die komplette Administration von Cups ermöglicht. Zur Auswahl aller Optionen, die ein Drucker zur Wahl stellt, dient das Programm "XPP" von Till Kamppeter. Es bietet Linux- und Unix-Nutzern den gleichen Komfort bei der Parameterwahl für einen Druckjob, den Benutzer von Windows gewohnt sind.

In diesem Zusammenhang wird der große Vorteil von PPD-Dateien deutlich. Sie berücksichtigen die Eigenschaften eines Ausgabegerätes, zum Beispiel die möglichen Papiergrößen, die Papierquellen und ob doppelseitiges Drucken möglich ist. PPD-Dateien sind im Allgemeinen nur für Postscript-Geräte verfügbar und gehören zum Lieferumfang eines Geräts. Eine Vielzahl von PPD-Dateien stellt Adobe auf der Webpage http://www.adobe.com/products/printerdrivers/winppd.html zum Download bereit. Bei Linuxprinting.org gibt es viele PPD-Dateien für Nicht-Postscript-Drucker. Anwender können hier den mageren Cups-Lieferumfang von nur vier PPD-Dateien für HP Deskjet/Laserjet und Epson Photo/Stylus aufbessern.

Ein wesentliches Bindeglied in einem heterogenen Netzwerk ist die freie Software "Samba". Sie erlaubt es dem Anwender, File- und Print-Server für Windows-Netze auf einem Unix-Rechner zu installieren.

Je nach Größe ihres Netzwerkes verwenden Linux-Anwender unterschiedliche Architekturen. In kleinen Netzen sind häufig folgende Konfigurationen anzutreffen:

- Das LAN besteht aus einem Segment, die Drucker sind direkt am Printserver angeschlossen: Dann müssen alle Druckjobs über den Printserver "gespoolt" werden. Die größte Einschränkung liegt hierbei in der räumlichen Bindung von Printserver und Dru-cker. Ein Vorteil ist in diesem Fall jedoch, dass das Printing keinen unnötigen Netzwerkverkehr erzeugt.

- Das LAN besteht aus einem Segment, die Drucker verfügen über einen eigenen Netzwerkanschluss und werden über einen Printserver verwaltet: Diese Konstellation ist in der Praxis häufig anzutreffen, hat jedoch einige Nachteile. So belastet die Kommunikation zwischen Server und Printer das Netz, denn jeder Job geht zweimal über die Leitung: vom Client zum Server und vom Server zum Drucker. Vor allem bei großen Druckjobs - mehr als 100 MByte sind bei einigen Office-Applikationen keine Seltenheit - ist das nicht zu unterschätzen. Einige Vorteile machen diese Konstellation aber auch interessant. Zum einen entfällt bei der Architektur die räumliche Bindung zwischen Server und Printer, und zum anderen hat sich gezeigt, dass die Stabilität der Clients höher ist, wenn diese nicht durch große Spool-Dateien belastet werden.

Bei mittleren bis größeren Netzwerken sind häufig mehrere Segmente vorhanden. Im Allgemeinen verwendet man einen oder mehrere Printserver pro Segment. Die Strukturen können sehr komplex werden, wobei es keine typische Architektur gibt. Vielfach bauen die Anwender auf gewachsenen Strukturen auf. Für den Administrator ist dabei von besonderem Interesse, dass die Cups-Printserver die konfigurierten Drucker via Broadcast bekannt geben. Dies hat zum Beispiel zur Folge, dass Clients, die Cups einsetzen, keine eigenen Druckerdefinitionen benötigen, weil sie diese automatisch über das Netzwerk beziehen. Zum anderen ist es möglich, Druckerklassen zu definieren und damit die anfallenden Druckjobs auf mehrere Ausgabegeräte zu verteilen. Dabei unterstützt die Software implizite Klassen. Diese ähneln den normalen Druckerklassen, werden jedoch automatisch generiert, wenn mehrere Printserver dieselben Drucker verwalten. Damit lässt sich eine erhöhte Ausfallsicherheit erzielen. Denn Druckjobs landen automatisch bei den jeweils ersten verfügbaren Printservern. Fällt einer der konfigurierten Server aus, wird der Job zum nächsten Gerät weitergeleitet. Die Ausgabe von Dokumenten über die Grenzen des LAN hi-naus ist mit IPP möglich.

Als erste der großen und bekannten Distributionen hat Linux-Mandrake mit Erscheinen der Version 7.2 das Drucksystem auf Cups umgestellt. Auch bei Debian GNU/Linux gehört die Software zum Lieferumfang. Eine Aufnahme in die anderen Mainstream-Distributionen ist damit nur eine Frage der Zeit. Eine Übersicht über die Vielzahl der verfügbaren Linux-Distribution gibt die Website http://www.linuxlinks.com/Distributions/. Spezielle Distributionen, die sich nur auf den Bereich Dru-cken beschränken, sind dort noch nicht zu finden.

Sicher durch Verschlüsselung

Das Internet Printing Protocol unterstützt die Verschlüsselung von Druckdaten und die Authentifizierung von Usern. Dabei hat der Uniform Resource Identifier (URI), der zum Ansprechen von Geräten benutzt wird, folgenden Aufbau:

ipp://host[:port]/;parameters

Die möglichen Parameter sind dabei momentan ausschließlich für Sicherheitsaspekte vorgesehen und werden in der Form: AUTH=secure-protocol mit den Protokollen TLS, SSL3 oder DAA verwendet. Ein Beispiel soll diese Konstruktion verdeutlichen:

ipp://gandalf:631/printer1;AUTH=TLS

Diese Funktion wird bei der nächsten Cups-Version 1.1.5 (zurzeit ist die Ausgabe 1.1.4 im Umlauf) zur Verfügung stehen. Damit ist dann die sichere Übertragung zwischen Client und Server sowie zwischen Server und Server möglich. Probleme treten nur dann auf, wenn der Drucker über einen eigenen Netzwerkanschluss verfügt, der keine Verschlüsselung unterstützt. Sollte eine derartige Konstellation vorliegen, muss der Anwender durch eine geeignete Netzwerktopologie das Abhören des Netzwerkverkehrs verhindern. Eine Benutzerauthentifizierung ist bereits jetzt möglich und wird auch von Frontends wie XPP unterstützt. Für das Drucken über Internet muss auf der Firewall der Port 631 freigegeben sein, es sei denn die Kommunikation erfolgt über ein VPN. (kpl)

Zur Person

Michael Rößler

ist Trainer und Consultant bei der Innominate Training GmbH.