paul | 76b89b4 | 2004-11-06 17:13:09 +0000 | [diff] [blame] | 1 | @node SNMP Support |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 2 | @chapter SNMP Support |
| 3 | |
paul | a3957e3 | 2005-11-04 12:48:25 +0000 | [diff] [blame] | 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 |
Vincent Bernat | 0ff4b9c | 2012-05-25 12:04:51 +0200 | [diff] [blame] | 8 | (@cite{RFC1227}) or the AgentX protocol (@cite{RFC2741}) and make the |
| 9 | routing protocol MIBs available through it. |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 10 | |
| 11 | @menu |
paul | d191eba | 2004-07-31 15:15:39 +0000 | [diff] [blame] | 12 | * Getting and installing an SNMP agent:: |
Vincent Bernat | 0ff4b9c | 2012-05-25 12:04:51 +0200 | [diff] [blame] | 13 | * AgentX configuration:: |
paul | d191eba | 2004-07-31 15:15:39 +0000 | [diff] [blame] | 14 | * SMUX configuration:: |
| 15 | * MIB and command reference:: |
paul | a3957e3 | 2005-11-04 12:48:25 +0000 | [diff] [blame] | 16 | * Handling SNMP Traps:: |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 17 | @end menu |
| 18 | |
paul | 76b89b4 | 2004-11-06 17:13:09 +0000 | [diff] [blame] | 19 | @node Getting and installing an SNMP agent |
paul | d191eba | 2004-07-31 15:15:39 +0000 | [diff] [blame] | 20 | @section Getting and installing an SNMP agent |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 21 | |
Vincent Bernat | 0ff4b9c | 2012-05-25 12:04:51 +0200 | [diff] [blame] | 22 | There are several SNMP agent which support SMUX or AgentX. We recommend to use the latest |
paul | d191eba | 2004-07-31 15:15:39 +0000 | [diff] [blame] | 23 | version of @code{net-snmp} which was formerly known as @code{ucd-snmp}. |
paul | 76b89b4 | 2004-11-06 17:13:09 +0000 | [diff] [blame] | 24 | It is free and open software and available at @uref{http://www.net-snmp.org/} |
paul | d191eba | 2004-07-31 15:15:39 +0000 | [diff] [blame] | 25 | and as binary package for most Linux distributions. |
Vincent Bernat | 0ff4b9c | 2012-05-25 12:04:51 +0200 | [diff] [blame] | 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 |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 90 | |
paul | 76b89b4 | 2004-11-06 17:13:09 +0000 | [diff] [blame] | 91 | @node SMUX configuration |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 92 | @section SMUX configuration |
| 93 | |
paul | d191eba | 2004-07-31 15:15:39 +0000 | [diff] [blame] | 94 | To enable SMUX protocol support, Quagga must have been build with the |
Vincent Bernat | 0ff4b9c | 2012-05-25 12:04:51 +0200 | [diff] [blame] | 95 | @code{--enable-snmp=smux} option. |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 96 | |
Vincent Bernat | 0ff4b9c | 2012-05-25 12:04:51 +0200 | [diff] [blame] | 97 | A separate connection has then to be established between the |
paul | a3957e3 | 2005-11-04 12:48:25 +0000 | [diff] [blame] | 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. |
paul | d191eba | 2004-07-31 15:15:39 +0000 | [diff] [blame] | 102 | |
paul | a3957e3 | 2005-11-04 12:48:25 +0000 | [diff] [blame] | 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. |
paul | d191eba | 2004-07-31 15:15:39 +0000 | [diff] [blame] | 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 | |
paul | 76b89b4 | 2004-11-06 17:13:09 +0000 | [diff] [blame] | 147 | @node MIB and command reference |
paul | d191eba | 2004-07-31 15:15:39 +0000 | [diff] [blame] | 148 | @section MIB and command reference |
| 149 | |
| 150 | The following OID numbers are used for the interprocess communication of snmpd and |
Vincent Bernat | 0ff4b9c | 2012-05-25 12:04:51 +0200 | [diff] [blame] | 151 | the Quagga daemons with SMUX only. |
paul | d191eba | 2004-07-31 15:15:39 +0000 | [diff] [blame] | 152 | @example |
| 153 | (OIDs below .iso.org.dod.internet.private.enterprises) |
hasso | 54aa6b2 | 2004-10-12 06:05:34 +0000 | [diff] [blame] | 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 |
paul | d191eba | 2004-07-31 15:15:39 +0000 | [diff] [blame] | 159 | @end example |
| 160 | |
Vincent Bernat | 0ff4b9c | 2012-05-25 12:04:51 +0200 | [diff] [blame] | 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: |
paul | d191eba | 2004-07-31 15:15:39 +0000 | [diff] [blame] | 163 | @example |
hasso | 54aa6b2 | 2004-10-12 06:05:34 +0000 | [diff] [blame] | 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 |
paul | d191eba | 2004-07-31 15:15:39 +0000 | [diff] [blame] | 169 | @end example |
| 170 | |
Vincent Bernat | 0ff4b9c | 2012-05-25 12:04:51 +0200 | [diff] [blame] | 171 | The following syntax is understood by the Quagga daemons for configuring SNMP using SMUX: |
paul | 718e374 | 2002-12-13 20:15:29 +0000 | [diff] [blame] | 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 |
paul | a3957e3 | 2005-11-04 12:48:25 +0000 | [diff] [blame] | 179 | |
Vincent Bernat | 0ff4b9c | 2012-05-25 12:04:51 +0200 | [diff] [blame] | 180 | Here is the syntax for using AgentX: |
| 181 | @deffn {Command} {agentx} {} |
| 182 | @deffnx {Command} {no agentx} {} |
| 183 | @end deffn |
| 184 | |
paul | a3957e3 | 2005-11-04 12:48:25 +0000 | [diff] [blame] | 185 | @include snmptrap.texi |