Mohacsi,


I think It should be implemented the following way:

for each source address in some order {
        create socket
        bind (current source address)
        for each destination address in some order {
                connect (current destination address)
                do {
                 "select" for K ms or a result, whichever comes first
               } while (result was a connection attempt failing)
               if result was a connection succeeding goto "connected"
       }
        destroy socket }

connected:
....

Scaling remark: you would like to have #source_addresses x #destination address sockets opened. I think it should not be an issue....

"in some order" - ok here we arrived why RFC3484(bis) developed. Node administrator (or site administrator if RFC3484 can be propagated via e.g. DHCPv6) can define the order. Source address selection is defining the order!

By the way would like to try with source address as link-local address with destination as global address? This is try_and_always_failure scenario.... This is another reason for source address selection.

Your model is reasonable but it is also makes a further steps in writing IP applications....

1. In early IPv4 era the application was written this way:
bind (to zero)
connect (first IPv4 address)


2. Later
bind (defined source address or zero)
for each destination address {
        try connect destination address;
        if successful break;
}
connected:

3. Now try all_source_address x all_destination_address. Which is fair. Here I am saying to try all reasonable combination only with a reasonable order.
That is why RFC 3484(bis) is useful.

This 3. is a huge step - which is requires modification in applications. I am not against this one but we have to be careful - keep compatibility with applications with earlier behaviours....

I agree that #source_addresses x #destination_address try-and-error approach should be useful. However, we should have reasonable pruning mechanism for the pairs. Pruning should be based on the address scopes and usages, and, what I proposed at
Hiroshima, site/host administrators' policy.


Ideally, if one wishes to have a properly designed socket interface, one puts that in a subroutine that one calls with a name and gets either a connected socket or a failure in response, so that the application knows nothing about IP addresses (see UNSAF). But now I am engaging in wishful thinking - that the socket interface would be reasonably designed.

Agreed. The implementation might benefit of the existing RFC 3484 (bis) policy table. This table can have static entries from policy and dynamic entries (probably also has to be extended to keep address pair). Each successful connections can create a dynamic entry with full address inheriting the priority from the matching static policy entry - according the source address selection the longest match will win. Next time the full address will will. Each dynamic entry should have expiry timer. Important each address configuration on the host should flush all the dynamic entries from the cache.

Regarding caching, I wrote in the previous e-mail,

Caching sometimes work nicely, and sometimes do harm.
I'm not sure we can create perfect-in-every-environment
caching algorithm.

Another point is the complexity.
The complexity should involve difficulties in e.g. trouble shooting.


Caching implies some form of storage, which probably involves a kernel API, which I have not tried to prototype.

Fred and operator running IPv6!

I am still interested about your opinion for UDP or multicast applications with your approach and operational questions, burdens enumerated in my previous e-mail.

Do we send ICMP error messages with all the source addresses, also ? :)

--
Arifumi Matsumoto
  Secure Communication Project
  NTT Information Sharing Platform Laboratories
  E-mail: arif...@nttv6.net

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

Reply via email to