TraMoS – Traffic Management over SNMP

General Info

This software allows to query, display and administrate Linux traffic shaping rules over SNMP. TraMoS was a project I did at university, and I used it for a while at home.

The server-side is based on SNMP (d’oh), tc and htb. More infos on the underlying Linux software can be found at the Linux Advanced Routing howto. I wrote the server side, which consists of a SNMP daemon interfacing with NET-SNMP, in C.

The client is a Java Swing client that allows to graphically administrate hierarchical rulesets. It has been written by a collegue of mine.

Download TraMoS

Unfortunately, I’ve lost the final version of the documentation, but here’s the final, working software:

Required SNMP Server

The project requires Net-SNMP as a base daemon.
Net-SNMP includes everything required (libraries and the like). The server side part of TraMos is an extension to Net-SNMP.

MIB Module Informations

Our own OID prefix is: 1.3.6.1.4.1.19399.8.42

As the hierarchical structure of the HTB traffic shaping classes could not be directly modeled in a MIB tree, all classes are mapped to flat tables in the tree.

Download MIBs

Here’s the MIB tree:
+--traMIB(1)
   |
   +--traIfTable(1)
   |  |
   |  +--traIfEntry(1)
   |     |  Index: traIfID
   |     |
   |     +-- -R-- INTEGER   traIfID(1)
   |     |        Range: 1..2147483647
   |     +-- -R-- String    traIfName(2)
   |     |        Size: 0..255
   |     +-- -R-- String    traIfComment(3)
   |     |        Size: 0..1024
   |     +-- -R-- INTEGER   traIfTraffic(4)
   |              Range: 0..2147483647
   |
   +--traClassTable(2)
   |  |
   |  +--traClassEntry(1)
   |     |  Index: traClassIfID, traClassID
   |     |
   |     +-- -R-- INTEGER   traClassIfID(1)
   |     |        Range: 1..2147483647
   |     +-- -R-- INTEGER   traClassID(2)
   |     |        Range: 1..2147483647
   |     +-- -R-- INTEGER   traClassParent(3)
   |     |        Range: -1..2147483647
   |     +-- -R-- String    traClassComment(4)
   |     |        Size: 0..1024
   |     +-- -R-- INTEGER   traClassRate(5)
   |     |        Range: 1..2147483647
   |     +-- -R-- INTEGER   traClassCeil(6)
   |     |        Range: 1..2147483647
   |     +-- -R-- INTEGER   traClassBurst(7)
   |     |        Range: 1..2147483647
   |     +-- -R-- INTEGER   traClassPriority(8)
   |     |        Range: 1..2147483647
   |     +-- -R-- INTEGER   traClassQuantum(9)
   |              Range: 1..2147483647
   |
   +--traRuleTable(3)
   |  |
   |  +--traRuleEntry(1)
   |     |  Index: traRuleIfID, traRuleClassID, traRuleID
   |     |
   |     +-- -R-- INTEGER   traRuleIfID(1)
   |     |        Range: 1..2147483647
   |     +-- -R-- INTEGER   traRuleClassID(2)
   |     |        Range: 1..2147483647
   |     +-- -R-- INTEGER   traRuleID(3)
   |     |        Range: 1..2147483647
   |     +-- -R-- String    traRuleProtocol(4)
   |     |        Size: 0..15
   |     +-- -R-- String    traRuleDest(5)
   |     |        Size: 0..19
   |     +-- -R-- INTEGER   traRuleDestPort(6)
   |     |        Range: 0..65536
   |     +-- -R-- String    traRuleSource(7)
   |     |        Size: 0..19
   |     +-- -R-- INTEGER   traRuleSourcePort(8)
   |     |        Range: 0..65536
   |     +-- -R-- String    traRuleTos(9)
   |     |        Size: 0..15
   |     +-- -R-- String    traRuleLength(10)
   |              Size: 0..15
   |
   +--traStatTable(4)
   |  |
   |  +--traStatEntry(1)
   |     |  Index: traStatIfID, traStatID
   |     |
   |     +-- -R-- INTEGER   traStatIfID(1)
   |     |        Range: 1..2147483647
   |     +-- -R-- INTEGER   traStatID(2)
   |     |        Range: 1..2147483647
   |     +-- -R-- String    traStatProtocol(3)
   |     |        Size: 0..15
   |     +-- -R-- INTEGER   traStatPort(4)
   |     |        Range: 1..65536
   |     +-- -R-- INTEGER   traStatTraffic(5)
   |              Range: 1..2147483647
   |
   +--traMIBConformance(6)
      |
      +--traMIBCompliances(1)
      |  |
      |  +--traMIBCompliance(1)
      |
      +--traMIBGroups(2)
         |
         +--traGroup(1)

Petrinet Editor/Simulator

I’ve wrote a program with a friend that allows to edit and simulate limited petrinets, including a format for defining petrinets in XML. It was written as an exercise for the lecture “Beschränkte Petrinetze 1” of Prof. Gerber at the University of Leipzig.

Last build is from 2003-02-19. You need Java 2 Version 1.4 to run this program. Get it at http://java.sun.com

Webstart

Download

Examples and Documentation

Written by Michael Große & Arne Brutschy, © 2003