RFC 3239
Internet Printing Protocol (IPP): Requirements for Job, Printer, and Device Administrative Operations
Internet Printing Protocol (IPP): Requirements for Job, Printer, and Device Administrative Operations β¨
Okay bestie, this is RFC 3239 π¨οΈπ It's written by C. Kugler and H. Lewis from IBM Corporation, plus T. Hastings from Xerox Corporation. The date is February 2002. It's Informational (so it's info for the Internet community, not a standard) π. The title block doesn't list anything it obsoletes or updates, so it's standing on its own π¦.
Request for Comments: 3239 Β· Network Working Group
Status of This Memo πΈ
This memo gives information to the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited.
Copyright Notice π
Copyright (C) The Internet Society (2002). All Rights Reserved.
Abstract π§
okay so this doc lays out the requirements and use cases for some optional administrative operations you can use with the Internet Printing Protocol (IPP) versions 1.0 and 1.1 π¨οΈβ¨ Some of these ops act on the IPP Job and Printer objects. The rest act on a brand new Device object that models a single output device way more closely π
Table of Contents π
1 Introduction.....................................................2
2 Terminology......................................................2
3 Requirements and Use Cases.......................................3
4 IANA Considerations.............................................10
5 Internationalization Considerations.............................10
6 Security Considerations.........................................10
7 References......................................................11
Appendix A: Description of base IPP documents......................12
Authors' Addresses.................................................14
Full Copyright Statement...........................................15
List of Tables
Table 1 - List of Printer Operations and corresponding Device
Operations ..................................................... 9
1. Introduction π
The Internet Printing Protocol (IPP) is an application level protocol that you can use for distributed printing with Internet tools and technologies π IPP version 1.1 ([RFC2911, RFC2910]) is mostly about end user stuff, with a few admin ops thrown in (see Appendix A for a rundown of the base IPP docs) π
This document defines the requirements and use cases for extra optional end user, operator, and administrator operations. These ops control Job objects, Printer objects (see [RFC2911]), and a new Device object π¦ The Device object is basically one output device and has no notion of a job at all. The Printer object is a print service that does understand jobs and might represent one or more output devices π¨οΈβ¨
The scope of IPP is described in RFC 2567 [RFC2567] "Design Goals for an Internet Printing Protocol". This document is not trying to revise or clarify that scope, and it's not making guesses about how much industry has adopted IPP or where things are trending π What it does do is extend the original set of operations, kind of like the Set1 extensions that were written for IPP/1.0 and later folded into IPP/1.1 π
2. Terminology π
This section defines the terms used throughout this document, plus the matching documents that define the administrative operations on Job, Printer, and Device objects π
This document uses words like "client", "Printer", "Job", "attributes", "keywords", and "support". Those words have special meanings, and they're defined in the model terminology [RFC2911] in section 12.2 πΈ
On top of that, these capitalized terms are defined:
- IPP Printer object (or Printer for short): a software abstraction defined by [RFC2911] π¨οΈ
- Printer Operation: an operation whose target is an IPP Printer object and whose effect is on the Printer object π
- Output Device: the physical imaging mechanism that an IPP Printer controls. Heads up: this term is capitalized in this spec (but not in [RFC2911]), and there's no formal object called an Output Device π«Ά
- Device Operation: an operation whose target is an IPP Printer object and whose defined effect is on an Output Device β¨
- Output Device Fan-Out: a setup where an IPP Printer controls more than one output device π
- Printer fan-out: a setup where an IPP Printer object controls more than one Subordinate IPP Printer object π
- Printer fan-in: a setup where an IPP Printer object is controlled by more than one IPP Printer object π¦
- Subordinate Printer: an IPP Printer object that is controlled by another IPP Printer object. A Subordinate Printer can have one or more Subordinate Printers of its own π§
- Leaf Printer: a Subordinate Printer that has no Subordinate Printers π
- Non-Leaf Printer: an IPP Printer object that has one or more Subordinate Printers π³
- Chained Printer: a Non-Leaf Printer that has exactly one Subordinate Printer βοΈβ¨
- Job Creation operations: IPP operations that create a Job object, which are
Print-Job,Print-URI, andCreate-Jobπ
3. Requirements and Use Cases π₯
The Administrative operations for Job and Printer objects are going to be defined in one document [ipp-ops-set2]. The Administrative operations for Device objects get their own separate document. The requirements are all presented together here so you can see the parallelism π―ββοΈπ
- Have separate operations for affecting the IPP Printer versus affecting the Output Device. That way it's clear what each one is for, and implementers can implement one, the other, or both π
- Support fan-out of Printer objects πΈ
- Support fan-out of Output Devices πΈ
- Support fan-in of Printer objects, as long as it doesn't make the semantics more complicated when fan-in isn't supported π¦
- Support fan-in of output objects, as long as it doesn't make the semantics more complicated when fan-in isn't supported π¦
- Instead of having operation attributes that change the behavior of an operation a lot, use separate operations. Then it's simple and clear for a client to see which semantics the Printer supports (by querying the
operations-supportedattribute), and it's simple to describe a Printer implementation in written docs (you just list the optional operations it supports) π β¨ - Need a Printer Operation that stops a Printer object from accepting new IPP jobs. Jobs that were already accepted keep going unaffected, still getting scheduled and processed. Also need a companion operation that puts the Printer object back to accepting new IPP jobs πβ‘οΈβ
- Usage: The operator is getting ready to take the IPP Printer out of service, or to change its configuration.
- Suggested name and operations:
Disable-PrinterandEnable-Printer
- Need a Device Operation that stops an Output Device from accepting any new jobs from any job submission protocol. Also need a companion one that lets the Output Device accept jobs again π
- Usage: The operator is getting ready to take the Output Device out of service.
- Suggested name and operations:
Disable-DeviceandEnable-Device
- Need a Printer Operation that stops processing after the current IPP job finishes, and doesn't start any more IPP jobs (whether by scheduling them or sending them to the Output Device). It should still keep accepting new IPP jobs though π Also need a companion operation that starts processing and sending IPP jobs again βΆοΈ
- Usage: The operator wants to gracefully stop the IPP Printer at the next job boundary. The
Pause-Printer-After-Current-Joboperation is also invoked implicitly by theDeactivate-PrinterandShutdown-Printeroperations π«§ - Suggested name and operations:
Pause-Printer-After-Current-Job, and (IPP/1.1)Resume-Printer
- Usage: The operator wants to gracefully stop the IPP Printer at the next job boundary. The
- Need a Device Operation that stops processing the current job "immediately", no matter what protocol it came in on. It's basically the Pause button on the Output Device, and it's for emergencies π¨ Where it actually stops depends on the implementation. It could be mid page, end of page, end of sheet, or after a few sheets, for Output Devices that can't stop that fast. The paper path doesn't get run out. Also need a companion operation that starts processing the current any-protocol job again without losing anything π
- Usage: The operator sees something bad about to happen, like the paper about to jam, the toner running out, the device overheating, or the device wanting more paper π₯
- Suggested name and operations:
Pause-Device-Now,Resume-Device
- Need a Printer Operation that stops processing IPP jobs after all the currently accepted jobs have been processed. Any newly accepted jobs go into the
processing-heldstate π§- Usage: This lets an operator reconfigure the Output Device so that jobs waiting on resources (like special media) get a chance to run. Then the operator uses another operation after reconfiguring. They repeat the two operations to put the Output Device back on its normal media π
- Suggested name and operations:
Hold-New-Jobs,Release-Held-New-Jobs
- Need a Device Operation that stops processing the current any-protocol job at a convenient point, like after the current copy (or the end of the job, if it's the last or only copy). Also need a companion operation that starts processing the current any-protocol job, or the next job, without losing anything π
- Usage: The operator wants to empty an output bin that's nearly full. The paper path is run out ποΈ
- Suggested name and operations:
Pause-Device-After-Current-Copy,Resume-Device
- Need a Device Operation that always pauses on a device-defined boundary, no matter how many copies there are, so it doesn't break up a job. Also need a companion operation that starts processing the current any-protocol job, or the next job, without losing anything π
- Usage: The operator wants to empty an output bin that's nearly full, but doesn't want to break up a job in case it has multiple copies. The paper path is run out π§Ί
- Suggested name and operations:
Pause-Device-After-Current-Job,Resume-Device
- Need a Printer Operation that combines
Disable-PrinterandPause-Printer-After-Current-Job, and rejects all other Job, Printer, and Device Operations. The exceptions are Job and Printer queries, the System Administrator'sSet-Printer-Attributes, and the companion operation that resumes activity. In other words, this operation makes the Printer a read-only object in a graceful way for end users and the operator π¦π
(Part 1 of 3 β¨ more RFC 3239 is coming, bestie π«Ά)
Okay bestie, picking up right where we left off with item 14's usage π
Usage: The administrator wants to reconfigure the Printer object using the Set-Printer-Attributes operation without disturbing the current in-process work π¨οΈ, but wants to make sure the operator isn't also trying to change the Printer object while it's running the Printer. Main character energy for the admin π
Suggested name and operation: Deactivate-Printer, Activate-Printer π¦
- Need a Device Operation that combines
Disable-Device,Pause-Device-After-Current-Job, and rejects all other Device Operations, except Job and Printer queries and the companion operation to resume activity π«Ά In other words, this operation makes the Output Device a read-only object in a graceful manner. So soft, so calm π§
Usage: The field service person wants to open up the device without disturbing the current in-process work, perhaps to replace staples or replace the toner cartridge π
Suggested name and operation: Deactivate-Device, Activate-Device β¨
- Need a Printer Operation to recover from the IPP Printer software that has gotten confused (run out of heap memory or gotten into a state that it doesn't seem to be able to get out of) π This is a condition that shouldn't happen, but does in real life. Any volatile information is saved if possible before the software is re-initialized. No companion operation is needed to undo this. We don't want to go back to the "confused" state :-) π
Usage: The IPP Printer software has gotten confused or isn't responding properly π
Suggested name and operation: Restart-Printer π₯
- Need a Device Operation to recover from the Output Device hardware and software that has gotten confused (gotten into a state that it doesn't seem to be able to get out of, run out of heap memory, etc.) π© This is a condition that shouldn't happen, but does in real life. This is the same and has the same options as the Printer MIB reset. No companion operation is needed to undo this. We don't want to go back to the "confused" state :-) π
Usage: The Output Device has gotten confused or needs resetting to some initial conditions π
Suggested name and operation: Reset-Device β
- Need a Printer Operation to put the IPP Printer object out of business, with no way in the protocol to bring that instantiation back to life (but see
Startup-Printer, which brings up exactly one new instantiation to life with the same URL) π₯ Any volatile information is saved if possible.
Usage: The Printer is being moved or the building's power is being shut off π
Suggested name and operation: Shutdown-Printer π«
- Need a Printer Operation to bring an IPP Printer to life when there is an already running host πΈ
Usage: After the host is started (by means outside the IPP protocol), the operator is able to ask the host to bring up any number of Printer objects (that the host has been configured in some way), each with distinct URLs π§ββοΈ
Suggested name and operation: Startup-Printer π
- Need a Device Operation to power off the Output Device after writing out any software state π It is assumed that other operations have more gracefully prepared the Output Device for this drastic and immediate step. There is no companion Device Operation to bring the power back on π ββοΈ
Usage: The Output Device is going to be moved, the power in the building is going to be shut off, or the repair man has arrived and needs to take the Output Device apart π οΈ
Suggested name and operation: Power-Off-Device π€
- Need a Device Operation to start up a powered-off device β‘
Usage: After a Power-Off-Device, if the device can be powered back up (possibly by an intervening host that supports the Device Operation) π
Suggested name: Power-On-Device π₯Ή
The tentative list of Printer and the corresponding Device Operations is shown in Table 1 π
Table 1 - List of Printer Operations and corresponding Device Operations
Printer Operation Corresponding Device Operation
equivalent
Disable-Printer Disable-Device
Enable-Printer Enable-Device
Pause-Printer (IPP/1.1 - [RFC2911] Pause-Device-Now
- one interpretation)
no Pause-Device-After-Current-Copy
Pause-Printer-After-Current-Job Pause-Device-After-Current-Job
Resume-Printer (IPP/1.1 - Resume-Device
[RFC2911])
Hold-New-Jobs no
Release-Held-New-Jobs no
Deactivate-Printer Deactivate-Device
Activate-Printer Activate-Device
Purge-Jobs (IPP/1.1 - [RFC2911]) Purge-Device
Restart-Printer Reset-Device
Shutdown-Printer Power-Off-Device
Startup-Printer Power-On-Device
There are no conformance dependencies between Printer Operations and Device Operations. Either may be supported without supporting the corresponding operations π€
4. IANA Considerations β¨
This document does not define anything to be registered π When a document is produced that defines operations that meet the requirements in this document, those operations will be registered according to the procedures in [RFC2911] section 6.4 ποΈ
5. Internationalization Considerations π
This document has the same localization considerations as the [RFC2911] π£οΈ
6. Security Considerations π¨
Heads up, this part is serious business π
This document defines the requirements for operations that are intended to be used by an operator or system administrator. These operations, when defined, would affect how the Printer behaves and establish policy and/or operating behavior that ordinary users shouldn't be able to perform π ββοΈ Printer implementations that support such operations should authenticate users and authorize them as being an operator or a system administrator for the system. Otherwise, unprivileged users could affect the policy and behavior of IPP Printers, thereby affecting other users π€ Similarly, clients that support such operations should be prepared to provide the necessary authentication information π«‘ See the security provisions in [RFC2911] for authentication, such as TLS π
7. References π
[ipp-ntfy]Herriot, R., Hastings, T., Isaacson, S., Martin, J., deBry, R., Shepherd, M. and R. Bergman, "Internet Printing Protocol/1.1: IPP Event Notifications and Subscriptions", Work in Progress. π[ipp-ops-set2]Kugler, C., Hastings, T. and H. Lewis, "Internet Printing Protocol (IPP): Job and Printer Administrative Operations", Work in Progress. ποΈ[RFC2565]Herriot, R., Butler, S., Moore, P. and R. Tuner, "Internet Printing Protocol/1.0: Encoding and Transport", RFC 2565, April 1999. π[RFC2566]deBry, R., Hastings, T., Herriot, R. and S. Isaacson, P. Powell, "Internet Printing Protocol/1.0: Model and Semantics", RFC 2566, April 1999. π§[RFC2567]Wright, D., "Design Goals for an Internet Printing Protocol", RFC 2567, April 1999. π―[RFC2568]Zilles, S., "Rationale for the Structure and Model and Protocol for the Internet Printing Protocol", RFC 2568, April 1999. π§[RFC2569]Herriot, R., Hastings, T., Jacobs, N. and J. Martin, "Mapping between LPD and IPP Protocols", RFC 2569, April 1999. πΊοΈ[RFC2616]Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P. and T. Berners-Lee, "Hypertext Transfer Protocol - HTTP/1.1", RFC 2616, June 1999. π[RFC2910]Herriot, R., Butler, S., Moore, P. and R. Tuner, "Internet Printing Protocol/1.1: Encoding and Transport", RFC 2910, September 2000. πͺ[RFC2911]deBry, R., Hastings, T., Herriot, R., Isaacson, S. and P. Powell, "Internet Printing Protocol/1.0: Model and Semantics", RFC 2911, September 2000. π[RFC3196]Hastings, T., Manros, C., Zehler, P., Kuger, C. and H. Holst, "Internet Printing Protocol/1.1: Implementer's Guide", RFC 3196, November 2001. π
Appendix A: Description of base IPP documents π
okay so bestie, this appendix is basically the reading list πβ¨ for the whole Internet Printing Protocol family. it lists every base IPP document and gives you the vibe check on each one π
The base set of IPP documents includes:
Design Goals for an Internet Printing Protocol [RFC2567]
Rationale for the Structure and Model and Protocol for the
Internet Printing Protocol [RFC2568]
Internet Printing Protocol/1.1: Model and Semantics [RFC2911]
Internet Printing Protocol/1.1: Encoding and Transport [RFC2910]
Internet Printing Protocol/1.1: Implementer's Guide [RFC3196]
Mapping between LPD and IPP Protocols [RFC2569]
Internet Printing Protocol (IPP): IPP Event Notifications and
Subscriptions [ipp-ntfy]
The "Design Goals for an Internet Printing Protocol" document takes a broad look at distributed printing functionality π¨οΈ and it runs through real-life scenarios that help pin down which features a printing protocol for the Internet actually needs πΈ. it identifies requirements for three types of users: end users, operators, and administrators π. it calls out a subset of end user requirements that are satisfied in IPP/1.0 β¨. a few optional operator operations have been added to IPP/1.1 π.
The "Rationale for the Structure and Model and Protocol for the Internet Printing Protocol" document describes IPP from a high level view π¦, defines a roadmap for the various documents that form the suite of IPP specification documents πΊοΈ, and gives background and rationale for the IETF working group's major decisions π§ . it's giving "why did we do it this way" energy and I'm obsessed π.
The "Internet Printing Protocol/1.1: Model and Semantics" document describes a simplified model with abstract objects, their attributes, and their operations π§. these are independent of encoding and transport, so no cap it's the big-picture brain of the family π§ β¨. it introduces a Printer and a Job object π¨οΈ. the Job object optionally supports multiple documents per Job π. it also addresses security, internationalization, and directory issues ππ.
The "Internet Printing Protocol/1.1: Encoding and Transport" document is a formal mapping of the abstract operations and attributes defined in the model document onto HTTP/1.1 [RFC2616] π. it defines the encoding rules for a new Internet MIME media type called "application/ipp" π. it also defines the rules for transporting over HTTP a message body whose Content-Type is "application/ipp" π¦. and it defines the 'ippget' scheme for identifying IPP printers and jobs π. this is the one that makes it all actually travel over the wire, iconic π«Ά.
The "Internet Printing Protocol/1.1: Implementer's Guide" document gives insight and advice to implementers of IPP clients and IPP objects π οΈ. it's meant to help them understand IPP/1.1 and some of the considerations that may help with designing their client and/or IPP object implementations π . for example, a typical order of processing requests is given, including error checking β . motivation for some of the specification decisions is included too, so you get the why π.
The "Mapping between LPD and IPP Protocols" document gives some advice to implementers of gateways between IPP and LPD (Line Printer Daemon) implementations π. if you're bridging the old world and the new world, this is your bestie π₯Ή.
The "IPP Event Notifications and Subscriptions" document defines an extension to IPP/1.0 [RFC2566, RFC2565] and IPP/1.1 [RFC2911, RFC2910] π. this extension lets a client subscribe to printing related Events and defines the semantics for delivering asynchronous Event Notifications to the specified Notification Recipient via a specified Delivery Method (i.e., protocols) defined in (separate) Delivery Method documents π¬π₯.
Authors' Addresses π
Carl Kugler
IBM
Boulder CO
Phone: (303) 924-5060
EMail: kugler@us.ibm.com
Tom Hastings
Xerox Corporation
737 Hawaii St. ESAE 231
El Segundo, CA 90245
Phone: 310-333-6413
Fax: 310-333-5514
EMail: hastings@cp10.es.xerox.com
Harry Lewis
IBM
Boulder CO
Phone: (303) 924-5337
EMail: harryl@us.ibm.com
IPP Web Page: http://www.pwg.org/ipp/
IPP Mailing List: ipp@pwg.org
To subscribe to the ipp mailing list, send the following email:
1) send it to majordomo@pwg.org
2) leave the subject line blank
3) put the following two lines in the message body:
subscribe ipp
end
Implementers of this specification document are encouraged to join the IPP Mailing List in order to participate in any discussions of clarification issues and review of registration proposals for additional attributes and values π¬. in order to reduce spam the mailing list rejects mail from non-subscribers, so you MUST subscribe to the mailing list in order to send a question or comment to the mailing list π«π§.
heads up: the mailing list only lets subscribers post, so subscribe first or your message won't go through π.
Full Copyright Statement βοΈ
Copyright (C) The Internet Society (2002). All Rights Reserved. π
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. π
The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. βΎοΈ
This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. π«
Acknowledgement π
Funding for the RFC Editor function is currently provided by the Internet Society. πΈ
π¦ where this page comes from
- ietf: rfc3239 2002-02
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms