Hi Dave and Alan, Thursday (9 January 2003)
Per my action item from this week's PSI Telecon (7 January 2003), below
are revised examples and details for PSI discovery via SLPv2 (RFC 2608)
and LDAPv3 (RFC 2251).
Standard PSI URL scheme names (defined below) are REQUIRED for PSI
discovery via SLPv2 and LDAPv3. But, new attributes do NOT need to be
added to the existing standard printer schema for PSI discovery.
URL scheme registration in the IETF tree (without embedded hyphen '-')
is very slow - currently several _years_ before acceptance and RFC
publication. We should register an alternate tree with "pwg-" prefix
for use with PSI and (probably) also IPPFAX.
Cheers,
- Ira McDonald, co-editor of SLPv2 and LDAPv3 Printer Schemas
High North Inc
imcdonald@sharplabs.com
------------------------------------------------------------------------
PSI URL Schemes
---------------
Conformant to "Registration Procedures for URL Scheme Names" (RFC 2717),
the PSI standard URL schemes are:
pwg-psips: - PSI Print Service
pwg-psitd: - PSI Target Device
Conforming PSI Clients MUST convert PSI standard URLs to session-level
HTTP URLs by:
(a) Replacing the PSI scheme name with "http:";
(b) Adding explicitly the IANA-registered PSI standard port.
Conforming PSI Print Services and PSI Target Devices:
(a) MUST only use the (future) IANA-registered PSI port;
(b) MUST NOT use "http:" port 80 for their WSDL/SOAP interface;
(c) MUST advertise using PSI standard URL schemes.
Printer Schema Locations
------------------------
The IANA-registered SLPv2 Printer Template v2.0 is in the directory:
ftp://ftp.iana.org/assignments/svrloc-templates/
in the file:
printer.2.0.en (8 March 2000)
The latest draft of the LDAPv3 Printer Schema is in the directory:
ftp://ftp.pwg.org/pub/pwg/ipp/new_LDAP
in the file:
draft-fleming-ldap-printer-schema-02.txt (30 June 2002)
Note: The LDAP Printer Schema has been withdrawn from the IETF process
and will be published in a future IEEE/ISTO PWG Proposed Standard. The
content of the LDAP Printer Schema has been stable for two years, with
the ASN.1 OIDs assigned in the IBM namespace, NOT in the IETF namespace.
SLPv2 Discovery
---------------
A conforming PSI Print Service or PSI Target Device that supports SLPv2
(RFC 2608) MUST advertise using the IANA-registered standard SLPv2
Printer Template v2.0. ABNF for PSI standard SLPv2 service URLs is:
service:printer:pwg-psips://hostport[abs_path]
service:printer:pwg-psitd://hostport[abs_path]
hostport = host [ ":" port ]
host = IPv6reference / IPv4address / hostname
port = *DIGIT
abs_path = "/" path_segments
SLPv2 Service Request
---------------------
A conforming PSI Client that supports SLPv2 (RFC 2608) MUST discover
available PSI Print Services or PSI Target Devices, acting in the role
of an SLPv2 User Agent (UA), by sending an SLPv2 Service Request (see
section 8.1 of RFC 2608) of the form:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Service Location header (function = SrvRqst = 1) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| length of <PRList> | <PRList> String \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| length of <service-type> | <service-type> String \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| length of <scope-list> | <scope-list> String \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| length of predicate string | Service Request <predicate> \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| length of <SLP SPI> string | <SLP SPI> String \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The <service-type> MUST be either "service:printer:pwg-psips" or
"service:printer:pwg-psitd". Note that the final ":" MUST NOT be
included in the <service-type> value.
The <scope-list> (without prior administrative configuration) MUST be
"DEFAULT" (the standard SLPv2 scope). Note that SLPv2 scopes are
case-sensitive, so the value "DEFAULT" MUST be in uppercase.
The <predicate> (optional) MAY specify any LDAPv3 valid search filter
(see "The String Representation of LDAP Search Filters", RFC 2254).
For example a PSI printer that supports color can be discovered using
a <predicate> value of:
"printer-color-supported=true"
SLPv2 Service Reply
-------------------
The presence or absence of network infrastructure is invisible to the
PSI Client - SLPv2 discovery uses identical SLPv2 requests and replies
in either case.
When operating in a managed environment (with infrastructure), an SLPv2
Directory Agent (DA) will reply to a PSI Client (on behalf of registered
PSI Print Services and PSI Target Devices).
When operating in a zero configuration environment (no infrastructure),
a conforming PSI Print Service or PSI Target Device that supports SLPv2,
acting in the role of an SLPv2 Service Agent (UA), MUST reply directly
to SLPv2 Service Requests received from a PSI Client, by sending an
SLPv2 Service Reply (see section 8.2 of RFC 2608) of the form:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Service Location header (function = SrvRply = 2) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Error Code | URL Entry count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| <URL Entry 1> ... <URL Entry N> \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Each returned PSI Print Service URL MUST specify either an IPv4/IPv6
address (directly usable) or a hostname (which must be resolved by DNS
or mDNS lookup).
SLPv2 DA Discovery
------------------
The DHCP option (decimal) 78 may be used, to find an SLPv2 Directory
Agent (DA), per "DHCP Options for Service Location Protocol" (RFC 2610).
LDAPv3 Discovery
----------------
Conforming PSI Clients that support LDAPv3 (RFC 2251) MUST use the
(future) IEEE/ISTO PWG Proposed Standard LDAPv3 Printer Schema
to search for the LDAPv3 object class "printerService" (a base class)
or "printerServiceAuxClass" (may be attached, for example, to a DMTF CIM
printer object class - same content as "printerService") to discover
PSI standard URLs (values of the "printer-uri" attribute) of the form:
pwg-psips://hostport[abs_path]
pwg-psitd://hostport[abs_path]
Also, an LDAPv3 search filter may be used (as with SLPv2) to find the
substring "pwg-psips" or "pwg-psitd" in the "printer-xri-supported"
attribute.
LDAPv3 Search Request
---------------------
A conforming PSI Client that supports LDAPv3 (RFC 2251) MUST discover
available PSI Print Services or PSI Target Devices by sending an LDAPv3
Search Request (see section 4.5.1 of RFC 2251) of the form:
SearchRequest ::= [APPLICATION 3] SEQUENCE {
baseObject LDAPDN,
scope ENUMERATED {
baseObject (0),
singleLevel (1),
wholeSubtree (2) },
derefAliases ENUMERATED {
neverDerefAliases (0),
derefInSearching (1),
derefFindingBaseObj (2),
derefAlways (3) },
sizeLimit INTEGER (0 .. maxInt),
timeLimit INTEGER (0 .. maxInt),
typesOnly BOOLEAN,
filter Filter,
attributes AttributeDescriptionList }
Filter ::= CHOICE {
and [0] SET OF Filter,
or [1] SET OF Filter,
not [2] Filter,
equalityMatch [3] AttributeValueAssertion,
substrings [4] SubstringFilter,
greaterOrEqual [5] AttributeValueAssertion,
lessOrEqual [6] AttributeValueAssertion,
present [7] AttributeDescription,
approxMatch [8] AttributeValueAssertion,
extensibleMatch [9] MatchingRuleAssertion }
SubstringFilter ::= SEQUENCE {
type AttributeDescription,
-- at least one must be present
substrings SEQUENCE OF CHOICE {
initial [0] LDAPString,
any [1] LDAPString,
final [2] LDAPString } }
MatchingRuleAssertion ::= SEQUENCE {
matchingRule [1] MatchingRuleId OPTIONAL,
type [2] AttributeDescription OPTIONAL,
matchValue [3] AssertionValue,
matchValue [3] AssertionValue,
LDAPv3 Search Result
--------------------
When operating in a managed environment (with infrastructure), an LDAPv3
Server will reply to a PSI Client (on behalf of registered PSI Print
Services and PSI Target Devices), by sending an LDAPv3 Search Result
(see section 4.5.2 of RFC 2251) of the form:
SearchResultEntry ::= [APPLICATION 4] SEQUENCE {
objectName LDAPDN,
attributes PartialAttributeList }
PartialAttributeList ::= SEQUENCE OF SEQUENCE {
type AttributeDescription,
vals SET OF AttributeValue }
-- implementors should note that the PartialAttributeList may
-- have zero elements (if none of the attributes of that entry
-- were requested, or could be returned), and that the vals set
-- may also have zero elements (if types only was requested, or
-- all values were excluded from the result.)
SearchResultReference ::= [APPLICATION 19] SEQUENCE OF LDAPURL
-- at least one LDAPURL element must be present
SearchResultDone ::= [APPLICATION 5] LDAPResult
LDAPv3 Server Discovery
-----------------------
The DHCP option (decimal) 95 may be used, to find an LDAPv3 Server. See
the definition in the directory:
ftp://ftp.iana.org/assignments/bootp-dhcp-extensions/
DNS Server Discovery
--------------------
The DHCP option (decimal) 6 may be used to find a DNS server address.
See "DHCP Options and BOOTP Vendor Extensions" (RFC 2132).
The DHCP option (decimal) 117 may also be used to find a DNS server.
See "The Name Service Search Option for DHCP" (RFC 2937).
This archive was generated by hypermail 2b29 : Thu Jan 09 2003 - 12:33:24 EST