OpenSSL-də AES-NI və nüvəyə ötürmə: hansı sizə lazımdır?
CPU təlimat dəstəyini paketlərin emal olunduğu yerdən ayırın: sazlamaqdan əvvəl kripto backendinə, razılaşdırılmış şifrəyə və canlı yola baxın.
İki etiket sanki eyni şey imiş kimi istifadə olunur: aparat sürətləndirməsi və nüvəyə ötürmə. Biri kitabxananın AES rutininin hansı təlimatları icra etdiyini, digəri isə paket emalının harada baş verdiyini təsvir edir. VPN birincisi olub ikincisi olmadan, ikincisi olub birincisi olmadan və ya hər ikisi ilə birlikdə ola bilər. Məhsuldarlıqla bağlı verdiyiniz hər hansı qərar, əslində hansını dəyişdiyinizi adlandırmaqla başlamalıdır.
İki ox, tək bal deyil
Birinci ox tətbiqdir: AES-256-GCM edən kod prosessorun xüsusi təlimatlarından istifadə edən versiyaya, yoxsa onları adi hesab əməliyyatı kimi icra edən daşınan rutinə yönəlir? Bu seçim kriptoqrafik kitabxananın içindədir və o, işə düşərkən verilir.
İkinci ox yerləşdirmədir: paket nüvənin transformasiya yolundan keçir, yoxsa istifadəçi məkanındakı demon tunel qurğusundan oxuyur, şifrələyir və geri yazır.
Heç bir ox digərini məhdudlaşdırmır. AES təlimatları olan prosessorda işləyən istifadəçi məkanı VPN-i bütün müddət onlardan istifadə edə bilər, təlimatsız prosessorda nüvə yolu isə proqram tətbiqinə qayıdır. Satıcı materiallarındakı etiketlər bu fərqi nadir hallarda göstərir, buna görə də iki vəziyyət arasında köçürülən sazlama məsləhətləri çox vaxt heç nə etmir.
Birinci ox: şifrələməni hansı kod yerinə yetirir
OpenSSL işə düşərkən prosessor xüsusiyyətlərini aşkar edir və nəticəni optimallaşdırılmış kod yollarını seçmək üçün istifadə edir, bunu x86 imkanları sənədi təsvir edir. AES-NI bu yönləndirmənin arxasındakı sənədləşdirilmiş imkanlardan biridir. Bunların heç biri kitabxananın nüvə komponentinə çevrilməsini tələb etmir.
Sürətli yolun seçildiyini fərz etməzdən əvvəl xüsusiyyətin prosesə görünən olduğunu təsdiqləyin. Linux-da mənbə /proc/cpuinfo faylının flags sahəsidir və qonaq daxilində bu, fiziki hostun model adını deyil, hipervizorun açıq etdiyini əks etdirir.
grep -m1 '^flags' /proc/cpuinfo | grep -o '\baes\b'
openssl list -providers -verboseİkinci əmr həmin buraxılışda yüklənmiş provayderləri adlandırır. O, VPN xidmətinin hansı kitabxananı link etdiyini demir və host iki OpenSSL quraşdırması daşıya bilər, halbuki işləyən proses onlardan yalnız birini istifadə edir.
İkinci ox: paket yolu harada işləyir
Nüvə yerləşdirməsi transformasiyanın nüvənin öz IPsec mexanizmində və ya nüvə daxilindəki tunel sürücüsündə baş verməsi deməkdir, beləliklə paketlər hər partiya üçün istifadəçi məkanı prosesindən gediş-dönüş etməyə ehtiyac duymur. Bu, kopyaları və kontekst keçidlərini azalda bilər və işi tək yivli demonun bacarmadığı şəkildə nüvələr arasında yaya bilər. O, həm də ötürmə qabiliyyəti düşəndə oxuyacağınız sayğacları və izləri köçürür, çünki iş artıq nəzarət etmədiyiniz sərhədin o tərəfində baş verir. Buna yalnız məhsuldarlıq qərarı kimi deyil, sazlama xərci kimi baxın.
O, təlimat dəstəyi yaratmır, şifrə konfiqurasiya etmir və mövcud marşrutu işlək etmir.
Virtualizasiya bu oxa da bir qırış əlavə edir. Qonağa hostun malik olduğu xüsusiyyətləri gizlədən maskalanmış prosessor modeli verilə bilər və iç-içə qonaq daha azını görə bilər. İmkan görünüşünü hipervizor konsolundan deyil, VPN-in həqiqətən işlədiyi mühitin içindən oxuyun.
Hər seçim nə qazandırır və nəyi bacarmır
Praktik sual vaxtın hara getdiyidir. Əgər ötürmə qabiliyyətini bir məşğul yiv, təkrar bufer kopyaları və ya hər paket üçün sistem çağırışı nümunəsi məhdudlaşdırırsa, transformasiyanı bu xərcləri aradan qaldıran yola köçürmək kömək edə bilər, bir şərtlə ki, nüvə sizə lazım olan transformasiyanı tətbiq etsin.
Əgər məhdudiyyət tıxanmış yuxarı kanal, itkili yol, uzun gediş-dönüş, doymuş təyinat xidməti və ya bir nüvəyə bərkidilmiş bir yivdirsə, yerləşdirmə vacib heç nəyi dəyişmir. Eyni şey təlimat seçiminə də aiddir: xüsusi aparatda AES itkin marşrutu bərpa edə bilməz və tunel ad həllinin uğursuzluğundan boşdursa, kömək etməyəcək.
Hər ikisinin aid olduğu yerlərdə onlar birləşir. Nüvə yolu nüvənin kripto API-si daxilində eyni təlimat səviyyəli yönləndirmədən istifadə edə bilər və yaxşı seçilmiş kitabxana ilə istifadəçi məkanı yolu artıq ondan istifadə edir. Qərar abstraktda hansının daha sürətli olması deyil; hansı xərc üçün sübutunuz olduğudur.
Nəyisə dəyişməzdən əvvəl dörd faktı qeyd edin
Xidmət binarını və onun link etdiyi kripto kitabxanasını yazın, çünki bunlar birinci oxu müəyyən edir. Sonra razılaşdırılmış məlumat mühafizəsini qeyd edin, çünki xüsusi təlimat yolu olmayan şifrə onunla olan şifrədən fərqli davranır və dəst hər iki tərəf tərəfindən seçilir.
Sonra, işləyən mühitin içindən imkan görünüşü və nəhayət, aktiv paket yolu ilə yanaşı, düşündüyünüz rejimin həqiqətən aktiv olduğuna dair sübut. Yüklənmiş modul profilin ondan istifadə etdiyinə sübut deyil və konfiqurasiya sətri nüvənin onu qəbul etdiyinə sübut deyil.
Bir şeyi dəyişin, sonra eyni son nöqtələr və eyni ötürmə istiqaməti ilə ardıcıl iş yükünə qarşı müqayisə edin. Ölçmədiyiniz sürət iddiası, backendin heç vaxt şübhə altında olmadığını söyləyən qeyddən az dəyərlidir.