O Winpcap é capaz de capturar todos os pacotes que passam por uma NIC Gigabit sem perder nenhum pacote?

3

Eu quero usar o Winpcap para capturar todos os pacotes de rede que passam por uma NIC Gigabit de um servidor.

Supondo que eu seja capaz de utilizar o link de rede até 100%, a velocidade máxima da rede é de 1000 Mbps. Se excluirmos os cabeçalhos TCP / IP, a taxa de dados TCP máxima deverá ser de aproximadamente 940 Mbps.

Digamos que eu envie um arquivo de 1 GB pela NIC a 940Mbps usando a porta de destino TCP 6000. Eu uso o Winpcap para capturar todos os pacotes de rede que passam pela NIC e depois despejo para um arquivo pcap. Se eu usar o Wireshark para analisar o arquivo pcap e, em seguida, verificar a soma do tamanho do pacote para todos os pacotes de rede enviados para a porta TCP 6000, poderei obter exatamente 1GB do arquivo pcap?

Obrigado.

    
por userpal 30.06.2012 / 07:57

1 resposta

1

Supondo que você seja capaz de utilizar o link de rede em até 100%, a velocidade máxima da rede NÃO é de 1 Gbps. É menos devido a lacunas entre intervalos de quadros e somas de verificação. Isto é mesmo antes de você começar a considerar os cabeçalhos de pacotes (como você mencionou corretamente em sua pergunta original).

Também como está implícito em um comentário acima, uma máquina típica terá dificuldades para gerar pacotes em wirespeed, quanto mais gerar e capturar pacotes ao mesmo tempo em wirespeed. O único método que eu uso para gerar pacotes em wirespeed (em uma máquina linux) é criar pacotes de 1500 bytes e usar tcpreplay. Usando este método, eu posso chegar muito perto de wirespeed, mas isso utiliza a CPU ~ 100%, a menos que você esteja em uma máquina muito rápida.

Tendo dito tudo isso, não há nada de errado com o seu plano para determinar a quantidade de dados enviados para a porta TCP 6000, capturando e visualizando com o wireshark. (Certifique-se de capturar APENAS a porta TCP 6000, em vez de todos os pacotes na interface.) Você só precisa garantir que a CPU não seja carregada 100% de tal forma que a captura de pacotes não seja capaz de processar todos os pacotes. Mas isso é verdade, independentemente do método usado.

    
por 10.02.2013 / 22:05