Aquí tienes la traducción revisada, considerando cada término técnico cuidadosamente y sin traducir aquellos que no corresponden:
NPF es un filtro de paquetes de nivel 3 (layer 3 packet filter) que soporta inspección de paquetes stateful, IPv6, NAT, conjuntos de IP (IP sets), extensiones y más.
Utiliza BPF (Berkeley Packet Filter) como su motor central y fue diseñado con enfoque en alto rendimiento, escalabilidad, procesamiento multihilo (multi-threading) y modularidad.
NPF fue desarrollado desde cero en 2009, está escrito en C99 y se distribuye bajo la licencia BSD de 2 cláusulas.
NPF se proporciona como una biblioteca en espacio de usuario (userspace library) diseñada para ser utilizada en aplicaciones personalizadas de procesamiento de paquetes.
Puede ejecutarse en Linux, normalmente junto con frameworks como DPDK (Data Plane Development Kit) o netmap.
NPF ofrece una gama completa de funciones tradicionales proporcionadas por filtros de paquetes. Algunas características clave son:
- Inspección stateful (seguimiento de conexiones):
- Incluye el seguimiento completo del estado TCP.
- Network Address Translation (NAT):
- Traducción estática (stateless) y dinámica (stateful).
- NAPT y otras formas de traducción de puertos (e.g., redirección de puertos).
- NAT de entrada (inbound), salida (outbound) y bidireccional.
- Traducción red-a-red, incluyendo NETMAP y NPTv6.
- Carrier-grade NAT (CG-NAT): capacidad para manejar más de un millón de conexiones simultáneas.
- Tablas para conjuntos de IP (IP sets) con soporte para longest prefix match.
- Gateways a nivel de aplicación (Application Level Gateways), como soporte para traceroute.
- Uso de BPF con compilación just-in-time (JIT).
- Procedimientos de reglas y un marco para extensiones de NPF (plugins).
- Extensiones disponibles:
- Limitación de velocidad (rate limiting).
- Normalización del tráfico.
- Registro de paquetes.
- Integración con DPDK.
Para un listado completo de características, consulta la documentación de NPF.
Puedes probar NPF-Router como una aplicación de demostración que combina NPF con DPDK, ejecutando una red virtual de prueba con contenedores Docker.
Disponible en Github Pages.
El código fuente de la documentación está en el directorio docs.
Clona los siguientes repositorios para obtener las bibliotecas necesarias:
- libnv:
git clone https://github.com/rmind/nvlist
- thmap:
git clone https://github.com/rmind/thmap
- libqsbr:
git clone https://github.com/rmind/libqsbr
- liblpm:
git clone https://github.com/rmind/liblpm
- bpfjit:
git clone https://github.com/rmind/bpfjit
- libcdb:
git clone https://github.com/rmind/libcdb
Cada repositorio incluye archivos para construir paquetes RPM (cd pkg && make rpm
) y DEB (cd pkg && make deb
).
Consulta el archivo Travis para ejemplos de construcción.
app/ - Aplicación de demostración NPF-Router (NPF + DPDK + Docker).
docs/ - Documentación.
src/ - Directorio raíz del código fuente.
kern/ - Componente del kernel (biblioteca npfkern).
lib/ - Bibliotecas complementarias para npfctl.
libnpf/ - Biblioteca para gestionar configuraciones de NPF.
npfctl/ - Interfaz de línea de comandos para controlar NPF.
npftest/ - Pruebas unitarias y herramienta de depuración.
pkg/ - Archivos de empaquetado (RPM y DEB).
misc/ - Scripts auxiliares.
Para construir la biblioteca libnpf (enlace con las banderas -lnpf
y -lnpfkern
):
- RPM (probado en RHEL/CentOS 7):
cd pkg && make rpm
. - DEB (probado en Debian 9):
cd pkg && make deb
.
¿Ahora es más adecuado?