[Home/Nieuws]  [Magazines]  [Meetings]  [Downloads]  [Redaktie]  [Geschiedenis]


Netwerkmanagement met SNMP

Het is nog niet zo heel lang geleden dat een computer werd gezien als een grote, informatie verwerkende kast. De computer was eigenlijk het centrum van alle informatie. Door de snelle technologische vooruitgang begong men steeds meer eisen te stellen aan de betrouwbaarheid en de beschikbaarheid van informatie. Al snel bleek de computer uitermate geschikt om informatie te transporteren en in een of andere vorm beschikbaar te stellen. Er werd op grote schaal geexperimenteerd met computer netwerken. Het Amerikaanse Department of Defence kwam met TCP/IP, de set protocols die nu ongeveer als standaard wordt gezien op het gebied van computer netwerken. Het grote success van TCP/IP is voornamelijk te danken aan de eenvoudige implementatie en het grote probleem oplossende vermogen. Packets vinden zelf een nieuwe weg zodra er een route uitvalt en routers houden elkaar continu op de hoogte van de beste routes naar een bepaalde bestemming. Maar toch zijn er problemen die niet zomaar opgelost kunnen worden. Zo kunnen er configuratie fouten optreden, lijnen die te zwaar belast worden of routers die uitvallen. Dit soort problemen moeten zo snel mogelijk opgelost worden, want het is niet langer de computer meer die centraal staat, maar het netwerk. Zonder netwerk kunnen de meeste computers helemaal niets meer. Om die reden werd het SNMP protocol bedacht.

In een netwerk dat met behulp van SNMP beheerd wordt, zie je vaak de volgende situatie: Ergens in het netwerk staat het network management system. Dit is een stuk software dat met behulp van SNMP de topologie en de status van het netwerk weergeeft en de beheerders waarschuwt zodra er iets dreigt mis te gaan. Dit systeem heet in network management termen de SNMP manager. Elk belangrijk element in het netwerk zoals printers, routers en file servers zijn voorzien van een stuk software die op verzoek van een SNMP manager, informatie over zichzelf verstrekken. Sommige dingen kunnen zelfs door de SNMP manager geconfigureerd worden. In uitzonderlijke gevallen kunnen netwerkelementen ook zelfstandig contact opnemen met een SNMP manager. De software die nodig is aan de kant van de netwerkelementen wordt de SNMP agent genoemd.

Het uitwisselen van informatie is uiteraard alleen zinvol als beidde partijen weten wat ze sturen en hoe ze dat moeten doen. Binnen SNMP zijn daarom een aantal afspraken gemaakt. Zo zijn de gegevens die met SNMP uitgewisseld worden hierargisch ingedeeld. Bovenaan staan ondermeer de volgende groepen:

system     : Geeft basis informatie over het systeem, zoals een
             beschrijving,hoe lang het systeem up is en de beheerder van                het systeem.
interfaces : Geeft informatie op het nivo van de netwerk interfaces, zoals
             het aantal ontvangen packets per interface en het aantal
             fouten.
ip         : Geeft informatie op IP nivo zoals routing informatie en
             netmasks.
icmp       : Geeft informatie over het aantal ontvangen en verzonden ICMP
             packets per soort.

Onder de groep interfaces vindt je dan weer ifNumber die het aantal interfaces weergeeft en ifTable die informatie over deze interfaces bevat. Op deze manier is een complete boom van variabelen samengesteld. Een variabele uit deze boom wordt in network management termen een object genoemd. Zo'n SNMP object beschrijft altijd de functionaliteit of de status van een bepaalde deel van de agent.

Laten we nu eens nader kijken naar de groepen System en Interfaces. Je kunt er zeker van zijn dat een object uit de System groep binnen een agent maar 1 keer voor komt. Maar is dat ook het geval bij een Interface object? Een router heeft altijd meer dan 1 netwerk interface. De meeste objecten uit de Interface groep zullen dus voor elke interface die de router heeft een keer voor moeten komen. Heeft een router 6 netwerk interfaces, dan zullen er dus 6 beschrijvingen, 6 packet counters, 6 error counters, enz. moeten zijn.
Daar is het volgende op bedacht:
Door het toevoegen van een nummer onderaan de boom worden instancies van een object aangegeven. Is het object uniek, dan is dat nummer een 0.

Om het een en ander te verduidelijken volgen hieronder een aantal voorbeelden van objecten:

- "system.sysName.0" geeft de naam van het netwerk element aan.
- "interfaces.ifNumber.0" geeft het aantal communicatie interfaces aan.
- "interfaces.ifTable.ifEntry.ifDescr.4" geeft een beschrijving van
   interface nummer 4 aan.
