On 11/19/2013 12:22 PM, Gui Iribarren wrote:
On 10/24/2013 02:24 PM, Axel Neumann wrote:
Hi Gui!
3) A gets
the ACK and creates the tunnel with "peer 2001:db8::D"
*** now both ends have a symmetric tunnel between them, with real src
and dest address ***
4) A finally sends the real payload through the symmetric tunnel, this
payload (may be bigger than 1280, say... 1450) will be encapsulated
with the real src-addr of A, so if any node in the path needs to send
back a Packet-too-big, will be able to, and PMTUD will happen
correctly.
(at the cost of a full RTT latency before the first payload packet,
but with a reasonable tunnel expire time as it has currently, that
shouldn't be terrible)
back in April, i remember we discussed the idea of symmetric tunnels,
and you brought up this "control connection" idea which i'm simply
redescribing here.
But that discussion was in another context, more like a 'feature', and
finally didn't really solve the idea we had originally,
yet, this PMTUD issue was not taken into account AFAIR, so the
"symmetric tunnel" idea now becomes more like a bugfix (i.e. don't
create PMTUD blackholes)
what do you think?
I think the reception of an ip6-encapsulated packet destinated to the
primary address of the node could be used as an implicit request to
setup the reverse tunnel (from the gw to the node). So the additional
setup delay (of one RTT) could be avoided but at the cost of not knowing
if the gateway accepted or will ever accept the implicit tunnel request.
the question here would be: which src-address to use for that first
packet?
if you use the primary address of the originating node, then AFAIU the
kernel will drop it, unless there's a point-to-point interface with
that specific address as "peer"
ack. but my initial idea was to catch it anyway via a pcap socket
(similar to how magic-icmp catches packets).
Its still an option but currently I am more in favor of whats described
below:
so my idea was to use your current "hacky" scheme of addresses
(src-addr is fake but predictable, based on dst-addr) to deliver the
first packet ("I want a reverse tunnel")
Yes, that's an option. But would remain a hacky scheme :-(
If dedicated tunnel-request signals are needed anyway, then one could
also build based on standard IP/UDP packets and using the correct node
primary addresses for src and dest of the UDP/IP request.
The setup delay would depend on the handshake procedure.
With a full two-way handshake, for sure first packets would be delayed
by one RTT.
But maybe with an opportunistic handshake (which assumes that the GW
usually accepts the tunnel requests and immediately sets up the tunnel)
the first tunnel packets can be send almost immediately after the tunnel
request packet of the handshake.
The tunnel reply packet of the handshake would then only become an
acknowledgement to inform the GW-client node that the request was approved.
/axel
but maybe it's not needed and i'm not seeing the big picture :)
something i would love to hear!
I'll try to speed up the dev of symmetric tunnels.
sounds great! in the meantime we're getting away with the mtu=1350,
but last week i bumped into some (suspected) mtu issues again, maybe
because it was a tunnel over a DSL line (thus adding 8bytes overhead),
so anyway a proper solution will be a great improvement overall,
whenever it's ready :D
cheers!
gui
/axel
Cheers!!
gui
_______________________________________________
Dev mailing list
Dev(a)lists.libre-mesh.org
https://lists.libre-mesh.org/mailman/listinfo/dev