IT Ops

Entenda a diferença entre Flows e Transações na análise de tráfego de rede

Entenda a diferença entre Flows e Transações na análise de tráfego de rede

By zerum

Criado:
26 nov, 2019
5 anos atrás
Data da última atualização: 21/03/2023

TAGS:

< Voltar para o blog

Veja a diferença entre flows e transações, e os dados de rede que cada tecnologia é capaz de disponibilizar para ferramentas de análise.

Redes de computadores nos conectam a nossos celulares, computadores, televisores e até mesmo dispositivos como geladeiras, termostatos e campainhas de casa. Fato é que um volume imenso de informações é trafegado por essas redes, a todo tempo. Esses dados também são conhecidos como Wire Data – ou seja, dados do fio/rede – e podem ser investigados de diversas maneiras, daí a importância de se compreender a diferença entre flows e transações.

Neste artigo, vamos abordar e comparar as duas tecnologias: Network Flows e Network Transactions.

Network Flow

Segundo o Internet Engineering Task Force (IETF), “flow é uma sequencia de pacotes enviados por uma aplicação para outra aplicação que os recebe”. Um flow representa o tráfego que aconteceu entre duas aplicações diferentes, em um determinado período. Fornece informações com foco em entrega de tráfego, em nível de IP, sem se preocupar com o payload (o conteúdo da transação em si) dos pacotes. Duas formas bastante comuns de coleta de informações de flow são o Netflow da Cisco e o IPFIX, definido na RFC 3917.

Como exemplo, estes são valores coletadas pelo NetFlow v.5:

  • Porta de ingresso do tráfego;
  • IP de origem;
  • IP de destino;
  • Protocolo (TCP ou UDP);
  • Porta de origem (TCP ou UDP);
  • Porta de destino (TCP ou UDP);
  • IP Type of Service (para QoS).

Esse tipo de informação é especialmente útil para se identificar o uso de recursos em rede e também para corrigir falhas com QoS (Quality of Service). Porém, não é possível se investigar falhas mais avançadas, relacionadas ao conteúdo de payload, apenas com o uso de flows.

Network Transaction

Na Zerum construímos um sistema de extração de dados de Wire Data que traz muito mais informações que as apresentadas por flows. Internamente, nós o chamamos de Zerum WirETL. O WirETL identifica cada transação em nível de aplicação extraindo metadados de performance de cada uma delas, de forma individual e em tempo real. Ou seja, cada GET/POST de transações web em HTTP (que podem ser descriptografadas, se fornecidas as chaves), requisições e respostas em DNS, banco de dados Oracle, compartilhamentos de arquivo em SMB, e muitos outros protocolos, são decodificados. Assim, trabalhando com o conceito de transação (network transaction), provemos um nível de visibilidade extremo.

O nível de detalhamento é uma das principais diferenças entre flows e transações, mas há outras, como:

  • A distinção entre início e fim dos dados: os dados em um flow não se referem a uma requisição ou resposta específica. Ou seja, o mesmo flow pode conter inúmeras requisições ou respostas em nível de aplicação, não sendo possível distinguir essas informações. Já na transação temos informações do par requisição e resposta SEMPRE presentes e detalhadas;
  • Direção do tráfego: No flow não é possível saber quem originou o tráfego. O flow pode ser unidirecional ou bidirecional, mas ele não informa quem originou a requisição ou se a requisição foi respondida com sucesso. Já nas transações sempre é apresentado quem é a origem e/ou destino (informações de IP e MAC de origem e destino) e os status de resposta.

Diversos dados são coletados e publicados pelo Zerum Valk, para cada transação HTTP. Veja abaixo alguns dos campos/valores extraídos pelo Zerum WirETL:

