BrzNet - Super-brzi optički Internet do 1000 Mbps dostupan u celoj Srbiji!

Kako ruteri balansiraju gigabite saobraćaja: ECMP rutiranje

Kako ruteri balansiraju gigabite saobraćaja: ECMP rutiranje

Kada mrežni operateri i data centri skaliraju kapacitete svojih core mreža, retko se oslanjaju na pojedinačne linkove ogromnog kapaciteta. Umesto toga, standardna praksa je povezivanje rutera preko više paralelnih fizičkih linkova. Kada protokol za rutiranje, poput BGP ili OSPF, nauči više putanja do iste destinacije koje imaju identičnu metriku, te putanje se instaliraju u routing tabelu. Ovaj koncept poznat je kao Equal-Cost Multi-Path (ECMP) rutiranje.

Iako dodavanje više putanja zvuči kao jednostavno rešenje za povećanje propusne moći, proces distribucije saobraćaja preko tih linkova predstavlja inženjerski izazov. Ruter mora da donese odluku o tome na koji tačno link će proslediti svaki pojedinačni paket, a ta odluka ne sme degradirati performanse mreže.

Najočigledniji pristup balansiranju bio bi round-robin, odnosno slanje prvog paketa preko prvog linka, drugog preko drugog linka, i tako ukrug (per-packet load balancing). U praksi, ovaj pristup se u core mrežama nikada ne koristi zbog načina na koji funkcioniše TCP protokol.

Paralelni linkovi retko imaju identičnu latenciju. Čak i minimalne razlike u dužini optičkih kablova ili opterećenju interfejsa dovode do toga da paketi poslati preko različitih linkova na destinaciju stižu van originalnog redosleda. Pojava out-of-order paketa izaziva ozbiljne probleme na prijemnoj strani. Kada prijemni TCP stack detektuje da mu nedostaje paket, on generiše duplirane ACK poruke tražeći ponovno slanje. Pošiljalac ovo interpretira kao zagušenje u mreži, aktivira mehanizme za kontrolu zagušenja (Fast Retransmit), drastično smanjuje TCP window i obara brzinu prenosa. Rezultat je paradoksalan: umesto povećanja kapaciteta, mreža sa paralelnim linkovima pruža lošije performanse nego mreža sa samo jednim linkom.

Da bi se ovaj problem eliminisao, ruteri primenjuju per-flow load balancing. Cilj je obezbediti da se paketi distribuiraju preko svih dostupnih linkova, ali uz strog uslov da svi paketi koji pripadaju jednoj istoj TCP ili UDP sesiji uvek putuju istim linkom.

Ovo se postiže upotrebom hash algoritama. Kada paket stigne na interfejs, ruter analizira njegovo zaglavlje pre nego što donese odluku o prosleđivanju. Hardver rutera izdvaja ključne vrednosti iz IP i transportnog zaglavlja. Najčešće se koristi takozvani 5-tuple, koji obuhvata izvornu IP adresu, odredišnu IP adresu, protokol, izvorni port i odredišni port.

Ove vrednosti se propuštaju kroz hash funkciju koja generiše numerički izlaz. Dobijeni hash se zatim deli sa brojem dostupnih ECMP putanja, a ostatak pri deljenju (modulo operacija) određuje tačan izlazni interfejs.

Pošto su izvorne i odredišne adrese i portovi konstantni tokom trajanja jedne TCP sesije, hash algoritam će za svaki paket iz te sesije uvek izračunati istu vrednost. Ruter će usled toga svaki paket te sesije proslediti kroz potpuno isti fizički link. Na ovaj način je garantovano da paketi stižu redosledom kojim su i poslati, a TCP konekcija ostaje stabilna.

S obzirom na to da core mreže opslužuju stotine hiljada simultanih korisničkih konekcija, generisane hash vrednosti se ravnomerno raspoređuju širom celog opsega. Krajnji rezultat je statistički ravnomerno opterećenje svih paralelnih linkova, bez narušavanja integriteta pojedinačnih tokova podataka.

Jedina tehnička limitacija ovakvog pristupa ogleda se u takozvanim elephant tokovima. Ukoliko jedan korisnik generiše pojedinačnu TCP sesiju koja pokušava da prenese 10 Gbps saobraćaja, ECMP neće podeliti taj saobraćaj na dva linka od 5 Gbps. Celo opterećenje biće smešteno na onaj link koji je algoritam odredio. ECMP rutiranje balansira tokove, a ne čisti protok. Ipak, u okruženjima servis provajdera gde dominira masovni agregirani saobraćaj, uticaj pojedinačnih velikih tokova se amortizuje u ukupnom obimu mreže, čineći hash-bazirani ECMP standardnim i najefikasnijim rešenjem za tranzit velikih kapaciteta.


Nema komentara