Network Management

Summer 2017, Corboy 205, TTh 5:30-8:45 pm

Class 2: July 7

Here are some references to IntroNetworks:
Ethernet switching:
Spanning Tree:
Overview of distance-vector route-discovery (especially

Could we implement DV on an Ethernet? Why not?

Demo of mininet3 and lxde

See also ../mininet


Running Mininet
    switchline -N 3

Discussion of SDN and openflow:

Brief intro to SNMP

Read, sections 21.1-21.7

SNMP, for Simple Network Monitor Protocol, is a way to get information from each node on your network. Each device must run an SNMP "agent" module; for example, workstations must run an SNMP software package in order to respond. SNMP can be used readonly to poll the agents and retrieve data, or in readwrite mode to update and configure the devices via their agents.

SNMP started as SGNP: Simple Gateway Monitoring Protocol, in 1987 ("gateway" is an old term for "router"). It conflicted with the OSI approach known as CMIP (Common Management Information Protocol). At the time CMIP was too large and complex for practical implementation.

In 1988 the Internet Activities Board decided to pursue both SGMP and CMOT: CMIP over TCP/IP. This failed within a year: CMOT was dropped and SGMP had evolved into SNMPv1.

Perhaps the first issue for SNMP is how are we going to NAME all the possible attributes? Remember that many devices will have manufacturer-specific attributes

One important manufacturer-specific attribute is the Device Temperature.

SNMP defines an enormous tree-structured naming hierarchy, using strings of digits known as Object IDentifiers, or OIDs. A diagram appears in Mauro & Schmidt, page 24. Here are some upper levels:

1    iso
3    standard
6    dod
1    internet
2    mgmt        4: private
1    mib-2

Thus, the prefix is would be the OID prefix for the mib-2 data; mib-2 was an early standardization of the SNMP data that would "usually" be available. The prefix is for "private", or manufacturer-specific, data.

Here are some of the next mib-2 levels; we will use "mib2" to represent ""; thus mib2.5 denotes ""
    mib2.1    system
    mib2.2    interfaces
    mib2.3    arp
    mib2.4    ip
    mib2.5    icmp
    mib2.6    tcp
    mib2.7    udp
    mib2.8    egp (obsolete)
    mib2.9    unimplemented [?]
    mib2.10    unimplemented [?]
    mib2.11    snmp server
    mib2.25    host resources
There are more.
atomic values only! Note use of GET-NEXT
The "base" MIB is MIB-2

    data presentation (eg byte order, but much more)
    NAMING for all those possible attributes!
ASN.1/BER data representation: defer

data can be subdivided into fields, though it is not for SNMP.

A MIB is an assignment to each of a set of OIDs a specific attribute name and type. (MIBs also define tabular data forms.) The OIDs name the general attributes, not a specific instance. In that sense, OIDs are like Java class definitions, not class instances.

The first case corresponds to our seeing in the output of the system snmp walk; we did not, however, know how to interpret the responses.

The second case is probably more common: you have a new switch, and need to find out what kinds of SNMP data it submits in the private ( subtree.

If we run a MIB browser such as iReasoning, we can see the OIDs. Sometimes googling for the OID will turn something up. Sometimes searching the mib files for, say, the string "system 9" to figure out the OIDs of form system.9, will find what we want.

Demos using iReasoning tool and snmpwalk

We will use host ulam3 ( and/or my laptop for these demos

(/etc/default/snmpd by default binds snmpd only to localhost!)

    snmpwalk -v 2c -c public ulam3 .

    snmpwalk -v 2c -c public ulam3
    End of MIB

    snmpwalk -v 2c -c tengwar ulam3
    gads of data

    snmpwalk -v 1 -c tengwar ulam3
    gads of data

As of 2016, the ulam3 SNMP community strings are "public", "futhark" and "tengwar".

You can put . into the upper-right box of the iReason tool [at least for ulam3]
Other ways of polling devices:

    ssh: limitations: lack of "universal" account
              lack of "limited" account
              doesn't work for most hubs/switches/non-hosts