AES-NI OpenSSL vai pārvietošana uz kodolu: kuru jums vajag?
Atdaliet CPU instrukciju atbalstu no vietas, kur tiek apstrādātas paketes: pirms regulēšanas pārbaudiet kripto aizmuguri, saskaņoto šifru un aktīvo ceļu.
Divi apzīmējumi tiek lietoti tā, it kā tie būtu viens un tas pats: aparatūras paātrināts un pārvietots uz kodolu. Viens apraksta, kādas instrukcijas izpilda bibliotēkas AES procedūra, otrs apraksta, kur notiek pakešu apstrāde. VPN var būt pirmais bez otrā, otrais bez pirmā vai abi kopā. Jebkuram lēmumam par veiktspēju jāsākas ar to, ka nosaucat, kuru no abiem jūs patiešām maināt.
Divas asis, nevis viens vērtējums
Pirmā ass ir ieviešana: vai kods, kas veic AES-256-GCM, tiek novirzīts uz versiju, kas izmanto procesora īpašās instrukcijas, vai uz pārvietojamu procedūru, kas tās izpilda kā parastu aritmētiku. Šī izvēle dzīvo kriptogrāfiskās bibliotēkas iekšienē un tiek izdarīta, to inicializējot.
Otrā ass ir izvietojums: vai pakete iet caur kodola transformācijas ceļu, vai lietotāja telpas dēmons lasa no tuneļa ierīces, šifrē un raksta atpakaļ.
Neviena ass neierobežo otru. VPN lietotāja telpā uz procesora ar AES instrukcijām var tās izmantot visu laiku, un kodola ceļš uz procesora bez tām atgriežas pie programmatūras ieviešanas. Piegādātāju materiālos apzīmējumi reti parāda šo atšķirību, tāpēc regulēšanas padomi, kas pārkopēti starp abām situācijām, tik bieži neko nedara.
Pirmā ass: kurš kods veic šifrēšanu
OpenSSL inicializācijas laikā nosaka procesora īpašības un izmanto rezultātu optimizētu koda ceļu izvēlei, kā apraksta x86 iespēju dokumentācija. AES-NI ir viena no dokumentētajām iespējām aiz šīs novirzīšanas. Nekas no tā neprasa, lai bibliotēka kļūtu par kodola komponenti.
Pirms pieņemat, ka tiek izmantots ātrais ceļš, pārliecinieties, ka īpašība ir redzama procesam. Linux gadījumā avots ir flags lauks /proc/cpuinfo, un viesa iekšienē tas atspoguļo to, ko atklāj hipervizors, nevis fiziskā resursdatora modeļa nosaukumu.
grep -m1 '^flags' /proc/cpuinfo | grep -o '\baes\b'
openssl list -providers -verboseOtrā komanda nosauc šajā būvējumā ielādētos nodrošinātājus. Tā nepasaka, kuru bibliotēku ir saistījis VPN pakalpojums, un viens resursdators var saturēt divas OpenSSL instalācijas, kamēr darbojošais process izmanto tikai vienu no tām.
Otrā ass: kur darbojas pakešu ceļš
Izvietošana kodolā nozīmē, ka transformācija notiek paša kodola IPsec mehānismā vai kodolā esošā tuneļa draiverī, tāpēc paketēm nav vajadzīgs ceļojums turp un atpakaļ caur lietotāja telpas procesu katrai partijai. Tas var samazināt kopēšanu un konteksta pārslēgšanu un sadalīt darbu pa kodoliem tā, kā viena pavediena dēmons to nevar. Tas arī pārvieto skaitītājus un pēdas, ko lasīsiet, kad caurlaidspēja kritīsies, jo darbs tagad notiek robežas otrā pusē, kuru jūs nekontrolējat. Uzskatiet to par atkļūdošanas izmaksām, ne tikai par veiktspējas lēmumu.
Tas nerada instrukciju atbalstu, nekonfigurē šifru un nepadara esošu maršrutu darbspējīgu.
Virtualizācija pievieno kroku arī šai asij. Viesim var dot maskētu procesora modeli, kas slēpj īpašības, kuras ir resursdatoram, un ligzdotais viesis var redzēt vēl mazāk. Iespēju skatu lasiet no vides, kurā VPN patiešām darbojas, nevis no hipervizora konsoles.
Ko katrs lēmums nopērk un ko nevar
Praktiskais jautājums ir, kur aiziet laiks. Ja caurlaidspēju ierobežo viens aizņemts pavediens, atkārtotas bufera kopijas vai sistēmas izsaukums katram paketei, transformācijas pārvietošana uz ceļu, kas šīs izmaksas novērš, var palīdzēt, ja kodols ievieš vajadzīgo transformāciju.
Ja ierobežojums ir pārslogots augšupceļš, ceļš ar zudumiem, ilgs turp un atpakaļ laiks, piesātināts galamērķa pakalpojums vai viens kodolam piesaistīts pavediens, izvietojums nemaina neko svarīgu. Tas pats attiecas uz instrukciju izvēli: AES uz īpašas aparatūras nevar salabot trūkstošu maršrutu un nepalīdzēs, ja tunelis ir dīkstāvē, jo neizdodas nosaukumu izšķiršana.
Kur darbojas abi, tie papildina viens otru. Kodola ceļš var izmantot to pašu instrukciju līmeņa novirzīšanu kodola kripto API iekšienē, un lietotāja telpas ceļš ar labi izvēlētu bibliotēku to jau izmanto. Lēmums nav par to, kurš abstrakti ir ātrāks, bet par to, par kuru izmaksu jums ir pierādījumi.
Pierakstiet četrus faktus, pirms kaut ko maināt
Pierakstiet pakalpojuma bināro failu un kriptogrāfisko bibliotēku, ar ko tas ir saistīts, jo tie nosaka pirmo asi. Pēc tam pierakstiet saskaņoto datu aizsardzību, jo šifrs bez īpaša instrukciju ceļa uzvedas citādi nekā tāds ar to, un komplektu izvēlas abas puses.
Tālāk iespēju skats no darbojošās vides iekšienes un visbeidzot aktīvais pakešu ceļš ar pierādījumu, ka režīms, ko uzskatāt par ieslēgtu, patiešām tāds ir. Ielādēts modulis nav pierādījums, ka profils to izmanto, un konfigurācijas rinda nav pierādījums, ka kodols to ir pieņēmis.
Mainiet vienu lietu, tad salīdziniet ar konsekventu darba slodzi ar tiem pašiem galapunktiem un to pašu pārsūtīšanas virzienu. Ātruma apgalvojums, ko neesat izmērījis, ir mazāk vērts nekā piezīme, ka aizmugure nekad nav bijusi apšaubīta.