Kahta nimikettä käytetään kuin ne olisivat sama asia: laitteistokiihdytetty ja ytimeen siirretty. Toinen kuvaa, mitä käskyjä kirjaston AES-rutiini suorittaa, ja toinen kuvaa, missä pakettien käsittely tapahtuu. VPN:ssä voi olla ensimmäinen ilman toista, toinen ilman ensimmäistä tai molemmat yhtä aikaa. Jokainen suorituskykyä koskeva päätös on aloitettava nimeämällä, kumpaa niistä todella muutat.

Kaksi akselia, ei yksi pistemäärä

Ensimmäinen akseli on toteutus: ohjataanko AES-256-GCM:n tekevä koodi versioon, joka käyttää prosessorin erityiskäskyjä, vai siirrettävään rutiiniin, joka suorittaa ne tavallisena aritmetiikkana. Tämä valinta elää kryptografisen kirjaston sisällä ja tehdään sen alustuksessa.

Toinen akseli on sijoittelu: kulkeeko paketti ytimen muunnospolkua vai lukeeko käyttäjäavaruuden taustaprosessi tunnelilaitteesta, salaa ja kirjoittaa takaisin.

Kumpikaan akseli ei rajoita toista. Käyttäjäavaruuden VPN AES-käskyillä varustetulla suorittimella voi käyttää niitä koko ajan, ja ydinpolku ilman niitä olevalla suorittimella palaa ohjelmistototeutukseen. Toimittajien materiaalien nimikkeet tekevät tämän eron harvoin, ja siksi kahden tilanteen välillä kopioidut viritysohjeet niin usein eivät tee mitään.

Akseli yksi: mikä koodi salaa

OpenSSL tunnistaa suorittimen ominaisuudet alustuksen aikana ja käyttää tulosta optimoitujen koodipolkujen valintaan, kuten x86-ominaisuuksien dokumentaatio kuvaa. AES-NI on yksi dokumentoiduista ominaisuuksista tämän ohjauksen takana. Mikään tästä ei vaadi, että kirjastosta tulisi ytimen osa.

Varmista, että ominaisuus näkyy prosessille, ennen kuin oletat nopean polun olevan käytössä. Linuxissa lähde on /proc/cpuinfo-tiedoston flags-kenttä, ja vieraan sisällä se heijastaa sitä, mitä hypervisori paljastaa, ei fyysisen isännän mallinimeä.

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

Toinen komento nimeää kyseisessä buildissa ladatut tarjoajat. Se ei kerro, mihin kirjastoon VPN-palvelu on linkitetty, ja isäntä voi kantaa kahta OpenSSL-asennusta, kun taas käynnissä oleva prosessi käyttää vain toista niistä.

Akseli kaksi: missä pakettipolku kulkee

Sijoittaminen ytimeen tarkoittaa, että muunnos tapahtuu ytimen omassa IPsec-koneistossa tai ytimen sisäisessä tunneliajurissa, joten paketit eivät tarvitse edestakaista matkaa käyttäjäavaruuden prosessin kautta jokaiselle erälle. Se voi vähentää kopioita ja kontekstin vaihtoja sekä jakaa työn ytimille tavalla, johon yksisäikeinen taustaprosessi ei pysty. Se siirtää myös laskurit ja jäljet, joita luet, kun läpäisy laskee, koska työ tapahtuu nyt rajan toisella puolella, jota et hallitse. Pidä sitä virheenkorjauskuluna, ei vain suorituskykypäätöksenä.

Se ei luo käskytukea, ei määritä salausta eikä saa olemassa olevaa reittiä toimimaan.

Virtualisointi lisää mutkan myös tälle akselille. Vieraalle voidaan antaa maskattu suoritinmalli, joka piilottaa ominaisuuksia, joita isännällä on, ja sisäkkäinen vieras voi nähdä vielä vähemmän. Lue ominaisuusnäkymä sen ympäristön sisältä, jossa VPN todella toimii, ei hypervisorin konsolista.

Mitä kukin valinta ostaa ja mitä se ei voi

Käytännön kysymys on, mihin aika menee. Jos läpäisyä rajoittaa yksi kiireinen säie, toistuvat puskurikopiot tai järjestelmäkutsu pakettia kohden, muunnoksen siirtäminen polulle, joka poistaa nämä kulut, voi auttaa, jos ydin toteuttaa tarvitsemasi muunnoksen.

Jos rajana on ruuhkautunut ylälinkki, häviöinen polku, pitkä edestakainen aika, kylläinen kohdepalvelu tai yhdelle ytimelle kiinnitetty säie, sijoittelu ei muuta mitään olennaista. Sama koskee käskyjen valintaa: AES erikoislaitteistolla ei korjaa puuttuvaa reittiä eikä auta, jos tunneli on joutilas, koska nimien selvitys epäonnistuu.

Missä molemmat pätevät, ne yhdistyvät. Ydinpolku voi käyttää samaa käskytason ohjausta ytimen krypto-API:n sisällä, ja käyttäjäavaruuden polku hyvin valitulla kirjastolla käyttää sitä jo. Päätös ei ole, kumpi on abstraktisti nopeampi; päätös on, mille kululle sinulla on todiste.

Kirjaa neljä tosiasiaa ennen kuin muutat mitään

Kirjoita palvelun binääri ja kryptokirjasto, johon se on linkitetty, koska ne ratkaisevat akselin yksi. Kirjaa sitten neuvoteltu tietosuoja, koska salaus ilman erityistä käskypolkua käyttäytyy eri tavalla kuin sellaisen kanssa, ja sarjan valitsevat molemmat osapuolet.

Seuraavaksi ominaisuusnäkymä käynnissä olevan ympäristön sisältä ja lopuksi aktiivinen pakettipolku todisteineen siitä, että tila, jonka luulet olevan käytössä, todella on. Ladattu moduuli ei ole todiste profiilin käytöstä, eikä konfiguraatiorivi ole todiste siitä, että ydin hyväksyi sen.

Muuta yhtä asiaa ja vertaa sitten johdonmukaiseen kuormaan samoilla päätepisteillä ja samalla siirtosuunnalla. Nopeusväite, jota et mitannut, on arvoltaan pienempi kuin muistiinpano, jonka mukaan tausta ei ollut koskaan epäilyksenalainen.

Aiheeseen liittyvät artikkelit