You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取服务器间延迟以构建矩阵分解所需的延迟矩阵?

问题背景与需求

我正在尝试构建服务器间的延迟矩阵,用**矩阵分解(matrix factorization)**算法预测P2P网络延迟。这个算法需要约20台服务器(原本考虑用DNS服务器)的相互延迟数据,矩阵结构如下:

ServersDNS1DNS2DNS3...Client 1
DNS10??...ping值
DNS2?0?...ping值
DNS3??0...ping值
............0
Client1ping值ping值ping值

拿到服务器间的延迟数据后,我可以通过让客户端ping所有服务器来补充客户端数据,最终用这个矩阵预测任意两个客户端之间的延迟。但现在我无法直接访问DNS服务器获取它们的互访延迟,不确定能不能用traceroute或DNS递归查询来解决;自己部署20台服务器成本太高,想找可行的替代方案。

可行解决方案

关于traceroute和DNS递归查询的可行性

  • traceroute只能获取从你的节点到目标服务器路径上各跳的延迟,无法直接得到两台DNS服务器之间的端到端延迟,而且很多服务器会过滤ICMP探测包,导致数据不全。
  • DNS递归查询只能得到你的节点到DNS服务器的单向延迟,完全无法获取DNS服务器之间的互访数据,所以这两种方法都不适用。

低成本/零成本获取服务器互访延迟的方案

1. 利用公开网络测量数据集

很多学术机构和网络组织会公开大规模的网络测量数据,比如RIPE Atlas的公开数据集,里面包含大量全球节点之间的延迟、丢包率等数据,你可以筛选出20个符合需求的节点,提取它们的互访延迟来构建矩阵。另外你提到的MIT P2P模拟项目也有配套的公开测量数据,直接复用即可。

2. 申请云服务商免费试用实例

AWS、阿里云、腾讯云等主流云服务商都提供免费的云服务器试用额度,你可以在不同区域申请20个左右的轻量实例,然后在这些实例之间互相执行ping或mtr命令采集延迟数据,完成矩阵构建后销毁实例即可,几乎零成本。

3. 借助志愿者网络测量平台

加入网络测量类的志愿者社区(比如BOINC生态下的相关项目),可以获取志愿者节点之间的延迟数据,或者申请使用社区内的节点进行互测,这类平台的节点分布广泛,能满足你的数据需求。

4. 公共DNS服务器的间接估算(备选)

如果一定要用DNS服务器,你可以找一台能访问多个公共DNS服务器的VPS,从VPS分别ping每个DNS服务器得到单向延迟,然后用双向延迟的平均值(比如VPS到DNS1的延迟为A,到DNS2的延迟为B,近似DNS1到DNS2的延迟为|A-B|或A+B)来估算,但这种方法误差较大,仅适合对精度要求不高的场景。


内容的提问来源于stack exchange,提问作者Seife

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 23:46:01