Dve oznaki se uporabljata, kot da bi bili isto: strojno pospešeno in preneseno v jedro. Prva opisuje, katere ukaze izvaja rutina AES neke knjižnice, druga opisuje, kje poteka obdelava paketov. VPN ima lahko prvo brez druge, drugo brez prve ali obe hkrati. Vsaka odločitev o zmogljivosti se mora začeti s poimenovanjem, katero od dveh v resnici spreminjate.

Dve osi, ne ena ocena

Prva os je izvedba: ali se koda, ki izvaja AES-256-GCM, usmerja v različico, ki uporablja namenske ukaze procesorja, ali v prenosno rutino, ki jih izvaja kot običajno aritmetiko. Ta izbira živi znotraj kriptografske knjižnice in se zgodi ob njeni inicializaciji.

Druga os je umestitev: ali paket potuje po transformacijski poti jedra, ali pa demon v uporabniškem prostoru bere iz tunelske naprave, šifrira in zapiše nazaj.

Nobena os ne omejuje druge. VPN v uporabniškem prostoru na procesorju z ukazi AES jih lahko uporablja ves čas, pot skozi jedro na procesorju brez njih pa se vrne na programsko izvedbo. Oznake v gradivu dobaviteljev redko naredijo to razliko, zato nasveti za nastavljanje, kopirani med obema situacijama, tako pogosto ne naredijo ničesar.

Os ena: katera koda izvaja šifriranje

OpenSSL med inicializacijo zazna lastnosti procesorja in rezultat uporabi za izbiro optimiziranih poti kode, kot opisuje dokumentacija o zmožnostih x86. AES-NI je ena od dokumentiranih zmožnosti za tem usmerjanjem. Nič od tega ne zahteva, da bi knjižnica postala del jedra.

Preverite, da je lastnost vidna procesu, preden domnevate, da se uporablja hitra pot. V Linuxu je vir polje flags v /proc/cpuinfo, znotraj gosta pa odraža, kar izpostavi hipervizor, in ne imena modela fizičnega gostitelja.

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

Drugi ukaz poimenuje ponudnike, naložene v tisti gradnji. Ne pove, na katero knjižnico je povezala storitev VPN, in en gostitelj lahko nosi dve namestitvi OpenSSL, medtem ko tekoči proces uporablja le eno od njiju.

Os dve: kje teče pot paketov

Umestitev v jedro pomeni, da se pretvorba zgodi v lastnem mehanizmu IPsec jedra ali v gonilniku tunela v jedru, zato paketom ni treba na pot tja in nazaj skozi proces v uporabniškem prostoru za vsako skupino. To lahko zmanjša kopiranja in preklope konteksta ter razdeli delo po jedrih tako, kot enonitni demon ne more. Premakne tudi števce in sledi, ki jih boste brali, ko pretok pade, ker delo zdaj poteka na drugi strani meje, ki je ne nadzorujete. To imejte za strošek odpravljanja napak, ne le za odločitev o zmogljivosti.

Ne ustvarja podpore za ukaze, ne nastavi šifre in ne usposobi obstoječe poti.

Virtualizacija doda gubo tudi na tej osi. Gost lahko dobi maskiran model procesorja, ki skriva lastnosti, ki jih ima gostitelj, gnezdeni gost pa vidi še manj. Pogled na zmožnosti berite znotraj okolja, kjer VPN v resnici teče, ne s konzole hipervizorja.

Kaj vsaka izbira kupi in česa ne more

Praktično vprašanje je, kam gre čas. Če pretok omejuje ena zasedena nit, ponavljajoče se kopije medpomnilnika ali sistemski klic na paket, lahko premik pretvorbe na pot, ki te stroške odpravi, pomaga, če jedro izvede pretvorbo, ki jo potrebujete.

Če je meja preobremenjena povezava navzgor, pot z izgubami, dolg čas kroženja, nasičena ciljna storitev ali ena nit, pripeta na eno jedro, umestitev ne spremeni ničesar pomembnega. Enako velja za izbiro ukazov: AES na namenski strojni opremi ne popravi manjkajoče poti in ne pomaga, če tunel miruje, ker razreševanje imen spodleti.

Kjer velja oboje, se sestavita. Pot skozi jedro lahko uporablja isto usmerjanje na ravni ukazov znotraj kriptografskega API-ja jedra, pot v uporabniškem prostoru z dobro izbrano knjižnico pa ga že uporablja. Odločitev ni, katera je hitrejša v abstraktnem smislu, ampak za kateri strošek imate dokaz.

Zapišite štiri dejstva, preden kar koli spremenite

Zapišite binarno datoteko storitve in kriptografsko knjižnico, s katero je povezana, ker ti določata prvo os. Nato zabeležite dogovorjeno zaščito podatkov, ker se šifra brez namenske ukazne poti obnaša drugače kot tista z njo, nabor pa izbereta obe strani.

Nato pogled na zmožnosti znotraj delujočega okolja in nazadnje aktivna pot paketov z dokazom, da je način, ki ga imate za vklopljenega, res tak. Naložen modul ni dokaz, da ga profil uporablja, in vrstica konfiguracije ni dokaz, da jo je jedro sprejelo.

Spremenite eno stvar in nato primerjajte z enakomerno obremenitvijo z istimi končnimi točkami in isto smerjo prenosa. Trditev o hitrosti, ki je niste izmerili, je vredna manj kot zapisek, da ozadje nikoli ni bilo pod vprašajem.

Sorodni članki