Edellinen luku

4 SNMP

SNMP (Simple Network Management Protocol) on tämän hetken yleisin verkonhallintaprotokolla. Se on suunniteltu yksinkertaiseksi, helposti toteutettavaksi verkonhallintatyökaluksi TCP/IP-verkkojen hallintaan. Termi SNMP viittaa itse asiassa joukkoon verkonhallintastandardeja, jotka kuvaavat itse protokollan (SNMP, Simple Network Management Protocol), hallintatietokantojen määrittelyn (MIB, Management Information Base) sekä joukon tieto-olioita (SMI, Structure of Management Information).

4.1 Kehitys

TCP/IP:tä kehitettäessä ei juurikaan kiinnitetty huomiota verkonhallintaan. Vielä 1970-luvun lopullakaan ei mitään varsinaista hallintaprotokollaa ollut olemassa. Ainoa työkalu, jota tehokkaasti käytettiin, oli TCP/IP:n ICMP (Internet-Control Message Protocol). ICMP tarjoaa mekanismin lähettää viestejä reittimistä ja tietokoneista muihin laitteisiin, jotka käyttävät TCP/IP:tä. ICMP-viestejä voidaan käyttää eri laitteiden saavutettavuuden ja verkon viiveiden selvittämiseen. Erityisesti ping-ohjelmaa (PING, Packet Internet Groper), joka lähettää ja vastaanottaa ICMP-viestejä, käytettiin ja käytetään edelleen hyvin paljon verkon ongelmien paikallistamiseen.

Vasta 1980-luvun puolivälin jälkeen, Internet-yhteisön kasvaessa lähes eksponentiaalisesti [RFC1296], kuten kuvassa 6 esitetään, ruvettiin kiinnittämään huomiota tehokkaamman verkonhallinnan kehittämiseen. Syntyi useita projekteja, jotka keskittyivät verkonhallintaprotokollan kehittämiseen. Näiden projektien joukosta nousi esiin kolme muita lupaavampaa protokollaa:

1. HEMS (High-level Entity-Management System), joka oli yleistys kenties ensimmäisestä Internet-yhteisössä käytetystä verkonhallintaprotokollasta HMP (Host Management Protocol).
2. SNMP, joka oli parannettu versio SGMP:stä (Simple Gateway Manangement Protocol).
3. CMOT (CMIP over TCP/IP) oli yritys tuoda ISO:n verkonhallintaprotokolla CMIP (Common Management Information Protocol) TCP/IP-verkkojen hallintaan.
Vuoden 1988 alussa IAB (Internet Activities Board) valitsi näistä SNMP:n lyhyen tähtäimen ratkaisuksi ja CMOT:in pitkän tähtäimen ratkaisuksi verkonhallinnan toteuttamiseksi TCP/IP-verkoissa. Silloin ajateltiin OSI-protokollien syrjäyttävän hyvin pian TCP/IP:n, eikä katsottu olevan järkevää suunnata suuria ponnistuksia TCP/IP-pohjaisten ratkaisujen kehittämiseen. SNMP:tä kyettäisiin kehittämään nopeasti ja helposti. Lisäksi se voisi tarjota yksinkertaisia verkonhallintatyökaluja ja kokemusta verkonhallinnan toteuttamiseen.

Kun SNMP:n kehittäjät näin vapautettiin OSI-yhteensopivuuden vaatimuksista, kehitys oli nopeata. Huhtikuussa 1989 voidaan sanoa SNMP:stä tulleen de facto -standardi TCP/IP-pohjaisten verkkojen hallintaan. Useat laitevalmistajat tukivat SNMP:tä, ja, mikä tärkeintä, olivat toteuttaneet sen omissa järjestelmissään. Toukokuussa 1990 SNMP hyväksyttiin Internet-standardiksi. Toisin sanoen itse verkonhallintaprotokolla (SNMP, RFC1157), hallittavan tiedon rakenne ja identifionti (SMI, Structure and Indetification of Management Information of TCP/IP-based Internets, RFC1155) sekä hallittavat tiedot (MIB, Management Information Base for Network Management of TCP/IP-Based Internets, RFC1156) hyväksyttiin täysiksi Internet-standardeiksi. Maaliskuussa 1991 MIB korvattiin uudella standardilla. MIB-II (Management Information Base for Network Management of TCP/IP-Based Internets, RFC1213) oli laajennettu versio edellisestä versiosta, jota ruvettiin kutsumaan nimellä MIB-I.

SNMP:llä on muutama huomattava puute, jotka johtuvat hyvin pitkälti SNMP:n yksnkertaisuudesta. Tärkein näistä on puutteellinen turvallisuus. SNMP:ssä ei ole mitään kunnollista autentikointimekanismia, jolla voitaisiin taata, että pyyntöjä lähettävät laitteet ovat niitä, joille voidaan haluttua informaatiota lähettää. Heinäkuussa 1992 julkaistiin standardiehdotukset SNMP:n turvallisuusominaisuuksien parantamiseksi. Näiden parannusten totetuttaminen olisi vaatinut muutoksia SNMP-protokollan viestien hallintaan, mutta itse viestien lukumäärä ja sisällön rakenne olisi pysynyt muuttumattomana. Tämän tarkoituksena oli taata mahdollisimman kivuton siirtyminen SNMP:stä turvalliseen SNMP:hen (Secure SNMP).

Samaan aikaan kuitenkin ilmestyi toinen ehdotus SNMP:n uudeksi toteutukseksi. SMP (Simple Management Protocol) tarjosi turvallisuusnäkökohtien lisäksi parannuksia protokollan tehokkuuteen, joten se hyväksyttiin seuraavan sukupolven SNMP:n kehittämisen pohjaksi. Kaksi ryhmää muodostettiin kehittämään SNMP:n uutta versiota, jota ruvettiin kutsumaan nimellä SNMPv2. Toinen ryhmä keskittyi kaikkeen muuhun paitsi turvallisuuden määrittelyyn, ja toinen ainoastaan turvallisuusominaisuuksien kehittämiseen. Vuoden 1993 alussa julkaistiin SNMPv2:n standardiehdotus, ja saman vuoden syksyllä se hyväksyttiin standardiluonnokseksi. Vuoden 1994 aikana SNMPv2 hyväksyttäneen täydeksi standardiksi.

4.2 SNMP:n toimintaperiaate

4.2.1 Peruselementit

TCP/IP-verkonhallintamallissa on neljä perusosaa [Stallings]:

Hallinta-asemassa ajetaan yleensä verkonhallintajärjestelmää, jonka avulla voidaan suorittaa tiedon analysointia, vioista toipumista jne. Kyseiseen järjestelmään kuuluu usein myös ohjelmisto varsinaista verkon valvontaa ja hallintaa varten. Yleensä verkonhallintaohjelmistoon on toteutettu myös tietokanta, jossa voidaan säilyttää ja käsitellä hallittavista laitteista saatua tietoa.

Hallinta-agentti on verkon laite (tietokone, silta, reititin tms.), johon on toteutettu SNMP siten, että laitetta voidaan hallita hallinta-asemasta käsin. Hallinta-agentti vastaa hallinta-asemasta tulleisiin kyselyihin ja pyyntöihin mutta voi myös oma-aloitteisesti kertoa hallinta-asemalle verkon merkittävistä tapahtumista.

Hallittavia resursseja kuvataan olioina (object). Tarkkaan ottaen kyse ei ole olioista, vaan jokainen olio on muuttuja, joka kuvaa hallinta-agentin jotain ominaisuutta. Joukkoa tällaisia olioita kutsutaan hallintatietokannaksi (Management Information Base). Nämä oliot on standardoitu siten, että kaikki samantyyppiset laitteet tukevat samaa joukkoa olioita. Hallinta-asema voi kysellä hallinta-agentin tietokannan jonkin olion arvoa tai asettaa sen ja siten toteuttaa verkon valvontaa ja hallintaa.

Hallinta-asemat ja hallinta-agentit liitetään toisiinsa verkonhallinnan yhteyskäytännön avulla. TCP/IP-verkkojen hallintaan tarkoitetulla yksinkertaisella verkonhallintaprotokollalla (SNMP:llä) on seuraavat perusoperaatiot:

4.2.2 Yleiskuva SNMP-protokollan arkkitehtuurista

SNMP on suunniteltu osaksi TCP/IP:n sovellustason protokollaperhettä. Se toimii IP:n UDP-protokollan (User Datagram Protocol) päällä. Verkonhallintatyöasemassa (manager) on prosessi, jonka avulla saadaan yhteys paikalliseen keskustietokantaan (central MIB). Tämä prosessi tarjoaa myös rajapinnan verkonhallintasovelluksille.

Jokaisen hallittavan laitteen, agentin (agent), on toteutettava SNMP, UDP ja IP. Lisäksi jokaisessa agentissa on oltava mekanismi, joka tulkitsee SNMP-viestit ja hallitsee agentin paikallista tietokantaa (MIB).

Hallintatyöasemalta voidaan lähettää kolmenlaisia viestejä. GetRequest ja GetNextRequest ovat viestejä, joilla pyydetään (luetaan) agentilta tietoja. SetRequestilla muutetaan (kirjoitetaan) agentin paikallisen tietokannan sisältöä. Näihin kolmeen viestiin agentti vastaa GetResponse-viestillä, joka välitetään hallintaohjelmistolle. GetResponse-viestin lisäksi agentti voi lähettää Trap-viestejä, joilla se voi ilmoittaa hallintatyöasemille tapahtumista, jotka vaikuttavat hallittaviin resursseihin. Kuvassa 7 on esitetty SNMP-protokollan yleinen rakenne. Itse yhteyskäytäntöön palataan myöhemmin SNMP-protokollan tarkemmassa kuvauksessa.

