RE: IPP> Comments on MIB access document

Paul Moore <paulmo@microsoft.com> Wed, 05 August 1998 03:08 UTC

Delivery-Date: Tue, 04 Aug 1998 23:08:22 -0400
Return-Path: ipp-owner@pwg.org
Received: from cnri.reston.va.us (ns [132.151.1.1]) by ietf.org (8.8.5/8.8.7a) with ESMTP id XAA28536 for <ietf-archive@ietf.org>; Tue, 4 Aug 1998 23:08:21 -0400 (EDT)
Received: from lists.underscore.com (uscore-1.mv.com [199.125.85.30]) by cnri.reston.va.us (8.8.5/8.8.7a) with ESMTP id XAA13159 for <ietf-archive@cnri.reston.va.us>; Tue, 4 Aug 1998 23:08:00 -0400 (EDT)
Received: from localhost (daemon@localhost) by lists.underscore.com (8.7.5/8.7.3) with SMTP id XAA03299 for <ietf-archive@cnri.reston.va.us>; Tue, 4 Aug 1998 23:08:15 -0400 (EDT)
Received: by pwg.org (bulk_mailer v1.5); Tue, 4 Aug 1998 23:00:08 -0400
Received: (from daemon@localhost) by lists.underscore.com (8.7.5/8.7.3) id WAA02756 for ipp-outgoing; Tue, 4 Aug 1998 22:57:31 -0400 (EDT)
Message-ID: <CB6657D3A5E0D111A97700805FFE6587BF6FE4@red-msg-51.dns.microsoft.com>
From: Paul Moore <paulmo@microsoft.com>
To: 'Tom Hastings' <hastings@cp10.es.xerox.com>
Cc: "'ipp@pwg.org'" <ipp@pwg.org>
Subject: RE: IPP> Comments on MIB access document
Date: Tue, 04 Aug 1998 19:57:14 -0700
X-Mailer: Internet Mail Service (5.5.2232.9)
Sender: owner-ipp@pwg.org

	>
	>8.
	>
	>You state that for non-printer MIB things you dont have to say what
the
	>device is because this is implicit in the OID. There is a level
shift here.
	>The devices enumerated by the proposed IPP device list is not the
same as
	>the device list in each printer. A printer will have a printer
device, a
	>disk, some RAM, etc.

Yes, it is a level shift on purpose, because the "devices-supported" and the

"which-device" only apply to the attribute group names that start
with 'prt-'.  The "devices-supported" and "which-devices" (being printers
only) have no meaning when accessing attribute group names that start
'mib-'.

So which IPP fan-out device gets queried when I do a get attributes for
non-prt MIB OIDS. 


