Skip to content

Support BEP-55 Holepunch extension #3705

Closed

Description

@L2501

With more and more people behind NATs due to IPv4 exhaustion and VPNs due to scary letters being connectable is not a given anymore.
BEP-55 Holepunch extension is one attempt to help connectivity.

Other clients supporting BEP-55:

  • µTorrent
  • BitComet
  • libtorrent based (qBitTorrent, Deluge)

Activity

  1. added this to the 5.0.0-beta.1 milestone on Nov 28, 2022
  2. anacrolix commented on May 3, 2023

    @anacrolix
    Contributor

    I've just added support for ut_holepunch to anacrolix/torrent. I'm interested to see how you implement it here. I haven't done it the way libtorrent has it and wonder if I should do something similar.

  3. jawbroken commented on Jul 10, 2023

    @jawbroken

    interesting data from above says that this was supported on 80% of peers back in January. it would be a very valuable addition

  4. ultrasound1372 commented on Sep 6, 2023

    @ultrasound1372

    Does this mean that with the router I have, which doesn't have a port forwarding interface and is definitely NAT, that I just can't use this client at all? I'm unsure if it uses UPNP or not, I know μTorrent definitely works.

  5. anacrolix commented on Sep 6, 2023

    @anacrolix
    Contributor

    You can still use it behind a NAT, it just won't be as effective. You might not notice the difference.

  6. haobohuiying commented on Sep 24, 2025

    @haobohuiying

    想讨论一下bep 55 通信流程疑问:

    1. 在peer protocol 或者DHT 需要peers 通信,怎么知道是不是NAT 转化

    2. 如何知道peer端点的,relay 中继节点。这部分bep 55 没有说明

    3. 个人想法,是在peer 地址中要存储 其relay 节点的信息。
      translate:
      I want to discuss questions about the BEP 55 communication process:

    4. In peer protocol or DHT where peers need to communicate, how do we know if NAT translation is involved?

    5. How do we know the peer's relaying node? This part is not explained in BEP 55.

    6. My personal idea is that the peer address should store the information of its relay node.

  7. added theissue type on Feb 11, 2026
  8. sinnet3000 commented on Jun 7, 2026

    @sinnet3000
    Contributor

    I opened a PR implementing BEP 55: #8884

    Ran it overnight on public torrent swarms (Linux ISOs) across two network setups: CGNAT/double-NAT with native IPv6, and a regular dual-stack home network with open inbound. Got initiator, responder, and relay working against Deluge/libtorrent and qBittorrent. Mac only so far.

    Any feedback on the code is welcome. Would also love to hear from anyone who tests it on Linux or Windows.

  9. Avamander commented on Jun 16, 2026

    @Avamander

    Have you ran any benchmarks with the PR? How big is the improvement?

  10. sinnet3000 commented on Jun 16, 2026

    @sinnet3000
    Contributor

    Have you ran any benchmarks with the PR? How big is the improvement?

    Hello,

    Not really. Benchmarks are difficult because they depend heavily on the swarm, and even the same torrent can produce different results over time as peer availability changes.

    I have been doing manual testing from a CGNAT IPv4 environment and was able to connect to additional peers for both downloading and uploading.

    I also tested from a dual-stack environment with an open incoming port and was able to act as a relay and perform hole punching with additional firewalled peers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions