Todos os produtos
Search
Central de documentação

Alibaba Cloud Linux:Guia de configuração do TCP-RT

Última atualização: Jun 29, 2026

O TCP-RT é uma ferramenta de monitoramento de TCP instrumentada no kernel que identifica pares de requisição/resposta em conexões TCP e captura métricas de tempo: tempo de upload, tempo de processamento do serviço e tempo de download. Ela funciona com protocolos que utilizam uma única requisição/resposta simultânea por conexão, incluindo HTTP/1.1, MySQL e Redis.

Duas versões estão disponíveis:

Versão

Interface

Requisito do sistema

tcprt (recomendado)

systemctl + arquivo de configuração YAML

Alibaba Cloud Linux 3, kernel 5.10.134-17 ou posterior

tcp_rt.ko

modprobe / rmmod + parâmetros sysfs

Alibaba Cloud Linux 2 (kernel 4.19.91-21.al7 ou posterior) ou Alibaba Cloud Linux 3

Use o tcprt sempre que possível. O tcp_rt.ko é mantido para compatibilidade com o Alibaba Cloud Linux 2 e kernels mais antigos do Alibaba Cloud Linux 3.

Limitações

  • Exclusão mútua: Ambas as versões gravam no mesmo caminho de arquivo de log. Não há suporte para execução simultânea — use apenas uma versão por vez.

  • Suporte a protocolos: O TCP-RT exige uma única requisição/resposta simultânea por conexão, como HTTP/1.1, MySQL ou Redis.

  • Requisitos de kernel: O tcprt requer Alibaba Cloud Linux 3 com kernel 5.10.134-17 ou posterior. O tcp_rt.ko suporta Alibaba Cloud Linux 2 (kernel 4.19.91-21.al7 ou posterior) ou qualquer kernel do Alibaba Cloud Linux 3.

  • Modos de análise: O tcp_rt.ko suporta apenas o modo de análise default. Os modos http e https estão disponíveis somente no tcprt.

Funcionamento

O TCP-RT instrumenta o kernel para registrar quatro timestamps por ciclo de requisição/resposta (chamado de TASK):

  • T0 — o primeiro pacote de requisição chega ao servidor

  • T1 — o último pacote de requisição chega ao servidor

  • T2 — o servidor envia o primeiro pacote de resposta

  • T3 — o servidor recebe o ACK final do cliente

Com base nesses timestamps, o TCP-RT deriva três métricas:

Métrica

Intervalo

O que mede

upload_time

T0 a T1

Tempo para a requisição do cliente chegar

process_time (atraso do serviço)

T1 a T2

Tempo de processamento do servidor

download_time

T2 a T3

Tempo para a resposta alcançar o cliente

O valor de download_time não aparece diretamente nos registros de log. Calcule-o da seguinte forma:

download_time = total_time - upload_time - process_time

Modo local (perspectiva do servidor)

Quando o TCP-RT é executado no servidor, ele registra os timestamps sob a perspectiva do servidor.

image

Modo peer (perspectiva do cliente)

Ao monitorar conexões de saída (modo peer), o TCP-RT registra os timestamps sob a perspectiva do cliente. Nesse modo, process_time corresponde ao intervalo entre o envio do último pacote de requisição pelo cliente e o recebimento do primeiro pacote de resposta.

image

Modos de análise

O modo de análise determina quais detalhes no nível de protocolo o TCP-RT captura:

Modo

Baseado em

O que adiciona

default

Análise genérica de requisição/resposta TCP (HTTP, Redis, MySQL)

http

default

Métricas de tempo de ida e volta (RTT) e janela de congestionamento; detecta HTTP Expect: 100-continue

https

http

Análise de handshake TLS (Transport Layer Security) e detecção de alerta Close Notify

O tcp_rt.ko suporta apenas o modo de análise default . Os modos http e https estão disponíveis somente no tcprt.

Os detalhes sobre o que cada modo registra encontram-se em Formato de saída.

Configure o tcprt

Pré-requisitos

Antes de começar, verifique se você tem:

  • Uma instância executando Alibaba Cloud Linux 3 com versão de kernel 5.10.134-17 ou posterior

  • Acesso sudo na instância

