4.196 pregleda

Switching i routing: jučer, danas, sutra (prvi dio)

0

U nizu članka autor Hrvoje Horvat upoznat će nas s osnovama i načinom rada switcheva (preklopnika) i routera (usmjernika), te će podijeliti brojne korisne savjete iz praktičnog iskustva.

 

Tijekom prošle godine održali smo predavanje  na temu “Kako odabrati ”pravi” mrežni uređaj i u čemu su razlike”, a ovom prilikom ću se nadovezati na to predavanje te pokušati objasniti problematiku s kojom se susreću proizvođači mrežne opreme a koja se prenosi do samih korisnika (vas). Dalje u tekstu većim djelom ćemo govoriti o preklopnicima (switchingu) a manjim djelom o usmjerivačima (routing-u)

 

U čemu je problem?

Sjetimo se da su i preklopnici (switchevi) i usmjerivači (routeri) uređaji koji se sastoje od sličnih dijelova kao i svako računalo. Dakle imaju matičnu ploču, CPU, RAM, neku vrstu diska (uglavnom flash memoriju), operacijski sustav, upravljačke programe (drivere) i određeni softver. Doduše njihov operacijski sustav je malo drugačiji od onoga na koji smo naviknuli no ipak ne toliko koliko se čini. Trebamo biti svjesni činjenice da i obični “glupi” switch  u pozadini odrađuje nekoliko funkcionalnosti ili “vrti“ nekoliko mrežnih protokola od kojih neke i primjenjuje na svaki paket na mreži. Na gigabitnim mrežama to znači milijune paketa u sekundi. Zapravo si možemo i trebamo postaviti sljedeća pitanja koja su si postavili i proizvođači kod razvoja mrežnih uređaja.

Što  je važno:

  • Odabir operacijskog sustava uređaja – koji je sigurniji, stabilniji i/ili brži, koji ima bolju podršku, što je sa upravljačkim programima za sav hardver – za koji OS proizvođači hardvera češće izdaje optimizacije i ispravke grešaka, …
  • Dobar odabir programskog jezika u kojemu će se razvijati novi uređaj te njegove mogućnosti,
  • Kako razvijati softver (i tko ga razvija),
  • Testiranje – je li uređaj stvarno (i kako) testiran,
  • Optimizacija – koliko znanja treba imati da bi se radile optimizacije i da li su moguće (i u kojoj mjeri),
  • Podrška – što je s podrškom, koliko je ažurna,
  • Dokumentacija samog softvera i konačnog programskog rješenja (uređaja), kolika je zajednica ljudi koja koristi uređaje određenog proizvođača, da li postoje predavanja, knjige, i drugi materijali na internetu i koliko su dobro napisani i sl.

 

Vratimo se switchevimaswitch je zapravo malo računalo kojemu je svaki port zapravo jedna mrežna kartica. Postoje različite mrežne kartice.

Od običnih “desktop” (poput ove na slici):

 

… do posebnih kategorija mrežnih kartica koje možemo nazvati “serverskim” poput ove na slici dolje:

 

Osim toga, ni “serverske” kartice nisu sve iste, kao niti njihovi upravljački programi. Neke od njih možda uredno rade, ali imaju dosta loše upravljačke programe. Neke odrađuju samo standardne stvari, dok neke od jačih podržavaju cijeli niz dodatnih funkcionalnosti kojima rasterećuju centralni procesor (CPU). Neke od jačih “serverskih” danas standardno same odrađuju sljedeće funkcionalnosti:

  • TCP Offload (Checksum/Large send), UDP
  • 802.1Q
  • 802.1p (QoS)
  • 802.3ad, Fast Ether Channel i Gigabit EC
  • 802.3* (z, ab, u, x) – flow controll
  • Kriptiranje/Dekriptiranje
  • I/O virtualizaciju (u kombinaciji sa SR-IOV), …

Razlike mogu biti u cijeni, brzini, podržanim funkcionalnostima, upravljačkim programima (driverima, njihovoj stabilnosti i brzini; loš driver = loša mreža), podršci, dokumentaciji, …

