Skip to content
/ npf Public
forked from rmind/npf

NPF: packet filter with stateful inspection, NAT, IP sets, etc.

License

Notifications You must be signed in to change notification settings

misar450/npf

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Aquí tienes la traducción revisada, considerando cada término técnico cuidadosamente y sin traducir aquellos que no corresponden:


NPF: filtro de paquetes stateful con soporte para NAT, conjuntos de IP, etc.

Estado de compilación

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.


Características

NPF ofrece una gama completa de funciones tradicionales proporcionadas por filtros de paquetes. Algunas características clave son:

  • Inspección stateful (seguimiento de conexiones):
  • 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.


Uso

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.


Documentación

Disponible en Github Pages.
El código fuente de la documentación está en el directorio docs.


Dependencias

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.


Estructura del código fuente

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.

Construcción de paquetes

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.

¿Quién usa NPF?

Outscale innofield AG NetBSD BisonRouter

¿Ahora es más adecuado?

About

NPF: packet filter with stateful inspection, NAT, IP sets, etc.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 86.5%
  • Roff 7.5%
  • Yacc 2.4%
  • Makefile 2.0%
  • Lex 0.8%
  • Dockerfile 0.5%
  • Shell 0.3%