): #! /bin/bash # TODO use seq or bash to generate a list of the requested sizes (to allow for non-equidistantly spaced sizes) #. TECH=ADSL2 # just to give some meaning to the ping trace file name # finding a proper target IP is somewhat of an art, just traceroute a remote site. # and find the nearest host reliably responding to pings showing the smallet variation of pingtimes TARGET=${1} # the IP against which to run the ICMP pings DATESTR=`date +%Y%m%d_%H%M%S`<-># to allow multiple sequential records LOG=ping_sweep_${TECH}_${DATESTR}.txt # by default non-root ping will only end one packet per second, so work around that by calling ping independently for each package # empirically figure out the shortest period still giving the standard ping time (to avoid being slow-pathed by our target) PINGPERIOD=0.01><------># in seconds PINGSPERSIZE=10000 # Start, needed to find the per packet overhead dependent on the ATM encapsulation # to reiably show ATM quantization one would like to see at least two steps, so cover a range > 2 ATM cells (so > 96 bytes) SWEEPMINSIZE=16><------># 64bit systems seem to require 16 bytes of payload to include a timestamp... SWEEPMAXSIZE=116 n_SWEEPS=`expr ${SWEEPMAXSIZE} - ${SWEEPMINSIZE}` i_sweep=0 i_size=0 echo "Running ICMP RTT measurement against: ${TARGET}" while [ ${i_sweep} -lt ${PINGSPERSIZE} ] do (( i_sweep++ )) echo "Current iteration: ${i_sweep}" # now loop from sweepmin to sweepmax i_size=${SWEEPMINSIZE} while [ ${i_size} -le ${SWEEPMAXSIZE} ] do echo "${i_sweep}. repetition of ping size ${i_size}" ping -c 1 -s ${i_size} ${TARGET} >> ${LOG} &\ (( i_size++ )) # we need a sleep binary that allows non integer times (GNU sleep is fine as is sleep of macosx 10.8.4) sleep ${PINGPERIOD} done done echo "Done... ($0)" This will try to run 10000 repetitions for ICMP packet sizes from 16 to 116 bytes running (10000 * 101 * 0.01 / 60 =) 168 minutes, but you should be able to stop it with ctrl c if you are not patience enough, with your link I would estimate that 3000 should be plenty, but if you could run it over night that would be great and then ~3 hours should not matter much. And then run the following attached code in octave or matlab