選擇網路中最近的節點

選擇網路中最近的節點

網路延遲對與網路互動的應用程式或服務的效能有重大影響。 延遲越低,效能越高。 對於任何網路服務都是如此,從常規網站到資料庫或網路儲存。

域名系統 (DNS) 就是一個很好的例子。 DNS 本質上是一個分散式系統,根節點遍佈全球。 要簡單地造訪任何網站,您首先需要取得其 IP 位址。

我不會描述遞歸遍歷域區域「樹」的整個過程,但會限制自己的事實,為了將網域轉換為 IP 位址,我們需要一個 DNS 解析器來完成所有這些工作我們。

那麼,要從哪裡取得 DNS 解析器位址呢?

  1. ISP 提供其 DNS 解析器的位址。
  2. 在 Internet 上尋找公用解析器的位址。
  3. 選擇您自己的路由器或使用家庭路由器內建的路由器。

這些選項中的任何一個都可以讓您在萬維網上享受無憂無慮的衝浪,但如果您需要將大量網域轉換為 IP,那麼您應該更加謹慎地選擇解析器。

正如我已經寫過的,除了 ISP 解析器之外,還有很多公共位址,例如,您可以查看此清單。 其中一些可能更可取,因為它們比預設解析器具有更好的網路連接。

當列表很小時,您可以輕鬆地手動「ping」它並比較延遲時間,但如果您甚至拿上面提到的列表,那麼這個任務就會變得不愉快。

因此,為了讓這項任務變得更容易,充滿冒名頂替症候群的我勾勒出了我關於 Go 的想法的概念驗證,稱為 靠近點.

例如,我不會檢查解析器的整個列表,而只會檢查最受歡迎的解析器。

$ get-closer ping -f dnsresolver.txt -b=0 --count=10
Closest hosts:
	1.0.0.1 [3.4582ms]
	8.8.8.8 [6.7545ms]
	1.1.1.1 [12.6773ms]
	8.8.4.4 [16.6361ms]
	9.9.9.9 [40.0525ms]

有一次,當我為自己選擇解析器時,我只檢查主要地址(1.1.1.1、8.8.8.8、9.9.9.9)——畢竟它們是如此美麗,你還能指望什麼呢?醜陋的備份地址。

但既然有一種自動方法來比較延誤,為什麼不擴大列表......

如測試所示,「備份」Cloudflare 位址更適合我,因為它插入了 spb-ix,這比 msk-ix 更接近我,msk-ix 插入了漂亮的 1.1.1.1

正如您所看到的,差異非常顯著,因為即使是最快的光線也無法在 10 毫秒內從聖彼得堡到達莫斯科。

除了簡單的 ping 之外,PoC 還可以比較其他協定(例如 http 和 tcp)的延遲,以及透過特定解析器將域轉換為 IP 的時間。

規劃使用追蹤路由來比較主機之間的節點數量,以便更容易找到到它們的路徑較短的主機。

程式碼很粗糙,缺乏大量檢查,但它在乾淨的數據上運行得很好。 我將不勝感激任何回饋,星星 知乎,如果有人喜歡該項目的想法,那麼歡迎成為貢獻者。

來源: www.habr.com

添加評論