SNMP for Common Lisp
Simple Network Management Protocol (SNMP) is widely used for management of Internet-based network today. In Lisp community, there're large Lisp-based applications which may need be monitored, and there're Lispers who may need to monitor other remote systems which are either Lisp-based or not. However, the relationship between Lisp and SNMP haven't been studied enough during past 20 years. The cl-net-snmp project has developed a new Common Lisp package which implemented the SNMP protocol. On client side, it can be used to query remote SNMP peers, and on server side, it brings SNMP capability into Common Lisp based applications, which could be monitored from remote through any SNMP-based management system. It's also a flexible platform for researches on network management and SNMP itself. But the most important, this project tries to prove: Common Lisp is the most fit language to implement SNMP. Different from other exist SNMP projects on Common Lisp, cl-net-snmp is clearly targeted on full SNMP protocol support include SNMPv3 and server-side work (agent). During the development, an general ASN.1 compiler and runtime package and an portable UDP networking package are also implemented, which would be useful for other related projects. In this paper, the author first introduces the SNMP protocol and a quick tutorial of cl-net-snmp on both client and server sides, and then the Lisp native design and the implementation details of the ASN.1 and SNMP package, especially the "code generation"' approach on compiling SNMP MIB definitions from ASN.1 into Common Lisp.
READ FULL TEXT