Екі белгі бір нәрсе сияқты қолданылады: аппараттық жеделдету және ядроға ауыстыру. Бірі кітапхананың AES рәсімі қандай нұсқаулықтарды орындайтынын сипаттайды, екіншісі пакеттерді өңдеу қайда жүретінін сипаттайды. VPN біріншісін екіншісіз, екіншісін біріншісіз немесе екеуін де бірге ұстай алады. Өнімділік туралы кез келген шешім осы екеуінің қайсысын шын мәнінде өзгертіп жатқаныңызды атаудан басталуы керек.

Екі ось, бір ұпай емес

Бірінші ось — іске асыру: AES-256-GCM жасайтын код процессордың арнайы нұсқаулықтарын қолданатын нұсқаға жіберіле ме, әлде оларды қарапайым арифметика ретінде орындайтын тасымалданатын рәсімге жіберіле ме. Бұл таңдау криптографиялық кітапхананың ішінде өмір сүреді және ол іске қосылғанда жасалады.

Екінші ось — орналасу: пакет ядроның түрлендіру жолымен өте ме, әлде пайдаланушы кеңістігіндегі демон туннель құрылғысынан оқып, шифрлап, кері жаза ма.

Ешбір ось екіншісін шектемейді. AES нұсқаулықтары бар процессордағы пайдаланушы кеңістігінің VPN оларды үнемі қолдануы мүмкін, ал олар жоқ процессордағы ядро жолы бағдарламалық іске асыруға оралады. Жеткізушілер материалдарындағы белгілер бұл айырмашылықты сирек көрсетеді, сондықтан екі жағдай арасында көшірілген реттеу кеңестері соншалықты жиі ештеңе істемейді.

Бірінші ось: шифрлауды қай код жасайды

OpenSSL іске қосылу кезінде процессордың ерекшеліктерін анықтайды және нәтижені оңтайландырылған код жолдарын таңдауға пайдаланады, мұны x86 мүмкіндіктерінің құжаты сипаттайды. AES-NI — сол бағыттаудың артындағы құжатталған мүмкіндіктердің бірі. Осының ешқайсысы кітапхананың ядро құрамдас бөлігіне айналуын талап етпейді.

Жылдам жол қолданылады деп болжамас бұрын ерекшеліктің процеске көрінетінін растаңыз. Linux-те дереккөз /proc/cpuinfo ішіндегі flags өрісі, ал қонақтың ішінде ол гипервизор ашатынын көрсетеді, физикалық хосттың үлгі атауын емес.

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

Екінші пәрмен сол құрылымда жүктелген провайдерлерді атайды. Ол VPN қызметі қай кітапханаға қосылғанын айтпайды, ал бір хост екі OpenSSL орнатуын алып жүруі мүмкін, бірақ жұмыс істеп тұрған процесс олардың тек біреуін қолданады.

Екінші ось: пакет жолы қайда жүреді

Ядрода орналасу түрлендірудің ядроның өз IPsec механизмінде немесе ядро ішіндегі туннель драйверінде жүретінін білдіреді, сондықтан пакеттер әр топтама үшін пайдаланушы кеңістігі процесі арқылы барып-қайтуды қажет етпейді. Бұл көшірмелер мен контекст ауысуларын азайтып, жұмысты ядролар арасында бір ағынды демон жасай алмайтын тәсілмен тарата алады. Ол сондай-ақ өткізу қабілеті төмендегенде оқитын есептегіштер мен іздерді жылжытады, өйткені жұмыс енді сіз бақыламайтын шекараның арғы жағында жүреді. Мұны тек өнімділік шешімі емес, жөндеу шығыны деп қараңыз.

Ол нұсқаулық қолдауын жасамайды, шифрды конфигурацияламайды және бар жолды жұмыс істетпейді.

Виртуалдау бұл оське де қатпар қосады. Қонаққа хостта бар ерекшеліктерді жасыратын маскаланған процессор үлгісі берілуі мүмкін, ал кірістірілген қонақ одан да азын көруі мүмкін. Мүмкіндіктер көрінісін VPN шын мәнінде жұмыс істейтін ортаның ішінен оқыңыз, гипервизор консолінен емес.

Әр таңдау не сатып алады және не істей алмайды

Практикалық сұрақ — уақыт қайда кетеді. Егер өткізу қабілетін бір бос емес ағын, буфердің қайталанатын көшірмелері немесе әр пакетке жүйелік шақыру шектеп тұрса, түрлендіруді сол шығындарды жоятын жолға көшіру көмектесуі мүмкін, бірақ ядро сізге қажет түрлендіруді іске асырған жағдайда.

Егер шектеу — кептелген жоғары арна, шығыны бар жол, ұзақ барып-қайту уақыты, қаныққан межелі қызмет немесе бір ядроға бекітілген ағын болса, орналасу маңызды ештеңені өзгертпейді. Нұсқаулық таңдауға да сол қатысты: арнайы аппаратурадағы AES жоғалған жолды жөндей алмайды және атауларды шешу сәтсіздігінен туннель бос тұрса, көмектеспейді.

Екеуі де қолданылатын жерде олар бірігеді. Ядро жолы ядроның крипто API ішіндегі сол нұсқаулық деңгейіндегі бағыттауды қолдана алады, ал жақсы таңдалған кітапханасы бар пайдаланушы кеңістігі жолы оны әлдеқашан қолданып жүр. Шешім — қайсысы абстракцияда жылдамырақ емес; шешім — қай шығын үшін дәлеліңіз бар.

Бірдеңені өзгертуден бұрын төрт фактіні жазыңыз

Қызметтің бинарлық файлын және ол қосылған криптографиялық кітапхананы жазыңыз, өйткені олар бірінші осьті анықтайды. Содан кейін келісілген деректер қорғанысын жазып қойыңыз, өйткені арнайы нұсқаулық жолы жоқ шифр онысы бар шифрден өзгеше әрекет етеді, ал жиынтықты екі жақ та таңдайды.

Одан кейін жұмыс істеп тұрған ортаның ішінен мүмкіндіктер көрінісі, соңында қосылған деп ойлайтын режимнің шынымен солай екенін дәлелдейтін белсенді пакет жолы. Жүктелген модуль профиль оны қолданатынын дәлелдемейді, ал конфигурация жолы ядро оны қабылдағанын дәлелдемейді.

Бір нәрсені өзгертіп, содан кейін бірдей соңғы нүктелер мен бірдей тасымалдау бағыты бар біркелкі жүктемемен салыстырыңыз. Өлшемеген жылдамдық туралы мәлімдеме бэкенд ешқашан күмән тудырмағаны туралы жазбадан құнсыз.

Қатысты мақалалар