Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IPv6 support #622

Closed
Tracked by #5
spoonincode opened this issue Jan 5, 2023 · 0 comments · Fixed by #1203
Closed
Tracked by #5

IPv6 support #622

spoonincode opened this issue Jan 5, 2023 · 0 comments · Fixed by #1203
Assignees
Labels
enhancement New feature or request 👍 lgtm OCI Work exclusive to OCI team tech debt

Comments

@spoonincode
Copy link
Member

This is a carry over of eosnetworkfoundation/mandel#357 but with the removal of cleos -- as of 4.0 cleos does support IPv6 🎉

It's possible as we start development work on IPv6 support we can split this in to separate issues for net_plugin support, state_history_plugin support, and http_plugin support. But all cases will require understanding how to resolve the configuration challenge first.

(possibly non-exhaustive) tasks that need to be accomplished:

  • Any configurations that listen on a port (http-server-address, p2p-listen-endpoint, state-history-endpoint, etc) need to be modified to support multiple values.
    • This modification is at odds with the current behavior where one can set these to the empty string to disable listening. Some solution to the configuration scheme needs to be found to accommodate this case.
  • For these listen endpoints, they should accept four different kinds of configuration
    1. IPv4 address & port: 10.1.2.3:9876
    2. IPv6 address & port: [2607:f8b0:4004:806::2004]:9876 I'm doubtful explicit scope support is needed?
    3. hostname & port: foo.example.com:9876, in this case I believe the expectation is that the plugin resolves the hostname and listens on all addresses it resolved. A perfect example is localhost:9876 which should listen on both 127.0.0.1:9876 and [::1]:9876
      It's also possible that instead of "listens on all addresses it resolved" it should listen only on the first IPv6 & IPv4 address it resolved.
      Probably should reflect some on expected behavior here and what other tools do.
    4. wildcard & port (needed? expected?): *:9876 This is a shorthand for not having to specify both 0.0.0.0:9876 and [::]:9876 when wanting to listen from everywhere. Implementation can decide whether this warrants two listening sockets or utilization of IPv4 in IPv6 sockets.
  • Any defaults of 127.0.0.1:8888 or such need to be changed to localhost:8888 to ensure both IPv4 & IPv6 connections to it are possible.
  • Outgoing connections from p2p plugin that are via hostnames may consider roundrobining through the resolved addresses. This is to ensure if there is both IPv6 & IPv4 records and IPv6 connectivity is busted that eventually the connection will be tried through IPv4.
  • http_client_plugin, which expects the entire lookup & HTTP request to complete in a very small amount of time (sub 5ms), probably continues to only try to connect to the first resolved address (whichever it gets: IPv6 or IPv4).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request 👍 lgtm OCI Work exclusive to OCI team tech debt
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

4 participants