Arifumi Matsumoto wrote:
is RFC 5014 what you are looking for ?

No, that seems to only deal with source address selection. It also doesn't deal with IPv4 at all.

What I was thinking of is an API, where you supply a set of source addresses and destination addresses and it returns a set of valid address pairs ordered by preference.

You could optionally give it constraints and you could also optionally request extra info, like next-hops and link numbers.

The simplest use case would be when some app tries to connect a socket with IPADDR_ANY and a single destination address. Either the socket library or the kernel would then call this API with the very minimal input. It would then proceed to try to create the requested connection by using the resultant address pairs in the given order until one works.

A more complex use case would be when some MTA finds five MX records with the same priority. It would then resolve all the addresses for them and give them all as the set of destination addresses along with what ever it has been configured with as the source addresses to the API. (This was the most extreme case of application level address selection I could come up with.)

The point I'm trying to make is that basic address selection decisions can happen in many places (kernel, library, server code, client code) and there's a need for network administrators to be able to influence those decisions. If some new protocol for this purpose is created or if some new address selection methods are defined, all the thousands of server and client software may potentially need to be rewritten to support it.

Alternatively, if address selection is centralized, it can be improved without having to rewrite everything else.

On 2009/06/29, at 20:40, Aleksi Suhonen wrote:

Hi,

Address selection happens in many places: in some cases it's supposed to happen inside the kernel, in some cases inside a library and in some cases in the application.

Would it make sense to create a uniform API so that no matter where it takes place, it has access to all the same input and configuration?

Implementors can then decide if it should be centralized in the kernel, in libc/libsocket/libnsl/libresolv, in some sort of a server or service or whatever.

The API should be fully re-entrant and iterative and it should support constraints, I guess?

A good API would make future improvements in the address selection algorithm easier to transfer from the drawing board into production use.

Thoughts? Comments? Or does it exist already and I'm just ignorant?

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


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



--
        Aleksi Suhonen, Research Assistant
        Department of Communications Engineering
        Tampere University of Technology
--------------------------------------------------------------------
IETF IPv6 working group mailing list
ipv6@ietf.org
Administrative Requests: https://www.ietf.org/mailman/listinfo/ipv6
--------------------------------------------------------------------

Reply via email to