Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mickel8/quic_dist

QUIC carrier for Erlang Distribution Protocol
https://github.com/mickel8/quic_dist

distributed-erlang erlang erlang-otp

Last synced: 16 days ago
JSON representation

QUIC carrier for Erlang Distribution Protocol

Awesome Lists containing this project

README

        

# quic_dist

QUIC carrier for Erlang Distribution Protocol.

## Build
$ rebar3 compile

## Test

Tested on OTP 26 e7e79d8b8b1ec4a97a1940a685b0bb44388c2477

Node names must be in form of 'port@ip'.
EPMD cannot be used as it requires TCP.

```
# shell 1

$ ERL_FLAGS="-proto_dist quic -no_epmd -config sys" rebar3 shell
1> application:ensure_all_started(quic_dist).
{ok,[quicer,quic_dist]}
2> application:set_env([{quic_dist, [{cert, "/path/to/cert.pem"}, {key, "/path/to/key.pem"}]}]).
ok
3> net_kernel:start('[email protected]', #{}).
{ok,<0.182.0>}
([email protected])4> net_adm:ping('[email protected]').
pong
([email protected])5> net_adm:ping('[email protected]').
pong
([email protected])6> net_adm:ping('[email protected]').
pong
([email protected])7> net_adm:ping('[email protected]').
pong
([email protected])8> spawn('[email protected]', fun () -> erlang:display(hello) end).
<13800.205.0>
([email protected])9>
```

```
# shell 2

$ ERL_FLAGS="-proto_dist quic -no_epmd -config sys" rebar3 shell
Eshell V13.0 (abort with ^G)
1> application:ensure_all_started(quic_dist).
{ok,[quicer,quic_dist]}
2> application:set_env([{quic_dist, [{cert, "/path/to/cert.pem"}, {key, "/path/to/key.pem"}]}]).
ok
3> net_kernel:start('[email protected]', #{}).
{ok,<0.182.0>}
([email protected])4> net_adm:ping('[email protected]').
pong
([email protected])5> net_adm:ping('[email protected]').
pong
([email protected])6> net_adm:ping('[email protected]').
pong
([email protected])7> hello

([email protected])7>
```

## Architecture

![](docs/architecture.drawio.png)

## Supported platforms

Limited to platforms supported by quicer.

## Resources

#### Most important

* https://www.erlang.org/doc/apps/erts/alt_dist.html#distribution-module
* https://github.com/erlang/otp/blob/OTP-24.2/lib/kernel/src/inet_tcp_dist.erl
* https://github.com/emqx/quic

#### Additional

* https://github.com/hauleth/consulate
* https://www.erlang.org/doc/apps/erts/erl_dist_protocol.html
* https://github.com/potatosalad/otp/pull/1
* https://erlangforums.com/t/rfc-erlang-dist-security-filtering-prototype/1002