Koska SNMP perustuu UDP:hen, joka on yhteydetön protokolla, myös SNMP on yhteydetön. Toisin sanoen hallintatyöaseman ja agenttien välillä ei ylläpidetä yhteyksiä, vaan jokainen viesti on erillinen tapahtuma. Tämä merkitsee myös sitä, että SNMP:n on itse huolehdittava viestien uudelleenlähetyksistä vastausten perusteella. Toisaalta agenttien lähettämiin Trap-viesteihin ei hallintatyöasema vastaa, joten ne voivat hävitä matkalla, eikä agentti voi tietää, onko sen viesti mennyt perille.

Mikäli hallintatyöaseman vastuulla on suuri joukko hallinta-agentteja ja jokaisella agentilla on suuri paikallinen tietokanta, ei ole käytännöllistä säännöllisesti kysellä agenteilta koko tietokantaa. Suositeltava toimintaperiaate on sovelluksen käynnistyessä ja mahdollisesti kerran vuorokaudessa kysyä agenteilta joitakin oleellisia tietoja. Tällaisia tietoja voivat esimerkiksi olla verkkoliityntöjen tila, ja jotkut tehokkuuteen liittyvät tilastotiedot, kuten lähetettyjen ja vastaanotettujen pakettien lukumäärä. Tämän jälkeen agenttien vastuulla on ilmoittaa epätavallisista tapahtumista, kuten agentin uudelleenkäynnistämisestä, tai liikenteen määrän ennalta määrätyn raja-arvon ylittymisestä. Näin voidaan huomattavasti vähentää verkonhallinnan aiheuttamaa ylimääräistä verkkokuomaa.

4.2.3 SNMP:n valtuutusagentit

SNMP:n käyttö vaatii, että kaikki agentit tukevat UDP:tä ja IP:tä. Tämä rajaa suoran hallinnan ulottumattomiin sellaiset laitteet, jotka eivät tue mitään osaa TCP/IP-protokollasta. Tällaisia laitteita ovat esimerkiksi modeemit. Lisäksi on lukuisa määrä pieniä järjestelmiä, jotka toteuttavat TCP/IP:tä, mutta joita ei ole järkevää kuormittaa ylimääräisellä SNMP-toiminnallisuudella. Tällaisia laitteita voivat olla esimerkiksi henkilökohtaiset tietokoneet, joissa käytetään TCP/IP-pohjaisia sovelluksia.

Näiden laitteiden hallintatarpeisiin on kehitetty valtuutuskonsepti (proxy). Tässä järjestelyssä SNMP-agentti toimii edustajana joukolle muita laitteita [Rose]. SNMP-manageri lähettää hallittavia laitteita koskevat kyselyt valtuutusagentille, joka muuttaa kyselyt hallittavien laitteiden ymmärtämälle protokollalle ja saadut vastaukset vastaavasti SNMP-viesteiksi takaisin managerille. Myös laitteiden valtuutusagentille välittämät Trap-viestiä vastaavat ilmoitukset lähetetään edelleen SNMP-viesteinä hallintatyöasemalle.

4.3 SNMP:n tärkeimmät osat

Kuten edellä on todettu, SNMP viittaa joukkoon standardeja, jotka kuvaavat SNMP-protokollan, hallintainformaation rakenteen sekä hallittavat oliot. Seuraavassa esitellään lyhyesti, miten hallittavat oliot kuvataan hallintainformaation rakenteen avulla. Tämän jälkeen tarkastellaan SNMP:n tärkeintä hallintatietokantaa, MIB-II:ta, ja kuinka sen olioita voidaan käyttää verkonhallintaan. Näiden jälkeen perehdytään SNMP-protokollaan ja sen toimintaan.

Viimeisenä käsitellään SNMP:n tärkeää laajennusta RMON MIB:iä (Remote monitoring MIB). RMON määrittelee hallintatietokannan verkkojen etähallintaan. Sen yhteydessä tulee esille myös monia käytännön asioita, jotka koskevat erityisesti suorituskyvyn ja käytön hallintaa.

4.3.1 Hallintainformaation rakenne

Jotta hallintatietokanta täyttäisi ne tarpeet, joita verkonhallintajärjestelmät esittävät, sen täytyy täyttää seuraavat ehdot:

Dokumentissa [RFC1155] määritellään yleinen kehys (SMI, Structure of Management Information), jonka rajoissa hallintatietokantoja voidaan määritellä ja muodostaa. SMI määrittelee tietotyypit, joita voidaan käyttää MIB:in olioiden kuvaamiseen, ja kuinka MIB:in sisällä resursseja esitetään ja nimetään.

SMI:n ja MIB:ien kuvaukseen käytetään ASN.1 (Abstract Syntax Notation One) formaattia, joka on CCITT:n (X.208) ja ISO:n (ISO 8824) kehittämä ja standardoima formaali kieli. Yksinkertaisuuden vuoksi ainoastaan rajoitettu osajoukko ASN.1:n elementeistä ja piirteistä on otettu mukaan MIB:ien kuvaukseen.

Olioiden nimeäminen ja hierarkia

Jokainen MIB:in olio nimetään ASN.1:n tyypillä Object Identifier, joka toimii myös olion nimenä. Tämä nimeämiskäytäntö on hierarkkinen, joten sen avulla voidaan myös kuvata oliotyyppien välinen hierarkkinen rakenne. Jokainen olion nimi identifioi tietyn olion yksikäsitteisesti. Nimi koostuu joukosta kokonaislukuja. Määritellyt oliot muodostavat puumaisen rakenteen, jonka solmut ja lehdet muodostuvat nimen komponenteista.

Kuvassa 8 voidaan nähdä MIB-hierarkian perusrakenne. Juuresta aloitettaessa on ensimmäisellä tasolla kolme oksaa: iso, ccitt ja jointisoccitt. Iso-solmun alapuolella on yksi alipuu varattu muiden organisaatioiden käyttöön ja yksi USA:n puolustusministeriön käyttöön (dod, Departement of Defense). Standardissa käytetään säännönmukaisesti lähinnä pieniä kirjaimia olioiden nimeämiseen. Dokumentissa [RFC1155] oletetaan, että yksi dod:n alipuu allokoidaan IAB:n (Internet Activities Board) hallintaan, eli kaikki SNMP:n MIB:it rekisteröidään olion internet alle.

Olio internet voidaan ASN.1:llä määritellä esimerkiksi seuraavasti:

internet OBJECT IDENTIFIER ::= { iso org(3) dod(6) 1 }

Usein kyseinen olio kirjoitetaan lyhyesti 1.3.6.1.

Kuten kuvasta 8 voidaan nähdä, on internet-solmun alle määritelty neljä alipuuta:

1. Directory-alipuu on varattu tulevaisuudessa käytettävälle OSI:n X.500-hakemistopalvelulle.
2. Mgmt-alipuu on varattu IAB:n hyväksymien dokumenttien olioille.
3. Experimental-alipuu on varattu erilaisille kokeiluille Internet-yhteisössä.
4. Private-alipuu ja erityisesti sen enterprises-alipuu on varattu ohjelmisto- ja laitevalmistajien omille MIBeille.

Tietotyypit

SMI:n tarkoituksena on pitää MIB:ien rakenne mahdollisimman yksinkertaisena ja helposti laajennettavana. Tämän takia MIB:hin voidaan tallentaa ainoastaan yksinkertaisia tietotyyppejä: skalaareita ja skalaareista muodostuvia kaksiulotteisia taulukoita.

Olioiden kuvaamiseen voidaan käyttää seuraavia tietotyyppejä:

Näistä neljä ensimmäistä ovat primitiivityyppejä, joita käytetään muiden oliotyyppien rakentamiseen. Kahta viimeistä käytetään taulukoiden muodostamiseen.

RFC1155:ssä määritellään lisäksi joukko tietotyyppejä sovellusten käyttöön:

---------------------------------------------------------------------------
NetworkAddress  Verkko-osoite: sallii osoiteformaatin valinnan eri pro       
                tokollaperheiden välillä. Tällä hetkellä ainoa määritelty    
                osoitetyyppi on IpAddress.                                   
IpAddress       IP-osoite: 32-bittinen osoite IP-protokollan määrit          
                telemässä muodossa.                                          
Counter         Laskuri: ei-negatiivinen kokonaisluku, jonka maksimi         
                on 232-1. Laskuria voidaan kasvattaa, mutta ei               
                pienentää. Kun laskuri saavuttaa maksimiarvonsa, se          
                aloittaa laskemisen uudelleen nollasta.                      
Gauge           Mittari: ei-negatiivinen kokonaisluku, joka voi kasvaa tai   
                pienentyä, maksimi 232-1. Mikäli mittari saavuttaa mak       
                simiarvonsa, se jää siihen arvoon, kunnes se alustetaan      
                uudelleen (reset).                                           
TimeTicks       Ajanmittaus: ei-negatiivinen kokonaisluku, joka laskee       
                aikaa sadasosasekunteina jostain tapahtumasta.               
Opaque          Tukee mahdollisuutta siirtää satunnaista tietoa.             
---------------------------------------------------------------------------
Näistä laskuri on yksi yleisimmin MIB:eissä käytetyistä tyypeistä. Tyypillisesti sovellukset laskevat esimerkiksi lähetettyjä paketteja tai tavuja. Tätä tietotyyppiä käytettäessä on hallinta-aseman pidettävä huolta riittävästä kyselystä, jotta se pysyy selvillä laskurin nollaamisesta ja siten tietää laskurin tarkan arvon. Tosin 32-bittisen laskurin nollautuminen ei tapahdu kovinkaan usein.

Mittaria (gauge) käytetään tyypillisesti jonkin olion hetkellisen arvon mittaamiseen. Arvo voi olla esimerkiksi lähetystä odottavien pakettien lukumäärää jonossa. Mittaria voidaan käyttää myös kuvaamaan jonkin olion muutosta tietyllä aikavälillä. Tällä tavoin sitä voidaan käyttää jonkin olion muutosnopeuden valvontaan.

Olioiden määrittely

Jotta olioita voidaan määritellä, ei riitä, että tiedetään, mitä tietotyyppiä ne edustavat. Olion määrittelemiseksi sille on voitava antaa nimi ja on tiedettävä, mitä olio esittää, mitä arvoja sille voidaan antaa jne. Olioiden määrittelyn yksinkertaistamiseksi ja yhtenäistämiseksi dokumentissa [RFC1155] kuvataan tietotyyppien lisäksi makro, jonka avulla olioiden määrittely tapahtuu. Tätä makroa laajennettiin myöhemmin dokumentissa [RFC1212].

Makron avulla kustakin oliosta määritellään olion nimi (ObjectName), sen tyyppi (Syntax), saatavuus (Access) ja tila (Status). Lisäksi olion määrittelyssä voi olla mukana (mutta ei ole pakollinen) kuvaus (Description) ja viittaus (Reference) johonkin muuhun olioon jossain muussa MIB-kuvauksessa.

Esimerkiksi seuraavanlainen kuvaus on dokumentissa [RFC1213]:

sysContact OBJECT-TYPE

SYNTAX DisplayString (SIZE (0..255))

ACCESS read-write

STATUS mandatory

DESCRIPTION

"The textual identification of the contact person

for this managed node, together with information

on how to contact this person."

::= { system 4 }

Syntax kertoo siis, minkä tyyppisestä oliosta on kysymys. Tässä tapauksessa tyyppi on merkkijono, jonka maksimipituus on 255 merkkiä.

Access kuvaa saatavuutta eli sitä, voidaanko olion arvoa muuttaa SNMP SetRequest-viestin avulla. Mahdolliset arvot ovat read-only, read-write, write-only ja non-accessible.

Status kertoo, onko kyseinen olio pakollinen, kun jotain kyseistä MIB:iä käyttävää sovellusta toteutetaan. Mahdolliset arvot ovat mandatory, optional, obsolete ja deprecated. Mandatory kertoo, että olio on toteutettava ja optional kertoo, että olion toteuttaminen ei ole pakollista. Obsolete ilmaisee, että kyseistä oliota ei enää tarvitse toteuttaa. Deprecated puolestaan kertoo, että kyseinen olio on toteutettava, mutta se tullaan todennäköisesti poistamaan kyseisen MIB:in seuraavassa versiossa.

Description kertoo suorasanaisen selvityksen olion käyttötarkoituksesta.

Viimeisellä rivillä identifioidaan olio. Viittaamalla olion vanhempaan ja antamalla oliolle oma numero voidaan kaikki oliot määritellä yksikäsitteisesti.

4.3.2 MIB-II

MIB-II on toinen versio SNMP:n perushallintatietokannan kuvauksesta, joka määritellään dokumentissa [RFC1213]. Ensimmäinen versio MIB-I on määritelty dokumentissa [RFC1156]. Ensinmainitussa dokumentissa kerrotaan seuraavien kriteerien olleen perusteena olioiden sisällyttämiselle tietokantaan:

Kuten kuvasta 9 voidaan havaita, on mib-2:n alle määritelty kaikkiaan 11 ryhmää, joista tosin vain 9:ää käytetään tällä hetkellä. Ryhmä cmot(9) on mukana numeroinnissa lähinnä historiallisista syistä. Ryhmä transmission(10) otetaan käyttöön, kun standardit siirtotien hallintaan ovat olemassa. Tällä hetkellä on jo olemassa ryhmään 10 kuuluva FDDI-MIB, jossa kuvataan FDDI:n hallintaan tarvittavat oliot.

Seuraavassa käydään pääpiirteissään läpi eri ryhmät ja joitakin tärkeimpiä niiden sisältämistä olioista ja kuinka niitä voidaan käyttää hyväksi verkonhallinnassa.

Järjestelmäryhmä

Järjestelmäryhmän (system) oliot sisältävät yleistä tietoa järjestelmästä.

---------------------------------------------------------------------------
sysDescr     Sanallinen kuvaus järjestelmästä. Sen tulisi yleensä sisältää   
             laitteiston, käyttöjärjestelmän ja verkko-ohjelmiston nimi ja   
             versionumero.                                                   
sysObjectID  Valmistajan identifikaatio järjestelmästä ja sen tyypistä.      
sysUpTime    Kuinka kauan järjestelmä on ollut yhtäjaksoisesti toimin        
             nassa.                                                          
sysContact   Tänne kirjataan yleensä laitteesta vastaavan henkilön           
             yhteystiedot. Tämä helpottaa yhteydenottoa vastuulliseen        
             henkilöön ongelmatapauksissa.                                   
sysLocation  Tänne kirjataan, missä laite sijaitsee.                         
sysServices  Lukuarvo, joka kertoo, millä OSI-viitemallin tasoilla järjes    
             telmä pääasiassa toimii. Lukuarvo on summa, joka saadaan,       
             kun lasketaan yhteen 2L-1 kaikille viitemallin tasoille (L),    
             joilla laite toimii. Esimerkiksi reititin toimii pääasiassa     
             tasolla 3, jolloin saadaan 23-1 = 4.                            
---------------------------------------------------------------------------
Esimerkiksi eräs TKK:n atk-keskuksen moniporttitoistimista kertoo seuraavanlaista informaatiota:

sysDescr[0]="Allied Telesis AT-3606F Extendable Hub"

sysObjectID[0]=1.3.6.1.4.1.207.1.2.1

sysUpTime[0]=308228767

sysContact[0]="Jallu p. 4321"

sysName[0]="kone-hub.hut.fi"

sysLocation[0]="K2 (konepaja)"

sysServices[0]=4

Yhtäläisyysmerkin vasemmalla puolella on olion nimi ja oikealla puolella on laitteen lähettämä vastaus. Jotkut ohjelmat osaavat kertoa hieman enemmän saadusta vastauksesta. Esimerkiksi edellinen sysUpTime on helpompi käsittää, kun se näytetään päivinä ja tunteina:

system.sysUpTime.0 : Timeticks: (309158002) 35 days, 18:46:20.02

Verkkoliityntäryhmä

Verkkoliityntäryhmän (interfaces) oliot sisältävät informaatiota laitteen verkkoliitynnöistä, kuten esimerkiksi niiden lukumäärästä, tyypistä, tilasta, lähetetyistä ja vastaanotetuista paketeista ja tavuista jne.

--------------------------------------------------------------------------
ifNumber         Kuinka monta verkkoliityntää laitteessa on.                
ifDescr          Verkkoliitynnän sanallinen kuvaus.                         
ifType           Verkkoliitynnän tyyppi, joka ilmaistaan kokonaislukuna.    
                 Tyyppejä ovat mm. ethernet-csmacd(6), fddi(15) ja frame-   
                 relay(32).                                                 
ifMtu            Suurin paketti, jonka verkkoliityntä voi lähettää tai vas  
                 taanottaa, ilmaistuna tavuina.                             
ifSpeed          Verkkoliitynnän kaistanleveys bitteinä sekunnissa.         
ifAdminStatus,   Verkkoliitynnän toiminnallinen tila.                       
ifOperStatus                                                                
--------------------------------------------------------------------------
Näiden lisäksi on joukko olioita, joita voidaan käyttää verkonhallintaan. Esimerkiksi voidaan laskea laitteen lähettämien ja vastaanottamien virheellisten pakettien suhteelliset osuudet prosentteina.

Suorituskyvyn seuraamiseksi voidaan ottaa kaksi näytettä hetkillä t0 ja t1 ja laskea näiden perusteella verkkoliitynnän keskimääräinen liikenne tavuina sekunnissa kyseisellä aikavälillä:

Edellisestä saadaan edelleen helposti verkkoliitynnän käyttöaste (utilization):

Olioita ifInOctets ja ifOutOctets voi käyttää myös käytön hallinnassa. Mikäli jotain organisaatiota laskutetaan runkoverkon käytöstä ja sillä on oma aliverkkonsa esimerkiksi reitittimen takana, voidaan laskutus suorittaa reitittimen runkoverkon verkkoliitynnän lähettämien ja vastaanottamien tavujen perusteella.

At-ryhmä

At-ryhmä (address translation) on merkitty MIB-II:ssa statuksella `deprecated' eli se tultaneen poistamaan MIB-III:ssa, kun sellainen jossain vaiheessa standardoidaan. Se on sisällytetty mukaan MIB-II:n yhteensopivuussyistä ainoastaan MIB-I:n tuntevien laitteiden takia. Sen oliot vastaavat ARP-protokollan (Address Resolution Protocol) mukaisia muunnostaulun riippuvuuksia. Toisin sanoen siinä on kirjattu vastaavuudet samassa segmentissä olevan laitteen IP-osoitteen ja verkkoliitynnän sisäisen osoitteen (Ethernet-osoitteen) välillä.

Vastaavat oliot on toteutettu ip-ryhmän aliryhmässä ipNetToMediaTable.

Ip-ryhmä

Ip-ryhmä on MIB-II:n suurin ja monimutkaisin. Se sisältää IP-protokollaan liittyvää informaatiota, kuten edellä mainitun ARP-protokollaa vastaavat muutostaulut, sekä reititystietoja.

--------------------------------------------------------------------------
ipForwarding       Kertoo, toimiiko laite reitittimenä (gateway).           
ipInReceives       Kaikkien vastaanotettujen, myös virheellisten IP-        
                   pakettien lukumäärä.                                     
ipInHdrErrors      Niiden hylättyjen pakettien lukumäärä, joissa on ollut   
                   virheitä IP-paketin otsikkokentissä.                     
ipInAddrErrors     Niiden hylättyjen pakettien lukumäärä, joissa on ollut   
                   virheellinen osoitekenttä.                               
ipForwDatagrams    Niiden pakettien lukumäärä, jotka on lähetetty edel      
                   leen.                                                    
ipInUnknownProtos  Paketit, jotka on hylätty, koska niiden protokollaa ei   
                   tunneta tai tueta.                                       
ipAddrTable        Taulukko, jossa ovat tiedot paikallisten verkkoliityn    
                   töjen osoitteista jne.                                   
ipRouteTable       Taulukko, jossa on laitteen omat reititystiedot.         
ipNetToMediaTable  Taulukko, jossa ovat laitteen ARP-tiedot.                
--------------------------------------------------------------------------
Mikäli laite hylkää paljon paketteja joko laitteen resurssien puutteen vuoksi tai viallisten IP-otsikoiden takia, voivat sovellukset, jotka käyttävät IP:tä tiedon siirtoon, toimia hitaasti. Tällaisten virheiden suhteellisen osuuden voi laskea seuraavasti sekä lähetetyille että vastaanotetuille paketeille erikseen:

ipRouteTablen olioiden ilmentymiä muokkaamalla voidaan hallita kokoonpanoa. Taulukon reititystietoja voidaan muokata esimerkiksi lisäämällä reititystauluun rivejä tai muuttamalla tiettyjen reititystietojen kustannuksia (ipRouteMetric).

Icmp-ryhmä

Icmp-ryhmä sisältää laskurit erilaisille ICMP-protokollan mukaisille lähetetyille ja vastaanotetuille viesteille. ICMP-protokollalla voidaan mitata mm. kahden koneen välisen siirtotien aiheuttamaa viivettä Timestamp-viesteillä.

Tcp-ryhmä

Tcp-ryhmä sisältää yleistä tietoa laitteen TCP-konfiguraatiosta sekä taulukon, jossa on tiedot laitteen senhetkisistä TCP-yhteyksistä.

---------------------------------------------------------------------------
tcpMaxConn      Yhtäaikaisten TCP-yhteyksien maksimilukumäärä. Mikäli        
                maksimi on dynaaminen, eli yhteyksiä voidaan luoda tar       
                vittaessa, arvo on -1.                                       
tcpCurrEstab    Kyselyhetkellä olevien TCP-yhteyksien lukumäärä.             
tcpConnTable    Taulukko, jossa on tiedot senhetkisistä TCP-yhteyksistä.     
                Mm. yhteyden tila, vastapään IP-osoite sekä paikallisen ja   
                vastapään TCP-porttien numerot.                              
tcpRetransSegs  Kuinka monta TCP-pakettia laite on joutunut lähettämään      
                uudelleen. Uudelleenlähetykset eivät suoranaisesti           
                vaikuta tehokkuuden hallintaan, mutta mikäli niitä on        
                paljon, voi se olla merkki siirtotien heikosta toiminnasta.  
---------------------------------------------------------------------------

Udp-ryhmä

Udp-ryhmän olioissa pidetään yllä informaatiota UDP-protokollan mukaisista lähetetyistä ja vastaanotetuista paketeista. Ryhmään sisältyvässä taulussa pidetään myös kirjaa niistä UDP-protokollan porteista, joihin laite on valmis hyväksymään yhteyksiä.

Egp-ryhmä

Egp-ryhmässä ovat ne oliot, jotka pitävät kirjaa EGP-protokollan (Exterior Gateway Protocol) mukaisista paketeista. Samoin ryhmästä löytyvät EGP-protokollan mukaisiin naapuruustietoihin perustuva informaatio ja konfiguraatiot.

Snmp-ryhmä

Snmp-ryhmän olioihin kerätään tietoa erilaisista SNMP-protokollan mukaisista paketeista ja niihin liittyvistä virheistä.

--------------------------------------------------------------------
snmpInPkts             Kaikkien vastaantotettujen SNMP-pakettien      
                       lukumäärä.                                     
snmpOutPkts            Kaikkien lähetettyjen SNMP-pakettien luku      
                       määrä.                                         
snmpInBadVersions      Vastaanotetut väärän SNMP-version paketit.     
snmpEnableAuthenTraps  Osoittaa, lähettääkö laite Trap-viestin auten  
                       tikointivirheen tapahduttua.                   
--------------------------------------------------------------------
Mikäli edellä mainitussa listassa oleva snmpEnableAuthenTraps ei ole aktivoitu, voidaan tuntemattomalla yhteisönimellä varustettujen pakettien lukumäärä saada oliosta snmpInBadCommunityNames. Sitä ja snmpInBadCommunityUses -oliota voidaan seurata mahdollisten väärinkäytösyritysten varalta. Tosin on huomattava, että SNMP:n nykyisen version viestejä ei mitenkään salata. Siten yhteisönimet kulkevat sellaisenaan verkossa, josta ne voidaan sopivilla ohjelmilla lukea.

Ryhmässä on myös laskurit SNMP-protokollan eri viesteille, sekä lähetetyille että vastaanotetuille. Näitä laskureita seuraamalla voidaan selvitellä mahdollisia SNMP-kyselyihin liittyviä ongelmia.

4.4 SNMP-yhteyskäytäntö

4.4.1 Perusteet

Operaatiot

SNMP:ssä ainoat operaatiot, joita voidaan käyttää, ovat muuttujien kysely ja kirjoittaminen. Tarkemmin sanoen on kolme yleiskäyttöista operaatiota, joita voidaan käyttää skalaariolioiden käsittelyyn:

1. Lukeminen (Get): Hallinta-asema pyytää hallinta-agentilta skalaarin arvon.
2. Kirjoittaminen (Set): Hallinta-asema päivittää hallinta-agentissa sijaitsevan skalaarin arvon.
3. Ilmoitusviesti (Trap): Hallinta-agentti lähettää oma-aloitteisesti skalaariolion arvon hallinta-asemalle.
Hallintatietokannan rakennetta ei ole mahdollista muuttaa lisäämällä tai poistamalla olioiden ilmentymiä. Ei myöskään ole mahdollista antaa komentoja jonkin tapahtuman aikaansaamiseksi. Lisäksi ainoastaan hallintatietokantaa kuvaavan oliopuun lehtiolioita voidaan käsitellä. On kuitenkin mahdollista suorittaa operaatioita yksinkertaisille kaksiulotteisille taulukoille.

Nämä rajoitukset yksinkertaistavat SNMP:n toteuttamista huomattavasti, mutta toisaalta ne myös rajoittavat SNMP:llä toteutetun verkonhallintajärjestelmän toimintamahdollisuuksia.

Autentikointi

SNMP:n autentikointimekanismi on hyvin yksinkertainen. Ainoa autentikointiin käytettävä mekanismi on yhteisötunnus (community name). Yhteisötunnuksen avulla määritellään, mitkä laitteet voivat esittää kyselyjä ja kirjoituspyyntöjä (authentication). Saman tunnuksen avulla rajataan ne hallintatietokannnan näkymät, joiden olioihin voidaan suorittaa eri operaatioita (access policy). Edelleen samaa tunnusta käyttämällä voidaan toteuttaa valtuutusagenttien autentikointi ja saantirajoitukset (proxy service).

SNMP-yhteisö (SNMP community) määritellään hallinta-agentissa paikallisesti. Jokaista haluttua autentikoinnin, saatavuuden ja valtuutuksen sisältävää yhdistelmää kohti voidaan määritellä oma yhteisötunnus. Nämä tunnukset ovat hallinta-agentin sisällä yksikäsitteisiä ja jokaisen hallinta-aseman on jokaisessa luku- tai kirjoitusoperaatiossa ilmaistava sen oikeuksien mukainen yhteisötunnus.

Koska yhteisöt on määritelty paikallisesti hallinta-agentissa, samaa nimeä voidaan käyttää useammassa hallinta-agentissa. Yhteisöjen nimet sinällään eivät merkitse mitään eivätkä kuvasta mitään yhtäläisyyttä määriteltyjen yhteisöjen välilllä. Hallinta-aseman on siis pidettävä kirjaa yhteisönimistä, jotka assosioidaan kuhunkin agenttiin, jonka kanssa se haluaa kommunikoida.

Yhteisönimi toimii siis eräänlaisena salasanana hallinta-agenttiin ja sen olioihin. Näin heikon autentikointimekanismin vuoksi useat verkon ylläpitäjät ja laitevalmistajat ovat hyvin vastahakoisia sallimaan mitään muuta kuin laitteiden valvonnan, eli luku- ja ilmoitusviestioperaatiot. Verkon hallinta kirjoitusoperaation kautta on selvästi näitä haavoittuvampi osa-alue.

Yhteisönimen määrittelyllä rajoitetaan hallinta-asemien pääsyä hallinta-agenttien paikallisiin hallintatietokantoihin. Määrittelemällä useampia yhteisöjä, voidaan eri hallinta-asemille määritellä erilaiset oikeudet. Tämä saantimekanismi koostuu kahdesta osasta:

1. Näkymä (SNMP MIB view) on paikallisen MIB:in olioiden alijoukko. Jokaiselle yhteisölle voidaan määritellä eri näkymä. Tämän näkymän olioiden ei tarvitse kuulua MIB:in samaan alipuuhun.
2. Saantioikeus (SNMP access mode) määritellään jokaiselle yhteisölle. Sen avulla määritellään yhteisölle joko lukuoikeudet tai luku- ja kirjoitusoikeudet.
Saantioikeus määrittelee yhteisöön kuuluvien hallinta-asemien oikeudet näkymän kaikkiin olioihin. Jos yhteisön saantioikeudeksi on määritelty vain lukuoikeus, niin hallinta-asemat voivat suorittaa ainoastaan lukuoperaatioita näkymän olioihin. Toisaalta myös MIB:in kuvauksessa määritellään kullekin olioille sen saatavuus. Jos olion saatavuus on määritelty vain lukuoperaatioille, ei yhteisön kirjoitusoikeuksilla voida muuttaa olion arvoa.

Ilmentymien identifiointi

Jokainen MIB:in olio voidaan identifioida yksikäsitteisesti sen sijainnin perusteella hallintainformaatiota kuvaavassa puussa. Operoitaessa hallintatietokantaa ei kuitenkaan olla kiinnostuneita olioista, vaan niiden ilmentymistä.

Skalaariolioiden ilmentymiä on helppo helppo identifioida ja operoida. Standardin mukaan skalaariolion ilmentymään viitataan olion identifikaation avulla siten, että loppuun lisätään nolla.

Jos siis halutaan viitata MIB-II:een sisältyvään sysDescr-olion ilmentymään, jonka identifikaatio on 1.3.6.1.2.1.1.1 (iso.org.dod.internet.mgmt.mib-2.system.sysDescr), käytetään tunnusta 1.3.6.1.2.1.1.1.0.

Talukoiden käsittely on jossain määrin hankalampaa. SNMP:ssä määritellään ilmentymien saantiin kaksi tapaa: peräkkäissaanti ja suorasaanti. Peräkkäissaannissa käytetään hyväksi olioiden leksikografista järjestystä. Tähän palataan seuraavassa luvussa. Suorasaannissa viitataan suoraan olion ilmentymään.

Taulukoiden käsittelyssä joudutaan ottamaan mukaan taulukon olioiden indeksointi. SMI:n mukaisessa taulukon määrittelyssä voidaan tietyt taulukon muodostavat oliot määritellä indeksiolioiksi. Näiden olioiden avustuksella voidaan erottaa taulukon rivit, eli saman olion ilmentymät toisistaan.

Yleisesti taulukon tietyn olion ilmentymä voidaan saada viittaamalla siihen seuraavasti:

x.i.(nimi1).(nimi2).(...).(nimiN)

Tässä x on taulukon identifikaattori, i on halutun olion nimi taulukossa ja nimi1 - nimiN ovat indeksiolioiden arvot.

Esimerkiksi voidaan ottaa MIB-II:n verkkoliityntäryhmän taulukko, josta saadaan eräästä atk-keskuksen työaseman kaikista verkkoliitynnöistä seuraavanlaista tietoa:

interfaces.ifTable.ifEntry.ifOutUcastPkts.1 : Counter: 0

interfaces.ifTable.ifEntry.ifOutUcastPkts.2 : Counter: 0

interfaces.ifTable.ifEntry.ifOutUcastPkts.3 : Counter: 742165

interfaces.ifTable.ifEntry.ifOutUcastPkts.4 : Counter: 2271714

Tässä siis x on interfaces.ifTable.ifEntry. I on ifOutUcastPkts eli haluttu olio MIB:istä. Nimi1 on ifIndex:in arvo eri verkkoliitynnöille (järjestysnumero) eli olio, jonka mukaan taulukko on indeksoitu.

Vastaava rakenne käy selville paremmin, kun katsotaan ainoastaan yhden verkkoliitynnän tietoja hallintatietokannan taulukosta:

interfaces.ifTable.ifEntry.ifIndex.4 : INTEGER: 4

...

interfaces.ifTable.ifEntry.ifInOctets.4 : Counter: 432727658

interfaces.ifTable.ifEntry.ifInUcastPkts.4 : Counter: 1201639

interfaces.ifTable.ifEntry.ifInNUcastPkts.4 : Counter: 224754

interfaces.ifTable.ifEntry.ifInDiscards.4 : Counter: 0

interfaces.ifTable.ifEntry.ifInErrors.4 : Counter: 181

interfaces.ifTable.ifEntry.ifInUnknownProtos.4 : Counter: 33311

interfaces.ifTable.ifEntry.ifOutOctets.4 : Counter: 1010256327

interfaces.ifTable.ifEntry.ifOutUcastPkts.4 : Counter: 2271800

interfaces.ifTable.ifEntry.ifOutNUcastPkts.4 : Counter: 187826

...

Leksikografinen järjestys

Kuten on havaittu, olion identifikaatio muodostuu sarjasta kokonaislukuja, jotka kuvaavat MIB:in olioiden muodostaman puun hierarkkista rakennetta. Nämä numerosarjat voivat esittää leksikografista järjestystä (sanakirjajärjestys). Tämä järjestys voidaan muodostaa käymällä oliopuu läpi juuresta alaspäin, edellyttäen että olion lapsioliot esitetään aina kasvavassa numerojärjestyksessä.

Olioiden ja niiden ilmentymien järjestäminen on tärkeätä siksi, että hallinta-asema ei välttämättä tunne hallinta-agentin esittämän MIB:in tarkkaa rakennetta. Hallinta-asema tarvitsee siis keinot, joilla se voi etsiä ja operoida olioita ilman, että sen tarvitsee tuntea niitä nimeltä. Joka paikassa puuta hallinta-asema voi määritellä olion tai sen ilmentymän ja kysyä järjestyksessä seuraavaa olion ilmentymää.

Tarkastellaan esimerkiksi kuvan 10 esittämää puurakennetta, jossa on esitetty puun läpikäymisjärjestys katkoviivalla. Voidaan havaita, että oliota 1 seuraava olion ilmentymä on 1.1 ja oliota 1.2 seuraava ilmentymä on 1.2.1. Samoin ilmentymää 1.1 seuraava ilmentymä on 1.2.1. Olioiden 2, 2.1 ja 2.1.1 sanakirjajärjestyksen mukainen seuraava olion ilmentymä on 2.1.1.1.

4.4.2 Yhteyskäytäntö

Viestien yleinen rakenne

SNMP:ssä hallinta-asema ja hallinta-agentti kommunikoivat SNMP-viestien avulla. Jokainen viesti sisältää versionumeron, joka osoittaa mitä SNMP-versiota käytetään, yhteisötunnuksen ja yhden operaatioviestin viidestä mahdollisesta.

Kuvassa 11 on esitetty SNMP-viestin perusrakenne, eri operaatioviestien rakenne sekä näihin viesteihin sisältyvän olioinformaation yleisrakenne. Voidaan huomata, että kaikki luku- ja kirjoituspyynnöt ovat rakenteeltaan samanlaisia ja eroavat pyyntöihin lähetettävästä vastauksesta ainoastaan siinä, että niissä on virheilmoituksia varten varatut kentät nollia.

Lisäksi on huomautettava, että vaikka kuvan rakenteissa esiintyy kenttä viestin tyypille (PDU type), ei sitä ole standardissa määritelty. Standardissa määritellään viisi eri viestityyppiä, joihin sitten viestiä muodostettaessa kyseinen tyyppikenttä käytännössä muodostuu.

Toinen huomion arvoinen asia on SNMP-työryhmän epäonnistunut termien käyttö. Yleensä PDU-nimikettä käytetään jonkin protokollan koko viestistä, mutta SNMP:ssä sitä käytetään vain viestin informaatio-osalle.

Kaikki SNMP:n operaatiot koskevat yhden olion ilmentymän käsittelyä. SNMP-viesteissä on kuitenkin mahdollista sisällyttää yhteen viestiin useampia olioita käsitteleviä toimenpiteitä, mikäli niille suoritettavat operaatiot ovat samoja. Jos siis hallinta-asema haluaa lukea joltain hallinta-agentilta tietyn joukon olioita, se voi lähettää viestin, jossa on listattu kaikki halutut olioiden ilmentymät, ja saada vastauksen, jossa on kaikki kyseiset ilmentymät ja niiden arvot. Tämä tekniikka voi huomattavasti vähentää SNMP-viestien aiheuttamaa kuormaa verkossa.

Tämän tekniikan toteuttamiseksi kaikissa SNMP:n viesteissä on varattu tilaa olioita ja niiden arvoja varten. Kuvassa 11 tätä esittää variable bindings -kenttä. Tässä kentässä on sarja viittauksia olioiden ilmentymiin sekä niiden arvot. Tapauksissa, joissa tarvitaan ainoastaan olion ilmentymää (esimerkiksi lukupyynnöt), vastaanottava osapuoli ei huomioi arvokenttien sisältöä.

Viestien lähetys ja vastaanotto

Periaatteessa, kun laite lähettää viestin toiselle, suoritetaan seuraavat toimenpiteet:

1. Viesti (SNMP PDU) muodostetaan standardin kuvaaman rakenteen mukaisesti.
2. Saatu PDU välitetään autentikointipalvelulle yhdessä lähde- ja kohdeosoitteiden sekä yhteisötunnuksen kanssa. Autentikointipalvelu suorittaa tarvittavat toimenpiteet, kuten salauksen tai autentikointi-informaation lisäämisen ja palauttaa tuloksen.
3. Saatuun viestiiin lisätään versio- ja yhteisötiedot, jolloin saadaan varsinainen SNMP-viesti.
4. SNMP-viesti käsitellään BER:rin (Basic Encoding Rules) mukaisesti ja välitetään edelleen kuljetuskerrokselle eteenpäin toimitettavaksi.
Käytännössä autentikointia ei normaalisti suoriteta. SNMP:n seuraavassa versiossa (SNMPv2) tullee mukaan myös autentikointi.

Kun SNMP-viesti saadaan kuljetuskerrokselta, suoritetaan seuraavat toimenpiteet:

1. Viestille tehdään kieliopillinen tarkistus (syntax check) ja se hylätään, mikäli sitä ei onnistuta tulkitsemaan.
2. Tarkistetaan SNMP-versionumero, ja hylätään, mikäli se on väärä (vastaanottavan laitteen kannalta).
3. Autentikointipalvelulle välitetään yhteisönimi, viestin PDU-osuus sekä viestin lähde- ja kohdeosoitteet tarkistusta varten. Mikäli autentikointi epäonnistuu, siitä tehdään ilmoitus ja viesti hylätään. Mikäli autentikointi onnistuu, palautetaan viestin PDU-osuus standardin kuvaaman rakenteen mukaisesti.
4. PDU-osuudelle tehdään kieliopillinen tarkistus ja viesti hylätään, mikäli se ei ole kieliopin mukainen. Muussa tapauksessa viesti käsitellään edelleen sen sisältämän yhteisötunnuksen rajoitusten puitteissa.
Käytännössä autentikointi tarkoittaa ainoastaan yhteisötunnuksen tarkistusta. Kuvassa 12 on esitetty SNMP-viestit ja niihin saatavat vastaukset.

GetRequest-viesti

Kun hallinta-asema lähettää GetRequest-viestin, se sisällyttää viestiin viestityypin tunnuksen (PDU type), viestitunnuksen (request-id) sekä listan pyydettävistä olioiden ilmentymistä (variable-bindings). Hallinta-asema käyttää viestitunnusta yleensä niin, että kaikki lähetetyt viestin voidaan sen avulla identifioida. Se antaa SNMP-sovellukselle keinon sovittaa yhteen toisiaan vastaavat pyynnöt ja vastaukset. Sen lisäksi sillä voidaan tunnistaa epäluotettavan siirtotien takia monistuneet viestit.

Pyynnön vastaanottava hallinta-agentti vastaa pyyntöön GetResponse-viestillä, johon se sisällyttää pyynnön sisältämän viestitunnuksen. GetRequest-operaatio on luonteeltaan atominen, eli joko kaikki pyydetyt ilmentymien arvot palautetaan tai yhtäkään arvoa ei palauteta. Mikäli kaikille pyydetyille olioille voidaan antaa arvo, ne palautetaan variable-bindings-listassa. Mikäli on yksikin olio, jolle ei voida antaa arvoa, ei millekään oliolle palauteta arvoa ja viestiin sisällytetään virhekoodi.

Seuraavat virheet ovat mahdollisia:

GetNextRequest-viesti

GetNextRequest-viesti on miltei identtinen GetRequest-viestin kanssa. Ainoa ero on seuraava: GetRequest-viestissä jokainen muuttuja variable-bindings-listassa viittaa olion ilmentymään, jonka arvo halutaan tietää, GetNextRequest-viestissä vastaavalle muuttujalle palautetaan sen ilmentymän arvo, joka on muuttujaa seuraava leksikograafisessa järjestyksessä.

Oletetaan, että hallinta-asema haluaa tietää jostain laitteesta sen yhteyshenkilön, nimen ja sijainnin. Tällöin se voi lähettää seuraavankaltaisen GetRequest-viestin:

GetRequest (sysContact.0, sysName.0, sysLocation.0)

Mikäli yhteisön näkymä laitteen MIB:issä sallii, se saa seuraavanlaisen viestin:

GetResponse ((sysContact.0 = Mika Hautaniemi), (sysName.0 = pizza.hut.fi), (sysLocation.0 = Y196))

Mikäli hallinta-agentilla ei olisi arvoa yhdelle pyydetyistä arvoista, se palauttaisi ainoastaan virhekoodin eikä yhtään haluttua arvoa. Varmistaakseen kaikkien haluttujen arvojen saamisen olisi hallinta-aseman lähetettävä kolme erillistä viestiä.

Mikäli käytettäisiin seuraavanlaista GetNextRequest-viestiä:

GetNextRequest(sysContact, sysName, sysLocation)

hallinta-agentti palauttaa jokaista oliota leksikograafisessa järjestyksessä seuraavan ilmentymän arvon. Mikäli kaikki arvot voidaan palauttaa, on vastaus sama kuin edellisessä tapauksessa, koska sysContact:a seuraava olion ilmentymä on sysContact.0 jne. Mutta mikäli esimerkiksi sysName-olio ei kuuluisi näkymään, hallinta-agentti palauttaisi seuraavanlaisen viestin:

GetResponse((sysContact.0 = Mika Hautaniemi), (sysLocation.0 = Y196), (sysLocation = Y196))

Koska sysName ei kuulunut kyseiseen näkymään, palautetaan järjestyksessä sitä seuraava ilmentymä ja sen arvo, jotka tässä tapauksessa ovat sysLocation.0 ja Y196.

GetNextRequest-viestiin liittyvät säännöt vaativat, että hallinta-agentti palauttaa sen olion ilmentymän, joka seuraa annettua olion tunnistetta. Missään ei esitetä vaatimusta, että annetun olion tunnisteen täytyisi esittää olemassa olevaa oliota tai sen ilmentymää. Hallinta-asema voi siten käyttää GetNextRequest-viestiä tutkiakseen hallintatietokannan näkymää tuntematta lainkaan sen rakennetta. Ensimmäisellä viestillä hallinta-asema saa tietää näkymän ensimmäisen tunnetun olion ja sen ilmentymän arvon samalla kertaa, ja se voi käyttää saamaansa oliota kysyäkseen seuraavan.

SetRequest-viesti

SetRequest-viesti on hyvin samankaltainen GetRequest- viestin kanssa. Sen rakenne on muuten samanlainen, mutta variable-bindings-lista sisältää olioiden ilmentymille ne arvot, joita niille halutaan antaa. Viestiin saatava GetResponse-viesti on samanlainen kuin GetRequest-viestiin saatava vastaus. Se siis sisältää olioiden ilmentymien arvot, tässä tapauksessa siis niiden uudet arvot.

Viestin atomisuus on myös samanlainen GetRequest-viestin kanssa, eli mikäli yksikin olioista on virheellinen, yhdenkään ilmentymän arvoa ei muuteta, vaan palautetaan virhettä vastaava koodi. Koodit ovat samat kuin GetRequest-viesteille (noSuchName, tooBig, genErr). Lisäksi on koodi badValue, jolla kerrotaan, että saatu asetettava arvo on virheellinen. Virheellisyys voi johtua väärän tyyppisestä tai väärän mittaisesta arvosta tai itse arvon suuruudesta.

SNMP ei tarjoa mitään mekanismia, jolla voitaisiin antaa komentoja, jotka hallinta-agentti suorittaisi. Ainoat mahdollisuudet ovat lukea tai kirjoittaa olioiden ilmentymien arvoja. Periaatteessa on kuitenkin mahdollista käyttää hyväksi kirjoitusoperaatiota jonkin komennon suorittamiseen. Laitevalmistaja voi määritellä omaan MIB:iinsä olion, joka esittää komentoa, joka suoritetaan, kun oliolle annetaan tietty arvo. Esimerkiksi hallinta-agentissa voi olla olio reBoot, jonka alkuarvo on nolla. Kun kyseisen olion arvo asetetaan ykköseksi, laite käynnistää itsensä uudelleen ja asettaa olion arvoksi jällen nollan.

Trap-viesti

Trap-viesti on hallinta-agentin oma-aloitteisesti hallinta-asemalle lähettämä viesti, jolla se ilmoittaa jostain merkittävästä tapahtumasta (event). Se eroaa rakenteeltaan huomattavasti muista viesteistä.

Trap-viestin kentät ovat:

---------------------------------------------------------------------------
PDU type           Osoittaa, että kyseessä on ilmoitusviesti (Trap PDU).     
Enterprise         Identifioi viestin generoineen järjestelmän. Sen arvo     
                   otetaan system-ryhmän sysObejctID-oliosta.                
Agent-addr         Kertoo viestin lähettäneen laitteen IP-osoitteen.         
Generic-trap       Yksi ennakkoon määritellyistä ilmoitusviestien tyy        
                   peistä.                                                   
Specific-trap      Koodi, joka voi osoittaa tarkemmin ilmoitusviestin        
                   syyn.                                                     
Time-stamp         Ilmoittaa, kauanko laite on ollut yhtäjaksoisesti toimin  
                   nassa viestin lähettämishetkellä.                         
Variable-bindings  Sisältää lisää viestiin liittyvää informaatiota. Näiden   
                   tietojen merkitys riippuu toteutuksesta.                  
---------------------------------------------------------------------------
Generic-trap-kenttä voi saada yhden seitsemästä arvosta:

------------------------------------------------------------------------------
coldStart(0)             Lähettävä laite alustaa (re-initialize) itsensä uudel  
                         leen siten, että sen asetukset voivat muuttua.         
                         Yleensä tämä on odottamaton uudelleenkäyn              
                         nistys, joka voi johtua esimerkiksi vakavasta 
viasta. warmStart(1) Lähettävä laite alustaa itsensä uudelleen ilman asetusten muutoksia. linkDown(2) Lähettävä laite ilmoittaa jonkin sen tietoliikenne yhteyden vikaantumisesta. Variable-bindings-lis tassa on vikaantuneen linkin verkkoliitäntäolion nimi ja arvo. linkUp(3) Sama kuin edellinen, mutta nyt jokin tietoliikenne yhteyksistä on jälleen toiminnassa. autheticationFailure(4) Laite on saanut SNMP-viestin, jonka autentikointi on epäonnistunut. egpNeighborLoss(5) Laitteen EGP-protokollan mukaiseen naapuriin ei enää saada yhteyttä. enterpriseSpecific(6) Tämä on varattu laite- ja ohjelmistovalmistajien omille ilmoitusviestityypeille. Tarkempi tieto on specific-trap-kentässä. ------------------------------------------------------------------------------

4.5 Etävalvonta

Tärkein lisäys perus-SNMP:n standardeihin on etähallintastandardi (Remote Network-Monitoring, RMON). Standardi [RFC1271] kuvaa etähallinta-MIB:in (RMON MIB), joka täydentää MIB-II:ta ja tarjoaa verkon ylläpitäjille hyvin tärkeätä tietoa verkon tilasta.

MIB-II:n kuvaamien tietojen avulla voidaan saada tietoa, joka on puhtaasti paikallista kyseiselle hallinta-agentille. Esimerkiksi jossain lähiverkossa olevista MIB-II:ta tukevista laitteista voidaan saada kustakin laitteesta erikseen tietoa sen lähettämistä ja vastaanottamista paketeista. Tämän tiedon perusteella ei kuitenkaan ole kovinkaan helppoa saada kokonaiskuvaa kyseisen lähiverkon tilasta.

Standardissa kuvattu etähallinnan määrittely on pääasiassa MIB:in määrittely, mutta sen perusteella voidaan hyvin helposti määritellä ne tiedot ja toiminnot, joita etähallinnassa tarvitaan. Voidaan hyvin sanoa, että RMON-konsepti tarjoaa tehokkaan tavan valvoa lähiverkon tilaa ja samalla vähentää hallinta-asemaan, verkon liikenteeseen ja yksittäisiin laitteisiin kohdistuvaa kuormaa.

Kuvassa 13 on esitetty esimerkkikokoonpano etähallinta-agenttien käytöstä. Ylimpänä on hallinta-asema. Tämän lisäksi on kaksi lähiverkkoa, joissa on normaalien työasemien lisäksi laitteet, joissa toimii RMON-agentti. Toinen agenteista on toteutettu kuvan järjestelyssä reitittimessä ja toinen verkon työasemassa. Tällaisella järjestelyllä voidaan yhdeltä hallinta-asemalta seurata kolmen erillisen lähiverkon toimintaa.

4.5.1 RMON MIB:in rakenne

RMON MIB on jaettu yhdeksään ryhmään, kuten kuvassa 14 esitetään.

Tilastoryhmä

Tilastoryhmä (statistics) sisältää perustilastot kustakin tarkkailtavasta aliverkosta. Ryhmä muodostuu taulukosta, jossa on kullekin verkkoliitynnälle (aliverkolle) oma rivi. Tällä hetkellä ryhmässä olevat oliot on määritelty vain Ethernet-liitynnöille. Tulevaisuuden laajennukset tulevat sisältämään myös FDDI- ja Token Ring -liitynnät.

Ryhmässä on laskurit mm. verkossa liikkuneille tavuille ja paketeille, havaituille pakettien virheille, törmäyksille sekä eri pituisille paketeille.

Historiaryhmä

Historiaryhmä (history) sisältää taulukon, jonka alkioihin voidaan kerätä historiatietoa joistakin tilastoryhmän tiedoista halutulla aikavälillä (1 s - 1 h). Tämän ryhmän avulla voidaan esimerkiksi kertoa, että halutaan tilastotiedoista aina 10 minuutin ajanjaksoilta pitää tallessa viimeisen tunnin tapahtumat, eli kuusi 10 minuutin jaksoa.

Näissä olioissa on lähes samat oliot kuin tilastoryhmässä, lukuunottamatta laskureita eri pituisille paketeille. Lisäksi ryhmässä on olio, jossa on arvio verkon käyttöasteesta kyseisellä aikavälillä.

Hälytysryhmä

Hälytysryhmässä (alarm) voidaan asettaa eri laskureille hälytysrajoja, joiden perusteella RMON-agentti voi lähettää hallinta-asemalle ilmoitusviestejä (trap).

Hälytyksille voidaan määritellä, mitä laskuria seurataan, minkä mittaiselta ajanjaksolta tietoa kerätään ja onko hälytyksen perusteena absoluuttinen vai arvon muutokseen perustuva hälytys. Lisäksi voidaan määritellä raja, jonka perusteella hälytys suoritetaan, sekä raja, jonka yli tai alle tarkkailtavan arvon on mentävä, ennenkuin suoritetaan uusi hälytys.

Host-ryhmä

Host-ryhmässä on taulukko, jonne voidaan kerätä tietoa verkon eri laitteiden lähettämistä ja vastaanottamista tavuista ja paketeista, sekä laitteiden lähettämistä virhepaketeista ja niin sanotuista broadcast- ja multicast-paketeista.

Tämän talukon lisäksi ryhmässä on toinen taulukko, jossa on vastaavat tiedot, mutta se on järjestetty laitteiden havaitsemisjärjestyksen mukaisesti. Edellinen taulukko on järjestetty laitteiden Ethernet-osoitteiden mukaisesti.

HostTopN-ryhmä

HostTopN-ryhmän avulla saadaan selville mitkä laitteet kuormittavat verkkoa eniten jonkin kriteerin perusteella. Näitä kriteereitä voivat olla esimerkiksi lähetettyjen tai vastaanotettujen pakettien tai tavujen lukumäärä haluttuna ajanjaksona.

Matrix-ryhmä

Matrix-ryhmässä voidaan kerätä tietoa laiteparien välisen liikenteen määrästä samalla tavoin kuin HostTopN-ryhmässä.

Filter-, capture- ja event-ryhmät

Filter-, capture- ja event-ryhmät kuuluvat olennaisesti yhteen. Filter-ryhmän avulla voidaan määritellä suodattimia (filter), joita käytetään verkossa havaittujen pakettien tutkimiseen ja suodattimen ehdot täyttävien pakettien laskemiseen. Lisäksi voidaan tietyt ehdot täyttävän paketin perusteella lähettää event-ryhmässä määritelty ilmoitusviesti. Capture-ryhmän avulla voidaan kaapata verkosta paketteja, jotka täyttävät jonkin suodattimen ehdot, tarkempaa tutkimista varten. Event-ryhmässä määritellään ne ilmoitusviestit, joita RMON-agentti voi lähettää hallinta-asemalle jonkin alarm- tai filter-ryhmän määrittelemän ehdon mukaisesti.

4.5.2 RMON:in käyttö verkon valvonnassa

RMON-konsepti on monimutkaisin osa SNMP-standardeja. Erityisesti suodattimet ja niiden avulla suoritettavan pakettien kaappaamisen ymmärtäminen vaatii huomattavan paljon perehtymistä. RMON-agenttien avulla voidaan kuitenkin suorittaa hyvin paljon verkon suorituskyvyn valvontaan liittyviä toimintoja.

RMON-agenteilta saatavien tietojen perusteella voidaan tehdä jopa verkon rakenteen uudelleen suunnittelua [Leinwand93b]. RMON MIB:in olioiden avulla voidaan seurata esimerkiksi siirtotien käyttöastetta ja sen perusteella tehdä päätöksiä, olisiko siirtotie kenties syytä jakaa osiin. Myös törmäysten suhteellista osuutta on helppo seurata RMON:in avulla. Vaikka siirtotie ei olisikaan ylikuormitettu, voi sen pilkkominen olla tarpeen, mikäli törmäyksiä on runsaasti.

Törmäysten suhteellinen osuus voidaan laskea esimerkiksi näin.

Edellisessä kaavassa olevat etherStatsCollisions- ja etherStatsPkts-oliot ovat RMON MIB:in tilastoryhmän laskureita. Historiaryhmän vastaavia olioita tutkimalla voidaan edelleen selvittää, onko laskettu törmäysprosentti normaali vai ainoastaan yksittäinen törmäyspiikki.

Joissain tapauksissa RMON-agenteilla voidaan korvata perinteisiä protokolla-analysaattoreita [Waldbusser92b]. Yksinkertainen verkon analysointijärjestelmä voi koostua useista RMON-agenteista ja yhdestä hallinta-asemasta. RMON-agentit keräävät tietoa verkon tilasta lukemalla kaikki verkossa kulkevat paketit eli toimivat periaatteessa samalla tavalla kuin protokolla-analysaattorit. Kerätty data lähetetään hallinta-asemalle, jossa sitä voidaan käsitellä edelleen ja esittää halutussa muodossa.

Koska RMON-agenttien kaikki toiminnot suoritetaan verkon välityksellä, niihin ei ole tarpeen sisällyttää kalliita näyttöjä tai levyjä. Vain hallinta-asemassa tarvitaan laitteet käyttöliittymää varten. Tällä tavalla RMON-agentteihin perustuva järjestelmä voi olla huomattavasti halvempi kuin perinteinen analysaattoriin perustuva systeemi. Protokolla-analysaattorit ovat yleensä myös toteutukseltaan sellaisia, että niiden käyttö on mahdollista vain paikan päällä. Huomattavaa on myös se, että RMON-agentit suorittavat yleensä useita tehtäviä yhtä aikaa. Näin on mahdollista tehdä yksittäisiä lyhyitä valvontatehtäviä ilman, että tarvitsee keskeyttää jatkuvaa tilastointia.

4.6 SNMP:n tulevaisuus

Kesällä 1992 julkaistiin ehdotus turvallisesta SNMP:stä (Secure SNMP) ja samaan aikaan tuli ehdotus SNMP:n seuraavasta versiosta, SMP:stä (Simple Management Protocol). Nämä kaksi ehdotusta otettiin pohjaksi suunniteltaessa SNMP:n seuraavaa versiota, SNMPv2. Sen kehittämiseksi muodostettiin kaksi työryhmää, joista toinen kehitti itse SNMPv2:ta, ja toinen keskittyi ainoastaan turvallisuusominaisuuksien kehittämiseen. Kuvassa 15 esitetään SNMP:n evoluutiota SGMP:stä lähtien. Vuoden 1993 alussa esitettiin SNMPv2:n standardiluonnos ja saman vuoden syksyllä SNMPv2 hyväksyttiin standardiehdotukseksi. Lopullinen standardi hyväksyttäneen vuoden 1994 aikana.

4.6.1 SNMPv2

SNMPv2 on huomattavasti edeltävää versiota monimutkaisempi. Tämä näkyy jo standardin kuvaamiseen tarvittavien dokumenttien määrästä. SNMP:n kuvaukseen tarvittiin kolme dokumenttia. Mikäli mukaan otetaan RMON, niitä on neljä. SNMPv2:n kuvauksessa on 12 dokumenttia.

SNMPv2 eroaa edeltävästä versiosta pääasiassa seuraavien osalta:

1. Hallintainformaation rakenne (SMI, Structure of Management Information).
2. Yhteyskäytännön operaatiot.
3. Hallinta-asemien välinen kommunikaatio.
4. Turvallisuus.
SNMPv2:n SMI laajentaa SNMP:n SMI:tä monella tavalla. Olioiden kuvaamista on laajennettu sisältämään useita uusia tietotyyppejä. Uusi tietotyyppi on mm. 64-bittinen laskuri. Mukaan on otettu myös uusi käytäntö, jonka avulla taulukoiden sisältämiä rivejä on helpompi luoda ja muokata.

Yhteyskäytäntöön on otettu mukaan kaksi uutta SNMP-viestiä. GetBulkRequest-viestin avulla hallinta-asemat voivat tehokkaammin pyytää hallinta-agenteilta suuria tietomääriä. Erityisesti se soveltuu suurten taulukoiden tietojen lukemiseen. InformRequest-viesti antaa hallinta-asemalle mahdollisuuden lähettää Trap-viestin tyyppistä informaatiota toiselle hallinta-asemalle.

SNMPv2:n määrittelyssä kuvataan kaksi MIB:iä. SNMPv2 MIB kuvaa vastaavat verkon liikenteeseen liittyvät tiedot kuin SNMP:n MIB-II. Erityisesti hajautetun verkonhallinnan tukemiseksi mukaan on otettu MIB, joka kuvaa hallinta-asemien välisen kommunikoinnin tarvitsemat oliot (M2M MIB, Manager-to-Manager MIB). Sen tarjoamat toiminnot ovat hyvin pitkälle samanlaiset kuin RMON MIB:issä.

SNMPv2:n turvallisuutta lisäävät ominaisuudet ovat hyvin pitkälle samat kuin sen pohjana olleen turvallisen SNMP:n ominaisuudet. Turvallisuuden varmistamiseksi on luotu mekanismit, joiden avulla voidaan autentikoida viestien lähettäjä sekä saadun tiedon integriteetti eli eheys. Näillä mekanismeilla voidaan suojautua aktiivisilta turvallisuusriskeiltä. Passiivisten riskien minimoimiseksi voidaan turvallisuutta edelleen parantaa salaamalla viestit. Autentikoinnin ja tiedon integriteetin varmistaminen tapahtuu MD5-algoritmin avulla. MD5 on MIT:ssä kehitetty, lähinnä digitaaliseen allekirjoitukseen tarkoitettu kryptografinen hajautusfunktio [RFC1321]. Viestien salaukseen käytetään DES-algoritmia (Data Encryption Standard). DES:in huono puoli on se, että se kuuluu siihen joukkoon tuotteita ja algoritmeja, joita ei saa viedä USA:n ulkopuolelle. Tämän takia sen osalta USA:sta tuotavat ohjelmistot ovat joko puutteellisia tai DES-osuus koodista on tehtävä USA:n ulkopuolella. Yksi DES-toteutus on tehty Teknillisessä korkeakoulussa Antti Loukon toimesta.

4.6.2 Siirtyminen SNMP:stä SNMPv2:een

Siirtyminen SNMP:stä SNMPv2:een on standardia suunniteltaessa pyritty tekemään mahdollisimman helpoksi. Siirtyminen ei kuitenkaan yleensä tapahdu hetkessä, joten tarvitaan keinot, joiden avulla voidaan verkonhallinnassa käyttää yhtä aikaa sekä vanhaa että uutta versiota tukevia laitteita. Hallinta-asemien ohjelmaversioiden päivitys on yleensä helpompaa, koska niitä on vähemmän ja ne ovat omia sovelluksiaan. Hallinta-agenttien päivittäminen on vaikeampi toteuttaa, sillä ne ovat hajallaan ja ne on yleensä toteutettu siten, että laitteen verkonhallintaohjelmisto on sulautettu laitteen käyttöjärjestelmään [Waldbusser93].

Siirtymäkauden järjestelmän toteuttamiseksi on kaksi tapaa [RFC1452]. Yksinkertaisin tapa toteuttaa yhteiskäyttö protokollatasolla on pitää hallinta-agentit ennallaan ja kommunikoida niiden kanssa valtuutusagentin välityksellä. Kaikki laitteille tehtävät SNMPv2-kyselyt lähetetään valtuutusagentille, joka suorittaa kyselyiden muunnoksen SNMP-kyselyiksi ja välittää ne edelleen SNMP-hallinta-agenteille. Saadut vastaukset valtuutusagentti muuntaa SNMPv2-viesteiksi ja välittää ne hallinta-asemalle.

Toinen tapa yhteiskäytön mahdollistamiseksi on toteuttaa hallinta-asemien ohjelmisto siten, että ne ovat `kaksikielisiä'. Hallinta-asemalla on paikallisessa tietokannassaan informaatio eri laitteiden ymmärtämästä SNMP-versiosta, ja se kommunikoi hallinta-agenttien kanssa niiden ymmärtämän protokollan välityksellä.

4.7 Käytännön näkökohtia

4.7.1 SNMP:n rajoituksia

Suurin ongelma SNMP:n käytössä verkonhallintaan on sen varsin yksinkertainen autentikointimekanismi. Sen takia useimmat laite- ja ohjelmistovalmistajat rajaavat mielellään vahvat hallintamekanismit muiden tekniikoiden kuin SNMP:n ulottuville. Tämä johtaa siihen, että SNMP:tä voidaan lähinnä käyttää verkon valvontaan eikä niinkään verkon hallintaan.

Eräs tärkeä SNMP-pohjaisen järjestelmän toteutuksessa tarvittava tieto on se, kuinka montaa hallinta-agenttia yksi hallinta-asema voi hallita. Tällöin on määriteltävä, kuinka usein laitteille halutaan esittää kyselyitä ja mikä on verkon aiheuttama keskimääräinen viive. Yksinkertaistamalla ongelmaa siten, että ainoastaan yhdelle laitteelle kerrallaan tehdään kyselyitä, voidaan muodostaa seuraavanlainen yhteys valvottavien laitteiden määrän (N), halutun kyselyvälin (T) ja yhteen kyselyyn kuluvan ajan välille (delta) [Stallings].

Kyselyyn kuluva aika (delta) riippuu useista tekijöistä:

