Visualización de objetos de registro de flujo
Un registro de flujo es un resumen del tráfico de red que se identifica de forma exclusiva con una conexión entre dos tarjetas de interfaz de red virtual (vNIC), dentro una determinada ventana de tiempo. Los registros de flujo describen el tráfico que el cortafuegos acepta (grupos de seguridad relevantes o ACL de red) o rechaza, pero no ambos. Contiene información de cabecera y estadísticas de carga útil.
Los registros de flujo se escriben periódicamente en IBM Cloud® Object Storage aproximadamente cada 5 minutos. Los registros de flujo se publican con más frecuencia en los casos en que el recopilador de registros de flujo alcanza flujos de 100 KB.
Actualmente, los registros de flujo recopilan el tráfico TCP (Transmission Control Protocol) y el tráfico UDP (User Datagram Protocol), pero no el tráfico ICMP (Internet Control Message Protocol).
Cada objeto de registro de flujo contiene registros de flujo individuales. Para ver o analizar los registros de flujo, utilice IBM Analytics Engine. Para más información, consulte el tutorial de iniciación IBM Analytics Engine.
IBM Cloud Data Engine está obsoleto y ya no es compatible. Si actualmente utiliza instancias existentes de Data Engine, se recomienda que migre sus cargas de trabajo a IBM Analytics Engine.
Formato de datos de registros de flujo
Los resúmenes de tráfico de registro de flujo contienen la información siguiente:
- Recuentos de bytes/paquetes, por separado para RX (recibir) y TX (transmitir).
- Si se inicia o se detiene una conexión durante la ventana de tiempo.
Dado que un registro de flujo refleja el tráfico de red en una ventana de tiempo limitada, una conexión de larga ejecución podría provocar que se emitan varios registros de flujo. Para cada conexión procesada por una vNIC, se emite una secuencia ordenada por hora de los registros de flujo (sin incluir errores). Estos registros de flujo aparecen en uno o más objetos Object Storage.
El valor de initiator_ip en un registro de flujo se define como source_ip que aparece en el primer paquete de su conexión que ha alcanzado la vNIC. En el nivel de implementación, este paquete es normalmente el que hace
que se añada la nueva conexión a la tabla de conexiones. De forma similar, el valor de target_ip en el registro de flujo se establece en el campo dest_ip del mismo paquete.
Si tanto la vNIC del iniciador de conexión como la vNIC de destino de conexión permiten registros de flujo, los campos del iniciador y del IP de destino así como de los puertos son idénticos en los registros de flujo de ambas vNIC.
Ejemplo: Consideremos un cliente que envía una solicitud HTTP a un servidor web. El registro de flujo para esta solicitud HTTP en la vNIC del lado del cliente tiene la dirección IP del cliente como initiator_ip. El registro de flujo
correspondiente en la vNIC del lado del servidor tiene el mismo valor de initiator_ip.
Los valores de start_time y end_time en un registro de flujo reflejan:
- Hora de captura: la hora a la que se han consultado los elementos de vía de acceso de datos para los recuentos de tráfico.
- Hora de la vía de acceso de datos: tiempo que se mantiene en el propio elemento de vía de acceso de datos.
Es posible que el registro de flujo no refleje todo el tráfico (por ejemplo, en la vía de acceso de datos) entre un registro de flujo start_time y end_time. En otras palabras, es posible que los paquetes enviados y
recibidos por la vNIC hacia el final de la ventana de captura se reflejen únicamente en un registro de flujo con la ventana start_time posterior.
Los registros de flujo reflejan el tráfico real en las conexiones: si no se produce tráfico en una conexión en una ventana de captura, no aparecerá ningún registro de flujo para ella en el objeto « Object Storage » (Registro de flujo) de esa ventana. Esto significa que la secuencia de registros de flujo para una conexión podría asignarse a una secuencia de objetos no consecutivos Object Storage.
No hace falta que se ordene en ningún orden específico la matriz de registros de flujo de un objeto.
Tráfico rechazado:
- Un registro de flujo específico resume el tráfico rechazado o aceptado, nunca ambos.
- La secuencia de registros de flujo para una conexión puede tener solapamientos de ventana de tiempo entre los registros de flujo aceptados y rechazados.
- Los paquetes rechazados que no están asociados con una conexión existente (por ejemplo, un grupo de seguridad, o una ACL de red, deniega la iniciación de la conexión).
- Paquetes rechazados en una conexión existente (por ejemplo, el tráfico que no coincide con la máquina de estado TCP o una conexión media modificada por una regla de ACL de red).
- Los paquetes rechazados se escriben en diferentes registros de flujo en función de si son entrantes o salientes.
Los flujos se etiquetan como rechazados si sus paquetes estaban bloqueados por reglas de ACL de red o de grupos de seguridad.
Formato de objeto de registro de flujo
Los registros de flujo se escriben en el depósito de ECS ( Object Storage ) especificado por el usuario siguiendo la siguiente convención de nomenclatura:
ibm_vpc_flowlogs_v1/account={account}/region={region}/vpc-id={vpc-id}/subnet-id={subnet-id}/endpoint-type=vnics/instance-id={vsi-id}/vnic-id={vnic-id}/record-type={all|ingress|egress}/year={xxxx}/month={yy}/day={zz}/hour={hh}/stream-id={stream-id}/{sequence-number}.gz
Donde:
{stream-id}es una cadena de fecha y hora en formato ISO 8601yyyymmddThhmmssZ(hora universal coordinada), definida como la hora en que se creó el primer objeto en eldirectory.{sequence-number}es un contador de objetos dentro de la corriente, representado como un campo de ocho caracteres rellenado con ceros (%08d).{all|ingress|egress}muestra el tipo de tráfico que incluye el flujo.{xxxx}es el año en formato de cuatro dígitos.{yy}es el mes en formato de dos dígitos, con cero inicial.{zz}es el día del mes en formato de dos dígitos, con cero inicial.{hh}es la hora en formato de cero inicial (por ejemplo, 00-24).
Las instancias de caracteres no seguros de URL de la vía de acceso están codificadas por URL.
El objeto « Object Storage » de un registro de flujo contiene un único objeto JSON válido. El objeto « Object Storage » está .gz comprimido.
Los campos de encabezado de objeto que se especifican en la siguiente tabla se escriben en los metadatos del objeto Object Storage.
Campos de encabezado de objetos de registros de flujo (por objeto S de Object Storage )
| Campo | Tipo | Descripción |
|---|---|---|
version |
string | La versión semántica. |
collector_crn |
string | El nombre de recurso de nube (CRN) del recopilador de registros de flujo. |
attached_endpoint_type |
string | Actualmente, el único valor es vnic. |
network_interface_id |
string | El ID de vnic, ya que no tiene ningún CRN de vNIC. |
instance_crn |
string | El CRN de la instancia a la que está conectada la interfaz de red. |
vpc_crn |
string | El CRN de la VPC de la que es miembro el recopilador de registros de flujo. |
capture_start_time |
string | Fecha y hora RFC 3339 (hora universal coordinada) |
capture_end_time |
string | Fecha y hora RFC 3339 (hora universal coordinada) |
state |
string | Indica el estado operativo del recopilador de registros de flujo. OK significa que los datos se recopilan y envían sin errores. skip data indica que se han perdido datos durante este intervalo de recopilación
(por ejemplo, debido a una elevada tasa de paquetes SYN rechazados). |
number_of_flow_logs |
uin32 | El número de elementos de una matriz de flow_logs. Dado que este número es muy variable, resulta útil como referencia rápida del número de registros de flujo contenidos en un único objeto Object Storage, sin necesidad de
descargar primero el objeto. |
flow_logs |
matriz de objetos JSON | Puede ser una matriz vacía, que indica no traffic. |
Campos de registro de flujo
| Campo | Tipo | Descripción |
|---|---|---|
start_time |
string | Hora de captura y visualización en la vía de acceso de datos del primer byte de un registro de flujo (fecha y hora RFC 3339, hora universal coordinada). |
end_time |
string | Hora de captura y visualización en la vía de acceso de datos del último byte de un registro de flujo (fecha y hora RFC 3339, hora universal coordinada). |
connection_start_time |
string | Momento en que el primer byte de la conexión de un registro de flujo se ha capturado y visto en la ruta de datos (Fecha y hora RFC 3339 - Hora universal coordinada). |
direction |
string | Los valores son I para entrada u O para salida. Si el primer paquete de la conexión ha sido recibido por la vNIC, la dirección es I. Si el primer paquete ha sido enviado por la
vNIC, la dirección es O. |
action |
string | Los valores son accepted (el tráfico resumido por este flujo se ha aceptado) o rejected (el tráfico se ha rechazado). |
initiator_ip |
string | (Dirección IPv4) IP de origen, tal como aparece en el primer paquete que procesa la vNIC en esta conexión. Si direction=="outbound", una IP privada asociada a la vNIC. |
target_ip |
string | (Dirección IPv4) IP de destino, tal como aparece en el primer paquete que procesa la vNIC en esta conexión. Si direction=="inbound", una IP privada asociada a la vNIC. |
initiator_port |
uint16 | El puerto de origen TCP/UDP, tal como aparece en el primer paquete que procesa la vNIC en esta conexión. |
target_port |
uint16 | El puerto de destino TCP/UDP, tal como aparece en el primer paquete que procesa la vNIC en esta conexión. |
transport_protocol |
uint8 | Número de protocolo (TCP o UDP) de Internet Assigned Numbers Authority (IANA). |
ether_type |
string | Actualmente, IPv4 es el único valor. |
was_initiated |
bool | La conexión se ha iniciado en este registro de flujo. |
was_terminated |
bool | La conexión ha terminado (por ejemplo, timeout/RST/Final-FIN). |
bytes_from_initiator |
uint64 | El recuento de bytes de la conexión en la ventana de tiempo de este registro de flujo, de iniciador a destino. |
packets_from_initiator |
uint64 | El recuento de paquetes de la conexión en la ventana de tiempo de este registro de flujo, de iniciador a destino. |
bytes_from_target |
uint64 | El recuento de bytes de la conexión en la ventana de tiempo de este registro de flujo, de destino a iniciador. |
packets_from_target |
uint64 | El recuento de paquetes de la conexión en la ventana de tiempo de este registro de flujo, de destino a iniciador. |
cumulative_bytes_from_initiator |
uint64 | El recuento de bytes desde que se ha iniciado la conexión, de iniciador a destino. |
cumulative_packets_from_initiator |
uint64 | El recuento de paquetes desde que se ha iniciado la conexión, de iniciador a destino. |
cumulative_bytes_from_target |
uint64 | El recuento de bytes desde que se ha iniciado la conexión, de destino a iniciador. |
cumulative_packets_from_target |
uint64 | El recuento de paquetes desde que se ha iniciado la conexión, de destino a iniciador. |
En la mayoría de los casos, puede encontrar el campo de dirección comparando la IP privada de la vNIC con las IP de origen y destino. Sin embargo, el campo es conveniente para las consultas.
Ejemplo de objeto de registro de flujo
{
"version": "0.0.1",
"collector_crn": "crn",
"attached_endpoint_type": "vnic",
"network_interface_id": "crn",
"instance_crn": "crn",
"vpc_crn": "crn"
"capture_end_time": "2008-09-15T15:53:00Z",
"capture_start_time": "2008-09-15T15:00:00Z",
"state": "ok",
"number_of_flow_logs" : 1,
"flow_logs": [
{
"start_time": "2008-09-15T15:53:00",
"end_time": "2008-09-15T15:40:00",
"direction": "O",
"action": "accepted",
"initiator_ip": "1.2.3.4",
"initiator_port": 20033,
"target_ip": "5.6.7.8",
"target_port": 80,
"transport_protocol": 6,
"ether_type": "IPv4",
"was_initiated": true,
"was_terminated": false,
"bytes_from_initiator": 12000,
"packets_from_initiator": 2212,
"bytes_from_target": 323232,
"packets_from_target": 3232
"cumulative_packets_from_initiator": 2212,
"cumulative_packets_from_target": 3232,
"cumulative_bytes_from_target": 323232,
"cumulative_bytes_from_initiator": 12000,
}
],
}
Visualización de archivos de registro de flujo generados desde el grupo Object Storage
Si utiliza el plan de precios Lite (gratuito) para IBM Cloud Object Storage, puede acceder a los archivos de objetos de registro de flujo generados directamente desde el bucket Object Storage para verificar que los archivos se han creado correctamente y que se están generando los objetos.
Para ver los archivos de registro de flujo generados desde el grupo Object Storage, siga estos pasos:
-
Para asegurarse de que los registros de flujo se están capturando, compruebe el grupo Object Storage.
-
Vaya a la carpeta para encontrar la VPC o el recurso donde ha configurado la supervisión.
-
Profundice en el recurso para encontrar el recurso de red que está supervisando.
Si está configurado correctamente, debería ver varios archivos gzip para cada entrada de registro.
Para asegurarse de que se están capturando datos, descargue uno de los archivos para ver su contenido y asegurarse de que se está capturando tráfico.