INTERNET DRAFT                                            Roger K deBry
<draft-ietf-ipp-not-02.txt>                   Utah Valley State College
                                                             Harry Lewis
                                                         IBM Corporation
                                                            Tom Hastings
                                                       Xerox Corporation
                                                           June 24, 1999

   Internet Printing Protocol/1.1: Requirements for IPP Notifications
    Copyright (C) The Internet Society (1999). All Rights Reserved.


This document is an Internet-Draft and is in full conformance with all
provisions of Section 10 of [RFC2026].  Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its areas, and
its working groups.  Note that other groups may also distribute working
documents as Internet-Drafts.

Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time.  It is inappropriate to use Internet-Drafts as reference material
or to cite them other than as  ''work in progress.''

The list of current Internet-Drafts can be accessed at

The list of Internet-Draft Shadow Directories can be accessed as


This document is one of a set of documents which together describe all
aspects of a new Internet Printing Protocol (IPP). IPP is an application
level protocol that can be used for distributed printing on the
Internet. There are multiple parts to IPP, but the primary architectural
components are the Model, the Protocol and an interface to Directory
Services. This document provides a statement of the requirements for
notifications as part of an IPP Service.  Some ISSUES are indicated in
the text.

The full set of IPP documents include:

     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.0: Model and Semantics [RFC2566]
     Internet Printing Protocol/1.0: Encoding and Transport [RFC2565]
     Internet Printing Protocol/1.0: Implementer's Guide [ipp-iig]
     Mapping between LPD and IPP Protocols [RFC2569]

The 'Design Goals for an Internet Printing Protocol' document takes a
broad look at distributed printing functionality, and it enumerates
real-life scenarios that help to clarify the features that need to be
included in a printing protocol for the Internet.  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.  Operator and administrator requirements are out
of scope for version 1.0.

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
specifications, and gives background and rationale for the IETF working
group's major decisions.

The 'Internet Printing Protocol/1.0: Encoding and Transport' document is
a formal mapping of the abstract operations and attributes defined in
the model document onto HTTP/1.1.  It defines the encoding rules for a
new Internet media type called 'application/ipp'.

The 'Internet Printing Protocol/1.0: Implementer's Guide' document gives
insight and advice to implementers of IPP clients and IPP objects.  It
is intended to help them understand IPP/1.0 and some of the
considerations that may assist them in the design of 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 also included.

The 'Mapping between LPD and IPP Protocols' document gives some advice
to implementers of gateways between IPP and LPD (Line Printer Daemon)

                           Table of Contents

1 Scope..............................................................3
2 Terminology........................................................3
3 Requirements.......................................................7
4 Scenarios..........................................................8

1  Scope

The scope of this requirements statement is for end users, print
administrators and  operators.

2  Terminology

It is necessary to define a set of terms in order to be able to clearly
express the requirements for notification services in an IPP System.

2.1 Job Submitting End User

A human end user who submits a print job to an IPP Printer. This person
may or may not be within the same security domain as the Printer. This
person may or may not be geographically near the printer.

2.2 Administrator

A human user who established policy for and configures the print system

2.3 Operator

A human user who carries out the policy established by the Administrator
and controls the day to day running of the print system.

2.4 Job Submitting Application

An application (for example a batch application), acting on behalf of an
end user, which submits a print job to an IPP Printer. The application
may or may not be within the same security domain as the Printer. This
application may or may not be geographically near the printer.

2.5 Security Domain

For the purposes of this discussion, the set of network components which
can communicate without going through a proxy or firewall. A security
domain may be geographically very large, for example - anyplace within

2.6 IPP Client

The software component on the client system which implements the IPP

2.7 Job Recipient

A human who is the ultimate consumer of the print job. In many cases
this will be the same person as the Job Submitting End User, but this
need not always be the case. For example, if I use IPP to print a
document on a printer in a business partner's office, I am the Job
Submitting End User, while the person I intend the document for in my
business partner's office is the Job Recipient.  Since one of the goals
of IPP is to be able to print near the ultimate recipient of the printed
output, we would normally expect the Job Recipient to be in the same

security domain as, and geographically near the Printer. However, this
may not always be the case. For example, I submit a print job across the
Internet to a Kinko's print shop. I am both the Submitting end User and
the Job Recipient, but I am neither near nor in the same security domain
as the Printer.

2.8 Job Recipient Proxy

A person acting on behalf of the Job Recipient.  In particular, the Job
Recipient Proxy physically picks up the printed document from the
Printer, if the Job Recipient cannot perform that function. The Proxy is
by definition geographically near and in the same security domain as the
printer. For example, I submit a print job from home to be printed on a
printer at work. I'd like my secretary to pick up the print job and put
it on my desk. In this case,  I am acting as both Job Submitting End
User and Job Recipient. My secretary is acting as a Job Recipient Proxy.

2.9 Notification Subscriber

A client that requests the IPP Printer to send event reports to one or
more Notification Recipients.  A Notification Subscriber may be a Job
Submitting End User or an End User, an Operator, or an Administrator
that is not submitting a job.

2.10 Notification Source

The entity that sends notification events

2.11 Notification Recipient

Any of: Job Submitting End User, Job Submitting Application, Job
Recipient, or Job Recipient Proxy or admin etc folks and their
representatives or log file or accounting/audit application or other
active or passive entities or President Clinton. Or Monica.

2.12 Notification Recipient Agent

A program which receives events on behalf of the notification recipient.
The agent may take some action on behalf of the recipient, forward the
notification to the recipient via some alternative means (for example,
page the recipient), or queue the notification for later retrieval by
the recipient.

2.13 Event

A event is some occurrence (either expected or unexpected) within the
printing system.  Any of the following constitute events that a Job
Submitting End User can specify notifications be sent for:

@ Any standard Printer MIB alert (i.e. device alerts) (critical and
  warning?) (state change notifications)?
@ Job Received (transition from Unknown to Pending)
@ Job Started (Transition from Pending to Processing)
@ Page Complete (Page is stacked)

