Úsanse dúas etiquetas coma se fosen o mesmo: acelerado por hardware e descargado no núcleo. Unha describe que instrucións executa a rutina AES dunha biblioteca e a outra describe onde ocorre o procesamento dos paquetes. Unha VPN pode ter a primeira sen a segunda, a segunda sen a primeira ou ambas á vez. Calquera decisión sobre rendemento debe comezar por nomear cal das dúas está a cambiar en realidade.

Dous eixes, non unha puntuación

O primeiro eixe é a implementación: o código que fai AES-256-GCM diríxese a unha versión que usa as instrucións dedicadas do procesador ou a unha rutina portátil que as executa como aritmética corrente. Esa elección vive dentro da biblioteca criptográfica e tómase ao inicializarse.

O segundo eixe é a ubicación: o paquete percorre a ruta de transformación do núcleo ou un daemon no espazo de usuario le dun dispositivo de túnel, cifra e volve escribir.

Ningún eixe limita o outro. Unha VPN no espazo de usuario sobre unha CPU con instrucións AES pode usalas todo o tempo, e unha ruta no núcleo sobre unha CPU sen elas recorre a unha implementación de software. As etiquetas do material de provedores raramente marcan esa distinción, e por iso os consellos de axuste copiados entre ambas situacións tantas veces non fan nada.

Eixe un: que código fai o cifrado

OpenSSL detecta características do procesador durante a inicialización e usa o resultado para escoller rutas de código optimizadas, como describe a documentación de capacidades x86. AES-NI é unha das capacidades documentadas detrás dese despacho. Nada disto esixe que a biblioteca se converta nun compoñente do núcleo.

Confirma que a característica é visible para o proceso antes de supor que se usa a ruta rápida. En Linux a fonte é o campo flags de /proc/cpuinfo, e dentro dun convidado reflicte o que expón o hipervisor e non o nome do modelo do host físico.

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

O segundo comando nomea os provedores cargados nesa compilación. Non che di que biblioteca ligou o servizo VPN, e un host pode levar dúas instalacións de OpenSSL mentres o proceso en execución usa só unha.

Eixe dous: onde corre a ruta de paquetes

Ubicar no núcleo significa que a transformación ocorre na maquinaria IPsec do propio núcleo ou dentro dun controlador de túnel no núcleo, así que os paquetes non necesitan unha viaxe de ida e volta por un proceso de usuario para cada lote. Iso pode recortar copias e cambios de contexto, e repartir o traballo entre núcleos como non pode un daemon dun só fío. Tamén move os contadores e trazas que lerás cando caia o caudal, porque o traballo ocorre agora ao outro lado dunha fronteira que non controlas. Considérao un custo de depuración, non só unha decisión de rendemento.

Non crea soporte de instrucións, non configura un cifrado nin fai que funcione unha ruta existente.

A virtualización engade un pregue tamén neste eixe. A un convidado pode dárselle un modelo de CPU enmascarado que oculta características que o host ten, e un convidado aniñado pode ver aínda menos. Le a vista de capacidades desde dentro do contorno onde a VPN corre de verdade, non desde a consola do hipervisor.

Que compra cada opción e que non pode

A pregunta práctica é a onde vai o tempo. Se un só fío ocupado, copias repetidas do búfer ou unha chamada ao sistema por paquete limitan o caudal, mover a transformación a unha ruta que elimina eses custos pode axudar, sempre que o núcleo implemente a transformación que necesitas.

Se o límite é un enlace ascendente conxestionado, unha ruta con perdas, un tempo de ida e volta longo, un servizo de destino saturado ou un fío fixado a un núcleo, a ubicación non cambia nada importante. O mesmo vale para a elección de instrucións: AES sobre hardware dedicado non repara unha ruta ausente e non axudará se o túnel está inactivo porque falla a resolución de nomes.

Onde aplican ambas, combínanse. Unha ruta no núcleo pode usar o mesmo despacho a nivel de instrución dentro da API criptográfica do núcleo, e unha ruta no espazo de usuario cunha biblioteca ben escollida xa o usa. A decisión non é cal é máis rápida en abstracto; é para que custo tes probas.

Anota os catro feitos antes de cambiar nada

Escribe o binario do servizo e a biblioteca criptográfica á que liga, porque eses deciden o eixe un. Logo anota a protección de datos negociada, porque un cifrado sen ruta de instrucións dedicada compórtase distinto dun con ela, e o conxunto elíxeno ambas partes.

Despois, a vista de capacidades desde dentro do contorno en execución e, por último, a ruta de paquetes activa con probas de que o modo que cres habilitado o está de verdade. Un módulo cargado non proba que un perfil o use, e unha liña de configuración non proba que o núcleo a aceptase.

Cambia unha cousa e compara cunha carga de traballo constante cos mesmos extremos e a mesma dirección de transferencia. Unha afirmación de velocidade que non mediche vale menos que unha nota que diga que o backend nunca estivo en dúbida.

Artigos relacionados