El Data Plane Development Kit ( DPDK ) es un proyecto de software de código abierto administrado por la Fundación Linux . Proporciona un conjunto de bibliotecas de plano de datos y controladores de modo de sondeo del controlador 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 del usuario . Esta descarga logra una mayor eficiencia informática y un mayor rendimiento de paquetes de lo que es posible utilizando el procesamiento controlado por interrupciones proporcionado en el kernel.
Lanzamiento estable | 21.05 / 21 de mayo de 2021 [1] |
---|---|
Repositorio | git |
Escrito en | C |
Sistema operativo | Linux , FreeBSD , Windows |
Tipo | Procesamiento de paquetes |
Licencia | BSD |
Sitio web | www |
DPDK proporciona un marco de programación para procesadores x86 , ARM y PowerPC y permite un desarrollo más rápido de aplicaciones de red de paquetes de datos de alta velocidad. [2] [3] Escala desde procesadores móviles, como Intel Atom , a 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 BSD de código abierto [5] .
Descripción general
El marco DPDK crea un conjunto de bibliotecas para entornos de hardware / software específicos mediante la creación de una capa de abstracción del entorno (EAL). [6] [7] El 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 el EAL para un entorno específico, los desarrolladores se vinculan a la biblioteca para crear sus aplicaciones. Por ejemplo, EAL proporciona los marcos para admitir 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 de bus genérico , funciones de rastreo y depuración y operaciones de alarma.
El DPDK implementa un modelo de ejecución hasta finalización de baja sobrecarga para un rendimiento rápido del plano de datos y accede a los dispositivos mediante sondeo para eliminar la sobrecarga de rendimiento del procesamiento de interrupciones .
El DPDK también está en proceso de incluir el modelo de programación basado en eventos para el procesamiento rápido del plano de datos.
El DPDK también incluye ejemplos de software que destacan las mejores prácticas para la arquitectura de software, consejos para el diseño y almacenamiento de la estructura de datos, perfiles de aplicaciones y utilidades de ajuste del rendimiento y consejos que abordan los déficits comunes de rendimiento de la red.
Bibliotecas
El DPDK incluye bibliotecas de plano de datos y controladores de controlador de interfaz de red optimizados (NIC) para lo siguiente: [8]
- Un gestor de colas implementa colas sin bloqueo
- Un administrador de búfer asigna previamente búferes de tamaño fijo
- Un administrador de memoria asigna grupos de objetos en la memoria y usa un anillo para almacenar objetos libres; asegura que los objetos se distribuyan por igual en todos los canales DRAM
- Los controladores de modo de encuesta (PMD) están diseñados para funcionar sin notificaciones asincrónicas, lo que reduce la sobrecarga
- Un marco de paquete: un conjunto de bibliotecas que ayudan a desarrollar el procesamiento de paquetes.
Todas las bibliotecas se almacenan en los directorios dpdk / lib / librte_ *
Complementos
El DPDK incluye controladores para muchos tipos de hardware. [9] Ha habido algunos controladores de complementos adicionales fuera del árbol en el pasado, que ahora se consideran obsoletos.
- librte_pmd_vmxnet3.so : proporciona una capa de Ethernet PMD compatible con NIC paravirtualizado Vmxnet3; reemplazado por el soporte completo de VMXNET3 en DPDK nativo.
- librte_pmd_memnic_copy.so : proporciona una capa Ethernet de PMD virtual a través de la memoria compartida basada en 2 copias de memoria de paquetes
Ambiente
El DPDK fue diseñado originalmente para ejecutarse usando un modo bare-metal que actualmente está en desuso. En realidad, EAL de DPDK proporciona soporte para aplicaciones de usuario de Linux o FreeBSD .
EAL se puede ampliar para admitir cualquier procesador.
Ecosistema
DPDK es ahora un proyecto de código abierto bajo la Fundación Linux , respaldado por muchas empresas. DPDK se rige por una Junta de Gobierno. Las actividades técnicas son supervisadas por una Junta Técnica. [10] Además de Intel , que colabora con el DPDK, varios otros proveedores también admiten el DPDK en sus productos y algunos ofrecen formación adicional, soporte y servicios profesionales. La lista de proveedores que han anunciado la compatibilidad con DPDK incluye: 6WIND , [11] ALTEN Calsoft Labs, [12] [13] Advantech, [14] Brocade, [15] Big Switch Networks, Mellanox Technologies , [16] Radisys , [17 ] Tieto, [18] Wind River , [19] y Lanner . [20]
Proyectos
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 pfSense, incluido pf , reenvío y configuración de paquetes de red , enlace de enlaces , IPsec , utilizando DPDK: "Tenemos el objetivo de poder para reenviar, con filtrado de paquetes a velocidades de al menos 14,88 Mpps. Esta es 'velocidad de línea' en una interfaz de 10 Gbps. Simplemente no hay forma de utilizar las pilas en el kernel de FreeBSD (o Linux) de hoy para este tipo de carga ". [21]
Open vSwitch (OVS) tiene un conjunto limitado de funciones que se ejecutan en el área de usuario y que se pueden aprovechar para omitir el procesamiento OVS del kernel de Linux. Este caso de uso de OVS con área de usuario de DPDK generalmente se denomina OVS-DPDK. Se implementa principalmente con OpenStack Neutron, pero asume que muchas funciones y capacidades de redes definidas por software (SDN) de Openstack están deshabilitadas. Por ejemplo, cuando se usa OVS-DPDK, Neutron proporciona un nivel de seguridad más bajo que cuando se usa el kernel de OVS (sin cortafuegos 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 de procesamiento de paquetes vectoriales (VPP) de Cisco : una pila de procesamiento de paquetes de alto rendimiento que puede ejecutarse en CPU básicas y puede aprovechar los controladores de modo de encuesta para NIC y hardware y bibliotecas de aceleración criptográfica. [22]
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 real. TRex amplifica el tráfico del lado del cliente y del servidor y puede escalar a 200 Gbit / s con un UCS usando Intel XL710. TRex también admite múltiples flujos, la capacidad de cambiar cualquier campo de paquete y proporciona estadísticas por flujo, latencia y jitter. [23]
DTS (DPDK Test Suite) es un marco basado en Python para pruebas funcionales y evaluaciones comparativas. Es un proyecto de código abierto, iniciado en 2014 y alojado en dpdk.org. Admite generadores de tráfico de software como Scapy y dpdk-pktgen, y un generador de tráfico de hardware como Ixia . [24]
DPDK tiene soporte para varios controladores de red SRIOV , lo que permite crear una PF (función física) y VF, y también para iniciar VM (como QEMU VM) y asignarles VF mediante PCI Passthrough [25]
DDP (Personalización dinámica de dispositivos) es una de las nuevas funciones avanzadas implementadas con DPDK. Le permite cargar firmware para un dispositivo de forma dinámica, sin reiniciar el host. [26]
Referencias
- ^ "DPDK" . core.dpdk.org . Consultado el 3 de abril de 2021 .
- ↑ Simon Stanley, All Change for Packet Processing Archivado el 21 de agosto de 2016 en Wayback Machine , Heavy Reading, 2013
- ^ Shamus McGillicudy, DPDK, los diseños de referencia de conmutadores y servidores impulsan el ecosistema SDN hacia adelante , SearchSDN, abril de 2013
- ^ "DPDK: Kit de desarrollo de plano de datos - Qué es" . dpdk.org . dpdk.org . Consultado el 29 de marzo de 2016 .
- ^ Simon Stanley, DPDK se convierte en código abierto , comunidad integrada de Intel, mayo de 2013
- ^ DPDK Docs, Data Plane Development Kit: Programmers Guide , septiembre de 2017
- ^ "¿Cómo puede DPDK acceder a los dispositivos desde el espacio del usuario?" . CodiLime . 22 de agosto de 2019 . Consultado el 28 de agosto de 2019 .
- ^ División de infraestructura de comunicaciones de Intel, descripción general del kit de desarrollo de plano de datos , diciembre de 2012
- ^ " NICS compatibles "
- ^ Junta técnica de DPDK
- ^ PRWeb, 6WIND amplía el software de procesamiento de paquetes portátil para admitir el kit de desarrollo del plano de datos , septiembre de 2011
- ^ Calsoft Labs para ofrecer servicios profesionales y soporte para Data Plane Development Kit , ALTEN Calsoft Labs, 18 de febrero de 2014 , consultado el 28 de octubre de 2014
- ^ https://builders.intel.com/docs/ALTEN-Calsoft-Labs-and-Intel-Improving-Network-Agility-with-Virtual-CPE.pdf
- ^ COTS Journal, ATCA Blade sirve para el procesador Xeon E5-2600 Archivado el 4 de marzo de 2016 en Wayback Machine , junio de 2012
- ^ Brocado vRouter
- ^ Tecnologías, Mellanox. "Kit de desarrollo de plano de datos (DPDK) | Controlador de modo de encuesta (PMD)" . Mellanox . Consultado el 10 de febrero de 2021 .
- ^ MarketWatch, Radisys ofrece la primera solución 40G de la industria para el kit de desarrollo de plano de datos , septiembre de 2012
- ^ Tieto, Tieto proporciona servicios de software profesionales y soporte para el kit de desarrollo de plano de datos , febrero de 2012
- ^ Reuters, Wind River ofrece soporte y servicios para el kit de desarrollo de plano de datos para el procesamiento de paquetes de alto rendimiento , mayo de 2012
- ^ Get Flying with the Data Plane Development Kit , Lanner Electronics Inc., 20 de febrero de 2013 , consultado el 11 de julio de 2013
- ^ Thompson, Jim (25 de febrero de 2015). "Además (una hoja de ruta para pfSense)" . blog.pfsense.org . Electric Sheep Fencing LLC . Consultado el 21 de abril de 2015 .
- ^ "VPP fd.io" . wiki.fd.io . Fundación Linux . Consultado el 29 de diciembre de 2016 .
- ^ nombre = Trex "TRex" . Cisco Systems . Consultado el 29 de diciembre de 2016 .
- ^ Rami Rosen, Aceleración de red con DPDK , lwn.net, julio de 2017
- ^ Rami Rosen, Redes de espacio de usuario con DPDK , Linux Journal, abril de 2018.
- ^ Rami Rosen, DPDK en profundidad , Kernel TLV, agosto de 2018