为什么中继负载差异很大

Tor 管理整个网络的带宽。对大多数中继来说,它运作良好。 但 Tor 的目标与 BitTorrent 等协议不同。 Tor 想要低延迟的网页,需要较快的连接和动态余量。 BitTorrent 想要大量下载,这就需要使用所有的带宽。

我们正在开发新的带宽扫描程序 ,更容易理解和维护。 它可对未测量或测量值较低的中继进行诊断。

Tor 为什么需要带宽扫描程序?

大多数供应商会告诉你本地连接的最大速度。 但是 Tor 用户来自世界各地,而且用户随机地连接 1 或2 个守卫中继。 所以,我们需要知道每个中继能连接到全世界的速度。

因此,即使所有中继运营者将其播放带宽设置为本地连接速度,仍需带宽管理机构来平衡互联网不同部分之间的负载。

正常的中继负载是多少?

正常情况下,大多数中继的负载使用 30%-80% 的容量。 这对客户端是有益的:过载中继延迟较高。 (我们希望有足够的中继,并且每个中继的负载是带宽的 10%。这样,Tor 的速度就将和普通互联网一样快)。

有时,中继变慢是因为它的处理器慢或者是连接受到了限制。 有时是因为网络太慢:中继与大多数其他 Tor 中继的对等连接不好,或者距离太远。

找出限制中继的原因

很多事情会减慢中继的速度。下面是如何查明原因。

系统限制

  • 检查中继的内存、CPU 和套接/文件描述符的使用情况

启动时 Tor 记录其中一些信息。其他的可以使用 top 或者类似工具查看。

服务商限制

  • 检查你的中继提供商到其他中继的互联网对等连接(带宽、延迟)。 通过 Comcast 传输的中继有时会变得比较慢。 北美和西欧以外的中继通常比较慢。

Tor 网络限制

中继带宽可以被中继自身观测的带宽,或被目录管理机构测量的带宽限制。 以下是如何找出哪种测量值限制了中继:

  • consensus-health(大页面)上检查对中继的每一个投票,并检查中值。 如果中继没有被一些目录管理机构标记为“Running”:
    • 是否有错误的 IPv4 或 IPv6 地址?
    • 它的 IPv4 或 IPv6 地址是否从某些网络不可连接?
    • 它的 IPv4 地址上是否有 2 个以上的中继?

否则,请检查中继的观测带宽和带宽速率(限制)。 在Metrics上查找中继。 然后,将鼠标移到带宽标题上,查看观测到的带宽和中继带宽速度。

可以参考以下较具体的案例:共识权重下降出口中继的上升速度

如何解决

这些数字中的最小值限制了分配给中继的带宽。

  • 如果是带宽速率问题,在 torrc 中增加 BandwidthRate/Burst 或者 RelayBandwidthRate/Burst。
  • 如果是观测带宽,那么除非看到自身变快,中继不会要求更多带宽。 你需要弄清楚为什么很慢。
  • 如果是中值测量的带宽,从大多数的带宽管理机构来看,你的中继较慢。 你需要弄清楚为什么测量值较低。

对中继进行自测

如果你的中继认为它很慢,或者带宽管理机构认为它很慢,可自己测试带宽:

  • 使用 Tor 运行测试,以查看在您的网络上 Tor 可以达到多快

    为此,你需要配置一个Tor客户端,将你的中继作为入口使用。 如果你的中继只有Guard标志,请在torrc文件中使用您的中继指纹设置EntryNodes。 如果你的中继没有 Guard 标志或者它具有 GuardExit 标志,你不能将您的中继设置为入口节点(请参阅https://gitlab.torproject.org/tpo/core/tor/-/issues/22204),但是即使它不是桥接器,你仍然可以将其设置为桥接器。 要将你的中继设置为桥接模式,请在你的 torrc 文件中添加以下内容:

    Bridge <ip>:<port>
    UseBridge 1
    

    然后使用您的 SocksPort 作为 socks 代理下载一个大文件。 为此,您可以使用curl,例如:

    curl https://target/path --proxy socks5h://<user>:<password>@127.0.0.1:<socks-port>
    

    使用不同的user/password可以确保不同的线路。你可以使用$RANDOM

    这将使你了解你的中继可以承受多少流量。

    或者,您可以运行 relay_bw 来测试您的中继器,使用 2 跳线路,类似于 sbws 的方式。

  • 使用 Tor 和 chutney运行一个测试,以了解 Tor 在您的 CPU 上可以达到多快。 不断增加数据量,直到带宽停止增长。