Рачунарске мреже 2/Пројекат

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу

Projekat iz Računarskih mreža 2 je dodatna aktivnost koja zamenjuje drugi kolokvijum i drugu i treću laboratorijsku vežbu ukoliko se izabere. Tema projekta je komuniciranje sa ruterima preko SNMP protokola kroz Java kod. Vredi ukupno 40 bodova, i iskustvo kolega koje su ga radili je da se završava za od 2 do 8 sati rada. Pošto su se nekoliko godina zaredom pojavile iste postavke projekta, ispod je data generalna postavka varijanti i saveti o tome kako ih raditi. Kao i na svim predmetima koji uključuju kod, i ovde se proverava sličnost radova.

Opšte

Projekat se radi na Ubuntu virtuelnoj mašini na simulatoru GNS3, kao i laboratorijske vežbe. Koriste se iReasoning-ov SNMP API i MIB Browser za izradu projekta (moguće je izabrati i neku drugu SNMP biblioteku). Neki od korisnih linkova su:

  • SNMP API stranica — možete preuzeti v2c ili v3 API, svejedno je.
    • Pored JAR fajlova koje ubacujete u svoj projekat, ovde se nalaze i examples folder koji demonstrira korišćenje API funkcija
  • SNMP API Javadoc — detaljna dokumentacija svih funkcija SNMP API
  • MIB Browser stranica

Preporučuje se da pre početka izrade pronađete podatke koji su vam potrebni u MIB stablu kroz MIB Browser, onda nađete odgovarajući primer iz examples direktorijuma biblioteke, na osnovu njega napravite projekat i na kraju verifikujete rešenje. Probajte da GUI koji je od vas u projektu tražen napravite što je bolje moguće, kako se profesor ne bi ljutio na loš GUI na odbrani.

U pregledu po varijantama ispod navedene su neki primeri rešenja od prethodnih godina. Ovi primeri predstavljaju predate projekte i ne preporučuje se njihovo kopiranje zbog provere sličnosti sa projektima od prethodnih godina. Ako uzimate te primere kao inspiraciju, bitno je da razumete šta se u njima dešava, kako biste uspešno uradili modifikaciju sa tim znanjem.

Modifikacije

Na odbrani može kao modifikacija da dođe neka druga varijanta projekta, ali bez delova koje nisu usko u vezi sa SNMP (dakle, bez GUI). Preporučuje se da uradite više od jedne varijante projekta kako biste bili spremni na ovu situaciju i sigurniji u svoje znanje SNMP API (nije poznato da li je zabranjeno predati više od jedne varijante, doduše).

Ukoliko ne znate da uradite modifikaciju a osnovni projekat radi, dobijate 25 od 40 bodova. Na odbrani je takođe dostupan examples direktorijum.

Varijanta 1

Aplikacija treba da očitava i prati statuse svih interfejsa na svim ruterima u mreži i da prikazuje za svaki interfejs sledeće podatke: opis, tip, MTU, brzinu interfejsa, fizičku adresu, administrativni i operativni status. Administrativni i operativni status treba da se prikazuje u formi dvobojnog (crveno/zeleno) indikatora za stanja down (crveno - ) i up (zeleno - ). Podaci se prikupljaju periodično sa periodom od 10s, tako da se poslednji očitani status prikazuje na ekranu. Podatke treba grupisati po ruteru, na sledeći način:

  • Ruter 1
    • interfejs 1
      • opis
      • tip
      • ...
    • interfejs 2
      • opis
      • tip
      • ...
    • ...
  • Ruter 2
    • interfejs...

Verifikacija rešenja

Verifikacija rešenja će se vršiti promenama statusa interfejsa (shut/no shut), što treba da se vidi u aplikaciji kao promena odgovarajućeg statusa.

Varijanta 2

