争取毫秒。如何选择ping最少的服务器

对于许多任务,客户端和服务器之间的延迟至关重要,例如,在在线游戏,视频/语音会议,IP电话,VPN等中。如果服务器在IP网络级别上离客户端太远,则延迟(通常称为“ ping”,“ lag”)会干扰工作。

服务器的地理邻近度并不总是等于IP路由级别的邻近度。因此,例如,另一个国家的服务器可能比您所在城市的服务器更“靠近”您。都是因为路由和网络功能。 如何选择尽可能接近所有潜在客户的服务器?什么是IP网络连接?如何将客户端定向到最近的服务器?让我们看一下这篇文章。





我们衡量延迟


首先,学习如何测量延迟。这项任务并不像看起来那样简单,因为对于不同的协议和数据包大小,延迟可能会有所不同。您也不会注意到短期现象,例如持续几毫秒的故障。

ICMP-定期ping


我们将使用Unix ping实用程序,它允许您手动设置软件包之间的间隔,而Windows的ping版本不知道这些间隔。这很重要,因为如果数据包之间的停顿时间很长,那么您就看不到它们之间发生了什么。

数据包大小(选项-s)-默认情况下,ping发送大小为64字节的数据包。对于这么小的数据包,大数据包出现的现象可能不会引起注意,因此我们将数据包大小设置为1300字节。

数据包之间的间隔(选项-i)-发送数据之间的时间。默认情况下,数据包每秒发送一次,这会花费很长时间,实际程序每秒发送成百上千个数据包,因此我们将间隔设置为0.1秒。该程序根本不允许这样做。

结果,该命令如下所示:

ping -s 1300 -i 0.1 yandex.ru

这种设计使您可以更真实地看到延迟。

通过UDP和TCP进行Ping


在某些情况下,TCP连接的处理方式与ICMP数据包的处理方式不同,因此,根据协议的不同,测量值可能会有所不同。通常还会发生主机根本不响应ICMP且常规ping不起作用的情况。因此,例如,主机microsoft.com使生命周期延长著名的nmap扫描仪的开发人员提供的nping

实用程序可以生成任何软件包。它也可以用来测量延迟。 由于UDP和TCP在特定端口上工作,因此我们需要“ ping”特定端口。让我们尝试ping TCP 80,即Web服务器端口:


$ sudo nping --tcp -p 80 --delay 0.1 -c 0 microsoft.com

Starting Nping 0.7.80 ( https://nmap.org/nping ) at 2020-04-30 13:07 MSK
SENT (0.0078s) TCP 10.0.0.1:63236 > 13.77.161.179:80 S ttl=64 id=49156 iplen=40  seq=3401731188 win=1480
SENT (0.1099s) TCP 10.0.0.1:63236 > 13.77.161.179:80 S ttl=64 id=49156 iplen=40  seq=3401731188 win=1480
RCVD (0.2068s) TCP 13.77.161.179:80 > 10.0.0.1:63236 SA ttl=43 id=0 iplen=44  seq=1480267007 win=64240 <mss 1440>
SENT (0.2107s) TCP 10.0.0.1:63236 > 13.77.161.179:80 S ttl=64 id=49156 iplen=40  seq=3401731188 win=1480
RCVD (0.3046s) TCP 13.77.161.179:80 > 10.0.0.1:63236 SA ttl=43 id=0 iplen=44  seq=1480267007 win=64240 <mss 1440>
SENT (0.3122s) TCP 10.0.0.1:63236 > 13.77.161.179:80 S ttl=64 id=49156 iplen=40  seq=3401731188 win=1480
RCVD (0.4247s) TCP 13.77.161.179:80 > 10.0.0.1:63236 SA ttl=42 id=0 iplen=44  seq=2876862274 win=64240 <mss 1398>

Max rtt: 112.572ms | Min rtt: 93.866ms | Avg rtt: 101.093ms
Raw packets sent: 4 (160B) | Rcvd: 3 (132B) | Lost: 1 (25.00%)
Nping done: 1 IP address pinged in 0.43 seconds

默认情况下,nping发送4个数据包并停止。-c 0选项允许无限发送软件包。要停止程序,请按Ctrl +C。最后,将显示统计信息。我们看到平均rtt(往返时间)为101ms。

MTR-类固醇的追踪路线


MTR 程序(英语为My Traceroute)是一种高级实用程序,用于跟踪到远程主机的路由。与通常的系统实用程序traceroute(在Windows中是tracert实用程序)不同,它可以向数据包链中的每个主机显示延迟。还知道如何不仅通过ICMP,而且通过UDP和TCP跟踪路由。

$ sudo mtr microsoft.com


(可单击)MTR程序的界面。到microsoft.com的路由跟踪已开始,

MTR立即显示对链中每个主机的ping,此外,程序运行时数据会不断更新,您可以看到短期变化。
屏幕截图显示6号节点上有数据包丢失,但是实际上这并不完全正确,因为某些路由器可能会简单地丢弃具有过期TTL的数据包,而不返回错误响应,因此,此处可以忽略有关数据包丢失的数据。

WiFi vs电缆



该主题与本文并不完全相关,但我认为在延迟的情况下非常重要。我非常喜欢WiFi,但即使有丝毫机会将电缆连接到Internet,也可以使用它。另外,我总是不鼓励人们使用WiFi相机。
如果您玩认真的在线射击游戏,播放视频流,在交易所进行交易:请通过电缆使用Internet。

这是一个视觉测试,用于比较WiFi和电缆连接。这会ping通到WiFi路由器,即甚至没有Internet。(可单击)通过电缆和WiFi对wifi路由器ping的比较 可以看出,WiFi延迟长了1ms,有时有些数据包的延迟长了十倍!这只是很短的时间。在这种情况下,同一路由器会产生小于1ms的稳定延迟。

图片




在上面的示例中,使用2.4GHz的WiFi 802.11n,只有笔记本电脑和电话通过WiFi连接到接入点。如果接入点上有更多客户,结果将更加糟糕。这就是为什么我反对将所有办公计算机都转换为WiFi,如果有机会通过电缆连接它们的原因。

IP连接


因此,我们学习了如何测量到服务器的延迟,并尝试找到离我们最近的服务器。为此,我们可以看到如何安排提供者的路由。为此,使用bgp.he.net服务非常方便,



进入站点时,我们看到我们的IP地址属于自治系统AS42610

查看自治系统的连接图,我们可以看到我们的提供商通过哪些高级提供商与世界其他地区建立了联系。每个点都是可单击的,您可以进入阅读其中的内容。


提供商连接图

使用此工具,您可以了解如何安排任何提供商的渠道,包括托管。查看它直接连接到哪些提供程序。为此,将服务器IP驱动到bgp.he.net搜索并查看其自治系统的图形。您还可以了解一个数据中心或托管服务提供商与另一数据中心或主机提供商之间的关系。

大多数流量交换点提供了一种称为“窥镜”的特殊工具,该工具可让您从交换点上的特定路由器进行ping和traceroute。

例如,MGTS的窥镜

因此,选择一个服务器,我们可以预先了解它从不同流量交换点的外观。并且,如果我们的潜在客户位于某个地理区域内,那么我们可以找到服务器的最佳位置。

选择最近的服务器


我们决定简化为客户找到最佳服务器的过程,并在页面上自动测试最近的位置:RUVDS数据中心
当您进入页面时,脚本会测量从浏览器到每个服务器的延迟,并将它们显示在交互式地图上。当您单击数据中心时,将显示带有测试结果的信息。 该按钮将导致我们所有数据中心的延迟测试页面。要查看测试结果,请单击地图上的数据中心点








All Articles