Memilih nod terdekat dalam rangkaian

Memilih nod terdekat dalam rangkaian

Kependaman rangkaian mempunyai kesan yang besar terhadap prestasi aplikasi atau perkhidmatan yang berinteraksi dengan rangkaian. Semakin rendah kependaman, semakin tinggi prestasinya. Ini adalah benar untuk mana-mana perkhidmatan rangkaian, daripada tapak web biasa kepada pangkalan data atau storan rangkaian.

Contoh yang baik ialah Sistem Nama Domain (DNS). DNS secara semula jadi adalah sistem teragih, dengan nod akar bertaburan di seluruh planet. Untuk hanya mengakses mana-mana tapak web, anda perlu mendapatkan alamat IPnya terlebih dahulu.

Saya tidak akan menerangkan keseluruhan proses melalui "pokok" zon domain secara rekursif, tetapi akan menghadkan diri saya kepada fakta bahawa untuk menukar domain kepada alamat IP, kami memerlukan penyelesai DNS yang akan melakukan semua kerja ini untuk kami.

Jadi, di manakah anda mendapatkan alamat penyelesai DNS?

  1. ISP menyediakan alamat penyelesai DNSnya.
  2. Cari alamat penyelesai awam di Internet.
  3. Ambil sendiri atau gunakan yang terbina dalam penghala rumah anda.

Mana-mana pilihan ini akan membolehkan anda menikmati melayari tanpa beban di World Wide Web, tetapi jika anda mempunyai keperluan untuk menukar sejumlah besar domain kepada IP, maka anda harus mendekati pilihan penyelesai dengan lebih berhati-hati.

Seperti yang telah saya tulis, sebagai tambahan kepada penyelesai ISP, terdapat banyak alamat awam, sebagai contoh, anda boleh menyemak senarai ini. Sesetengah daripada mereka mungkin lebih disukai kerana mereka mempunyai sambungan rangkaian yang lebih baik daripada penyelesai lalai.

Apabila senarai kecil, anda boleh dengan mudah "ping" secara manual dan membandingkan masa tunda, tetapi jika anda mengambil senarai yang disebutkan di atas, maka tugas ini menjadi tidak menyenangkan.

Oleh itu, untuk memudahkan tugas ini, saya, yang dipenuhi dengan sindrom penipu, melakar bukti konsep idea saya di Go yang dipanggil mendekatkan diri.

Sebagai contoh, saya tidak akan menyemak keseluruhan senarai penyelesai, tetapi akan mengehadkan diri saya kepada senarai yang paling popular sahaja.

$ 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 satu masa, apabila saya memilih penyelesai untuk diri saya sendiri, saya mengehadkan diri saya kepada hanya menyemak alamat utama (1.1.1.1, 8.8.8.8, 9.9.9.9) - lagipun, ia sangat cantik, dan apa yang boleh anda harapkan daripada alamat sandaran hodoh.

Tetapi memandangkan terdapat cara automatik untuk membandingkan kelewatan, mengapa tidak mengembangkan senarai...

Seperti yang ditunjukkan oleh ujian, alamat Cloudflare "sandaran" lebih sesuai untuk saya, kerana ia dipalamkan ke spb-ix, yang lebih dekat dengan saya daripada msk-ix, yang mempunyai 1.1.1.1 yang cantik dipasang ke dalamnya

Perbezaannya, seperti yang anda lihat, adalah ketara, kerana walaupun sinar cahaya terpantas tidak dapat dicapai dari St. Petersburg ke Moscow dalam masa kurang daripada 10 ms.

Selain ping mudah, PoC juga mempunyai peluang untuk membandingkan kelewatan untuk protokol lain, seperti http dan tcp, serta masa untuk menukar domain kepada IP melalui penyelesai tertentu.

Terdapat rancangan untuk membandingkan bilangan nod antara hos menggunakan traceroute untuk memudahkan mencari hos yang mempunyai laluan yang lebih pendek kepada mereka.

Kod ini kasar, ia tidak mempunyai banyak pemeriksaan, tetapi ia berfungsi dengan baik pada data bersih. Saya akan menghargai sebarang maklum balas, bintangkan github, dan jika sesiapa menyukai idea projek itu, maka dialu-alukan untuk menjadi penyumbang.

Sumber: www.habr.com

Tambah komen