Re: Comments on draft-ietf-multi6-v4-multihoming-02
Iljitsch van Beijnum <[email protected]> Sun, 14 Nov 2004 18:22:33 +0100
| Newsgroups | gmane.ietf.multi6 |
|---|---|
| Message-ID | <[email protected]> |
On 14-nov-04, at 4:29, Joe Touch wrote: >> But how do you know a session is completely idle vs there is still a >> delayed ack coming? (Without looking too deep into TCP, that is.) > Delayed ACKs come within 200ms of the other end going idle, AFAIR. Ok. But then we have to account for normal packet loss and normal RTT variations. >> (Note that is makes little difference whether you use persistent >> connections: we work at the IP layer.) > Persistent connections are the kind of TCP connections that might go > idle for extended periods; Actually I believe they are closed after a relatively short time when they aren't used. And very few sessions use persistent connections last time I checked. > most other TCP connections tend to either be sending data or be closed > quickly. A better example of sessions that remain open long even if they're idle are SSH sessions. >> The trick is detecting legitimate idleness because in that state no >> action is necessary. For TCP this shouldn't be too hard, for other >> protocols we have to find good timeout values. I think these need to >> be higher than just a few RTTs. > Such as? I was thinking 300ms-500ms as a ballpark. I was thinking along the lines of 10 - 15 seconds for non-TCP stuff. I heaven't really looked in detail, but I'm pretty sure transports for AV streaming don't generate ACKs every 500 ms. Alternatively, this could be made to auto-tune. Note though that if you select value X for this and ACKs are sent every 1.1*X interval, you'll be sending test packets every X. With a larger X this is less likely to happen, but also results in less unnecessary traffic if it does. >> Hm, my assumption was that after a successful test, there wouldn't be >> any more tests until something changes. > That presumes async notification from the lower layer. I wasn't, since > I don't believe that's feasible. > I.e., I would expect: > - seeing packets exchanged is an in-band test that can be > observed and serves as a keep-alive itself > - send keepalives for the first 500ms after idle > - stop sending keepalives after that I think we're in agreement exept for the interval and the fact that you use plural while I'd think a single successful exchange would be enough. :-) >> Since we don't do anything when the session is active in both >> directions or completely idle, reachability tests only happen after a >> suspicious active->idle transition. After the test, the multihoming >> layer would be satisfied that this transition wasn't because of a >> failure, and wouldn't have to do anything until there is a new >> active->idle transition. > I'd like it to do something - to keep verifying that reachability is > still possible for exactly the period that an idle TCP 'expects' there > not to be a substantial change in the channel. Wouldn't an outage happening right after a session goes idle and a keepalive has been exchanged be such a corner case that we can safely ignore it as a special case?