123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294 |
- ## Walking all peers manually on a node using the common 3x5x8 switch scheme.
- ## We're exclusively using the 8 form because it's easier to stick to one form
- ## The node is 0015 to us, therefor all paths end in 5.
- ## The first entry in the 8 form is 0400
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/splice.js 0000.0000.0000.0400 0000.0000.0000.0015
- 0000.0000.0000.4005
- ## After splicing that with the path to our peer, we clearly see that everything
- ## will have a 5 added to the end.
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/cexec.js 'SwitchPinger_ping("0000.0000.0000.4005", 3000, 1)'
- {
- "data": "",
- "key": "xp2f7m98uw24664ngwl47k8uyx59sblgp8qsbpk24sh10ppu9fz0.k",
- "ms": "382",
- "path": "0000.0000.0000.4005",
- "result": "pong",
- "txid": "824920922",
- "version": "8"
- }
- ## 0400 is analogus to 0013 (the first peer)
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/cexec.js 'SwitchPinger_ping("0000.0000.0000.0135", 3000, 1)'
- {
- "data": "",
- "key": "xp2f7m98uw24664ngwl47k8uyx59sblgp8qsbpk24sh10ppu9fz0.k",
- "ms": "407",
- "path": "0000.0000.0000.0135",
- "result": "pong",
- "txid": "1322201729",
- "version": "8"
- }
- ## Since the lowest 2 bits are reserved for specifying the encoding form (they're both 0)
- ## numbers count 400, 404, 408, 40c, 410, 414, 418, 41c, 420 ...
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/cexec.js 'SwitchPinger_ping("0000.0000.0000.4045", 3000, 1)'
- {
- "data": "",
- "key": "2v6dt6f841hzhq2wsqwt263w2dswkt6fz82vcyxqptk88mtp8y50.k",
- "ms": "897",
- "path": "0000.0000.0000.4045",
- "result": "pong",
- "txid": "3621711461",
- "version": "8"
- }
- ## This is us, wow, we have slot 3, what luck!
- ## the shortest version of this route is 0017
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/cexec.js 'SwitchPinger_ping("0000.0000.0000.4085", 3000, 1)'
- {
- "data": "",
- "key": "b8xn6kv9279k7mjdmg08ut6yc4n3d2lp3s3juq39qz83z9bzxgz0.k",
- "ms": "638",
- "path": "0000.0000.0000.4085",
- "result": "pong",
- "txid": "1345867629",
- "version": "8"
- }
- ## Oops! If you use a number which is not in the sequence you get a
- ## switch error (or perhaps it will be interpreted and end up at another node)
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/cexec.js 'SwitchPinger_ping("0000.0000.0000.40d5", 3000, 1)'
- {
- "data": "",
- "ms": "539",
- "path": "0000.0000.0000.40d5",
- "result": "err_switch",
- "txid": "3599763113",
- "version": "0"
- }
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/cexec.js 'SwitchPinger_ping("0000.0000.0000.40c5", 3000, 1)'
- {
- "data": "",
- "key": "lpcvt3u85q837u402dlu3rfg107x92j5xlzd77tftsjy88zx0yf0.k",
- "ms": "408",
- "path": "0000.0000.0000.40c5",
- "result": "pong",
- "txid": "259944377",
- "version": "7"
- }
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/cexec.js 'SwitchPinger_ping("0000.0000.0000.4105", 3000, 1)'
- {
- "data": "",
- "key": "wb0hdx8vu6khpfj32qzhvykjk7gq8bc691czhx3yp7zn04bh5gy0.k",
- "ms": "363",
- "path": "0000.0000.0000.4105",
- "result": "pong",
- "txid": "1099356221",
- "version": "8"
- }
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/cexec.js 'SwitchPinger_ping("0000.0000.0000.4145", 3000, 1)'
- {
- "data": "",
- "key": "6q09l149vz0bqtx51jy557juj39wxmupmfd52h9w5xsdnsns1qj0.k",
- "ms": "223",
- "path": "0000.0000.0000.4145",
- "result": "pong",
- "txid": "542004376",
- "version": "7"
- }
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/cexec.js 'SwitchPinger_ping("0000.0000.0000.4185", 3000, 1)'
- {
- "data": "",
- "key": "1cgrz7hmc4wzg7pu284u5b77y2mdzt261tr0rj0qf7j2vsqf5150.k",
- "ms": "312",
- "path": "0000.0000.0000.4185",
- "result": "pong",
- "txid": "87763052",
- "version": "7"
- }
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/cexec.js 'SwitchPinger_ping("0000.0000.0000.41c5", 3000, 1)'
- {
- "data": "",
- "key": "w7xvbpmgwuwkv8x9wrpfmydtfxv6ydfmpktgc6tt8v8d3c9bn580.k",
- "ms": "394",
- "path": "0000.0000.0000.41c5",
- "result": "pong",
- "txid": "1682459805",
- "version": "8"
- }
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/cexec.js 'SwitchPinger_ping("0000.0000.0000.4205", 3000, 1)'
- {
- "data": "",
- "key": "11sfkq2clbv4dgzgx8hm47p4ld9pwy82y7jluvjh91cyl1n7bwf0.k",
- "ms": "329",
- "path": "0000.0000.0000.4205",
- "result": "pong",
- "txid": "3712296271",
- "version": "7"
- }
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/cexec.js 'SwitchPinger_ping("0000.0000.0000.4245", 3000, 1)'
- {
- "data": "",
- "key": "c94sls20x5shql6r4z4nvqlrs9pcppgj2h41m1bntzk60j5wrs40.k",
- "ms": "362",
- "path": "0000.0000.0000.4245",
- "result": "pong",
- "txid": "1883792007",
- "version": "7"
- }
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/cexec.js 'SwitchPinger_ping("0000.0000.0000.4285", 3000, 1)'
- {
- "data": "",
- "key": "08pdl5mbcpx2b0uh6wj6wktq5v47kv9gpy40rnqr52t1ugctr430.k",
- "ms": "252",
- "path": "0000.0000.0000.4285",
- "result": "pong",
- "txid": "711411764",
- "version": "7"
- }
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/cexec.js 'SwitchPinger_ping("0000.0000.0000.42c5", 3000, 1)'
- {
- "data": "",
- "key": "r5tmqf72mjzht1grqm34l1ldrx9tdubyzw33ucng6bfqp1y0mux0.k",
- "ms": "452",
- "path": "0000.0000.0000.42c5",
- "result": "pong",
- "txid": "2970256056",
- "version": "7"
- }
- ## This seems to be a node which is supposed to be connected but is not responding.
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/cexec.js 'SwitchPinger_ping("0000.0000.0000.4305", 3000, 1)'
- {
- "ms": "3003",
- "path": "0000.0000.0000.4305",
- "result": "timeout",
- "txid": "1014318430",
- "version": "7"
- }
- ## Try again for good measure
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/cexec.js 'SwitchPinger_ping("0000.0000.0000.4305", 3000, 1)'
- {
- "ms": "3002",
- "path": "0000.0000.0000.4305",
- "result": "timeout",
- "txid": "2282909610",
- "version": "7"
- }
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/cexec.js 'SwitchPinger_ping("0000.0000.0000.42c5", 3000, 1)'
- {
- "data": "",
- "key": "r5tmqf72mjzht1grqm34l1ldrx9tdubyzw33ucng6bfqp1y0mux0.k",
- "ms": "181",
- "path": "0000.0000.0000.42c5",
- "result": "pong",
- "txid": "2432582962",
- "version": "7"
- }
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/cexec.js 'SwitchPinger_ping("0000.0000.0000.4345", 3000, 1)'
- {
- "data": "",
- "key": "fj9q4s6fg8mjdjfks8lc8bp7ly05qm11z54crlb7tz1pl01fg3r0.k",
- "ms": "329",
- "path": "0000.0000.0000.4345",
- "result": "pong",
- "txid": "1698617630",
- "version": "7"
- }
- ## We have either reached the top of the list or there is an empty slot left by a node which
- ## disconnected, we can't know for sure so lets ping a few more nodes in order to check.
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/cexec.js 'SwitchPinger_ping("0000.0000.0000.4385", 3000, 1)'
- {
- "data": "",
- "ms": "158",
- "path": "0000.0000.0000.4385",
- "result": "err_switch",
- "txid": "880013604",
- "version": "0"
- }
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/cexec.js 'SwitchPinger_ping("0000.0000.0000.43c5", 3000, 1)'
- {
- "data": "",
- "ms": "444",
- "path": "0000.0000.0000.43c5",
- "result": "err_switch",
- "txid": "1175469204",
- "version": "0"
- }
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/cexec.js 'SwitchPinger_ping("0000.0000.0000.4405", 3000, 1)'
- {
- "data": "",
- "ms": "347",
- "path": "0000.0000.0000.4405",
- "result": "err_switch",
- "txid": "3258844093",
- "version": "0"
- }
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/cexec.js 'SwitchPinger_ping("0000.0000.0000.4445", 3000, 1)'
- {
- "data": "",
- "ms": "321",
- "path": "0000.0000.0000.4445",
- "result": "err_switch",
- "txid": "869243597",
- "version": "0"
- }
- user@toshitba:~/wrk/cjdns$
- ## Recall from above that we're 0408 aka 0017 (because we can be represented using the small encoding)
- ## ping selves
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/cexec.js 'SwitchPinger_ping("0000.0000.0000.0175", 3000, 1)'{
- "data": "",
- "key": "b8xn6kv9279k7mjdmg08ut6yc4n3d2lp3s3juq39qz83z9bzxgz0.k",
- "ms": "619",
- "path": "0000.0000.0000.0175",
- "result": "pong",
- "txid": "1099734707",
- "version": "8"
- }
- ## just to verify that it's working, we'll create a loop packet
- ## us->them->us->them and it works.
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/cexec.js 'SwitchPinger_ping("0000.0000.0000.1575", 3000, 1)'
- {
- "data": "",
- "key": "nx6k81p1nxw1b5ry8ub5u63hu0tlskp1t2fytcbrbf1709xh11g0.k",
- "ms": "1251",
- "path": "0000.0000.0000.1575",
- "result": "pong",
- "txid": "3109463617",
- "version": "8"
- }
- ## We can make it loop more but the latency gets very big!
- user@toshitba:~/wrk/cjdns$ ./contrib/nodejs/tools/cexec.js 'SwitchPinger_ping("0000.0001.7575.7575", 3000, 1)'
- {
- "data": "",
- "key": "b8xn6kv9279k7mjdmg08ut6yc4n3d2lp3s3juq39qz83z9bzxgz0.k",
- "ms": "1900",
- "path": "0000.0001.7575.7575",
- "result": "pong",
- "txid": "2807636566",
- "version": "8"
- }
- ## This only works because we and our peer are both using 3x5x8 encoding, if they were using
- ## something different, it would still be possible but more complex to craft paths.
- ## nodes describe their encoding schemes to one another so even the most complex encoding
- ## schemes are supported by cjdns which has to craft paths through the network much like
- ## we did here.
|