Две ознаки се користат како да се исто: хардверски забрзано и префрлено во јадрото. Едната опишува кои инструкции ги извршува AES-рутината на некоја библиотека, а другата опишува каде се одвива обработката на пакетите. VPN може да ја има првата без втората, втората без првата или двете заедно. Секоја одлука за перформансите мора да започне со именување на тоа која од двете всушност ја менувате.

Две оски, а не еден резултат

Првата оска е имплементацијата: дали кодот што го извршува AES-256-GCM се насочува кон верзија што ги користи посветените инструкции на процесорот или кон пренослива рутина што ги извршува како обична аритметика. Тој избор живее внатре во криптографската библиотека и се прави при нејзиното иницијализирање.

Втората оска е поставеноста: дали пакетот поминува низ патеката за трансформација на јадрото или демон во корисничкиот простор чита од тунелски уред, шифрира и запишува назад.

Ниту една оска не ја ограничува другата. VPN во корисничкиот простор на процесор со AES-инструкции може да ги користи постојано, а патека низ јадрото на процесор без нив се враќа на софтверска имплементација. Ознаките во материјалите на добавувачите ретко ја прават таа разлика, и затоа советите за подесување прекопирани меѓу двете ситуации толку често не прават ништо.

Оска еден: кој код го врши шифрирањето

OpenSSL ги открива карактеристиките на процесорот при иницијализирање и го користи резултатот за избор на оптимизирани кодни патеки, како што опишува документацијата за можностите на x86. AES-NI е една од документираните можности зад тоа насочување. Ништо од ова не бара библиотеката да стане компонента на јадрото.

Потврдете дека карактеристиката е видлива за процесот пред да претпоставите дека се користи брзата патека. На Linux изворот е полето flags во /proc/cpuinfo, а внатре во гостин ги одразува она што го изложува хипервизорот, а не името на моделот на физичкиот домаќин.

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

Втората команда ги именува провајдерите вчитани во тој build. Таа не ви кажува која библиотека ја поврзал VPN-сервисот, а еден домаќин може да носи две инсталации на OpenSSL додека процесот што работи користи само една од нив.

Оска два: каде работи патеката на пакетите

Поставеноста во јадрото значи дека трансформацијата се одвива во сопствениот IPsec-механизам на јадрото или во тунелски драјвер внатре во јадрото, така што пакетите не бараат патување напред и назад низ процес во корисничкиот простор за секоја група. Тоа може да ги намали копирањата и префрлањата на контекст и да ја распредели работата по јадра на начин што еднонишков демон не може. Исто така ги преместува бројачите и трагите што ќе ги читате кога пропусноста ќе падне, бидејќи работата сега се одвива од другата страна на граница што не ја контролирате. Сметајте го тоа како трошок за отстранување грешки, а не само како одлука за перформанси.

Тоа не создава поддршка за инструкции, не конфигурира шифра и не ја оспособува постоечката рута.

Виртуализацијата додава набор и на оваа оска. На гостин може да му се даде маскиран модел на процесор што ги крие карактеристиките што ги има домаќинот, а вгнезден гостин може да види уште помалку. Читајте го прегледот на можности од внатрешноста на околината во која VPN навистина работи, а не од конзолата на хипервизорот.

Што купува секој избор и што не може

Практичното прашање е каде оди времето. Ако пропусноста ја ограничуваат една зафатена нишка, повторени копии на баферот или системски повик по пакет, преместувањето на трансформацијата на патека што ги отстранува тие трошоци може да помогне, под услов јадрото да ја имплементира трансформацијата што ви треба.

Ако границата е преоптоварен нагорен канал, патека со загуби, долго време на патување, заситен целен сервис или една нишка прицврстена за едно јадро, поставеноста не менува ништо важно. Истото важи и за изборот на инструкции: AES на посветен хардвер не може да поправи рута што недостига и нема да помогне ако тунелот е неактивен зашто резолуцијата на имиња не успева.

Каде важат двете, тие се составуваат. Патека низ јадрото може да го користи истото насочување на ниво на инструкции внатре во крипто-API на јадрото, а патека во корисничкиот простор со добро избрана библиотека веќе го користи тоа. Одлуката не е која е побрза во апстракција; туку за кој трошок имате доказ.

Запишете ги четирите факти пред да промените нешто

Запишете ја бинарната датотека на сервисот и криптографската библиотека со која е поврзан, зашто тие ја одредуваат оската еден. Потоа запишете ја договорената заштита на податоците, зашто шифра без посветена инструкциска патека се однесува поинаку од онаа со неа, а сетот го избираат двете страни.

Потоа прегледот на можности од внатрешноста на околината што работи и на крајот активната патека на пакетите со доказ дека режимот што мислите дека е вклучен навистина е таков. Вчитан модул не е доказ дека профил го користи, а конфигурациска линија не е доказ дека јадрото ја прифатило.

Променете едно нешто, па споредете со доследно оптоварување со исти крајни точки и иста насока на пренос. Тврдење за брзина што не сте го измериле вреди помалку од забелешка дека бекендот никогаш не бил под сомнение.

Поврзани статии