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

Re: Preserving established communications (was RE: about draft-nordmark-multi6-noid-00)



On 27 okt 2003, at 13:25, marcelo bagnulo wrote:

Current studies of bgp convergence time are talking about up to 15 minutes
of BGP convergence when a route is withdrawn. Established communications
clearly don't survive this.

Ok, but answer me this: how does established communication survive the fact that the route to one of the endpoints is withdrawn in the first place? No route means no connectivity.


(Un)fortunately these researchers often don't really understand BGP so they model it in the wrong way. If you build a huge network, infuse it with instability and then revoke a route, you could perhaps end up with a 15 minute wait before the route has really disappeared everywhere. However in practice it isn't this bad. I've done some tests a while ago and what I saw pretty consistently was two minutes.

But apart from that revoking a route at the source isn't a very typical condition or one that we need to survive. What we need is to detect a broken link and reroute. The first part can take up to three minutes because of Cisco's unbelievable default hold time, but it doesn't have to: if one end sets a lower hold time, that one is used, and routers are by default configured to immediately tear down BGP sessions when the associated interface goes down.

Rerouting is a matter of seconds in the absense of prior instability, or 30 seconds otherwise.

So many outages don't even lead to a noticable interruption, a good number make TCP sessions hang for a relatively long time (30 - 180 seconds) but don't break them, and only under very unfortunate circumstances rerouting takes longer than a TCP timeout.

Note that there are efforts underway to detect a dead neighbor very quickly. This should take the edge off of these problems by eliminating the 180 second timeout. See http://www.ietf.org/internet-drafts/draft-katz-ward-bfd-01.txt

have to exchange end-to-end hello packets every 10
seconds or so. If you want to do VoIP you need to do them about every 100
milliseconds. Imagine 100 Billion hosts or so communicating across the Internet doing such e2e hello's. Couldn't that be another form of scaling problem?

:-)
Well, som additional cosndierations about this.
First, many existing ULP already exchange this type of messages, TCP ack for
instance, so hellos can be piggybacked into this messages.

If you get an ACK, you know you have reachability so no need to piggyback anything. I think it would be a very good idea to dump the job of detecting _potential_ failures in the lap of layer 4 (which for many real time protocols means the application). TCP has a very good idea of how reachable the other end is. For real time protocols, it's probably either impossible or too expensive to make rehoming seamless. But why would we have to? A short hiccup in the audio/video would be bad, but not as bad as 1. sending ACKs ever 100 ms and 2. rehoming every time a single packet is lost. It's not like there are outages so rehoming is necessary every few minutes.