Potrebno je očitavati i pratiti ukupan broj paketa i protok (broj bita u jedinici vremena) koji ulaze i izlaze kroz sve interfejse svih rutera. Takođe, potrebno je pratiti i broj unikast i ne-unikast paketa i njihove protoke. Podatke prikupljati periodično sa periodom od 10s. Prikupljene podatke prezentovati u obliku grafika koji prikazuje promenu očitanog parametra u vremenu. Sa svakom očitanom novom vrednošću grafik se dopunjava. Kako su na ruterima promenljive koje opisuju broj bajtova koji su prošli kroz ruter kumulativne, za protok je potrebno prikazati razliku vrednosti između dva intervala kao:

protok (bit/s)=8*(broj_bajtova(t)-broj_bajtova(t-10s))/10s

Verifikacija rešenja

Pustiće se saobraćaj između rutera (npr. veliki broj ping paketa). U zavisnosti od toga kuda paketi prolaze, treba da se ovaj protok vidi na grafiku.

Varijanta 3

Potrebno je prikazati sadržaj tabela rutiranja za sve rutere u mreži. Tabela rutiranja treba da sadrži adrese ruta, njihove maske, next hop adrese na koje te rute ukazuju, poreklo rute (iz kog protokola rutiranja potiču). Podatke prikupljati periodično sa periodom od 10s i osvežavati prikaz u skladu sa eventualnim promenama. Podatke grupisati tabelarno.

Verifikacija rešenja

U mreži će se dodavati ili povlačiti neke rute dodavanjem novih loopback interfejsa na ruterima, a to treba da se vidi u aplikaciji, tako što će ona u svakom trenutku prikazivati ažurnu verziju tabele rutiranja ekvivalentnu onoj koja je u tabeli rutiranja.

Varijanta 4

Potrebno je očitati i prikazati skup BGP suseda jednog od rutera u mreži i njihove osobine kao što su:

  • Identifikator suseda
  • stanje BGP sesije sa susedom (ime stanja u mašini stanja)
  • verzija BGP koja se koristi
  • IP adresa suseda
  • Autonomni sistem u kojem je sused
  • Broj primljenih update poruka
  • Broj poslatih update poruka po susedu
  • Keepalive vreme
  • Elapsed time od kako je dobijen poslednji update od svih suseda

Poruke treba da se ažuriraju sa periodom od 10s i u svakom trenutku aplikacija treba da prikaže ažurne vrednosti ovih informacija.

Verifikacija rešenja

U mreži će se dodavati nove mreže koje se oglašavaju putem BGP-a što treba da bude vidljivo u promenjenom broju update poruka i vremenu od poslednje poruke, takođe, mogu da se promene stanja BGP sesija kroz ukidanje BGP-a na susednom ruteru što takođe treba da se vidi prikazano u aplikaciji.

Saveti

  • U projektu je potrebno učitati BGP4-MIB koristeći SnmpSession.loadMib. Fajl mora da vam se nalazi u korenu projekta, na istom nivou kao i src direktorijum, ukoliko metodi zadate samo ime fajla a ne celu putanju.
  • MIB tabela od interesa je bgpPeerTable.
  • Primer varijante.
  • Primer od interesa vam je snmpgettable.java.

Varijanta 5

Potrebno je očitati sadržaj BGP tabele i prikazati skup svih BGP ruta na jednom od rutera, kao i sve njihove njihove atribute. Atributi koji treba da se prikažu za svaku rutu su:

  • Origin
  • AS-Path lista
  • Next Hop
  • MED
  • Local PreferenceAtomic aggregate
  • Aggregator AS
  • Aggregator Address
  • Da li je ruta najbolja (najbolju rutu prikazati drugom bojom)

Rute i njihove atribute prikazati u tabelarnom obliku. Informacije o rutama treba da se očitavaju sa periodom od 10s, tako da aplikacija u svakom trenutku prikazuje poslednju očitanu vrednost.

Verifikacija rešenja

