I have machine A -> machine B (one-way connection from A to B) . I need to send massive TCP packets from A to B and validate that all packets revived. Do you have any recommendation for tools?
Eu recomendo TCP , que garante reliable, ordered delivery
dos dados.
(Você está nos pedindo uma ferramenta para fazer o que o protocolo subjacente já faz.)
Observe também que o TCP é inerentemente bidirecional : ACK
s precisa ser enviado de volta da Máquina B para a máquina A. Uma "conexão unidirecional" é impossível - Não ACK
s significa que a transmissão irá parar para sempre.
I think on upload big file from A to B (do this when they has two-way connection) dump the traffic from A to B and than replay it with tcpreplay (i will create 100 threads that will replay it in order to have massive tcp stream). In order to validate i will analyze the tcpdump on the receiver to check if its has the same excepted amount of packets as sent.
O TCP não funciona dessa maneira. A contagem de pacotes através do fio pode ser diferente devido aos diferentes tamanhos de janela / MTU, pacotes drop-and-retransmitted, ACKs atrasados (resultando em transmissão dupla de alguns pacotes), etc.
Você não pode simplesmente empurrar os mesmos dados pelo fio e esperar que ele funcione exatamente da mesma maneira - Na prática, isso geralmente funciona (e é a base de replay attacks ), mas o TCP é governado por uma máquina de estado, e você realmente precisa executar isso para cada conexão.
Se você precisar gerar uma grande quantidade de tráfego TCP e não se importar com os dados, basta iniciar vários fluxos enviando os dados para os ouvintes no sistema remoto (o que presumivelmente pode descartá-los).
Se você se preocupa com os dados que você deve fazer como lasrks sugeridos e checksum os dados recebidos (na sua totalidade) depois que eles saem da pilha TCP / IP ...