Mikäli oletetaan, että haluttu kyselyväli paikallisverkossa on 15 minuuttia ja pakettien käsittelyyn kuluva aika on 50 ms ja verkon aiheuttama viive 1 ms, voidaan laskea teoreettinen maksimi hallittavien laitteiden lukumäärälle.

Toisin sanoen esimerkin mukaisessa tilanteessa yksi hallinta-asema voisi hoitaa noin 4400 hallinta-agentin tietojen kyselyt.

Laajassa verkossa, joka muodostuu useista aliverkoista, voi verkon aiheuttama viive olla huomattavasti suurempi. Tämä voi johtua esimerkiksi pienemmistä tiedonsiirtonopeuksista ja suuremmista etäisyyksistä. Oletetaan verkon aiheuttamaksi viiveeksi 0,5 sekuntia, jolloin yhden hallinta-aseman hoidettavana olevien hallinta-agenttien ylärajaksi saadaan.

Voidaan havaita, että näissä esimerkeissä verkon aiheuttama viive on erittäin merkittävä tekijä määritettäessä yhden hallinta-aseman hallittavissa olevien hallinta-agenttien lukumäärää.

Edellinen esimerkki kuvaa SNMP:n toista suurta ongelmaa, tehokkuutta. SNMP ei tarjoa mekanismia suurten tietomäärien siirtämiseen, ja usein tilanne on sellainen, että kaikkien haluttujen tietojen saamiseksi on tehtävä useita kyselyitä. Laajoissa verkoissa, joissa vasteajat voivat olla hyvinkin pitkiä, voi SNMP:n kyselyihin perustuva valvonta olla liian hidasta ja, kuten esimerkistä havaitaan, hallittavien laitteiden lukumäärä voi olla hyvin pieni. SNMP-kyselyt aiheuttavat myös lisäkuormaa verkkoon, mutta useimmissa tapauksissa tämä lisäkuorma ei ole kovinkaan merkittävä, jos se suhteutetaan kaikkeen verkon liikenteeseen [Waldbusser92a].

