--- 1/draft-ietf-mboned-ip-mcast-mib-05.txt 2007-07-30 20:12:14.000000000 +0200 +++ 2/draft-ietf-mboned-ip-mcast-mib-06.txt 2007-07-30 20:12:14.000000000 +0200 @@ -1,21 +1,21 @@ MBONED WG D. McWalter Internet-Draft Data Connection Ltd Proposed Status: Standards Track D. Thaler -Expires: September 2, 2007 Microsoft Corporation - A. Kessler +Obsoletes: RFC 2932 (if approved) Microsoft Corporation +Expires: January 31, 2008 A. Kessler Cisco Systems - March 1, 2007 + July 30, 2007 IP Multicast MIB - draft-ietf-mboned-ip-mcast-mib-05.txt + draft-ietf-mboned-ip-mcast-mib-06.txt Status of this Memo By submitting this Internet-Draft, each author represents that any applicable patent or other IPR claims of which he or she is aware have been or will be disclosed, and any of which he or she becomes aware will be disclosed, in accordance with Section 6 of BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that @@ -26,52 +26,53 @@ 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 http://www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. - This Internet-Draft will expire on September 2, 2007. + This Internet-Draft will expire on January 31, 2008. Copyright Notice Copyright (C) The IETF Trust (2007). Abstract This memo defines a portion of the Management Information Base (MIB) for use with network management protocols in the Internet community. In particular, it describes objects used for managing multicast function, independent of the specific multicast protocol(s) in use. This document obsoletes RFC 2932. Table of Contents - 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 - 2. History . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 - 3. The Internet-Standard Management Framework . . . . . . . . . . 3 - 4. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 - 5. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 4 - 6. Security Considerations . . . . . . . . . . . . . . . . . . . 47 - 6.1 SNMPv2 . . . . . . . . . . . . . . . . . . . . . . . . . . 47 - 6.2 Writeable objects . . . . . . . . . . . . . . . . . . . . 47 - 6.3 Readable objects . . . . . . . . . . . . . . . . . . . . . 48 - 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 49 - 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 49 - 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 49 - 9.1 Normative References . . . . . . . . . . . . . . . . . . . 49 - 9.2 Informative References . . . . . . . . . . . . . . . . . . 50 - Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 51 - Intellectual Property and Copyright Statements . . . . . . . . 53 + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 + 2. History . . . . . . . . . . . . . . . . . . . . . . . . . . 3 + 3. The Internet-Standard Management Framework . . . . . . . . . 3 + 4. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 4 + 5. IMPORTed MIB Modules and REFERENCE Clauses . . . . . . . . . 4 + 6. Definitions . . . . . . . . . . . . . . . . . . . . . . . . 5 + 7. Security Considerations . . . . . . . . . . . . . . . . . . 54 + 7.1 SNMPv3 . . . . . . . . . . . . . . . . . . . . . . . . . . 54 + 7.2 Writeable objects . . . . . . . . . . . . . . . . . . . . 54 + 7.3 Readable objects . . . . . . . . . . . . . . . . . . . . . 55 + 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . 56 + 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 56 + 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 56 + 10.1 Normative References . . . . . . . . . . . . . . . . . . 56 + 10.2 Informative References . . . . . . . . . . . . . . . . . 57 + Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 58 + Intellectual Property and Copyright Statements . . . . . . . 60 1. Introduction This MIB describes objects used for managing IP multicast function, including IP multicast routing. These objects are independent of the specific multicast routing protocol in use. Managed objects specific to particular multicast protocols are defined elsewhere. 2. History @@ -149,44 +150,66 @@ names for multicast scopes. 7. The IP Multicast Local Listener Table, which contains identifiers for local applications that are receiving multicast data. 8. The IP Multicast Zone Table, which contains an entry for each scope zone known to a system, and maps each zone to the multicast address range that is the corresponding scope. This MIB module uses textual conventions defined in the IF-MIB - [RFC4293], the INET-ADDRESS-MIB [RFC4001] and the IANA-RTPROTO-MIB. + [RFC2863], the INET-ADDRESS-MIB [RFC4001] and the IANA-RTPROTO-MIB. -5. Definitions +5. IMPORTed MIB Modules and REFERENCE Clauses + + The MIB modules defined in this document IMPORTs definitions + normatively from the following MIB modules, beyond [RFC2578], + [RFC2579], and [RFC2580]: HCNUM-TC [RFC2856], IF-MIB [RFC2863], IANA- + RTPROTO-MIB, SNMP-FRAMEWORK-MIB [RFC3411], INET-ADDRESS-MIB [RFC4001] + and LANGTAG-TC-MIB [RFCzzzz]. + + -- Note to RFC Editor.: replace zzzz with LangTag MIB RFC number & + remove this note + + This MIB module also includes REFERENCE clauses that make normative + references to Administratively Scoped IP Multicast [RFC2365], + Unicast-Prefix-based IPv6 Multicast Addresses [RFC3306], Source- + Specific Multicast, [RFC3569], IPv6 Scoped Address Architecture, + [RFC4007], and IPv6 Addressing Architecture, [RFC4291]. + + Finally, this MIB module makes informative references to several RFCs + in text of DESCRIPTION clauses, including sysApplMIB [RFC2287], IP- + MIB [RFC4293], PIM-SMv2 Protocol Specification [RFC4601], and Tags + for Identifying Languages, [RFC4646]. + +6. Definitions IPMCAST-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE, mib-2, Unsigned32, Counter64, Gauge32, TimeTicks FROM SNMPv2-SMI -- [RFC2578] RowStatus, TruthValue, StorageType, TimeStamp FROM SNMPv2-TC -- [RFC2579] MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF -- [RFC2580] CounterBasedGauge64 FROM HCNUM-TC -- [RFC2856] InterfaceIndexOrZero, InterfaceIndex FROM IF-MIB -- [RFC2863] IANAipRouteProtocol, IANAipMRouteProtocol FROM IANA-RTPROTO-MIB SnmpAdminString FROM SNMP-FRAMEWORK-MIB -- [RFC3411] InetAddress, InetAddressType, InetAddressPrefixLength, InetZoneIndex, InetVersion FROM INET-ADDRESS-MIB -- [RFC4001] - LangTag FROM LANGTAG-TC-MIB; -- [RFCyyyy] --- RFC Ed.: replace yyyy with LangTag RFC number & remove this note + LangTag FROM LANGTAG-TC-MIB; -- [RFCzzzz] +-- RFC Ed.: replace zzzz with LangTag MIB RFC number & remove this note ipMcastMIB MODULE-IDENTITY ORGANIZATION "IETF MBONE Deployment (MBONED) Working Group" CONTACT-INFO "David McWalter Data Connection Limited 100 Church Street Enfield, EN2 6BQ UK Phone: +44 208 366 1177 @@ -210,86 +233,134 @@ Phone: +1 408 526 5139 EMail: kessler@cisco.com" DESCRIPTION "The MIB module for management of IP Multicast, including multicast routing, data forwarding, and data reception. Copyright (C) The IETF Trust (2007). This version of this MIB module is part of RFC yyyy; see the RFC itself for full legal notices." -- RFC Ed.: replace yyyy with actual RFC number & remove this note - DESCRIPTION "Initial version, published as RFC yyyy." + DESCRIPTION "Initial version, published as RFC yyyy. + + This MIB module obsoletes IPMROUTE-STD-MIB defined by + [RFC2932]. Changes include the following. + + o This MIB module includes support for IPv6 addressing + and the IPv6 scoped address architecture. [RFC2932] + supported only IPv4. + + o This MIB module allows several multicast protocols + to perform routing on a single interface, where + [RFC2932] assumed each interface supported at most + one multicast routing protocol. Multicast routing + protocols are now per-route, see + ipMcastRouteProtocol. + + o This MIB module includes objects that are not + specific to multicast routing. It allows management + of multicast function on systems that do not perform + routing, whereas [RFC2932] was restricted to + multicast routing. + + o This MIB module includes a table of Source-Specific + Multicast (SSM) address ranges to which SSM + semantics [RFC3569] should be applied. + + o This MIB module includes a table of local + applications that are receiving multicast data. + + o This MIB module includes a table of multicast scope + zones." -- RFC Ed.: replace yyyy with actual RFC number & remove this note ::= { mib-2 XXX } -- RFC Ed.: replace XXX with IANA-assigned number & remove this note -- -- Top-level structure of the MIB -- -ipMcastMIBObjects OBJECT IDENTIFIER ::= { ipMcastMIB 1 } - -ipMcast OBJECT IDENTIFIER ::= { ipMcastMIBObjects 1 } +ipMcast OBJECT IDENTIFIER ::= { ipMcastMIB 1 } -ipMcastEnable OBJECT-TYPE - SYNTAX INTEGER { enabled(1), disabled(2) } +ipMcastEnabled OBJECT-TYPE + SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "The enabled status of IP Multicast function on this - system." + system. + + The storage type of this object is determined by + ipMcastDeviceConfigStorageType." ::= { ipMcast 1 } ipMcastRouteEntryCount OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of rows in the ipMcastRouteTable. This can be used to check for multicast routing activity, and to monitor the multicast routing table size." ::= { ipMcast 2 } +ipMcastDeviceConfigStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "The storage type used for the global IP multicast + configuration of this device, comprised of the objects + listed below. If this storage type takes the value + 'permanent', write-access to the listed objects need not be + allowed. + + The objects described by this storage type are: + ipMcastEnabled." + DEFVAL { nonVolatile } + ::= { ipMcast 11 } + -- -- The Multicast Interface Table -- ipMcastInterfaceTable OBJECT-TYPE SYNTAX SEQUENCE OF IpMcastInterfaceEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The (conceptual) table used to manage the multicast protocol active on an interface." ::= { ipMcast 3 } ipMcastInterfaceEntry OBJECT-TYPE SYNTAX IpMcastInterfaceEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry (conceptual row) containing the multicast protocol - information for a particular interface." + information for a particular interface. + + Per-interface multicast forwarding statistics are also + available in ipIfStatsTable." + REFERENCE "RFC 4293 ipIfStatsTable" INDEX { ipMcastInterfaceIPVersion, ipMcastInterfaceIfIndex } ::= { ipMcastInterfaceTable 1 } IpMcastInterfaceEntry ::= SEQUENCE { ipMcastInterfaceIPVersion InetVersion, ipMcastInterfaceIfIndex InterfaceIndex, ipMcastInterfaceTtl Unsigned32, ipMcastInterfaceRateLimit Unsigned32, - ipMcastInterfaceInMcastOctets Counter64, - ipMcastInterfaceOutMcastOctets Counter64, - ipMcastInterfaceInMcastPkts Counter64, - ipMcastInterfaceOutMcastPkts Counter64, - ipMcastInterfaceDiscontinuityTime TimeStamp + ipMcastInterfaceStorageType StorageType + } ipMcastInterfaceIPVersion OBJECT-TYPE SYNTAX InetVersion MAX-ACCESS not-accessible STATUS current DESCRIPTION "The IP version of this row." ::= { ipMcastInterfaceEntry 1 } @@ -298,135 +369,56 @@ MAX-ACCESS not-accessible STATUS current DESCRIPTION "The index value that uniquely identifies the interface to which this entry is applicable. The interface identified by a particular value of this index is the same interface as identified by the same value of the IF-MIB's ifIndex." ::= { ipMcastInterfaceEntry 2 } ipMcastInterfaceTtl OBJECT-TYPE - SYNTAX Unsigned32 (0..255) + SYNTAX Unsigned32 (0..256) MAX-ACCESS read-write STATUS current DESCRIPTION "The datagram TTL threshold for the interface. Any IP multicast datagrams with a TTL (IPv4) or Hop Limit (IPv6) less than this threshold will not be forwarded out the interface. The default value of 0 means all multicast - packets are forwarded out the interface." + packets are forwarded out the interface. A value of 256 + means that no multicast packets are forwarded out the + interface." DEFVAL { 0 } ::= { ipMcastInterfaceEntry 3 } ipMcastInterfaceRateLimit OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-write STATUS current DESCRIPTION "The rate-limit, in kilobits per second, of forwarded multicast traffic on the interface. A rate-limit of 0 indicates that no rate limiting is done." DEFVAL { 0 } ::= { ipMcastInterfaceEntry 4 } -ipMcastInterfaceInMcastOctets OBJECT-TYPE - SYNTAX Counter64 - MAX-ACCESS read-only +ipMcastInterfaceStorageType OBJECT-TYPE + SYNTAX StorageType + MAX-ACCESS read-write STATUS current DESCRIPTION - "The number of octets of multicast packets that have arrived - on the interface, including framing characters. This object - is similar to ifInOctets in the Interfaces MIB, except that - only multicast packets are counted. - - Discontinuities in the value of this counter can occur at - re-initialization of the management system, and at other - times as indicated by the value of - ipMcastInterfaceDiscontinuityTime." - REFERENCE "RFC 4293 ifInOctets" + "The storage type for this row. Rows having the value + 'permanent' need not allow write-access to any columnar + objects in the row." + DEFVAL { nonVolatile } ::= { ipMcastInterfaceEntry 5 } -ipMcastInterfaceOutMcastOctets OBJECT-TYPE - SYNTAX Counter64 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The number of octets of multicast packets that have been - sent on the interface, including framing characters. This - object is similar to ifOutOctets in the Interfaces MIB, - except that only multicast packets are counted. - - Discontinuities in the value of this counter can occur at - re-initialization of the management system, and at other - times as indicated by the value of - ipMcastInterfaceDiscontinuityTime." - REFERENCE "RFC 4293 ifOutOctets" - ::= { ipMcastInterfaceEntry 6 } - -ipMcastInterfaceInMcastPkts OBJECT-TYPE - SYNTAX Counter64 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The number of multicast packets that have arrived on the - interface. In many cases, this object is identical to - ifInMulticastPkts in the Interfaces MIB. - - However, some implementations use ifXTable for Layer 2 - traffic statistics and ipMcastInterfaceTable at Layer 3. In - this case a difference between these objects probably - indicates that some Layer 3 multicast packets are being - transmitted as unicast at Layer 2. - - Discontinuities in the value of this counter can occur at - re-initialization of the management system, and at other - times as indicated by the value of - ipMcastInterfaceDiscontinuityTime." - REFERENCE "RFC 4293 ifInMulticastPkts" - ::= { ipMcastInterfaceEntry 7 } - -ipMcastInterfaceOutMcastPkts OBJECT-TYPE - SYNTAX Counter64 - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The number of multicast packets that have been sent on the - interface. In many cases, this object is identical to - ifOutMulticastPkts in the Interfaces MIB. - - However, some implementations use ifXTable for Layer 2 - traffic statistics and ipMcastInterfaceTable at Layer 3. In - this case a difference between these objects probably - indicates that some Layer 3 multicast packets are being - transmitted as unicast at Layer 2. - - Discontinuities in the value of this counter can occur at - re-initialization of the management system, and at other - times as indicated by the value of - ipMcastInterfaceDiscontinuityTime." - REFERENCE "RFC 4293 ifOutMulticastPkts" - ::= { ipMcastInterfaceEntry 8 } - -ipMcastInterfaceDiscontinuityTime OBJECT-TYPE - SYNTAX TimeStamp - MAX-ACCESS read-only - STATUS current - DESCRIPTION - "The value of sysUpTime on the most recent occasion at which - any one or more of this entry's counters suffered a - discontinuity. - - If no such discontinuities have occurred since the last re- - initialization of the local management subsystem, then this - object contains a zero value." - ::= { ipMcastInterfaceEntry 9 } - -- -- The SSM Range Table -- ipMcastSsmRangeTable OBJECT-TYPE SYNTAX SEQUENCE OF IpMcastSsmRangeEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table is used to create and manage the range(s) of @@ -457,21 +449,21 @@ ipMcastSsmRangeAddressType OBJECT-TYPE SYNTAX InetAddressType MAX-ACCESS not-accessible STATUS current DESCRIPTION "The address type of the multicast group prefix." ::= { ipMcastSsmRangeEntry 1 } ipMcastSsmRangeAddress OBJECT-TYPE - SYNTAX InetAddress (SIZE (4|8|16|20)) + SYNTAX InetAddress MAX-ACCESS not-accessible STATUS current DESCRIPTION "The multicast group address which, when combined with ipMcastSsmRangePrefixLength, gives the group prefix for this SSM range. The InetAddressType is given by ipMcastSsmRangeAddressType. This address object is only significant up to ipMcastSsmRangePrefixLength bits. The remainder of the @@ -492,30 +484,32 @@ index zero is not valid in this table. If non-global scope SSM range entries are present, then consistent ipMcastBoundaryTable entries are required on routers at the zone boundary." REFERENCE "RFC 2365, RFC 4291 section 2.7, RFC 3306 sections 4, 6 and 7" ::= { ipMcastSsmRangeEntry 2 } ipMcastSsmRangePrefixLength OBJECT-TYPE - SYNTAX InetAddressPrefixLength (4..128) + SYNTAX InetAddressPrefixLength MAX-ACCESS not-accessible STATUS current DESCRIPTION "The length in bits of the mask which, when combined with ipMcastSsmRangeAddress, gives the group prefix for this SSM - range. The InetAddressType is given by - ipMcastSsmRangeAddressType. For values 'ipv4' and 'ipv4z', - this object must be in the range 4..32. For values 'ipv6' - and 'ipv6z', this object must be in the range 8..128." + range. + + The InetAddressType is given by ipMcastSsmRangeAddressType. + For values 'ipv4' and 'ipv4z', this object must be in the + range 4..32. For values 'ipv6' and 'ipv6z', this object + must be in the range 8..128." REFERENCE "RFC 2365, RFC 4291 section 2.7, RFC 3306 sections 4, 6 and 7" ::= { ipMcastSsmRangeEntry 3 } ipMcastSsmRangeRowStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "The status of this row, by which rows in this table can @@ -601,21 +595,21 @@ MAX-ACCESS not-accessible STATUS current DESCRIPTION "A value indicating the address family of the address contained in ipMcastRouteGroup. Legal values correspond to the subset of address families for which multicast forwarding is supported." ::= { ipMcastRouteEntry 1 } ipMcastRouteGroup OBJECT-TYPE - SYNTAX InetAddress (SIZE (0|4|8|16|20)) + SYNTAX InetAddress MAX-ACCESS not-accessible STATUS current DESCRIPTION "The IP multicast group address which, when combined with the corresponding value specified in ipMcastRouteGroupPrefixLength, identifies the groups for which this entry contains multicast routing information. This address object is only significant up to ipMcastRouteGroupPrefixLength bits. The remainder of the @@ -625,42 +619,48 @@ entry. For addresses of type ipv4z or ipv6z, the appended zone index is significant even though it lies beyond the prefix length. The use of these address types indicate that this forwarding state applies only within the given zone. Zone index zero is not valid in this table." ::= { ipMcastRouteEntry 2 } ipMcastRouteGroupPrefixLength OBJECT-TYPE - SYNTAX InetAddressPrefixLength (4..128) + SYNTAX InetAddressPrefixLength MAX-ACCESS not-accessible STATUS current DESCRIPTION "The length in bits of the mask which, when combined with the corresponding value of ipMcastRouteGroup, identifies the groups for which this entry contains multicast routing - information." + information. + + The InetAddressType is given by + ipMcastRouteGroupAddressType. For values 'ipv4' and + 'ipv4z', this object must be in the range 4..32. For values + 'ipv6' and 'ipv6z', this object must be in the range + 8..128." ::= { ipMcastRouteEntry 3 } ipMcastRouteSourceAddressType OBJECT-TYPE SYNTAX InetAddressType MAX-ACCESS not-accessible STATUS current DESCRIPTION "A value indicating the address family of the address contained in ipMcastRouteSource. The value MUST be the same as the value of ipMcastRouteGroupType." ::= { ipMcastRouteEntry 4 } ipMcastRouteSource OBJECT-TYPE - SYNTAX InetAddress (SIZE (0|4|8|16|20)) + SYNTAX InetAddress MAX-ACCESS not-accessible STATUS current DESCRIPTION "The network address which, when combined with the corresponding value of ipMcastRouteSourcePrefixLength, identifies the sources for which this entry contains multicast routing information. This address object is only significant up to ipMcastRouteGroupPrefixLength bits. The remainder of the @@ -670,45 +670,51 @@ entry. For addresses of type ipv4z or ipv6z, the appended zone index is significant even though it lies beyond the prefix length. The use of these address types indicate that this source address applies only within the given zone. Zone index zero is not valid in this table." ::= { ipMcastRouteEntry 5 } ipMcastRouteSourcePrefixLength OBJECT-TYPE - SYNTAX InetAddressPrefixLength (4..128) + SYNTAX InetAddressPrefixLength MAX-ACCESS not-accessible STATUS current DESCRIPTION "The length in bits of the mask which, when combined with the corresponding value of ipMcastRouteSource, identifies the sources for which this entry contains multicast routing - information." + information. + + The InetAddressType is given by + ipMcastRouteSourceAddressType. For values 'ipv4' and + 'ipv4z', this object must be in the range 4..32. For values + 'ipv6' and 'ipv6z', this object must be in the range + 8..128." ::= { ipMcastRouteEntry 6 } ipMcastRouteUpstreamNeighborType OBJECT-TYPE SYNTAX InetAddressType MAX-ACCESS read-only STATUS current DESCRIPTION "A value indicating the address family of the address contained in ipMcastRouteUpstreamNeighbor. An address type of unknown(0) indicates that the upstream neighbor is unknown, for example in BIDIR-PIM." REFERENCE "I-D.ietf-pim-bidir" ::= { ipMcastRouteEntry 7 } ipMcastRouteUpstreamNeighbor OBJECT-TYPE - SYNTAX InetAddress (SIZE (0|4|8|16|20)) + SYNTAX InetAddress MAX-ACCESS read-only STATUS current DESCRIPTION "The address of the upstream neighbor (for example, RPF neighbor) from which IP datagrams from these sources to this multicast address are received." ::= { ipMcastRouteEntry 8 } ipMcastRouteInIfIndex OBJECT-TYPE SYNTAX InterfaceIndexOrZero @@ -725,21 +731,21 @@ ipMcastRouteTimeStamp OBJECT-TYPE SYNTAX TimeStamp MAX-ACCESS read-only STATUS current DESCRIPTION "The value of sysUpTime at which the multicast routing information represented by this entry was learned by the router. - If this infomration was present at the most recent re- + If this information was present at the most recent re- initialization of the local management subsystem, then this object contains a zero value." ::= { ipMcastRouteEntry 10 } ipMcastRouteExpiryTime OBJECT-TYPE SYNTAX TimeTicks MAX-ACCESS read-only STATUS current DESCRIPTION "The minimum amount of time remaining before this entry will @@ -773,46 +779,51 @@ ipMcastRouteRtAddressType OBJECT-TYPE SYNTAX InetAddressType MAX-ACCESS read-only STATUS current DESCRIPTION "A value indicating the address family of the address contained in ipMcastRouteRtAddress." ::= { ipMcastRouteEntry 14 } ipMcastRouteRtAddress OBJECT-TYPE - SYNTAX InetAddress (SIZE (0|4|8|16|20)) + SYNTAX InetAddress MAX-ACCESS read-only STATUS current DESCRIPTION "The address portion of the route used to find the upstream or parent interface for this multicast forwarding entry. This address object is only significant up to ipMcastRouteGroupPrefixLength bits. The remainder of the address bits are zero. For addresses of type ipv4z or ipv6z, the appended zone index is significant even though it lies beyond the prefix length. The use of these address types indicate that this forwarding state applies only within the given zone. Zone index zero is not valid in this table." ::= { ipMcastRouteEntry 15 } ipMcastRouteRtPrefixLength OBJECT-TYPE - SYNTAX InetAddressPrefixLength (4..128) + SYNTAX InetAddressPrefixLength MAX-ACCESS read-only STATUS current DESCRIPTION "The length in bits of the mask associated with the route used to find the upstream or parent interface for this - multicast forwarding entry." + multicast forwarding entry. + + The InetAddressType is given by ipMcastRouteRtAddressType. + For values 'ipv4' and 'ipv4z', this object must be in the + range 4..32. For values 'ipv6' and 'ipv6z', this object + must be in the range 8..128." ::= { ipMcastRouteEntry 16 } ipMcastRouteRtType OBJECT-TYPE SYNTAX INTEGER { unicast (1), -- Unicast route used in multicast RIB multicast (2) -- Multicast route } MAX-ACCESS read-only STATUS current DESCRIPTION @@ -1047,21 +1058,21 @@ MAX-ACCESS not-accessible STATUS current DESCRIPTION "A value indicating the address family of the address contained in ipMcastRouteNextHopGroup. Legal values correspond to the subset of address families for which multicast forwarding is supported." ::= { ipMcastRouteNextHopEntry 1 } ipMcastRouteNextHopGroup OBJECT-TYPE - SYNTAX InetAddress (SIZE (0|4|8|16|20)) + SYNTAX InetAddress MAX-ACCESS not-accessible STATUS current DESCRIPTION "The IP multicast group address which, when combined with the corresponding value specified in ipMcastRouteNextHopGroupPrefixLength, identifies the groups for which this entry contains multicast forwarding information. This address object is only significant up to @@ -1072,42 +1083,48 @@ entry. For addresses of type ipv4z or ipv6z, the appended zone index is significant even though it lies beyond the prefix length. The use of these address types indicate that this forwarding state applies only within the given zone. Zone index zero is not valid in this table." ::= { ipMcastRouteNextHopEntry 2 } ipMcastRouteNextHopGroupPrefixLength OBJECT-TYPE - SYNTAX InetAddressPrefixLength (4..128) + SYNTAX InetAddressPrefixLength MAX-ACCESS not-accessible STATUS current DESCRIPTION "The length in bits of the mask which, when combined with the corresponding value of ipMcastRouteGroup, identifies the groups for which this entry contains multicast routing - information." + information. + + The InetAddressType is given by + ipMcastRouteNextHopGroupAddressType. For values 'ipv4' and + 'ipv4z', this object must be in the range 4..32. For values + 'ipv6' and 'ipv6z', this object must be in the range + 8..128." ::= { ipMcastRouteNextHopEntry 3 } ipMcastRouteNextHopSourceAddressType OBJECT-TYPE SYNTAX InetAddressType MAX-ACCESS not-accessible STATUS current DESCRIPTION "A value indicating the address family of the address contained in ipMcastRouteNextHopSource. The value MUST be the same as the value of ipMcastRouteNextHopGroupType." ::= { ipMcastRouteNextHopEntry 4 } ipMcastRouteNextHopSource OBJECT-TYPE - SYNTAX InetAddress (SIZE (0|4|8|16|20)) + SYNTAX InetAddress MAX-ACCESS not-accessible STATUS current DESCRIPTION "The network address which, when combined with the corresponding value of the mask specified in ipMcastRouteNextHopSourcePrefixLength, identifies the sources for which this entry specifies a next-hop on an outgoing interface. This address object is only significant up to @@ -1118,28 +1135,34 @@ different entry. For addresses of type ipv4z or ipv6z, the appended zone index is significant even though it lies beyond the prefix length. The use of these address types indicate that this source address applies only within the given zone. Zone index zero is not valid in this table." ::= { ipMcastRouteNextHopEntry 5 } ipMcastRouteNextHopSourcePrefixLength OBJECT-TYPE - SYNTAX InetAddressPrefixLength (4..128) + SYNTAX InetAddressPrefixLength MAX-ACCESS not-accessible STATUS current DESCRIPTION "The length in bits of the mask which, when combined with the corresponding value specified in ipMcastRouteNextHopSource, identifies the sources for which - this entry specifies a next-hop on an outgoing interface." + this entry specifies a next-hop on an outgoing interface. + + The InetAddressType is given by + ipMcastRouteNextHopSourceAddressType. For values 'ipv4' and + 'ipv4z', this object must be in the range 4..32. For values + 'ipv6' and 'ipv6z', this object must be in the range + 8..128." ::= { ipMcastRouteNextHopEntry 6 } ipMcastRouteNextHopIfIndex OBJECT-TYPE SYNTAX InterfaceIndex MAX-ACCESS not-accessible STATUS current DESCRIPTION "The ifIndex value of the interface for the outgoing interface for this next-hop." ::= { ipMcastRouteNextHopEntry 7 } @@ -1147,21 +1170,21 @@ ipMcastRouteNextHopAddressType OBJECT-TYPE SYNTAX InetAddressType MAX-ACCESS not-accessible STATUS current DESCRIPTION "A value indicating the address family of the address contained in ipMcastRouteNextHopAddress." ::= { ipMcastRouteNextHopEntry 8 } ipMcastRouteNextHopAddress OBJECT-TYPE - SYNTAX InetAddress (SIZE (0|4|8|16|20)) + SYNTAX InetAddress MAX-ACCESS not-accessible STATUS current DESCRIPTION "The address of the next-hop specific to this entry. For most interfaces, this is identical to ipMcastRouteNextHopGroup. NBMA interfaces, however, may have multiple next-hop addresses out a single outgoing interface." ::= { ipMcastRouteNextHopEntry 9 } @@ -1200,35 +1223,39 @@ be aged out. If ipMcastRouteNextHopState is pruned(1), the remaining time until the prune expires and the state reverts to forwarding(2). Otherwise, the remaining time until this entry is removed from the table. The time remaining may be copied from ipMcastRouteExpiryTime if the protocol in use for this entry does not specify next-hop timers. The value 0 indicates that the entry is not subject to aging." ::= { ipMcastRouteNextHopEntry 12 } ipMcastRouteNextHopClosestMemberHops OBJECT-TYPE - SYNTAX Unsigned32 (0..255) + SYNTAX Unsigned32 (0..256) MAX-ACCESS read-only STATUS current DESCRIPTION "The minimum number of hops between this router and any member of this IP multicast group reached via this next-hop on this outgoing interface. Any IP multicast datagrams for the group which have a TTL (IPv4) or Hop Count (IPv6) less than this number of hops will not be forwarded to this next-hop. + A value of 0 means all multicast datagrams are forwarded out + the interface. A value of 256 means that no multicast + datagrams are forwarded out the interface. + This is an optimization applied by multicast routing protocols that explicitly track hop counts to downstream listeners. Multicast protocols that are not aware of hop - counts to downstream listeners set this object to zero." + counts to downstream listeners set this object to 0." ::= { ipMcastRouteNextHopEntry 13 } ipMcastRouteNextHopProtocol OBJECT-TYPE SYNTAX IANAipMRouteProtocol MAX-ACCESS read-only STATUS current DESCRIPTION "The routing mechanism via which this next-hop was learned." ::= { ipMcastRouteNextHopEntry 14 } @@ -1329,21 +1356,21 @@ MAX-ACCESS not-accessible STATUS current DESCRIPTION "A value indicating the address family of the address contained in ipMcastBoundaryAddress. Legal values correspond to the subset of address families for which multicast forwarding is supported." ::= { ipMcastBoundaryEntry 2 } ipMcastBoundaryAddress OBJECT-TYPE - SYNTAX InetAddress (SIZE (0|4|8|16|20)) + SYNTAX InetAddress MAX-ACCESS not-accessible STATUS current DESCRIPTION "The group address which, when combined with the corresponding value of ipMcastBoundaryAddressPrefixLength, identifies the group range for which the scoped boundary exists. Scoped IPv4 multicast address ranges must be prefixed by 239.0.0.0/8. Scoped IPv6 multicast address ranges are FF0x::/16, where x is a valid RFC 4291 multicast scope. @@ -1353,41 +1380,37 @@ a unicast-prefix-based multicast addresses. A zone boundary for FF0x::/16 implies an identical boundary for these other prefixes. No separate FF1x::/16 or FF3x::/16 entries exist in this table. This address object is only significant up to ipMcastBoundaryAddressPrefixLength bits. The remainder of the address bits are zero. This is especially important for this index field, which is part of the index of this entry. Any non-zero bits would signify an entirely different - entry. - - For addresses of type ipv4z or ipv6z, the appended zone - index is significant even though it lies beyond the prefix - length. Zone index zero is not valid in this table." - REFERENCE "RFC 2365, RFC 3306 section 4, RFC 4291 section 2.7" + entry." ::= { ipMcastBoundaryEntry 3 } ipMcastBoundaryAddressPrefixLength OBJECT-TYPE - SYNTAX InetAddressPrefixLength (4..32) + SYNTAX InetAddressPrefixLength MAX-ACCESS not-accessible STATUS current DESCRIPTION "The length in bits of the mask which when, combined with the corresponding value of ipMcastBoundaryAddress, identifies the group range for which the scoped boundary exists. The InetAddressType is given by ipMcastBoundaryAddressType. - For 'ipv4' this object must be in the range 4..32. For - 'ipv6', this object must be 16." + For values 'ipv4' and 'ipv4z', this object must be in the + range 4..32. For values 'ipv6' and 'ipv6z', this object + must be set to 16." ::= { ipMcastBoundaryEntry 4 } ipMcastBoundaryTimeStamp OBJECT-TYPE SYNTAX TimeStamp MAX-ACCESS read-only STATUS current DESCRIPTION "The value of sysUpTime at which the multicast boundary information represented by this entry was learned by the router. @@ -1472,21 +1495,21 @@ SYNTAX IpMcastScopeNameEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry (conceptual row) that names a multicast address scope." REFERENCE "RFC 4007 section 4" INDEX { ipMcastScopeNameAddressType, ipMcastScopeNameAddress, ipMcastScopeNameAddressPrefixLength, - IMPLIED ipMcastScopeNameLanguage } + ipMcastScopeNameLanguage } ::= { ipMcastScopeNameTable 1 } IpMcastScopeNameEntry ::= SEQUENCE { ipMcastScopeNameAddressType InetAddressType, ipMcastScopeNameAddress InetAddress, ipMcastScopeNameAddressPrefixLength InetAddressPrefixLength, ipMcastScopeNameLanguage LangTag, ipMcastScopeNameString SnmpAdminString, ipMcastScopeNameDefault TruthValue, ipMcastScopeNameStatus RowStatus, @@ -1498,21 +1521,21 @@ MAX-ACCESS not-accessible STATUS current DESCRIPTION "A value indicating the address family of the address contained in ipMcastScopeNameAddress. Legal values correspond to the subset of address families for which multicast forwarding is supported." ::= { ipMcastScopeNameEntry 1 } ipMcastScopeNameAddress OBJECT-TYPE - SYNTAX InetAddress (SIZE (0|4|8|16|20)) + SYNTAX InetAddress MAX-ACCESS not-accessible STATUS current DESCRIPTION "The group address which, when combined with the corresponding value of ipMcastScopeNameAddressPrefixLength, identifies the group range associated with the multicast scope. Scoped IPv4 multicast address ranges must be prefixed by 239.0.0.0/8. Scoped IPv6 multicast address ranges are FF0x::/16, where x is a valid RFC 4291 multicast scope. @@ -1522,50 +1545,46 @@ a unicast-prefix-based multicast addresses. A scope FF0x::/16 implies an identical scope name for these other prefixes. No separate FF1x::/16 or FF3x::/16 entries exist in this table. This address object is only significant up to ipMcastScopeNameAddressPrefixLength bits. The remainder of the address bits are zero. This is especially important for this index field, which is part of the index of this entry. Any non-zero bits would signify an entirely different - entry. - - For addresses of type ipv4z or ipv6z, the appended zone - index is significant even though it lies beyond the prefix - length. Zone index zero is not valid in this table." - REFERENCE "RFC 2365, RFC 3306 section 4, RFC 4291 section 2.7" + entry." ::= { ipMcastScopeNameEntry 2 } ipMcastScopeNameAddressPrefixLength OBJECT-TYPE - SYNTAX InetAddressPrefixLength (4..32) + SYNTAX InetAddressPrefixLength MAX-ACCESS not-accessible STATUS current DESCRIPTION "The length in bits of the mask which, when combined with the corresponding value of ipMcastScopeNameAddress, identifies the group range associated with the multicast scope. The InetAddressType is given by ipMcastScopeNameAddressType. - For 'ipv4' this object must be in the range 4..32. For - 'ipv6', this object must be 16." + For values 'ipv4' and 'ipv4z', this object must be in the + range 4..32. For values 'ipv6' and 'ipv6z', this object + must be set to 16." ::= { ipMcastScopeNameEntry 3 } ipMcastScopeNameLanguage OBJECT-TYPE SYNTAX LangTag MAX-ACCESS not-accessible STATUS current DESCRIPTION "Language tag associated with the scope name." - REFERENCE "RFC 3283" + REFERENCE "RFC 4646" ::= { ipMcastScopeNameEntry 4 } ipMcastScopeNameString OBJECT-TYPE SYNTAX SnmpAdminString MAX-ACCESS read-create STATUS current DESCRIPTION "The textual name associated with the multicast scope. The value of this object should be suitable for displaying to end-users, such as when allocating a multicast address in @@ -1645,64 +1664,67 @@ MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry (conceptual row) identifying a local application or service that has joined a multicast group as a listener." INDEX { ipMcastLocalListenerGroupAddressType, ipMcastLocalListenerGroupAddress, ipMcastLocalListenerSourceAddressType, ipMcastLocalListenerSourceAddress, ipMcastLocalListenerSourcePrefixLength, + ipMcastLocalListenerIfIndex, ipMcastLocalListenerRunIndex } ::= { ipMcastLocalListenerTable 1 } IpMcastLocalListenerEntry ::= SEQUENCE { ipMcastLocalListenerGroupAddressType InetAddressType, ipMcastLocalListenerGroupAddress InetAddress, ipMcastLocalListenerSourceAddressType InetAddressType, ipMcastLocalListenerSourceAddress InetAddress, ipMcastLocalListenerSourcePrefixLength InetAddressPrefixLength, + ipMcastLocalListenerIfIndex InterfaceIndex, ipMcastLocalListenerRunIndex Unsigned32 } ipMcastLocalListenerGroupAddressType OBJECT-TYPE SYNTAX InetAddressType MAX-ACCESS not-accessible STATUS current DESCRIPTION "A value indicating the address family of the address contained in ipMcastLocalListenerGroupAddress. Legal values correspond to the subset of address families for which multicast is supported." ::= { ipMcastLocalListenerEntry 1 } ipMcastLocalListenerGroupAddress OBJECT-TYPE - SYNTAX InetAddress (SIZE (0|4|8|16|20)) + SYNTAX InetAddress MAX-ACCESS not-accessible STATUS current DESCRIPTION "The IP multicast group for which this entry specifies locally joined applications or services." ::= { ipMcastLocalListenerEntry 2 } ipMcastLocalListenerSourceAddressType OBJECT-TYPE SYNTAX InetAddressType MAX-ACCESS not-accessible STATUS current DESCRIPTION "A value indicating the address family of the address contained in ipMcastLocalListenerSource. The value MUST be - the same as the value of ipMcastLocalListenerAddressType." + the same as the value of + ipMcastLocalListenerGroupAddressType." ::= { ipMcastLocalListenerEntry 3 } ipMcastLocalListenerSourceAddress OBJECT-TYPE - SYNTAX InetAddress (SIZE (0|4|8|16|20)) + SYNTAX InetAddress MAX-ACCESS not-accessible STATUS current DESCRIPTION "The network address which, when combined with the corresponding value of the mask specified in ipMcastLocalListenerSourcePrefixLength, identifies the sources for which this entry specifies a local listener. This address object is only significant up to ipMcastLocalListenerSourcePrefixLength bits. The remainder @@ -1712,49 +1734,64 @@ different entry. For addresses of type ipv4z or ipv6z, the appended zone index is significant even though it lies beyond the prefix length. The use of these address types indicate that this listener address applies only within the given zone. Zone index zero is not valid in this table." ::= { ipMcastLocalListenerEntry 4 } ipMcastLocalListenerSourcePrefixLength OBJECT-TYPE - SYNTAX InetAddressPrefixLength (4..128) + SYNTAX InetAddressPrefixLength MAX-ACCESS not-accessible STATUS current DESCRIPTION "The length in bits of the mask which, when combined with the corresponding value specified in ipMcastLocalListenerSource, identifies the sources for which this entry specifies a local listener. A mask length of - zero corresponds to all sources within the group." + zero corresponds to all sources within the group. + + The InetAddressType is given by + ipMcastLocalListenerSourceAddressType. For values 'ipv4' + and 'ipv4z', this object must be in the range 4..32. For + values 'ipv6' and 'ipv6z', this object must be in the range + 8..128." ::= { ipMcastLocalListenerEntry 5 } +ipMcastLocalListenerIfIndex OBJECT-TYPE + SYNTAX InterfaceIndex + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "The IfIndex value of the interface for which this entry + specifies a local listener." + ::= { ipMcastLocalListenerEntry 6 } + ipMcastLocalListenerRunIndex OBJECT-TYPE SYNTAX Unsigned32 (0..2147483647) MAX-ACCESS read-only STATUS current DESCRIPTION "A unique value corresponding to a piece of software running on this router or host system. Where possible, this should be the system's native, unique identification number. This identifier is platform-specific. It may correspond to a process ID or application instance number. A value of zero indicates that the application instance(s) cannot be identified. A value of zero indicates that one or more unidentified applications have joined the specified multicast groups (for the specified sources) as listeners." REFERENCE "RFC 2287 sysApplRunIndex" - ::= { ipMcastLocalListenerEntry 6 } + ::= { ipMcastLocalListenerEntry 7 } -- -- The Multicast Zone Table -- ipMcastZoneTable OBJECT-TYPE SYNTAX SEQUENCE OF IpMcastZoneEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION @@ -1814,21 +1851,21 @@ ipMcastZoneScopeAddressType OBJECT-TYPE SYNTAX InetAddressType MAX-ACCESS read-only STATUS current DESCRIPTION "The IP address type for which this scope zone exists." ::= { ipMcastZoneEntry 3 } ipMcastZoneScopeAddress OBJECT-TYPE - SYNTAX InetAddress (SIZE (4|16)) + SYNTAX InetAddress MAX-ACCESS read-only STATUS current DESCRIPTION "The multicast group address which, when combined with ipMcastZoneScopeAddressPrefixLength, gives the multicast address range for this scope. The InetAddressType is given by ipMcastZoneScopeAddressType. Scoped IPv4 multicast address ranges are prefixed by 239.0.0.0/8. Scoped IPv6 multicast address ranges are @@ -1841,121 +1878,277 @@ prefixes. No separate FF1x::/16 or FF3x::/16 entries exist in this table. This address object is only significant up to ipMcastZoneScopeAddressPrefixLength bits. The remainder of the address bits are zero." REFERENCE "RFC 2365, RFC 3306 section 4, RFC 4291 section 2.7" ::= { ipMcastZoneEntry 4 } ipMcastZoneScopeAddressPrefixLength OBJECT-TYPE - SYNTAX InetAddressPrefixLength (4..32) + SYNTAX InetAddressPrefixLength MAX-ACCESS read-only STATUS current DESCRIPTION "The length in bits of the mask which, when combined with ipMcastZoneScopeAddress, gives the multicast address prefix for this scope. - The InetAddressType is given by ipMcastZoneAddressType. - For 'ipv4' this object must be in the range 4..32. For - 'ipv6', this object must be 16." + The InetAddressType is given by ipMcastZoneScopeAddressType. + For values 'ipv4' and 'ipv4z', this object must be in the + range 4..32. For values 'ipv6' and 'ipv6z', this object + must be set to 16." ::= { ipMcastZoneEntry 5 } -- -- Conformance information -- ipMcastMIBConformance OBJECT IDENTIFIER ::= { ipMcastMIB 2 } ipMcastMIBCompliances OBJECT IDENTIFIER ::= { ipMcastMIBConformance 1 } ipMcastMIBGroups OBJECT IDENTIFIER ::= { ipMcastMIBConformance 2 } -- -- Compliance statements -- ipMcastMIBComplianceHost MODULE-COMPLIANCE STATUS current DESCRIPTION - "The compliance statement for hosts supporting IPMCAST-MIB." + "The compliance statement for hosts supporting IPMCAST-MIB. + + Support for either InetAddressType ipv4 or ipv6 is + mandatory; support for both InetAddressTypes ipv4 and ipv6 + is optional. Support for types ipv4z and ipv6z is + optional. + + -- OBJECT ipMcastLocalListenerGroupAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastLocalListenerGroupAddress + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastLocalListenerSourceAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastLocalListenerSourceAddress + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6." + MODULE -- this module MANDATORY-GROUPS { ipMcastMIBLocalListenerGroup, ipMcastMIBBasicGroup } - OBJECT ipMcastEnable + OBJECT ipMcastEnabled + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastDeviceConfigStorageType MIN-ACCESS read-only DESCRIPTION "Write access is not required." GROUP ipMcastMIBSsmGroup DESCRIPTION "This group is optional." + GROUP ipMcastMIBRouteGroup DESCRIPTION "This group is optional." - GROUP ipMcastMIBIfPktsGroup + GROUP ipMcastMIBRouteDiagnosticsGroup DESCRIPTION "This group is optional." GROUP ipMcastMIBBoundaryIfGroup DESCRIPTION "This group is optional." GROUP ipMcastMIBScopeNameGroup DESCRIPTION "This group is optional." ::= { ipMcastMIBCompliances 1 } ipMcastMIBComplianceRouter MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for routers supporting - IPMCAST-MIB." + IPMCAST-MIB. + + Support for either InetAddressType ipv4 or ipv6 is + mandatory; support for both InetAddressTypes ipv4 and ipv6 + is optional. Support for types ipv4z and ipv6z is + optional. + + -- OBJECT ipMcastSsmRangeAddressType + -- SYNTAX InetAddressType {ipv4(1), ipv6(2), ipv4z(3), + -- ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastSsmRangeAddress + -- SYNTAX InetAddress (SIZE (4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteGroupAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteGroup + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteSourceAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteSource + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteNextHopGroupAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteNextHopGroup + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteNextHopSourceAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteNextHopSource + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteNextHopAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteNextHopAddress + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6." MODULE -- this module MANDATORY-GROUPS { ipMcastMIBRouteProtoGroup, ipMcastMIBBasicGroup, ipMcastMIBSsmGroup, ipMcastMIBRouteGroup } - OBJECT ipMcastEnable + OBJECT ipMcastEnabled MIN-ACCESS read-only DESCRIPTION "Write access is not required." - OBJECT ipMcastInterfaceTtl + OBJECT ipMcastDeviceConfigStorageType MIN-ACCESS read-only DESCRIPTION "Write access is not required." + OBJECT ipMcastInterfaceTtl + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." OBJECT ipMcastInterfaceRateLimit MIN-ACCESS read-only DESCRIPTION "Write access is not required." + OBJECT ipMcastInterfaceStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastRouteUpstreamNeighborType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + MIN-ACCESS read-only + DESCRIPTION + "This compliance requires support for unknown and either ipv4 + or ipv6." + + OBJECT ipMcastRouteUpstreamNeighbor + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MIN-ACCESS read-only + DESCRIPTION + "This compliance requires support for unknown and either ipv4 + or ipv6." + + OBJECT ipMcastRouteRtAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + MIN-ACCESS read-only + DESCRIPTION + "This compliance requires support for unknown and either ipv4 + or ipv6." + + OBJECT ipMcastRouteRtAddress + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MIN-ACCESS read-only + DESCRIPTION + "This compliance requires support for unknown and either ipv4 + or ipv6." + OBJECT ipMcastSsmRangeRowStatus MIN-ACCESS read-only DESCRIPTION "Write access is not required." OBJECT ipMcastSsmRangeStorageType MIN-ACCESS read-only DESCRIPTION "Write access is not required." - GROUP ipMcastMIBIfPktsGroup + GROUP ipMcastMIBRouteDiagnosticsGroup DESCRIPTION - "This group is optional." + "This group is not mandatory, but SHOULD be supported where + hardware permits." GROUP ipMcastMIBPktsOutGroup DESCRIPTION "This group is optional." GROUP ipMcastMIBHopCountGroup DESCRIPTION "This group is optional." GROUP ipMcastMIBRouteOctetsGroup @@ -1977,133 +2170,284 @@ GROUP ipMcastMIBScopeNameGroup DESCRIPTION "This group is optional." ::= { ipMcastMIBCompliances 2 } ipMcastMIBComplianceBorderRouter MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for routers on scope - boundaries supporting IPMCAST-MIB." + boundaries supporting IPMCAST-MIB. + + Support for either InetAddressType ipv4z or ipv6z is + mandatory; support for both InetAddressTypes ipv4z and + ipv6z is optional. + + -- OBJECT ipMcastSsmRangeAddressType + -- SYNTAX InetAddressType {ipv4(1), ipv6(2), ipv4z(3), + -- ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastSsmRangeAddress + -- SYNTAX InetAddress (SIZE (4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteGroupAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 or ipv6. + -- + -- OBJECT ipMcastRouteGroup + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + -- + -- OBJECT ipMcastRouteSourceAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + -- + -- OBJECT ipMcastRouteSource + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + -- + -- OBJECT ipMcastRouteNextHopGroupAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + -- + -- OBJECT ipMcastRouteNextHopGroup + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + + -- + -- OBJECT ipMcastRouteNextHopSourceAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + -- + -- OBJECT ipMcastRouteNextHopSource + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + -- + -- OBJECT ipMcastRouteNextHopAddressType + -- SYNTAX InetAddressType {unknown(0), ipv4(1), ipv6(2), + -- ipv4z(3), ipv6z(4)} + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + -- + -- OBJECT ipMcastRouteNextHopAddress + -- SYNTAX InetAddress (SIZE (0|4|8|16|20)) + -- DESCRIPTION + -- This compliance requires support for unknown and + -- either ipv4 and ipv4z or ipv6 and ipv6z. + -- + -- OBJECT ipMcastBoundaryAddressType + -- SYNTAX InetAddressType {ipv4(1), ipv6(2)} + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastBoundaryAddress + -- SYNTAX InetAddress (SIZE (4|16) + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastScopeNameAddressType + -- SYNTAX InetAddressType {ipv4(1), ipv6(2)} + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6. + -- + -- OBJECT ipMcastScopeNameAddress + -- SYNTAX InetAddress (SIZE (4|16) + -- DESCRIPTION + -- This compliance requires support for ipv4 or ipv6." + MODULE -- this module MANDATORY-GROUPS { ipMcastMIBRouteProtoGroup, ipMcastMIBBasicGroup, ipMcastMIBSsmGroup, ipMcastMIBRouteGroup, ipMcastMIBBoundaryIfGroup, ipMcastMIBScopeNameGroup } - OBJECT ipMcastEnable + OBJECT ipMcastEnabled + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastDeviceConfigStorageType MIN-ACCESS read-only DESCRIPTION "Write access is not required." OBJECT ipMcastInterfaceTtl MIN-ACCESS read-only DESCRIPTION "Write access is not required." OBJECT ipMcastInterfaceRateLimit MIN-ACCESS read-only DESCRIPTION "Write access is not required." + OBJECT ipMcastInterfaceStorageType + MIN-ACCESS read-only + DESCRIPTION + "Write access is not required." + + OBJECT ipMcastRouteUpstreamNeighborType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + MIN-ACCESS read-only + DESCRIPTION + "This compliance requires support for unknown and either ipv4 + and ipv4z, or ipv6 and ipv6z." + + OBJECT ipMcastRouteUpstreamNeighbor + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MIN-ACCESS read-only + DESCRIPTION + "This compliance requires support for unknown and either ipv4 + and ipv4z, or ipv6 and ipv6z." + + OBJECT ipMcastRouteRtAddressType + SYNTAX InetAddressType { unknown(0), ipv4(1), ipv6(2), + ipv4z(3), ipv6z(4) } + MIN-ACCESS read-only + DESCRIPTION + "This compliance requires support for unknown and either ipv4 + and ipv4z, or ipv6 and ipv6z." + + OBJECT ipMcastRouteRtAddress + SYNTAX InetAddress (SIZE (0|4|8|16|20)) + MIN-ACCESS read-only + DESCRIPTION + "This compliance requires support for unknown and either ipv4 + and ipv4z, or ipv6 and ipv6z." + OBJECT ipMcastSsmRangeRowStatus MIN-ACCESS read-only DESCRIPTION "Write access is not required." OBJECT ipMcastSsmRangeStorageType MIN-ACCESS read-only DESCRIPTION "Write access is not required." - GROUP ipMcastMIBIfPktsGroup + GROUP ipMcastMIBRouteDiagnosticsGroup DESCRIPTION - "This group is optional." + "This group is not mandatory, but SHOULD be supported where + hardware permits." GROUP ipMcastMIBPktsOutGroup DESCRIPTION "This group is optional." GROUP ipMcastMIBHopCountGroup DESCRIPTION "This group is optional." GROUP ipMcastMIBRouteOctetsGroup DESCRIPTION "This group is optional." GROUP ipMcastMIBRouteBpsGroup DESCRIPTION "This group is optional." GROUP ipMcastMIBLocalListenerGroup DESCRIPTION "This group is optional." + OBJECT ipMcastZoneScopeAddressType + SYNTAX InetAddressType { ipv4(1), ipv6(2) } + MIN-ACCESS read-only + DESCRIPTION + "This compliance requires support for ipv4 or ipv6." + + OBJECT ipMcastZoneScopeAddress + SYNTAX InetAddress (SIZE (4|16)) + MIN-ACCESS read-only + DESCRIPTION + "This compliance requires support for ipv4 or ipv6." ::= { ipMcastMIBCompliances 3 } -- -- Units of conformance -- ipMcastMIBBasicGroup OBJECT-GROUP - OBJECTS { ipMcastEnable, ipMcastRouteEntryCount + OBJECTS { ipMcastEnabled, + ipMcastRouteEntryCount, + ipMcastDeviceConfigStorageType } STATUS current DESCRIPTION "A collection of objects to support basic management of IP Multicast protocols." ::= { ipMcastMIBGroups 1 } ipMcastMIBSsmGroup OBJECT-GROUP OBJECTS { ipMcastSsmRangeRowStatus, ipMcastSsmRangeStorageType } STATUS current DESCRIPTION "A collection of objects to support management of Source- Specific Multicast routing." ::= { ipMcastMIBGroups 2 } ipMcastMIBRouteGroup OBJECT-GROUP OBJECTS { ipMcastInterfaceTtl, ipMcastInterfaceRateLimit, - ipMcastInterfaceInMcastOctets, - ipMcastInterfaceOutMcastOctets, - ipMcastInterfaceDiscontinuityTime, + ipMcastInterfaceStorageType, ipMcastRouteUpstreamNeighborType, ipMcastRouteUpstreamNeighbor, ipMcastRouteInIfIndex, ipMcastRouteTimeStamp, ipMcastRouteExpiryTime, - ipMcastRoutePkts, - ipMcastRouteTtlDropPackets, - ipMcastRouteDifferentInIfPackets, ipMcastRouteNextHopState, ipMcastRouteNextHopTimeStamp, ipMcastRouteNextHopExpiryTime } STATUS current DESCRIPTION "A collection of objects to support basic management of IP Multicast routing." ::= { ipMcastMIBGroups 3 } -ipMcastMIBIfPktsGroup OBJECT-GROUP - OBJECTS { ipMcastInterfaceInMcastPkts, - ipMcastInterfaceOutMcastPkts, - ipMcastInterfaceDiscontinuityTime } +ipMcastMIBRouteDiagnosticsGroup OBJECT-GROUP + OBJECTS { ipMcastRoutePkts, + ipMcastRouteTtlDropPackets, + ipMcastRouteDifferentInIfPackets + } STATUS current DESCRIPTION - "A collection of objects to support management of packet - counters for each interface entry." + "A collection of routing diagnostic packet counters." ::= { ipMcastMIBGroups 4 } ipMcastMIBPktsOutGroup OBJECT-GROUP OBJECTS { ipMcastRouteNextHopTimeStamp, ipMcastRouteNextHopPkts } STATUS current DESCRIPTION "A collection of objects to support management of packet counters for each outgoing interface entry of a route." ::= { ipMcastMIBGroups 5 } @@ -2178,43 +2522,43 @@ OBJECTS { ipMcastScopeNameString, ipMcastScopeNameDefault, ipMcastScopeNameStatus, ipMcastScopeNameStorageType } STATUS current DESCRIPTION "A collection of objects to support management of multicast address scope names." ::= { ipMcastMIBGroups 12 } END -6. Security Considerations +7. Security Considerations -6.1 SNMPv2 +7.1 SNMPv3 SNMP versions prior to SNMPv3 did not include adequate security. Even if the network itself is secured (for example by using IPSec), there is still no control over whom on the secure network is allowed to access (read/change/create/delete) the objects in this MIB module. It is RECOMMENDED that implementers consider the security features as provided by the SNMPv3 framework (see [RFC3410], section 8), including full support for the SNMPv3 cryptographic mechanisms (for authentication and privacy). Further, deployment of SNMP versions prior to SNMPv3 is NOT RECOMMENDED. Instead, it is RECOMMENDED to deploy SNMPv3 and to enable cryptographic security. It is then a customer/operator responsibility to ensure that the SNMP entity giving access to an instance of this MIB module is properly configured to give access to the objects only to those principals (users) that have legitimate rights to access (read/change/create/delete) them. -6.2 Writeable objects +7.2 Writeable objects There are a number of management objects defined in this MIB module with a MAX-ACCESS clause of read-write and/or read-create. This section discusses and lists these elements. Such objects may be considered sensitive or vulnerable in some network environments. The support for SET operations in a non-secure environment without proper protection can have a negative effect on network operations. @@ -2228,34 +2572,36 @@ o Modifications to multicast routing behavior that allow interception or subversion of information that is carried by the network. For example, attacks can be envisaged that would pass nominated multicast data streams through a nominated location, without the sources or listeners becoming aware of this subversion. The following are the read-write and read-create objects defined in this MIB module. - ipMcastEnable + ipMcastEnabled + ipMcastDeviceConfigStorageType ipMcastInterfaceTtl ipMcastInterfaceRateLimit + ipMcastInterfaceStorageType ipMcastSsmRangeRowStatus ipMcastSsmRangeStorageType ipMcastBoundaryStatus ipMcastBoundaryStorageType ipMcastScopeNameTable ipMcastScopeNameString ipMcastScopeNameDefault ipMcastScopeNameStatus ipMcastScopeNameStorageType -6.3 Readable objects +7.3 Readable objects As well as the writeable objects discussed above, there are a number of readable objects (i.e., objects with a MAX-ACCESS other than not- accessible) that may be considered sensitive or vulnerable in some network environments. It is thus important to control even GET and/or NOTIFY access to these objects and possibly to even encrypt the values of these objects when sending them over the network via SNMP. In this MIB module, possible effects that can be induced by GET @@ -2266,51 +2612,57 @@ also be used in preparation for attacks, including any of the attacks described above. o Determinion of whether multicast data is flowing in the network, or has flowed recently, as well as the locations of senders and recipients. An attacker can apply 'traffic analysis' to this data. In some cases, the information revealed by traffic analyses can be as damaging as full knowledge of the data being transported. -7. IANA Considerations +8. IANA Considerations - IP-MCAST-MIB should be rooted under the mib-2 subtree. IANA is - requested to assign { mib-2 XXX } to the IP-MCAST-MIB module - specified in this document. + The MIB module in this document uses the following IANA-assigned + OBJECT IDENTIFIER values recorded in the SMI Numbers registry: -8. Acknowledgements + Descriptor OBJECT IDENTIFIER value + ----------------------------------------- + ipMcastMIB { mib-2 XXX } + + Editor's Note (to be removed prior to publication): the IANA is + requested to assign a value for "XXX" under the 'mib-2' subtree and + to record the assignment in the SMI Numbers registry. When the + assignment has been made, the RFC Editor is asked to replace "XXX" + (here and in the MIB module) with the assigned value and to remove + this note. + +9. Acknowledgements This MIB module is based on the original work in [RFC2932] by K. McCloghrie, D. Farinacci and D. Thaler. Suggested IPv6 multicast MIBs by R. Sivaramu and R. Raghunarayan have been used for comparison while editing this MIB module. The authors are also grateful to Bill Fenner for fine ideas, and to Bharat Joshi for input and several corrections. -9. References +10. References -9.1 Normative References +10.1 Normative References [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC2365] Meyer, D., "Administratively Scoped IP Multicast", BCP 23, RFC 2365, July 1998. - [RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an - IANA Considerations Section in RFCs", BCP 26, RFC 2434, - October 1998. - [RFC2578] McCloghrie, K., Ed., Perkins, D., Ed., and J. Schoenwaelder, Ed., "Structure of Management Information Version 2 (SMIv2)", STD 58, RFC 2578, April 1999. [RFC2579] McCloghrie, K., Ed., Perkins, D., Ed., and J. Schoenwaelder, Ed., "Textual Conventions for SMIv2", STD 58, RFC 2579, April 1999. [RFC2580] McCloghrie, K., Perkins, D., and J. Schoenwaelder, "Conformance Statements for SMIv2", STD 58, RFC 2580, @@ -2324,79 +2676,67 @@ MIB", RFC 2863, June 2000. [RFC3306] Haberman, B. and D. Thaler, "Unicast-Prefix-based IPv6 Multicast Addresses", RFC 3306, August 2002. [RFC3411] Harrington, D., Presuhn, R., and B. Wijnen, "An Architecture for Describing Simple Network Management Protocol (SNMP) Management Frameworks", STD 62, RFC 3411, December 2002. + [RFC3569] Bhattacharyya, S., "An Overview of Source-Specific + Multicast (SSM)", RFC 3569, July 2003. + [RFC4001] Daniele, M., Haberman, B., Routhier, S., and J. Schoenwaelder, "Textual Conventions for Internet Network Addresses", RFC 4001, February 2005. [RFC4007] Deering, S., Haberman, B., Jinmei, T., Nordmark, E., and B. Zill, "IPv6 Scoped Address Architecture", RFC 4007, March 2005. [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing Architecture", RFC 4291, February 2006. - [RFC4293] Routhier, S., "Management Information Base for the - Internet Protocol (IP)", RFC 4293, April 2006. - [I-D.mcwalter-langtag-mib] McWalter, D., "Language Tag MIB", - draft-mcwalter-langtag-mib-02 (work in progress), I-D + draft-mcwalter-langtag-mib-03 (work in progress), I-D Status active, March 2007. -9.2 Informative References - - [RFC1075] Waitzman, D., Partridge, C., and S. Deering, "Distance - Vector Multicast Routing Protocol", RFC 1075, - November 1988. - - [RFC1584] Moy, J., "Multicast Extensions to OSPF", RFC 1584, - March 1994. - - [RFC2189] Ballardie, T., "Core Based Trees (CBT version 2) Multicast - Routing -- Protocol Specification --", RFC 2189, - September 1997. +10.2 Informative References [RFC2287] Krupczak, C. and J. Saperia, "Definitions of System-Level Managed Objects for Applications", RFC 2287, February 1998. [RFC2932] McCloghrie, K., Farinacci, D., and D. Thaler, "IPv4 Multicast Routing MIB", RFC 2932, October 2000. - [RFC2934] McCloghrie, K., Farinacci, D., Thaler, D., and B. Fenner, - "Protocol Independent Multicast MIB for IPv4", RFC 2934, - October 2000. - [RFC3410] Case, J., Mundy, R., Partain, D., and B. Stewart, "Introduction and Applicability Statements for Internet- Standard Management Framework", RFC 3410, December 2002. - [RFC3569] Bhattacharyya, S., "An Overview of Source-Specific - Multicast (SSM)", RFC 3569, July 2003. + [RFC4293] Routhier, S., "Management Information Base for the + Internet Protocol (IP)", RFC 4293, April 2006. [RFC4601] Fenner, B., Handley, M., Holbrook, H., and I. Kouvelas, "Protocol Independent Multicast - Sparse Mode (PIM-SM): Protocol Specification (Revised)", RFC 4601, August 2006. + [RFC4646] Phillips, A. and M. Davis, "Tags for Identifying + Languages", BCP 47, RFC 4646, September 2006. + [I-D.ietf-pim-bidir] Handley, M., Kouvelas, I., Speakman, T., and L. Vicisano, "Bi-directional Protocol Independent Multicast (BIDIR- PIM)", draft-ietf-pim-bidir-09 (work in progress), - February 2007. + March 2007. Authors' Addresses David McWalter Data Connection Ltd 100 Church Street Enfield EN2 6BQ UK Email: dmcw@dataconnection.com