Pilih node terdekat di jaringan



Latensi jaringan memiliki dampak signifikan pada kinerja aplikasi atau layanan yang berinteraksi dengan jaringan. Semakin sedikit latensi, semakin tinggi kinerjanya. Ini berlaku untuk layanan jaringan apa pun, mulai dari situs biasa dan diakhiri dengan database atau penyimpanan jaringan.

Contoh yang baik adalah sistem nama domain (DNS). DNS pada dasarnya adalah sistem terdistribusi, yang simpul-simpulnya tersebar di seluruh planet ini. Untuk hanya pergi ke situs mana pun, Anda harus terlebih dahulu mendapatkan alamat IP-nya.

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

Jadi dari mana mendapatkan alamat DNS resolver?

  1. ISP memberikan alamat penyelesai DNS-nya.
  2. Temukan alamat penyelesai publik di Internet.
  3. Angkat sendiri atau gunakan router bawaan di rumah Anda.

Salah satu dari opsi ini akan memungkinkan Anda menikmati berselancar riang di World Wide Web, tetapi jika Anda perlu mengubah sejumlah besar domain menjadi IP, maka pilihan resolver harus didekati dengan lebih hati-hati.

Seperti yang sudah saya tulis, selain resolver dari penyedia Internet, ada banyak alamat publik, misalnya, Anda dapat menemukan daftar ini di sini. Beberapa dari mereka mungkin jauh lebih disukai karena mereka memiliki konektivitas jaringan yang lebih baik daripada resolver default.

Ketika daftar kecil, Anda dapat dengan mudah "ping" dengan tangan Anda dan membandingkan waktu penundaan, tetapi bahkan jika Anda mengambil daftar yang disebutkan di atas, pelajaran ini sudah menjadi tidak menyenangkan.

Oleh karena itu, untuk memudahkan tugas ini, saya, yang penuh dengan sindrom penipu, membuat sketsa pembuktian konsep gagasan saya saat bepergian yang disebut semakin dekat .

Sebagai contoh, saya tidak akan memeriksa seluruh daftar resolver, tetapi membatasi diri 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 resolver untuk diri saya sendiri, saya membatasi diri untuk memeriksa alamat utama (1.1.1.1, 8.8.8.8, 9.9.9.9), karena mereka begitu indah, dan apa yang diharapkan dari alamat cadangan yang jelek.

Tetapi karena ada cara otomatis untuk membandingkan penundaan, mengapa tidak memperluas daftar ...

Seperti yang ditunjukkan dalam tes, alamat "cadangan" Cloudflare lebih cocok untuk saya, karena macet di spb-ix, yang jauh lebih dekat dengan saya daripada msk-ix, di mana 1.1.1.1 yang indah macet

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

Selain ping sederhana, PoC juga memiliki kemampuan untuk membandingkan penundaan menggunakan protokol lain, seperti http dan tcp, serta waktu yang diperlukan untuk mengkonversi domain ke IP melalui resolver tertentu.

Paket memiliki tugas membandingkan jumlah node antara host menggunakan traceroute, sehingga lebih mudah untuk menemukan host yang ada jalur yang lebih pendek.

Kode ini mentah, tidak ada tumpukan yang cukup, tetapi berfungsi cukup baik pada data bersih. Saya akan berterima kasih atas umpan balik, bintang di github , dan jika ada yang menyukai ide proyek, maka selamat datang ke kontributor.

Source: https://habr.com/ru/post/id451866/


All Articles