Instale e inicie o tcprt

  1. Instale o pacote tcprt.

    sudo yum install -y tcprt
  2. Abra o arquivo de configuração.

    sudo vim /etc/tcprt-bpf/tcprt.yaml
  3. Pressione i para entrar no modo de edição e configure os parâmetros necessários. Consulte Parâmetros de configuração para obter detalhes.

  4. Salve o arquivo: pressione Esc, digite :wq e pressione Enter.

  5. Inicie o serviço.

    sudo systemctl start tcprt
  6. (Opcional) Configure o tcprt para iniciar automaticamente na inicialização do sistema.

    sudo systemctl enable tcprt

Parâmetros de configuração

O arquivo de configuração possui três seções: global, per-port e init.

global

Aplica-se a todas as portas, a menos que seja substituído em per-port.

Parâmetro

Descrição

Valores

Padrão

peer

Modo padrão de correspondência de porta. false corresponde a portas locais; true corresponde a portas remotas.

true / false

(vazio)

stats

Ativa a saída de log de estatísticas.

enable / disable

disable

stats_interval

Intervalo de saída das estatísticas. Unidade: segundos.

Inteiro

60

first_frame_bytes

Limiares de bytes para estatísticas de tempo de conclusão. Unidade: byte.

Lista de até 4 inteiros

(vazio)

per-port

Lista de configurações específicas por porta. Cada entrada substitui os padrões globais para essa porta.

Parâmetro

Descrição

Valores

Padrão

port

Número da porta ou intervalo (dois inteiros separados por vírgula para um intervalo fechado).

Inteiro ou start,end

(obrigatório)

peer

Modo de correspondência para esta porta ou intervalo.

true / false

Valor global de peer

mode

Modo de análise.

default / http / https

default

first_frame

Ativa estatísticas de tempo de conclusão por limiares de bytes.

enable / disable

disable

init

Configurações de buffer, ajustáveis apenas na inicialização do serviço.

Parâmetro

Descrição

Padrão

log_buf_num

Número de sub-buffers para arquivos de log. Tamanho máximo do log = log_buf_num × log_buf_size.

8

log_buf_size

Tamanho de cada sub-buffer de log. Unidade: byte.

262144

stats_buf_num

Número de sub-buffers para arquivos de estatísticas. Tamanho máximo das estatísticas = stats_buf_num × stats_buf_size.

8

stats_buf_size

Tamanho de cada sub-buffer de estatísticas. Unidade: byte.

16384

Exemplo de configuração

O exemplo abaixo configura duas portas com modos de análise diferentes e ativa estatísticas de tempo de conclusão por limiar de bytes para a porta 443:

global:
  peer: false           # match local ports by default
  stats: disable
  stats_interval: 60
  first_frame_bytes: [100, 2000, 20000, 0]  # byte thresholds for R.F records

per-port:
  -
    port: 443
    mode: https         # enables TLS handshake parsing and Close Notify detection
    first_frame: enable # appends completion-time steps to R records
  -
    port: 56789,56800   # monitors port range 56789–56800
    mode: default
    peer: true          # match remote ports for this range

init:
  log_buf_num: 8
  log_buf_size: 262144
  stats_buf_num: 8
  stats_buf_size: 16384
As estatísticas de tempo de conclusão ( first_frame ) rastreiam limiares de bytes usando pacotes ACK. Como um único ACK pode confirmar uma grande rajada de dados, os volumes de dados registrados podem exceder os limiares configurados.

Desinstalar o tcprt

sudo yum remove tcprt

Digite y quando solicitado para confirmar.

Configure o tcp_rt.ko

Pré-requisitos

Antes de começar, verifique se você tem:

  • Uma instância executando Alibaba Cloud Linux 2 (kernel 4.19.91-21.al7 ou posterior) ou Alibaba Cloud Linux 3

  • Acesso sudo na instância

Carregar o módulo

Há duas abordagens disponíveis.

Opção 1: Definir parâmetros durante o carregamento

Carregue o módulo com parâmetros em um único comando. Por exemplo, para monitorar a porta local 80:

sudo modprobe tcp_rt lports=80

Verifique se o parâmetro foi aplicado:

sudo cat /sys/module/tcp_rt/parameters/lports

Opção 2: Carregar o módulo e depois definir parâmetros

  1. Carregue o módulo.

    sudo modprobe tcp_rt
  2. Grave os parâmetros em /sys/module/tcp_rt/parameters/. Por exemplo, para monitorar a porta local 80:

    sudo sh -c 'echo 80 > /sys/module/tcp_rt/parameters/lports'
  3. Verifique o parâmetro.

    sudo cat /sys/module/tcp_rt/parameters/lports

Parâmetros do módulo

Parâmetro

Descrição

Padrão

Comando de exemplo

stats

Ativa a saída de estatísticas. 0 = desativado, 1 = ativado.

0

echo 0 > stats

stats_interval

Intervalo de saída das estatísticas. Unidade: segundos.

60

echo 60 > stats_interval

lports

Portas locais do servidor a serem monitoradas (até 6).

(nenhum)

echo 80,800,8080 > lports

pports

Portas remotas de conexões TCP a serem monitoradas.

(nenhum)

echo 80,800,8080 > pports

lports_range

Intervalos de portas locais. Dois inteiros por intervalo.

(nenhum)

echo 80,100,1000,2000 > lports_range

pports_range

Intervalos de portas remotas. Dois inteiros por intervalo.

(nenhum)

echo 80,100,1000,2000 > pports_range

log_buf_num

Tamanho máximo do log = log_buf_num × 256 KB. Configurável apenas no carregamento do módulo.

8

modprobe tcp_rt log_buf_num=10

stats_buf_num

Tamanho máximo das estatísticas = stats_buf_num × 16 KB. Configurável apenas no carregamento do módulo.

8

modprobe tcp_rt stats_buf_num=10

Descarregar o módulo

  1. Desative o tcp_rt para que novas conexões não o utilizem mais.

    sudo echo 1 > /sys/kernel/debug/tcp-rt/deactivate
  2. Confirme que nenhuma conexão existente está usando o módulo.

    lsmod

    Se a contagem Used by para tcp_rt for 0, não há conexões ativas.

  3. Descarregue o módulo.

    sudo rmmod tcp_rt

Formato de saída

O TCP-RT gera dois tipos de arquivos em /sys/kernel/debug/tcp-rt via debugfs:

Tipo de arquivo

Padrão de caminho

Momento da saída

Arquivo de log

rt-network-log<N> (um arquivo por núcleo de CPU)

Quando a próxima TASK inicia em uma conexão ou quando a conexão é fechada

Arquivo de estatísticas

rt-network-stats

Periodicamente (padrão: a cada 60 segundos)

Os arquivos de log residem no sistema de arquivos virtual /sys e não consomem espaço em disco. O tamanho exibido por ls -l reflete o volume acumulado de logs, não o uso real de disco. Para verificar o tamanho real do log, redirecione a saída para um arquivo comum: cat rt-network-log0 > /tmp/sample.log .

Cada núcleo de CPU possui seu próprio arquivo de log. Em um servidor de 32 núcleos, os arquivos variam de rt-network-log0 a rt-network-log31. Cada arquivo comporta até 2 MB; dados mais antigos são removidos quando o limite é atingido. A leitura de um arquivo de log é destrutiva — os dados são apagados após cada leitura.

Formato do arquivo de log

Cada registro de log começa com oito campos fixos, seguidos por campos específicos do tipo.

Uma linha de log possui a seguinte estrutura:

<version> <type> <time_sec> <time_usec> <remote_ip> <remote_port> <local_ip> <local_port> [type-specific fields...]

Exemplo de registro R:

V6 R 1693382120 450123 10.0.1.5 54321 192.168.1.10 80 1024 85432 312 0 3 12500 580 512 0 1448

Campos em ordem: versão (V6), tipo (R), segundos de início da TASK (1693382120), microssegundos (450123), IP remoto (10.0.1.5), porta remota (54321), IP local (192.168.1.10), porta local (80), seguidos pelos campos específicos de R: dados enviados (1024 bytes), duração total (85432 us), RTT mínimo (312 us), retransmissões (0), número de sequência da TASK (3), atraso do serviço (12500 us), atraso de upload (580 us), dados recebidos (512 bytes), reordenação de recebimento (0), MSS (1448 bytes).

Campos fixos (todos os tipos de registro):

Posição

Campo

Descrição

1

Versão

V6 (padrão) ou V7 (para registros do tipo R com campos extras)

2

Tipo de registro

R, E, W, N ou P (veja abaixo)

3

Hora de início da TASK (segundos)

Timestamp Unix, parte dos segundos

4

Hora de início da TASK (microssegundos)

Parte dos microssegundos

5

IP remoto

Endereço IP remoto da conexão TCP

