Bi etiketa gauza bera balira bezala erabiltzen dira: hardwarez azeleratua eta kernelera deskargatua. Batek liburutegi baten AES errutinak zein instrukzio exekutatzen dituen deskribatzen du, eta besteak paketeen prozesamendua non gertatzen den. VPN batek lehena bigarrena gabe izan dezake, bigarrena lehena gabe edo biak batera. Errendimenduari buruzko edozein erabaki bietatik zein aldatzen ari zaren izendatzen hasi behar da.

Bi ardatz, puntuazio bat ez

Lehen ardatza inplementazioa da: AES-256-GCM egiten duen kodea prozesadorearen instrukzio dedikatuak erabiltzen dituen bertsiora bideratzen da edo haiek aritmetika arrunt gisa exekutatzen dituen errutina eramangarrira. Aukera hori liburutegi kriptografikoaren barruan bizi da eta hura hasieratzean hartzen da.

Bigarren ardatza kokapena da: paketea kernelaren transformazio-bidetik igarotzen da edo erabiltzaile-espazioko daemon batek tunel-gailu batetik irakurtzen du, zifratzen du eta berriro idazten du.

Ardatz batek ez du bestea mugatzen. AES instrukzioak dituen CPU batean erabiltzaile-espazioko VPN batek denbora osoan erabil ditzake, eta haiek gabe CPU batean kernel-bideak software inplementaziora jotzen du. Hornitzaileen materialetan etiketek gutxitan egiten dute bereizketa hori, eta horregatik bi egoeren artean kopiatutako doikuntza-aholkuak hain sarritan ez dute ezer egiten.

Lehen ardatza: zein kodek egiten duen zifratzea

OpenSSLk prozesadorearen ezaugarriak detektatzen ditu hasieratzean eta emaitza kodea bide optimizatuak aukeratzeko erabiltzen du, x86 gaitasunen dokumentazioak deskribatzen duen bezala. AES-NI bidalketa horren atzean dokumentatutako gaitasunetako bat da. Horietako ezerk ez du eskatzen liburutegia kernel osagai bihurtzea.

Ziurtatu ezaugarria prozesuarentzat ikusgai dela bide azkarra erabiltzen dela suposatu aurretik. Linuxen iturria /proc/cpuinfo-ren flags eremua da, eta gonbidatu baten barruan hiperbisoreak erakusten duena islatzen du, ez host fisikoaren modelo-izena.

grep -m1 '^flags' /proc/cpuinfo | grep -o '\baes\b'
openssl list -providers -verbose

Bigarren komandoak build horretan kargatutako hornitzaileen izenak ematen ditu. Ez dizu esaten VPN zerbitzuak zein liburutegi estekatu zuen, eta host batek bi OpenSSL instalazio eraman ditzake exekutatzen ari den prozesuak horietako bat bakarrik erabiltzen duen bitartean.

Bigarren ardatza: pakete-bidea non exekutatzen den

Kernelan kokatzeak esan nahi du transformazioa kernelaren beraren IPsec makinarian edo kernel barruko tunel kontrolatzaile batean gertatzen dela, beraz paketeek ez dute alderik aldera bidaiarik behar erabiltzaile-espazioko prozesu batetik sorta bakoitzeko. Horrek kopiak eta testuinguru-aldaketak murrizten ditu, eta lana nukleoen artean banatzen du hari bakarreko daemon batek ezin duen moduan. Gainera, emaria jaisten denean irakurriko dituzun kontagailuak eta arrastoak lekuz aldatzen ditu, lana orain kontrolatzen ez duzun muga baten beste aldean gertatzen delako. Har ezazu arazketa-kostu gisa, ez soilik errendimendu-erabaki gisa.

Ez du instrukzio-euskarria sortzen, ez du zifratzerik konfiguratzen eta ez du lehendik dagoen bide bat martxan jartzen.

Birtualizazioak toles bat gehitzen du ardatz honetan ere. Gonbidatu bati hostak dituen ezaugarriak ezkutatzen dituen CPU modelo maskaratua eman dakioke, eta habiaratutako gonbidatu batek are gutxiago ikus dezake. Irakurri gaitasunen ikuspegia VPN benetan exekutatzen den ingurunearen barrualdetik, ez hiperbisorearen kontsolatik.

Zer erosten duen aukera bakoitzak eta zer ezin duen

Galdera praktikoa denbora nora doan da. Emaria hari lanpetu batek, buffer kopiak behin eta berriro edo pakete bakoitzeko sistema-dei batek mugatzen badute, transformazioa kostu horiek kentzen dituen bide batera eramateak lagun dezake, kernelak behar duzun transformazioa inplementatzen badu.

Muga uplink kongestionatu bat, galerak dituen bide bat, joan-etorri denbora luzea, helmuga-zerbitzu saturatu bat edo nukleo batera finkatutako hari bat bada, kokapenak ez du ezer garrantzitsurik aldatzen. Gauza bera gertatzen da instrukzioen aukeraketarekin: hardware dedikatuko AESek ezin du falta den bide bat konpondu eta ez du lagunduko tunela alferrik badago izenen ebazpenak huts egiten duelako.

Biak aplikatzen direnean, konbinatu egiten dira. Kernel-bide batek kernelaren kripto APIaren barruko instrukzio-mailako bidalketa bera erabil dezake, eta ondo aukeratutako liburutegia duen erabiltzaile-espazioko bide bat jada hura erabiltzen ari da. Erabakia ez da zein den azkarragoa abstraktuan; kostu zeinengatik duzun froga da.

Idatzi lau gertaerak ezer aldatu aurretik

Idatzi zerbitzuaren binarioa eta estekatzen duen liburutegi kriptografikoa, horiek erabakitzen baitute lehen ardatza. Ondoren idatzi adostutako datu-babesa, instrukzio-bide dedikatua ez duen zifratze batek beste jokabide bat baitu, eta multzoa bi alderdiek aukeratzen dute.

Jarraian, exekutatzen ari den ingurunearen barruko gaitasunen ikuspegia eta, azkenik, pakete-bide aktiboa gaituta dagoela uste duzun modua benetan hala dagoelako frogarekin. Kargatutako modulu batek ez du frogatzen profile batek erabiltzen duenik, eta konfigurazio-lerro batek ez du frogatzen kernelak onartu duenik.

Aldatu gauza bat eta gero alderatu amaiera-puntu berak eta transferentzia-norabide bera dituen lan-karga koherente batekin. Neurtu ez duzun abiadura-afirmazio bat backend-a inoiz zalantzan egon ez zela dioen ohar batek baino gutxiago balio du.

Erlazionatutako artikuluak