By Lex Li
This article describes history of #SNMP.
Microsoft introduced .NET Framework to developers in 2000. However, it lacks of
official SNMP protocol support. Many third parties provide their solutions
ever after to please their users.
Lex Li did an evaluation report in 2008 for his project at Cisco . He was
quite satisfied with some of the commercial solutions, but felt that there
should be a need to have an open source implementation. Based on the code base
from Malcolm Crowe , Lex was able to start a new open source project called
#SNMP Library in April 2008.
It was challenging a task to design an easy-to-use SNMP API, and also difficult
a mission to study the SNMP protocol details. Remember the facts that Lex just
graduated in 2007, and only had one year experience on programming serious
projects. But luckily all initial problems (such as message parsing) were
solved via endless experiments, and even features such as MIB parsing was
developed in an ugly way . By using TDD approach, every major features are
Near the final release of 1.0, two more products were added (the MIB browser
and MIB compiler), so the project was renamed to #SNMP Suite.
The 1.0 release (code name UnicornHorn) was finally released in July 2008
, four months after the project launch. It features basic SNMP v1 and v2c
Steve Santacroce joined the project development in August 2008 , soon Lex
decided to leave from Cisco. Lex moved to Microsoft in October 2008. The
efforts required to drive #SNMP forward were so overwhelming that Lex had to
drop another open source project .
The next major release of #SNMP Suite was 1.5 (code name TwinTower) in January
2009 . It provides a refined API set, and many bug fixes over the initial
release. Three months later, the 2.0 release (code name CrossRoad) was released
in April 2009 , which finished all tasks except SNMP v3 support.
SNMP v3 is a monster to conquer, because it introduces fundamental changes to
the message format (and different agent side behaviors when we attempted to
implement an agent prototype). Thus, many API elements have to be completely
rewritten. But things became easier as another open source SNMP implementation
named SNMP#NET was published by Milan Sinadinovic . By reusing the
encryption code, #SNMP Library soon started to support SNMP v3 packets. The 3.0
release (code name Trident) was released in August 2009 with initial SNMP v3
The next major task was to implement an SNMP agent that can process incoming
requests. Fortunately Lex was working on ASP.NET/IIS at Microsoft at that time,
so he reused many ideas he learned from ASP.NET request pipeline and designed
a similar pipeline for SNMP messages . The 4.0 release (code name
SquareRoot) shipped the initial result in March 2010 with SNMP v1 and v2c
message support . SNMP v3 message support only arrived in 5.0 release
(code name CatPaw) in May 2010. Mono support was also included for the
first time as Lex revised DockPanel Suite .
The 6.0 release (code name HoneyCell) in November 2010 was the first major
release that ships no big change . #SNMP Suite had become mature then.
The 7.0 release (code name BigDipper) was released in October 2011 was
mainly a bug fix release.
The 8.0 release (code name TritonMate) was released in April 2013 . It
featured a new compiler based on ANTLR , which was under BSD 3 Clause.
This indicated a move to more permissive licenses. The SNMP pipeline code was
changed to MIT/X11 in the same release . After the final release, the
code base had been updated to support Xamarin’s mobile platforms.
A serious bug in SNMP v3 was found and fixed so that affected releases
were updated with patches.
A significant license change was announced too, which released the Library code
under MIT/X11 , which means all source code then was released under
Following the license change, #SNMP Pro was announced, which forms a group of
commercial products from LeXtudio . Many issues once reported to the open
source MIB compiler were finally fixed in the Pro edition by the new compiler
The open source project was renamed back to #SNMP Library. Its latest release
8.5 was published in February 2015 . This release featured full support
for Windows, OS X, Linux, and Xamarin platforms.
The 9.x release in 2016 is code named LordGate . This release was aiming
to complete async/await support and .NET Core support. The release cycle became
The 10.x release finally embraced .NET Standard support. It also completed AES
support (adding AES 192/256). To support platforms where native AES is missing,
SharpSnmpLib.BouncyCastle package is added.