Skip to content

Fixing Bootstrapping #6797

@Stebalien

Description

@Stebalien

Version information:

v0.5.0-dev

Description:

Libp2p recently increased the minimum RSA key size to 2048 bits. While almost all nodes in the network are using 2048 bit keys already, most of the built-in bootstrap nodes are not.

Luckily, we did have some newer nodes using 2048 bit keys. Specifically, the /dnsaddr/bootstrap.libp2p.io nodes. Unfortunately:

  1. These bootstrappers were added (relatively) recently. Nodes with older configs won't use them.
  2. The DNS record for these bootstrappers was too large: 4 bootstrappers, 4 IP addresses per bootstrapper) to fit into a single UDP packet.

To solve 2, we switched to indirect dnsaddr records: now we have 4 top-level records that each resolve two two dnsaddr records, one for each IP address for each bootstrapper. These records all, individually, fit into single UDP packets.

Unfortunately, go-libp2p doesn't support recursive dnsaddr resolution: libp2p/go-libp2p#744.


So, we need to:

  • Add support for recursive dnsaddr resolution to go-libp2p (Recursive dnsaddr resolution. libp2p/go-libp2p#744).
  • Add a repo migration that:
    • Checks if we already have the new bootstrappers in the config. If so, skip.
    • Checks to see if we have bootstrappers with known sub 2048 bit keys. If not, skip.
    • Otherwise, remove them and replace these old bootstrappers with the new bootstrappers.
    • Replace the /ipfs part of these multiaddrs with /p2p (no reason not to).
  • Test the migration.
  • Update the repo version in go-ipfs.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions