i'm a little confused by the discussion of il + tcp on authdial causing the delay. if ndb/cs returns multiple dial strings, dialmulti function (/sys/src/libc/9sys/dial.c) dials them all in parallel (rfork) and the first one that returns, wins.
btw, i found a bug in dial.c (i'll send it in another message); fixing it didn't seem to have any effect but i believe it's a bug anyway. i instrumented the near side of cpu; the setup (including setting up notes forwarding) looks to be less than 2 seconds. the rest can only be attributed to local exportfs startup and remote rc startup. here are three runs: supermic% time ./cpu -h grid.nyx.link -k 'dom=outside.plan9.bell-labs.com' -c pwd dial took: 165268068 ns negotiate auth took: 159047373 ns factotum autenticate took: 699255914 ns lclnoteproc time: 702945750 ns far end setup time: 157257845 ns /usr/fst 0.00u 0.00s 7.58r ./cpu -h grid.nyx.link -k dom=outside.plan9.bell-labs.com ... supermic% time ./cpu -h grid.nyx.link -k 'dom=outside.plan9.bell-labs.com' -c pwd dial took: 158312233 ns negotiate auth took: 155598573 ns factotum autenticate took: 681558002 ns lclnoteproc time: 684863443 ns far end setup time: 151972579 ns /usr/fst 0.00u 0.01s 7.22r ./cpu -h grid.nyx.link -k dom=outside.plan9.bell-labs.com ... supermic% time ./cpu -h grid.nyx.link -k 'dom=outside.plan9.bell-labs.com' -c pwd dial took: 176752321 ns negotiate auth took: 175402567 ns factotum autenticate took: 746787405 ns lclnoteproc time: 749881615 ns far end setup time: 172600395 ns /usr/fst 0.00u 0.03s 8.17r ./cpu -h grid.nyx.link -k dom=outside.plan9.bell-labs.com ... supermic%