SNMP MIB design - snmp

I'm faced with the need to write a new MIB description. Does anyone know of a good tutorial or reference? I seem to find lots of stuff about using SNMP and Net-SNMP has decent stuff about implementing an agent, but it seems like the only real sources on writing the MIBs are RFCs.

Mg Soft company is selling a very good tool called "Mib Browser" but they also edit a product called "Visual MIB Builder", which provide an easy way to build MIBs without dealling with ASN1 syntax.
Mibs are built on ASN1 syntax, you definitively not need to understand all ASN1 language. I wrote a few PPT slides to explain that, but they are in french.
Edited (1)
I built MIBs twelve years ago, and I learnt by myself with a couple of books (Practical Guide to Snmpv3 and Network Management, Essential SNMP).
On the semantic point of view the first three advices that come in my mind are :
Learn how tables are built and how they works (get-next usage and index)
Have a look to Textual Conventions, they mostly appears in SNMPv2 giving names to implicit usages in SNMPv1. For example you'll read how TestAndIncr provides the mutex semantic. They are improved in SNMPv3. But understand that you have to provide the code for doing that in your agent, they are just TCs.
I learnt a lot in understanding how RMON1 MIB was working, and especialy the usage of configuration tables.
Just an advice, SNMP is a nice protocol, it's a bit old, and except with SNMPV3 it still lives in a boudhist world. I just mean that V1 and V2 are just ignoring the security point of view. So be careful with writable leafs, you can deploy an active agent protecting SNMP ports with IPSec but it's 'expensive'.
Do you have a look to Web-Based Enterprise Management (WBEM) ? On Windows I play with WMI which is Microsoft adaptation of this standard, but on Linux you can play with OpenPegasus.

Related

Are filter drivers intended to extend system drivers?