requestResposta recebida na transação
request_content.typeFormato do conteúdo enviado na requisição
request_message.bodyConteúdo do corpo da requisição
request_message.cache_controlIndica o controle sobre o conteúdo ser cacheado
request_message.connectionIndica o controle sobre a vida da conexão (keep alive)
request_message.content_length Tamanho da mensagem do request
request_message.content_typeConteúdo enviado na requisição e sua codificação
request_message.cookiesNome do cookie usado na requisição
request_message.hostHost utilizado
request_message.methodMétodo utilizado pela requisição
request_message.refererURL completa enviada pela requisição
request_message.timestampTimestamp de início do request
request_message.user_agentUser agent utilizado pelo cliente
request_message.x_forwarded_forIP de origem da transação registrado no header
responseResposta recebida na transação
response_message.body Conteúdo do corpo da resposta
response_message.cache_controlControle sobre o conteúdo de resposta a ser cacheado
response_message.calculated_content_lengthTamanho calculado da mensagem de resposta
response_message.connectionIndica a manutenção da conexão de resposta (keep-Alive)
response_message.content_encodingIndica se o conteúdo de resposta está usando compresão
response_message.content_lengthTamanho total da mensagem de resposta
response_message.content_typeFormato do conteúdo na mensagem de resposta
response_message.dateData e hora na mensagem de resposta
response_message.e_tagUso do web cache de forma seletiva e otimizada
response_message.keep_aliveTempo de vida do keep-alive
response_message.last_modifiedÚltima atualização do conteúdo de resposta
response_message.reason_phraseMensagem de reação da resposta
response_message.serverNome do tipo do servidor web
response_message.set_cookiesIndica se cookie foi enviado juntamente com a resposta
response_message.status_codeCódigo de resposta da solicitação do cliente
response_message.timestampTimestamp do início da resposta
response_message.transfer_encodingCodificação utilizada na resposta para o usuário
retransmission_countTotal de retransmissões que ocorreram no destino e na origem
retransmission_dstTotal de retransmissões que ocorreram no destino
retransmission_srcTotal de retransmissões que ocorreram na origem
server_connection_timeTempo total de conexão entre o cliente e o servidor
server_processing_timeTempo total de processamento do servidor
data_transfer_timeTempo total da transferência de dados
transaction_timeTempo total da transação

E muitos outros…

Nos produtos Zerum Valk e Zerum Lynx a análise de Wire Data é feita com flows E transações. Essa combinação é útil para se analisar operações e segurança em um nível bastante avançado, jogando uma luz sobre algo que muitas vezes é tão volumoso e rápido que pouco se conhece – como encontrar uma agulha no palheiro.

As informações de flows e transações são extraídas em tempo real, juntamente com metadados que enriquecem análises de performance e segurança – e são armazenadas – permitindo que sejam exploradas de forma intuitiva e/ou utilizadas na construção de alarmes com a utilização dos algoritmos de aprendizado inteligente. Com isso temos detalhes de transações em nível de aplicação que ajudam a otimizar não apenas operações, mas também estratégias de produtos e processos industriais.

Sobre a Zerum

A Zerum é uma empresa de Data Science líder em inovação que fornece visibilidade e entendimento em tempo real sobre fluxos de dados complexos. Nossos produtos, serviços e tecnologias ajudam grandes organizações a reduzir gargalos operacionais, combater ameaças cibernéticas avançadas, detectar fraudes e manter comunidades seguras.

Para saber mais, entre em contato.

Related articles

Qual a diferença de aaNPM para APM e NPM?
Qual a diferença de aaNPM para APM e NPM?

Há uma relação significativa entre esses três conceitos, que, às vezes, pode gerar...

4 meses atrás

By Zerum Team

Observabilidade na camada de Aplicação: Uma necessidade no cenário atual
Observabilidade na camada de Aplicação: Uma necessidade no cenário atual

As equipes de TI estão cada vez mais focadas na melhoria da segurança,...

2 anos atrás

By Zerum Team

Superando desafios do BYOD com análise de performance e segurança cibernética
Superando desafios do BYOD com análise de performance e segurança cibernética

A adoção da política de “traga o seu próprio dispositivo”, do “Bring Your...

2 anos atrás

By Zerum Team