给定单个公共IP地址(对等体A)和许多其他公共IP地址列表(IPv4和IPv6地址的混合),最简单的方法是将对等体A匹配{{1的IP地址最近的对等体没有让对等体手动相互ping通以进行延迟基准测试?
我认为这可能是使用带有一堆复杂查询的BGP(也许还有一些涉及OSPF的东西),但我希望可能有一个解决方案或库可以让它像下面的理论函数调用一样简单。
n
我应该只使用MaxMind的GeoIP数据库+ Haversine / Vincenty的本地实例,还是通过库(在需要时使用适当的缓存)来实现这一点是否切实可行?
似乎这种代码可能存在于开源的任播路由实现中,尽管我还没有找到适合这种用例的任何东西。
解决方案或建议的库不必在node.js上工作 - 任何语言都可以。
答案 0 :(得分:9)
安装https://github.com/runk/node-maxmind
从http://dev.maxmind.com/geoip/geoip2/geolite2/
下载'GeoLite2-City.mmdb'awk '{a[FNR]=$0}
END{print FILENAME;print a[1];print a[FNR-1];print a[FNR]}' /path/*.log
答案 1 :(得分:4)
在我阅读时,您的问题比Javascript / WebRTC用例更为通用。
关于类似的事情:“鉴于P2P网络,以及了解所有连接对等体的中央服务器,这是可用于配对它们的最佳指标吗?”。
=>作为配对两个任意节点的良好度量将是它们之间的跳距。问题是该值无法计算(您只能猜测ISP路由器将在节点之间选择哪条路径)。
如何近似呢?
<强> 1。使用地理距离作为跳距的近似值
在那种情况下,你已经完成了很多工作。使用任何“ip to latlng”服务即可完成。
<强> 2。尝试通过映射互联网来猜测实际的跳距
我发现了一篇关于该主题的论文,可能对您有用。你不妨在他们的参考资料上挖掘一下,找回以前关于同一主题的论文:
估算任意主机对之间的跳距 http://nowak.ece.wisc.edu/infocom09.pdf
摘要 - 建立清晰及时的互联网图景 拓扑因许多因素而变得复杂,包括巨大的尺寸 和基础设施的动态性质。在本文中,我们描述 估算重要特征的方法 Internet拓扑 - 任意对之间的跳距 终端主机我们的目标是开发成对的方法 跳跃距离估计是准确的,可扩展的,及时的 不需要重要的测量基础设施。我们的 方法论是基于部署一小部分具有里程碑意义的 在彼此之间使用traceroute类探针的节点 建立一组精确的成对跳跃距离。地标 节点还配置为收集源IP地址和 来自被动监控的网络数据包流量的TTL值。 我们开发了一种新颖的多维缩放算法 可以应用于被动和主动测量 生成所有观察到的成对跳跃距离估计 源主机地址。然后将基本算法增强到 考虑源主机的自治系统成员资格 BGP路由信息。我们调查了我们的能力 使用一组合成网络拓扑的估计算法。 结果表明,我们的方法可以生成高度准确 在一系列网络规模上的成对跳距估计 和配置,以及具有里程碑意义的基础设施规模。
答案 2 :(得分:2)
查找最近对等点的最简单方法是向每个对等方发送一个echo请求,并测量获取响应所需的时间,如ping。