Sada nam postaje jasno kako nije nevažno koju mrežnu karticu treba odabrati ako želimo siguran, pouzdan i brz rad računala ili poslužitelja na mreži. Razlike u praksi znaju biti drastične. Počevši od razlika u cijeni od nekoliko desetaka ili stotina kuna (a nekada i tisuća KN), preko (ne)nestabilnosti, pa sve do brzine rada. Vrlo je čet slučaj da korisnici kupe sve mrežne komponente, kao i pasivni dio mreže (kablovi, utičnice, patch paneli) koje prema standardima podržavaju brzinu deklariranu poput “1Gbps”, a u praksi je brzina nešto malo veća od “100Mbps”. Pitam se zbog čega???

 

 

OS i softver (firmware) switcha

Softver, kao i sam operacijski sustav, te svi upravljački programi (za hardverske komponente switcha) odnosno njegov odabir i sam razvoj drastično utičnu na pouzdanost, izdržljivost i stabilnost jednog takvog uređaja. Zapravo ovaj utjecaj je drastično veći nego li je to slučaj kod našeg osobnog računala ili nekog poslužitelja.

Ovdje se radi o uređajima koji moraju raditi besprijekorno, bez obzira koliko ih puta palili ili gasili (zbog nestanaka struje, uslijed nadogradnje ili sl.), nevezano koliko milijuna mrežnih paketa u sekundi morali obraditi, te koliko se zapravo desetaka mrežnih protokola u svim mogućim ili nemogućim kombinacijama izvodi na vašem switchu. Isto tako, nije svejedno da li je u određenoj konfiguraciji switcha konfiguriran protokol A, B i C ili neki četvrti. Ili su u upotrebi samo protokoli A, C, i D.

 

 

Testiranje, testiranje i testiranje i još malo testiranja i na kraju još pokoje testiranje

Samo testiranje uređaja – koje bi trebala odraditi tvrtka koja ga je i proizvela – uopće nije trivijalno, te podiže cijenu finalnog proizvoda (ako je za sve faze razvoja bilo potrebno 1000 vremenskih jedinica, sigurno je da će faza testiranja zahtijevati minimalno još toliko – ovo je moj osobni stav).

Temeljito testiranje se svodi na ispitivanje svih mogućih kombinacija protokola ili funkcionalnosti koje određeni uređaj podržava i to u kombinacijama svih mogućih i nemogućih mrežnih protokola koji moraju biti u upotrebi i koji moraju prolaziti kroz mrežni uređaj koji se testira. To znači da, primjerice, switch podržava ARP protokol (koji i mora podržavati a koji je samo jedan u nizu protokola) testiranje mora uključiti ponašanje u radu u kojemu su na točno određenoj hardverskoj verziji switcha na točno određenoj verziji softvera (operacijski sustav, upravljački programi i sve ostalo) spojena računala koja generiraju promet (i to u varijantama: na svim portovima, samo na nekim portovima, neka se moraju uključivati i isključivati, …). Dakle, riječ je o vrlo velikom broji mogućih scenarija koje treba detaljno ispitati.

Promet koji se generira mora biti točno definiran, te je potrebno testirati razne mrežne protokole u raznim kombinacijama. Prema TCP/IP setu protokola definirano je 65536 mogućih mrežnih protokola od kojih je važno testirati njih maksimalno tisuću (1.000). U praksi je pitanje je li uopće testirano najviše nekoliko desetaka protokola – a pitanje je da li i toliko – kod “entry level” proizvođača (u pravilu najjeftiniji uređaji) koje neću imenovati.

Osim toga, budući da se testira ARP protokol, potrebno je testirati sve scenarije ponašanja ARP protokola – i one dozvoljene (definirane standardima), kao i one nedozvoljene koji bi mogli utjecati na sigurnost i/ili stabilnost ili pojedinog porta na switchu ili cijelog uređaja. Naime, nije dovoljno testirati samo standardne ARP pakete već i one za koje je potrebno “ručno” kreirati ARP pakete koji namjerno sadrže vrijednosti ili parametre koje ne bi smjeli sadržavati. Zaključno, samo za testiranje ARP protokola potrebne su stotine mogućih scenarija.

Sljedeći test bi bilo uključivanje drugog protokola ili funkcionalnosti – primjerice logiranje poruka na vanjski syslog poslužitelj. Zvuči banalno, ali sada je potrebno ponoviti sve prethodne scenarije testiranja uz dodatne scenarije specifične za syslog protokol. Pri tome se smijemo zaboraviti na dozvoljene i nedozvoljene opcije, parametre ili oblike mrežnih paketa za protokole koje testiramo.

