为什么您的 Tor 中继速度可能很慢,以及如何提高其性能
If your Tor relay seems slow or under-utilized, there are several possible causes - from system limits to network peering to Tor's own bandwidth measurements - and practical steps you can take to diagnose and improve its speed.
中继负载变化原因
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。 If your relay doesn't have Guard flag or it has Guard and Exit flags, you can't set your relay as an entry node (see https://gitlab.torproject.org/tpo/core/tor/-/work_items/22204), but you can set it as your bridge, even if it is not a bridge. 如果要将您的中继设置为网桥模式,请在您的 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 上有多快。 不断增加数据量,直到带宽停止增加。