El Kit de desarrollo del plano de datos ( DPDK ) es un proyecto de software de código abierto administrado por la Fundación Linux . Proporciona un conjunto de bibliotecas del plano de datos y controladores de modo de sondeo de controladores de interfaz de red para descargar el procesamiento de paquetes TCP desde el núcleo del sistema operativo a los procesos que se ejecutan en el espacio de usuario . Esta descarga logra una mayor eficiencia computacional y un mayor rendimiento de los paquetes que el que es posible utilizando el procesamiento impulsado por interrupciones proporcionado en el núcleo.
DPDK proporciona un marco de programación para procesadores x86 , ARM y PowerPC y permite un desarrollo más rápido de aplicaciones de redes de paquetes de datos de alta velocidad. [2] [3] Escala desde procesadores móviles, como Intel Atom , hasta procesadores de nivel de servidor, como Intel Xeon . Admite arquitecturas de conjuntos de instrucciones como Intel, IBM POWER8 , EZchip y ARM . [4] Se proporciona y admite bajo la licencia de código abierto [5] BSD .
DPDK fue creado por el ingeniero de Intel Venky Venkatesan, a quien se le conoce cariñosamente como "El padre de DPDK". Murió en 2018 después de una larga batalla contra el cáncer. [6]
El marco DPDK crea un conjunto de bibliotecas para entornos de hardware/software específicos a través de la creación de una capa de abstracción de entorno (EAL). [7] [8] La EAL oculta los detalles del entorno y proporciona una interfaz de programación estándar para bibliotecas, aceleradores de hardware disponibles y otros elementos de hardware y sistema operativo (Linux, FreeBSD). Una vez que se crea la EAL para un entorno específico, los desarrolladores se vinculan a la biblioteca para crear sus aplicaciones. Por ejemplo, EAL proporciona los marcos para soportar Linux , FreeBSD , Intel IA- 32 o 64 bits , IBM POWER9 y ARM 32 o 64 bits.
El EAL también proporciona servicios adicionales que incluyen referencias de tiempo, acceso a bus genérico , funciones de rastreo y depuración y operaciones de alarma.
Con las bibliotecas DPDK se puede implementar un modelo de ejecución hasta su finalización , de canalización o por etapas, controlado por eventos o híbrido, completamente en el espacio de usuario, eliminando la copia del kernel y del kernel al usuario. El hardware ayuda con NIC/Regex/Accelerators, las bibliotecas mejoradas para hacer uso de Intelligence Storage Acceleration (ISA) [9] para el rendimiento masivo y el acceso a dispositivos a través de sondeos ayudan también a eliminar la sobrecarga de rendimiento de las interrupciones . Las páginas enormes se utilizan para la asignación de grandes grupos de memoria, para disminuir la cantidad de búsquedas y administración de páginas. [10]
El DPDK también incluye ejemplos de software que resaltan las mejores prácticas para la arquitectura de software, consejos para el diseño y almacenamiento de estructuras de datos, utilidades de creación de perfiles de aplicaciones y ajuste del rendimiento, y consejos que abordan déficits comunes en el rendimiento de la red.
El DPDK incluye bibliotecas de plano de datos y controladores de interfaz de red (NIC) optimizados para lo siguiente: [11]
Todas las bibliotecas se almacenan en los directorios dpdk/lib/librte_*
El DPDK incluye controladores para muchos tipos de hardware. [12] En el pasado hubo algunos controladores de complementos adicionales fuera del árbol, que ahora se consideran obsoletos.
El DPDK fue diseñado originalmente para ejecutarse en modo bare-metal , que actualmente está en desuso. El EAL del DPDK brinda soporte para aplicaciones de espacio de usuario de Linux o FreeBSD . [ cita requerida ]
EAL se puede ampliar para admitir cualquier procesador. [ cita requerida ]
DPDK es ahora un proyecto de código abierto bajo la Linux Foundation , apoyado por muchas empresas. DPDK está gobernado por un Consejo de Gobierno. Las actividades técnicas son supervisadas por un Consejo Técnico. [13] Además de Intel , que es un colaborador de DPDK, varios otros proveedores también admiten DPDK dentro de sus productos y algunos ofrecen capacitación, soporte y servicios profesionales adicionales. La lista de proveedores que han anunciado el soporte de DPDK incluye: 6WIND , [14] ALTEN Calsoft Labs, [15] [16] Advantech, [17] Brocade, [18] Big Switch Networks, Mellanox Technologies , [19] Radisys , [20] Tieto, [21] Wind River , [22] Lanner Inc. [23] y NXP . [24]
El proyecto pfSense publicó una hoja de ruta el 25 de febrero de 2015, en la que el desarrollador Jim Thompson anunció la reescritura del núcleo de pfSense (incluyendo pf , reenvío y modelado de paquetes de red , enlace de enlaces , IPsec) utilizando DPDK: "Tenemos el objetivo de poder reenviar, con filtrado de paquetes a tasas de al menos 14,88 Mpps. Esta es la 'velocidad de línea' en una interfaz de 10 Gbps. Simplemente no hay forma de utilizar las pilas en el núcleo de FreeBSD (o Linux) actuales para este tipo de carga". [25]
Open vSwitch (OVS) tiene un conjunto limitado de funciones que se ejecutan en el espacio de usuario y que se pueden aprovechar para eludir el procesamiento de OVS del kernel de Linux. Este caso de uso de OVS con espacio de usuario DPDK se suele denominar OVS-DPDK. Se implementa principalmente con OpenStack Neutron, pero supone que muchas funciones y capacidades de redes definidas por software (SDN) de Openstack están deshabilitadas. Por ejemplo, cuando se utiliza OVS-DPDK, Neutron proporciona un nivel de seguridad menor que cuando se utiliza el kernel de OVS (sin firewall con estado, menos grupo de seguridad).
La plataforma FD.IO VPP es un marco extensible que proporciona funcionalidad de enrutador/conmutador de calidad de producción lista para usar. Es la versión de código abierto de la tecnología Vector Packet Processing (VPP) de Cisco: una pila de procesamiento de paquetes de alto rendimiento que puede ejecutarse en CPU de consumo y puede aprovechar los controladores de modo de sondeo tanto para las NIC como para el hardware y las bibliotecas de aceleración criptográfica. [26] VPP admite y utiliza la biblioteca DPDK. [27]
TRex es un generador de tráfico de código abierto que utiliza DPDK. Genera tráfico L4–7 basado en el preprocesamiento y la reproducción inteligente de plantillas de tráfico reales. TRex amplifica el tráfico tanto del lado del cliente como del servidor y puede escalar a 200 Gbit/s con un UCS utilizando Intel XL710. TRex también admite múltiples transmisiones, la capacidad de cambiar cualquier campo de paquete y proporciona estadísticas por transmisión, latencia y fluctuación. [28]
DTS (DPDK Test Suite) es un marco basado en Python para pruebas funcionales y evaluaciones comparativas. Es un proyecto de código abierto que comenzó en 2014 y está alojado en dpdk.org. Admite tanto generadores de tráfico de software como Scapy y dpdk-pktgen como un generador de tráfico de hardware como Ixia . [29]
DPDK tiene soporte para varios controladores de red SRIOV , lo que permite crear una PF (función física) y VF, y también iniciar máquinas virtuales (como las máquinas virtuales QEMU ) y asignarles VF mediante PCI Passthrough [30].
DDP (personalización dinámica de dispositivos) es una de las nuevas funciones avanzadas implementadas con DPDK. Permite cargar el firmware de un dispositivo de forma dinámica, sin reiniciar el host. [31]