Ako uključimo još jednu funkcionalnost – primjerice često korišten Spanning Tree protokol, sada ponovno moramo sve testirati s dodatnim stvarima vezanim za Spanning Tree, ali i u varijantama sa ARP protokolom i sa ili bez syslog funkcionalnosti. Ovime smo zasigurno došli do tisuća mogućih scenarija.

Sjetimo se da i “najslabiji” switchevi podržavaju desetak protokola ili funkcionalnosti kao i činjenice da samo za isti hardverski model uređaja proizvođači imaju nekoliko verzija operacijskog sustava (nazovimo ga “firmware”). Potrebno je sve testirati pojedinačno, i to za sve modele uređaja koji se prodaju. Mislim da smo sada možda došli i do milijuna scenarija koje je potrebno testirati. Možete se pitati je li sve to nužno potrebno? Moj odgovor je: “DA”.

U praksi sam nebrojeno puta susreo da samo određene kombinacije uključenih funkcionalnosti i mrežnih protokola nekada uzrokuju zasebne probleme, a u nekim kombinacijama sve radi. Ili u jednoj verziji firmwarea radi nešto što u drugoj (čak i novijoj) više ne radi ili uzrokuje probleme, na čije otklanjanje nekada možete potrošiti dane i dane, da bi na kraju shvatili da nije problem u ničemu drugom nego u switchu/routeru odnosno problematičnom firmwareu (OS-u).

 

Formula za uspjeh:

Potrošeni dani x sati x broj ljudi = bolje/jeftinije kupiti *provjereni* uređaj

* Kada kažem provjereni, mislim na konkretnog proizvođača, točan model i verziju softvera (firmware/OS) provjeren u okruženju u kojemu se koriste svi mrežni protokoli i postavke koje i vi želite koristiti.

 

U konačnici, previše je mogućih kombinacija koje ne bi htjeli sami testirati na svojoj mreži za koju želite da radi kako treba, pa je uglavnom jeftinije uložiti nešto malo više u opremu pouzdanijih proizvođača, i to po mogućnosti točnog modela i verzije firmwarea za koji znate da radi kako treba (sa svim onim funkcionalnostima i protokolima koji vam stvarno trebaju). Ne treba se 100% pouzdati niti u najveće brand name proizvođače – i njima se događaju greške, no ipak su mnogo pouzdaniji od nekih koje ću nazvati “bezimeni“.

 

 

Detaljnije o switchevima

Za razliku od računala, switchevi nemaju “klasične” mrežne kartice nego tzv. “Switching chipove” koji zapravo na jednom chipu imaju nekoliko integriranih mrežnih kartica od 4, 8,12, 24, 48 ili više portova. Ovdje je još izaženija razlika u odnosu na “obične” mrežne kartica i to za iste funkcije. Naime, postoji čitv niz switching chipova od raznih proizvođača s ogromnim razlikama:

  • različitih su performansi,
  • različitih funkcionalnosti koje podržavaju,
  • njihovi upravljački programi se razvijaju samo  za određeni OS ili za više njih (pitanje je  i stabilnosti i dr.).

Što se samih switcheva ili routera tiče (kao gotovih proizvoda) neki proizvođači koriste Linux dok drugi određene specijalizirane varijante UNIX operacijskih sustava. I odabir operacijskog sustava, kao i pripadajućih upravljačkih programa, utječe na pouzdanost, sigurnost i performanse konačnog rješenja. Primjerice, “Cisco” koristi BSD UNIX za Cisco IOS* , dok “Juniper” koristi FreeBSD UNIX za njihov JunOS* (*IOS i JunOS su operacijski sustavi proizvođača Cisco i Juniper, namijenjeni switchevima i routerima).

Osim toga, switchevi imaju i CPU i RAM memoriju poput “običnih” računala, koji također utječu na performanse. Stoga razlikujemo:

  1. Standardne “Layer 2” switcheve koji rade na OSI sloju 2, te prema tome odluku o preklapanju (za svaki mrežni paket) donose na osnovi MAC adresa,
  2. Tzv. “Multilayer“ switcheve, odnosno switcheve koji odluke o preklapanju svakog paketa donose na osnovi analize OSI slojeva 2, 3 i 4.

 

 