U topologiji će se dodavati nove mreže ili povlačiti postojeće koje se oglašavaju putem BGP-a što treba da bude vidljivo tako što će se pojaviti nove rute ili će se gubiti stare. Takođe, menjaće se topologija mreže ili neki atributi ruta kako bi se promenili atributi ruta i neke druge mreže proglasile za najbolje, a sve ovo treba da bude korektno prikazano u aplikaciji.

Saveti

  • U projektu je potrebno učitati BGP4-MIB koristeći SnmpSession.loadMib. Fajl mora da vam se nalazi u korenu projekta, na istom nivou kao i src direktorijum, ukoliko metodi zadate samo ime fajla a ne celu putanju.
  • MIB tabela od interesa je bgp4PathAttrTable.
  • Atribut bgp4PathAttrASPathSegment može da ima neki čudan format u ispisanoj tabeli, zbog toga što je to binarni podatak.
    • Prvi bajt određuje tip:
      • 1 znači AS_SET, odnosno da sledi neuređeni skup autonomnih sistema
      • 2 znači AS_SEQUENCE, odnosno da sledi uređeni skup autonomnih sistema
    • Drugi bajt određuje broj autonomnih sistema koji slede.
    • Posle dužine slede parovi od po dva bajta, gde je prvi bajt viši a drugi niži, koji predstavljaju broj AS-a
  • Primer varijante.
  • Primer od interesa vam je snmpgettable.java.

Varijanta 6

Na ruterima R1, R2 i R3 podesiti SNMP trap-ove i to za ove promenljive iz BGP MIB-a:

  • .iso.org.dod.internet.mgmt.mib2.bgp.bgpNotification.bgpEstablishedNotification
  • .iso.org.dod.internet.mgmt.mib2.bgp.bgpNotification.bgpBackwardTransNotification

Napraviti aplikaciju koja kontinuirano osluškuje ove trap-ove i odmah po dobijanju izbacuje na ekran alarm da je došlo do jednog od ova dva događaja, na kom ruteru je došlo do ovog događaja i tačno vreme događaja. Način konfigurisanja trapova na ruterima je opisan na ovoj stranici.

Verifikacija rešenja

Isprobaće se promene susedskih odnosa i pojava trapa na ekranu.

Saveti

  • Na modifikacijama vam može doći isto kao i svima ostalima, iako niste radili sa SnmpSession već sa SnmpTrapdSession! Zbog ovoga probajte da uradite još jednu varijantu koja nije vaša kako biste videli kako se radi sa SnmpSession.
  • Nemoguće je uhvatiti pomenute trap-ove jer ruteri ne šalju uopšte te trap-ove već njihove zastarele verzije, .iso.org.dod.internet.mgmt.mib2.bgp.bgpTraps.bgpEstablished i .iso.org.dod.internet.mgmt.mib2.bgp.bgpTraps.bgpBackwardTransition. Profesor je rekao da ovo nije problem.
  • SNMP trap-ove možete da omogućite koristeći:
    • snmp-server enable traps bgp
    • snmp-server host 192.168.122.1 traps version 2c si2019 udp-port 1620 bgp
  • U MIB Browser postoji Trap Listener opcija koju možete da koristite da biste proverili da li vam ruteri šalju trap-ove.
  • Metoda SnmpTrapdSession#waitForTrap blokira trenutnu nit, tako da ćete morati da SnmpTrapdSession pokrenete u novoj niti.
  • Primer varijante.
  • Primer od interesa vam je snmptrapd.java.

Varijanta 7

Na ruteru R3 konfigurisati da sve rute koje dolaze od R1 dobiju Local Preference (LP) vrednost 100, a da sve rute koje dolaze od R2 da dobijaju LP vrednost 150. Na R3 konfigurisati da kada za neku rutu primi rutu uz koju je dodata community vrednost 3:50, da se za tu rutu postavlja vrednost LP na 50, a da kada primi rutu sa Community vrednošću 3:200 da se za tu rutu postavlja LP na 200. Na ruteru R1 konfigurisati da se uz rutu 192.168.10.0/24 kada se oglašava ka R3 pridružuje Community vrednost 3:200. Način konfigurisanje Community vrednosti je dat ovde.

