Changes between Initial Version and Version 1 of PlasticSlices/Continuation/Round8


Ignore:
Timestamp:
05/01/12 11:10:19 (12 years ago)
Author:
Josh Smift
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • PlasticSlices/Continuation/Round8

    v1 v1  
     1[[PageOutline]]
     2
     3= Continuation Round 8 =
     4
     5In this round, we ran all ten slices on all eight sites, for a week.
     6
     7The raw logs are at http://www.gpolab.bbn.com/plastic-slices/continuation/round-8/.
     8
     9= plastic-101 =
     10
     11[ggw:PlasticSlices/Experiments#SteadyPing SteadyPing], using interval=.006, and this table of client/server pairs:
     12
     13|| '''client'''                   || '''server'''                   || '''server address''' ||
     14|| ganel.gpolab.bbn.com           || planetlab5.clemson.edu         || server=10.42.101.105 ||
     15|| planetlab4.clemson.edu         || plnode2.cip.gatech.edu         || server=10.42.101.101 ||
     16|| plnode1.cip.gatech.edu         || pl5.myplc.grnoc.iu.edu         || server=10.42.101.73  ||
     17|| pl4.myplc.grnoc.iu.edu         || orbitplc2.orbit-lab.org        || server=10.42.101.112 ||
     18|| orbitplc1.orbit-lab.org        || of-planet2.stanford.edu        || server=10.42.101.91  ||
     19|| of-planet1.stanford.edu        || pl02.cs.washington.edu         || server=10.42.101.81  ||
     20|| pl01.cs.washington.edu         || wings-openflow-3.wail.wisc.edu || server=10.42.101.96  ||
     21|| wings-openflow-2.wail.wisc.edu || gardil.gpolab.bbn.com          || server=10.42.101.52  ||
     22
     23== Commands run on each client ==
     24
     25{{{
     26server=<ipaddr>
     27sudo ping -i .006 -s $((1500-8-20)) $server
     28}}}
     29
     30== Results ==
     31
     32Generated from the logs with
     33
     34{{{
     35subnet=101
     36for host in $(awk 'NR%2==1' ~/plastic-slices/logins/logins-plastic-$subnet.txt | sed -r -e 's/.+@//') ; do echo -e "$host:\n\n{{{" ; grep -A 2 statistics pgenigpolabbbncom_plastic$subnet\@$host.log ; echo -e "}}}\n" ; done
     37}}}
     38
     39== Analysis ==
     40
     41''(forthcoming)''
     42
     43= plastic-102 =
     44
     45[ggw:PlasticSlices/Experiments#SteadyPing SteadyPing], using interval=.006, and this table of client/server pairs:
     46
     47|| '''client'''                   || '''server'''                   || '''server address''' ||
     48|| navis.gpolab.bbn.com           || planetlab4.clemson.edu         || server=10.42.102.104 ||
     49|| planetlab5.clemson.edu         || plnode1.cip.gatech.edu         || server=10.42.102.100 ||
     50|| plnode2.cip.gatech.edu         || pl4.myplc.grnoc.iu.edu         || server=10.42.102.72  ||
     51|| pl5.myplc.grnoc.iu.edu         || orbitplc1.orbit-lab.org        || server=10.42.102.111 ||
     52|| orbitplc2.orbit-lab.org        || of-planet2.stanford.edu        || server=10.42.102.91  ||
     53|| of-planet1.stanford.edu        || pl01.cs.washington.edu         || server=10.42.102.80  ||
     54|| pl02.cs.washington.edu         || wings-openflow-2.wail.wisc.edu || server=10.42.102.95  ||
     55|| wings-openflow-3.wail.wisc.edu || bain.gpolab.bbn.com            || server=10.42.102.54  ||
     56
     57== Commands run on each client ==
     58
     59{{{
     60server=<ipaddr>
     61sudo ping -i .006 -s $((1500-8-20)) $server
     62}}}
     63
     64== Results ==
     65
     66Generated from the logs with
     67
     68{{{
     69subnet=102
     70for host in $(awk 'NR%2==1' ~/plastic-slices/logins/logins-plastic-$subnet.txt | sed -r -e 's/.+@//') ; do echo -e "$host:\n\n{{{" ; grep -A 2 statistics pgenigpolabbbncom_plastic$subnet\@$host.log ; echo -e "}}}\n" ; done
     71}}}
     72
     73== Analysis ==
     74
     75''(forthcoming)''
     76
     77= plastic-103 =
     78
     79[ggw:PlasticSlices/Experiments#SteadyPerfTCP SteadyPerf TCP], using port=5103, time=518400, and this table of client/server pairs:
     80
     81|| '''client'''                   || '''server'''                   || '''server address''' ||
     82|| of-planet1.stanford.edu        || ganel.gpolab.bbn.com           || server=10.42.103.51  ||
     83|| gardil.gpolab.bbn.com          || orbitplc1.orbit-lab.org        || server=10.42.103.111 ||
     84|| pl02.cs.washington.edu         || sardis.gpolab.bbn.com          || server=10.42.103.53  ||
     85|| orbitplc2.orbit-lab.org        || pl01.cs.washington.edu         || server=10.42.103.80  ||
     86
     87== One-time prep commands run on each client and server ==
     88
     89{{{
     90sudo yum -y install iperf
     91}}}
     92
     93== Commands run on each server ==
     94
     95{{{
     96server=<ipaddr>
     97nice -n 19 iperf -B $server -p 5103 -s -i 1
     98}}}
     99
     100== Commands run on each client ==
     101
     102{{{
     103server=<ipaddr>
     104nice -n 19 iperf -c $server -p 5103 -t 518400
     105}}}
     106
     107== Results ==
     108
     109Generated with
     110
     111{{{
     112subnet=103
     113for host in $(awk 'NR%2==1' ~/plastic-slices/logins/logins-plastic-$subnet.txt | sed -r -e 's/.+@//') ; do echo -e "$host:\n\n{{{" ; grep -a -A 5 -B 1 "Client connecting" pgenigpolabbbncom_plastic$subnet\@$host.log ; echo -e "}}}\n" ; done
     114}}}
     115
     116and then edited slightly to remove artifacts (like control characters, my prompt, etc).
     117
     118== Analysis ==
     119
     120''(forthcoming)''
     121
     122= plastic-104 =
     123
     124[ggw:PlasticSlices/Experiments#SteadyPerfUDP SteadyPerf UDP], using port=5104, time=518400, rate=3, and this table of client/server pairs:
     125
     126|| '''client'''                   || '''server'''                   || '''server address''' ||
     127|| ganel.gpolab.bbn.com           || wings-openflow-2.wail.wisc.edu || server=10.42.104.95  ||
     128|| wings-openflow-3.wail.wisc.edu || orbitplc2.orbit-lab.org        || server=10.42.104.112 ||
     129|| orbitplc1.orbit-lab.org        || pl4.myplc.grnoc.iu.edu         || server=10.42.104.72  ||
     130|| pl5.myplc.grnoc.iu.edu         || sardis.gpolab.bbn.com          || server=10.42.104.53  ||
     131
     132== One-time prep commands run on each client and server ==
     133
     134{{{
     135sudo yum -y install iperf
     136}}}
     137
     138== Commands run on each server ==
     139
     140{{{
     141server=<ipaddr>
     142nice -n 19 iperf -u -B $server -p 5104 -s -i 1
     143}}}
     144
     145== Commands run on each client ==
     146
     147{{{
     148server=<ipaddr>
     149nice -n 19 iperf -u -c $server -p 5104 -t 518400 -b 3M
     150}}}
     151
     152== Results ==
     153
     154Generated with
     155
     156{{{
     157subnet=104
     158for host in $(awk 'NR%2==1' ~/plastic-slices/logins/logins-plastic-$subnet.txt | sed -r -e 's/.+@//') ; do echo -e "$host:\n\n{{{" ; grep -A 10 -B 1 "Client connecting" pgenigpolabbbncom_plastic$subnet\@$host.log ; echo -e "}}}\n" ; done
     159}}}
     160
     161and then edited slightly to remove artifacts (like control characters, my prompt, etc).
     162
     163== Analysis ==
     164
     165''(forthcoming)''
     166
     167= plastic-105 =
     168
     169[ggw:PlasticSlices/Experiments#SteadyPerfTCP SteadyPerf TCP], using port=5105, time=518400, and this table of client/server pairs:
     170
     171|| '''client'''                   || '''server'''                   || '''server address''' ||
     172|| wings-openflow-2.wail.wisc.edu || planetlab5.clemson.edu         || server=10.42.105.105 ||
     173|| planetlab4.clemson.edu         || navis.gpolab.bbn.com           || server=10.42.105.55  ||
     174|| bain.gpolab.bbn.com            || plnode2.cip.gatech.edu         || server=10.42.105.101 ||
     175|| plnode1.cip.gatech.edu         || wings-openflow-3.wail.wisc.edu || server=10.42.105.96  ||
     176
     177== One-time prep commands run on each client and server ==
     178
     179{{{
     180sudo yum -y install iperf
     181}}}
     182
     183== Commands run on each server ==
     184
     185{{{
     186server=<ipaddr>
     187nice -n 19 iperf -B $server -p 5105 -s -i 1
     188}}}
     189
     190== Commands run on each client ==
     191
     192{{{
     193server=<ipaddr>
     194nice -n 19 iperf -c $server -p 5105 -t 518400
     195}}}
     196
     197== Results ==
     198
     199Generated with
     200
     201{{{
     202subnet=105
     203for host in $(awk 'NR%2==1' ~/plastic-slices/logins/logins-plastic-$subnet.txt | sed -r -e 's/.+@//') ; do echo -e "$host:\n\n{{{" ; grep -A 5 -B 1 "Client connecting" pgenigpolabbbncom_plastic$subnet\@$host.log ; echo -e "}}}\n" ; done
     204}}}
     205
     206and then edited slightly to remove artifacts (like control characters, my prompt, etc).
     207
     208== Analysis ==
     209
     210''(forthcoming)''
     211
     212= plastic-106 =
     213
     214[ggw:PlasticSlices/Experiments#SteadyPerfUDP SteadyPerf UDP], using port=5106, time=518400, rate=3, and this table of client/server pairs:
     215
     216|| '''client'''                   || '''server'''                   || '''server address''' ||
     217|| planetlab5.clemson.edu         || wings-openflow-2.wail.wisc.edu || server=10.42.106.95  ||
     218|| wings-openflow-3.wail.wisc.edu || plnode1.cip.gatech.edu         || server=10.42.106.100 ||
     219|| plnode2.cip.gatech.edu         || bain.gpolab.bbn.com            || server=10.42.106.54  ||
     220|| navis.gpolab.bbn.com           || planetlab4.clemson.edu         || server=10.42.106.104 ||
     221
     222== One-time prep commands run on each client and server ==
     223
     224{{{
     225sudo yum -y install iperf
     226}}}
     227
     228== Commands run on each server ==
     229
     230{{{
     231server=<ipaddr>
     232nice -n 19 iperf -u -B $server -p 5106 -s -i 1
     233}}}
     234
     235== Commands run on each client ==
     236
     237{{{
     238server=<ipaddr>
     239nice -n 19 iperf -u -c $server -p 5106 -t 518400 -b 3M
     240}}}
     241
     242== Results ==
     243
     244Generated with
     245
     246{{{
     247subnet=106
     248for host in $(awk 'NR%2==1' ~/plastic-slices/logins/logins-plastic-$subnet.txt | sed -r -e 's/.+@//') ; do echo -e "$host:\n\n{{{" ; grep -A 10 -B 1 "Client connecting" pgenigpolabbbncom_plastic$subnet\@$host.log ; echo -e "}}}\n" ; done
     249}}}
     250
     251and then edited slightly to remove artifacts (like control characters, my prompt, etc).
     252
     253== Analysis ==
     254
     255''(forthcoming)''
     256
     257= plastic-107 =
     258
     259[ggw:PlasticSlices/Experiments#SteadyWeb SteadyWeb], using port=4107, file=substrate.doc, md5sum=d4fcf71833327fbfef98be09deef8bfb, and this table of client/server pairs:
     260
     261|| '''client'''                   || '''server'''                   || '''server address''' ||
     262|| planetlab5.clemson.edu         || pl4.myplc.grnoc.iu.edu         || server=10.42.107.72  ||
     263|| pl5.myplc.grnoc.iu.edu         || plnode2.cip.gatech.edu         || server=10.42.107.101 ||
     264|| plnode1.cip.gatech.edu         || pl02.cs.washington.edu         || server=10.42.107.81  ||
     265|| pl01.cs.washington.edu         || planetlab4.clemson.edu         || server=10.42.107.104 ||
     266
     267== One-time prep commands run on each server ==
     268
     269{{{
     270sudo yum -y install pyOpenSSL patch
     271cd
     272rm -rf ~/gigaweb
     273mkdir -p ~/gigaweb/docroot
     274
     275cd ~/gigaweb
     276wget http://code.activestate.com/recipes/442473-simple-http-server-supporting-ssl-secure-communica/download/1/ -O httpsd.py
     277wget http://groups.geni.net/geni/attachment/wiki/PlasticSlices/Experiments/httpsd.py.patch?format=raw -O httpsd.py.patch
     278patch httpsd.py httpsd.py.patch
     279rm httpsd.py.patch
     280
     281cd ~/gigaweb/docroot
     282wget http://groups.geni.net/geni/attachment/wiki/DeliverablePage/Spiral1%20substrate%20catalog.doc?format=raw -O substrate.doc
     283
     284cd ~/gigaweb
     285openssl genrsa -passout pass:localhost -des3 -rand /dev/urandom -out localhost.localdomain.key 1024
     286openssl req -subj /CN=localhost.localdomain -passin pass:localhost -new -key localhost.localdomain.key -out localhost.localdomain.csr
     287openssl x509 -passin pass:localhost -req -days 3650 -in localhost.localdomain.csr -signkey localhost.localdomain.key -out localhost.localdomain.crt
     288openssl rsa -passin pass:localhost -in localhost.localdomain.key -out decrypted.localhost.localdomain.key
     289mv -f decrypted.localhost.localdomain.key localhost.localdomain.key
     290cat localhost.localdomain.key localhost.localdomain.crt > localhost.localdomain.pem
     291rm localhost.localdomain.key localhost.localdomain.crt localhost.localdomain.csr
     292}}}
     293
     294== Commands run on each server ==
     295
     296{{{
     297server=<ipaddr>
     298cd ~/gigaweb/docroot
     299python ../httpsd.py $server 4107
     300}}}
     301
     302== Commands run on each client ==
     303
     304{{{
     305server=<ipaddr>
     306cd
     307rm -rf ~/gigaweb
     308mkdir ~/gigaweb
     309cd ~/gigaweb
     310while true ; do wget --no-check-certificate https://$server:4107/substrate.doc -O substrate.doc ; echo -n "md5sum: " ; md5sum substrate.doc ; rm substrate.doc ; done
     311}}}
     312
     313== Results ==
     314
     315Since we transfered the file to each client hundreds (if not thousands) of times, we didn't save all the copies, but we did generate an MD5 checksum after each download, and log that, so we ran some grep commands on the logs to count the number of total checksums printed in each log, and the number where the checksum had the expected value.
     316
     317Generated with
     318
     319{{{
     320subnet=107
     321for host in $(awk 'NR%2==1' ~/plastic-slices/logins/logins-plastic-$subnet.txt | sed -r -e 's/.+@//') ; do echo -e -n "$host:\n\n{{{\ntotal md5sum lines: " ; grep "md5sum:" pgenigpolabbbncom_plastic$subnet\@$host.log | wc -l ; echo -e -n "matching md5sum lines: " ; grep "md5sum: d4fcf71833327fbfef98be09deef8bfb" pgenigpolabbbncom_plastic$subnet\@$host.log | wc -l ; echo -e "}}}\n" ; done
     322}}}
     323
     324== Analysis ==
     325
     326''(forthcoming)''
     327
     328= plastic-108 =
     329
     330[ggw:PlasticSlices/Experiments#SteadyWeb SteadyWeb], using port=4108, file=substrate.doc, md5sum=d4fcf71833327fbfef98be09deef8bfb, and this table of client/server pairs:
     331
     332|| '''client'''                   || '''server'''                   || '''server address''' ||
     333|| wings-openflow-3.wail.wisc.edu || of-planet2.stanford.edu        || server=10.42.108.91  ||
     334|| of-planet1.stanford.edu        || orbitplc1.orbit-lab.org        || server=10.42.108.111 ||
     335|| orbitplc2.orbit-lab.org        || pl5.myplc.grnoc.iu.edu         || server=10.42.108.73  ||
     336|| pl4.myplc.grnoc.iu.edu         || wings-openflow-2.wail.wisc.edu || server=10.42.108.95  ||
     337
     338== One-time prep commands run on each server ==
     339
     340{{{
     341sudo yum -y install pyOpenSSL patch
     342cd
     343rm -rf ~/gigaweb
     344mkdir -p ~/gigaweb/docroot
     345
     346cd ~/gigaweb
     347wget http://code.activestate.com/recipes/442473-simple-http-server-supporting-ssl-secure-communica/download/1/ -O httpsd.py
     348wget http://groups.geni.net/geni/attachment/wiki/PlasticSlices/Experiments/httpsd.py.patch?format=raw -O httpsd.py.patch
     349patch httpsd.py httpsd.py.patch
     350rm httpsd.py.patch
     351
     352cd ~/gigaweb/docroot
     353wget http://groups.geni.net/geni/attachment/wiki/DeliverablePage/Spiral1%20substrate%20catalog.doc?format=raw -O substrate.doc
     354
     355cd ~/gigaweb
     356openssl genrsa -passout pass:localhost -des3 -rand /dev/urandom -out localhost.localdomain.key 1024
     357openssl req -subj /CN=localhost.localdomain -passin pass:localhost -new -key localhost.localdomain.key -out localhost.localdomain.csr
     358openssl x509 -passin pass:localhost -req -days 3650 -in localhost.localdomain.csr -signkey localhost.localdomain.key -out localhost.localdomain.crt
     359openssl rsa -passin pass:localhost -in localhost.localdomain.key -out decrypted.localhost.localdomain.key
     360mv -f decrypted.localhost.localdomain.key localhost.localdomain.key
     361cat localhost.localdomain.key localhost.localdomain.crt > localhost.localdomain.pem
     362rm localhost.localdomain.key localhost.localdomain.crt localhost.localdomain.csr
     363}}}
     364
     365== Commands run on each server ==
     366
     367{{{
     368server=<ipaddr>
     369cd ~/gigaweb/docroot
     370python ../httpsd.py $server 4108
     371}}}
     372
     373== Commands run on each client ==
     374
     375{{{
     376server=<ipaddr>
     377cd
     378rm -rf ~/gigaweb
     379mkdir ~/gigaweb
     380cd ~/gigaweb
     381while true ; do wget --no-check-certificate https://$server:4108/substrate.doc -O substrate.doc ; echo -n "md5sum: " ; md5sum substrate.doc ; rm substrate.doc ; done
     382}}}
     383
     384== Results ==
     385
     386Since we transfered the file to each client hundreds (if not thousands) of times, we didn't save all the copies, but we did generate an MD5 checksum after each download, and log that, so we ran some grep commands on the logs to count the number of total checksums printed in each log, and the number where the checksum had the expected value.
     387
     388Generated with
     389
     390{{{
     391subnet=108
     392for host in $(awk 'NR%2==1' ~/plastic-slices/logins/logins-plastic-$subnet.txt | sed -r -e 's/.+@//') ; do echo -e -n "$host:\n\n{{{\ntotal md5sum lines: " ; grep "md5sum:" pgenigpolabbbncom_plastic$subnet\@$host.log | wc -l ; echo -e -n "matching md5sum lines: " ; grep "md5sum: d4fcf71833327fbfef98be09deef8bfb" pgenigpolabbbncom_plastic$subnet\@$host.log | wc -l ; echo -e "}}}\n" ; done
     393}}}
     394
     395== Analysis ==
     396
     397''(forthcoming)''
     398
     399= plastic-109 =
     400
     401[ggw:PlasticSlices/Experiments#SteadyNetcat SteadyNetcat], using port=6109, file=substrate.doc, md5sum=d4fcf71833327fbfef98be09deef8bfb, and this table of client/server pairs:
     402
     403|| '''client'''                   || '''server'''                   || '''server address''' ||
     404|| gardil.gpolab.bbn.com          || pl5.myplc.grnoc.iu.edu         || server=10.42.109.73  ||
     405|| pl4.myplc.grnoc.iu.edu         || pl02.cs.washington.edu         || server=10.42.109.81  ||
     406|| pl01.cs.washington.edu         || planetlab5.clemson.edu         || server=10.42.109.105 ||
     407|| planetlab4.clemson.edu         || of-planet1.stanford.edu        || server=10.42.109.90  ||
     408|| of-planet2.stanford.edu        || wings-openflow-3.wail.wisc.edu || server=10.42.109.96  ||
     409|| wings-openflow-2.wail.wisc.edu || ganel.gpolab.bbn.com           || server=10.42.109.51  ||
     410
     411== One-time prep commands run on each server ==
     412
     413{{{
     414sudo yum -y install nc
     415mkdir -p ~/giganetcat
     416cd ~/giganetcat
     417wget http://groups.geni.net/geni/attachment/wiki/DeliverablePage/Spiral1%20substrate%20catalog.doc?format=raw -O substrate.doc
     418}}}
     419
     420== One-time prep commands run on each client ==
     421
     422{{{
     423sudo yum -y install nc
     424}}}
     425
     426== Commands run on each server ==
     427
     428{{{
     429server=<ipaddr>
     430cd ~/giganetcat
     431while true ; do nc -l $server 6109 < substrate.doc ; done
     432}}}
     433
     434== Commands run on each client ==
     435
     436{{{
     437server=<ipaddr>
     438cd
     439rm -rf ~/giganetcat
     440mkdir ~/giganetcat
     441cd ~/giganetcat
     442while true ; do nc $server 6109 > substrate.doc ; echo -n "$(date "+%F %T")  " ; md5sum substrate.doc ; rm substrate.doc ; done
     443}}}
     444
     445== Results ==
     446
     447Since we transfered the file to each client hundreds (if not thousands) of times, we didn't save all the copies, but we did generate an MD5 checksum after each download, and log that, so we ran some grep commands on the logs to count the number of total checksums printed in each log, and the number where the checksum had the expected value.
     448
     449Generated with
     450
     451{{{
     452subnet=109
     453for host in $(awk 'NR%2==1' ~/plastic-slices/logins/logins-plastic-$subnet.txt | sed -r -e 's/.+@//') ; do echo -e -n "$host:\n\n{{{\ntotal md5sum lines: " ; grep "substrate.doc" pgenigpolabbbncom_plastic$subnet\@$host.log | wc -l ; echo -e -n "matching md5sum lines: " ; grep "d4fcf71833327fbfef98be09deef8bfb  substrate.doc" pgenigpolabbbncom_plastic$subnet\@$host.log | wc -l ; echo -e "}}}\n" ; done
     454}}}
     455
     456== Analysis ==
     457
     458''(forthcoming)''
     459
     460= plastic-110 =
     461
     462[ggw:PlasticSlices/Experiments#SteadyNetcat SteadyNetcat], using port=6110, file=substrate.doc, md5sum=d4fcf71833327fbfef98be09deef8bfb, and this table of client/server pairs:
     463
     464|| '''client'''                   || '''server'''                   || '''server address''' ||
     465|| bain.gpolab.bbn.com            || pl01.cs.washington.edu         || server=10.42.110.80  ||
     466|| pl02.cs.washington.edu         || of-planet1.stanford.edu        || server=10.42.110.90  ||
     467|| of-planet2.stanford.edu        || orbitplc2.orbit-lab.org        || server=10.42.110.112 ||
     468|| orbitplc1.orbit-lab.org        || pl4.myplc.grnoc.iu.edu         || server=10.42.110.72  ||
     469|| pl5.myplc.grnoc.iu.edu         || plnode1.cip.gatech.edu         || server=10.42.110.100 ||
     470|| plnode2.cip.gatech.edu         || navis.gpolab.bbn.com           || server=10.42.110.55  ||
     471
     472== One-time prep commands run on each server ==
     473
     474{{{
     475sudo yum -y install nc
     476mkdir -p ~/giganetcat
     477cd ~/giganetcat
     478wget http://groups.geni.net/geni/attachment/wiki/DeliverablePage/Spiral1%20substrate%20catalog.doc?format=raw -O substrate.doc
     479}}}
     480
     481== One-time prep commands run on each client ==
     482
     483{{{
     484sudo yum -y install nc
     485}}}
     486
     487== Commands run on each server ==
     488
     489{{{
     490server=<ipaddr>
     491cd ~/giganetcat
     492while true ; do nc -l $server 6110 < substrate.doc ; done
     493}}}
     494
     495== Commands run on each client ==
     496
     497{{{
     498server=<ipaddr>
     499cd
     500rm -rf ~/giganetcat
     501mkdir ~/giganetcat
     502cd ~/giganetcat
     503while true ; do nc $server 6110 > substrate.doc ; echo -n "$(date "+%F %T")  " ; md5sum substrate.doc ; rm substrate.doc ; done
     504}}}
     505
     506== Results ==
     507
     508Since we transfered the file to each client hundreds (if not thousands) of times, we didn't save all the copies, but we did generate an MD5 checksum after each download, and log that, so we ran some grep commands on the logs to count the number of total checksums printed in each log, and the number where the checksum had the expected value.
     509
     510Generated with
     511
     512{{{
     513subnet=110
     514for host in $(awk 'NR%2==1' ~/plastic-slices/logins/logins-plastic-$subnet.txt | sed -r -e 's/.+@//') ; do echo -e -n "$host:\n\n{{{\ntotal md5sum lines: " ; grep "substrate.doc" pgenigpolabbbncom_plastic$subnet\@$host.log | wc -l ; echo -e -n "matching md5sum lines: " ; grep "d4fcf71833327fbfef98be09deef8bfb  substrate.doc" pgenigpolabbbncom_plastic$subnet\@$host.log | wc -l ; echo -e "}}}\n" ; done
     515}}}
     516
     517== Analysis ==
     518
     519''(forthcoming)''