Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 19 Mar 2002 20:44:44 +1100
From:      Peter Jeremy <peter.jeremy@alcatel.com.au>
To:        Sergey Babkin <sergey@caldera.com>
Cc:        arch@FreeBSD.ORG, chawla@caldera.com
Subject:   Re: proposition for new socket syscalls {send,recv}fromto
Message-ID:  <20020319204443.A46069@gsmx07.alcatel.com.au>
In-Reply-To: <3C800A80.96CEA9D2@caldera.com>; from sergey@caldera.com on Fri, Mar 01, 2002 at 06:10:56PM -0500
References:  <3C800A80.96CEA9D2@caldera.com>

next in thread | previous in thread | raw e-mail | index | archive | help
[Catching up on old mail]

On Fri, Mar 01, 2002 at 06:10:56PM -0500, Sergey Babkin wrote:
>In the high-availability clusters it's convenient and typical to assign
>an IP address to a logical server (or service). This logical server
>may be moved between the physical hosts as neccessary (for example,
>if a physical host fails or needs to be shut down for maintenance).
>So this addres gets added to an interface of the current physical
>host as an alias. Here comes the bad part: this alias happens to be
>on the same subnet as the primary address of this interface, and this
>may cause a confusion about the source address of the packets coming out
>of this host.

You might like to look at how (eg) Compaq handles this.  I've used
TruCluster on Tru64 4.0D/4.0F - it uses this approach and basically
ignores the ensuing problems :-(.  The clustering code in Tru64 5.x
(which I haven't used yet) may do a better job.

> But for the UDP servers (for example, tftp or BIND)
>there is an issue:

This can also affect things like CORBA and FTP where there are
multiple TCP connections with the server either setting up or
specifying how to set up the secondary connections.  I've also
had problems convincing SAMBA to behave the way I want it to.

>How can we fix this situation ? Everything would become a lot simpler
>if we have the calls:
>
>ssize_t
>recvfromto(int s, void *buf, size_t len, int flags, 
>  struct sockaddr *from, int *fromlen,
>  struct sockaddr *to, int *tolen)
...
>ssize_t
>sendfromto(int s, void *buf, size_t len, int flags, 
>  const struct sockaddr *from, int fromlen,
>  const struct sockaddr *to, int tolen)

Other than using 'socklen_t *' instead of 'int *' for the former, these
look like a good idea.  They appear to be easy to use and easy/cheap to
implement.

Peter

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020319204443.A46069>