2017 m. rugpjūčio 30 d.

BSD ir Linux OS našumo testavimas: užkardos atžvilgiu

Rašant savo baigiamąjį bakalauro darbą tarp kolegijos IT išteklių skirtų studentų reikmėms atradau sąžiningai neblogos kompiuterių tinklo geležies (žr. 1 lentelę) todėl pasibaigus baigiamąjį darbą nusprendžiau kiek ilgiau su ja pažaisti ir ištirti tai kas senokai jau nedavė ramybės: FreeBSD, OpenBSD ir Linux operacinių sistemų branduolių našumas persiunčiant ir filtruojant kompiuterių tinklo paketus. Tiksliau kuri iš šių plačiai naudojamų OS turi našesnį tinklo steką ir užkardos posistemę?

Tiesa dėl laiko stokos šis operacinių sistemų tinklo pralaidos našumo tyrimas gan paviršutiniškas, tačiau ateityje planuoju išsamesnę tiriamų OS tinklo steku analizę bei gilesnę ir įvairesnę paketų maršrutizavimo ir filtravimo testavimo metodika, paremta RFC 2544 rekomendacijomis ir ne tik.

1 lentelė. Testavimo aplinkos aparatinė įranga
2 vnt.
HP ProLiant DL165 G7
AMD Opteron™ Processor Model 6128 (2.0 GHz, 12MB Level 3 Cache, 8 cores, 80W)
AMD Chipset SR5670
2 x HP NC362i Integrated Dual Port Gigabit Server Adapter
4GB 1Rx4 PC3-10600R-09-10-C1-P1

Pažymėtina, jog testavimo aplinką sudarantys serveriai rinkoje pasirodė apie 2011 metus ir priklauso ekonomiškų modelių klasei. Jų skaičiavimų ir duomenų apdorojimo sparta nėra itin didelė. Tai reikia turėti mintyje, jog nesusidaryti klaidingos nuomonės apie nūdienos x86 architektūros platformos galimybes Ethernet kompiuterių tinklo mazge. Vis dėlto testuose testuojama ne geležis, o tinklo operacinių sistemų našumas.

Metodika


Tiriamos BSD ir Linux operacinės sistemos su dedikuota aparatine įranga įterpiamos tarp dviejų kompiuterių – serverio ir kliento. Testų metu iperf programinės įrangos pagalba tarp kliento ir serverio sukuriamas vienalaikis dvikryptis duomenų srautas – tiek klientas tiek serveris generuoja ir priima duomenis – nes ir realybėje duomenys perduodami į abi puses. Visas duomenų srautas kerta testuojamą objektą ir leidžia išmatuoti jo įtaką duomenų perdavimo našumui, palyginti gautus rezultatus su kitomis testuojamomis OS. Kompiuteriai per Gigabit Ethernet tinklo sąsajas tiesiogiai apjungti vytos poros kabeliais, taip sumažinant pašalinių veiksnių trikdžius testų rezultatams.

Testavimo modelio schema

Šis modelis iš pirmo žvilgsnio prašo trijų kompiuterių, bet iš teisų galima atlikti ir su dviem: virtualizuojant vieną kompiuterio sistemą arba tiesiog vykdyti kelias iperf instancijas (kliento ir serverio) vienoje OS. Kiek pasvarstęs minusus ir pliusus nusprendžiau virš vieno fizinio serverio naudoti Proxmox VE virtualizacijos sluoksnį ir susikurti dvi ištekliais izoliuotas ir atskiras virtualias mašinas – serverio ir kliento imitavimui – su dedikuotomis tinklo sąsajomis per IOMMU virtualizacijos palaikymą. Šiam sprendimui daugiausia įtakos turėjo Proxmox VE siūlomi patogūs įrankiai nuotolinei prieigai prie virtualiųjų mašinų: tyrimo eigai derinti ir vykdyti. HP serverių siūloma Lights-Out 100 funkcija pateikiama kaip JAVA appletas, kuris ne tik nebepalaikomas nūdienos naršyklėse dėl saugos, bet ir su senomis linkęs mėtyti klaidos pranešimus nei veikti kaip priklauso.

Viena vertus, virtualizacijos sluoksnis su dviem virtualiomis mašinomis neturi kritinės reikšmės testų rezultatams, kadangi iperf serverio ir kliento programos neapkrauna sistemos maksimaliai – priklausomai nuo testo, bendra virtualizuotos kompiuterio sistemos apkrova svyravo nuo 30 iki 50 proc. Antra vertus, daugelį kartų kartoti testai sumažina rezultatų paklaidą.

Visi testai atlikti su keliais Ethernet tinklo duomenų perdavimo vienetais – kanaliniame lygmenyje vadinamais kadrais {frames} – didžiausiu ir mažiausiu, bei vidutinio dydžio kadrais: 64, 512 ir 1518 baitais. Kaip jau minėta, dvikryptis duomenų srautas generuojamas su iperf tinklo testavimo programine įranga. Pažymėtina, jog visi testai atlikti tik su UDP paketų srautu, kadangi iperf įrankis tik su UDP duomenų srautu leidžia sumažinti generuojamų kadrų dydį iki 64 baitų.

Straipsnyje naudojamos dvi kompiuterių tinklo duomenų perdavimo vienetų sąvokos – kadras {frame} ir paketas {packet} – iš pirmo žvilgsnio naudojamos pakaitomis, ir tam tikrais atvejais gali būti tapatinamos jei siekiama supaprastinti koncepcija, tačiau techniškai šių sąvokų apibrėžimas ir taikymo sritys skirtingos.

Paketais norima pabrėžti, jog kalba eina apie duomenų perdavimo vienetus tinklo lygmenyje, tuo tarpu kadro sąvoka priklauso kanaliniam lygmeniui (žr. OSI modelį). Paketus galima prilyginti laiškams, o kadrus vokui.

Vienas standartinis Ethernet tinklo kadras leidžia perduoti nefragmentuotą paketą iki 1500 baitų, toks paketas apgaubtas kadro antraštėmis kanaliniame lygmenyje užima iki 1518 baitų – maksimalus perdavimo vienetas {maximum transmission unit} (MTU).

Taigi, kadrų ir paketų skaičius sutampa jei IP paketo dydis nedidesnis už 1500 baitus; arba kadrų skaičius didesnis už paketų, jei pastarųjų dydis didesnis už 1500 baitus. Šiame tyrime siekta neviršyti Ethernet standarto MTU, todėl kadrų ir paketų skaičius testuose sutampa ir esminės klaidos nebus laikant kadro ir paketo sąvokas tapačiomis.

Paketai šiame tyrime akcentuojami, nes testuojamas operacinės sistemos našumas tinklo lygmenyje (IP/UDP), o kadro sąvoka norint pabrėžti tinklu perduodamų vienetų dydį ir jų skaičių.

Retas tinklo mazgas tik maršrutizuoja paketus, beveik visada jis atlieka bent minimalų duomenų srauto filtravimą ar visavertį užkardos vaidmenį. Todėl darbe bandoma ištirti ne tik kaip našiai OS persiunčia paketus su turima x86 kompiuterių architektūros aparatine įranga, bet ir kaip paketų apdorojimo spartą paveikia jų filtravimas. Taigi, šiame darbe tiriamos OS analizuojamos trimis skirtingais darbo režimais, kai:
  • veikia tik maršrutizatoriaus režimu {forwarding} (tik persiunčia paketus, filtravimas išjungtas)
  • dirba įsimenamuoju tinklo užkardos režimu {stateful firewall} + 25 vartotojo apibrėžtos taisyklės;
  • veikia neįsimenamuoju užkardos režimu {stateless firewall} + 25 vartotojo apibrėžtos taisyklės.

Tinklo užkardos testuose siekiama imituoti įprastą vartotojo sukonfigūruotą užkardos sistemą su 25 paketų filtravimo taisyklėmis, iš kurių tik viena ir paskutinė 25-oji taisyklė suteikia leidimą testo duomenų srautui kirsti testuojamą mazgą iki paskirties taško. Taip tiriama sistema priverčiama nuosekliai tikrinti visas 25 vartotojo apibrėžtas taisykles. Užkarda veikianti įsimenamuoju režimu geba įsiminti jau užmegztos tinklo sesijos paketų požymius, tad visą paketų filtravimo taisyklių sąrašą tikrina tik pirmąjį kartą (kai tinklo mazgą kerta paketas užmezgantis ryšį). Tuo tarpu užkarda veikianti neįsimenamuoju režimu besąlygiškai tikrina kiekvieną ją kertantį tinklo paketą per visas 25 taisykles (iki sąlygos praleisti). Toks taisyklių tikrinimas gali gerokai įtakoti tinklo mazgo našumą, jei šis nėra pritaikytas tinklo saugos užduotims vykdyti.

Norint geriau suprasti testuojamų OS tinklo našumo savybes skirtingos architektūros aparatinėje įrangoje, testai buvo atliekami net tik su daugiaprocesorine sistema, bet ir imituojant vienaprocesorinę kompiuterio sistemą. Rezultatai diagramose sužymėti abiem atvejais: naudojant daugelį procesoriaus branduolių – MP (multi-processor), ir naudojant tik vieną branduolį – SP (single-processor). Šie duomenys gali praversti renkantis testuojama OS vienaprocesoriniams {embedded} tinklo įrenginiams, taip pat, įvertinti tiriamų OS branduolių darbo efektyvumą su daugiaprocesorinėmis SMP kompiuterio sistemomis.

Vienam testuojamam kadro dydžiui atliekama 10 testo bandymų po 120 sekundžių. Siekiant pašalinti neproporcingus rezultatus, galimai iškreiptus dėl virtualizacijos sluoksnio ar kitų trikdžių, 3 iš 10 atmetami (su didžiausiais perdavimo nuostoliais), o iš likusių 7 testo bandymo rezultatų skaičiuojamas pralaidos, operatyviosios atminties sunaudojimo ir duomenų perdavimo nuostolių vidurkis. Vidurkis pralaidai ir atminties apkrovai užskaitomas kaip teisingas rezultatas reprezentuoti testuojamam kadro dydžiui, jei perduotų kadrų nuostolių vidurkis nėra didesnis už 0,15%, kita vertus bent pusė rezultatų šie nuostoliai nėra didesni už 0,1%.

Testai atlikti pusiau automatizuojant rezultatų paieška su bash skriptais, prieš tai rankiniu būdų surandant reikiamas pralaidos reikšmes kiekvienam testuojamam kadro dydžiui taikant vadinamąjį pusėjimo/dvigubinimo {halving/doubling} metodą – mažinant ir didinant pralaidos parametro reikšmę du kartus – kol prie tam tikros pralaidos duomenų peravimo nuostoliai nėra didesni už 0,15 proc.

Operacinių sistemų paruošimas testavimui


BSD ir Linux operacinės sistemos turi nemažai panašumų: gali bei naudoja dalį tos pačios programinės įrangos, abi priskiriamos Unix tipo OS ir plėtojamos nemokamo ir atviro kodo principais. Tačiau, skiriasi jų plėtojimo filosofija ir tikslai. Šiam tyrimui pasirinktos populiariausios ir pagrindinės BSD ir Linux sistemos.



Kaip matyti iš Unix tipo operacinių sistemų ryšių paveikslėlio, OpenBSD ir FreeBSD artimesnės tarpusavyje savo prigimtimi nei GNU/Linux OS atžvilgiu, be to BSD sistemos yra tiesioginis UNIX operacinės sistemos palikuonis; kita vertus beveik visos nūdien populiarios OS turi (bent filosofines) šaknis į UNIX OS (išimtis tik Microsoft Windows).

Nors dauguma šiuolaikinių operacinių sistemų sugeba automatiškai prisitaikyti darbui tinkle ir pakankamai sparčiai dirba Fast Ethernet ir Gigabit Ethernet kompiuterių tinkluose be rankinio konfigūravimo. Antra vertus, papildomai paruošti darbui tinkle reiktų serveriams skirtas Gigabit Ethernet tinklo kortas, ir būtina jei naudojamos itin aukštos pralaidos, pvz., 10 Gigabit Ethernet tinklo sąsajos. Šiame tyrime testuojamų OS tinklo stekai papildomai konfigūruoti siekiant pritaikyti jas maršrutizatoriaus darbui tinkle, kiek įmanoma suvienodinti tinklo steko parametrus, o kartu ir paspartinti jų našumą tinkle.

Žemiau pateiktas operacinių sistemų tinklo steko konfigūravimas nėra rekomendacija ar pilna derinimo instrukcija kaip reiktų paruošti maršrutizatorių porodukcinei infrastruktūrai, bet viso labo reikšmingi sistemos parametrai atliktam testavimui (sąmoningai praleistas TCP konfigūravimas, kurio parametrai UDP paketų srauto testų metu neturi reikšmės).

FreeBSD 10.3 konfigūracija


FreeBSD – populiariausia BSD operacinė sistema, plėtojama kaip bendro pobūdžio. Filosofinis tikslas būti techniškai šiuolaikiška ir itin našia operacine sistema. FreeBSD pasižymi nepriekaištinga dokumentacija ir turi geriausia aparatinės įrangos palaikymą tarp kitų BSD tipo sistemų. Skirtingai nei Linux, FreeBSD plėtojama ir platinama kaip pilnai išbaigta OS (ne tik jos branduolys), todėl yra nuoseklesnė. Dėl išskirtinio stabilumo, saugos ir spartos santykio FreeBSD dažniausiai naudojama kaip serverių platforma, nors dalis jos vartotojų naudoja ir kaip stalinio ar nešiojamojo kompiuterio OS.

Nepaslaptins, jog Netflix savo tinklo infrastruktūrą patiki FreeBSD sistemai. Žinant, jog 2015 metais Šiaurės Amerikoje Netflix duomenų srautas sudarė apie 35% viso Interneto duomenų srauto, galima teigti, jog FreeBSD maršrutizuoja bent 35% Interneto duomenų srauto Šiaurės Amerikoje :)

Nors FreeBSD turi savą užkardos sistemą (ipfw), dažnas tinklo administratorius pirmenybę teikia iš OpenBSD pasiskolintai užkardos posistemei – pf. Dėl to užkardos testuose FreeBSD naudojo pf modulį. Toliau pateikti visi testuotos FreeBSD 10.3 operacinės sistemos papildomai konfigūruoti tinklo steko parametrai.

/etc/rc.conf
pf_enable="YES"
gateway_enable="YES" 
ifconfig_igb1="inet 10.0.1.1/24 -tso –lro"
ifconfig_igb2="inet 10.0.2.1/24 -tso -lro"

/boot/loader.conf
hw.igb.enable_msix=1
hw.igb.enable_aim=1
net.link.ifqmaxlen= 50 -> 512
hw.igb.num_queues= 0 -> 2 
hw.igb.rxd= 1024 -> 4096
hw.igb.txd= 1024 -> 4096
hw.igb.max_interrupt_rate= 8000 -> 32000
hw.intr_storm_threshold= 1000 -> 300000

/etc/sysctl.conf
net.inet.ip.forwarding= 0 -> 1
net.inet.ip.fastforwarding= 0 -> 1
net.inet.ip.redirect= 1 -> 0
dev.igb.1.fc= 3 -> 0
dev.igb.2.fc= 3 -> 0
dev.igb.1.rx_processing_limit= 100 -> -1 # < žymus našumo padidėjimas!
dev.igb.2.rx_processing_limit= 100 -> -1 # < žymus našumo padidėjimas!
kern.ipc.maxsockbuf= 2097152 -> 4194304
net.bpf.bufsize= 4096 -> 2097152
net.bpf.maxbufsize= 524288 -> 4194304 
net.inet.raw.recvspace= 9216 -> 131072
net.inet.raw.maxdgram= 9216 -> 131072
net.inet.udp.recvspace= 42080 -> 131072
net.inet.udp.maxdgram= 9216 -> 131072

OpenBSD 6.1 konfigūracija


OpenBSD laikoma viena iš saugiausių ir patikimiausių operacinių sistemų ne tik tarp BSD, bet visuotinai, todėl dažnai naudojama kritinei infrastruktūrai palaikyti, pavyzdžiui, bankuose ar kitose kibernetinei saugai itin jautriose organizacijose. Šias saugos OpenBSD savybes nulemia OS plėtojimo filosofija, kurią galima išskirti į tris plėtojimo tikslus: programinė įranga turi būti kaip galima atviresnė; vengti prasto, mažiau saugaus ar perteklinio programinio kodo; minimalizuoti naudojamas programinės įrangos tarnybas OpenBSD sistemoje pagal nutylėjimą. Taip sumažinant vadinamąjį atakos plotą visoje sistemoje.

Plačiau apie BSD sistemas, jų skirtumus: Vikipedijoje

Testuose naudota OpenBSD 6.1 sistemos versija taip pat papildomai paruošta maršrutizatoriaus vaidmeniui tinkle, tik pf užkardos sistema čia įgimta ir naujesnė už tą kuri integruota į FreeBSD 10.3 sistemą. Toliau pateikti visi OpenBSD sistemoje konfigūruoti parametrai.

/etc/sysctl.conf
kern.bufcachepercent= 20 -> 50
net.inet.ip.ifq.maxlen= 256 -> 512
net.inet.ip.forwarding= 0 -> 1
net.inet.ip.redirect= 1 -> 0
net.inet.ip.maxqueue= 300 -> 4096
net.bpf.bufsize= 32768 -> 2097152
net.bpf.maxbufsize= 2097152 -> 4194304
net.inet.udp.recvspace= 41600 -> 131072
net.inet.udp.sendspace= 9216 -> 131072

Skirtingai nei Linux ir FreeBSD sistemose, OpenBSD naudojo em tinklo sąsajos tvarkykles, kurios nepalaiko TSO ir LRO funkcijų, todėl jų ir išjungti nereikėjo. Apskritai, OpenBSD siūlo vos keletą konfigūruojamų parametrų be programinio branduolio derinimo ir kompiliacijos procesų.

Ubuntu Server 17.04 konfigūracija


GNU/Linux populiariausia ir universaliausia Unix tipo operacinė sistema, naudojama nuo išmaniųjų laikrodžių, telefonų iki superkompiuterių, todėl gali pasigirti geriausiu aparatinės įrangos palaikymu tarp kitų Unix tipo sistemų. Testuose Linux sistemai atstovauti pasirinkta populiari Ubuntu Server distribucija, minimalistine programines įrangos paketų atžvilgiu.

Testuojama Ubuntu Server 17.04 versija taip pat buvo papildomai paruošta maršrutizatoriaus funkcijai atlikti. Toliau pateikti visi standartinio Ubuntu Server tinklo steko, bei kiti konfigūruoti parametrų pakeitimai.

/etc/rc.local
for i in enp4s0f1 enp3s0f0;
do 
ethtool –G $i tx 4096 rx 4096; (default 256)
ethtool –K $i tso off lro off gso off gro off; (default on, off, on, on)
ethtool –-pause $i autoneg off rx off tx off; (defult on,on)
done;

/etc/network/interfaces
post-up /sbin/ifconfig enp4s0f1 txqueuelen 4096; (default 1000)
post-up /sbin/ifconfig enp3s0f0 txqueuelen 4096; (default 1000)

/etc/sysctl.conf
net.ipv4.ip_forward= 0 -> 1
net.ipv4.conf.all.accept_redirects = 1 -> 0
net.ipv4.conf.all.send_redirects = 1 -> 0
net.ipv4.conf.all.accept_source_route = 0

net.core.rmem_max = 212992 -> 4194304
net.core.wmem_max = 212992 -> 4194304
net.core.rmem_default = 212992 -> 2097152
net.core.wmem_default = 212992 -> 2097152
net.ipv4.udp_rmem_min = 4096 -> 131072
net.ipv4.udp_wmem_min = 4096 -> 131072

Konfigūruojant Ubuntu Server operacinę sistemą dalis tinklo steko parametrų ne tik nedavė didesnio našumo persiunčiant tinklo paketus, bet ir neigiamai įtakojo rezultatus. Todėl Linux atveju atsisakyta dalies branduolio derinimo nustatymų (išbrauktieji). Iš tiesų, keli šaltiniai Internetuose rekomenduoja papildomai nekonfigūruoti sistemos branduolio tinklo darbo atminties buferių, jei tinklo pralaida neviršija 1Gbit, o delsa mažesnė nei 50 ms.

Tinklo pralaidos testų analizė


Tinklo pralaida {throughput} esminis tinklo našumo kiekybinis rodiklis, marketingo tikslais dažnai pateikiamas bitais per sekunde (bps), tartum leidžiantis iš pirmo žvilgsnio įvertinti tinklo įrenginio spartą. Tačiau, tinklo pralaida matuojama ne tik bitais per sekundę, bet ir kadrais/paketais per sekundę (kps/pps). Būtent pastarasis pralaidos matavimo vienetas padeda objektyviau įvertinti įrenginio spartą tinkle.

Be to, labai svarbu nurodyti su kuriuo tinklo kadro ilgiu įrenginio pralaida išmatuota, kadangi dažnas Ethernet tinklo įrenginys pasieks afišuojamą 1 Gbps duomenų perdavimo spartą siunčiant didelius paketus, bet retas pasieks bent ketvirtadalį nurodytos pralaidos su mažais tinklo paketais.

Todėl šiame tiriamajame straipsnyje pralaidos testų rezultatai bus pateikti trims skirtingiems kadro ilgiams juos matuojant kadrais per sekundę (kps) bei bitais per sekundę (bps). Pirmiausiai akcentuojant pralaidą kadrais per sekundę apačioje pateiktos stulpelinės diagramos: vertikalioje ašyje žymimas suminis vienalaikis abiejų krypčių kadrų skaičius per sekundę tūkstančiais; horizontalioje ašyje sužymėti skirtingų ilgių tinklo kadrai.

 Suminė vienalaikė dvikryptė tinklo pralaida matuojant kadrais per sekundę (tūkstančiais)

Kaip matyti iš testų rezultatų diagramų, jei bandytume testuojamas OS palyginti tarpusavyje su didžiausiais tinklo paketais, turėtume pripažinti visų jų lygybę, nors tai ne aparatinės įrangos spartos, o Gigabit Ethernet standarto lubos. Ilgiausių kadrų testai kone beverčiai šioje analizėje ir tarnauja tik kaip įrodymas, jog tinklo prietaiso spartos nereiktų vertinti su didžiausių paketų pralaida. Tai klaida būdinga tik kompiuterių tinklų neišmanėliams ir kadangi mes nesam neišmanėliai, toliau analizuojamos diagramos akcentuojant trumpiausių kadrų našumas, bei vidutinio ilgio kadrų jei šių testų rezultatai turi skirtingos informacijos.

OpenBSD


Vieša paslaptis, jog OpenBSD plėtotojų gretos daug retesnės už kitų dviejų testuojamų sistemų. Be jokių testų nemaža dalis išpranašautų OpenBSD daugiaprocesorinės sistemos branduoliui daug kuklesnius rezultatus lyginant su kitomis dviem testuojamomis OS. Tačiau turbūt niekas nesitikėtų, jog tos pačios operacinės sistemos MP branduolys gaus į kaulus nuo SP branduolio. Keista, bet visuose testuose OpenBSD operacinės sistemos SP branduolys demonstravo aiškų tinklo paketų apdorojimo spartos pranašumą prieš analogiška MP branduolį.

