Erro de Netlink ao usar a fila de IP

1

Parece que tenho um problema com a fila de IPs.

Eu tenho uma máquina Linux que estou usando para executar alguns experimentos. A máquina linux é configurada para ser um roteador, tendo duas NICs, conectando dois outros computadores e gerenciando seu tráfego de rede. Todos os pacotes recebidos são capturados usando o iptables e analisados por um aplicativo C.

A aplicação que analisa os pacotes tem um atraso incorporado, como parte da experiência.

Então, eu tenho um computador muito rápido enviando pacotes através do meu roteador linux e um roteador linux (relativamente) lento que analisa e lida com os pacotes, um por um.

Essa situação leva ao fato de que quando eu ligo uma aplicação remetente em um dos computadores conectados ao roteador linux, minha fila IP no roteador linux é preenchida (quase) instantaneamente.

O comprimento máximo da fila de IPs está atualmente definido para 1024 e, se ele exceder, os pacotes serão descartados. Isso é esperado e estou bem com isso.

Mas, (e é aí que fica interessante), de vez em quando recebo o seguinte erro:

"Failed to receive netlink message: No buffer space available"

No começo, eu pensei que isso era devido ao estouro da fila IP, mas depois de algumas análises eu descobri que às vezes eu recebo o erro mesmo se o buffer da fila IP não estourou, e às vezes eu não recebo a mensagem mesmo o estouro de buffer DID.

Quando executo > cat /proc/net/ip_queue , obtenho a tabela a seguir (também usada para monitorar o estouro da fila de IPs):

Peer PID          : 27389
Copy mode         : 2
Copy range        : 65535
Queue length      : 0
Queue max. length : 1024
Queue dropped     : 1166875
Netlink dropped   : 2916

Observando os dois últimos valores, Queue dropped parece se referir a pacotes que não conseguiram entrar na fila de IP porque o buffer estava cheio. Eu posso ver esse valor subir enquanto bombardeio o roteador linux. Netlink dropped (como o nome indica :)) parece ter a ver com o erro que estou recebendo.

Eu fiz o meu melhor para procurar material sobre esse erro, mas não consegui encontrar nada que parecesse me indicar na direção necessária.

Resumindo: Por que estou recebendo este erro e o que posso fazer para evitá-lo?

    
por summerbulb 22.11.2012 / 12:25

0 respostas