{"id":16732554,"url":"https://github.com/mickel8/quic_dist","last_synced_at":"2025-03-21T21:31:23.095Z","repository":{"id":36999511,"uuid":"471937302","full_name":"mickel8/quic_dist","owner":"mickel8","description":"QUIC carrier for Erlang Distribution Protocol","archived":false,"fork":false,"pushed_at":"2022-07-30T17:30:49.000Z","size":118,"stargazers_count":46,"open_issues_count":8,"forks_count":3,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-18T05:23:24.087Z","etag":null,"topics":["distributed-erlang","erlang","erlang-otp"],"latest_commit_sha":null,"homepage":"","language":"Erlang","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mickel8.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-03-20T09:48:35.000Z","updated_at":"2025-01-05T00:35:06.000Z","dependencies_parsed_at":"2022-09-11T22:50:42.376Z","dependency_job_id":null,"html_url":"https://github.com/mickel8/quic_dist","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mickel8%2Fquic_dist","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mickel8%2Fquic_dist/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mickel8%2Fquic_dist/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mickel8%2Fquic_dist/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mickel8","download_url":"https://codeload.github.com/mickel8/quic_dist/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244874193,"owners_count":20524576,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["distributed-erlang","erlang","erlang-otp"],"created_at":"2024-10-12T23:45:33.835Z","updated_at":"2025-03-21T21:31:22.634Z","avatar_url":"https://github.com/mickel8.png","language":"Erlang","funding_links":[],"categories":[],"sub_categories":[],"readme":"# quic_dist\n\nQUIC carrier for Erlang Distribution Protocol.\n\n## Build\n    $ rebar3 compile\n\n## Test\n\nTested on OTP 26 e7e79d8b8b1ec4a97a1940a685b0bb44388c2477\n\nNode names must be in form of 'port@ip'.\nEPMD cannot be used as it requires TCP.\n\n```\n# shell 1\n\n$ ERL_FLAGS=\"-proto_dist quic -no_epmd -config sys\" rebar3 shell\n1\u003e application:ensure_all_started(quic_dist).\n{ok,[quicer,quic_dist]}\n2\u003e application:set_env([{quic_dist, [{cert, \"/path/to/cert.pem\"}, {key, \"/path/to/key.pem\"}]}]).\nok\n3\u003e net_kernel:start('5555@127.0.0.1', #{}).\n{ok,\u003c0.182.0\u003e}\n(5555@127.0.0.1)4\u003e net_adm:ping('4444@127.0.0.1').\npong\n(5555@127.0.0.1)5\u003e net_adm:ping('4444@127.0.0.1').\npong\n(5555@127.0.0.1)6\u003e net_adm:ping('4444@127.0.0.1').\npong\n(5555@127.0.0.1)7\u003e net_adm:ping('4444@127.0.0.1').\npong\n(5555@127.0.0.1)8\u003e spawn('4444@127.0.0.1', fun () -\u003e erlang:display(hello) end).\n\u003c13800.205.0\u003e\n(5555@127.0.0.1)9\u003e\n```\n\n```\n# shell 2\n\n$ ERL_FLAGS=\"-proto_dist quic -no_epmd -config sys\" rebar3 shell\nEshell V13.0  (abort with ^G)\n1\u003e application:ensure_all_started(quic_dist).\n{ok,[quicer,quic_dist]}\n2\u003e application:set_env([{quic_dist, [{cert, \"/path/to/cert.pem\"}, {key, \"/path/to/key.pem\"}]}]).\nok\n3\u003e net_kernel:start('4444@127.0.0.1', #{}).\n{ok,\u003c0.182.0\u003e}\n(4444@127.0.0.1)4\u003e net_adm:ping('5555@127.0.0.1').\npong\n(4444@127.0.0.1)5\u003e net_adm:ping('5555@127.0.0.1').\npong\n(4444@127.0.0.1)6\u003e net_adm:ping('5555@127.0.0.1').\npong\n(4444@127.0.0.1)7\u003e hello\n\n(4444@127.0.0.1)7\u003e\n```\n\n## Architecture\n\n![](docs/architecture.drawio.png)\n\n## Supported platforms\n\nLimited to platforms supported by quicer.\n\n## Resources\n\n#### Most important\n\n* https://www.erlang.org/doc/apps/erts/alt_dist.html#distribution-module \n* https://github.com/erlang/otp/blob/OTP-24.2/lib/kernel/src/inet_tcp_dist.erl\n* https://github.com/emqx/quic\n\n#### Additional\n\n* https://github.com/hauleth/consulate\n* https://www.erlang.org/doc/apps/erts/erl_dist_protocol.html\n* https://github.com/potatosalad/otp/pull/1\n* https://erlangforums.com/t/rfc-erlang-dist-security-filtering-prototype/1002\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmickel8%2Fquic_dist","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmickel8%2Fquic_dist","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmickel8%2Fquic_dist/lists"}