# INSTRUCTIONS # # This is a tool for TCP transparency testing. It allows you to send # a wide variety of `interesting' packets from one nominated machine # to another, and then examine what arrived to see if there are any # differences. # # Up to 4 hosts are involved: one to do the test dataset generation, a # sender, a receiver, and one to do the analysis. # # # WHAT YOU WILL NEED # # on the machine you generate the test data # This Makefile and corresponding Tcl script # Tcl (as /usr/bin/tclsh) # OpenSSL (as `openssl' on PATH) # Lots of CPU ! (the generation script is rather slow) # # on the sending machine # tcpreplay (http://www.subterrain.net/tools/tcpreplay/, # or from Debian testing 3.5.2002. I used 1.0.1-1.1) # and root privilege to run it # # on the receiving machine # tcpdump for packet capture, and root privilege to run it # The `on-dest.sh' script that this Makefile creates # # on the analysis machine # tcpdump for converting trace files only, no root privilege # This Makefile to drive tcpdump for you, if you like # diff to look at the output # # It will be much better if the machines you are using do not have any # other traffic. If they do the tests may disrupt it, and it'll get # in the way of your analysis too. # # # WHAT TO DO # # 1. Generate the test data. # * Edit this Makefile. # You /must/ change SOURCE and DEST; they must be IPv4 addresses. # You may also change PARTS, PERPART or MTU if you like. # * Say `make -j2 generate'. This will generate the test data sets. # This will take a while. Vary the -j for your system. # * Copy send-*.pcap and on-dest.sh to the sending machine. # # 2. Run one of the tests # * Pick a PART number, say 1, to start with. # * On the receiving machine, say, as root, # ./on-dest.sh PART # and leave it running. # * On the sending machine, say, as root, # tcpreplay -m 1 >$@; done send-rest.why: $(R_WHYS) cat $(R_WHYS) >$@.1.tmp nl -bp'^ ? ? ?[0-9]' <$@.1.tmp >$@.2.tmp @mv -f $@.2.tmp $@ send-%.pcap: ./make-probes.tcl ./make-probes.tcl --write $@ --mtu $(MTU) --upto $(PERPART) \ --source $(SOURCE) --dest $(DEST) --xseed "$* $(UNIQUE)" \ >send-$*.why %.log: %.pcap tcpdump -tnxvvs$$(($(MTU)+50)) -r $< >$@.1.tmp nl -bp'^[0-9]' <$@.1.tmp >$@.2.tmp @mv -f $@.2.tmp $@ on-dest.sh: Makefile @rm -f $@ echo >$@ "#!/bin/sh" @echo >>$@ "# run this script on $(DEST) as root, saying:" @echo >>$@ "# ./on-dest.sh PART" @echo >>$@ "# where PART ranges from 1 to $(PARTS)" @echo >>$@ "if ! [ \$$# = 1 ]; then echo >&2 'PART?'; exit 1; fi" @echo >>$@ "exec tcpdump -ps$$(($(MTU)+50)) -w recv-\$$1.pcap \\" @echo >>$@ " src host $(SOURCE) and dst host $(DEST)" chmod +x $@ clean: rm -f *.tmp *~ t u v realclean: clean rm -f $(TARGETS) *.pcap *.why *.log