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

Re: failure detection



On 19-aug-2005, at 20:57, Paul Jakma wrote:

- Use IPv6 RAs to advertise both prefixes, with a preferred lifetime
  set according to how quickly you want to switch, eg set it equal
  to twice the RA interval, or even equal to it.

RAs have very long lifetimes. I think the Cisco default is a week. You can't bring this down to a minute or less without all kinds of interesting side effects.


Anyway: Then with *one* message (or lack of, to be more specific), from your DSL router all X hosts on your network deprecate use of the ISP-B addressm and can start using others. Far more efficient than *all* your X hosts doing n^2 probes.

I agree that when certain information is available, it makes sense to distribute it locally rather than have every host go out and discover the same facts for itself. We'll have to come back to this at some point.


Yes, I do. As a BGP jockey, I'm kind of like the health inspector who never eats out... There is a lot going on that regular users don't really know about.

So the answer is:

- have users run around every restaurant to try divine which one
  serves edible food (n^2 probing)

Well, that's better than coming back to the one that serves crappy food each time because you don't want to visit so many restaurants. :-)


rather than:

- fix the problems in internet routing

We await your suggestions...

The trouble is that you need aggregation to make routing scale, and with aggregation you lose all this interesting info that would have been useful. Routing can still tell you some interesting things when there are wide-spread catastrophes, but I'm not sure it's worth the trouble to optimize for that. (Or rather: I'm pretty sure it isn't.)

[test setup]

wow 2*4^2, ie 32 packets to complete probing (worst case). Imagine 50 such shim6 hosts on your network.

Well you really want to send at least 3 probes to account for random packet loss. :-)


A initiates a TCP session with destination address B1. Let's assume that the system chooses interface 1 for output and A1 as a source address, so the packets have address pair A1-B1

Now it's entirely possible that B's default route is over ISP Q. So when B sends a reply to the A1-B1 session setup request, it sends a B1-A1 packet out on interface 2. Now either the site exit router will filter it, or it will end up at ISP Q or ISP R, which will filter it. This is the infamous ingress filtering problem that we have to figure out.

But it's easy. Shim6 is *not* TCP, it doesnt need to maintain any / specific/ consistency of addresses. Eg, in this example, why on earth is B replying with (B1,A1)? The reply from B (in my mind) would be (B3,A1).

The reason why it's not easy is that at this point, the shim hasn't been activated yet, we're just doing regular TCP. This is necessary to maintain backward compatibility.


And even if you activate the shim at this point, the two sides haven't been able to compare notes yet, so you can't start doing strange tricks yet, or at least you run into security complications.

BTW: Note that I strongly disagree with trying to solve all the internet's routing problems by making every end-host do n^2 probing.

Ah, good that you said so because we all thought you were supporting this.


So A tries:

A1-B2
A2-B1
A1-B3
A3-B1
A1-B4
A4-B1

and on and on and on, until it eventually determines that A4-B4 works.

You don't want this to happen. So what's the alternative? Give up after the second try? The fourth? The n^2/2th?

IMHO, you should only try:

(unspecified) -> B1
(unspecified) -> B3
(unspecified) -> B4

Ah, ok.

Don't forget that if the site exit router does its own version of the ingress filtering, it can send back ICMP messages so the host knows that this source address doesn't work and move on without much delay. So after a maximum of 3 messages with incorrect source addresses A knows it should use A4, and then it only has to do B1, B2, B3 and B4 to find the working A4-B4 pair.

Also, if the host has several sessions towards different destinations, it may observe that if 2001:a900:456::1 isn't working, so if it has to choose between trying 2001:a900:789::1 and 3ffe:ffff: 789::1 it will choose the latter because there is a chance the whole 2001:a900::/32 block is affected.

So in reality having to test 2*n^2 will be extremely unlikely.

In my universe (which happens to correspond vaguely to how the internet works today ;) ), when AMS-IX dies, within 1 to 3 minutes or so, your ISP, in conjunction with other ISPs start propogating WITHDRAWs and UPDATEs and converge so that packets flow again.

The trouble is that many small ISPs around here connect to the rest of the world through one location in Amsterdam, so when there is a power failure at that location, not only their AMS-IX stuff goes down but also their transit. Last time there was an AMS-IX power failure (a month before the generator they were installing because of the one- but-last power failure went online) about 25% of all AMS-IX members were completely unreachable for me.


Remember that while all of this is going on, the transport protocol sees a black hole. So at any time, the transport can decide to time out. The shim doesn't do anything that actually _hurts_ regular transport protocols.

If you call the potential for a smallish network sending out near to 1k probe packets "doesn't hurt" for not much gain, sure.

Well, I send out that many packets in 10 seconds over my DSL line when everything works, so why not do the same when there is a problem? :-)


BTW, my ISP just had a very big DoS attack. The shim would have enabled me to keep working to the extent possible, routing can't really do anything in these cases.