Skip to content

AutoNATv2 implementation for rust-libp2p #1421

Closed
@umgefahren

Description

@umgefahren

Open Grant Proposal: AutoNATv2 implementation for rust-libp2p

Proposer: @umgefahren - Hannes Furmans

Proposal Category: core-dev

Technical Sponsor: @mxinden - Max Inden

Do you agree to open
source all work you do on behalf of this RFP and dual-license under MIT and APACHE2 licenses?:
Yes

Project description

Since libp2p is adopting the second generation of AutoNAT, namely AutoNATv2, and there is already a go-libp2p implementation under way (libp2p/go-libp2p#2469), it's time to bring those changes to rust-libp2p.

While addressing these new challenges it might be a good time to fix some low-hanging fruits and legacy code on the way, if there is time.

Project value

Implementing these changes is important to keep rust-libp2p up-to-date with the current libp2p spec. The new AutoNAT solves problems of the old one, namely being able to test reachability on one address, bringing value to the libraries users, for instance Iroh. It's also worth pointing out that the the protocol has decreased complexity, which will make maintenance easier.

The implementation will require some changes to core traits (in simple terms Rust interfaces), which means design, migration and coordination time is necessary.

Deliverables

The deliverables are many pull requests to libp2p/rust-libp2p, introducing and merging the promised new features.

If requested there will also be a report at the end reviewing difficulties and lessons learned on the road, to make it easier for the other libp2p implementations to adopt the changes.

Development Roadmap

All of the implementation work is done by Hannes Furmans with technical and project guidance and advice from Max Inden.

Since it's quite hard to estimate how difficult implementing these changes turns out, the milestones are very likely be subject to change.

25 Sep 2023: Proposed date to start

Number Milestone Hours Cost
0 Step 1 of PoC: Adjust Transport::dial 57,33 5.733
1 Step 2 of PoC: Implement AutoNATv2 57,33 5.733
2 Adjust all Transport and NetworkBehaviour implementations 57,33 5.733
Total 172 17.200

Hannes will work on a 10-hour-per-week basis, the project will therefore take about 17 weeks in total.

Hannes will do time tracking and state the time it took to complete a milestone. If there is time left, Hannes will work on different issues around the project, filling the remaining time of the grant.

Total Budget Requested

17200 US-$

No VAT charged.

The grant proposer would suggest a pay-by-milestone deal, since the already described issues in estimation. However, a change in cost won't affect an ongoing milestone. The budget stays predictable.

Maintenance and Upgrade Plans

Since the project is about software there will be maintenance costs. The grant proposer will take part in maintenance efforts, balancing current and future obligations. The grant proposer is willing to commit to maintenance efforts, given apporpriate compensation and bandwith.

Team

Team Members

Team Website

None

Relevant experience

Hannes is a frequent contributor to rust-libp2p. He wrote the Tor transport for rust-libp2p and also build software using rust-libp2p.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions