I'm following up on the discussion just had in 6man regarding address selection. I have this awful feeling that we are fighting off the alligators and forgetting to drain the swamp.

Correct me if I am wrong. The objectives being the source address selection algorithm are to:
  1) keep a datagram within as local a routing domain as possible
  2) to facilitate the lowest possible RTT during an exchange
  3) to work around issues caused by ingress filtering (BCP 38/84)

In short, we recommend that the source, which knows its own addresses, compare them to the known addresses of a potential destination, and choose the address pair that have the largest number of contiguous prefix bits in common. This achieves (1), and in so doing potentially achieves (2), although there are ample cases in which that is not so. Overcoming those failure cases and (3) are the real issue the table in RFC 3484 addresses.

Am I correct?

It seems to me that at least in part, this is a matter of making very broad assumptions about routing that may not be valid. It seems to me that there are two things we can do reliably. I have mentioned these to you before, in the v6ops context; let me bring them up again. They come down to - if you want the host to make statements about the network, I think it needs to know more than it currently knows about the network, either by measurement or by explicit communication.

I think the simplest solution to (2) is, frankly, to open connections at some rate (if I have N addresses and my peer has M, send a SYN-or- whatever on successive pairs in the cross-product every K milliseconds until I get a SYN-ACK on one of them, and then close all other sessions). The order of selection is determined according to the prefix length algorithm - the fastest responder is likely to be the most local domain, which is likely to be the one with a common prefix. In local scenarios, "open successive sessions" boils down to opening one session; in more remote scenarios, it will tend to select an address pair that (a) works and (b) has low RTT relative to the routing implied by other address pairs.

The simplest solution to (3), if my machine is in an administrative domain facing an ISP, is to have my DMZ router perform the BCP 38 filter before the datagram reaches the ISP, and in the failure case reply with some form of ICMP message that says "routing took your datagram to an egress into the ISP with prefix <mumble>; select an address in prefix <mumble>". That will give the host the opportunity to select the correct address to traddle ingress filtering reliably.

Is there another requirement I'm missing? I don't think a table in the host that attempts to outthink the network is reliable or wise.

http://tools.ietf.org/html/draft-arifumi-6man-addr-select-conflict
  "Considerations of address selection policy conflicts", Arifumi
  Matsumoto, Tomohiro Fujisaki, Ruri Hiromi, 24-Oct-09,
  <draft-arifumi-6man-addr-select-conflict-01.txt>

http://tools.ietf.org/html/draft-ietf-6man-addr-select-considerations
"Considerations for IPv6 Address Selection Policy Changes", Tim Chown,
  19-Oct-09, <draft-ietf-6man-addr-select-considerations-00.txt>

http://tools.ietf.org/html/draft-ietf-6man-addr-select-sol
"Solution approaches for address-selection problems", Arifumi Matsumoto,
  Tomohiro Fujisaki, Ruri Hiromi, Ken-ichi Kanayama, 1-Jul-09,
  <draft-ietf-6man-addr-select-sol-02.txt>


--------------------------------------------------------------------
IETF IPv6 working group mailing list
ipv6@ietf.org
Administrative Requests: https://www.ietf.org/mailman/listinfo/ipv6
--------------------------------------------------------------------

Reply via email to