Memilih node terdekat dalam jaringan

Memilih node terdekat dalam jaringan

Latensi jaringan mempunyai dampak signifikan terhadap kinerja aplikasi atau layanan yang berinteraksi dengan jaringan. Semakin rendah latensinya, semakin tinggi performanya. Hal ini berlaku untuk layanan jaringan apa pun, mulai dari situs web biasa hingga database atau penyimpanan jaringan.

Contoh yang bagus adalah Sistem Nama Domain (DNS). DNS pada dasarnya adalah sistem terdistribusi, dengan node akar tersebar di seluruh planet. Untuk mengakses situs web apa pun, Anda harus mendapatkan alamat IP-nya terlebih dahulu.

Saya tidak akan menjelaskan keseluruhan proses melalui "pohon" zona domain secara rekursif, tetapi saya akan membatasi diri pada fakta bahwa untuk mengubah domain menjadi alamat IP, kita memerlukan pemecah DNS yang akan melakukan semua pekerjaan ini untuk kita.

Jadi, dari mana Anda mendapatkan alamat DNS Resolver?

  1. ISP memberikan alamat pemecah DNS-nya.
  2. Temukan alamat pemecah masalah publik di Internet.
  3. Ambil milik Anda sendiri atau gunakan yang terpasang di router rumah Anda.

Salah satu dari opsi ini akan memungkinkan Anda menikmati penjelajahan tanpa beban di World Wide Web, tetapi jika Anda memiliki kebutuhan untuk mengonversi sejumlah besar domain menjadi IP, maka Anda harus mendekati pilihan penyelesai dengan lebih hati-hati.

Seperti yang sudah saya tulis, selain ISP Resolver, ada banyak alamat publik, misalnya Anda bisa melihat daftar ini. Beberapa di antaranya mungkin lebih disukai karena memiliki konektivitas jaringan yang lebih baik daripada penyelesai default.

Ketika daftarnya kecil, Anda dapat dengan mudah melakukan "ping" secara manual dan membandingkan waktu penundaan, tetapi jika Anda mengambil daftar yang disebutkan di atas, maka tugas ini menjadi tidak menyenangkan.

Oleh karena itu, untuk mempermudah tugas ini, saya, yang dipenuhi dengan sindrom penipu, membuat sketsa bukti konsep ide saya tentang Go yang disebut lebih dekat.

Sebagai contoh, saya tidak akan memeriksa seluruh daftar penyelesai, tetapi saya akan membatasi diri hanya pada yang paling populer.

$ 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]

Pada suatu waktu, ketika saya memilih penyelesai untuk diri saya sendiri, saya membatasi diri hanya untuk memeriksa alamat utama (1.1.1.1, 8.8.8.8, 9.9.9.9) - lagipula, alamat tersebut sangat indah, dan apa yang dapat Anda harapkan darinya alamat cadangan jelek.

Namun karena ada cara otomatis untuk membandingkan penundaan, mengapa tidak memperluas daftarnya...

Seperti yang ditunjukkan oleh pengujian, alamat Cloudflare "cadangan" lebih cocok untuk saya, karena dicolokkan ke spb-ix, yang lebih dekat dengan saya daripada msk-ix, yang memiliki 1.1.1.1 cantik yang dicolokkan ke dalamnya

Perbedaannya, seperti yang Anda lihat, sangat signifikan, karena sinar cahaya tercepat pun tidak dapat menjangkau dari St. Petersburg ke Moskow dalam waktu kurang dari 10 ms.

Selain ping sederhana, PoC juga memiliki kemampuan untuk membandingkan penundaan untuk protokol lain, seperti http dan tcp, serta waktu untuk mengonversi domain ke IP melalui penyelesai tertentu.

Ada rencana untuk membandingkan jumlah node antar host menggunakan traceroute untuk memudahkan menemukan host yang memiliki jalur lebih pendek ke host tersebut.

Kode ini kasar, tidak memiliki banyak pemeriksaan, tetapi berfungsi cukup baik pada data yang bersih. Saya sangat menghargai masukan apa pun, bintangi github, dan jika ada yang menyukai ide proyek ini, silakan menjadi kontributor.

Sumber: www.habr.com

Tambah komentar