Internet Protocol Flow Information Export (IPFIX) es un protocolo de la IETF , así como el nombre del grupo de trabajo de la IETF que define el protocolo. Se creó en base a la necesidad de un estándar común y universal de exportación para la información de flujo de protocolo de Internet de enrutadores , sondas y otros dispositivos que son utilizados por sistemas de mediación, sistemas de contabilidad/facturación y sistemas de administración de red para facilitar servicios tales como medición, contabilidad y facturación. El estándar IPFIX define cómo se debe formatear y transferir la información de flujo de IP desde un exportador a un recolector. [1] Anteriormente, muchos operadores de redes de datos dependían de la tecnología NetFlow patentada de Cisco Systems para la exportación de información de flujo de tráfico.
Los requisitos de los estándares IPFIX se describieron en el RFC 3917 original. La versión 9 de Cisco NetFlow fue la base de IPFIX. Las especificaciones básicas de IPFIX están documentadas en los RFC 7011 a RFC 7015 y RFC 5103.
La siguiente figura muestra una arquitectura típica de flujo de información en una arquitectura IPFIX:
Exportador de recopiladores IPFIX O--------------------->O | | Observación | Dominio | Medición n.° 1 | Medición n.° 2 O----------------O----------------O Medición #3 | | | | Observación | Observación | Observación | Punto #1 | Punto #2 | Punto #3 en | |---- Tráfico IP ---> | | en |--------------- Más tráfico IP ---> | en---------------------------------- Más tráfico IP --->
Un grupo de procesos de medición recopila paquetes de datos en uno o más puntos de observación , los filtra opcionalmente y agrega información sobre estos paquetes. Luego, un exportador reúne cada uno de los puntos de observación en un dominio de observación y envía esta información a través del protocolo IPFIX a un recopilador . Los exportadores y los recopiladores tienen una relación de muchos a muchos : un exportador puede enviar datos a muchos recopiladores y un recopilador puede recibir datos de muchos exportadores. [2]
De manera similar al protocolo NetFlow, IPFIX considera que un flujo es cualquier cantidad de paquetes observados en un intervalo de tiempo específico y que comparten una cantidad de propiedades, por ejemplo, " mismo origen, mismo destino, mismo protocolo ". Con IPFIX, dispositivos como enrutadores pueden informar a una estación de monitoreo central sobre su visión de una red potencialmente más grande.
IPFIX es un protocolo push , es decir, cada remitente enviará periódicamente mensajes IPFIX a los receptores configurados sin ninguna interacción por parte del receptor.
La composición real de los datos en los mensajes IPFIX depende en gran medida del remitente. IPFIX presenta la composición de estos mensajes al receptor con la ayuda de plantillas especiales . El remitente también tiene la libertad de utilizar tipos de datos definidos por el usuario en sus mensajes, por lo que el protocolo es libremente extensible y puede adaptarse a diferentes escenarios.
IPFIX prefiere el Protocolo de transmisión de control de flujo (SCTP) como su protocolo de capa de transporte , pero también permite el uso del Protocolo de control de transmisión (TCP) o el Protocolo de datagramas de usuario (UDP) .
Un conjunto de información simple enviado a través de IPFIX podría verse así:
Paquetes de origen y destino------------------------------------------192.168.0.201 192.168.0.1 235192.168.0.202 192.168.0.1 42
Este conjunto de información se enviaría en el siguiente mensaje IPFIX:
Bits 0..15 | Bits 16..31 |
---|---|
Versión = 0x000a | Longitud del mensaje = 64 bytes |
Fecha de exportación = 2005-12-31 23:59:60 | |
Número de secuencia = 0 | |
ID de dominio de observación = 12345678 | |
ID de conjunto = 2 (plantilla) | Establecer longitud = 20 bytes |
Identificación de plantilla = 256 | Número de campos = 3 |
Tipo = dirección IPv4 de origen | Longitud del campo = 4 bytes |
Tipo = dirección IPv4 de destino | Longitud del campo = 4 bytes |
Tipo = packetDeltaCount | Longitud del campo = 4 bytes |
ID de conjunto = 256 (Conjunto de datos que utiliza la plantilla 256) | Establecer longitud = 28 bytes |
Registro 1, Campo 1 = 192.168.0.201 | |
Registro 1, Campo 2 = 192.168.0.1 | |
Registro 1, Campo 3 = 235 paquetes | |
Registro 2, Campo 1 = 192.168.0.202 | |
Registro 2, Campo 2 = 192.168.0.1 | |
Registro 2, Campo 3 = 42 Paquetes |
Como se puede ver, el mensaje contiene el encabezado IPFIX y dos conjuntos IPFIX: un conjunto de plantillas que introduce la construcción del conjunto de datos utilizado, así como un conjunto de datos, que contiene los datos reales. Cuando IPFIX se envía a través de un protocolo que mantiene un estado de sesión (TCP o SCTP), no es necesario retransmitir el conjunto de plantillas, ya que se almacena en búfer en recopiladores. Dado que el conjunto de plantillas puede cambiar con el tiempo, debe retransmitirse si se establece un nuevo estado de sesión o si IPFIX se envía a través de UDP, que es un protocolo sin sesión.