[erlang-questions] Controlled interaction of two erlang distributed networks

Kenji Rikitake kenji.rikitake@REDACTED
Thu Aug 27 15:27:31 CEST 2009


Disclaimer: I am not insisting to change Erlang rpc module as of now.
The rpc module model works fine for the intended usage.  (What I'm
writing may be on a different track from the beginning of this thread.)

I want to have something additional.

In the message <7702c0610908270521p3eb6054ewe380b3962dad66ea@REDACTED>
dated Thu, Aug 27, 2009 at 10:21:25PM +1000,
Richard Andrews <bflatmaj7th@REDACTED> writes:
> > * with restricting the usage of TCP connection between two BEAMs to only
> > one well-known destination port;
> 
> inet_dist_listen_min + inet_dist_listen_max does this.

About rpc with inet_dist, true.  This should be configured for all BEAMs
individually though.  

Question: Why not only one destination port number is sufficient?

> > * preferably being able to forwarded through proxies (i.e. the
> > addressing mechanism of BEAMs does not depend on DNS, IP addresses, or
> > port numbers); and

> It would be nice if nodes did not keep opening more and more TCP
> connections between the same two nodes in different directions.

Agreed.

Why not overlaying multiple Erlang node connections between two IP hosts
into one TCP (or SCTP if needed) connection?

> Distribution over SCTP might solve this issue. Does this exist?

I've never heard of Erlang SCTP distribution.  Surely an interesting
project to try out.

> > * running everything within a BEAM (and linked-in drivers) without
> > anything like epmd

> The directory (epmd) needs to be in a predictable location and it
> cannot be in a node as it must monitor those. I do dislike the inet
> and ssl helper processes that hang off beam nodes; although having
> them separate has helped me debug some problems.

I am not claiming to remove epmd functionality for rpc.  I'd rather want
it in an Erlang BEAM or something directly controllable from BEAM.

One long-time argument for epmd: at least the source port address with
bind() system call should be freely specified other than
INADDR_ANY. I've seen this argument repeatedly on the list and I wonder
why this has not been implemented yet.  Binding to INADDR_ANY is the
least preferable choice, especially a host has multiple addresses bound
into a network interface.

> > will open a new opportunity for Erlang to become a practical system for
> > monitoring/controlling distant systems over Internet. ?This is a
> > challenging but an interesting project.
> 
> You may be trying to re-cast erlang distribution for something it was
> not intended to do.

Disclaimer repeated: I am not trying to re-cast the current rpc
module-based distribution.

I need something in Erlang to safely monitor/control/manipulate/whatever
each other between BEAMs across the Internet.

Read Dave Smith's paper as well.

>   Rich

Kenji Rikitake


More information about the erlang-questions mailing list