2012-06-05 13 views
6

Sto utilizzando Scapy per riprodurre alcuni pacchetti scaricati in cui cambio il valore TTL. Ho ottenuto risultati molto strani anche con TTL = 1.non riceve tutti i messaggi superati in tempo ICMP: perché?

Quando eseguo le mie ore di test l'una dall'altra, posso ottenere da circa il 40% al 95% dei pacchetti a cui è stato risposto un messaggio di superamento del tempo ICMP. Quindi posso ricorsivamente riprodurre i pacchetti senza risposta e ottenere ogni volta più o meno la stessa percentuale di pacchetti con risposta di prima.

Perché è quello?

Ho inviato pacchetti con un intervallo di 0,1 secondi tra loro. Questo dovrebbe essere ok, giusto? Il mio valore di timeout è 10 secondi, che dovrebbe essere molto prudente.

Cosa c'è che non va qui?

risposta

5

Quello che stai dicendo è essenzialmente che puoi testare solo per così tanti ospiti irraggiungibili in un dato lasso di tempo. Una possibile ragione: molti router di messaggi ICMP con limite di velocità.

È molto meglio testare un successo di ping su un host prima di fare qualcos'altro; in questo modo hai una conferma positiva di raggiungibilità. Lo svantaggio è che MS Windows blocca i ping di default.

Se non è possibile utilizzare prima ping, è necessario aumentare il tempo tra le sonde o aumentare la velocità non raggiungibile ICMP sul router che restituisce i messaggi ICMP.

EDIT:

Sulla base dei commenti, sembra che si sta colpendo un muro per scapy 's capacità di elaborare il traffico. Ho migliorato il throughput in passato inviando con scapy e spawning tcpdump in background per ricevere traffico.

+0

Anche la limitazione della velocità ICMP era una mia ipotesi, ma oggi ho provato a inviare nuovamente tutto con un intervallo tra pacchetti pari a 5 secondi e non ho ancora ricevuto risposta per almeno 6-7 pacchetti da il mio 50 (piccolo test). Sto usando la funzione 'sr' in Scapy. Così ho pensato di passarlo un pacchetto alla volta e poi mettere in pausa per 1 secondo. Bene, questa volta * ogni * singolo pacchetto viene risposto. Immagino sia un problema con l'implementazione di 'sr'. –

+1

Ho visto problemi simili con 'scapy', è lento al cane per inviare/ricevere traffico; su un progetto ho effettivamente iniziato a usare 'tcpdump' come processi in background che ha scritto in un file' .pcap' e poi ho analizzato il file in 'scapy' per vedere se ho ottenuto la risposta corretta. –

+0

Vedo. Conosci qualche alternativa alla funzione 'sr' di scapy? Devo davvero solo inviare pacchetti con un valore TTL modificato e associarli con il corrispondente messaggio ICMP. Sembrava/così/semplice in Scapy, ma chiamare 'sr' per ogni pacchetto richiede anni. –

Problemi correlati