README.smux
[1] What is SMUX? SMUX is the snmp multiplexing protocol (RFC 1227). It can be used by an snmp agent to query variables maintained by another user-level process. [2] Why is it relevant to net-snmp? The original ucd-snmp agent needed a mechanism to query statistics from GateD. GateD has traditionally supported this functionality via SMUX. Hence SMUX was implemented within the ucd-snmp framework to extract routing protocol statistics from GateD. net-snmp continues to support smux, and many applications still use it. [3] What is GateD? GateD is the 'Gateway Daemon' which implements a variety of routing protocols on a variety of platforms (OSes). This was formerly available as open source, but has since been made closed and entirely un-free. Other routing protocol daemons such a quagga (http://www.quagga.net) support SMUX. [4] Can SMUX extract statistics from other user-level processes? Yes, the current implementation allows for the registration of any MIB that might be registered by a SMUX peer. [5] How does it work? Assuming 'snmpd' is already up and running, when the SMUX peer comes up, it identifies itself with an oid identifier and string password, and registers any MIBs it would like to implement. When 'snmpd' receives queries for these MIBs, it passes these queries to the peer. [6] Who implemented SMUX for ucd-snmp? SMUX was implemented by Rohit Dube. He had oodles of help from ucd-snmp-coders (Dave, Niels, Wes, Simon, Felix, Leonti) and gated-people (Acee, Feiyi, Larry, Sue). [If I missed somebody, sorry in advance and do let me know]. Later, Nick Amato re-write the entire SMUX package so the code today is mostly his. [7] How do I find out more about SMUX? Read the RFC and the code, mainly, but only for legacy code. *New* sub-agent development should use the AgentX protocol instead, which is not only standardized (RFC 2741 + 2742), but is outright superior to smux in a number of important ways (handles SET requests reliably, able to handle overlapping registrations, aware of SNMPv3 contexts, etc.) Only build new smux support if you have to.