Annotation of embedaddon/quagga/doc/snmp.texi, revision 1.1.1.2

1.1       misho       1: @node SNMP Support
                      2: @chapter SNMP Support
                      3: 
                      4: @acronym{SNMP,Simple Network Managing Protocol} is a widely implemented
                      5: feature for collecting network information from router and/or host.
                      6: Quagga itself does not support SNMP agent (server daemon) functionality
                      7: but is able to connect to a SNMP agent using the SMUX protocol
1.1.1.2 ! misho       8: (@cite{RFC1227}) or the AgentX protocol (@cite{RFC2741}) and make the
        !             9: routing protocol MIBs available through it.
1.1       misho      10: 
                     11: @menu
                     12: * Getting and installing an SNMP agent::
1.1.1.2 ! misho      13: * AgentX configuration::
1.1       misho      14: * SMUX configuration::
                     15: * MIB and command reference::
                     16: * Handling SNMP Traps::
                     17: @end menu
                     18: 
                     19: @node Getting and installing an SNMP agent
                     20: @section Getting and installing an SNMP agent
                     21: 
1.1.1.2 ! misho      22: There are several SNMP agent which support SMUX or AgentX. We recommend to use the latest
1.1       misho      23: version of @code{net-snmp} which was formerly known as @code{ucd-snmp}.
                     24: It is free and open software and available at @uref{http://www.net-snmp.org/}
                     25: and as binary package for most Linux distributions.
1.1.1.2 ! misho      26: @code{net-snmp} has to be compiled with @code{--with-mib-modules=agentx} to
        !            27: be able to accept connections from Quagga using AgentX protocol or with
        !            28: @code{--with-mib-modules=smux} to use SMUX protocol.
        !            29: 
        !            30: Nowadays, SMUX is a legacy protocol. The AgentX protocol should be
        !            31: preferred for any new deployment. Both protocols have the same coverage.
        !            32: 
        !            33: @node AgentX configuration
        !            34: @section AgentX configuration
        !            35: 
        !            36: To enable AgentX protocol support, Quagga must have been build with the
        !            37: @code{--enable-snmp} or @code{--enable-snmp=agentx} option. Both the
        !            38: master SNMP agent (snmpd) and each of the Quagga daemons must be
        !            39: configured. In @code{/etc/snmp/snmpd.conf}, @code{master agentx}
        !            40: directive should be added. In each of the Quagga daemons, @code{agentx}
        !            41: command will enable AgentX support.
        !            42: 
        !            43: @example
        !            44: /etc/snmp/snmpd.conf:
        !            45:        #
        !            46:        # example access restrictions setup
        !            47:        #
        !            48:        com2sec readonly default public
        !            49:        group MyROGroup v1 readonly
        !            50:        view all included .1 80
        !            51:        access MyROGroup "" any noauth exact all none none
        !            52:        #
        !            53:        # enable master agent for AgentX subagents
        !            54:        #
        !            55:        master agentx
        !            56: 
        !            57: /etc/quagga/ospfd.conf:
        !            58:        ! ... the rest of ospfd.conf has been omitted for clarity ...
        !            59:        !
        !            60:        agentx
        !            61:        !
        !            62: @end example
        !            63: 
        !            64: Upon successful connection, you should get something like this in the
        !            65: log of each Quagga daemons:
        !            66: 
        !            67: @example
        !            68: 2012/05/25 11:39:08 ZEBRA: snmp[info]: NET-SNMP version 5.4.3 AgentX subagent connected
        !            69: @end example
        !            70: 
        !            71: Then, you can use the following command to check everything works as expected:
        !            72: 
        !            73: @example
        !            74: # snmpwalk -c public -v1 localhost .1.3.6.1.2.1.14.1.1
        !            75: OSPF-MIB::ospfRouterId.0 = IpAddress: 192.168.42.109
        !            76: [...]
        !            77: @end example
        !            78: 
        !            79: The AgentX protocol can be transported over a Unix socket or using TCP
        !            80: or UDP. It usually defaults to a Unix socket and depends on how NetSNMP
        !            81: was built. If need to configure Quagga to use another transport, you can
        !            82: configure it through @code{/etc/snmp/quagga.conf}:
        !            83: 
        !            84: @example
        !            85: /etc/snmp/quagga.conf:
        !            86:        [snmpd]
        !            87:        # Use a remote master agent
        !            88:        agentXSocket tcp:192.168.15.12:705
        !            89: @end example
1.1       misho      90: 
                     91: @node SMUX configuration
                     92: @section SMUX configuration
                     93: 
                     94: To enable SMUX protocol support, Quagga must have been build with the
1.1.1.2 ! misho      95: @code{--enable-snmp=smux} option.
1.1       misho      96: 
1.1.1.2 ! misho      97: A separate connection has then to be established between the
1.1       misho      98: SNMP agent (snmpd) and each of the Quagga daemons. This connections
                     99: each use different OID numbers and passwords. Be aware that this OID
                    100: number is not the one that is used in queries by clients, it is solely
                    101: used for the intercommunication of the daemons.
                    102: 
                    103: In the following example the ospfd daemon will be connected to the
                    104: snmpd daemon using the password "quagga_ospfd". For testing it is
                    105: recommending to take exactly the below snmpd.conf as wrong access
                    106: restrictions can be hard to debug.
                    107: 
                    108: @example
                    109: /etc/snmp/snmpd.conf:
                    110:        #
                    111:        # example access restrictions setup
                    112:        #
                    113:        com2sec readonly default public
                    114:        group MyROGroup v1 readonly
                    115:        view all included .1 80
                    116:        access MyROGroup "" any noauth exact all none none
                    117:        #
                    118:        # the following line is relevant for Quagga
                    119:        #
                    120:        smuxpeer .1.3.6.1.4.1.3317.1.2.5 quagga_ospfd
                    121: 
                    122: /etc/quagga/ospf:
                    123:        ! ... the rest of ospfd.conf has been omitted for clarity ...
                    124:        !
                    125:        smux peer .1.3.6.1.4.1.3317.1.2.5 quagga_ospfd
                    126:        !
                    127: @end example
                    128: 
                    129: After restarting snmpd and quagga, a successful connection can be verified in
                    130: the syslog and by querying the SNMP daemon:
                    131: 
                    132: @example
                    133: snmpd[12300]: [smux_accept] accepted fd 12 from 127.0.0.1:36255 
                    134: snmpd[12300]: accepted smux peer: \
                    135:        oid GNOME-PRODUCT-ZEBRA-MIB::ospfd, quagga-0.96.5
                    136: 
                    137: # snmpwalk -c public -v1 localhost .1.3.6.1.2.1.14.1.1
                    138: OSPF-MIB::ospfRouterId.0 = IpAddress: 192.168.42.109
                    139: @end example
                    140: 
                    141: Be warned that the current version (5.1.1) of the Net-SNMP daemon writes a line
                    142: for every SNMP connect to the syslog which can lead to enormous log file sizes.
                    143: If that is a problem you should consider to patch snmpd and comment out the
                    144: troublesome @code{snmp_log()} line in the function
                    145: @code{netsnmp_agent_check_packet()} in @code{agent/snmp_agent.c}.
                    146: 
                    147: @node MIB and command reference
                    148: @section MIB and command reference
                    149: 
                    150: The following OID numbers are used for the interprocess communication of snmpd and
1.1.1.2 ! misho     151: the Quagga daemons with SMUX only.
1.1       misho     152: @example
                    153:             (OIDs below .iso.org.dod.internet.private.enterprises)
                    154: zebra  .1.3.6.1.4.1.3317.1.2.1 .gnome.gnomeProducts.zebra.zserv
                    155: bgpd   .1.3.6.1.4.1.3317.1.2.2 .gnome.gnomeProducts.zebra.bgpd
                    156: ripd   .1.3.6.1.4.1.3317.1.2.3 .gnome.gnomeProducts.zebra.ripd
                    157: ospfd  .1.3.6.1.4.1.3317.1.2.5 .gnome.gnomeProducts.zebra.ospfd
                    158: ospf6d .1.3.6.1.4.1.3317.1.2.6 .gnome.gnomeProducts.zebra.ospf6d
                    159: @end example
                    160: 
1.1.1.2 ! misho     161: Sadly, SNMP has not been implemented in all daemons yet. The following
        !           162: OID numbers are used for querying the SNMP daemon by a client:
1.1       misho     163: @example
                    164: zebra  .1.3.6.1.2.1.4.24   .iso.org.dot.internet.mgmt.mib-2.ip.ipForward
                    165: ospfd  .1.3.6.1.2.1.14     .iso.org.dot.internet.mgmt.mib-2.ospf
                    166: bgpd   .1.3.6.1.2.1.15     .iso.org.dot.internet.mgmt.mib-2.bgp 
                    167: ripd   .1.3.6.1.2.1.23     .iso.org.dot.internet.mgmt.mib-2.rip2
                    168: ospf6d .1.3.6.1.3.102      .iso.org.dod.internet.experimental.ospfv3
                    169: @end example
                    170: 
1.1.1.2 ! misho     171: The following syntax is understood by the Quagga daemons for configuring SNMP using SMUX:
1.1       misho     172: @deffn {Command} {smux peer @var{oid}} {}
                    173: @deffnx {Command} {no smux peer @var{oid}} {}
                    174: @end deffn
                    175: 
                    176: @deffn {Command} {smux peer @var{oid} @var{password}} {}
                    177: @deffnx {Command} {no smux peer @var{oid} @var{password}} {}
                    178: @end deffn
                    179: 
1.1.1.2 ! misho     180: Here is the syntax for using AgentX:
        !           181: @deffn {Command} {agentx} {}
        !           182: @deffnx {Command} {no agentx} {}
        !           183: @end deffn
        !           184: 
1.1       misho     185: @include snmptrap.texi

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>