Remiantis top sisteminio įrankio duomenimis OpenBSD gebėjo paskirstyti tinklo paketų apdorojimą keliems procesoriaus branduoliams tik deja neigiamai efektyviai tą darė, tinklo pralaidos atžvilgiu. Kas dėl to kaltas sunku tiksliai pasakyti be gilesnės analizės. Galbūt naudota aparatinė įranga, o galbūt OpenBSD plėtojimo prioritetas sistemos saugumui prieš našumo gerinimą daugiaprocesorinėse SMP sistemose.

Pažymėtina, jog OpenBSD vienintelė iš testuojamų OS turėjo įdiegtą gryną vienaprocesorinės (SP) sistemos branduolį, kurį galima paleisti krovos metu su komanda: boot /bsd.sp. Tačiau tai nėra šių testų anomalios priežastis, MP branduolyje išjungiant procesoriaus branduolius (ukc> disable 55) ir imituojant SP branduolio veikimą, gauti panašūs rezultatai.

Apdorojant mažiausius kompiuterių tinklo paketus iš diagramų matyti akivaizdus Ubuntu Linux ir FreeBSD našumo pranašumas prieš OpenBSD operacinę sistemą. Visuose testuose ji buvo lėtesnė už kitas dvi testuotas sistemas naudojant tiek SP tiek MP branduolį. Išimtis tik keli vidutinio dydžio paketų testai tarp SP branduolių, kai OpenBSD paketų persiuntimo sparta gerokai pranoko Ubuntu Linux sistemą, bei demonstravo apylygį našumo rezultatą paketų filtravime įsimenamosios užkardos teste.

Viena iš galimų vangaus našumo priežasčių yra prastas aparatinės įrangos palaikymas OpenBSD operacinėje sistemoje, kadangi ji vienintelė testuose naudotoms tinklo plokštėms, su Intel 82576 valdiklio lustu, naudojo mažiau pažangias ir senesnes em tvarkykles vietoj naujesnių igb tinklo sąsajos tvarkyklių. Galima tarti, jog tai OpenBSD lėto plėtojimo kaltė, kadangi FreeBSD sistema dar nuo 2008 metų be em palaiko ir igb tinklo sąsajos tvarkykles.

Vis dėlto našumo skirtumas tarp kitų testuotų OS nėra toks didelis, jog būtų teisinga nuvertinti OpenBSD kaip maršrutizatorių ar užkardos sistemą. Kaip jau buvo minėta OpenBSD yra viena saugiausių tinklo OS, todėl nedidelis spartos nuostolis pateisintinas saugos atžvilgiu palaikant kritinę kompiuterijos infrastruktūrą.

FreeBSD


Nuo seno vyrauja įsitikinimas, jog FreeBSD operacinė sistema turi stabilesnį ir spartesnį tinklo steką nei Linux. Tai argumentuojama FreeBSD tinklo steko paprastumu ir efektyvumu, tuo tarpu Linux pasižymi funkcionalumu. Tačiau Linux progresas niekada nesustojo, atvirkščiai, tai OS turinti geriausią palaikymą iš aparatinės įrangos gamintojų bei didžiausią plėtotojų bendruomenę tarp kitų Unix tipo operacinių sistemų. Natūralu, jog Linux tinklo steko efektyvumas su laiku didėja ir savo sparta tinkle tikrai nesiskundžia.

Kaip matyti iš diagramų FreeBSD dar sugeba pasispardyti – užtikrintai lenkia Ubuntu Linux sistemą mažiausių paketų persiuntimo {forwarding} testuose, kai nenaudojama pf užkardos posistemė. Visgi retas tinklo mazgas tik persiunčia paketus, beveik visada naudojamas ir paketų filtravimas.

Testuose su įjungta užkardos posisteme situacija palankesnė Ubuntu Linux operacinei sistemai. Nors daugelyje užkardos testuose FreeBSD + pf gerokai atsilieka savo sparta nuo Linux + netfilter paketų filtravimo posistemes, SP branduolių varžytinėse FreeBSD sparčiau filtruoja vidutinio dydžio IP tinklo paketus.

Viena vertus, dėl itin spartaus paketų persiuntimo, bet lėto jų filtravimo galima kaltinti ne tik FreeBSD operacinę sistemą, bet ir iš OpenBSD pasiskolinta pf užkardos posistemę. Antra vertus, testuojamos FreeBSD 10.3 ir OpenBSD 6.1 sistemos naudoja skirtingas pf versijas.

FreeBSD 10.3, išleista 2016-tais metais, turi integruotą pf posistemę iš 2009-ųjų metų OpenBSD 4.5 versijos. Per septynerius metus ne tik naujosios pf versijos pasikeitė savo sintakse ir pasipildė naujomis funkcijomis, bet ir perkeltoji pf versija kardinaliai modifikuota darbui su FreeBSD tinklo steku, kuris iš esmės skiriasi nuo OpenBSD.

Versijų skirtumas atsirado OpenBSD užkardos sistemą modifikavus ir pritaikius našesniam darbui su FreeBSD daugiaprocesorinės sistemos branduoliu. Tačiau modifikacijos nėra perkeliamos atgal į OpenBSD sistemą ir FreeBSD priversta plaukti prieš pf plėtojimo srovę. Pasirodžius naujai pf versijai OpenBSD operacinėje sistemoje ir norint ją integruoti į FreeBSD reikia ją reikšmingai modifikuoti, o tai atima daug plėtotojų pastangų.

Todėl panašu, jog procesas vytis naujas pf versijas FreeBSD plėtotojų bendruomenėje apstojo 2012 m. Viliamasi, jog ateityje bus dažniau naudojama savoji paketų filtravimo posistemė – ipfw, dėl didesnio našumo ir paprastesnio visos FreeBSD operacinės sistemos plėtojimo.

Deja dėl laiko stokos nespėjau patikrinti kaip sparčiai savoji FreeBSD užkardos posistemė (ipfw) filtruoja tinklo paketus, o pf pasirinkta dėl didesnio jos populiarumo prieš savąją. Tikiuosi dievas man atleis. Aišku viena, pf paketų filtravimo posistemės implantacija FreeBSD operacinėje sistemoje veikia kur kas našiau nei gimtojoje OpenBSD.

Iš testų rezultatų matyti, jog daugelio branduolių procesorius leidžia pasiekti geresnį našumą su FreeBSD operacine sistema. Tačiau pralaidumo padidėjimas toli gražu nėra tiesiogiai proporcingas procesoriaus branduolių skaičiui. Daugiaprocesorinė FreeBSD sistema leidžia apdoroti vidutiniškai 12% didesnę duomenų srauto apkrovą su mažiausiais tinklo paketais, o tai nėra ženklus padidėjimas.

Pažymėtina, jog FreeBSD tik imitavo SP branduolį į operacinės sistemos paleidimo failą (/boot/loader.conf) įrašius „kern.smp.disabled=1“ direktyvą, kuri nurodo OS branduoliui imituoti vienaprocesorinės sistemos darbą. Mažai tikėtina, jog grynas FreeBSD operacinės sistemos SP branduolys parodytų ženkliai skirtingus rezultatus.

Konfigūruojant FreeBSD tinklo steką pastebėta, jog daugelio eilių naudojimas per tinklo sąsają – siekiant tinklo plokštės paketus paskirstyti daugeliui procesoriaus branduolių lygiagrečiam jų apdorojimui, tikintis padidinti tinklo plokštės pralaidą – su testuota aparatine įranga ne visada davė norimą rezultatą. Todėl konfigūruojant FreeBSD operacinę sistemą tinklo plokštės galimų eilių skaičius buvo sumažintas nuo 8 iki 2 (hw.igb.num_queues=2).

Remiantis „systat –v 1“ duomenimis, kai FreeBSD sistemoje naudojama daugiau nei viena eilė (procesoriaus branduolys) per tinklo sąsają, pvz., dvi eilės (du branduoliai) tinklo plokštei aptarnauti, bendras pertraukčių {interrupts} skaičius kompiuterio sistemoje taip pat padidėja du kartus. Deja tinklo pralaidumas tam tikrais atvejais (ieškant didžiausios pralaidos kurios nuostoliai nedidesni už 0,15 proc.) nepadidėja, o nukrenta kai sistema perkraunama pertraukčių užklausomis, dalinant paketų apdorojimą į skirtingas eiles priklausančias skirtingiems procesoriaus branduoliams.

Galima spėti, jog tam tikrais atvejais vidinis procesoriaus duomenų srautas perkrauna jo fizines architektūros galimybes, pasireiškia duomenų perdavimo kamštis stabdantis spartų paketų apdorojimą. Viena vertus, kuo daugiau laiko sugaištama komunikuojant ir koordinuojant darbus, tuo mažiau laiko lieka naudingam darbui atlikti. Kita vertus, jei taikant keletą eilių pralaida padidėja, teoriškai padidėja ir paketų apdorojimo delsa.

Iš tiesų, remiantis „systat –v 1“ ir „top –SHIPZs1“ stebėjimais, FreeBSD 10.3 algoritmas balansuojantis pertrauktis {interrupts} tarp daugelio procesoriaus branduolių nėra idealus. Neretai tinklo srauto paketai apdorojami dviejų eilių pagalba, nors pakaktų ir vienos eilės per tinklo plokštę, ir atvirkščiai, naudojama tik viena eilė kai akivaizdžiai reiktų dviejų našiam tinklo darbui užtikrinti.

Pastebimas ir balansavimo algoritmo neryžtingumas, kai vieno pralaidos testo metu kelis kart keičiasi taikomų eilių skaičius monotoniškam duomenų srautui apdoroti. Arba atliekant vieną testą FreeBSD gali puikiai susitvarkyti su tam tikros pralaidos duomenų srautu, bet pakartojus testą pasitaiko kitoks pertraukčių paskirstymas dėl ko paketų srauto apdorojimas sulėtėja.

Ubuntu Linux


OpenBSD pasilikus saugoti užnugario reali tinklo našumo kova vyksta tik tarp Ubuntu ir FreeBSD operacinių sistemų. Kurioje, bent jau žvelgiant iš testų rezultatų diagramose, Ubuntu Linux su netfilter užkardos posisteme atrodo solidžiau, ji abiejų tipo užkardų testuose su mažiausiais tinklo paketais ženkliai lenkia FreeBSD sistemą.

Taip pat geriau progresuoja Ubuntu našumas daugelio branduolių kompiuterio sistemoje – lyginant su vienaprocesorinę sistema tinklo pralaida su mažiausiais tinklo paketais padidėja vidutiniškai apie 32% naudojant daugiaprocesorinės Linux sistemos branduolį. Pastebėtina, jog testuose Ubuntu tik imituoja vienprocesorinę sistemą, per GRUB paleidimo tvarkyklę Linux branduoliui perdavus parametrą „nosmp“.

Iš teisų, vienaprocesorinių sistemų užkardos testuose Linux tik per plauką lenkia FreeBSD operacinę sistemą, tačiau daugiaprocesorinių sistemų užkardos testuose Linux tinklo steko palaikoma pralaida vidutiniškai 29% didesnė už FreeBSD, ir net 93% didesnė už OpenBSD operacinės sistemos.

Nors Ubuntu Linux daugiaprocesorinės sistemos testų rezultatai atrodo geriausiai tarp kitų testuotų operacinių sistemų, būtina pabrėžti, jog programinės įrangos dalis (Irqbalance) Ubuntu OS atsakinga už pertraukčių {interrupts} balansavimą tarp daugelio procesoriaus branduolių nesugebėjo paskirstyti tinklo sąsajų generuojamas pertrauktis keliems branduoliams. O jei dar tiksliau, visas pertrauktis (ne tik iš tinklo plokščių) bandė atlikti su vienu nuliniu procesoriaus branduoliu.

