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

Re: Failure Detection (was Re: soft state (was Re: shim6 and bit errors in data packet headers



Hi Marcelo,

On 4-jun-2005, at 12:33, marcelo bagnulo braun wrote:

- 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

i asume that receiving a keepalive does not increment Rx, right? because if it does, then i think you could end up exchanging only keepalives, and i guess we don't want that...

Right, when no recent tx and recent rx just keepalives, don't send keepalives. The other side will then stop sending keepalives as well so the state goes to idle.


full reachability testing procedure does include verifying if currently used locator pair is working through a reachability test, right?

Right, and exploring other locator pairs until a working one is found or we know that none of them work.


The improvement over what you propose and/or NUD is that when there is no outgoing traffic, we just send keepalives, which could theoretically be just IPv6 headers without a payload. Since these are unidirectional they don't take up bandwidth in the other direction, as there is traffic flowing in that direction anyway.

right, this would reduce 50% of the signalling in this situations i guess

Yes, 50% of the packets and probably a bit more of the data as the keepalives can be very small, they don't have to carry any data or signalling.


There wouldn't be any advantage in combining this with positive feedback from ULPs, except maybe some small implementation optimization. However, listening for negative feedback could be useful to start reachability tests faster than the regular shim timeout.

imho, ULP feedback should supersede this mechanism, since it it the most reliable feedback imho.

:-) I hope so.

Obviously TCP does really well here, but UDP-based stuff is a different story.

I mean, if we have negative ACK from the ULP, then we must perform a reahcbaility test to verify current locator pair (even if the Rx ANd Tx are not detecting any problem)

Right: the ULP can have detected the problem faster, and, better safe than sorry.


If we have positive ACK from the ULP, we should be fine and do nothing, even if the TX and RX are detecting a failure)

If we only receive and don't send but the ULP is happy we still need to send keepalives because we can't know that the ULP at the other side is also providing positive feedback.


If we only send and don't receive but the ULP is happy (how does it know it can be happy??) I guess we can go either way without much harm.

So basically positive feedback wouldn't (have to) change our behavior.

Rx and Tx are to be used when there is no info from ULP
The reasons for this is that ULP really know for sure if communication is progressing adequately. Tx and Rx are just guessing. For instance, Rx could be fooled by an attacker injecting packets with spoofed source address, in order to keep the communication in a given path.

That's true.

On the other hand, I wouldn't necessarily put too much trust in what weird ULPs have to say. But as long as what they have to say can only help or hurt themselves I don't really care, of course.

Iljitsch