WD está desarrollando un controlador NVMe en Rust. Experimentando con Rust en FreeBSD

En la conferencia Linux Plumbers 2022 que se celebra estos días, un ingeniero de Western Digital realizó una presentación sobre el desarrollo de un controlador experimental para unidades SSD con interfaz NVM-Express (NVMe), escrito en lenguaje Rust y ejecutándose en el kernel de Linux. nivel. A pesar de que el proyecto aún se encuentra en una etapa temprana de desarrollo, las pruebas han demostrado que el rendimiento del controlador NVMe en lenguaje Rust corresponde al controlador NVMe escrito en lenguaje C disponible en el kernel.

WD está desarrollando un controlador NVMe en Rust. Experimentando con Rust en FreeBSD
WD está desarrollando un controlador NVMe en Rust. Experimentando con Rust en FreeBSD

El informe afirma que el controlador NVMe actual en C es completamente satisfactorio para los desarrolladores, pero el subsistema NVMe es una buena plataforma para explorar la viabilidad de desarrollar controladores en Rust, ya que es bastante simple, ampliamente utilizado, tiene altos requisitos de rendimiento y tiene una implementación de referencia comprobada para comparación y admite varias interfaces (dev, pci, dma, blk-mq, gendisk, sysfs).

Cabe señalar que el controlador PCI NVMe para Rust ya proporciona la funcionalidad necesaria para su funcionamiento, pero aún no está listo para un uso generalizado, ya que requiere mejoras individuales. Los planes futuros incluyen eliminar del código los bloques inseguros existentes, admitir operaciones de eliminación de dispositivos y descarga de controladores, admitir la interfaz sysfs, implementar la inicialización diferida, crear un controlador para blk-mq y experimentar con el uso de un modelo de programación asincrónica para queue_rq.

Además, podemos destacar los experimentos realizados por el Grupo NCC para desarrollar controladores en lenguaje Rust para el kernel de FreeBSD. Como ejemplo, examinamos en detalle un controlador de eco simple que devuelve datos escritos en el archivo /dev/rustmodule. En la siguiente fase de experimentación, el Grupo NCC está considerando la posibilidad de reelaborar los componentes centrales del kernel en el lenguaje Rust para mejorar la seguridad de las operaciones de red y archivos.

Sin embargo, aunque se ha demostrado que es posible crear módulos simples en el lenguaje Rust, una integración más estrecha de Rust en el kernel de FreeBSD requerirá trabajo adicional. Por ejemplo, mencionan la necesidad de crear un conjunto de capas de abstracción sobre los subsistemas y estructuras del kernel, similar a los complementos preparados por el proyecto Rust para Linux. En el futuro, planeamos realizar experimentos similares con el kernel de Illumos e identificar abstracciones comunes en Rust que podrían usarse en controladores escritos en Rust para Linux, BSD e Illumos.

Según Microsoft y Google, alrededor del 70% de las vulnerabilidades en sus productos de software se deben a un manejo inseguro de la memoria. Se espera que el uso del lenguaje Rust reduzca el riesgo de vulnerabilidades causadas por el trabajo inseguro con la memoria y elimine la aparición de errores como el acceso a un área de memoria después de que se haya liberado y el desbordamiento del búfer.

La seguridad de la memoria se proporciona en Rust en tiempo de compilación mediante la verificación de referencias, el seguimiento de la propiedad del objeto y la vida útil del objeto (alcance), así como mediante la evaluación de la corrección del acceso a la memoria durante la ejecución del código. Rust también brinda protección contra desbordamientos de enteros, requiere la inicialización obligatoria de los valores de las variables antes de su uso, maneja mejor los errores en la biblioteca estándar, aplica el concepto de referencias y variables inmutables de forma predeterminada, ofrece tipado estático fuerte para minimizar los errores lógicos.

Fuente: opennet.ru

Añadir un comentario