@ Collated Copy Complete (last sheet of collated copy is stacked)
@ Job Complete (transition from Processing or  Processing-stopped to
@ Job aborted (transition from Pending, Pending-held,  Processing, or
  Processing-stopped to Aborted)
@ Job canceled (transition from Pending, Pending-held, Processing, or
  Processing-held to Canceled)
@ Other job state changes like 'paused', purged?
@ Device problems on which the job is destine for
@ Job (interpreter) issues

2.14 Event report

When an event occurs, an event report is generated that fully describes
the event (what the event was, where it occurred, when it occurred,
etc.).  Event reports are delivered to all the notification recipients
that are subscribed to that event, if any.  The event report is
delivered to the address of the notification recipient using the
notification delivery method defined in the subscription.  However, an
Event Report is sent ONLY if there is a corresponding subscription.

2.15 Notification Subscription

It should be possible for end users and operators to 'subscribe' for
notifications of certain types of events, independent of Job Submission.
An end user or operator may subscribe for

@ All Job Traps
@ All Traps (Job and Printer)
@ None (Reserves a slot in some limited stable of 'notification hosts')
ISSUE:  Need to discuss granularity and categorization in the context of
anticipated event frequency

2.16 Notification Attributes

IPP Objects (for example, a print job) from which notification are being
sent may have attributes associated with them. A user may want to have
one or more of these associated attributes returned along with a
particular notification. In general, these may include any attribute
associated with the object emitting the notification. Examples include:

     number-of-intervening jobs
     job-k-octets processed
     job impressions
     impressionsCompletedCurrentCopy (job MIB)
     sheetCompletedCopyNumber (job MIB)
     sheetsCompletedDocumentNumber (job MIB)
     Job ID
     Printer URI
     Subscription ID (for job independent subscription)

2.17 Notification Delivery Method (or Delivery Method for short)

Event reports are delivered using a method, such as email, TCP/IP, etc.

2.18 Immediate Notification

Notifications sent to the notification recipient or the notification
recipient's agent in such a way that the notification arrives
immediately , within the limits of common addressing, routing, network
congestion and quality of service.

2.19 Queued Notification

Notifications which are not necessarily sent immediately, but are queued
for delivery by some intermediate network application, or for later
retrieval. Email with store and forward is an example of queued

2.20 Notification over Reliable Transport

Notifications which are delivered by a reliable, sequenced delivery of
packets or character stream, with acknowledgment and retry, such that
delivery of the notification is guaranteed within some reasonable time
limits. For example, if the notification recipient has logged off and
gone home for the day, an immediate notification cannot be guaranteed to
be delivered, even when sent over a reliable transport, because there is
nothing there to catch it. Guaranteed delivery requires both queued
notification and a reliable transport. If delivery of the notification
requires process to process communications, each session is managed in a
reliable manner, assuring fully ordered, end-to-end delivery.

2.21 Notification over Unreliable Transport

Notifications are delivered via the fundamental transport address and
routing framework, but no acknowledgment or retry is required. Process
to process communications, if involved, are unconstrained.

2.22 Human Consumable Notification

Notifications which are intended to be consumed by human end users only.
They contain no machine readable encoding of the event. Email would be
an example of a Human consumable notification.
ISSUE:  Do we need both human and machine or is machine sufficient?
There is no intent to attempt to standardize human readable strings.
Human readable is intended for certain protocols, like e-mail, though
email can also convey machine readable MIME types as well using

ISSUE:  Is e-mail the only, or most likely, means of conveying the
notification through the firewall (which would drive a requirement for
mixed text, binary content).

2.23 Machine Consumable Notification

Notifications which are intended for consumption by a program only, such
as an IPP Client. Machine Consumable notifications may not contain human
readable information. Do we need both human and machine? Machine
readable is intended for application to application only.  The
Notification Recipient could process the machine readable report into
human readable format.

2.24 Mixed Notification

A mixed notification may contain both human readable and human readable
ISSUE:  Do we need mixed?

Mail Services, DNS, Instant Messaging, Distributions lists etc.?

3  Requirements

The following requirements are intended to be met by the IPP
Notification specification.

1.The specification must indicate which of these requirements are
  MANDATORY and which are OPTIONAL for a conforming implementation.

2.It must be possible to support the IPP Notification interface using
  third party notification services that exist today or that may be
  standardized in the future.

3.A Job Submitting End User must be able to specify zero or more
  notification recipients when submitting a print job. But don't expect
  a submitter to be able to circumvent out of band subscriptions.

4.When specifying a notification recipient, a Notification Subscriber
  must be able to specify one or more notification events for that
  notification recipient.

5.When specifying a notification recipient, the Notification Subscriber
  must be able to specify either immediate or queued notification for
  that notification recipient.  This may be explicit, or implied by the
  method of delivery chosen by the Job Submitting End User.

6.When specifying a notification event, a Notification Subscriber must
  be able to specify that zero or more notification attributes (or
  attribute categories) be sent along with the notification, when that
  event occurs.

7.Common delivery methods, e.g. email, must be supported.

8.There is no requirement for the IPP Printer receiving the print
  request to validate the identity of an event recipient, nor the
  ability of the system to deliver an event to that recipient as
  requested (for example, if the event recipient is not at work today).

9.However, an IPP Printer must validate its ability to deliver an event
  using the specified delivery scheme. If it does not support the
  specified scheme, or the specified scheme is invalid for some reason,
  then it should respond to the print request with an error condition.

10.  There must be a class of IPP event notification schemes or methods
  which can flow through corporate firewalls. However, an IPP printer
  need not test to guarantee delivery of the notification through a
  firewall before accepting a print job.

11.  A mechanism must be provided for delivering a notification to the
  submitting client when the delivery of an event notification to a
  specified Notification Recipient fails. (Optional? Or not necessary?)
  Fall back means of subscribers determining if notifications have
  failed. I.e. polling?

12.  There must be a mechanism for localizing human consumable
  notifications by the Notification Source.

13.  There must be a way to specify whether or not event delivery
  requires acknowledgement back to the Event Source.

14.  There must be a mechanism to indicate the quality of service for
  delivery of event reports.  The policy must include stopping the
  Printer and allowing the Printer to continue, when delivery of the
  event report is not acknowledged.   ISSUE:  Should that policy be
  specified by the Notification Subscriber (and authorized by the
  Printer) or by the administrator in configuring the Printer?

15.  There must be a mechanism so that job independent subscriptions do
  not become stale and do not require human intervention to remove
  stale subscriptions.  However, stale must not be the inability to
  deliver a notification report, since temporary event delivery
  problems must be tolerated.

4  Scenarios

1.I am sitting in my office and submit a print job to the printer down
  the hall. I am in the same security domain as the printer and of
  course, geographically near.  I want to know immediately when my
  print job will be completed (or if there is a problem) because the
  document I am working on is urgent. I submit the print job with the
  following attributes:

  @ Notification Recipient - me
  @ Notification Events - all
  @ Notification Attributes - job-state-reason
  @ Notification Type - immediate

2.I am working from home and submit a print job to the same printer as
  in the previous example. However, since I am not at work, I cannot
  physically get the print file or do anything with it. It can wait
  until I get to work this afternoon. However, I'd like my secretary to
  pick up the output and put it on my desk so it doesn't get lost or
  miss-filed. I'd also like a queued notification sent to my email so
  that when I get to work I can tell if there was a problem with the
  print job. I submit a print job with the following attributes:

  @ Notification Recipient - my secretary
  @ Notification Events - print complete
  @ Notification Type - immediate

  @ Notification Recipient - me
  @ Notification Events - print complete
  @ Notification Attributes - impressions completed
  @ Notification Type - queued

3.I am sitting in my office and submit a print job to a client at an
  engineering firm we work with on a daily basis. The engineering form
  is in Belgium. I would like my client to know when the print job is
  complete, so that she can pick it up from the printer in her
  building.  It is important that she review it right away and get her
  comments back to me. I submit the print job with the following

  @ Notification Recipient - client at engineering firm
  @ Notification Events - print complete
  @ Notification Type - immediate
  @ Notification Language - French

4.I am in a hotel room and send a print job to a Kinko's store in the
  town I am working in, in order to get a printed report for the
  meeting I am attending in the morning.  Since I'm going out to dinner
  after I get this job submitted, an immediate notification won't do me
  much good. However, I'd like to check in the morning before I drive
  to the Kinko's store to see if the file has been printed. An email
  notification is sufficient for this purpose. I submit the print job
  with the following attributes:

  @ Notification Recipient - me
  @ Notification Events - print complete
  @ Notification Type - email

5.I am printing a large, complex print file. I want to have some
  immediate feedback on the progress of the print job as it prints. I
  submit the print job with the following attributes:

  @ Notification Recipient - me
  @ Notification Type - immediate
  @ Notification Events - all state transitions
  @ Notification Attributes - impression completed

6.I am an operator and my duties is to keep the printer running.  I
  subscribe independently from a job submission so that my subscription
  outlasts any particular job.  I subscribe with the following

  @ Notification Recipient - me
  @ Notification Type - immediate
  @ Notification Events - all Printer state transitions
  @ Notification Attributes - Printer state, printer state reasons,
     device powering up, device powering down.

7.I am an accounting or audit application. I subscribe independently
  from a job submission so that my subscription outlasts any particular
  job.  My subscription may persists across power cycles.  I subscribe
  with the following attributes:

  @ Notification Recipient - me
  @ Notification Type - immediate
  @ Notification Events - job completion
  @ Notification Attributes - impression completed, sheets completed,
     time submitted, time started, time completed, job owner, job size
     in octets, etc.