Nueva API


La nueva API (también conocida como NAPI ) es una interfaz para utilizar técnicas de mitigación de interrupciones para dispositivos de red en el kernel de Linux . Este enfoque está destinado a reducir la sobrecarga de la recepción de paquetes. La idea es posponer el manejo de los mensajes entrantes hasta que haya una cantidad suficiente de ellos para que valga la pena manejarlos todos a la vez.

Un método sencillo de implementar un controlador de red es interrumpir el kernel emitiendo una solicitud de interrupción (IRQ) para todos y cada uno de los paquetes entrantes. Sin embargo, el mantenimiento de las IRQ es costoso en términos de tiempo y recursos del procesador. Por lo tanto, la implementación sencilla puede ser muy ineficiente en redes de alta velocidad, interrumpiendo constantemente el kernel con miles de paquetes por segundo. Como resultado, el rendimiento general del sistema y el rendimiento de la red pueden verse afectados.

El sondeo es una alternativa al procesamiento basado en interrupciones. El kernel puede verificar periódicamente la llegada de paquetes de red entrantes sin ser interrumpido, lo que elimina la sobrecarga del procesamiento de interrupciones. Sin embargo, es importante establecer una frecuencia de sondeo óptima. El sondeo demasiado frecuente desperdicia recursos de la CPU al verificar repetidamente los paquetes entrantes que aún no han llegado. Por otro lado, el sondeo con poca frecuencia introduce latencia al reducir la reactividad del sistema a los paquetes entrantes, y puede resultar en la pérdida de paquetes si el búfer de paquetes entrantes se llena antes de ser procesado.

Como compromiso, el kernel de Linux usa el modo controlado por interrupciones por defecto y solo cambia al modo de sondeo cuando el flujo de paquetes entrantes excede un cierto umbral, conocido como el "peso" de la interfaz de red.

NAPI fue un esfuerzo de más de tres años de Alexey Kuznetsov, Jamal Hadi Salim y Robert Olsson. El esfuerzo inicial para incluir NAPI encontró resistencia por parte de algunos miembros de la comunidad, sin embargo, David Miller trabajó duro para asegurar la inclusión de NAPI.

Se realizaron muchas pruebas del mundo real en la red universitaria de Uppsala antes de la inclusión. De hecho, www.slu.se fue el primer sistema operativo de producción basado en NAPI y todavía funciona con enrutadores Bifrost / Linux basados ​​en NAPI. El generador de tráfico pktgen también nació en esta época. Pktgen se utilizó ampliamente para probar escenarios NAPI no inducidos por el tráfico del mundo real.