Are filter drivers intended to extend system drivers?
Is this their main purpose?
Are they basically just an extra layer that sits between the driver and the user?
This seems overly simple an explanation and I am wondering if I am missing something.
Are there good ways to learn more?
The driver topic is a very advanced one.
To get an overview, you can have a closer look on the Windows Driver Kit (WDK) sides.
If you decide to get into this stuff, then you need a lot of time, frustration resistance and fanaticism.
The first thing you should do (befor you touch the WDK!) is, to start reading a good book.
If you want to develop for windows file system, read Rajeev Nagar's book "Windows NT File System Internals : A Developer's Guide". It's published in 1997, but it's something like the "bible" of NTFS.
For common driver developement you can find books like "Developing Drivers with the Windows Driver Foundation", written by Penny Orwick.
These books describes programming kernel mode software, which is done in C language. So, you should have a good base knowlege on C before you start.
Among others there are the OSR side (www.osr.com) and SysInternals on technet (http://technet.microsoft.com/de-DE/sysinternals), which are truely worth to have a closer look on.
More than the halfe time you spend on reading debug outputs and crash dumps, so it's wise to know what these things are meaning and how to get this information, but there are good books for windows debugging too.
I hope, I was able to give a short overview on the question for the ways to learn more.
In a way yes.
For example, if file system filter driver is for file encryption/compression/security, it is enhancing the file system functionality.
The filter driver does not handle talking to actual devices. They rely on lower level drivers to communicate with device. The filter drivers are add-on to the drivers to implement certain functionality. The active drivers which modify data/request are to enhance vanilla drivers while the passive filter drivers are just pass-throughs without any direct enhancements.
So I think your assumptions are correct.
Will like to hear different views though.

Library/API for development of SNMP manager

I'm new to SNMP. I have to develop a manager. I've been searching on how to program for a manager. I've come across WinSNMP, SNMP++ and Net-SNMP. The plus point for Net-SNMP is that it can translate the trap content from the MIB (it can parse the MIB). But would Net-SNMP be a good choice of library for developing a manager? I was wondering if it would be a good idea to use snmptrapd as a basis to develop a manager. At the moment I'm focusing on receiving traps but eventually I'll have to program for the others too (Get, Set, ...).
What is the general outline on how to program for a manager? I have been reading on SNMP for weeks but still haven't got a clear understanding of how to go about doing it.
Any help would be much appreciated. Thanks.
Which toolkit you want will greatly depend on your final-end-goals and preferred language (eg, C vs C++). Make sure you get one with SNMPv3 support, which the native windows library doesn't have (but mg-soft and snmp research's implementation does). You'll likely have to pay money, eventually, if you want SNMPv3 support on windows using the winsnmp APIs.
Net-SNMP and SNMP++ are both well respected open libraries. Net-SNMP has pretty much cornered the market in terms of deployment and comes pre-installed or easily available on every OS except windows (where it also works fine, but MS just doesn't package it for you).
If you want to receive traps, Net-SNMP's snmptrapd is certainly an easy place to start and offers some very simply ways to get started through extensible commands (see the snmptrapd.conf man page to help you get started) or via C (see the apps/snmptrapd*.c files for some example C-registrations).
To get started with Net-SNMP and programming outgoing management operations, you should start with the tutorials about writing management applications. If your management application is ever going to talk to multiple hosts at once, make sure you get a toolkit that does asynchronous support (see the second item in the above link).
There is also JDMK 5.1 API from Sun microsyatem, it is very easy to develop the SNMP Agent as well Manager.

Resources containing cross-language benchmarks?

What resources are available that use benchmarks for comparing programming languages?
I am interested in both
How quickly a program in a given language can execute a given benchmark?
How many lines of code are required in a given language to implement a given benchmark?
There is a long-standing web site called the Computer Language Benchmarks Game, originally created by Doug Bagley as the "Great Computer Language Shootout". (You can view a little history at Portland Patterns Repository.)
Is anyone aware of other resources that enable programmers to compare performance and size of programs written in different languages?
Alternatives
After a quick google search, I found a couple other sites where benchmarks for various languages have been done. Some other sites mention the programming language shootout site that is currently down.
There is a CPAN module for Perl that uses the same code found on that site.
Google has a directory where pages on this topic can be found. I have not found any yet that are as comprehensive as the page you speak of, but there are certainly other resources out there for comparisons.
Archived / Cached Page
If you're only seeking some information there, you can view archived pages of the site using the Wayback Machine or Google's cached version. Try searching Google with "site: shootout.alioth.debian.org" and click on the "Cached" links for the pages you find.
Find the Author?
Perhaps the best option is to try to contact the owner of the old site and find out what happened. The author mentioned in the BSD licence on this page is "Brent Fulgham". He may or may not be the one to contact.
Wait until Alioth is Fixed
As #ioguy found out, Debian's Alioth server that hosts the site in question is currently under maintenance. I would suggest subscribing to the debian-devel-announce mailing list for updates, and an idea of when it may be fully functional again.
If you find problems in the future, you can probably post to the debian-user list.
Each year there are two or three
isolated blog posts that claim to
compare performance and size of one
or two programs written in different
languages.
As a resource the blog posts fail for obvious
reasons, most obviously:
not updated with newer versions of the language implementation
not updated with better programs
Every couple of years someone
dissatisfied with something about
the benchmarks game (often some
detail about the code repository or
website technology) starts a project that will
fix everything they dislike about the benchmarks game.
As a resource the most obvious problem with those
projects is that they never seem to get
close to publishing performance
data.
Every year some group of programmers
campaigns to have language X
included in the benchmarks game,
while some other group demands that
some program is included (or
excluded).
Sadly, they rarely accept that among
the resources provided by the
benchmarks game are
scripts they can use to make and publish language performance
measurements
examples of which basic information (language version, build
commands, run commands, measurement
techniques, ...) is required to provide context for the measurements.
They rarely accept that they are
empowered to create what they wish
to see.
The benchmarks game website is now back to normal!
From Friday 20 May 2011 through Monday 23 May 2011, ALL alioth.debian.org subdomains were down - because the alioth admins were upgrading "in every way we can find: kernel, Debian release, FusionForge software, hardware, and so on."
In addition, making the benchmarks game website work again required:
installation of the GD library on the new server, for chart generation
basic information about changes to ssh use on the new servers
basic information about the project cvs repository on the new servers
basic information about the project /htdocs location on the new servers
replacement of the long deprecated
$HTTP_GET_VARS by $_GET in a couple
of dozen PHP scripts
Since the performance benchmark site
for Programming Languages (aka
Programming Language "Shootout" &
shootout.alioth.debian.org) is
permanently down ...
The original question was predicated on a false premise.

Resources to build SNMP support for my device?

Can any one recommend resources for adding SNMP support for my device? my understanding the steps I need to do are as follow:
Create a MIB file that define what values your MIB will support
Use code generator to convert it to C module
Use generated code to fetch real values
Convert the module to an agentx sub agent, so you can integrate your MIB a separate process that could work with any snmp agent that support agentx protocol.
Are my assumption correct, any suggestions or corrections, I am specially looking for resources that help me, books, courses, online, etc...
Thanks
Your questions would be answered differently depending on which toolkit you go with. However, if you run with the common Net-SNMP one (free as in beer) then you should probably start with the tutorials on that site that walks you through much of what you're asking.
http://www.net-snmp.org/wiki/index.php/Tutorials
However, it doesn't discuss how to write a MIB. For that the best book on the subject is "Understanding SNMP MIBs".

What problems will Microsoft's Oslo project solve?

I watched few videos/webcasts about "Oslo" but I still fail to see how it all comes together.
I understand that Oslo is a modeling platform.
What's the process to create a DSL?
Is it more than just a tool to create DSLs?
I understand that MGramma is used to create a DSL's syntax.
What is M language for?
What is MSchema?
After creating an MGrammar and compiling it to .mgx, what's the next step?
That Wikipedia article is pretty opaque.
The Microsoft project page for Oslo might be a better starting point. It begins:
About "Oslo"
”Oslo” is the codename for Microsoft’s
forthcoming modeling platform.
Modeling is used across a wide range
of domains and allows more people to
participate in application design and
allows developers to write
applications at a much higher level of
abstraction.
IMHO, it does seem more "fully buzzword compliant" than a real product. That said, it looks like there is some kind of demo or technology preview available for download. One might hope that they have included some samples that make it clearer what kinds of problems it is intended to solve.
Think of oslo as an excel/access replacement. Something for end users to model and process their data, without the need of developers.
MGrammer is where things get interesting for us, but the bits that are interesting are more of a v2 thing. You could think of it as excel macros done right.

Resources