Edellisten esimerkkien perusteella voisi olettaa, että laajojen verkkojen valvontaan tarvittaisiin useita hallinta-asemia. SNMP:n tällä hetkellä käytössä oleva versio ei kuitenkaan tue hallinta-asemien välistä kommunikaatiota, vaan se on mahdollista vasta SNMPv2:ssa.

4.7.2 Laitevalmistajien toteutuksista

Laite- ja ohjelmistovalmistajien SNMP-agenttien toteutuksissa on eroja. Joillakin valmistajilla saattaa olla toteutuksia, joiden väitetään toteuttavan esimerkiksi MIB-II:n, mutta käytännössä osa MIB-II:n olioista on jätetty toteuttamatta. Toisin sanoen aina ei voida olla varmoja, että esimerkiksi laskuri, joka kertoo havaittujen virheellisten pakettien lukumäärän, antaa todellisen arvon. Toteutus saattaa aina palauttaa arvon nolla olioille, joita ei ole toteutettu, vaikka periaatteessa vastaukseksi pitäisi tulla tieto siitä, että kyseistä oliota ei ole toteutettu. Toisaalta tällöin valmistaja ei periaatteessa voisi mainostaa laitteen tai ohjelmiston toteuttavan kyseisen MIB:in kokonaisuudesssan.

