10. Lightweight Presentation The specification for the lightweight presentation protocol (LPP) is contained in RFC 1085, "ISO Presentation Services on top of TCP/IP- based internets" [13]. The services defined in that memo are the minimal set of ISO presentation services required to support ACSE and ROSE. The protocol specified to provide these services is a replacement for the ISO presentation protocol. 10.1. Lightweight Presentation Services All of the ISO presentation services provided by the LPP are mandatory: P-CONNECT, P-RELEASE, P-U-ABORT, P-P-ABORT, and P-DATA. 10.2. Supporting Services Depending on the quality of service indicated in the P-CONNECT request, the LPP will use either UDP (low quality) or TCP (high quality) as the underlying transport protocol. UDP provides an unreliable datagram service, while TCP provides a reliable connection-oriented transport service. Practically speaking, there are two ways to discover whether a remote system supports the LPP over UDP or TCP. The first is to use some undefined form of directory service. This might be nothing more than a local table. The second way is simply to attempt to establish an association with the remote application entity using the desired quality of service. If the transport for that service is unavailable on the remote system, then the local presentation-service-provided will issue a negative P-CONNECT.CONFIRMATION primitive. This will be interpreted by ACSE as a failure to establish an association with the desired quality of service. The following well-known UDP and TCP port numbers are defined: cmot manager 163/tcp cmot manager 163/udp cmot agent 164/tcp cmot agent 164/udp When UDP is used, an implementation need not accept a lightweight presentation PDU whose length exceeds 484. The purpose of this
restriction is to ensure that CMIP requests and responses can be transmitted in a single unfragmented IP datagram. 10.3. Lightweight Presentation Protocol No further agreements are needed for the lightweight presentation protocol defined in RFC 1085. 11. Acknowledgements This RFC is the work of many people. The following members of the IETF Netman working group and other interested individuals made important contributions: Amatzia Ben-Artzi, 3Com Asheem Chandna, AT&T Bell Laboratories Ken Chapman, Digital Equipment Corporation Anthony Chung, Sytek George Cohn, Ungermann-Bass Gabriele Cressman, Sun Microsystems Pranati Kapadia, Hewlett-Packard Lee LaBarre, The MITRE Corporation (chair) Dave Mackie, 3Com Keith McCloghrie, The Wollongong Group Jim Robertson, 3Com Milt Roselinsky, CMC Marshall Rose, The Wollongong Group John Scott, Data General Lou Steinberg, IBM 12. References [1] Cerf, V., "IAB Recommendations for the Development of Internet Network Management Standards", RFC 1052, April 1988. [2] Rose, M., and K. McCloghrie, "Structure and Identification of Management Information for TCP/IP-based internets", RFC 1065, August 1988. [3] McCloghrie, K., and M. Rose, "Management Information Base for Network Management of TCP/IP-based internets", RFC 1066, August 1988. [4] Case, J., M. Fedor, M. Schoffstall, and J. Davin, "A Simple Network Management Protocol (SNMP)", RFC 1098, (Obsoletes RFC 1067), April 1989. [5] ISO 8824: "Information processing systems - Open Systems
Interconnection, Specification of Abstract Syntax Notation One (ASN.1)", Geneva, March 1988. [6] ISO 8825: "Information processing systems - Open Systems Interconnection, Specification of Basic Encoding Rules for Abstract Notation One (ASN.1)", Geneva, March 1988. [7] ISO 8649: "Information processing systems - Open Systems Interconnection, Service Definition for Association Control Service Element". [8] ISO 8650: "Information processing systems - Open Systems Interconnection, Protocol Specification for Association Control Service Element". [9] CCITT Recommendation X.219, Working Document for ISO 9072-1: "Information processing systems - Text Communication, Remote Operations: Model, Notation and Service Definition", Gloucester, November 1987. [10] CCITT Recommendation X.229, Working Document for ISO 9072-2: "Information processing systems - Text Communication, Remote Operations: Protocol Specification", Gloucester, November 1987. [11] ISO DIS 9595-2: "Information processing systems - Open Systems Interconnection, Management Information Service Definition - Part 2: Common Management Information Service", 22 December 1988. [12] ISO DIS 9596-2: "Information Processing Systems - Open Systems Interconnection, Management Information Protocol Specification - Part 2: Common Management Information Protocol", 22 December 1988. [13] Rose, M., "ISO Presentation Services on top of TCP/IP-based internets", RFC 1085, December 1988. [14] OSI Network Management Forum, "Forum Interoperable Interface Protocols", September 1988. [15] ISO DIS 7498-4: "Information processing systems - Open Systems Interconnection, Basic Reference Model - Part 4: OSI Management Framework". [16] ISO/IEC JTC1/SC21/WG4 N571: "Information processing systems - Open Systems Interconnection, Systems Management: Overview", London, July 1988.
[17] Klerer, S. Mark, "The OSI Management Architecture: An Overview", IEEE Network Magazine, March 1988. [18] Ben-Artzi, A., "Network Management for TCP/IP Networks: An Overview", Internet Engineering Task Force working note, April 1988. [19] ISO/IEC JTC1/SC21/WG4 N3324: "Information processing systems - Open Systems Interconnection, Management Information Services - Structure of Management Information - Part I: Management Information Model", Sydney, December 1988. [20] Postel, J., "User Datagram Protocol", RFC 768, August 1980. [21] Postel, J., "Transmission Control Protocol", RFC 793, September 1981. [22] ISO DP 9534: "Information processing systems - Open Systems Interconnection, Application Layer Structure", 10 March 1987. [23] Rose, M., "ISO Transport Services on top of the TCP", RFC 1006, May 1987. [24] ISO 8822: "Information processing systems - Open Systems Interconnection, Connection Oriented Presentation Service Definition", June 1987. [25] Postel, J., "Internet Protocol", RFC 791, September 1981. [26] CCITT Draft Recommendation X.500, ISO DIS 9594/1-8: "The Directory", Geneva, March 1988.
Appendix A - The CMOT Group CMOT DEFINITIONS ::= BEGIN IMPORTS OBJECT-TYPE FROM RFC1065-SMI; IMPORTS mib FROM RFC1066-MIB; cmot OBJECT IDENTIFIER ::= { mib 9 } -- The following assignments are made for the purpose of -- identification within CMOT and do not refer to MIB objects. cmotVersion OBJECT IDENTIFIER ::= { cmot 1 } cmotAcseInfo OBJECT IDENTIFIER ::= { cmot 2 } cmotAcseAccessControl OBJECT IDENTIFIER ::= { cmotAcseInfo 1 } -- The following definition is made for use in referencing a -- managed system (for the purpose of proxy management) in the -- CMIP Object Instance field. It does not represent a MIB -- object. cmotSystemID OBJECT-TYPE SYNTAX CmotSystemID ACCESS not-accessible STATUS optional ::= { cmot 3 } CmotSystemID ::= CHOICE { arbitrary [0] IMPLICIT OCTET STRING, proxyIndex [1] IMPLICIT INTEGER, inetAddr [2] IMPLICIT IpAddress, domainName [3] IMPLICIT OCTET STRING, mac802Addr [4] IMPLICIT OCTET STRING, x121Addr [5] IMPLICIT OCTET STRING, nsap [6] IMPLICIT OCTET STRING, netbiosName [7] IMPLICIT OCTET STRING, snaName [8] IMPLICIT OCTET STRING, adminId [9] IMPLICIT OBJECT IDENTIFIER } -- All addresses should be conveyed in network-byte order. END
Appendix B - Management Information Summary RFC1066-MIB-INTERPRETATION { iso org(3) dod(6) internet(1) mgmt(2) 1 } DEFINITIONS ::= BEGIN IMPORTS mgmt, OBJECT-TYPE FROM RFC1065-SMI; mib OBJECT IDENTIFIER ::= { mgmt 1 } system OBJECT IDENTIFIER ::= { mib 1 } interfaces OBJECT IDENTIFIER ::= { mib 2 } at OBJECT IDENTIFIER ::= { mib 3 } ip OBJECT IDENTIFIER ::= { mib 4 } icmp OBJECT IDENTIFIER ::= { mib 5 } tcp OBJECT IDENTIFIER ::= { mib 6 } udp OBJECT IDENTIFIER ::= { mib 7 } egp OBJECT IDENTIFIER ::= { mib 8 } -- definition of object class OBJECT-CLASS MACRO ::= BEGIN TYPE NOTATION ::= SubClassOf Superiors Names Attributes VALUE NOTATION ::= value(VALUE OBJECT IDENTIFIER) SubClassOf ::= "SUBCLASS OF" value(OBJECT-CLASS) | empty Superiors ::= "SUPERIORS" "{" SuperiorList "}" | empty Names ::= "NAMES" "{" AttributeList "}" | empty Attributes ::= "CONTAINS" "{" AttributeList "}" | empty SuperiorList ::= Superior | Superior "," SuperiorList Superior ::= value(OBJECT-CLASS) AttributeList ::= Attribute | Attribute "," AttributeList Attribute ::= value(OBJECT-TYPE) END -- the System group
system OBJECT-CLASS NAMES { cmotSystemID } -- Appendix A CONTAINS { sysDescr, sysObjectID, sysUpTime } ::= { mib 1 } -- the Interfaces group interfaces OBJECT-CLASS SUPERIORS { system } CONTAINS { ifNumber } ::= { mib 2 } ifTable OBJECT-CLASS SUPERIORS { interfaces } ::= { interfaces 2 } ifEntry OBJECT-CLASS SUPERIORS { ifTable } NAMES { ifIndex } CONTAINS { ifIndex, ifDescr, ifType, ifMtu, ifSpeed, ifPhysAddress, ifAdminStatus, ifOperStatus, ifLastChange, ifInOctets, ifInUcastPkts, ifInNUcastPkts, ifInDiscards, ifInErrors, ifInUnknownProtos, ifOutOctets, ifOutUcastPkts, ifOutNUcastPkts, ifOutDiscards, ifOutErrors, ifOutQLen } ::= { ifTable 1 }
-- the Address Translation group at OBJECT-CLASS SUPERIORS { system } ::= { mib 3 } atTable OBJECT-CLASS SUPERIORS { at } ::= { at 1 } atEntry OBJECT-CLASS SUPERIORS { atTable } NAMES { atIfIndex, atNetAddress } CONTAINS { atIfIndex, atPhysAddress, atNetAddress } ::= { atTable 1 } -- the IP group ip OBJECT-CLASS SUPERIORS { system } CONTAINS { ipForwarding, ipDefaultTTL, ipInReceives, ipInHdrErrors, ipInAddrErrors, ipForwDatagrams, ipInUnknownProtos, ipInDiscards, ipInDelivers, ipOutRequests, ipOutDiscards, ipOutNoRoutes, ipReasmTimeout, ipReasmReqds, ipReasmOKs, ipReasmFails, ipFragOKs, ipFragFails, ipFragCreates }
::= { mib 4 } -- the IP Interface table ipAddrTable OBJECT-CLASS SUPERIORS { ip } ::= { ip 20 } ipAddrEntry OBJECT-CLASS SUPERIORS { ipAddrTable } NAMES { ipAdEntAddr } CONTAINS { ipAdEntAddr, ipAdEntIfIndex, ipAdEntNetMask, ipAdEntBcastAddr } ::= { ipAddrTable 1 } -- the IP Routing table ipRoutingTable OBJECT-CLASS SUPERIORS { ip } ::= { ip 21 } ipRouteEntry OBJECT-CLASS SUPERIORS { ipRoutingTable } NAMES { ipRouteDest } CONTAINS { ipRouteDest, ipRouteIfIndex, ipRouteMetric1, ipRouteMetric2, ipRouteMetric3, ipRouteMetric4, ipRouteNextHop, ipRouteType, ipRouteProto, ipRouteAge } ::= { ipRoutingTable 1 } -- the ICMP group icmp OBJECT-CLASS SUPERIORS { system } CONTAINS { icmpInMsgs,
icmpInErrors, icmpInDestUnreachs, icmpInTimeExcds, icmpInParmProbs, icmpInSrcQuenchs, icmpInRedirects, icmpInEchos, icmpInEchoReps, icmpInTimestamps, icmpInTimestampReps, icmpInAddrMasks, icmpInAddrMaskReps, icmpOutMsgs, icmpOutErrors, icmpOutDestUnreachs, icmpOutTimeExcds, icmpOutParmProbs, icmpOutSrcQuenchs, icmpOutRedirects, icmpOutEchos, icmpOutEchoReps, icmpOutTimestamps, icmpOutTimestampReps, icmpOutAddrMasks, icmpOutAddrMaskReps } ::= { mib 5 } -- the TCP group tcp OBJECT-CLASS SUPERIORS { system } CONTAINS { tcpRtoAlgorithm, tcpRtoMin, tcpRtoMax, tcpMaxConn, tcpActiveOpens, tcpPassiveOpens, tcpAttemptFails, tcpEstabResets, tcpCurrEstab, tcpInSegs, tcpOutSegs, tcpRetransSegs } ::= { mib 6 }
-- the TCP connections table tcpConnTable OBJECT-CLASS SUPERIORS { tcp } ::= { tcp 13 } tcpConnEntry OBJECT-CLASS SUPERIORS { tcpConnTable } NAMES { tcpConnLocalAddress, tcpConnLocalPort, tcpConnRemAddress, tcpConnRemPort } CONTAINS { tcpConnState, tcpConnLocalAddress, tcpConnLocalPort, tcpConnRemAddress, tcpConnRemPort } ::= { tcpConnTable 1 } -- the UDP group udp OBJECT-CLASS SUPERIORS { system } CONTAINS { udpInDatagrams, udpNoPorts, udpInErrors, udpOutDatagrams } ::= { mib 7 } -- the EGP group egp OBJECT-CLASS SUPERIORS { system } CONTAINS { egpInMsgs, egpInErrors, egpOutMsgs, egpOutErrors } ::= { mib 8 }
-- the EGP Neighbor table egpNeighTable OBJECT-CLASS SUPERIORS { egp } ::= { egp 5 } egpNeighEntry OBJECT-CLASS SUPERIORS { egpNeighTable } NAMES { egpNeighAddr } CONTAINS { egpNeighState, egpNeighAddr } ::= { egpNeighTable 1 } END
Appendix C - Sample Protocol Exchanges The following are sample protocol exchanges between a manager and an agent. The manager establishes an association with the agent, requests the number of IP address and header errors, requests the type of route corresponding to the destination address 10.0.0.51, requests the TCP connection with the well-known port for FTP, and then releases the association. All of these samples show the lightweight presentation protocol being used over TCP. -- -- the manager sends an ACSE association request carried in a -- presentation connect request PDU -- { connectRequest { -- LPP version version-1, reference { callingSSUserReference "sri-nic.arpa", commonReference "880821222531Z" }, asn 1.3.6.1.2.1.9.1.1, user-data { -- ACSE protocol-version version1, application-context-name 1.3.6.1.2.1.9.1.1, user-information { functionalUnits { direct-reference 1.0.9596.2.1.0.0, encoding { single-ASN1-type '010110101010101010110B' -- Full Manager } } } } } } -- -- the agent sends an ACSE association response carried in a -- presentation connect response PDU -- { connectResponse { -- LPP user-data {
user-information { -- ACSE functionalUnits { direct-reference 1.0.9596.2.1.0.0, encoding { single-ASN1-type '101001010101010101110B' -- Full Agent } } } } } } -- -- the manager sends a get request to read the values of -- ipInHdrErrors and ipInAddrErrors -- { userData { -- LPP ro-Invoke { -- ROSE invokeID 10, operation-value m-Get(3), argument { -- CMIP baseManagedObjectClass { globalForm ip { 1.3.6.1.2.1.4 } }, baseManagedObjectInstance { distinguishedName { relativeDistinguishedName {} } }, attributeIdList { attributeId { localID 4 -- ipInHdrErrors }, attributeId { localID 5 -- ipInAddrErrors } } } } } }
-- -- the agent replies with a get response indicating that -- ipInHdrErrors = 0 and ipInAddrErrors = 2 -- { userData { -- LPP ro-Result { -- ROSE invokeID 10, { operation-value m-Get(3), argument { -- CMIP baseManagedObjectClass { globalForm ip { 1.3.6.1.2.1.4 } }, baseManagedObjectInstance { distinguishedName { relativeDistinguishedName {} } }, currentTime "19880821222541.300000Z", attributeList { attribute { attributeId { localID 4 -- ipInHdrErrors }, attributeValue 0 }, attribute { attributeId { localID 5 -- ipInAddrErrors }, attributeValue 2 } } } } } } } -- -- the manager sends a get request to discover the ipRouteType for -- the IP routing entry with ipRouteDest = 10.0.0.51 --
{ userData { -- LPP ro-Invoke { -- ROSE invokeID 11, operation-value m-Get (3), argument { -- CMIP baseManagedObjectClass { globalForm ipRouteEntry { 1.3.6.1.2.1.4.21.1 } }, baseManagedObjectInstance { distinguishedName { relativeDistinguishedName { attributeValueAssertion { attributeType ipRouteDest { 1.3.6.1.2.1.4.21.1.1 }, attributeValue 10.0.0.51 } } } }, attributeIdList { attributeId { localID 8 -- ipRouteType } } } } } } -- -- the agent replies with a get response indicating the appropriate -- route type -- { userData { -- LPP ro-Result { -- ROSE invokeID 11, { operation-value m-Get(3), argument { -- CMIP baseManagedObjectClass { globalForm ipRouteEntry { 1.3.6.1.2.1.4.21.1 } }, baseManagedObjectInstance { distinguishedName {
relativeDistinguishedName { attributeValueAssertion { attributeType ipRouteDest { 1.3.6.1.2.1.4.21.1.1 }, attributeValue 10.0.0.51 } } } }, currentTime "19880821222613.780000Z", attributeList { attribute { attributeId { localID 8 -- ipRouteType }, attributeValue "direct" } } } } } } } -- -- the manager sends a get request to read the TCP connection with -- the well-known port for FTP. -- { userData { -- LPP ro-Invoke { -- ROSE invokeID 12, operation-value m-Get(3), argument { -- CMIP baseManagedObjectClass { globalForm tcpConnTable { 1.3.6.1.2.1.6.13 } }, baseManagedObjectInstance { distinguishedName { relativeDistinguishedName { } } }, scope oneLevel(1), filter { item {
equality { attributeType tcpConnLocalPort { 1.3.6.1.2.1.6.13.1.3 } attributeValue 21 -- ftp } } } attributeIdList { } -- an empty list means all attributes } } } } -- -- the agent replies with a get response providing the desired TCP -- connection information. If more than one TCP connection had -- satisfied the filter condition, a series of one or more linked -- reply PDUs would have been returned before the final get response. -- { userData { -- LPP ro-Result { -- ROSE invokeID 12, { operation-value m-Get(3), argument { -- CMIP baseManagedObjectClass { globalForm tcpConnEntry { 1.3.6.1.2.1.6.13.1 } }, baseManagedObjectInstance { distinguishedName { relativeDistinguishedName { attributeValueAssertion { attributeType { tcpConnLocalAddress }, attributeValue 128.10.0.34 }, attributeValueAssertion { attributeType { tcpConnLocalPort }, attributeValue 21 }, attributeValueAssertion { attributeType { tcpConnRemAddress }, attributeValue 0.0.0.0 }, attributeValueAssertion { attributeType { tcpConnRemPort },
attributeValue 0 }, } } }, currentTime "19880821222541.300000Z", attributeList { attribute { attributeId { localId 1 -- tcpConnState }, attributeValue LISTEN }, attribute { attributeId { localId 2 -- tcpConnLocalAddress }, attributeValue 128.10.0.34 }, attribute { attributeId { localId 3 -- tcpConnLocalPort }, attributeValue 21 }, attribute { attributeId { localId 4 -- tcpConnRemAddress }, attributeValue 0.0.0.0 }, attribute { attributeId { localId 5 -- tcpConnRemPort }, attributeValue 0 } } } } } } }
-- -- the manager sends a presentation release request -- { releaseRequest { -- LPP user-data { -- ACSE reason normal } } } -- -- the agent sends a presentation release response -- { releaseResponse { -- LPP user-data { -- ACSE reason normal } } } Authors' Addresses Unnikrishnan S. Warrier Unisys Corporation 2400 Colorado MS #42-13 Santa Monica, CA 90406 Phone: (213) 453-5196 Email: unni@cs.ucla.edu Larry Besaw Hewlett-Packard 3404 East Harmony Road Fort Collins, CO 80525 Phone: (303) 229-6022 Email: lmb%hpcndaw@hplabs.hp.com