IDMR Working Group Keith McCloghrie
INTERNET-DRAFT Dino Farinacci
Expires December 1996 Cisco Systems
Dave Thaler
University of Michigan
10 June 1996
Protocol Independent Multicast MIB
<draft-ietf-idmr-pim-mib-02.txt>
Status of this Memo
This document is an Internet Draft. 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 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 a "work in progress".
1. Introduction
This memo defines an experimental portion of the Management Information
Base (MIB) for use with network management protocols in the Internet
community. In particular, it describes managed objects used for
managing the Protocol Independent Multicast (PIM) protocol [5,6,7,8].
This MIB module is applicable to IP multicast routers which implement
PIM.
Draft PIM MIB June 1996
2. Revision History
A record of changes which will be removed before publication.
9 June:
(1) added pimRPSetTable and pimCandidateRPTable.
(2) deprecated pimRPTable (to retain support for PIM version 1).
(3) removed pimGroupTable.
(4) added pimBSRAddress, pimBSRExpiryTime, pimCandidateBSRPreference
and pimCandidateRPHoldTime.
4 November:
(1) changed the PIM Group table to hold information common to all RPs
of a group.
(2) added the PIM RP table with each entry specific to an RP of a
group.
(3) added pimNeighborMode
(4) modified the pimGroupTable to be indexed by pimGroupAddress and
pimGroupRP, in order to allow for multiple RPs per group.
15 July - initial version.
3. The SNMP Network Management Framework
The SNMP Network Management Framework presently consists of three major
components. They are:
o RFC 1902 [1] which defines the SMI, the mechanisms used for
describing and naming objects for the purpose of management.
o STD 17, RFC 1213 [2] defines MIB-II, the core set of managed
objects for the Internet suite of protocols.
o RFC 1157 [3] and RFC 1905 [4] which define two versions of the
protocol used for network access to managed objects.
Expires December 1996 [Page 2]
Draft PIM MIB June 1996
The Framework permits new objects to be defined for the purpose of
experimentation and evaluation.
3.1. Object Definitions
Managed objects are accessed via a virtual information store, termed the
Management Information Base or MIB. Objects in the MIB are defined
using the subset of Abstract Syntax Notation One (ASN.1) defined in the
SMI. In particular, each object type is named by an OBJECT IDENTIFIER,
an administratively assigned name. The object type together with an
object instance serves to uniquely identify a specific instantiation of
the object. For human convenience, we often use a textual string,
termed the descriptor, to refer to the object type.
4. Overview
This MIB module contains five scalars and five tables. The tables are:
(1) the PIM Interface Table which contains one row for each of the
router's PIM interfaces;
(2) the PIM Neighbor Table which contains one row for each of the
router's PIM neighbors; and
(3) the PIM RP-Set Table which contains the PIM (version 2) information
for sets of candidate Rendezvous Points (RPs) for IP multicast
group addresses with particular address prefixes.
(4) the PIM Candidate-RP Table which contains the IP multicast groups
for which the local router is to advertise itself as a Candidate-
RP. If this table is empty, then the local router advertises
itself as a Candidate-RP for all groups.
(5) the (deprecated) PIM RP Table which contains the PIM (version 1)
information for IP multicast groups which is common to all RPs of a
group.
Expires December 1996 [Page 3]
Draft PIM MIB June 1996
5. Definitions
PIM-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY, OBJECT-TYPE, experimental,
Integer32, IpAddress, TimeTicks FROM SNMPv2-SMI
RowStatus FROM SNMPv2-TC
MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF;
pimMIB MODULE-IDENTITY
LAST-UPDATED "9506121659Z"
ORGANIZATION "IETF IDMR Working Group."
CONTACT-INFO
" Keith McCloghrie
Cisco Systems, Inc.
170 West Tasman Drive
San Jose, CA 95134-1706
US
Phone: +1 408 526 5260
EMail: kzm@cisco.com"
DESCRIPTION
"The MIB module for management of PIM routers."
::= { experimental 61 }
pimMIBObjects OBJECT IDENTIFIER ::= { pimMIB 1 }
pim OBJECT IDENTIFIER ::= { pimMIBObjects 1 }
pimMessageInterval OBJECT-TYPE
SYNTAX Integer32
UNITS "seconds"
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The interval at which periodic PIM sparse-mode (Join/Prune)
messages are to be sent."
::= { pim 1 }
pimBSRAddress OBJECT-TYPE
SYNTAX IpAddress
MAX-ACCESS read-only
STATUS current
Expires December 1996 [Page 4]
Draft PIM MIB June 1996
DESCRIPTION
"The IP address of the bootstrap router (BSR) for the local
PIM region."
::= { pim 7 }
pimBSRExpiryTime OBJECT-TYPE
SYNTAX TimeTicks
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The minimum time remaining before the bootstrap router will
be declared down. For candidate BSRs, this is the time until
it sends an RP-Set message. For other routers, this is the
time until it may accept an RP-Set message from a lower
candidate BSR."
::= { pim 8 }
pimCandidateBSRPreference OBJECT-TYPE
SYNTAX Integer32 (-1..255)
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The preference value for the local system as a candidate
bootstrap router. The value of -1 is used to indicate that
the local system is not a candidate BSR."
::= { pim 9 }
pimCandidateRPHoldTime OBJECT-TYPE
SYNTAX Integer32 (0..255)
UNITS "seconds"
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The holdtime of the local system when it is a candidate RP.
The value of 0 is used to indicate that the local system is
not a Candidate-RP."
::= { pim 10 }
Expires December 1996 [Page 5]
Draft PIM MIB June 1996
-- The PIM Interface Table
pimInterfaceTable OBJECT-TYPE
SYNTAX SEQUENCE OF PimInterfaceEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The (conceptual) table listing the router's PIM interfaces.
IGMP and PIM are enabled on all interfaces listed in this
table."
::= { pim 2 }
pimInterfaceEntry OBJECT-TYPE
SYNTAX PimInterfaceEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry (conceptual row) in the pimInterfaceTable."
INDEX { pimInterfaceIfIndex }
::= { pimInterfaceTable 1 }
PimInterfaceEntry ::= SEQUENCE {
pimInterfaceIfIndex Integer32,
pimInterfaceAddress IpAddress,
pimInterfaceNetMask IpAddress,
pimInterfaceMode INTEGER,
pimInterfaceDR IpAddress,
pimInterfaceQueryInterval Integer32,
pimInterfaceStatus RowStatus
}
pimInterfaceIfIndex OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The ifIndex value of this PIM interface."
::= { pimInterfaceEntry 1 }
pimInterfaceAddress OBJECT-TYPE
SYNTAX IpAddress
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The IP address of the PIM interface."
Expires December 1996 [Page 6]
Draft PIM MIB June 1996
::= { pimInterfaceEntry 2 }
pimInterfaceNetMask OBJECT-TYPE
SYNTAX IpAddress
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The network mask for the IP address of the PIM interface."
::= { pimInterfaceEntry 3 }
pimInterfaceMode OBJECT-TYPE
SYNTAX INTEGER { dense(1), sparse(2) }
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The configured mode of this PIM interface."
DEFVAL { dense }
::= { pimInterfaceEntry 4 }
pimInterfaceDR OBJECT-TYPE
SYNTAX IpAddress
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The Designated Router on this PIM interface. For point-
to-point interfaces, this object has the value 0.0.0.0."
::= { pimInterfaceEntry 5 }
pimInterfaceQueryInterval OBJECT-TYPE
SYNTAX Integer32
UNITS "seconds"
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The frequency at which PIM Router-Query messages are
transmitted on this PIM interface."
DEFVAL { 30 }
::= { pimInterfaceEntry 6 }
pimInterfaceStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The status of this entry. Creating the entry enables PIM
Expires December 1996 [Page 7]
Draft PIM MIB June 1996
on the interface; destroying the entry disables PIM on the
interface."
::= { pimInterfaceEntry 7 }
-- The PIM Neighbor Table
pimNeighborTable OBJECT-TYPE
SYNTAX SEQUENCE OF PimNeighborEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The (conceptual) table listing the router's PIM neighbors."
::= { pim 3 }
pimNeighborEntry OBJECT-TYPE
SYNTAX PimNeighborEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry (conceptual row) in the pimNeighborTable."
INDEX { pimNeighborAddress }
::= { pimNeighborTable 1 }
PimNeighborEntry ::= SEQUENCE {
pimNeighborAddress IpAddress,
pimNeighborIfIndex Integer32,
pimNeighborUpTime TimeTicks,
pimNeighborExpiryTime TimeTicks,
pimNeighborMode INTEGER
}
pimNeighborAddress OBJECT-TYPE
SYNTAX IpAddress
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The IP address of the PIM neighbor for which this entry
contains information."
::= { pimNeighborEntry 1 }
pimNeighborIfIndex OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
Expires December 1996 [Page 8]
Draft PIM MIB June 1996
DESCRIPTION
"The value of ifIndex for the interface used to reach this
PIM neighbor."
::= { pimNeighborEntry 2 }
pimNeighborUpTime OBJECT-TYPE
SYNTAX TimeTicks
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The time since this PIM neighbor (last) became a neighbor
of the local router."
::= { pimNeighborEntry 3 }
pimNeighborExpiryTime OBJECT-TYPE
SYNTAX TimeTicks
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The minimum time remaining before this PIM neighbor will be
aged out."
::= { pimNeighborEntry 4 }
pimNeighborMode OBJECT-TYPE
SYNTAX INTEGER { dense(1), sparse(2) }
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The active PIM mode of this neighbor."
::= { pimNeighborEntry 5 }
Expires December 1996 [Page 9]
Draft PIM MIB June 1996
-- The PIM RP Table
pimRPTable OBJECT-TYPE
SYNTAX SEQUENCE OF PimRPEntry
MAX-ACCESS not-accessible
STATUS deprecated
DESCRIPTION
"The (conceptual) table listing PIM version 1 information
for the Rendezvous Points (RPs) for IP multicast groups.
This table is deprecated since its function is replaced by
the pimRPSetTable for PIM version 2."
::= { pim 5 }
pimRPEntry OBJECT-TYPE
SYNTAX PimRPEntry
MAX-ACCESS not-accessible
STATUS deprecated
DESCRIPTION
"An entry (conceptual row) in the pimRPTable. There is one
entry per RP address for each IP multicast group."
INDEX { pimRPGroupAddress, pimRPAddress }
::= { pimRPTable 1 }
PimRPEntry ::= SEQUENCE {
pimRPGroupAddress IpAddress,
pimRPAddress IpAddress,
pimRPState INTEGER,
pimRPStateTimer TimeTicks,
pimRPLastChange TimeTicks,
pimRPRowStatus RowStatus
}
pimRPGroupAddress OBJECT-TYPE
SYNTAX IpAddress
MAX-ACCESS not-accessible
STATUS deprecated
DESCRIPTION
"The IP multicast group address for which this entry
contains information about an RP."
::= { pimRPEntry 1 }
pimRPAddress OBJECT-TYPE
SYNTAX IpAddress
MAX-ACCESS not-accessible
STATUS deprecated
Expires December 1996 [Page 10]
Draft PIM MIB June 1996
DESCRIPTION
"The IP multicast group address for which this entry
contains PIM version 1 information about an RP."
::= { pimRPEntry 2 }
pimRPState OBJECT-TYPE
SYNTAX INTEGER { up(1), down(2) }
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The state of the RP."
::= { pimRPEntry 3 }
pimRPStateTimer OBJECT-TYPE
SYNTAX TimeTicks
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The minimum time remaining before the next state change.
When pimRPState is up, this is the minimum time which must
expire until it can be declared down. When pimRPState is
down, this is the time until it will be declared up (in
order to retry)."
::= { pimRPEntry 4 }
pimRPLastChange OBJECT-TYPE
SYNTAX TimeTicks
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"The value of sysUpTime at the time when the corresponding
instance of pimRPState last changed its value."
::= { pimRPEntry 5 }
pimRPRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS deprecated
DESCRIPTION
"The status of this row, by which new entries may be
created, or old entries deleted from this table."
::= { pimRPEntry 6 }
Expires December 1996 [Page 11]
Draft PIM MIB June 1996
-- The PIM RP-Set Table
pimRPSetTable OBJECT-TYPE
SYNTAX SEQUENCE OF PimRPSetEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The (conceptual) table listing PIM information for
candidate Rendezvous Points (RPs) for IP multicast groups.
When the local router is the BSR, this information is
obtained from received Candidate-RP-Advertisements. When
the local router is not the BSR, this information is
obtained from received RP-Set messages."
::= { pim 6 }
pimRPSetEntry OBJECT-TYPE
SYNTAX PimRPSetEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry (conceptual row) in the pimRPSetTable."
INDEX { pimRPSetGroupAddress, pimRPSetGroupMask,
pimRPSetAddress }
::= { pimRPSetTable 1 }
PimRPSetEntry ::= SEQUENCE {
pimRPSetGroupAddress IpAddress,
pimRPSetGroupMask IpAddress,
pimRPSetAddress IpAddress,
pimRPSetHoldTime Integer32,
pimRPSetExpiryTime TimeTicks
}
pimRPSetGroupAddress OBJECT-TYPE
SYNTAX IpAddress
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The IP multicast group address which, when combined with
pimRPSetGroupMask, gives the group prefix for which this
entry contains information about the Candidate-RP."
::= { pimRPSetEntry 1 }
pimRPSetGroupMask OBJECT-TYPE
SYNTAX IpAddress
Expires December 1996 [Page 12]
Draft PIM MIB June 1996
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The multicast group address mask which, when combined with
pimRPSetGroupAddress, gives the group prefix for which this
entry contains information about the Candidate-RP."
::= { pimRPSetEntry 2 }
pimRPSetAddress OBJECT-TYPE
SYNTAX IpAddress
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The IP address of the Candidate-RP."
::= { pimRPSetEntry 3 }
pimRPSetHoldTime OBJECT-TYPE
SYNTAX Integer32 (0..255)
UNITS "seconds"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The holdtime of a Candidate-RP. If the local router is not
the BSR, this value is 0."
::= { pimRPSetEntry 4 }
pimRPSetExpiryTime OBJECT-TYPE
SYNTAX TimeTicks
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The minimum time remaining before the Candidate-RP will be
declared down. If the local router is not the BSR, this
value is 0."
::= { pimRPSetEntry 5 }
Expires December 1996 [Page 13]
Draft PIM MIB June 1996
-- The PIM Candidate-RP Table
pimCandidateRPTable OBJECT-TYPE
SYNTAX SEQUENCE OF PimCandidateRPEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The (conceptual) table listing the IP multicast groups for
which the local router is to advertise itself as a
Candidate-RP when the value of pimCandidateRPHoldTime is
non-zero. If this table is empty, then the local router
will advertise itself as a Candidate-RP for all groups
(providing the value of pimCandidateRPHoldTime is non-
zero)."
::= { pim 11 }
pimCandidateRPEntry OBJECT-TYPE
SYNTAX PimCandidateRPEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry (conceptual row) in the pimCandidateRPTable."
INDEX { pimCandidateRPGroupAddress,
pimCandidateRPGroupMask }
::= { pimCandidateRPTable 1 }
PimCandidateRPEntry ::= SEQUENCE {
pimCandidateRPGroupAddress IpAddress,
pimCandidateRPGroupMask IpAddress,
pimCandidateRPAddress IpAddress,
pimCandidateRPRowStatus RowStatus
}
pimCandidateRPGroupAddress OBJECT-TYPE
SYNTAX IpAddress
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The IP multicast group address which, when combined with
pimCandidateRPGroupMask, identifies a group prefix for which
the local router will advertise itself as a Candidate-RP."
::= { pimCandidateRPEntry 1 }
pimCandidateRPGroupMask OBJECT-TYPE
SYNTAX IpAddress
Expires December 1996 [Page 14]
Draft PIM MIB June 1996
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The multicast group address mask which, when combined with
pimCandidateRPGroupMask, identifies a group prefix for which
the local router will advertise itself as a Candidate-RP."
::= { pimCandidateRPEntry 2 }
pimCandidateRPAddress OBJECT-TYPE
SYNTAX IpAddress
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The (unicast) address of the interface which will be
advertised as a Candidate-RP."
::= { pimCandidateRPEntry 3 }
pimCandidateRPRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-create
STATUS current
DESCRIPTION
"The status of this row, by which new entries may be
created, or old entries deleted from this table."
::= { pimCandidateRPEntry 4 }
Expires December 1996 [Page 15]
Draft PIM MIB June 1996
-- conformance information
pimMIBConformance OBJECT IDENTIFIER ::= { pimMIB 2 }
pimMIBCompliances OBJECT IDENTIFIER ::= { pimMIBConformance 1 }
pimMIBGroups OBJECT IDENTIFIER ::= { pimMIBConformance 2 }
-- compliance statements
pimV2MIBCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The compliance statement for the PIM MIB."
MODULE -- this module
MANDATORY-GROUPS { pimV2MIBGroup }
OBJECT pimInterfaceStatus
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required."
::= { pimMIBCompliances 2 }
-- units of conformance
pimV2MIBGroup OBJECT-GROUP
OBJECTS { pimMessageInterval, pimNeighborIfIndex,
pimBSRAddress, pimBSRExpiryTime,
pimCandidateBSRPreference,
pimCandidateRPHoldTime,
pimNeighborUpTime, pimNeighborExpiryTime,
pimNeighborMode,
pimInterfaceAddress, pimInterfaceNetMask,
pimInterfaceMode, pimInterfaceDR,
pimInterfaceQueryInterval,
pimInterfaceStatus,
pimRPSetHoldTime, pimRPSetExpiryTime
}
STATUS current
DESCRIPTION
"A collection of objects to support management of PIM
(version 2) routers."
::= { pimMIBGroups 2 }
Expires December 1996 [Page 16]
Draft PIM MIB June 1996
pimV2CandidateRPMIBGroup OBJECT-GROUP
OBJECTS { pimCandidateRPAddress,
pimCandidateRPRowStatus
}
STATUS current
DESCRIPTION
"A collection of objects to support configuration of which
groups a router is to advertise itself as a Candidate-RP."
::= { pimMIBGroups 3 }
pimV1MIBGroup OBJECT-GROUP
OBJECTS { pimRPState, pimRPStateTimer,
pimRPLastChange, pimRPRowStatus
}
STATUS deprecated
DESCRIPTION
"A collection of objects to support management of PIM
(version 1) routers."
::= { pimMIBGroups 4 }
END
Expires December 1996 [Page 17]
Draft PIM MIB June 1996
6. Acknowledgements
This MIB module has been updated based on feedback from the IETF's
Inter-Domain Multicast Routing (IDMR) Working Group.
7. References
[1] SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M., and
S. Waldbusser, "Structure of Management Information for version 2
of the Simple Network Management Protocol (SNMPv2)", RFC 1902,
January 1996.
[2] McCloghrie, K., and M. Rose, Editors, "Management Information Base
for Network Management of TCP/IP-based internets: MIB-II", STD 17,
RFC 1213, March 1991.
[3] Case, J., Fedor, M., Schoffstall, M., and J. Davin, "Simple Network
Management Protocol", RFC 1157, May 1990.
[4] SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M., and
S. Waldbusser, "Protocol Operations for version 2 of the Simple
Network Management Protocol (SNMPv2)", RFC 1905, January 1996.
[5] Deering, S., Estrin, D., Farinacci, D., Jacobson, V., Liu, G., and
L. Wei, "Protocol Independent Multicast (PIM): Motivation and
Architecture", January 1995.
[6] Deering, S., Estrin, D., Farinacci, D., Jacobson, V., Liu, G., and
L. Wei, "Protocol Independent Multicast (PIM): Protocol
Specification", January 1995.
[7] Deering, S., Estrin, D., Farinacci, D., Handley, M., Helmy, A.,
Jacobson, V., Liu, C., Sharma, P., and D. Thaler, "Protocol
Independent Multicast - Sparse Mode (PIM-SM): Protocol
Specification", May 1996.
[8] Estrin, D., Farinacci, D., Jacobson, V., Liu, C., Wei, L., Sharma,
P, and Helmy, A., "Protocol Independent Multicast-Dense Mode (PIM-
DM): Protocol Specification", January 1996.
Expires December 1996 [Page 18]
Draft PIM MIB June 1996
8. Security Considerations
Security issues are not discussed in this memo.
9. Author's Address
Keith McCloghrie
cisco Systems, Inc.
170 West Tasman Drive
San Jose, CA 95134-1706
Phone: +1 408 526 5260
EMail: kzm@cisco.com
Dino Farinacci
cisco Systems, Inc.
170 West Tasman Drive
San Jose, CA 95134-1706
Phone: +1 408 526 4696
EMail: dino@cisco.com
Dave Thaler
Department of Electrical Engineering and Computer Science
University of Michigan
1301 Beal Ave.
Ann Arbor, MI 48109-2122
Phone: +1 313 763 5243
EMail: thalerd@eecs.umich.edu
Expires December 1996 [Page 19]
Draft PIM MIB June 1996
Table of Contents
1 Introduction .................................................... 1
2 Revision History ................................................ 2
3 The SNMP Network Management Framework ........................... 2
3.1 Object Definitions ............................................ 3
4 Overview ........................................................ 3
5 Definitions ..................................................... 4
6 Acknowledgements ................................................ 18
7 References ...................................................... 18
8 Security Considerations ......................................... 19
9 Author's Address ................................................ 19
Expires December 1996 [Page 20]