Sprendžiant iš Internetų ši problema nėra reta ir priklauso nuo naudojamos aparatinės įrangos. Tačiau, sprendžiant iš naudojamo AMD Opteron 6128 procesoriaus specifikacijos, techniškai su šiuo procesoriumi pertraukčių balansavimas įmanoma, nes jo branduoliai dalinasi bendra spartinančiąja atmintine {Level 3 cache}. Taigi, kiek pasikrapščius su Irqbalance tarnyba {daemon} galiausiai nusprendžiau visiškai ją išjungti ir rankiniu būdu sukonfigūruoti specialius rps_cpus ir cpu_affinity failus, atsakingus už pertraukčių paskirstymą Linux sistemoje.

Iš tiesų, net šis derinimo procesas nebuvo paprastas kaip gali pasirodyti iš pirmo žvilgsnio. Sukonfigūravus vieną variantą jis nebūtinai tiks po OS perkrovimo, tad tenka vėl ieškoti kelių branduolio ir tinklo sąsajos porų našiam pertraukčių apdorojimui. Galų gale net testavimo metu retkarčiais procesoriaus branduoliai tarsi apsikeisdavo vietomis ir tapdavo nebe efektyviausiu deriniu tinklo plokštėms aptarnauti, todėl teko kelis kartus stabdyti testavimą ir ieškoti kurie du procesoriaus branduoliai efektyviausiai lygiagrečiai darbuojasi su skirtingomis tinklo plokštėmis. Sunku pasakyti kas dėl to kaltas, bet aišku viena, su skriptais šių darbų nepavyks automatizuoti.

Apačioje pateikta bash skripto iškarpa padedanti rankiniu būdu sukonfigūruoti rps_cpus ir cpu_affinity failų parametrus:
for i in {0..7}; do echo 000002 > /sys/class/net/ enp3s0f0 /queues/rx-$i/rps_cpus; done
for i in {0..7}; do echo 000004 > /sys/class/net/ enp4s0f1 /queues/rx-$i/rps_cpus; done
for i in {54..62}; do echo 000002 > /proc/irq/$i(enp3s0f0 IRQ)/smp_affinity; done
for i in {44..52}; do echo 000004 > /proc/irq/$i(enp4s0f1 IRQ)/smp_affinity; done

Pastebėtina, jog Ubuntu kaip ir FreeBSD su testuota aparatine įranga naudoja igb tinklo plokštės tvarkykles, tik kiek skirtingas jų versijos: 5.4.0 ir 2.5.3 atitinkamai. Remiantis Intel.com duomenimis abi tvarkyklės palaiko tas pačias tinklo plokštes. Tikėtina Linux skirtos igb tvarkykles numeracija daug aukštesne dėl dažnesnio plėtotojų indelio ir atnaujinimo. Kita vertus, Linux tvarkyklės dėl man nežinomų priežasčių neleido sumažinti tinklo sąsajas aptarnaujančių eilių skaičių nuo 8 iki 2, bandant tinklo steko konfigūraciją sutapatinti su FreeBSD sistema.

Rezultatų apibendrinimas


Pabaigai tie patys visų testų rezultatai tik kitame pavidale, kai tinklo pralaida išreikšta megabitais per sekundę (Mbps). Nors testų rezultatus atvaizduojant bitais per sekundę niekas iš esmės nepasikeičia, šis matavimo vienetas suteikia papildomos informacijos vertinant tinklo prietaiso spartą. Visgi ne visi geba mintinai kadrų skaičių per sekundę versti į megabitus per sekundę. Tuo labiau, jog tai vienas dažniausių tinklo pralaidos matavimo vienetų, kartais suprantamas ir paprastų mirtingųjų tarpe.

 Suminė vienalaikė dvikryptė tinklo pralaida matuojant megabitais per sekundę

Nūdien, visuotinai paplitus daugiaprocesorinėms kompiuterio sistemoms, kuomet net išmanieji laikrodžiai turi bent po kelis branduolius centriniame procesoriuje, dauguma operacinių sistemų plėtotojų nebesivargina platinti kopijų be SMP palaikymo (gryną vienaprocesorinės sistemos branduolį). Deja operacinės sistemos vis dar susiduria su sunkumais efektyviai išnaudoti daugelį centrinio procesoriaus branduolių, net jei fizinė procesoriaus architektūra tam neprieštarauja.

Apibendrinant testuotų OS gebėjimą efektyviai progresuoti SMP kompiuterio sistemoje tinklo pralaidos atžvilgiu matoma kuriozinė situacija: OpenBSD MP branduolys veikė neigiamai efektyviai lyginant su SP; Ubuntu Linux nors ir fiksuotas vidutiniškai 32% pralaidos padidėjimas su MP branduoliu, tik rankiniu būdu pavyko priversti tinklo sąsajų pertrauktis {interrupts} priskirti skirtingiems branduoliams; tuo tarpu FreeBSD nors ir gebėjo daugiaprocesorinėje sistemoje savarankiškai paskirstyti tinklo pertrauktis skirtingiems centrinio procesoriaus branduoliams, bendras vidutinis pralaidos padidėjimas testuose tik 12 procentų.


Galų gale taip ir liko neaišku, kaip Ubuntu Linux performintu jei Irqbalance nesipyktu su testuota aparatine įranga. Klausimas į kurį dar reikės atsakyti ateityje, o šį kart tiesiog pakelti skrybėlę ir nusilenkti FreeBSD operacinei sistemai, kuri vienintelė iš testuotų sistemų sugebėjo teigimai efektyviai automatizuoti pertraukčių balansavimą.

Nereiktų nuvertinti ir operacinės sistemos kuri prioretizuoja saugumą. OpenBSD gali pasiūlyti išskirtinai saugią maršrutizatoriaus, užkardos ar kitą tinklo mazgo sistemą, ir bent jau vienaprocesorinėse kompiuterių sistemose – konkurencingą tinklo pralaidą. Saugai jautrioms organizacijoms nedidelis spartos nuostolis mainais į kompiuterių tinklo apsaugą, tai maža kaina už apsaugota organizacijos konkurencingumą, reputaciją ar išlikimą rinkoje apskritai.

Daugiau apie nūdienos kibernetinės saugos problematiką, galite perskaityti man ankstesniame straipsnyje: Kibernetinės erdvės pažeidžiamumas

FreeBSD būtų neginčytinas šių pralaidos testų nugalėtojas jei vertintume OS tinklo steko našumą tik persiunčiant tinklo paketus be jų filtravimo. Vis dėlto, retas kompiuterių tinklo mazgas tik priima ir siunčia tinklo paketus, paprastai prisireikia ir užkardos funkcijų.

Užkardos režimų testuose su mažiausiais tinklo paketais – svariausias argumentas vertinant tinklo prietaiso spartą – iš diagramų matyti Linux + netfilter paketų filtravimo posistemės pranašumas prieš FreeBSD su pasiskolinta pf užkardos posisteme. Skirtumas ypač ryškus Ubuntu Linux sistemai bandant išnaudoti daugelio branduolių SMP kompiuterio architektūrą.

Vis dėl to, būtų neteisinga laikyti šių kompiuterių tinklo pralaidos testų nugalėtoja operacinę sistemą, kuri turėdama daug didesnę plėtotojų ir vartotojų bazę nesugeba deramai palaikyti populiarios bendro pobūdžio x86 aparatinės įrangos (automatizuotą pertraukčių balansavimą). Tuo tarpu mažesnį užnugarį turinti FreeBSD operacinė sistema su ta pačia aparatine įranga susitvarkė pakankamai neblogai.

Kita vertus, vienas iš svarbiausių kompiuterio tinklo kokybinių rodiklių, padedančių įvertinti tinklo ar atskiro jo mazgo spartą, yra paketų delsa – laiko tarpas kurį paketas pralaidžia tinkle. Šiuo atveju buvo fiksuojama delsa tik per vieną kertamą tinklo mazgą, kuri parodo kiek laiko prireikia testuojamai operacinei sistemai apdoroti tinklo paketą. Nespėjau iki galo pilnai patvirtinti delsos rezultatus visuose OS, bet iš to ką mačiau FreeBSD sukeltoji delsa pastebimai mažesnė už Ubuntu Linux sistemos.

Matuodamas tinklo pralaidą kiekvieno testo gale fiksavau ir operatyviosios atminties (sukeitimų skaidinys {swap} buvo išjungtas) sunaudojimą operacinėje sistemoje ir suspėjau surinkti pakankami duomenų, jog drįsčiau jais pasidalinti. Per daug nesismulkinant į atskirus testuotų operacinių sistemų režimus, tarp kurių skirtumas nėra žymus, pateikiu vidutinį jų laisvosios prieigos atminties užimtumą per OS.


Žvelgiant į operacines sistemas iš kitos perspektyvos, jų alkį operatyviajai atminčiai, šį kart Ubuntu atrodo prasčiausiai, tiesą sakant tikras kompiuterio sistemos resursų ėdrūnas. FreeBSD ir OpenBSD po bazinės instaliacijos (be papildomų dietos pastangų) toms pačioms užduotims reikalauja du, tris kartus mažiau laisvosios prieigos atminties. Ir tai nėra Ubuntu Desktop versija, bet resursus taupanti Ubuntu Server distribucija.

Linux nutukimo problemą lemia sukaupti turtai – tvarkyklių ir modulių gausa. Apskritai, nebevaldomas noras Linux sistemą iškelti į stalinių kompiuterių rinką, tokios programinės įrangos kaip Systemd adaptacija ir priklausomybės nuo jos didėjimas Linux ekosistemoje rodo, jog populiariausios Linux distribucijos tolsta nuo Unix filosofijos. Tuo tarpu BSD operacinės sistemos išlieka ištikimos paprastumui – vis dar tiki ir plėtojamos pradine Unix filosofija – lengvai pakeičiama modulinė programinė įranga ir minimalizmas.

Iš tiesų, ypač minimalistinę Linux distribuciją savo reikmėms galima susirinkti ir pačiam, tačiau kas garantuos tavo kūriniui stabilumą, kaip dėl palaikymo kurį galima gauti iš Ubuntu ar Redhat? Kaip sakoma from here you're on your own. Rizikingas žingsnis statyti smėlio pilis produkcinei infrastruktūrai. Todėl šiame tyrime testuojamos tik vientisos ir pilnai išbaigtos operacinės sistemos.

Viską susumavus... FreeBSD rocks



Susumavus visas išvadas galima teigti, jog FreeBSD vis dar išlaiko našiausio tinklo steko titulą tarp kitų nemokamų ir atvirojo kodo operacinių sistemų. Vis dėlto, nesiryžtu per daug atkakliai tvirtinti, jog tai absoliuti ir neginčytina tiesa. Galbūt konfigūruojant sistemas testams buvo ir mano klaidų lėmusių prastesnius rezultatus. Atvirai pripažįstu testavimo metodika turi trūkumų, pvz.: imituojant realybei artimą kompiuterių tinklo situaciją duomenų srautas turėtų sklisti iš daugelio į daugelį skirtingų IP adresų, ar bent jau skirtingus IP adresų prievadus; iperf parankus įrankis tinklo testavimui, tačiau jis negali parodyti kaip tinklo mazgas susitvarko su 1000 ar daugiau vienalaikių tinklo sesijų. Maža to, testuose neleista pasireikšti savajai FreeBSD užkardos sistemai (ipfw), kuri sprendžiant iš Internetų lenkia pasiskolintą pf posisteme savo sparta, galbūt ir nurungti Linux + netfilter.

