Jason A. Donenfeld, autor de VPN WireGuard, mayor audiencia. en la rama principal del controlador del núcleo de OpenBSD "wg" para el protocolo WireGuard, interfaz de red específica y herramientas que funcionan en el espacio de usuario. OpenBSD se convirtió en el segundo sistema operativo después de con soporte completo e integrado para WireGuard. Su inclusión se espera en la versión OpenBSD 6.8.
Los parches incluyen un controlador para el núcleo de OpenBSD, cambios para las utilidades ifconfig y tcpdump con soporte para la funcionalidad de WireGuard, documentación y pequeños cambios para integrar WireGuard con el resto del sistema. El controlador utiliza una implementación propia de los algoritmos , y , así como la implementación de SipHash ya presente en el núcleo de OpenBSD.
La implementación es compatible con todos los clientes oficiales de WireGuard para Linux, Windows, macOS, *BSD, iOS y Android. Las pruebas de rendimiento en el portátil del desarrollador (Lenovo x230) mostraron una capacidad de transmisión de hasta 750 mbit/s. Para comparar, isakmpd con configuraciones básicas de ike psk proporciona una capacidad de transmisión de 380 mbit/s.
En el desarrollo del controlador para el núcleo de OpenBSD se eligieron algunas decisiones arquitectónicas similares a las del controlador para Linux, pero el controlador se desarrolló principalmente para OpenBSD, considerando la especificidad de este sistema y la experiencia adquirida al crear el controlador para Linux. Con la aprobación del autor original de WireGuard, el código del nuevo controlador se distribuye completamente bajo la licencia libre ISC.
El controlador se integra estrechamente con la pila de red de OpenBSD y utiliza subsistemas existentes, lo que permitió que el código fuera muy compacto (alrededor de 3000 líneas de código). Entre las diferencias también se destaca una separación de componentes del controlador diferente a la de Linux: las interfaces específicas de OpenBSD se colocan en los archivos "if_wg.*", el código para protección contra DoS en "wg_cookie.*", y la lógica de negociación de conexiones y cifrado en "wg_noise.*".
Fuente: opennet.ru
