[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Question about REAP state transition (draft-ietf-shim6-failure-detection-09)



On 12 dec 2007, at 17:15, Alberto García wrote:

First, my understanding of the specification is that Probe Exploring
messages do not carry neither "probe received information source address"
nor "probe received information destination address", etc.
In the specification it's required for probe packets to contain the  
source and destination addresses that are used to send the current  
probe as well as "probe nonce" and "probe data" fields. It is allowed,  
but not required, for a probe to also contain the source/dest/nonce/ 
data values from probes that were sent earlier. The reason to include  
this is because that way, the receiver knows which address pair  
combinations were tried by the sender in previous packets, and if the  
probes with those address pairs didn't make it to the receiver, that's  
a hint that those address pairs won't work in the opposite direction  
either.
It's also allowed but not required to copy back the source/dest/nonce/ 
data fields from one or more received probes. This tells the receiver  
which probes it sent previously were successful so it can select a  
working address pair. Without this information, it's probably hard for  
a receiver to draw definitive conclusions about which address pairs  
work.
Would you say that we should require that at least the set of source/ 
dest/nonce/data fields from the last successfully received probe is  
included in outgoing probes?
If this is true, I wonder if it is possible that the exploration process could not find two valid unidirectional paths (on each direction) even if
they exist. Suppose that a node A in Exploring state receives a Probe
Exploring, so it moves to Inbound_OK.
Ok.

For the next Probes it sends, it
includes the information about the valid locators for its incoming paths (B to A), but it is not able to find a working path from A to B for some time.
Hm, if there is a unidirectional path, wouldn't A find it at some point?

And if A inclues source/dest/nonce/data fields from B's probe then B knows which address pair from B to A works, so both unidirectional paths will be found.
The trouble would be when A doesn't include information from pobes it  
received from B, so that by the time that B sees a successful packet  
from A, B has already moved on to a new pair so both ends think there  
is working connectivity but there is only connectivity from A to B but  
not from B to A.
In B, the Retransmission Timer of B expires because a valid path from A to B
was not found, so B starts testing other paths that are not working.
Retransmission timer = a new probe is sent? Note that we don't  
explicitly use this terminology in REAP. Think of each probe as a new  
probe without relationship to earlier ones.
Then, A
stops receiving data from B, so the Send timer expires (I don't find any
reason why all the possible paths should be explored in less than Send
Timeout time, so A could not test all possible paths from A to B in this
time).
The Send Timeout keeps track of when to send a keepalive. This is part  
of the failure detection mechanism, which runs when data is flowing.  
Only when there has been no incoming traffic (but there is outgoing  
traffic) the reachability exploration procedure is started, which  
doesn't use the Send Timeout. In practice, data traffic will continue  
to be generated concurrently with the reachability exploration, but  
the two types of packets don't interact.
Then, A falls to the Exploring state, and (in the supposition of the
previous paragraph) forgets about the working path from B to A.
A host should only enter the Exploring state when it has been sending  
outgoing packets but isn't seeing incoming packets. So it SHOULD be  
impossible to get into the Exploring state when there is working  
reachability in both directions.
May be now A
sends a probe to B through a working path. but in B happens the same (it tries now with different paths from B to A that are no valid, so A tries another paths from A to B abandoning the good one...). In this case, two valid unidirectional paths existed, one from A to B, and other from B to A, but the protocol could not find them, because they not were known at the
same time by both nodes.
I'm missing something?
I'm thinking something like this could happen if one end doesn't copy  
back the other's probe information, but not in any other circumstance.