Idėjų kaip patobulinti testavimo metodiką netrūksta, trūksta tik laiko ir aukštos pralaidos aparatinės įrangos (bent 10G Ethernet) objektyvesniam testavimui. Žinoma, nereiktų nuvertinti ir tai kas buvo atlikta, tiesos mano testavimuose tikrai yra. Jei turit pastabų ar pasiūlymų, galit drąsiai pasireikšti komentarų sekcijoje. Konstruktyvi kritika visada laukiama ir į ją bus atsižvelgta ruošiantis kitiems eksperimentams.

Going BSD style


Neseniai teko perkelti savą Interneto svetainę (martynas.skaringa.dev), bei keletą kitų tinklo tarnybų į naują serverį. Po ilgų skaitymų ir asmeninių testavimų nusprendžiau atsisakyti iki šiol naudotos CentOS operacinės sistemos ir patikėti šį darbą FreeBSD. Sprendimas buvo tik natūralus norint patalpinti savas Interneto paslaugų tarnybas į itin ekonomišką 1 vCPU, 512MB RAM ir 20GB disko talpos VPS serverį, vos už 2,5 $/mėn.


Tokie kuklus serverio ištekliai būtų tikras iššūkis sunkiasvorei CentOS ar Ubuntu operacinei sistemai, tačiau su FreeBSD visa mano serverio sistema tesvėrė kiek daugiau nei 300MB RAM (nenaudojant {swap} skaidinio), vidutinė centrinio procesoriaus apkrova tik 2 proc, o disko talpa su visa programine įranga ir išeities kodu tik 3,2GB. Pasirinkus OpenBSD operacinė sistemą išteklių panaudojimo efektyvumas dar išaugtų, vis dėlto, FreeBSD šiuo atveju man pasirodė tinkamesnis pasirinkimas dėl didesnio lankstumo.

Fanatizmas prie gero nepriveda, bet panašu vis labiau linkstu į tikrosios Unix platformos gretas ir ateityje sąmoningai nepraleisiu progos dislokuoti BSD sistemą ten kur ji adekvati iškeltoms užduotims atlikti, o gal ir tinkamesnė už vis labiau išpūstą pingviną. Vienas iš pagalbininkų šiai misijai vykdyti neabejotinai bus pfSense – itin populiari atvirojo kodo tinklo užkardos sistema – plėtojama FreeBSD + pf operacinės sistemos pagrindu.
Daugiau informacijos apie nemokama ir atvirojo kodo pfSense užkardos sistemą galite surasti mano kitame straipsnyje: pfSense kompiuterių tinklo mazge

2017 m. rugpjūčio 29 d.

Visuotinė Wi-Fi bevielio ryšio problema


Savo tinklaraštyje visada rašau šiek tiek apie kosmosą, tai kas aktualu man kaip informatikui, bet nelabai aktualu paprastiems mirtingiesiems. Tad šį kartą nusprendžiau parašyti trumpą straipsnį apie labai aktualią problemą mums visiems, ypač tiems kurie gyvena didmiesčiuose, tankiai apgyvendintoje teritorijoje, pvz., daugiabutyje, kur egzistuoja Wi-Fi prietaisų perteklius.

Iš tiesų, šį straipsnį paskatino parašyti šeimos gydytojas, kuris greičiausia juokais paklausė kodėl jo kompiuteris dažnai atsijunginėja nuo Wi-Fi prieigos taško esant gana stipriam signalui. Aš dažnai nesuprasdamas juokų iškart nusprendžiau, jog tai rimta problema ir būtina ją išspręsti.
Pirma kilusi mintis buvo, jog kažkas bando įsilaužti ar tiesiog nulaužti jo Wi-Fi erdvę siunčiant deautentifikavimo paketus. Antra ir daug realesnė priežastis, išsiaiškinus, jog problema kyla daugiabutyje, tai buitinėmis 2,4 GHz radijo bangomis perpildytas eteris.
Bandžiau paaiškinti kodėl mano nuomone ta problema kyla, kodėl tai yra visuotinė problema daugiabučių gyventojams, kaip būtų galima pabandyti ją išspręsti. Tačiau suprantam žodžiu paaiškinti problemą ir jos sprendimą per daug sudėtinga žmogui be techninio išsilavinimo.
Taigi, gimė idėja parašyti straipsnį kuris būtų aktualus visiems piliečiams, ne tik informacinių technologijų atstovams (nors iš mano patirties ir dalis informatikų nesugeba dorai sukonfigūruoti Wi-Fi prieigos taško). Toliau bandysiu kaip galima paprasčiau paaiškinti kaip veikia Wi-Fi bevielis kompiuterių tinklas, kaip vyksta duomenų kaita tarp bevielės prieigos taško ir jos klientų, kodėl susidaro problema, ir kaip ją galima sušvelninti.

Radijo eterio dalybos


Kaip žinia Wi-Fi bevielio ryšio duomenys siunčiami radijo bangomis. Wi-Fi atveju dažniausiai naudojami 2,4 GHz arba 5 GHz dažnių diapazonai. Labiausiai paplitę prietaisai kurie dirba 2,4 GHz dažniu, todėl mūsų aplinka gali būti itin užteršta šiomis radijo bangomis.
Iš tiesų Wi-Fi standartai dirbantys 2,4 GHz dažniu (802.11a/b/g/n), užima vos 100 MHz dažnių juostą (maždaug nuo 2400 iki 2500 MHz), kuri suskirstyta į 14 fizinių kanalų po 20 MHz. Kadangi visi kanalai turi sutilpti į 100 MHz diapazono juostą, jie persidengia, o tai dažniausiai ir sukelia Wi-Fi ryšio našumo problemas.

Loginiai (kairėje) ir fiziniai (dešinėje) Wi-Fi kanalai

Taip pat reiktų nemaišyti Wi-Fi prieigos taškų loginių kanalų su fiziniais: loginiai tai Wi-Fi prieigos taško parinkti vardai (SSID) galintys egzistuoti tuose pačiuose fiziniuose kanaluose.
Tuo tarpu 5 GHz Wi-Fi veikia kur kas platesniame dažnių diapazone, maždaug 1000 MHz (nuo 4900 iki 5900 MHz), išskaidytą į 62 fizinius kanalus. Šis kanalų skaičius pats savaime išspręstų daugumos radijo eterio dalybų problemų. Be to, aukštas radijo dažnis geriau izoliuojamas patalpų sienų, todėl jo radijo sklaida bei eterio tarša mažesnė dėl aukšto radijo dažnio charakteristikos.
Nors 2013 metais pristatytas 802.11ac bevielio ryšio standartas apibrėžia Wi-Fi prietaisus dirbančius 5 GHz dažnio diapazone, šiandien, 2017 metais, daugelis Wi-Fi prieigos taškų duomenų apsikeitimui vis dar naudoja 2,4 GHz diapazoną. Deja panašu, jog situacija artimiausiu laiku nesikeis, 2,4 GHz dažnis ir toliau dominuos Wi-Fi tinkluose. Maža to, tą patį diapazoną naudoja ir mikrobangų krosnelė (tad nesistebėkit jei spraginant popkornus nusprogsta ir bevielis interneto ryšys), bei keletas kitų buities prietaisų.
Svarbiausia Wi-Fi bevielio ryšio koncepcijoje suprasti, jog visi prietaisai dirbantis tame pačiame dažnio diapazone turi dalintis radijo eteriu pakaitomis – siųsti signalą tik tada kai eteryje niekas kitas netransliuoja pranešimo. Tuo tarpu bevieliai prietaisai dirbantys gretimu dažniu nors ir gali siųsti pranešimus kartu, tačiau toks radijo bangų transliavimas sukelia dar didesnę problemą – radijo trukdžius {interference}. Būtent tai ir yra didžiausias bevielio ryšio minusas, jog vienu metu į eterį transliuoti radijo bangas gali tik vienas prietaisas, antraip besiklausantys prietaisai nesugebės atskirti iš kur ir kam skirtas signalas.
Tai vaizdžiai iliustruoti būtų galima įsivaizduoti pilną kambarį žmonių, kurie stovi per tam tikrą atstumą ir visi vienu metu šnekasi, bet nė vienas kito gerai nesupranta dėl susidariusio triukšmo. Taip ir su radijo bangomis, prietaisai negali tinkamai atskirti signalo kai radijo eteryje per daug triukšmų.


Nesunku padaryti išvada, kuo daugiau turime prietaisų bevieliame kompiuterių tinkle, tuo mažesnis bevielio ryšio našumas. Iš tiesų, būtina pabrėžti, jog net gretimas kaimyno bevielio ryšio prietaisas dirbantis tame pačiame ar gretimame fiziniame kanale (tuo pačiu ar iš dalies persidengiančiu dažniu), taip pat trukdo ir jūsų Wi-Fi bevielio ryšio tinklui.
Techniškai bevieliai prietaisai dirbantis tais pačiais dažniais sudaro vadinamąsias susidūrimų sritis {collision domain}. Siekiant išvengti bevielio tinklo paketų susidūrimo {packet collision} Wi-Fi tinklo prietaisai užprogramuoti siųsti pranešimus į radijo eterį tik tada kai šis laisvas. Jei radijo eteris užimtas, bevieliai prietaisai laukia atsitiktinį laiko tarpą iki bando vėl transliuoti pranešimą.
Vadinasi, jei savo namuose turite Wi-Fi prieigos tašką ir tris prietaisus bendraujančius su juo, tai dar nereiškia, jog Wi-Fi radijo eteri jūs dalinatės tik su trimis prietaisais. Jei kaimyno Wi-Fi prieigos taškas ar kitas bevielio ryšio prietaisas dirba tuo pačių ar gretimu fiziniu kanalu, jūs savo radijo eterį dalinatės ir su kaimyno Wi-Fi bevielio ryšio prieigos tašku bei jo klientais. Tas pats galioja ir kaimynui, šis taip pat turės dalytis savo radijo eteriu jei iš jūsų prietaisų signalas nusklis iki jo bevielio tinklo prietaisų.
Taigi, jei mūsų turimas bevielis prieigos taškas skelbiasi palaikantis 600 Mbps duomenų perdavimą (802.11n standartas), reali jo pralaida yra maždaug dešimtadaliu mažesnė, apie 60 Mbps jei Wi-Fi prieigos taškas ir klientas tarp kurių vyksta duomenų mainai yra pakankamai arti vienas kito, o aplink nėra kitų prietaisų naudojančių tą patį dažnio diapazoną (tobula situacija, radijo eteris visada laisvas).
Jei tarsim, jog mūsų turimas Wi-Fi prieigos taškas turi prie jo prijungtus 3 bevielio ryšio prietaisus (pvz., telefonas, TV ir kompiuteris), be to, jei gretimais tuo pačių ar persidengiančiu dažniu dirba kitas, kaimynams priklausantis, prieigos taškas su dar 2 bevielio ryšio klientais, galima tarti, jog reali Wi-Fi tinklo pralaida pasidalina į 6 dalis ir vidutinė bevielio tinklo prietaiso pralaida gali nukristi iki maždaug 10 Mbps.
Žinoma, tai tik pavyzdys, kuris padeda suvokti kaip veikia bevielis kompiuterių tinklas ir kokia nenuspėjama jo pralaida. Visgi tai ką nūdien skelbia bevielės prieigos maršrutizatorių gamintojai ant savo prietaisų dėžutės (pvz., 802.11ac standarto Wi-Fi prietaisas laiduoja 3 ar net 5,3 Gbps), yra teoriškai teorinė pralaida mažai ką bendro turinti su realybe, bet labai artima su marketingo departamentu.

Stipresnis signalas = silpnesnis ryšys


