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

Create a platform design proposal for internal ip address as configuration. #16149

Open
edward-swirldslabs opened this issue Oct 24, 2024 · 0 comments
Labels
Platform Tickets pertaining to the platform

Comments

@edward-swirldslabs
Copy link
Contributor

From a discussion between @nathanklick, @rbair23, @jasperpotts, @anthony-swirldslabs, and @edward-swirldslabs, we need to create a way for nodes to specify the following through node-specific configuration:

  1. Which network interfaces and ports the node should bind to for gossip endpoints and possible other incoming traffic.
  2. IP Address and Port overrides for other nodes in the network.

(1) is needed when a device may have multiple network interfaces but a running node should bind to a specific interface to receive incoming traffic.
(2) is needed to provide alternate network endpoints for nodes that may be in the same private or local network and the network routers are not setup to hairpin network traffic from an external ip address to a local ip address.

The above came out of a discussion about our shift away from the config.txt format on disk for platform address books and to our use of the Roster format. Config.txt has fields for 1 internal and 1 external ip address and port. The Roster format supports a list (upto 10) of ServiceEndpoints with no distinction between internal and external. From our discussion, the external ip addresses should be tried round robin, in order, until a successful connection is established. There may be multiple external ip addresses for different types of network endpoints, IPv4, IPv6, DNS, etc.

Currently our code is storing the internal and external ip address from config.txt in the list of service endpoints in the roster entry for the node. We are connecting to only the external endpoint.

Part of changing this behavior will require a HIP to change the comments on the protobuf of the roster fields and introduce the node configuration for modifying and overriding the network settings and address book.

@edward-swirldslabs edward-swirldslabs added the Platform Tickets pertaining to the platform label Oct 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Platform Tickets pertaining to the platform
Projects
None yet
Development

No branches or pull requests

1 participant