09:49 |
phf |
it's still code some corner issues and the code needs to be cleaned up, but pest.lisp now incrementally places messages based on their netchain/selfchain and timestamps |
09:50 |
phf |
*still got some |
| |
~ 30 minutes ~ |
10:21 |
asciilifeform |
phf: neato |
10:27 |
phf |
test |
10:34 |
phf |
i'm by the way getting a constant stream of addresscasts http://paste.deedbot.org/?id=fEJ2 |
10:47 |
asciilifeform |
phf: per spec, these only get sent to 'cold' peers; likely bug sumwhere |
10:47 |
asciilifeform |
( unless these are actually 'cold' vs. phf, impossible to tell from here ) |
10:48 |
asciilifeform |
phf: does your prototype eat these (and unable to 'warm' $peer on acct of need for nat hammer..?) or notyet ? |
10:49 |
phf |
well, my counterparties have a bunch of cold peers, so they are just spamming everyone with addresscast requests |
10:49 |
asciilifeform |
a! that'd make sense |
10:50 |
phf |
i'm sure if you were to turn on or hack in packet logging in blatta you're going to get the same dilluge of addresscast requests |
10:50 |
asciilifeform |
probably |
10:51 |
phf |
i suspect pest traffic is addresscasts by weight at present |
10:51 |
phf |
*bulk of |
10:52 |
* |
asciilifeform not devised any way to avoid this, given a seekritkey-based pest, that'd be compatible with 'only peers have any biz knowing yer addr' dictum |
10:52 |
asciilifeform |
phf: nearly certainly tru |
10:54 |
phf |
well, i've proposed that "who you're looking for" should be part of the message, so at the very least peers can coordinate broadcast |
10:55 |
* |
asciilifeform recalls thrd. key problem there is that it leaks info publicly that perhaps the sender would not want (identities of 'cold' peers) leaked |
10:56 |
* |
asciilifeform also not convinced that it'd cut down the bw guzzle substantially -- you still gotta fwd the broadcast even if marked peer aint in your l1, he could be elsewhere in l3+ |
10:57 |
asciilifeform |
notion behind addrcast was that the peer oughta receive it if he's anywhere (within max bounce) on the net. |
10:59 |
phf |
sure, but without very explicit algorithm, that's not at present in the spec, you're going to get blatta implementations, where peers spam network with constant addresscast requests |
10:59 |
phf |
well my experiment showed 2/3 reduction |
11:00 |
phf |
i mean "did peer X appear on the network within the last few seconds?" asked every few seconds is definitely not the way to go about it |
11:02 |
phf |
and the "cold" peers leak can be delt with in other ways, for example you have to scrub the name if you're rebroadcasting. this at least allows storngly connected peers to "coordinate" addresscasts |
11:03 |
phf |
at present you have, and i'm directly peered to dulapbot, deedbot and awt, a handful of stations yelling at each other about a small number of peers that have probably been down since forever, and will probably not come back anytime soon |
11:05 |
phf |
of course the main problem though is that blatta is a on backburner, so an iteration cycle on issues like that, that need to be explored and tuned, counts in weeks if not months. |
| |
↖ ↖ |
| |
~ 37 minutes ~ |
11:43 |
asciilifeform |
phf: i recall sumbody (possibly phf) suggested 'only send addrcast if saw the peer alive via hearsay'. may be worth considering |
11:44 |
asciilifeform |
(the tradeoffs, imho, obv.) |
11:44 |
asciilifeform |
would cut down on the 'shouting to people who aint coming any time soon' thing. |
11:45 |
asciilifeform |
possibly would not work well for bots, however, which rarely speak |
11:58 |
* |
asciilifeform still not satisfied that anyffin other than the current bw-guzzling algo would work reliably in a setting where folx connect through short-lived/unreliable pipes ('wardriving' etc) |
11:58 |
asciilifeform |
then again, it remains to be seen what, if anyffin, worx there. |
11:59 |
asciilifeform |
ideal is that links to peers oughta heal, after ip change, asap. |
12:00 |
asciilifeform |
( and whether or not you / the peer are particularly 'talkative' ) |
| |
~ 19 minutes ~ |
12:19 |
phf |
i don't think current algorithm is related to wardriving, though |
12:20 |
phf |
you have to types of connection nated and direct, when a wardriver goes online he attempts to establish direct connections, and he always have to have at least one |
12:20 |
phf |
*two types |
12:20 |
phf |
having established that direct connection, he can send addresscast to all peers, ~and at that point he's done~ |
12:21 |
phf |
because whoever's online and nated, will respond to addresscast and go into nat handshake |
| |
↖ |
12:22 |
phf |
but anybody who's offline, will do similar algorithm once he's online |
12:22 |
phf |
so purely to reestablish connectivity to all available peers, there's no need to spam network |
12:24 |
phf |
current algorithm prods for peers that are explicitly offline, with the goal of catching them as soon as they appear online |
12:27 |
phf |
but if you're peered with someone, they have as much an incentive in finding you, as you're in finding them, so more likely than not, when they are ready to talk, they'll either connect to you directly, or send an addresscast |
12:28 |
phf |
so if the question is ~just~ network self-healing, then you can addresscast at specific events, and then very rarely, and achieve desired result |
12:29 |
phf |
e.g. addresscast when you hear from peer on hearsay, when peer's "last packet" timeout goes beyond some threshold, when you come online yourself and can't direct connect to peer. there might be one or two more events like that, but that'll give you effective coverage |
12:33 |
phf |
also when wardriving, i'd probably have some kind of "hush" mode enabled. i wouldn't want entire pest network bombarding some potentially sensitive router with port discovery packets, that'll light up like christmas tree on any ids. i'll just connect to direct ips, and then not par |
| |
↖ ↖ |
12:33 |
phf |
ticularly care that some of my l1 are getting hearsay |
12:40 |
phf |
(to that last point, there's a fairly obvious algorithm for message "validation". whenever you establish a direct connection with l1, you can also walk over your log and for any packet that's hearsay from that peer, do a getdata directly to peer) |
| |
↖ |
12:47 |
phf |
http://logs.bitdash.io/pest/2023-02-09#1022809 << *whoever's online, nated, or had his ip change since wardrive went offline |
12:47 |
bitbot |
Logged on 2023-02-09 12:21:36 phf[awt|deedbot]: because whoever's online and nated, will respond to addresscast and go into nat handshake |
| |
~ 30 minutes ~ |
13:18 |
asciilifeform |
phf: worth moar thought. esp. the very good point that station itself knows (for so long as can reach net at all, and receives prods) that its external ip changed |
| |
↖ |
13:19 |
asciilifeform |
http://logs.bitdash.io/pest/2023-02-09#1022816 << important to recall, tho, that you can't directmsg (or, when we've the luby thing -- warez) to anyone with whom direct peering is broken |
| |
↖ ↖ |
13:19 |
bitbot |
Logged on 2023-02-09 12:33:08 phf[awt|deedbot]: also when wardriving, i'd probably have some kind of "hush" mode enabled. i wouldn't want entire pest network bombarding some potentially sensitive router with port discovery packets, that'll light up like christmas tree on any ids. i'll just connect to direct ips, and then not par |
13:23 |
asciilifeform |
current algo is indeed braindamaged in that it makes no attempt to determine whether 'i can't see $peer' is because ~own~ ip changed, or the latter wandered away. |
13:23 |
asciilifeform |
indeed in the former case oughta refrain from spamming addrcast. |
13:24 |
* |
asciilifeform will amend draft spec re subj |
13:25 |
asciilifeform |
( concretely: if you know that $peer was able to reach you at $addr, and prods indicate that $addr not changed since -- no reason to spam ) |
13:25 |
asciilifeform |
kudos to phf for pointing this out . |
13:26 |
asciilifeform |
the 1 possible case not handled is if $peer somehow lost his AT cache. but not sure why he would w/out also losing keys |
| |
~ 27 minutes ~ |
13:53 |
asciilifeform |
http://logs.bitdash.io/pest/2023-02-09#1022818 << this also imho good idea (tho would need to think about when precisely oughta do it) |
13:53 |
bitbot |
Logged on 2023-02-09 12:40:22 phf[awt|deedbot]: (to that last point, there's a fairly obvious algorithm for message "validation". whenever you establish a direct connection with l1, you can also walk over your log and for any packet that's hearsay from that peer, do a getdata directly to peer) |
13:55 |
asciilifeform |
( and, in particular, wat-do if $peer does ~not~ return a 0bounce copy. mark it in red in log ? ) |
| |
↖ |
13:57 |
asciilifeform |
... and does blatta even currently store 'yes, i sent this' mark ? ( cuz if not, buncha stuff will get marked bogus. maybe this behaviour will need to be version-gated, then ) |
14:00 |
asciilifeform |
http://logs.bitdash.io/pest/2023-02-09#1022816 << hammer prolly oughta default to off, aha |
14:00 |
bitbot |
Logged on 2023-02-09 12:33:08 phf[awt|deedbot]: also when wardriving, i'd probably have some kind of "hush" mode enabled. i wouldn't want entire pest network bombarding some potentially sensitive router with port discovery packets, that'll light up like christmas tree on any ids. i'll just connect to direct ips, and then not par |
| |
~ 5 hours 30 minutes ~ |
19:30 |
phf |
http://logs.bitdash.io/pest/2023-02-09#1022821 << yeah my pest instance is "mobile", so there's a clear point when need to do bookkeeping after suspend or network rotation, since there's a brief period when socket starts throwing system level exceptions |
19:30 |
bitbot |
Logged on 2023-02-09 13:18:30 asciilifeform[4]: phf: worth moar thought. esp. the very good point that station itself knows (for so long as can reach net at all, and receives prods) that its external ip changed |
| |
↖ ↖ |
19:32 |
phf |
but you're right can have similarlogic in prod receipt |
19:35 |
phf |
http://logs.bitdash.io/pest/2023-02-09#1022822 << that might be a reasonable trade off, when you have some kind of interface feedback. peers are green or red, if you pop up on the network to say "hello" OR if you need to dc someone specific, click to take him from red to green, whi |
| |
↖ |
19:35 |
bitbot |
Logged on 2023-02-09 13:19:54 asciilifeform[4]: http://logs.bitdash.io/pest/2023-02-09#1022816 << important to recall, tho, that you can't directmsg (or, when we've the luby thing -- warez) to anyone with whom direct peering is broken |
19:35 |
phf |
ch will initiate some elaborate discovery mechanism |
19:37 |
phf |
http://logs.bitdash.io/pest/2023-02-09#1022822 << well, more general question is under what circumstances and why would your peer "go silent" |
| |
↖ |
19:37 |
bitbot |
Logged on 2023-02-09 13:19:54 asciilifeform[4]: http://logs.bitdash.io/pest/2023-02-09#1022816 << important to recall, tho, that you can't directmsg (or, when we've the luby thing -- warez) to anyone with whom direct peering is broken |
19:37 |
phf |
because if you don't see them, they most likely don't see you either, which will initiate discovery on their end also |
19:38 |
phf |
so if a peer "went silent" is aggressive discovery ever necessary? |
19:42 |
phf |
that was re http://logs.bitdash.io/pest/2023-02-09#1022832 |
19:42 |
bitbot |
Logged on 2023-02-09 13:55:19 asciilifeform[awt|jonsykkel|deedbot]: ( and, in particular, wat-do if $peer does ~not~ return a 0bounce copy. mark it in red in log ? ) |
19:48 |
phf |
asciilifeform, signpost, crtdaydreams, in related is any of you running a station that's doing addresscasts? because all the addresscast packets that i'm getting have ("awt" "unpx" "jonsykkel") as speakers |
19:49 |
phf |
theoretically i should be peered with all three of you, but i don't have dc established |
19:55 |
phf |
actually running a historgram for a few minutes, gives me (("jonsykkel" 56) ("awt" 179) ("unpx" 24)) |
19:57 |
phf |
(("jonsykkel" 98) ("awt" 265) ("unpx" 42)) |
20:00 |
phf |
(("jonsykkel" 126) ("awt" 326) ("unpx" 54)) |
20:03 |
phf |
(("jonsykkel" 168) ("awt" 446) ("unpx" 72)) |
20:05 |
phf |
(("jonsykkel" 210) ("awt" 584) ("unpx" 90)) |
| |
~ 21 minutes ~ |
20:27 |
phf |
(("signpost" 79) ("jonsykkel" 504) ("awt" 1066) ("unpx" 215)) |
| |
~ 1 hours 1 minutes ~ |
21:28 |
asciilifeform |
phf: can't speak for the rest, but currently still on blatta 9973 (where, iirc, not yet addrcast) |
21:34 |
asciilifeform |
http://logs.bitdash.io/pest/2023-02-09#1022842 << ( excluding the obv 'switched off box' ) afaik would just about always be one of a) at least one of you got new dynamic ip, or b) at least one of you is under nat and lost ephemeral port state |
21:34 |
bitbot |
Logged on 2023-02-09 19:37:11 phf[awt|deedbot]: http://logs.bitdash.io/pest/2023-02-09#1022822 << well, more general question is under what circumstances and why would your peer "go silent" |
21:35 |
asciilifeform |
( if anyone can think of an unrelated 'c', plox to write in ) |
21:36 |
asciilifeform |
( i suppose 'one or both of you moved box to new static ip' could count as 'c', but let's count it as 'a', lol ) |
21:37 |
asciilifeform |
and imho it would make sense not to spam addrcast if 'you know it wasn't you' and $peer ought still have valid addr for you |
21:39 |
asciilifeform |
the remaining open q afaik is wat-do if you know it was you, but sending 1 addrcast not results in peer returning ( because, say, his station down just then ). how often to spam. |
21:43 |
phf |
in that last case why not wait till peer comes online and starts sending his own addresscast to find you? |
21:44 |
asciilifeform |
http://logs.bitdash.io/pest/2023-02-09#1022839 << imho requiring manual intervention for addrcast is an ugh -- some stations are automated/headless, e.g. dulapbot & similar |
21:44 |
bitbot |
Logged on 2023-02-09 19:35:34 phf[awt|deedbot]: http://logs.bitdash.io/pest/2023-02-09#1022822 << that might be a reasonable trade off, when you have some kind of interface feedback. peers are green or red, if you pop up on the network to say "hello" OR if you need to dc someone specific, click to take him from red to green, whi |
21:44 |
asciilifeform |
phf: maybe asciilifeform misunderstands, but sounds uncomfortably like 'if two trains meet on the tracks, neither shall move until the other has started'(tm) |
21:45 |
phf |
yah i can see that |
21:47 |
phf |
in the ideal scenario, you have two stations A and B, A changed ip address and B went offline. A sends out addresscast on account of changing ip, but B is offline. eventually B comes online, sends addresscast on account of coming, and not being able to connect to A. |
21:47 |
phf |
but |
21:48 |
phf |
if B is "offline" due to network issues in A->B direction, then B would never know anything was amis |
21:48 |
phf |
actually no, B will know that A's offline, because A eventually will stop sending garbage, etc. |
21:48 |
asciilifeform |
aha! B may be 'offline' only with respect to A. |
21:49 |
asciilifeform |
correct, but neither will be in 'i just booted, so let's send addrcast' state |
21:49 |
phf |
right |
21:50 |
phf |
this needs more thought, but at least "my ip is still the same, i'm not going to spam" is a solid change |
| |
↖ |
21:50 |
asciilifeform |
( 1 common, asciilifeform suspects, cause -- ephemeral nat state lost for 1 particular peer ) |
21:50 |
* |
asciilifeform nods |
21:50 |
asciilifeform |
defo belongs in spec. |
21:51 |
phf |
(("signpost" 161) ("jonsykkel" 1401) ("awt" 2659) ("unpx" 599)) |
21:52 |
asciilifeform |
( for thread-completeness -- the ~other~ purpose of addrcast is to make it so that a new peering where both sides are present on same pestnet not requires exchanging AT entries at all. so same q, how much to spam ) |
21:53 |
phf |
the idea is that if i connected through signpost only, but i have peering with awt and unpx, i should be able to get later's ATs without explicit negotiation? |
21:54 |
asciilifeform |
supposing 1 and/or the other peers with signpost -- correct |
21:54 |
phf |
by explicit negotiaton i mean operator asking on channel, etc. |
21:54 |
phf |
right |
21:54 |
asciilifeform |
aha |
21:56 |
asciilifeform |
is mechanical (and confidential) substitute for 'ask him on pestnet what is his ip' |
22:00 |
phf |
just use fibonacci :D |
22:02 |
* |
asciilifeform in similar vein once suggested 'just send an 'ignore' to whole ipv4 space' lel |
22:02 |
asciilifeform |
on decent pipe, not even takes so long |
22:02 |
asciilifeform |
won't cure nat tho (quite the opposite..) |
22:03 |
asciilifeform |
iirc 'spam all of ipv4' takes ~40min on a gb/s pipe (if you have a decent map of the lacunae in the space, that is) |
22:05 |
phf |
also calling the person over phone and asking him for his new ip |
22:06 |
asciilifeform |
fwiw initial pest bringup already requires an out-of-band talk, so yes |
22:07 |
asciilifeform |
getting an addr, tho, unlike key exchange, oughn't require talking to $peer directly, is the point tho. |
22:07 |
asciilifeform |
merely talking to someone he's already able to talk to. |
22:12 |
asciilifeform |
( apropos, in the 'spam ipv4 thread', iirc noted that if it suffices to find ~one~ of your peers, then if you have n of'em, bringup of AT-less but properly keyed station is suddenly practical. only need to hit 1. ) |
22:15 |
asciilifeform |
may seem idiotic, but can think of at least 1 scenario where it'd win -- e.g. sumbody who switches on station very infrequently |
22:16 |
asciilifeform |
'i was at sea for a year and where did erryone go' |
22:17 |
asciilifeform |
in principle, pest oughta take ~erry~ possible advantage of the fact that you only need to get 1 packet through to establish a link w/ peer. |
22:18 |
phf |
i like the idea of leaving pest bots in various corners of the internet |
22:19 |
asciilifeform |
phf: a la deedbot on dulapnet ? wainot |
22:20 |
* |
asciilifeform recalls thrd re www doors etc |
22:20 |
asciilifeform |
intended use there, tho, is drawing in n00bs |
22:21 |
phf |
right, you still need an addresscast. you can e.g. get a temp peer with deedbot, and then broadcast through it |
22:22 |
asciilifeform |
correct. simply pointing out that in principle not necessary for existing (i.e. keyed) peer to find such a corner, even in worst case where both sides ip-drifted in such a way that can reach no one |
22:23 |
asciilifeform |
~40min of spam cannon and yer back in biz |
22:23 |
asciilifeform |
(on acct of 'bday paradox', likely much less ) |
22:25 |
asciilifeform |
i.e. hypothetically, pest letsya treat the net as a (sloow) broadcast medium, if necessary. |
| |
↖ |
22:26 |
asciilifeform |
possibly could even have client where omit manual AT entry entirely... |
22:28 |
asciilifeform |
sounds like a lul, but think, yer on 'mobile' station, ip changes maybe multiple times each day, and you meet somebody and want to exchange keys. not even makes sense to give him an at entry. |
22:29 |
asciilifeform |
a fully grown pest client oughta include the cannon, and then can peer even if yer both 'vagrants' with 'no fixed place of residence'(tm) |
22:30 |
asciilifeform |
( tho at least 1 side oughta be un-nat'd, obv ) |
22:33 |
phf |
yeah, that nat problem makes it not as elegant as it could be |
22:34 |
asciilifeform |
for so long as pestnet not consists entirely of hobos , still worx |
22:36 |
phf |
in reality will probably really on a handful of heavily connected nodes, like deedbot and dulapbot |
22:37 |
phf |
like once i work out the kinks(tm), will stand up a logging station like btcbase, which will probably end up being one of just a handful of peers for the roaming station |
22:39 |
* |
asciilifeform considered a 'slave mode' which merely fwds packets, but this is tricky for the obv. reasons |
22:40 |
asciilifeform |
in 0xfb, instead proposed 'slave mode' where msgs coming through $peer (who you know to be one of your personal bots) are treated as 0bounce. but this afaik not implemented anywhere atm. |
22:40 |
asciilifeform |
(and not handles direct msgs in any way) |
22:41 |
phf |
it's fairly trivial to cook up a relay bot out of the bits in pest.lisp |
22:42 |
asciilifeform |
( from e.g. asciilifeform's pov, a bounce-1 via dulapbot is precisely as authentic as a bounce-0 ) |
22:42 |
phf |
right |
22:43 |
asciilifeform |
the elegant pill is to make it simply a one turn of knob setting, with stock clients, rather than requiring a dedicated bot proggy |
22:43 |
asciilifeform |
then -- set up bot in proper dc, and is as good as sitting there yerself |
22:44 |
asciilifeform |
( the obv. downside is that if said box is stolen, you gotta issue new keys out of band. ) |
| |
~ 23 minutes ~ |
23:07 |
phf |
i remember mp at some point objected to everyone idling on bouncers, after having voiced themselves, on account of opsec. he wasn't too insistent on it, so it didn't go anywhere, but the problem remains. |