- "ip.ipDefaultTTL.0" geeft de default waarde van het Time To Live veld in
   de IP header aan.

De boom van objecten, samen met informatie over de aard van het object (read only, read write) wordt de Management Information Base genoemd, of kortweg de MIB. De standaard MIB die gedefinieerd is bij SNMP bevat generieke objecten die bijna voor elk netwerkelement bruikbaar zijn. Wil een bedrijf hier objecten aan toe voegen om speciale functies van een nieuw apparaat te beheren, dan kunnen ze een nieuwe zijtak in de boom aanvragen en hiervoor een MIB definieren.

Laten we nu eens kijken naar de codering. Er treden allerlei problemen op zodra verchillende typen computers via een netwerk willen communiceren. Zo slaat de ene computer de meest significante bit vooraan op en de andere achteraan. Ook over de lengte van een integer is niet iedereen het eens. Hoewel tegenwoordig vaak 32 bits gebruikt worden, bestaan er ook nog systemen die 16 bits gebruiken en de verwachting is dat men binnenkort zal overgaan naar 64 bits. Een oplossing voor deze problemen is de Abstract Syntax Notation(ASN 1), samen met zijn Basic Encoding Rules (BER). Deze standaard is beschreven door CCITT (X.208) en ISO (ISO 8824). Een uitvoerige beschrijving over ASN 1 en BER voert hier te ver, maar het komt er op neer dat ASN 1 een taak is om informatie te structureren en BER een beschrijving van hoe deze informatie omgezet kan worden in een stroom bytes. ASN 1 wordt standaard gebruikt om een MIB in te beschrijven. BER wordt gebruikt als protocol tussen managers en agents.

Ook over beveiliging is nagedacht, hoewel de implementatie ervan niet erg goed is. Bij het configureren van een SNMP agent, is het mogelijk om communities te maken. Dit kun je zien als groepen SNMP objecten met read en/of read write rechten. Bij het standaard uitlezen van SNMP objecten wordt meestal gebruik gemaakt van de "public" community. In deze community zitten alle SNMP objecten en er is alleen read recht. Met write rechten wordt over het algemeen wat voorzichter omgesprongen. Bij default heet de community met schrijfrechten "private", maar het kan heel goed zijn dat de beheerders deze naam snel hebben veranderd. Community namen zijn dus eigenlijk gewoon strings. Bij het sturen van een request naar een SNMP agent wordt altijd zo'n community string meegegeven. In de nieuwe versie van het SNMP protocol is beveiling beter opgelost.

Zoals ook uit het voorgaande stukje blijkt zijn er een aantal problemen ontstaan met het SNMP protocol. Niet alleen de beveiling is problematisch, maar er ontstaan ook problemen als een manager probeert een groot netwerk te beheren. Door de regelmatige polls die de manager uitvoert zou een heel netwerk verstopt kunnen raken, en dat is nou juist het laatste waar een network management system voor bedoeld is. Daarom is er ook een nieuwe versie van SNMP bedacht. Het voert te ver om hier een complete beschrijving van SNMP V2 te geven. De basis zoals hierboven beschreven is, is nog het zelfde gebleven. Er zijn wel een aantal dingen veranderd:

- De beveiling is verbeterd.
- Manger to Manger communicatie.
- De mogelijkheid om realtime eigen rijen binnen een MIN aan te maken.

Na het lezen van bovenstaande griezelverhalen over ISO protocollen en Basic Encoding Rules zijn de mensen die SNMP programma's willen schrijven vast op 1 hand te tellen. Een minimaal network management system moet namelijk de beschikking hebben over een ASN 1 parser, een BER encoder/decoder en een systeem om SNMP packets te versturen en te ontvangen. Gelukking zijn er mensen die deze ontberingen al voor ons doorstaan hebben. Er zijn tegenwoordig een aantal libraries te krijgen via het internet. De meest bekende is de CMU-SNMP library. Hiervoor zijn gratis ports te krijgen voor de meeste platforms. Voor linux is cmu-snmp linux-3.2 verkrijgbaar. Deze library neemt de belangrijkste taken op zich, zoals het inlezen van de MIB, het versturen van SNMP packets, hertransmissie als er fouten zijn opgetreden, enzovoorts. Op het internet is een handleiding voor de linux port verkrijgbaar op http://www.cis.ufl.edu/~dadavis/cmu-snmp.html.

De informatie in 't Klaphek dient slechts een educatief doel. Gebruik van deze informatie zou strafbaar kunnen zijn. De redaktie wijst iedere verantwoordelijkheid voor gebruik door lezers van de in 't Klaphek opgenomen informatie af. De mening van een auteur weerspiegelt niet noodzakelijkerwijs de mening van de redaktie of uitgever.