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)

Leave a Reply

Your email address will not be published. Required fields are marked *