> -----Original Message-----
> From:	Tom Hastings [SMTP:hastings@cp10.es.xerox.com]
> Sent:	Tuesday, August 04, 1998 6:40 PM
> To:	Paul Moore
> Cc:	'ipp@pwg.org'
> Subject:	Re: IPP> Comments on MIB access document
> 
> Paul,
> 
> You ask some good questions.  Yes, it is true that the MIB access
> proposal is not exactly the same as the current attribute of the
> Printer and Job objects in IPP/1.0.
> 
> Here are my replies.
> 
> Several ISSUES are indicated that need to be resolved.
> 
> Thanks,
> Tom
> 
> At 18:34 07/16/98 PDT, Paul Moore wrote:
> >This document proposed many extremely significant changes to IPP. They
> are
> >so radical that I do not thing that they can be accepted simply as an
> >optional extension to 1.0. Many of the issue it tries to solve are very
> >valid - but this is not the right way to address them.
> 
> Do you have an alternative.  The goal was to leverage the implementation
> of Printer MIB agents that are in many network printers today.  So that
> an IPP printer implementation that chooses to support the MIB access
> extension would be able to do so with minimal extra code in the printer.
> The IPP Printer object implementation would pass the MIB attribute
> requests 
> to the SNMP agent, either through the front door using SNMP or through
> the back door using internal calls.  In either approach, the access to the
> SNMP agent would use the Get and GetNext semantics to access the objects
> in a subtree.
> 
> >
> >1.
> >
> >The current model is very strong on hiding the physical details of
> fanning
> >out. The only thing exposed is a logical printer - the fact that this may
> >represent multiple devices is deliberatly not exposed. This proposal
> turns
> >this 180 degrees and explicitly exposes this. No comment on whether this
> is
> >good or bad - I merely point out that this is a BIG change to slip in via
> an
> >optional extension for accessing MIBs.
> 
> Yes, it is a change.  But it is a natural kind of changes, since the
> IPP Printer is a logical printer and the MIB is a physical concept.
> This is a time-honored approach to system design.  Some things you
> want to hide and some things you don't.
> 
> However, even IPP/1.0 does have the 'stopped-partly' concept to reflect
> the state of an IPP Printer that has some devices stopped and some not.
> So the concept of multiple devices is already present in IPP 1.0.
> See the figures in section 1.1 and 2.1 which both show multiple devices
> for a single IPP Printer object.
> 
> Also for the simplest (and most likely) implementation, one IPP Printer
> controls one device.  So the difference between the logical and physical
> disappears.
>  
> There is no way to think of the Printer MIB as representing several
> devices at once, so we couldn't keep the Printer MIB attributes at the
> same level as the IPP Printer.
> 
> >
> >Note that this is done for some non-MIB attributes as well.
> 
> Yes, in just the same way as the IPP/1.0 "document-format" input parameter
> 
> specializes certain Printer attribute values to the specified document
> format, so that the Printer attribute isn't representing the
> union across multiple document formats.
> 
> >
> >2. 
> >
> >The device is described as being an 'object'. This challenges the whole
> >concept of an object in IPP. Everywhere else an Object can receive
> >operations and has a URI; the device does neither. Having said that, a
> model
> >that does expose 'devices' and 'objects' but that does not represent such
> a
> >fundamental construct (device) as a object seems very strange.
> 
> Perhaps we should not call it an object, unless we have operations that
> have a device as a target.  We could be more vague, same as we have done
> for documents, which are not described as objects.  See section 2.2.
> 
> ISSUE:  Should we change the description of a device so that it is not
> an object?
> 
> 
> >
> >3. 
> >
> >This scheme introduces a structured namespace. No comment on whether this
> is
> >good or bad - I merely point out that this is a BIG change from the flat
> >list in the main model. 
> 
> Agreed.  The name space is structured to achieve the goal of simple
> implementation without complex mapping tables from attribute keyword
> names in English to Printer MIB objects.  On the other hand, these
> structured names are really "attribute group names" like we have
> in IPP/1.0.  In IPP/1.0, we have the attribute group names that can
> be supplied in a Get-Printer-Attributes operation:
> 
>   'printer-description'
>   'job-template'
>   'all'
> 
> that return more than one attribute in the response.
> 
> >
> >4.
> >
> >The printer MIB is given a special place in this scheme. What about the
> job
> >mib or the finisher mib.
> 
> I suggest that the Finisher MIB will add four structured attributes,
> since it is an extension to the Printer MIB.
> 
> However, for any Job MIB attributes that we want to have access
> to via IPP, we should add as real IPP attributes with U.S. English
> keywords.
> There is a lot more overlap between Job MIB attributes and IPP job
> attributes
> already (on purpose).
> 
> >
> >5. 
> >
> >The MIB query is optional but is overloaded on the get attributes
> operation.
> >I cannot find out if a printer supports it without trying and failing.
> >Normally such big pieces of functionality would be a separate operation.
> 
> As with any Get-Printer-Attributes query, any supported Operation
> attribute 
> that is supplied with unsupported attribute values is ignored and does not
> 
> return an error.  Instead, the IPP Printer returns
> the "requested-attributes" operation attribute in the Unsupported
> Attributes group [2] with only the values that are unsupported, i.e.,
> with the keyword names of the unsupported attributes as the values.
> 
> So an application could supply unsupported MIB attributes along with 
> supported other attributes and still get back a response.
> 
> If we made it a separate operation, so that it could be queried as a value
> in the Printer's "operations-supported" attribute, you would still need
> to make a query if you wanted to find out.  Instead, you can query 
> a required MIB object, such as 'prt-att-5-1' (prtGeneralConfigChanges)
> to see if it comes back as an attribute with a value, or you get back
> no attributes. 
> 
> ISSUE:  Should we add a note at to this method for testing as to whether
> the MIB access feature is supported?
> 
> >
> >6.
> >
> >What is the relationship between the information I obtain via the MIb
> query
> >and the data I obtain via the other queries? Will the result of querying
> the
> >job mib be the same as the result of doing a getjobs? What about
> >printer-status and the MIB status?
> 
> Certainly the Job MIB should return both IPP jobs and non-IPP jobs, i.e.,
> jobs submitted to the printer via some other job submission protocol.
> Whether an IPP Get-Jobs operation also returns non-IPP jobs, would be
> up to implementation.  NOTE that if non-IPP jobs were returned, there
> might
> not be a "job-uri" attribute, even though there is a "job-id".  On the
> other
> hand, there is no reason why an IPP Get-Jobs operation couldn't 
> manufacture a "job-uri" for each non-IPP job, as long as it produced
> the same value for a job on successive queries.
> 
> ISSUE: Should we RECOMMEND that non-IPP jobs be accessible via Get-Jobs,
> Cancel-Job, and Get-Job-Attributes?  Should we REQUIRE it?
> 
> >
> >7.
> >
> >If I dont say what device I want it will go to the 'first' one. What does
> >first mean? 
> 
> The first value in the corresponding IPP Printer object's
> "devices-supported"
> attribute.  See lines 451-452.
> 
> >             Is it guaranteed to be the same always?
> 
> The same unless the system is reconfigured.
> 
> >How do I support intelligent pools (If I send a PS file there is a choice
> of
> >two printers, if I send PCL there is a choice of 4. Only 2 printers are
> >available for large jobs, but if i send a small job there is a choice of
> 4).
> 
> ISSUE:  Should the "document-format" input parameter affect which devices
> are returned or not?  If it MAY, then the first device in the 
> "devices-supported" might depend on which document-format value was
> supplied
> (and that the implementation supports the "document-format" specializing
> the returned attributes).
> 
> My suggestion is that "document-format" NOT affect which devices are
> returned.  This is simpler and conforms to the definition that the
> "document-format" input parameter only reflects what the IPP Printer
> object uses to validate jobs which are all "xxx-supported" attribtes. 
> None of the Printer MIB attributes are of the form "xxx-supported".
> 
> >What should the device list return?
> 
> I suggest that the "devices-supported" Printer attribute not be affected
> by the "document-format" input parameter, if supplied and if supported.
> 
> >What happens if a device is turned off?
> 
> ISSUE:  Good question.  I suggest that the IPP Printer return the 
> IPP out-of-band 'unknown' value for each attribute for a device that
> is turned off.  It should return real values for any other attributes.
> OK?
> 
> If the first device is the device turned off, then a
> Get-Printer-Attributes with no "which-device" supplied may get back
> 'unknown' for each attribute, same as if a particular "which-device"
> was supplied that was turned off.
> 
> 
> >
> >8.
> >
> >You state that for non-printer MIB things you dont have to say what the
> >device is because this is implicit in the OID. There is a level shift
> here.
> >The devices enumerated by the proposed IPP device list is not the same as
> >the device list in each printer. A printer will have a printer device, a
> >disk, some RAM, etc.
> 
> Yes, it is a level shift on purpose, because the "devices-supported" and
> the 
> "which-device" only apply to the attribute group names that start
> with 'prt-'.  The "devices-supported" and "which-devices" (being printers
> only) have no meaning when accessing attribute group names that start
> 'mib-'.
> 
> ISSUE:  How about saying that the list of devices supported by the
> "devices-supported" Printer attribute is the subset
> of the hrDeviceTable list of devices that are printers.  For consistency
> with MIB walks using the 'mib-att-xxx' group name, we should also specify
> that the order of the printer devices in the hrDeviceTable be the same
> order
> as in the "devices-supported".
> 
> >
> >9.
> >
> >You do not say what must happen if I send a valid query but the result is
> >empty. I.e. read the alert table.
> 
> ISSUE:  Good point.  What should be returned with each SNMPv2 error?
> 
> We suggest the following mapping of SNMPv2 out-of-band values for SNMP
> objects
> to IPP out-of-band value for attributes:
> 
> SNMPv2 out of band value      IPP out-of-band value or action
> ------------------------      -------------------------------
> noSuchInstance                'no-value'
> noSuchObject                  ignore the requested attribute and return
> the
>                               "requested-attributes" operation attribute
> with 
>                               only the unsupported values in the
> Unsupported 
>                               Attributes Group [2].
> 
> So if requesting the alert table and there are no entries, return:
> 
>    'prt-tab-18' = 'no-value'
> 
> We suggest the following mapping of SNMPv2 errors to IPP out-of-band
> attribute values.  An error cannot be returned, since other valid
> attributes may be requested in the same request.
> 
> SNMP error    SNMP version    action or attribute value returned
> ----------    ------------    ----------------------------------
> noError(0)    v1              return the requested value of the object
> tooBig(1)     v1              make repeated requests of smaller amounts
>                               or chunk the responses back to the client
>                               MUST not return an error
> noSuchName(2) v1 compat only  ignore the requested attribute and return
> the
>                               "requested-attributes" operation attribute
> with 
>                               only the unsupported values in the
> Unsupported 
>                               Attributes Group [2].
> badValue(3)   v1 only set     can't happen
> readOnly(4)   v1 only set     can't happen
> genErr(5)     v2 deprecated   return 'server-error-internal-error'
> noAccess(6)   v2              return 'client-error-not-authorized
> wrongType(7)  v2 only set     can't happen
> wrongLength(8)  v2 only set     can't happen
> wrongEncoding(9)  v2 only set     can't happen
> wrongValue(10)  v2 only set     can't happen
> noCreation(11)  v2 only set     can't happen
> inconsistentValue(12)  v2 only set     can't happen
> resourceUnavailable(13)  v2 only set     can't happen
> commitFailed(14)  v2 only set     can't happen
> undoFailed(15)  v2 only set     can't happen