AES-NI yn OpenSSL neu oddi ar y cnewyllyn: pa un sydd ei angen arnoch?
Gwahanwch gefnogaeth cyfarwyddiadau CPU oddi wrth y fan lle prosesir pecynnau: gwiriwch y backend crypto, y seiffr a drafodwyd a@APOS@r llwybr byw cyn addasu.
Defnyddir dau label fel pe baent yr un peth: wedi’i gyflymu gan galedwedd ac wedi’i drosglwyddo i’r cnewyllyn. Mae un yn disgrifio pa gyfarwyddiadau y mae rhwtîn AES llyfrgell yn eu gweithredu, a’r llall yn disgrifio lle mae prosesu pecynnau yn digwydd. Gall VPN gael y cyntaf heb yr ail, yr ail heb y cyntaf, neu’r ddau ar unwaith. Rhaid i unrhyw benderfyniad am berfformiad ddechrau drwy enwi pa un o’r ddau rydych chi’n ei newid mewn gwirionedd.
Dau echel, nid un sgôr
Yr echel gyntaf yw’r gweithrediad: a yw’r cod sy’n gwneud AES-256-GCM yn cael ei anfon at fersiwn sy’n defnyddio cyfarwyddiadau pwrpasol y prosesydd, neu at rwtîn gludadwy sy’n eu gweithredu fel rhifyddeg gyffredin. Mae’r dewis hwnnw yn byw y tu mewn i’r llyfrgell gryptograffig ac yn cael ei wneud pan fydd yn cychwyn.
Yr ail echel yw’r lleoliad: a yw’r pecyn yn mynd trwy lwybr trawsnewid y cnewyllyn, neu a yw daemon yn y gofod defnyddiwr yn darllen o ddyfais twnnel, yn amgryptio ac yn ysgrifennu’n ôl.
Nid yw’r naill echel yn cyfyngu’r llall. Gall VPN yn y gofod defnyddiwr ar CPU sydd â chyfarwyddiadau AES fod yn eu defnyddio drwy’r amser, ac mae llwybr cnewyllyn ar CPU heb y rheini yn disgyn yn ôl i weithrediad meddalwedd. Anaml y mae’r labeli ym mhethannau gwerthwyr yn gwneud y gwahaniaeth hwnnw, a dyna pam nad yw cyngor addasu a gopïwyd rhwng y ddwy sefyllfa yn aml yn gwneud dim.
Echel un: pa god sy’n amgryptio
Mae OpenSSL yn canfod nodweddion y prosesydd wrth gychwyn ac yn defnyddio’r canlyniad i ddewis llwybrau cod wedi’u hoptimeiddio, fel y mae’r ddeunydd am alluoedd x86 yn ei ddisgrifio. Mae AES-NI yn un o’r galluoedd a gofnodwyd y tu ôl i’r anfon hwnnw. Nid oes dim o hyn yn mynnu bod y llyfrgell yn dod yn rhan o’r cnewyllyn.
Cadarnhewch fod y nodwedd yn weladwy i’r broses cyn tybio bod y llwybr cyflym yn cael ei ddefnyddio. Ar Linux y ffynhonnell yw maes flags /proc/cpuinfo, ac y tu mewn i westai mae’n adlewyrchu’r hyn y mae’r hypervisor yn ei ddangos yn hytrach nag enw model y gwesteiwr ffisegol.
grep -m1 '^flags' /proc/cpuinfo | grep -o '\baes\b'
openssl list -providers -verboseMae’r ail orchymyn yn enwi’r darparwyr a lwythwyd yn y gwaith adeiladu hwnnw. Nid yw’n dweud wrthych pa lyfrgell y gwnaeth y gwasanaeth VPN ei chysylltu, a gall gwesteiwr gario dau osodiad OpenSSL tra mai dim ond un ohonynt y mae’r broses sy’n rhedeg yn ei ddefnyddio.
Echel dau: lle mae llwybr y pecynnau yn rhedeg
Mae lleoli yn y cnewyllyn yn golygu bod y trawsnewid yn digwydd ym mheiriannau IPsec y cnewyllyn ei hun neu y tu mewn i yrrydd twnnel yn y cnewyllyn, felly nid oes angen taith yno ac yn ôl trwy broses gofod defnyddiwr ar gyfer pob swp. Gall hynny leihau copïau a newidiadau cyd-destun, a gall ledaenu gwaith ar draws creiddiau mewn ffordd na all daemon un edefyn ei wneud. Mae hefyd yn symud y cyfrifwyr a’r olion y byddwch yn eu darllen pan fydd trwybwn yn gostwng, oherwydd mae’r gwaith nawr yn digwydd yr ochr draw i ffin nad ydych yn ei rheoli. Ystyriwch hynny fel cost dadfygio, nid yn unig fel penderfyniad perfformiad.
Nid yw’n creu cefnogaeth cyfarwyddiadau, nid yw’n ffurfweddu seiffr, ac nid yw’n gwneud llwybr sy’n bodoli yn gweithio.
Mae rhithwirio yn ychwanegu crych ar yr echel hon hefyd. Gall gwestai gael model prosesydd wedi’i fasgio sy’n cuddio nodweddion sydd gan y gwesteiwr, a gall gwestai nythog weld llai fyth. Darllenwch y wedd alluoedd o fewn yr amgylchedd lle mae’r VPN yn rhedeg mewn gwirionedd, nid o gonsol y hypervisor.
Beth mae pob dewis yn ei brynu, a’r hyn na all ei wneud
Y cwestiwn ymarferol yw i ble mae’r amser yn mynd. Os yw un edefyn prysur, copïau byffer ailadroddus neu batrwm galwad system fesul pecyn yn cyfyngu trwybwn, gall symud y trawsnewid i lwybr sy’n dileu’r costau hynny helpu, ar yr amod bod y cnewyllyn yn gweithredu’r trawsnewid sydd ei angen arnoch.
Os mai’r cyfyngiad yw cyswllt uwchrhwydwaith tagfeyd, llwybr colledus, amser cylchdaith hir, gwasanaeth cyrchfan dirlawn neu un edefyn wedi’i binio i un craidd, nid yw lleoli’n newid dim sy’n bwysig. Mae’r un peth yn wir am ddewis cyfarwyddiadau: ni all AES ar galedwedd pwrpasol drwsio llwybr coll, ac ni fydd yn helpu os yw’r twnnel yn segur oherwydd bod datrys enwau yn methu.
Lle mae’r ddau yn berthnasol, maent yn cyfuno. Gall llwybr cnewyllyn ddefnyddio’r un anfon ar lefel cyfarwyddiadau y tu mewn i API crypto y cnewyllyn, ac mae llwybr gofod defnyddiwr gyda llyfrgell a ddewiswyd yn dda eisoes yn ei ddefnyddio. Nid y cwestiwn yw pa un sy’n gyflymach yn y haniaethol; y cwestiwn yw pa gost y mae gennych dystiolaeth ar ei chyfer.
Cofnodwch y pedwar ffaith cyn newid unrhyw beth
Ysgrifennwch ffeil gorchymyn y gwasanaeth a’r llyfrgell griptograffig y mae’n cysylltu â hi, oherwydd y rheini sy’n penderfynu echel un. Yna cofnodwch y diogelwch data a drafodwyd, oherwydd mae seiffr heb lwybr cyfarwyddiadau pwrpasol yn ymddwyn yn wahanol i un sydd ag un, a’r ddwy ochr sy’n dewis y swît.
Nesaf, y wedd alluoedd o fewn yr amgylchedd sy’n rhedeg, ac yn olaf y llwybr pecynnau gweithredol gyda thystiolaeth bod y modd y credwch sydd wedi’i alluogi mewn gwirionedd felly. Nid yw modiwl wedi’i lwytho yn dystiolaeth bod proffil yn ei ddefnyddio, ac nid yw llinell ffurfweddu yn dystiolaeth bod y cnewyllyn wedi’i derbyn.
Newidiwch un peth, yna cymharwch â llwyth gwaith cyson gyda’r un pwyntiau terfyn a’r un cyfeiriad trosglwyddo. Mae honiad cyflymder na wnaethoch ei fesur yn werth llai na nodyn sy’n dweud nad oedd y backend erioed dan amheuaeth.