Re: Add net_kernel and epmd support for multiple simultaneous distributed transport protocols
DeadZen <[email protected]> Fri, 5 Jun 2015 15:32:22 -0400
| Newsgroups | gmane.comp.lang.erlang.patches |
|---|---|
| Message-ID | <CAAaFgHs2d+B9f5JnvoOh52m2coeR6hJgoZKVtdYyE0kq6uWcTQ@mail.gmail.com> |
What is the status of this? thanks, Pedram On Wed, Jan 15, 2014 at 4:58 AM, Kenneth Lundin <[email protected]> wrote: > Hi Serge, > > See embedded comments at the end. > > > On Thu, Jan 9, 2014 at 9:26 PM, Serge Aleynikov <[email protected]> wrote: >> >> Kenneth, >> >> Thank you for the thorough response! Your reasoning is appealing and I'd >> like to engage in the discussion on how we can move on to include this >> functionality in the distribution, as I believe the community will benefit >> greatly from being able to run an Erlang node listening on multiple >> transports concurrently. >> >> The changes in the patch (https://github.com/erlang/otp/pull/121) cover >> the following areas: >> >> 1. Extension of the EPMD distributed protocol (here we can safely add new >> set of commands while being fully backward compatible) >> erts/doc/src/erl_dist_protocol.xml >> >> 2. Modification of the EPMD daemon to support the new protocol version and >> to keep track of the multiple protocols/ports per node (this is also done in >> a backward compatible way. Nodes supporting new protocol version communicate >> using new spec, and old nodes communicate using old spec) >> erts/epmd/src/epmd.h >> erts/epmd/src/epmd.c >> >> 3. Modification of the EPMD command-line tool to talk to the local EPMD >> daemon using the new protocol version (the command-line tool uses new >> protocol version. This is reasonable, since it's installed together with the >> version of VM supporting the new EPMD protocol features) >> erts/epmd/src/epmd_cli.c >> erts/epmd/src/epmd_cli.c >> erts/epmd/src/epmd_int.h >> erts/epmd/src/epmd_srv.c >> >> 4. Updates of the UDS distribution example code. I believe the example in >> the current release is outdated (I was unable to compile it), but I patched >> it anyway to illustrate the usage of the new protocol) >> lib/kernel/examples/uds_dist/src/dist_selector.erl >> lib/kernel/examples/uds_dist/src/uds_dist.erl >> lib/kernel/examples/uds_dist/src/uds_server.erl >> >> 5. Change of the net_kernel transport pluggable architecture to allow >> support of the new EPMD protocol. >> 5.1 Net_kernel support for the new protocol. >> 5.2 TCPv4 support of the new protocol >> 5.3 TCPv6 support of the new protocol >> 5.4 TLS support of the new protocol >> lib/kernel/src/net_kernel.erl >> lib/kernel/src/dist_util.erl >> lib/kernel/src/inet6_tcp_dist.erl >> lib/kernel/src/inet_tcp_dist.erl >> lib/kernel/src/net_kernel.erl >> lib/ssl/src/inet_tls_dist.erl >> lib/ssl/src/ssl_tls_dist_proxy.erl >> lib/kernel/doc/src/net_kernel.xml >> >> It seems to me that we could roll it out in two phases: >> >> 1. Implement 1,2,3 in the first phase. This would allow to deploy a >> version with EPMD supporting old and new protocols. >> 2. Implement changes to net_kernel and transports (4,5) to be able to talk >> to new EPMDs >> >> If agreed, I can break up my patch in two, corresponding to this plan. >> >> What do you think? > > > I think it is a good idea to roll out this in 2 or more phases but I think > we need think a bit more about this before we can give a more feedback on > exactly what to include in the different phases. > > Will be back with more comments/suggestions soon. > > Regards Kenneth >> >> >> Serge >> >> >> >> On Thu, Jan 9, 2014 at 10:53 AM, Kenneth Lundin <[email protected]> >> wrote: >>> >>> On Fri, Jan 3, 2014 at 4:30 PM, Serge Aleynikov <[email protected]> >>> wrote: >>>> >>>> I'd like to inquire the status of the following pull request: >>>> https://github.com/erlang/otp/pull/121 >>>> >>>> Has it been reviewed? >>>> >>>> Thanks! >>>> >>>> Serge >>>> >>> Hi Serge, >>> >>> We have discussed your contribution at the OTP technical board and here >>> are the results: >>> >>> Inclusion in OTP >>> ----------------------- >>> >>> Your patch touches many source files which are central for the Erlang >>> distribution and we feel it would require quite a lot of work from our side >>> as well to assure that nothing in the current distribution gets broken or >>> incompatible. It would also require quite deep involvement from us giving >>> more detailed feedback regarding interfaces, semantics etc. We can not >>> prioritize this at the moment so we will not include your contribution now >>> (which means REJECT for now). >>> >>> But we really want to add this kind of functionality and want to >>> encourage you (and others) to continue the good work in this area for >>> possible inclusion in OTP at a later stage. See more info and thoughts >>> below. >>> >>> >>> General thoughts >>> ----------------------- >>> >>> Enhancing/extending the Erlang distribution to support heterogenous >>> communication protocols is something we have discussed many times and it is >>> something that we really would like to have. >>> >>> 1) We would like a plugin architecture where different transport >>> protocols can be easily plugged in without having to change the basic Erlang >>> distribution or the VM. >>> >>> 2) It should be possible to run different protocols towards different >>> nodes >>> >>> 3) should be possible to have different timeouts (NET_TICK_TIME) per >>> connection >>> >>> 4) interesting protocols would be UDS, TCP, TLS over TCP, SCTP, ... >>> >>> 5) it should be possible to look up nodes in different ways and maybe not >>> only via contacting epmd on the host name which is part of the node name. >>> I.e having the hostname as part of the node name is not always what you >>> want, depending on protocol to use. >>> >>> .... >>> >>> Your specific contribution >>> ----------------------------------- >>> In your pull request you have implemented fully or partly 1,2, 4, and we >>> see it as a good start. >>> >>> A general comment is that the diffs are showing differences on many >>> places in the code where you actually haven't changed anything except tabs, >>> line breaks and spaces. This makes it more difficult to sort out what you >>> have changed and added. We would like a clean diff without unnecessary >>> touches lines which has no relevance for the new function. If a formatting >>> change is needed or suggested it should be a separate commit/pull request. >>> >>> Regarding details in your code we have not had the time to take a deeper >>> look but from a quick glance it looks good. The questionmarks are more about >>> how to introduce this new functionality in a safe way and what more is >>> needed that you have not addressed so far. >>> >>> >>> Suggested way forward >>> ------------------------------ >>> >>> I think that one approach that would make it easier to include this kind >>> of functionality soon would be to make minimal changes to the existing >>> distribution code and only add or change so that it is possible to support >>> heterogenous protocols with code that initially can live as a separate >>> extension that don't need to be part of the OTP distro. >>> In this way the functionality can be further developed and used together >>> with an ordinary OTP distro (unpatched) and can easily be included later >>> (hopefully within a year). >>> >>> Maybe you think that you already have done those minimal changes, but I >>> suggest you take another look and see if it is possible to find a way to >>> make minimal or now changes to net_kernel and epmd etc. which we could >>> include and then have the rest as a separate "application"/extension project >>> at github that can be included later. >>> >>> Just some thoughts: >>> Maybe let the old distribution work as before and let the user choose >>> "new_distro" in some way and will only then get to run the new code which >>> allows heterogenous protocols another new EPMD or an EPMD written in Erlang >>> or allow for plugins of different EPMD implementations that can run in >>> parallell. The communication towards EPMD maybe needs to be secure as well >>> and then it might be much easier to implement in Erlang. >>> >>> I (we) are more than willing to discuss more about how to find this >>> minimal patch which we think we can "safely" include and which makes it >>> possible to develop and use the rest as pure extensions to OTP in a first >>> step. >>> >>> Regards Kenneth, Erlang/OTP Ericsson >> >> > > > _______________________________________________ > erlang-patches mailing list > [email protected] > http://erlang.org/mailman/listinfo/erlang-patches > _______________________________________________ erlang-patches mailing list [email protected] http://erlang.org/mailman/listinfo/erlang-patches