Prisiminkime pavyzdį su kambariu pilnu žmonių, kurie stovi vienas nuo kito per atstumą ir bando susikalbėti, bet kadangi visi kalbasi vienu metu, niekas gerai vienas kito nesupranta. Tarkime, jog kambaryje esantys žmonės bandys susikalbėti garsiau kalbėdami ar net rėkdami. Tačiau tai tik dar pablogins situaciją, bus ne tik masinis triukšmas, bet ir labai garsus, kuris dar labiau slopins klausos funkciją.
Šis kambario atvejis gerai parodo, kodėl nereiktų naudoti Wi-Fi prieigos taškų kurie stengiasi perrėkti kitus prieigos taškus. Jei visi naudos pastiprinto signalo Wi-Fi prietaisus, situacija ne pagerės, o pablogės, kadangi vieno prietaiso signalas nuskils ilgesnį kelią ir sukels daugiau triukšmo kitiems, kas tik dar labiau užterš aplinką radijo bangomis. Dėl tos priežasties neverta naudoti ir Wi-Fi prietaisų su jautresniu radijo bangų imtuvu.
Kas nors paskys: „bet gi mano kompiuteris su galingesniu ir jautresniu Wi-Fi maršrutizatoriumi geriau susikalbės!“, o aš manau, jog jis puikiai susikalbėtų ir nerėkiant į ausį. Jei visi aplink pradės rėkauti, tavo kompiuteris išgirs ne tik tavąjį Wi-Fi prieigos tašką, bet ir gretimų kaimynų belaidžio tinklo prietaisus. Gali turėti visas padalas ryšio stiprumo indikatoriuje, visgi jei aplink bus daug triukšmo, prietaisas gaus labai mažai laiko transliuoti pranešimu į laisvą radijo eterį ir praktiškai išnaudoti tą „gerą signalą“. Jei triukšmų aplink labai daug, net su stipriu signalu bevielio ryšio prietaisas gali savaime atsijunginėti nuo tinklo.
Vadinasi, naudodami stipresnį signalo siųstuvą išnaudosite ne tik daugiau energijos, bet sukursite ir daugiau triukšmo radijo eteryje kuris yra pagrindinis bevielio ryšio problemų kaltininkas. Tuo tarpu vidutinio stiprumo signalas tokių didelių problemų nesukelia. Manau sutiksite, jog jei viename kambaryje visi pasirinktų tinkamą atstumą nuo savo pašnekovo, kalbėtų pakaitomis ir kalbėtų normaliu balsu nesistengdami vienas kito perrėkti (ar net šnabždėdami), vienas kitą suprastų ir susikalbėtų kuo puikiausiai.
Taigi, stipresnis bevielio ryšio signalas, dažnai dėl marketingo kaltės, yra klaidingas problemos sprendimas ne iš to galo. Stipresnis signalas dažniau pablogina situaciją tankiai apgyvendintoms vietovėms nei ją išsprendžia.
Viena vertus, neverta piktnaudžiauti Wi-Fi skleidžiamu signalu, bet geriau surasti namuose centrinę-optimalią padėtį Wi-Fi prieigos taškui, kuris veiks normaliu ar net sumažintu energijos skleidimo radijo bangomis rėžimu ir netrukdys bei neprovokuos kitų kaimynų stiprinti savo signalo pajėgumus, kas atsilieptų neigiamai ir jums. Reikia suprasti, jei jūs trukdysite kaimynui, kaimynas gali nusipirkti galingesnį įrenginį kuris trukdys ir jums.
Kita vertus, kuo stipresnį signalą skleidžiate į eterį ir kuo toliau jis nusklinda, tuo labiau esate pažeidžiamas kibernetinėje erdvėje. Šiandien, 2017 metais, kai žinoma, jog WPA2 realizacija tam tikruose prietaisuose turi kritinę saugumo spragą (KRACK), savo signalo stiprumą reiktų minimalizuoti norint išvengti informacijos nutekėjimo. Taip pat verta signalo stiprumą minimalizuoti jei savo interneto dalybos jums ne prie širdies. Savaime suprantama, apie saugumą sąmoningai daugiau nieko nerašau, kas žino kada man reikės pasiskolinti jūsų internetus jums leidus (leidimą suprantu kaip nesaugiai sukonfigūruotą bevielės prieigos tašką). Ačiū.
Iš tiesų, o kaip gi minimalizuoti signalo stiprumą? Pirmiausia tai vengti Wi-Fi prieigos taško prietaisų kurie prisistato kaip itin stipraus signalo siųstuvo ir jautraus imtuvo. Rinkoje yra ir protingų Wi-Fi taškų, kurie stengiasi optimizuoti energijos sklaidą radijo bangomis, turi grįžtamąjį ryši su belaidžio tinklo prietaisais. Daug ką lemia ir parinkta vieta, antenų kryptis. Vienas iš įdomesnių projektų apie kurį teko neseniai skaityti, tai WiPrint (http://dartnets.cs.dartmouth.edu/wiprint), kuris sukuria specifinių poreikių anteną, šią galima atsispausdinti 3D spausdintuvu ir lengvai pritaikyti Wi-Fi prieigos taškui. Sukurta antena leidžia optimizuoti bevielės prieigos ryšį savose patalpose, bei minimalizuoti signalo stiprumą už patalpų ribų. Deja šis projektas nėra atvirojo kodo iniciatyva, panašu jog autoriai ketina savo tyrimus paversti pinigais nei kilniais tikslais.

Nepersidengiantys Wi-Fi kanalai


Taigi, manau jau pasidarė aišku, jog didžiausios Wi-Fi problemos kyla dėl netinkamo fizinio kanalo naudojimo ir per stipraus signalo skleidimo. Iš tiesų, nesvarbu kokį spartų, galingą ir jautrų Wi-Fi bevielės prieigos prietaisą jūs turėsite, jei šis bus blogai sukonfigūruotas – darbinis dažnis persidengs su gretimais bevielio ryšio prietaisais – bevielio kompiuterių tinklo sparta bus labai menka ir nepastovi.
Kaip jau buvo minėta straipsnio pradžioje, 2,4 GHz dažnio Wi-Fi prieigos taškas naudoja maždaug 100 MHz dažnio diapazoną suskirstytą į 14 kanalų, iš kurių tik 11 palaiko visi bevieliai prietaisai. Kadangi vieno kanalo plotis 20 MHz, šie kanalai persidengia, o tai, kaip jau išsiaiškinome, dažniausiai ir sukelia Wi-Fi ryšio problemas.


Vis laimė, tarp tų vienuolikos yra trys fiziniai kanalai tarpusavyje nepersidengiantys – 1, 6 ir 11 – trys atskirtos 20 MHz dažnių juostos. Tačiau, jei su 802.11n standartu naudojamos platesnės – 40 MHz dažnių juostos, be persidengimų 100MHz ruože jų tilps tik dvi. Vis dėlto 40 MHz dažnio juostos nerekomenduojamos jei aplink yra bent keli kiti Wi-Fi prieigos taškai su savais bevieliais kompiuterių tinklais. Šios platesnės dažnių juostos naudojamos padidinti pralaidai bevieliame tinkle, deja dažnu atveju jos daro daugiau žalos nei naudos.

Wi-Fi tinklų skenavimas


Norint pasirinkti tinkamą Wi-Fi kanalą reikia pirmiausia mokėti pasitikrinti savo aplinkos Wi-Fi kanalų užimtumą, bei pačių naudojamą kanalą radijo eteryje. Todėl toliau bandysiu trumpai paaiškinti kaip nuskenuoti Wi-Fi kanalų užimtumą jūsų aplinkoje.
Šiai dienai tai gana paprasta, užtenka turėti išmanųjį telefoną ir išsirinkti vieną iš siūlomų Wi-Fi bevielių kompiuterių tinklų analizatorių. Mano rekomendacija būtų WiFiAnalyzer arba Wifi Analyzer programėlės iš GooglePlay tiems kurie turi Android OS telefonus ar planšetes. Windows OS vartotojai gali išbandyti WiFi Analyzer programėlę iš Microsoft Store. Obuolio vartojai gali toliau būti pasikėlę.
Apsiginklavę Wi-Fi analizatoriaus programėle panagrinėkime keletą Wi-Fi bevielių kompiuterių tinklų persidengimo atvejų tankiai apgyvendintoje vietovėje, tai leis geriau suprasti kodėl reikia laikytis kanalų atskirties ir pasirinkti vieną iš nepersidengiančių kanalų (1,6 arba 11).


Viršuje paveiksle pateiktas pavyzdinis Wi-Fi tinklų jovalas. Nesimato ne vieno geresnio kanalo į kurį būtų galima nustatyti ir savąjį Wi-Fi prieigos tašką. Tačiau reiktų laikytis atskirties taisyklės ir pasirinkti vieną iš nepersidengiančių kanalų (1,6 arba 11). Jei jūs esate panašioje situacijoje, didelė užuojauta. Tokioje netvarkingoje Wi-Fi prieigos taškų makalynėje bevielio prietaisų problemos neišvengiamos, ar tai būtų lėtas interneto ryšys ar periodiškai atsijunginėjantis ryšys, problemos sprendinių čia nedaug.

Keletas tokio sausakimšo radijo eterio problemos sprendimo būdų:
  • savo būstui atlikti kapitalinį remontą ir kambarių išorines sienas padengti metaliniu tinkleliu – sukurti iš kambarių Faradėjaus narvą {faraday cage};
  • antras, naudoti 5 GHz dažnio Wi-Fi prieigos tašką, jei jūsų bevieliai prietaisai palaiko 802.11ac standartą (5 GHz diapazono Wi-Fi standartas turi net 24 nepersidengiančius kanalus po 20 MHz);
  • trečias, bandyti įkalbėti kaimynus pasikeisti 2,4 GHz dažnio Wi-Fi prieigos taškų naudojamus kanalus į vieną iš trijų nepersidengiančių fizinių kanalų (1,6 arba 11), kai gretimi kaimynai naudoja skirtingus, o tolimiausi vienodus kanalus.


Šiame paveiksle situacija šiek tiek geresnė, nemaža dalis belaidžių prieigos taškų dirba nepersidengiančiuose 1,6 ir 11 kanaluose, visgi ir čia situacija netobula – keletas žioplių savo Wi-Fi stoteles sukonfigūravo darbui 3, 8, 9 ir 10 kanalu, kurie visi trukdo bent dviem nepersidengiantiems kanalams. Bevielis kompiuterių tinklas funkcionuotų daug geriau jei visi sąmoningai pasidalytų radijo eterį tik į tris fizinius Wi-Fi kanalus – 1, 6 ir 11. Taip radijo eterio trukdžiai būtų sumažinti iki minimumo.
Kam blokuoti du nepersidengiančius kanalus jei jūsų kaimynai jums nieko neskolingi? Tuo labiau jog pasirinkdami persidengiančius Wi-Fi kanalus jūs pabloginat ir savo interneto ryšį.
Viršutiniame paveiksle geriausias pasirinkimas jūsų Wi-Fi prieigos taškui būtų 1 arba 11 kanalas. Nors 11 kanalas turi vienu prieigos tašu daugiau už 1, šių prietaisų skleidžiamas signalas gerokai silpnesnis už 1-ojo kanalo prietaisų, vadinasi dirbant 11 kanalu didesnė tikimybė gauti laiko į laisvą eterį pranešimų transliavimui.

Fizinio Wi-Fi kanalo keitimas


Manau man pavyko jus įtikinti, jog verta naudoti tik 1, 6 ir 11 kanalus, todėl trumpai paaiškinsiu kaip pasikeisti fizinį Wi-Fi kanalą į vieną iš nepersidengiančių. Iš teisų, tarp skirtingų Wi-Fi prietaisų gamintojų tos instrukcijos šiek tiek skiriasi, tad aš negaliu duoti universalių instrukcijų tinkančių visiems bevielės prieigos prietaisams, vadinasi jums patiems teks šiek tiek pasukti galvą.
Jei jums kada nors teko prisiliesti prie Wi-Fi maršrutizatoriaus nustatymų: pakeisti Wi-Fi prieigos taško loginį vardą (SSID) ar pakeisti ilgą maišytų simbolių slaptažodį iš saugaus į savo sugalvotą, jums greičiausiai teko matyti ir fizinio kanalo nustatymo parametrą {wireless channel}.
Pagal nutylėjimą dauguma bevielių maršrutizatorių būna sukonfigūruoti automatiškai parinkti „tinkamiausią“ fizinį Wi-Fi ryšio kanalą, deja realybėje 2,4 GHz dažnio diapazone veikiantis Wi-Fi prieigos taškas reti sugeba automatiškai parinkti geriausią fizinį kanalą bevieliam kompiuterių tinklui sukurti. Neretai tas „tinkamiausias“ fizinis Wi-Fi kanalas būna vienas iš persidengiančių nors nepersidengiantis kanalas būtų geresnis pasirinkimas sausakimšame Wi-Fi radijo eteryje.


Viršuje pateikti paveikslai su belaidės prieigos konfigūracijos nustatymais trim dažniausiai pasitaikantiems Wi-Fi maršrutizatorių gamintojams. Iš jų tik D-Link atvejis teisingai sukonfigūruotas, kadangi pasirinktas ne automatinis fizinių kanalų parinkimas, o 6-asis nepersidengiantis Wi-Fi tinklo kanalas.
Toliau pateiktos bendros Wi-Fi prieigos taško konfigūravimo instrukcijos. Jei kyla kažkokių problemų, neaiškumų, visada galima pasinaudoti Google pagalba - suvesti į paieškos laukelį kažką panašaus į „How to change wifi channel maršrutizatoriaus_modelis“.
  1. Maršrutizatoriaus konfigūravimo sąsają galima pasiekti per interneto naršyklę, adresu: 192.168.0.1, 192.168.1.1, 192.168.100.1, 192.168.0.254, 192.168.1.254, 192.168.8.1 ar dar kitoks kuris čia nepaminėtas. Tiksliau reiktų žiūrėti į belaidžio tinklo prietaisų naudojamą tinklų vartų adresą {default gateway} (Windows OS į CMD suvedus ipconfig komandą; Linux OS atveju ifconfig komandą), prietaiso vartotojo vadovą arba apžiūrėti patį prietaisą, galbūt yra ant jo pateikta informacija prasidedanti http:// (kartais konfigūravimo meniu prieiga per Wi-Fi belaidį ryšį blokuojama, tad norint ją pasiekti reikia prisijungti su vytos poros tinklo kabeliu per fizinį Ethernet prievadą).
  2. Suvedus tinkamą prietaiso konfigūravimo adresą į naršyklę atsivers prisijungimo langas, čia vėl teks ieškoti prisijungimo vardo su slaptažodžiu {username/password}, kuris gali būti ant prietaiso, gali būti įrenginio vartotojo vadove, o gali būti ir admin/admin ar admin/123456 deriniai.
  3. Jei sėkmingai prisijungėt prie konfigūravimo sąsajos, toliau reiktų ieškoti Wireless ar Advanced > Wireless meniu skilties. Jei jūsų maršrutizatorius naudoja lietuvišką menių, norėčiau jums tik palinkėti sėkmės. Kartais gyvenimas gali būti itin sunkus.
  4. Jei nepaisant visų sunkumų nusigavote iki Wireless konfigūravimo meniu ir matote kažką panašaus į control channel, wireless channel ar tiesiog channel, kuris siūlo pasirinkti vieną iš 11, 13 ar net 14 kanalų – sveikinu, analizatoriaus ir sveiko proto dėka galite sukonfigūruoti savo Wi-Fi bevielį tinklą į nepersidengiantį kanalą (1,6 arba 11) teisingesniam ir našesniam bevieliam ryšiui užtikrinti. Tiesiog pakeiskit kanalą, išsaugokite pakeitimus ir perkraukite Wi-Fi prieigos tašką bei įsitikinkite, jog keitimas pavyko sėkmingai. Taip pat galite paskatinti ir padėti tą patį padaryti ir savo kaimynams.
Pabaigai noriu pabrėžti: geriau du ar daugiau bevielių prietaisų dirbančių nepersidengiančiais vienodais kanalais, nei dirbantys gretimais persidengiančiais kanalais! Gretimų Wi-Fi kanalų trukdžiai {interference} dažniausiai daug blogiau našumo atžvilgiu nei laiko dalybos naudojant tuos pačius fizinius kanalus. Verta prisiminti, jog kiekvienas atvejis unikalus ir reiktų vadovautis sveiku protu konfigūruojant Wi-Fi kompiuterių tinklus. Sėkmės!

2017 m. rugpjūčio 27 d.

Kibernetinės erdvės pažeidžiamumas

Nepaliaujamai progresuojančios technologijos, besiplečiantis centralizuotų kompiuterių tinklo paslaugų spektras ir jų įsigalėjimas, didėjantis prie interneto tinklo prijungtų prietaisų skaičius, stiprėjanti pavienių individų, o kartu ir organizacinių vienetų, produktyvumo ir konkurencingumo šiuolaikinėje ekonomikos rinkoje priklausomybė nuo informacinių technologijų harmoningo funkcionavimo formuoja itin pažeidžiamą naujos kartos informacinę visuomenę. Todėl šiandien kibernetinės erdvės sauga kaip niekada aktuali tema reikalaujanti išskirtinio dėmesio.

Šiame blogo įraše bandysiu apibendrinti paskutinio dešimtmečio kompiuterijos saugos įvykius, kurie tikiuosi padės išsklaidyti mintis apie saugius ir nenulaužiamus kompiuterių tinklus bei priminti, jog bet kuri organizacija turi jautrių duomenų kuriuos privalu atitinkamai apsaugoti.


Kiekvienais metais gausu pranešimų apie vieną už kitą didesnes duomenų vagystes, kurios neretai tampa viešomis naujienomis ne aukos noru pasigirti apie savo sukompromituotą kompiuterijos infrastruktūrą, o po įsilaužėlių duomenų paviešinimo nepavykus deryboms dėl išpirkos. Paskutinio dešimtmečio duomenų nutekėjimo mastas itin gerai matyti duomenų vagysčių vizualizacijoje: nuoroda. Kibernetinės saugos atžvilgiu 2017 metai ypatingi ir lietuviško kapitalo įmonei „Grožio Chirurgija“ iš kurios buvo pavogti itin jautrūs klientų duomenys (plačiau).

O kiek dar nežinomų duomenų vagysčių niekada neišlenda į dienos šviesą, kurių duomenimis prekiaujama vadinamojoje tamsiojoje interneto pusėje {darknet} pagal užsakymą? Ten pat egzistuoja, viešai nežinomų saugumo spragų {zero-day vulnerabilities} anoniminės prekyvietės programišiams, kuriose be pavienių saugumo spragų {zero-day exploits} galima įsigyti lengvai naudojamus įrankius, taikomosios programos pavidalu, jų rinkinius {hacking toolkit}. Su pastaraisiais bet koks IT žioplys gali pažeisti į saugumą neinvestuojančių organizacijų kompiuterių tinklus.

Sunku neprisiminti skandalingą Snowden istoriją, apie paviešintą JAV Nacionalinio Saugumo Agentūros (angl. National Security Agency, NSA) veiklą, kuri atskleidė iki tol neregėto pasaulinio masto sekimo operacijas ir neteisėtus veiksmus pasitelkiant įspūdingą kibernetinį arsenalą – viešai nežinomos saugumo spragos populiarioje programinėje ir aparatinėje įrangoje {zero-day vulnerabilities}, bei jų taikomieji įrankiai {toolkits}.

Centrinė NSA būstinė. Kiek primena Kaaba, abu objektai simbolizuoja dieviškumą, dieviškas galias.

Šiai dienai, 2017 metais, WikiLeaks pradėjus viešinti JAV Centrinės Žvalgybos Vadybos (angl. Central Intelligence Agency, CIA) konfidencialius dokumentus kodiniu pavadinimu „Vault 7“, kibernetinės saugos situacija atrodo dar prasčiau. Iš paviešintų dokumentų matyti, jog CIA vykdo NSA agentūrai analogišką kibernetinę veiklą (CIA yra pagrindinė, konkuruojanti su NSA, JAV žvalgybos agentūra).


Edward Snowden nutekintų dokumentų žinoma, jog vien Jungtinių Valstijų vadinamasis juodasis biudžetas 2013 metais buvo apie 52,6 mlrd. JAV dolerių (palyginimui, visas Lietuvos valstybės biudžetas tuo metu siekė 8,2 mlrd. JAV dolerių). Galima daryti tvirtą prielaidą, jog tokių mastų kibernetiniam arsenalui galimybės neribotos, ir greičiausiai nėra visiškai saugaus kompiuterių tinklo į kurį nesugebėtų įsilaužti didžiųjų valstybių remiamos programišių grupės.

Tai puikiai paliudija Stuxnet kompiuterinis virusas, pirmasis precendentas kibernetinėje karyboje tarp valstybių. Stuxnet buvo JAV ir Izraelio koordinuota kibernetinė ataka nukreipta prieš Irano branduolinę programą Natanz branduolinėje jėgainėje. Stuxnet sugebėjo patekti į nuo pasaulio fiziškai atskirtą (air gapped) kompiuterių tinklą ir per metus sudaužyti apie dešimtadalį urano sodrinimo centrifugų. Gana ilgą laiko tarpą Irano mokslininkai suko galvas kodėl staiga be jokių techninių gedimų ar pakitimų tai viena tai kita centrifugą pradėdavo pašėlusiai suktis ir garsiai ūžti kol subyrėdavo į metalo laužą. Turbūt dar ilgai nebūtų supratę, jei ne Stuxnet atakos koordinatorių klaida išplatinant naują viruso versiją. Atnaujinta agresyvesnė Stuxnet viruso versija turėjo sparčiau plisti ir patekti į reikiamus taikinius, tačiau perlenkus lazdą virusas numigravo už taikinių ribos ir atkreipė virusų tyrėjų dėmesį. Plačiau apie šią istorija arstechnica.com siūlo linksmą straipsnį: nuoroda.

Tie kurie domisi kibernetinės erdvės saugumo įvykiais – neturi iliuzijų apie visišką saugą tinkle. Tik pro-aktyvi ir itin paranojiška kibernetinės saugos praktika gali jei ne užkirsti kelią, tai bent sumažinti galimybę konfidencialių duomenų nutekėjimui. Kita tvertus, nevisos organizacijos užsitraukia JAV, Kinijos ar Rusijos žvalgybos nemalonę. Daugeliu atveju gera kibernetinės saugos praktika organizacijoje gali padėti apsisaugoti nuo pavienių individų ar mažesnių piktavalių grupių veikiančių internetuose.




Ne taip seniai atrasta viena svarbiausių saugumo spragų interneto amžiuje – net keletą metų viešai nepastebėta kritiška saugumo spraga slėpėsi itin plačiai naudojamoje tinklo paslaugų programinėje įrangoje – OpenSSL kriptografijos bibliotekoje (Heartbleed). Šis įvykis paskatino didžiąsias IT kompanijas po Linux Foundation organizacijos sparnu sukurti Core Infrastructure Initiative projektą, su misiją tikslingai remti nemokamos ir atvirosios programinė įrangos projektus, kurie nepakankamai finansuojami, bet vertinami kritiškai svarbiais tinklo paslaugų infrastruktūrai, bei kompiuterijos funkcionavimui apskritai.

Google kompanija nesustojo ties pastarojo projekto dosnaus rėmimo, bet ėmėsi ir savos iniciatyvos – jau kurį laiką brendusios idėjos įgyvendinimą – suburti programišių komandą, po Project Zero vardu. Jos visas laikas ir pastangos nukreiptos į plačiausiai naudojamos programinės įrangos tyrimą, viešai nežinomoms saugumo spragoms medžioti, o aptiktas klaidas, jų taisymo eigą, dokumentuoti viešai prieinamoje duomenų bazėje.
Abiem iniciatyvomis tikimasi ateityje užkirsti kelią Heartbleed tipo saugumo incidentams.

Atrastos saugumo spragos programinėje įrangoje pagal metus
Šaltinis: cvedetails.com

Saugos tyrimams įsibėgėjus, nuo 2014 m., svetainės cvedetails.com duomenimis, fiksuojami neženkliai didesni atrastų saugumo spragų skaičiai programinėje įrangoje. Tačiau per pirmuosius aštuonis 2017 metų mėnesius atrasta maždaug 150 procentų visų 2016 metais pastebėtų saugumo spragų. Jei tempai nesumažės 2017 metais jų bus atrasta daugiau nei du kartus nei 2016 metais. O kiek dar egzistuoja viešai nežinomų, bet atrastų ir savanaudiškais tikslais, dažniausiai piktavališkais, slepiamų saugumo spragų programinėje įrangoje?

Nors didžiosios IT kompanijos pradėjo aktyviau remti, o kartais ir pačios imasi iniciatyvos taisyti kibernetinio saugumo padėtį, būtų klaidinga ir naivu tikėtis visiškos, iš sąlyginai nedidelės tyrėjų grupelės, kompiuterijos saugos užtikrinimo. Apsauga reikia rūpintis ir patiems, kaip dauguma įtakingų kompiuterijos saugu ekspertų nuolatos pabrėžia, svarbiausias kompiuterijos apsaugos komponentas yra pats technologijų vartotojas – žmogus, jo tingumas, abejingumas gerai saugos praktikai ir neišmanymas, leidžia piktavaliams ir jų kenkėjiškoms programoms {malware} triumfuoti.

Auganti DDoS atakų grėsmė


Sparčiai didėjant tinklinių prietaisų skaičiui, didėja ir vadinamųjų DDoS atakų skaičius {distributed denial-of-service attack}, sparčiai didėja ne tik kiekybiškai, bei stabiliai auga ir jų kokybiniai mastai. DDoS – tai paskirstytosios DoS atakos versija, kurios metu iš daugybės sukompromituotų interneto tinklinių prietaisų {botnet} siunčiamas nepageidaujamas duomenų srautas į atakuojamą tinklo serverį ar jų sistemą, su tikslu padaryti tos sistemos tiekiamas tinklo paslaugas neprieinamas teisėtiems jos vartotojams {denial-of-service}. Jei bombarduojama sistema dėl ribotų kompiuterio sistemos ar jos tinklo išteklių nepajėgia aptarnauti visų užklausų, teisėtos vartotojų prieigą prie tinklo paslaugų labai sulėtėja arba tampa visiškai nepasiekiama sistemai neatlaikius krūvio ir nulūžus.

Visi prieš Amerika ir Amerika prieš save. NORSE realaus laiko DDoS atakų vizualizacija.

DDoS atakos per paskutinius 5 metus ypač suagresyvėjo, remiantis Arbor Networks 12th Worldwide Infrastructure Security Report ataskaitos duomenimis žymiai padaugėjo DDoS atakų skaičius, kurių duomenų srautas didesnis nei 100 Gbps: 2015 metais jų užregistruota 223, o 2016 metais jau 558 atakų. Dar įspūdingesnis DDoS atakų padidėjimas, kurių srautas didesnis už 200 Gbps: 2015 metais užfiksuota 16, o 2016 metais jau 87 atakos. Sparčiai auga ir DDoS atakų srauto kokybiniai parametrai: didžiausia 2016 metų ataka siekė 800 Gbps, o tai net 60 procentų daugiau nei 2015 metais (500 Gbps).

DDoS atakų srauto kokybinis augimas per paskutinį dešimtmetį
Šaltinis: Arbor Networks Worldwide Infrastructure Security Report

Kai kuriais šaltiniais, tie skaičiai 2016 metais buvo dar didesni, OVH kompanijos savininkas pranešė apie dvi rekordines DDoS atakas, kurių srautas siekė 1,1 Tbps ir 901 Gbps. Vieną DDoS ataką 2016 metų pabaigoje pajuto didelė dalis JAV rytinės pakrantės gyventojų. Dyn duomenimis maždaug 1,2 Tbps srautas nukreiptas į jų kritinius DNS sistemos serverius sugebėjo sutrikdyti visos JAV rytines pakrantes interneto veikla iki tol neregėtu mastu. Saugumo ekspertų teigimu, jei situacija nesikeis, 1 Tbps srauto DDoS atakos artimiausiais metais gali tapti normaliu reiškiniu.

Norint geriau suprasti kaip sunku išvesti iš rikiuotės DNS sistemą galima perskaityti mano ankstesnį blogo straipsnį, trumpai nužvelgianti jos veikimo principus: Domenų vardų sistema

Kenkėjiškų programų valdomieji tinklai


Šiai dienai tokias intensyvias DDoS atakas formuoja proliferuojantys tinkliniai prietaisai, priskiriami vadinamiesiems IoT {Internet of things}, kenkėjišku programiniu kodu paversti į piktavalių valdomus botus {bot}. Prieš IoT revoliuciją kenkėjiškų programų tinklus {botnets} formuodavo įprasti prie interneto prijungti kompiuteriai, kurių apsauga geresnė už IoT prietaisų, todėl ir piktavalių programišių pastangos buvo mažiau vaisingos. Dėl tinklinių prietaisų gamintojų aplaidumo ir abejingumo dauguma internetinių kamerų, išmaniųjų televizorių, skaitmeninių vaizdo rašytuvų, maršrutizatorių bei daug kitų prie interneto jungiamų prietaisų, pasižymi itin prasta apsauga ir tampa lengvu taikiniu. Deja tų prietaisų dažniausiai pataisyti negalima, todėl siūloma prie tinklo jungiamiems prietaisams pakeisti numatytuosius vartotojo vardus ir slaptažodžius, bei jų nejungti prie interneto tinklo jei tam nėra būtinybės.


Dar vienas, klasikinis kenkėjiškų programų tinklo {botnet} panaudojimas – brukalų {spam} siuntinėjimas. Tais atvejais kai kenkėjiška tinklo programa užsikrečia vienas ar daugiau įmonės kompiuterių, visas įmonės tinklas, jo išorinis IP adresas, rizikuoja atsidurti brukalų juoduosiuose sąrašuose {spam blacklist} ir sutrikdyti įmonės el. pašto serverio funkcionavimą. Galima nesunkiai įsivaizduoti, kiek netvarkos atsiras įmonės veikloje, jie jos el. laiškai nepasieks visų adresatų, kiek bus patirta žalos dėl elementarios tinklo paslaugos sutrikimo.

Išvados ir rekomendacijos


Žvelgiant į sparčiai didėjantį tinklo vartotojų skaičių, kompiuterijos saugumo pažeidimų mastą (kokybiškai ir kiekybiškai) per paskutinį dešimtmetį, o kartu augančią priklausomybę nuo informacinių technologijų, leidžia geriau suprasti kaip svarbu laikytis geros saugumo praktikos bet kurioje organizacijoje.

Net smulki ar vidutinė verslo organizacija gali turėti itin konfidencialių duomenų, padedančiu jai konkuruoti rinkoje. Daugumos organizacijų gerovė priklauso nuo stabilios interneto prieigos ir patikimai veikiančių jos tinklo paslaugų internete. Dėl to, tinkamas tinklo saugos įrengimas ir valdymas yra itin svarbus ir būtinas uždavinys kiekvienai save ir savo klientus gerbiančiai organizacijai.

Norint apsaugoti kompiuterių tinklo paslaugų sistemas ir jų vartotojus, būtina taikyti patikimas ir šiuolaikiškas kompiuterijos apsaugos priemones. Tačiau vienu svarbiausiu, esminiu kompiuterijos apsaugos sistemų komponentu išlieka kompiuterių tinklo užkarda – pirmoji gynybos linija tarp vidinio organizacijos kompiuterių tinklo ir interneto. Tinkamai suderinta užkardos sistema padeda užtikrinti stabilų ir patikimą ryšį, užkerta atvirą prieigą bei kitokią neapibrėžtą ir neleistiną veiklą tarp atskirų, bet tarpusavyje sąveikaujančių tinklų.

Pasigirsta kompiuterijos saugumo ekspertų nuomonių, jog kompiuterijos saugumo praktika paremta tinkamai suderinta tinklo užkardos sistema, kartu su programų baltaisiais sąrašais {whitelist} yra svarbesnė už antivirusinės programos naudojimą galutinių vartotojų kompiuteriuose, kadangi jos nebepajėgios susidoroti su naujausiomis kompiuterijos grėsmėmis. Iš tiesų, antivirusinės programos taip pat neverta pamiršti, ji padeda apsisaugoti nuo senų ir mažiau pažangių grėsmių. Teisinga sistemos apsauga yra sluoksniuota, po saugos sprendimą kiekviename sluoksnyje.

Suprantama, joks tinklo užkardos prietaisas negali tiesiogiai apsaugoti nuo 1 Tbps DDoS atakų. Tačiau tinklo užkardos priemonės gali padėti izoliuoti lengvai pažeidžiamus tinklo prietaisus, todėl būtina suprasti kaip svarbu naudoti tinklo užkardą visoms organizacijoms bei namų vartotojams, norint sumažinti DDoS atakų grėsmę ateityje. Viena vertus IoT kenkėjiškas duomenų srautas į eikvoja organizacijos išteklius – trikdo interneto prieigos ir vietinio tinklo pralaidumą. Antra vertus, jei IoT situacija nesikeis, neužilgo interneto paslaugų nepasiekiamumas gali tapti normaliu reiškiniu.

Visus kenkėjiškų programų valdomuosius tinklus {botnets} formuoja sukompromituoti interneto tinklo dalyviai. Šių nepageidaujamų programų nuotolinis valdymas ir plitimas kibernetinėje erdvėje paremtas kompiuterių tinklu. Todėl tinkamai suderinta tinklo užkardos sistema gali padėti sustabdyti kenkėjiškų programų plitimą ir jų tinklų {botnet} susidarymą, bei padėti laiku pastebėti įtartina veiklą kompiuterių tinkle ar atskleisti naujus, dar nežinomus kenkėjiškų programų tinklus.

XXI a. įsibėgėjus smulkusis ir vidutinis verslas vis dar pasyviai žiūri į kompiuterių tinklo apsaugą, nors jiems galioja tie patys kibernetiniai dėsniai kaip ir didžiosioms organizacijoms. Deja smulkiojo verslo kompiuterijos sauga arba neegzistuoja arba lengvai apeinama. Tik tinkamas dėmesys ir adekvačios investicijos į kompiuterijos saugą padeda apsaugoti organizacijos konkurencingumą, reputaciją ar išlikimą rinkoje apskritai. Kaip informacinės visuomenės istorija rodo, smulkus ir vidutinio dydžio verslas patyręs organizuotą kibernetinę ataką ir tinklo saugos pažeidimą, neretai baigia savo veiklą bankroto byla.

Daugiau informacijos apie kompiuterių tinklo užkardų taikymą organizacijos bei namu tinkle galima rasti mano ankstesniame straipsnyje: pfSense kompiuterių tinklo mazge