Napraviti aplikaciju koja prati rad SNMP protokola na svim ruterima. Koristiti SNMP deo MIB-2. Aplikacija treba da svakih 10s prikuplja sledeće statističke parametre o radu SNMP na ruteru: Broj dolaznih SNMP paketa, broj odlaznih SNMP paketa, broj get zahteva, broj set zahteva, broj generisanih trap-ova, broj neispravnih community vrednosti u zahtevima.

Verifikacija rešenja

Uključivanje trap-ova, generisanje zahteva sa pogrešnim community vrednostima, kontinuirano praćenje SNMP statistike.

Saveti

  • Nije potrebno da konfigurišete sve parametre pomenute iznad pre početka izrade projekta, mogu i prilikom faze testiranja.
  • MIB OID-ovi od interesa su pod .1.3.6.1.2.1.11
  • Ukoliko SnmpPoller prosledite atribute iz MIB stabla po imenu može se desiti da dobijete pogrešne atribute, pa probajte da mu prosledite atribute po OID umesto toga.
  • Primer varijante.
  • Primer od interesa vam je snmppoll.java.

Varijanta 8

Napraviti aplikaciju koja kontinuirano prati rad svih rutera i prati zauzeće njihovih procesora i memorije. U okviru grafičkog interfejsa aplikacije postaviti da je moguće da se na početku rada aplikacije postavi vrednost za period sa kojim će aplikacija očitavati potrebne promenljive (u sekundama). Prikupljene podatke prezentovati u obliku grafika koji prikazuje promenu očitanog parametra u vremenu. Sa svakom očitanom novom vrednošću grafik se dopunjava. Potrebno je pratiti sledeće parametre: zauzeće procesora tokom prethodnih 5s, 1min i 5 min, količina zauzete i slobodne memorije u svim memorijskim poolovima koje poseduje ruter i oznake (imena tih pool-ova). Za ovo koristiti Cisco-ve SNMP MIBove: CISCO-MEMORY-POOL, CISCO-PROCESS-MIB.

Verifikacija rešenja

Uključivanje novih funkcionalnosti na ruteru koje treba da povećaju opterećenje procesora (reset BGP sesije, dodavanje novih ruta i sl.).

Varijanta 9

Napraviti aplikaciju koja kontinuirano prati sve TCP sesije koje su aktivne na ruteru i otvorene UDP portove. Sesije i portove treba proveravati svakih 5 sekundi i uvek prikazivati u formi tabele koja će se ažurirati samo one koje su aktivne (one koje su između dva upita nestale treba izbrisati, a nove dodavati). Za svaku sesiju je potrebno prikazati lokalnu i udaljenu IP adresu, lokalni i udaljeni port, a za otvorene UDP portove adrese i brojeve portova. Koristiti UDP i TCP delove SNMP MIB-2 stabla. Na ruteru R1 konfigurisati veb server. Iz browsera na virtuelnoj mašini se povezivati na ruter i tako verifikovati rad aplikacije (stvoriće se nova TCP sesija). Način konfiguracije veb server na ruteru je dat ovde.

Verifikacija rešenja

Kreiranje novih sesija i verifikacija njihovog prikazivanja.

Saveti

  • HTTP server na ruteru palite pomoću komandi:
    • enable password nesto
    • ip http authentication enable
    • ip http server
    • a zatim možete da mu pristupite preko http://192.168.10.1, sa korisničkim imenom i lozinkom nesto.
  • MIB tabele od interesa su tcpConnTable i udpTable.
  • Primer varijante.
  • Primer od interesa vam je snmpgettable.java.