On 2-jun-2005, at 16:39, marcelo bagnulo braun wrote:
However, my understanding is that a mechanism in the lines of what
Iljitsch suggests (based on the observation of the existence of a
bidirectional flow of packets) could be an interesting optimization
in the bidirectional case.
My understanding of how such mechanism would work is the following:
The shim layer observes the amount of traffic exchanged during the
last T seconds, being Tx the number of packets transmitted and Rx the
number of packets received during the last T seconds.
If Tx>0 and Rx>0, then no problem
If Tx=0, then no problem
If Tx>0 and Rx=0, then perform a reachability test to verify the
current locator pair, and eventually a path exploration exchange
Upon the reception of a path exploration by the peer, the node must
perform a reachability test to verify the current locator pair.
I think if we combine all of this, a good mechanism would be:
- if recent rx and recent tx: be happy, everything works
- if no recent rx and no recent tx: session is idle, do nothing
- if recent rx, but not recent tx: send keepalive
- if recent tx, but not recent rx: failure likely, start full
reachability testing procedure
So, imho there are at least two questions to answer in order to see
if this is interesting:
1- is this really an optimization? i.e. does it provides some form of
improvement (and is it worthy?)
2- How frequent are we expecting this case to be, so that it is
worthy to optimize it?
My opinion about these two are the following:
About 1: i guess this mechanism would improve the efficiency of the
solution because it would reduce the number of reachability test
exchanged to verify the current locator pair in the case of and UDP
bidirectional flow (or any other bidirectional flow where the ULP
does not provide positive feedback)
Indeed.
About 2: this mechanism optimizes the case of bidirectional flow that
belongs to ULPs that not provide positive feedback (e.g. UDP)
However, this mechanism only work in the case where at least one path
with bidirectional connectivity is available.
??? Isn't that true of any interactive communication?
This mechanism fails in the case where the only paths available are
two different unidirectional paths.
No, not necessarily. The question is what we test for:
locator <-> locator
ULID <-> ULID
host <-> host
I would prefer the last one, but we'll probably have to settle for the
middle one because the constraints for the last one would probably be
too severe. (I.e., if any packet from A to B means there is
reachability from A to B, ALL packets from A to B would have to use
the same locators or we could miss some failures. The constraint that
all packets from ULID Ax to ULID Bx use the same locator set is
probably more reasonable.)