1    -- Draft           Cisco-Specific IP Multicast MIB           July 1994
2
3    CISCO-IPMCAST-MIB DEFINITIONS ::= BEGIN
4
5    IMPORTS
6        enterprises                      FROM RFC1155-SMI
7        MODULE-IDENTITY, OBJECT-TYPE,
8        Integer32, Counter32, IpAddress  FROM SNMPv2-SMI
9        RowStatus, TruthValue            FROM SNMPv2-TC
10        OwnerString                      FROM RFC1271-MIB
11        MODULE-COMPLIANCE, OBJECT-GROUP  FROM SNMPv2-CONF
12        igmpInterfaceEntry               FROM IGMP-MIB;
13
14    ciscoMcastMIB MODULE-IDENTITY
15        LAST-UPDATED "9407301359Z"
16        ORGANIZATION "Cisco System Inc."
17        CONTACT-INFO
18                "    Cisco System Inc."
19        DESCRIPTION
20                "The MIB module for Cisco-specific management of IP
21                Multicast in Cisco devices."
22        ::= { enterprises 9 10 4 }
23
24    -- cisco           OBJECT IDENTIFIER ::= { enterprises 9 }
25    -- ciscoExperiment OBJECT IDENTIFIER ::= { cisco 10 }
26
27
28    ciscoMcastMIBObjects OBJECT IDENTIFIER ::= { ciscoMcastMIB 1 }
29
30    mcastAccess  OBJECT IDENTIFIER ::= { ciscoMcastMIBObjects 1 }
31    mcastTrace   OBJECT IDENTIFIER ::= { ciscoMcastMIBObjects 2 }
32    mcastFilter  OBJECT IDENTIFIER ::= { ciscoMcastMIBObjects 3 }
33
34    --
35    -- The Multicast Access-list Group
36    --
37
38    --
39    -- The PIM Rendezvous-Point Access-list Table
40    --
41    pimRpAccessListTable OBJECT-TYPE
42        SYNTAX     SEQUENCE OF PimRpAccessListEntry
43        MAX-ACCESS not-accessible
44        STATUS     current
45        DESCRIPTION
46                "The (conceptual) table containing the access-lists of IP
47                Multicast groups configured for specific Rendezvous-
48                Points.  An RP for which there is no entry in this table
49                is configured for all groups."
50        ::= { mcastAccess 1 }
51
52    pimRpAccessListEntry OBJECT-TYPE
53        SYNTAX     PimRpAccessListEntry
54        MAX-ACCESS not-accessible
55        STATUS     current
56        DESCRIPTION
57                "An entry (conceptual row) in the pimRpAccessListTable."
58        INDEX      { pimRpAccessListRP }
59        ::= { pimRpAccessListTable 1 }
60
61    PimRpAccessListEntry ::= SEQUENCE {
62        pimRpAccessListRP         IpAddress,
63        pimRpAccessListNumber     INTEGER,
64        pimRpAccessListStatus     RowStatus
65    }
66
67    pimRpAccessListRP OBJECT-TYPE
68        SYNTAX     IpAddress
69        MAX-ACCESS not-accessible
70        STATUS     current
71        DESCRIPTION
72                "The address of the Rendezvous Point for which this entry
73                contains access-list information."
74        ::= { pimRpAccessListEntry 1 }
75
76    pimRpAccessListNumber OBJECT-TYPE
77        SYNTAX     INTEGER (0..100)
78        MAX-ACCESS read-create
79        STATUS     current
80        DESCRIPTION
81                "The number of the access-list which specifies the range
82                of group addresses which have this Rendezvous Point.  A
83                value of zero is equivalent to no access-list."
84        ::= { pimRpAccessListEntry 2 }
85
86    pimRpAccessListStatus OBJECT-TYPE
87        SYNTAX     RowStatus
88        MAX-ACCESS read-create
89        STATUS     current
90        DESCRIPTION
91                "The status of this row."
92        ::= { pimRpAccessListEntry 3 }
93
94
95    -- The IGMP Access-list Table
96    --
97    igmpAccessListTable OBJECT-TYPE
98        SYNTAX     SEQUENCE OF IgmpAccessListEntry
99        MAX-ACCESS not-accessible
100        STATUS     current
101        DESCRIPTION
102                "The (conceptual) table containing the configured access-
103                lists of IP Multicast groups for which join requests
104                received from hosts (i.e., directly attached group
105                members) via specific interfaces are allowed.  If no
106                access-list is defined for an interface, any group can be
107                joined via that interace."
108        ::= { mcastAccess 2 }
109
110    igmpAccessListEntry OBJECT-TYPE
111        SYNTAX     IgmpAccessListEntry
112        MAX-ACCESS not-accessible
113        STATUS     current
114        DESCRIPTION
115                "An entry (conceptual row) in the igmpAccessListTable."
116        AUGMENTS      { igmpInterfaceEntry }
117        ::= { igmpAccessListTable 1 }
118
119    IgmpAccessListEntry ::= SEQUENCE {
120        igmpAccessListNumber     INTEGER
121    }
122
123    igmpAccessListNumber OBJECT-TYPE
124        SYNTAX     INTEGER (0..100)
125        MAX-ACCESS read-write
126        STATUS     current
127        DESCRIPTION
128                "The number of the access-list which specifies the IP
129                multicast groups for which joins are allowed on this
130                interface.  A value of zero is equivalent to no access-
131                list."
132        ::= { igmpAccessListEntry 1 }
133
134
135    --
136    --  The Multicast Tracing MIB-Group
137    --
138
139    mcastTraceRequest   OBJECT IDENTIFIER ::= { mcastTrace 1 }
140    mcastTraceResponse  OBJECT IDENTIFIER ::= { mcastTrace 2 }
141
142    --
143    -- The router provides the following a CLI command:
144    --
145    --   mrbranch <group> <branch-address>
146    --     Traces a branch of a multicast tree for group <group> in the
147    --     reverse direction from the router with the <branch-address>
148    --     up the tree to the source of the mrbranch request. Both the
149    --     request and response are unicast addressed. The number of
150    --     packets generated is 2 times the number of routers between
151    --     the source and <branch-address>.
152    --
153    -- The following objects provide for mrbranch to be invoked via SNMP
154    -- (by multiple managers, but only one at a time) using the following
155    -- procedure:
156    --
157    -- 1. wait for mrbranchState == inactive,
158    -- 2. issue a SetRequest with
159    --         mrbranchGroup = group address
160    --         mrbranchBranch = branch address
161    --         mrbranchRequestor = unique id for this request
162    --         mrbranchState = active
163    --         (optionally include mrbranchTimeout and mrbranchRequestor)
164    --   if successful, mrbranch has been started
165    --   else if error-index ==  mrbranchState
166    --        then some other NMS got in first
167    --        else check for other errors
168    -- 3. retrieve results by periodically polling for mrbranchState,
169    -- 4. when mrbranchState == inactive, retrieve all entries in the
170    --    mrbranchResponseTable to obtain the results, ensuring that
171    --    mrbranchRequestor remains unchanged,
172    -- 5. it is advisable to issue mrbranch multiple times to get best
173    --    results
174    --
175
176    mrbranchState OBJECT-TYPE
177        SYNTAX     INTEGER { inactive(1),  active(2) }
178        MAX-ACCESS read-write
179        STATUS     current
180        DESCRIPTION
181                "The state of the SNMP-invoked mrbranch facility.  Only
182                one such mrbranch may be in progress at a time.  When this
183                object has the value 'inactive', setting it to 'active'
184                causes an mrbranch to be invoked using the values of
185                mrbranchGroup, mrbranchBranch and mrbranchTimeout which
186                were set either concurrently or most recently.  The value
187                stays 'active' until the mrbranch completes/times-out at
188                which time it becomes 'inactive'.  Setting this value to
189                'active' when it is already 'active' it is an error.
190                Setting it to 'inactive' either cancels the active
191                mrbranch or is a no-op."
192        ::= { mcastTraceRequest 1 }
193
194    mrbranchGroup OBJECT-TYPE
195        SYNTAX     IpAddress
196        MAX-ACCESS read-write
197        STATUS     current
198        DESCRIPTION
199                "The IP multicast group address to be used by the next
200                SNMP-invoked mrbranch command."
201        ::= { mcastTraceRequest 2 }
202
203    mrbranchBranch OBJECT-TYPE
204        SYNTAX     IpAddress
205        MAX-ACCESS read-write
206        STATUS     current
207        DESCRIPTION
208                "The branch address, i.e., the IP unicast address of the
209                responding router, to be used by the next SNMP-invoked
210                mrbranch command."
211        ::= { mcastTraceRequest 3 }
212
213    mrbranchTimeout OBJECT-TYPE
214        SYNTAX     Integer32
215        UNITS      "seconds"
216        MAX-ACCESS read-write
217        STATUS     current
218        DESCRIPTION
219                "The maximum number of seconds to be taken by the next
220                SNMP-invoked mrbranch command."
221        ::= { mcastTraceRequest 4 }
222
223    mrbranchRequestor OBJECT-TYPE
224        SYNTAX     OwnerString
225        UNITS      "seconds"
226        MAX-ACCESS read-write
227        STATUS     current
228        DESCRIPTION
229                "An indication of the identity of invoker the
230                last/current/next SNMP-invoked mrbranch command."
231        ::= { mcastTraceRequest 5 }
232
233
234
235    --
236    --  The Mrbranch Response Table
237    --
238    mrbranchResponseTable OBJECT-TYPE
239        SYNTAX     SEQUENCE OF MrbranchResponseEntry
240        MAX-ACCESS not-accessible
241        STATUS     current
242        DESCRIPTION
243                "The table containing mrbranch responses.  Additional
244                information from mrbranch responses is contained in the
245                mrbranchInterfaceListTable."
246        ::= { mcastTraceResponse 1 }
247
248    mrbranchResponseEntry OBJECT-TYPE
249        SYNTAX     MrbranchResponseEntry
250        MAX-ACCESS not-accessible
251        STATUS     current
252        DESCRIPTION
253                "An entry in the mrbranchResponseTable, representing one
254                mrbranch response."
255        INDEX      { mrbranchResponseResponder }
256        ::= { mrbranchResponseTable 1 }
257
258    MrbranchResponseEntry ::= SEQUENCE {
259        mrbranchResponseResponder  IpAddress,
260        mrbranchResponseRtt        Integer32,
261        mrbranchResponseRPF        IpAddress
262    }
263
264    mrbranchResponseResponder OBJECT-TYPE
265        SYNTAX     IpAddress
266        MAX-ACCESS not-accessible
267        STATUS     current
268        DESCRIPTION
269                "The IP address of the responder to the mrbranch request
270                for which this entry contains information."
271        ::= { mrbranchResponseEntry 1 }
272
273    mrbranchResponseRtt OBJECT-TYPE
274        SYNTAX     Integer32
275        MAX-ACCESS read-only
276        STATUS     current
277        DESCRIPTION
278                "The time taken for the request to be sent and the
279                response to come back for this responder to the mrbranch
280                request."
281        ::= { mrbranchResponseEntry 2 }
282
283    mrbranchResponseRPF OBJECT-TYPE
284        SYNTAX     IpAddress
285        MAX-ACCESS read-only
286        STATUS     current
287        DESCRIPTION
288                "The IP address of the RPF neighbor of the responder to
289                the mrbranch request."
290        ::= { mrbranchResponseEntry 3 }
291
292
293    --
294    --  The Mrbranch Response Interface List Table
295    --
296    mrbranchInterfaceListTable OBJECT-TYPE
297        SYNTAX     SEQUENCE OF MrbranchInterfaceListEntry
298        MAX-ACCESS not-accessible
299        STATUS     current
300        DESCRIPTION
301                "The table containing information on outgoing interfaces
302                as reported in a response to a mrbranch.  Each entry is
303                one of a list of outgoing interface from a particular
304                responder."
305        ::= { mcastTraceResponse 2 }
306
307    mrbranchInterfaceListEntry OBJECT-TYPE
308        SYNTAX     MrbranchInterfaceListEntry
309        MAX-ACCESS not-accessible
310        STATUS     current
311        DESCRIPTION
312                "An entry in the mrbranchInterfaceListTable containing a
313                particular outgoing interface listed in the response to a
314                mrbranch received from the responder indicated by
315                mrbranchResponseResponder."
316        INDEX      { mrbranchResponseResponder,
317                     mrbranchInterfaceListAddress }
318        ::= { mrbranchInterfaceListTable 1 }
319
320    MrbranchInterfaceListEntry ::= SEQUENCE {
321        mrbranchInterfaceListAddress  IpAddress,
322        mrbranchInterfaceListNetMask  IpAddress
323    }
324
325    mrbranchInterfaceListAddress OBJECT-TYPE
326        SYNTAX     IpAddress
327        MAX-ACCESS read-only
328        STATUS     current
329        DESCRIPTION
330                "The IP address of the outgoing interface."
331        ::= { mrbranchInterfaceListEntry 1 }
332
333    mrbranchInterfaceListNetMask OBJECT-TYPE
334        SYNTAX     IpAddress
335        MAX-ACCESS read-only
336        STATUS     current
337        DESCRIPTION
338                "The network mask of the IP address of the outgoing
339                interface."
340        ::= { mrbranchInterfaceListEntry 2 }
341
342
343    --
344    --  The IGMP Conditional Filtering MIB-Group
345    --
346
347    igmpConditionalFilteringEnable OBJECT-TYPE
348        SYNTAX     TruthValue
349        MAX-ACCESS read-write
350        STATUS     current
351        DESCRIPTION
352                "An indication of whether IGMP Conditional Filtering is
353                enabled."
354        ::= {  mcastFilter 1 }
355
356    igmpMemberReportTimeout  OBJECT-TYPE
357        SYNTAX     Integer32
358        UNITS      "seconds"
359        MAX-ACCESS read-write
360        STATUS     current
361        DESCRIPTION
362                "The number of seconds for which the receipt of the most
363                recent IGMP Membership Report for a particular IP
364                multicast group on a particular interface indicates that
365                there is currently a member of that group on that
366                interface."
367        ::= {  mcastFilter 2 }
368
369
370    --
371    --  The IGMP Conditional Filtering Interface Table
372    --
373    igmpCondFilterIfTable OBJECT-TYPE
374        SYNTAX     SEQUENCE OF IgmpCondFilterIfEntry
375        MAX-ACCESS not-accessible
376        STATUS     current
377        DESCRIPTION
378                "The table containing information on interfaces for use
379                with IGMP Conditional Filtering."
380        ::= { mcastFilter 3 }
381
382    igmpCondFilterIfEntry OBJECT-TYPE
383        SYNTAX     IgmpCondFilterIfEntry
384        MAX-ACCESS not-accessible
385        STATUS     current
386        DESCRIPTION
387                "An entry in the igmpCondFilterIfTable containing
388                information on a particular interface."
389        INDEX      { igmpCondFilterIfIndex }
390        ::= { igmpCondFilterIfTable 1 }
391
392    IgmpCondFilterIfEntry ::= SEQUENCE {
393        igmpCondFilterIfIndex      Integer32,
394        igmpCondFilterIfStatus     INTEGER,
395        igmpCondFilterIfRouter     TruthValue
396    }
397
398    igmpCondFilterIfIndex OBJECT-TYPE
399        SYNTAX     Integer32
400        MAX-ACCESS not-accessible
401        STATUS     current
402        DESCRIPTION
403                "The ifIndex value of the interface."
404        ::= { igmpCondFilterIfEntry 1 }
405
406    igmpCondFilterIfStatus OBJECT-TYPE
407        SYNTAX     INTEGER { routerPresent(1),
408                             noRouter(2),
409                             dynamic(3) }
410        MAX-ACCESS read-write
411        STATUS     current
412        DESCRIPTION
413                "An indication of whether the presense of an IP multicast
414                router on this interface is to be determined statically or
415                dynamically.  The values routerPresent(1) and noRouter(2)
416                indicate that the presence of a router is statically
417                determined to be present or not-present, respectively.
418                The value dynamic(3) indicates the presence is to be
419                determined dynamically."
420        ::= { igmpCondFilterIfEntry 2 }
421
422    igmpCondFilterIfRouter OBJECT-TYPE
423        SYNTAX     TruthValue
424        MAX-ACCESS read-only
425        STATUS     current
426        DESCRIPTION
427                "An indication of whether an IP multicast router is
428                present on this interface."
429        ::= { igmpCondFilterIfEntry 3 }
430
431
432    --
433    --  The IGMP Conditional Filtering Multicast-Group Table
434    --
435    igmpCondFilterMcastTable OBJECT-TYPE
436        SYNTAX     SEQUENCE OF IgmpCondFilterMcastEntry
437        MAX-ACCESS not-accessible
438        STATUS     current
439        DESCRIPTION
440                "The table containing information on IP multicast groups
441                for use with IGMP Conditional Filtering."
442        ::= { mcastFilter 4 }
443
444    igmpCondFilterMcastEntry OBJECT-TYPE
445        SYNTAX     IgmpCondFilterMcastEntry
446        MAX-ACCESS not-accessible
447        STATUS     current
448        DESCRIPTION
449                "An entry in the igmpCondFilterMcastTable containing
450                information on a particular IP multicast group on a
451                particular interface.  An entry is created by the agent
452                when it receives on the interface either an IP multicast
453                datagram destined to the multicast group, or an IGMP
454                Membership Report for the group.  An entry can also be
455                created by network management to indicate that datagrams
456                for the multicast group are to be forwarded to the
457                interface irrespective of the receipt/non-receipt of IGMP
458                Membership Reports."
459        INDEX      { igmpCondFilterMcastIfIndex,
460                     igmpCondFilterMcastAddress }
461        ::= { igmpCondFilterMcastTable 1 }
462
463    IgmpCondFilterMcastEntry ::= SEQUENCE {
464        igmpCondFilterMcastIfIndex    Integer32,
465        igmpCondFilterMcastAddress    IpAddress,
466        igmpCondFilterMcastMember     TruthValue,
467        igmpCondFilterMcastInPkts     Counter32,
468        igmpCondFilterMcastOutPkts    Counter32,
469        igmpCondFilterMcastStatus     RowStatus
470    }
471
472    igmpCondFilterMcastIfIndex OBJECT-TYPE
473        SYNTAX     Integer32
474        MAX-ACCESS not-accessible
475        STATUS     current
476        DESCRIPTION
477                "The ifIndex value of the interface."
478        ::= { igmpCondFilterMcastEntry 1 }
479
480    igmpCondFilterMcastAddress OBJECT-TYPE
481        SYNTAX     IpAddress
482        MAX-ACCESS not-accessible
483        STATUS     current
484        DESCRIPTION
485                "The IP multicast group."
486        ::= { igmpCondFilterMcastEntry 2 }
487
488    igmpCondFilterMcastMember OBJECT-TYPE
489        SYNTAX     TruthValue
490        MAX-ACCESS read-create
491        STATUS     current
492        DESCRIPTION
493                "An indication of whether there is currently a member of
494                the IP multicast group on this interface."
495        ::= { igmpCondFilterMcastEntry 3 }
496
497    igmpCondFilterMcastInPkts OBJECT-TYPE
498        SYNTAX     Counter32
499        MAX-ACCESS read-only
500        STATUS     current
501        DESCRIPTION
502                "The number of IP multicast datagrams destined for this
503                multicast address which have been received on this
504                interface."
505        ::= { igmpCondFilterMcastEntry 4 }
506
507    igmpCondFilterMcastOutPkts OBJECT-TYPE
508        SYNTAX     Counter32
509        MAX-ACCESS read-only
510        STATUS     current
511        DESCRIPTION
512                "The number of IP multicast datagrams destined for this
513                multicast address which have been forwarded to this
514                interface."
515        ::= { igmpCondFilterMcastEntry 5 }
516
517    igmpCondFilterMcastStatus OBJECT-TYPE
518        SYNTAX     RowStatus
519        MAX-ACCESS read-create
520        STATUS     current
521        DESCRIPTION
522                "The status of this row.  If a row is created for a IP
523                multicast group on a particular interface with the
524                instance of igmpCondFilterMcastMember set to true(1), then
525                datagrams destined to the multicast group are to be
526                forwarded to the interface independent of whether IGMP
527                Membership Reports are received."
528        ::= { igmpCondFilterMcastEntry 6 }
529
530
531    -- conformance information
532
533    ciscoMcastMIBConformance
534                  OBJECT IDENTIFIER ::= { ciscoMcastMIB 2 }
535    ciscoMcastMIBCompliances
536                  OBJECT IDENTIFIER ::= { ciscoMcastMIBConformance 1 }
537    ciscoMcastMIBGroups
538                  OBJECT IDENTIFIER ::= { ciscoMcastMIBConformance 2 }
539
540
541    -- compliance statements
542
543    ciscoMcastMIBCompliance MODULE-COMPLIANCE
544        STATUS  current
545        DESCRIPTION
546                "The compliance statement for routers implementing the
547                Cisco-specific IP Multicast MIB."
548        MODULE  -- this module
549            MANDATORY-GROUPS { ciscoMcastAccessMIBGroup,
550                               ciscoMrbranchMIBGroup
551                             }
552
553            OBJECT      pimRpAccessListNumber
554            MIN-ACCESS  read-only
555            DESCRIPTION
556                   "Write access is not required."
557
558            OBJECT      pimRpAccessListStatus
559            MIN-ACCESS  read-only
560            DESCRIPTION
561                   "Create and write access is not required."
562
563
564            OBJECT      igmpAccessListNumber
565            MIN-ACCESS  read-only
566            DESCRIPTION
567                   "Write access is not required."
568
569        ::= { ciscoMcastMIBCompliances 1 }
570
571    ciscoMcastCondFilterMIBCompliance MODULE-COMPLIANCE
572        STATUS  current
573        DESCRIPTION
574                "The compliance statement for bridges/switches which
575                implement Conditional IGMP Filtering."
576        MODULE  -- this module
577            MANDATORY-GROUPS { ciscoMcastFilterMIBGroup }
578        ::= { ciscoMcastMIBCompliances 2 }
579
580
581    -- units of conformance
582
583    ciscoMcastAccessMIBGroup OBJECT-GROUP
584        OBJECTS { pimRpAccessListNumber, pimRpAccessListStatus,
585                  igmpAccessListNumber
586                }
587        STATUS  current
588        DESCRIPTION
589                "A collection of objects providing management of Access-
590                Lists for IP Multicast in Cisco routers."
591        ::= { ciscoMcastMIBGroups 1 }
592
593    ciscoMrbranchMIBGroup OBJECT-GROUP
594        OBJECTS { mrbranchState, mrbranchGroup, mrbranchBranch,
595                  mrbranchTimeout, mrbranchRequestor,
596                  mrbranchResponseRtt, mrbranchResponseRPF,
597                  mrbranchInterfaceListNetMask
598                }
599        STATUS  current
600        DESCRIPTION
601                "A collection of objects providing for the invocation of
602                mrbranch commands in Cisco routers."
603        ::= { ciscoMcastMIBGroups 2 }
604
605    ciscoMcastFilterMIBGroup OBJECT-GROUP
606        OBJECTS { igmpConditionalFilteringEnable,
607                  igmpMemberReportTimeout,
608                  igmpCondFilterIfStatus,
609                  igmpCondFilterIfRouter,
610                  igmpCondFilterMcastMember,
611                  igmpCondFilterMcastInPkts,
612                  igmpCondFilterMcastOutPkts,
613                  igmpCondFilterMcastStatus
614                }
615        STATUS  current
616        DESCRIPTION
617                "A collection of objects for management of
618                bridges/switches which implement IGMP Conditional
619                Filtering."
620        ::= { ciscoMcastMIBGroups 3 }
621
622
623END
624