Skip to content

[BOUNTY] Explore OpenSSL support in the TLS security transport #7150

@Stebalien

Description

@Stebalien

The need in brief

Currently, the SECIO transport supports using OpenSSL for the RSA . This can significantly improve performance as OpenSSL is highly optimized.

Now that we're switching to TLS, it would be nice to explore OpenSSL support in go-libp2p-tls.

Deliverable

  1. A feature in go-libp2p-tls transport that enables OpenSSL support using go-openssl (behind an "openssl" build flag). See tls: support OpenSSL libp2p/go-libp2p#1539.
  2. Any additional unit tests needed to ensure that this feature actually works.
  3. Testground benchmarks comparing the OpenSSL implementation and the Go TLS implementation. Specifically, the benchmarks must compare:
    • Handshake latency.
    • Handshake throughput (how many handshakes can we complete in N second).
    • Connection latency (ping time).
    • Connection throughput.

Requirements

  • This feature must be interoperable with go-libp2p's and rust-libp2p's current TLS transports.
  • This feature must implement the libp2p TLS handshake as defined in the spec.

Non-requirement: While the described feature should be as fast as possible, it may not have higher overall throughput than go's built in TLS implementation, due to CGO overhead. If that turns out to be the case, but it looks like OpenSSL's handshake throughput is significantly higher than Go's, we may create an additional bounty to use OpenSSL for the handshake only.

Guidelines

  • Please use the IPFS Go Contributing Guidelines as your north star — adherence to these guidelines are crucial when it comes to awarding a potential bounty!
  • Please DO NOT bundle a general code refactor with the completion of this bounty!

Metadata

Metadata

Assignees

No one assigned

    Labels

    bountyHas bounty! See https://github.com/ipfs/devgrants/projects/1epickind/enhancementA net-new feature or improvement to an existing feature

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions