Du etikedoj estas uzataj kvazaŭ ili estus la sama afero: aparatare akcelita kaj kern-niveligita. Unu priskribas, kiujn instrukciojn la AES-rutino de biblioteko plenumas, kaj la alia priskribas, kie okazas la prilaborado de pakaĵoj. VPN povas havi la unuan sen la dua, la duan sen la unua, aŭ ambaŭ samtempe. Ĉiu decido pri rendimento devas komenci per nomado, kiun el la du vi efektive ŝanĝas.

Du aksoj, ne unu poentaro

La unua akso estas la efektivigo: ĉu la kodo, kiu plenumas AES-256-GCM, estas direktata al versio, kiu uzas la dediĉitajn instrukciojn de la procesoro, aŭ al portebla rutino, kiu plenumas ilin kiel ordinaran aritmetikon. Tiu elekto loĝas ene de la kriptografia biblioteko kaj estas farata, kiam ĝi pravalorizas.

La dua akso estas la lokigo: ĉu la pakaĵo trapasas la transforman vojon de la kerno, aŭ demono en la uzantospaco legas el tunela aparato, ĉifras kaj reskribas.

Neniu akso limigas la alian. VPN en la uzantospaco sur procesoro kun AES-instrukcioj povas uzi ilin la tutan tempon, kaj kern-vojo sur procesoro sen ili reiras al programara efektivigo. La etikedoj en materialoj de vendistoj malofte faras tiun distingon, kaj tial agordaj konsiloj kopiitaj inter la du situacioj tiel ofte faras nenion.

Akso unu: kiu kodo plenumas la ĉifradon

OpenSSL detektas procesorajn trajtojn dum pravalorizo kaj uzas la rezulton por elekti optimumigitajn kodovojojn, kiel priskribas la dokumentaro pri kapabloj de x86. AES-NI estas unu el la dokumentitaj kapabloj malantaŭ tiu dissendo. Nenio el tio postulas, ke la biblioteko fariĝu kern-komponanto.

Konfirmu, ke la trajto estas videbla al la procezo antaŭ ol supozi, ke la rapida vojo estas uzata. En Linux la fonto estas la kampo flags en /proc/cpuinfo, kaj ene de gasto ĝi spegulas tion, kion elmetas la hipervizoro, ne la modelnomon de la fizika gastiganto.

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

La dua komando nomas la provizantojn ŝargitajn en tiu konstruo. Ĝi ne diras al vi, kiun bibliotekon la VPN-servo ligis, kaj gastiganto povas porti du OpenSSL-instalaĵojn dum la kuranta procezo uzas nur unu el ili.

Akso du: kie la pakaĵa vojo kuras

Lokigo en la kerno signifas, ke la transformo okazas en la propra IPsec-maŝinaro de la kerno aŭ ene de tunela pelilo en la kerno, do la pakaĵoj ne bezonas vojaĝon tien kaj reen tra uzantospaca procezo por ĉiu aro. Tio povas malpliigi kopiojn kaj kuntekstajn ŝaltadojn, kaj povas disvastigi la laboron inter kernoj tiel, kiel unu-fadena demono ne povas. Ĝi ankaŭ translokas la nombrilojn kaj spurojn, kiujn vi legos, kiam la trairo falos, ĉar la laboro nun okazas trans limo, kiun vi ne kontrolas. Konsideru tion kiel sencimigan koston, ne nur kiel rendimendan decidon.

Ĝi ne kreas instrukcian subtenon, ne agordas ĉifron kaj ne igas ekzistantan vojon funkcii.

Virtualigo aldonas falton ankaŭ sur ĉi tiu akso. Gasto povas ricevi maskitan procesoran modelon, kiu kaŝas trajtojn, kiujn havas la gastiganto, kaj nestita gasto povas vidi eĉ malpli. Legu la kapablan vidon el la interno de la medio, kie la VPN efektive kuras, ne el la konzolo de la hipervizoro.

Kion ĉiu elekto aĉetas, kaj kion ĝi ne povas

La praktika demando estas, kien iras la tempo. Se unu okupata fadeno, ripetaj bufraj kopioj aŭ sistema alvoko por ĉiu pakaĵo limigas la trairon, translokigi la transformon al vojo, kiu forigas tiujn kostojn, povas helpi, kondiĉe ke la kerno efektivigu la transformon, kiun vi bezonas.

Se la limo estas kongestita suprena ligilo, perda vojo, longa rondira tempo, saturita celloka servo aŭ unu fadeno fiksita al unu kerno, la lokigo ŝanĝas nenion gravan. La samo validas por la elekto de instrukcioj: AES sur dediĉita aparataro ne povas ripari mankan vojon kaj ne helpos, se la tunelo senokupas ĉar la nomrezolucio malsukcesas.

Kie validas ambaŭ, ili kunmetiĝas. Kern-vojo povas uzi la saman dissendon je instrukcia nivelo ene de la kripto-API de la kerno, kaj uzantospaca vojo kun bone elektita biblioteko jam uzas ĝin. La decido ne estas, kiu estas pli rapida abstrakte; ĝi estas, por kiu kosto vi havas pruvon.

Notu la kvar faktojn antaŭ ol ŝanĝi ion ajn

Skribu la servan binaran dosieron kaj la kriptografian bibliotekon, al kiu ĝi ligiĝas, ĉar tiuj decidas akson unu. Poste notu la interkonsentitan datumprotekton, ĉar ĉifro sen dediĉita instrukcia vojo kondutas alie ol unu kun ĝi, kaj la aron elektas ambaŭ flankoj.

Sekve, la kapabla vido el la interno de la kuranta medio, kaj fine la aktiva pakaĵa vojo kun pruvo, ke la reĝimo, kiun vi opinias ŝaltita, vere estas tia. Ŝargita modulo ne estas pruvo, ke profilo uzas ĝin, kaj agorda linio ne estas pruvo, ke la kerno akceptis ĝin.

Ŝanĝu unu aferon, poste komparu kun konsekvenca laborŝarĝo kun la samaj finpunktoj kaj la sama transiga direkto. Rapideca aserto, kiun vi ne mezuris, valoras malpli ol noto diranta, ke la malantaŭo neniam estis dubinda.

Rilataj artikoloj