為毫秒而戰。 如何選擇 ping 值最低的伺服器

對於許多任務,客戶端和伺服器之間的延遲至關重要,例如線上遊戲、視訊/語音會議、IP 電話、VPN 等。 如果伺服器在 IP 網路層面距離客戶端太遠,那麼延遲(通常稱為「ping」、「lag」)就會幹擾工作。

伺服器的地理鄰近性並不總是等於 IP 路由層級的鄰近性。 因此,例如,另一個國家/地區的伺服器可能比您所在城市的伺服器距離您「更近」。 這一切都是由於路由和網路建構的特殊性所造成的。

為毫秒而戰。 如何選擇 ping 值最低的伺服器

如何選擇盡可能靠近所有潛在客戶的伺服器? 什麼是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 的開發人員可以產生任何資料包。 它也可以用來測量延遲。
由於 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 - 類固醇追蹤路線

節目 地鐵 My Traceroute 是一個高級實用程序,用於追蹤到遠端主機的路由。 與通常的系統實用程式traceroute(Windows中這是tracert實用程式)不同,它可以顯示封包鏈中每個主機的延遲。 它不僅可以透過 ICMP 追蹤路由,還可以透過 UDP 和 TCP 追蹤路由。

$ sudo mtr microsoft.com

為毫秒而戰。 如何選擇 ping 值最低的伺服器
(可點選)MTR程式介面。 已開始對 microsoft.com 進行路由追蹤

MTR立即顯示對鏈中每個主機的ping,並且資料在程式運行時不斷更新,並且可以看到短期變化。
截圖顯示節點#6有丟包,但事實上這並不完全正確,因為有些路由器可以簡單地丟棄TTL過期的資料包而不回傳錯誤回應,因此這裡可以忽略丟包資料。

WiFi 與電纜

為毫秒而戰。 如何選擇 ping 值最低的伺服器
這個主題與本文並不完全相關,但在我看來,在延誤的情況下它非常重要。 我真的很喜歡 WiFi,但如果我有哪怕一丁點機會用電纜連接到互聯網,我都會使用它。 我也總是勸阻人們不要使用 WiFi 攝影機。
如果您玩嚴肅的線上射擊遊戲、串流影片或在證券交易所進行交易:請透過電纜使用網路。

這是比較 WiFi 和電纜連接的視覺測試。 這是對 WiFi 路由器的 ping,也就是說,還沒有連接到網路。

為毫秒而戰。 如何選擇 ping 值最低的伺服器
(可點擊)透過電纜和 WiFi 對 WiFi 路由器執行 ping 操作的比較

可以看到,透過WiFi,延遲多了1ms,有時有封包的延遲長達十倍! 而這只是很短的一段時間。 同時,同一台路由器產生<1ms的穩定延遲。

在上面的範例中,使用 802.11GHz 的 WiFi 2.4n,僅筆記型電腦和手機連接到 WiFi 接入點。 如果接入點上有更多用戶端,結果會更糟。 這就是為什麼我非常反對將所有辦公室電腦切換到 WiFi(如果可以透過電纜連接)。

IP連線

所以,我們已經學會了測量伺服器的延遲,讓我們試著找出離我們最近的伺服器。 為此,我們可以看看提供者的路由是如何運作的。 使用此服務很方便 bgp.he.net

為毫秒而戰。 如何選擇 ping 值最低的伺服器

當我們造訪該網站時,我們看到我們的IP位址屬於自治系統 更多款式.

透過查看自治系統的連接圖,我們可以看到我們的提供者透過哪些更高層級的提供者連接到世界其他地方。 每個點都是可點擊的,您可以進去查看它是什麼類型的提供者。

為毫秒而戰。 如何選擇 ping 值最低的伺服器
提供者自治系統的連線圖

使用此工具,您可以研究任何提供者的管道(包括託管)的結構。 查看它直接連接到哪些提供者。 為此,您需要在搜尋 bgp.he.net 中輸入伺服器的 IP 位址,並查看其自治系統的圖表。 您也可以了解一個資料中心或託管提供者如何連接到另一個資料中心或託管提供者。

大多數流量交換點都提供一種稱為「Looking Glass」的特殊工具,它允許您從交換點的特定路由器進行 ping 和追蹤路由。

在這裡,例如, 鏡子 來自 MGTS

所以,在選擇伺服器的時候,我們可以提前看看從不同的流量交換點來看它會是什麼樣子。 如果我們的潛在客戶位於某個地理區域,我們可以找到伺服器的最佳位置。

選擇最近的伺服器

我們決定簡化為客戶尋找最佳伺服器的過程,並建立了一個自動測試附近位置的頁面: RUVDS 資料中心.
當您造訪頁面時,腳本會測量從瀏覽器到每個伺服器的延遲並將其顯示在互動式地圖上。 當您按一下資料中心時,將顯示帶有測試結果的資訊。

為毫秒而戰。 如何選擇 ping 值最低的伺服器

為毫秒而戰。 如何選擇 ping 值最低的伺服器

該按鈕會將您帶到我們所有資料中心的延遲測試頁面。 若要查看測試結果,請點選地圖上的資料中心點

為毫秒而戰。 如何選擇 ping 值最低的伺服器

來源: www.habr.com

添加評論