Layer 2 switching – klasična upotreba switcheva (preklopnika).

U današnjim mrežama za međusobno umrežavanja/spajanje računala, poslužitelja i ostale mrežne opreme koriste se switchevi koji standardno rade na OSII sloju 2 (Layer 2) – barataju sa MAC adresama. Spajanjem bilo kojeg računala ili uređaja na neki port na switchu, sam switch prvo mora saznati njegovu MAC adresu te ju spremiti u svoju internu tablicu koja sadrži par:

Source MAC adresa <-> port (interface) na switchu

To je i sva logika koja je potrebna za uspješno preklapanje. Naime kada spojimo računala A i B na switch, primjerice:

Računalo A (MAC 00:01:02:A1:11:11) <-> port (interface) 1

Računalo B (MAC 00:01:02:B2:22:22) <-> port (interface) 2

switch nakon nekoliko trenutaka izgradi gore navedenu tablicu koju primjenjuje na svaki paket koji mu dođe.

 

 

Layer 3 (Routing)

U slučaju routinga (usmjeravanja) koji se događa na OSI sloju 3 (IP adrese) uređaji odluku za usmjeravanje paketa donose na osnovu IP adresa – zapravo para:

IP adresa i njena pripadajuća maska mreže (netmask).

Tablica na osnovu koje se odrađuje usmjeravanje (praktično isti postupak kao i preklapanje [switching] ali na OSI sloju 3) se zove “Routing tablica” koju uređaj također mora imati. Dakle, slična priča ali na drugom OSI sloju, i još malo kompleksnija zbog routing protokola i mogućnosti dinamičkih promjena routing tablica pomoću routing protokola (RIP, OSPF, BGP, …).

Uređaji koji se bave usmjeravanjem u načelu zovemo usmjerivači (routeri), ali postoje i preklopnici (switchevi) koji mogu odrađivati i taj dio posla. Ovakve switcheve nazivamo “Multilayer switchevi”, tj. switchevi koji rade na više OSI slojeva (2, 3 i 4). Ovakvi switchevi vrlo su važni u današnjim mrežama jer nam daju mogućnost da uredno segmentiramo lokalnu mrežu a da to ne unese velika usporavanja koja bi uveli klasični routeri.

 

 

Prisjetimo se TCP/IP komunikacije

Svaki paket mora imati (uz ostale podatke):

  1. Source i Destination MAC adrese, te
  2. Source i Destination IP adrese.

Budući da se radi o Layer 2 switchu, on gleda svaki paket i to samo dio sa Source MAC adresom i Destination MAC adresom. Pojednostavljeno to radi ovako (računalo A šalje paket na računalo B):

  1. Switch pogleda Source MAC (to je MAC od računala A) i vidi da ga već ima u tablici (ako nema, zapamti ga sada na portu na koji je spojen), te pogleda i Destination MAC adresu (to je MAC od Računala B).
  2. Switch provjerava svoju tablicu i gleda da li ima MAC adresu od računala B, ako ima gleda na kojem je portu (interfaceu) i paket šalje na taj port (interface).
  3. Ako nema MAC adresu od računala B, pokuša ju saznati slanjem pripadajuće ARP poruke te ju (MAC adresu) zapamti i izgradi si novu tablicu. Ovkva MAC tablica na switchu se naziva i CAM tablica (Content Addressable Memory) tablica. Sada kada switch ima u CAM tablici i Source i Destination MAC adrese od ovog (i svakog) paketa od računala A, tada on svaki paket pojedinačno paket prebaci/preklopi na interface na kojem se nalazi spojeno računalo B. Ovaj se korak ponavlja za svaki pojedini paket na mreži.

 

 

Autor: Hrvoje Horvat

Članak preuzet, uređen i objavljen uz izričito dopuštenje autora.

Izvor: Open Source Osijek

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
Switching i routing: jučer, danas, sutra (prvi dio), 5.0 out of 5 based on 1 rating

Povezani članci:

Network Traffic Monitor
SOK organizira Malu školu...
NitroShare i slanje malih...
Switching i routing: juče...
Switching i routing: juče...

Ostavi komentar

© 2016 Linux Za Sve. | Impressum | Sadržaj je licenciran pod CC-SA-3.0 ako nije drugačije naznačeno.
Proudly designed by Theme Junkie.