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

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,...

11 meses 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...

1 ano atrás

By Zerum Team

Observabilidade: Além do monitoramento
Observabilidade: Além do monitoramento

A área de tecnologia da informação é repleta de sistemas complexos, frequentemente distribuídos,...

1 ano atrás

By Zerum Team