Toinen ongelma standardi-MIB:ien toteutuksiin laitteissa liittyy niiden tarkkuuteen. Joissakin testeissä on havaittu, että osa toteutuksista ei kykene kovinkaan tarkasti pitämään kirjaa eri olioihin liittyvistä laskureista [Stallings]. Tällöin hallinta-agenteilta saatavien tietojen perusteella tapahtuva verkonhallinta ei ole kovinkaan vankalla todellisuuspohjalla.

Eräs suuri ongelma SNMP-toteutuksissa liittyy laitevalmistajien omiin MIB:eihin. Kuten aikaisemmin on mainittu, on laitevalmistajille varattu oma ryhmä (enterprises), jonka alle laitevalmistajat voivat rekisteröidä omat MIB:insä. Tämä järjestely hankaloittaa huomattavasti keskitetyn verkohallinnan toteutusta, koska eri laitteilla voi olla saman informaation sisältävä laskuri, mutta kukin näistä on rekisteröity eri ryhmään.

Omat lisäongelmansa tuovat erilaiset valtuutusagenttiratkaisut [Chen]. Useat valmistajat ovat käyttäneet oikoteitä SNMP:n toteuttamiseksi omien laitteidensa hallintaan valtuutusagenttien avustuksella. Nämä ratkaisut vaativat yleensä erillisen mikrotietokoneen (PC), joka toimii valtuutusagenttina esimerkiksi valmistajan päätepalvelimille. Mikäli käytössä on usean eri valmistajan laitteita, tarvitaan näiden hallintaan useita lisälaitteita, joista aiheutuu lisäkustannuksia ja jotka lisäävät kunnossapidettävien laitteiden lukumäärää.

Seuraava luku