6

Porta remota

Porta remota da conexão TCP

7

IP local

Endereço IP local da conexão TCP

8

Porta local

Porta local da conexão TCP

Exemplo de entrada de log:

image

Tipos de registro e seus campos adicionais:

R — conclusão normal da TASK (servidor recebe requisição, envia resposta)

Uma única conexão TCP pode ter múltiplos registros R.

Campo

Descrição

Unidade

Dados enviados

Bytes enviados pela TASK

Byte

Duração total

T0 a T3 (chegada do primeiro segmento de requisição ao ACK final)

us

RTT mínimo

Tempo mínimo de ida e volta (RTT) TCP durante a TASK

us

Retransmissões

Segmentos TCP retransmitidos durante a TASK

contagem

Número de sequência da TASK

Índice baseado em 1; a primeira TASK após o estabelecimento da conexão é 1

Atraso do serviço (process_time)

T1 a T2 (último segmento de requisição ao primeiro segmento de resposta)

us

Atraso de upload (upload_time)

T0 a T1 (primeiro ao último segmento de requisição)

us

Dados recebidos

Bytes recebidos pela TASK

Byte

Reordenação de recebimento

1 = ocorreu recepção fora de ordem; 0 = nenhuma

MSS

Tamanho máximo de segmento (MSS) usado durante a TASK

Byte

RTT suavizado no final

RTT suavizado ao final da TASK. Relatado apenas no modo http/https (tcprt, V7).

us

Janela de congestionamento no final

Tamanho da janela de congestionamento ao final da TASK. Relatado apenas no modo http/https (tcprt, V7).

segmentos

Tipos estendidos de registro R (apenas tcprt, V7):

Tipo

Quando aparece

Significado

R.C

Modo http ou https

TASK acionada por uma requisição HTTP Expect: 100-continue (sem dados de aplicação)

R.Z

Modo https

TASK pertence a um handshake TLS 1.3 0-RTT

R.A

Modo https

TASK contém uma mensagem de alerta TLS Close Notify

R.H

Modo https

TASK pertence a uma fase de handshake TLS. Para TLS 1.2 (handshake de quatro vias), dois registros R.H são gerados. Para TLS 1.3 (handshake de três vias), um registro R.H é gerado e inclui a duração do handshake. Formato do campo final: H <time_us>. Exemplo: H 151878 significa que o handshake levou 151.878 us.

R.F

Quando first_frame está ativado

Estatísticas de tempo de conclusão por limiares de bytes. Formato do campo final: F <n> [bytes time] .... Exemplo: F 6 7240 214 63698 311 98436 358n=6 é a contagem total de números individuais (três pares); tempos de conclusão de 214, 311 e 358 us correspondem a volumes de dados de 7.240, 63.698 e 98.436 bytes.

Os tipos estendidos podem ser combinados. Por exemplo, R.AF significa que tanto A quanto F se aplicam.

R.A e R.C usam o volume de dados de resposta como critério de detecção e podem apresentar pequenos falsos positivos.

P — conclusão de TASK de saída (servidor local atua como cliente)

Registros P aparecem apenas quando pports ou pports_range está configurado. Um único serviço TCP pode ter múltiplos registros P.

Campo

Descrição

Unidade

Dados enviados

Bytes enviados pela TASK

Byte

Duração total

Do envio da requisição ao recebimento da resposta remota final

us

RTT mínimo

RTT TCP mínimo durante a TASK

us

Retransmissões

Segmentos TCP retransmitidos

contagem

Número de sequência da TASK

Índice baseado em 1

Tempo de serviço

Da conclusão da requisição ao recebimento da primeira resposta

us

Tempo de recebimento da resposta

Do recebimento do primeiro ao último pacote de resposta

us

Dados recebidos

Total de bytes de resposta recebidos

Byte

Reordenação de recebimento

1 = ocorreu fora de ordem; 0 = nenhuma

MSS

Tamanho máximo de segmento usado durante a TASK

Byte

E — fechamento de conexão

Cada conexão TCP produz exatamente um registro E. Conexões com pports ou pports_range configurados também geram este registro.

Campo

Descrição

Unidade

Último número de sequência da TASK

Número de sequência da TASK final

Total de dados enviados

Bytes enviados durante todo o ciclo de vida TCP

Byte

Dados não confirmados

Bytes enviados mas não confirmados no fechamento; 0 se nenhum

Byte

Total de dados recebidos

Bytes recebidos durante todo o ciclo de vida TCP

Byte

Retransmissões

Segmentos TCP retransmitidos durante o ciclo de vida

contagem

RTT mínimo

RTT TCP mínimo durante o ciclo de vida

us

N — conexão fechada durante o recebimento da requisição

Uma conexão tem no máximo um registro N.

Campo

Descrição

Unidade

Último número de sequência da TASK

Número de sequência da TASK final

Duração

Duração apenas de recebimento (conexão fechada antes do envio de uma resposta)

us

Dados recebidos

Bytes recebidos durante o ciclo de vida TCP

Byte

Reordenação de recebimento

1 = ocorreu fora de ordem; 0 = nenhuma

MSS

Tamanho máximo de segmento usado

Byte

W — conexão fechada durante a transmissão da resposta

Uma conexão tem no máximo um registro W.

Campo

Descrição

Unidade

Dados de resposta enviados

Bytes de dados de resposta já enviados para a última TASK

Byte

Duração

Duração parcial (conexão fechada antes da conclusão da resposta)

us

RTT mínimo

RTT TCP mínimo para a última TASK

us

Retransmissões

Segmentos TCP retransmitidos para a última TASK

contagem

Último número de sequência da TASK

Número de sequência da TASK final

Atraso do serviço

T1 a T2 para a última TASK

us

Atraso de upload

T0 a T1 para a última TASK

us

Dados de resposta não confirmados

Bytes de resposta enviados mas não confirmados; 0 se nenhum

Byte

Reordenação de recebimento

1 = ocorreu fora de ordem; 0 = nenhuma

MSS

Tamanho máximo de segmento usado para a última TASK

Byte

Para campos de dados enviados: se uma TASK for a última em uma conexão, o tamanho relatado é um byte menor que os bytes realmente enviados (para contabilizar a flag FIN). Se a conexão terminar com um RST após uma TASK concluída, os bytes reais enviados são um byte maiores que o valor exibido. A margem de erro é sempre de um byte.

Formato do arquivo de estatísticas

O arquivo de estatísticas agrega métricas por porta (porta do servidor ou porta do cliente) e é gerado periodicamente. Os campos aparecem da esquerda para a direita:

Posição

Campo

Unidade

1

Timestamp

2

Campo reservado (sempre all)

3

Número da porta

4

Duração média total da TASK (dos registros R)

us

5

Atraso médio do serviço (dos registros R)

us

6

Taxa de perda de pacotes

por mil (‰)

7

RTT médio

us

8

Taxa de TASKs fechadas durante a transmissão da requisição

por mil (‰)

9

Média de dados enviados por TASK

Byte

10

Atraso médio de upload

us

11

Média de dados recebidos por TASK

Byte

12

Número de TASKs incluídas nas estatísticas

contagem

tcprt vs tcp_rt.ko

tcprt

tcp_rt.ko

Caminho do arquivo de log

Igual

Igual

Formato do log

Estende o formato V7 (compatível com V6)

Apenas V6

Gerenciamento de recursos

systemctl

modprobe / rmmod

Configuração

/etc/tcprt-bpf/tcprt.yaml

/sys/module/tcp_rt/parameters/*

Requisitos do sistema

Alibaba Cloud Linux 3, kernel >= 5.10.134-17

Alibaba Cloud Linux 2 (kernel >= 4.19.91-21.al7) ou Alibaba Cloud Linux 3

Modos de análise

default, http, https

Apenas default

**Recurso first_frame**

Suportado

Não suportado

Perguntas frequentes

Por que ls -l mostra um tamanho de arquivo maior do que o configurado?

Os arquivos de log residem no sistema de arquivos virtual /sys (via debugfs) e não ocupam espaço em disco. O tamanho relatado por ls -l rastreia o volume acumulado de logs gravados ao longo do tempo, não o uso atual do buffer, portanto ele cresce continuamente e excede o tamanho de buffer configurado. Para verificar o tamanho real do conteúdo do log, redirecione a saída para um arquivo comum e inspecione-o:

cat /sys/kernel/debug/tcp-rt/rt-network-log0 > /tmp/tcprt-sample.log
ls -lh /tmp/tcprt-sample.log

O arquivo redirecionado reflete os dados reais disponíveis (até o limite configurado de 2 MB pelas configurações padrão).

image