انتخاب نزدیکترین گره ها در شبکه

انتخاب نزدیکترین گره ها در شبکه

تأخیر شبکه تأثیر قابل توجهی بر عملکرد برنامه ها یا سرویس هایی دارد که با شبکه تعامل دارند. هرچه تأخیر کمتر باشد، عملکرد بالاتری دارد. این برای هر سرویس شبکه، از یک وب سایت معمولی گرفته تا پایگاه داده یا ذخیره سازی شبکه، صادق است.

یک مثال خوب سیستم نام دامنه (DNS) است. DNS طبیعتاً یک سیستم توزیع شده با گره های ریشه در سراسر سیاره پراکنده است. برای دسترسی ساده به هر وب سایتی، ابتدا باید آدرس IP آن را دریافت کنید.

من کل فرآیند عبور بازگشتی را از طریق "درخت" مناطق دامنه توصیف نمی کنم، اما خودم را به این واقعیت محدود می کنم که برای تبدیل یک دامنه به یک آدرس IP، به یک DNS Resolver نیاز داریم که همه این کارها را انجام دهد. ما

بنابراین، آدرس حل کننده DNS را از کجا دریافت می کنید؟

  1. ISP آدرس حل کننده DNS خود را ارائه می دهد.
  2. آدرس یک حل کننده عمومی را در اینترنت پیدا کنید.
  3. خودتان را انتخاب کنید یا از روتر داخلی خود استفاده کنید.

هر یک از این گزینه ها به شما این امکان را می دهد که از گشت و گذار بی دغدغه در شبکه جهانی وب لذت ببرید، اما اگر نیاز به تبدیل تعداد زیادی دامنه به IP دارید، باید با دقت بیشتری به انتخاب یک Resolver بپردازید.

همانطور که قبلاً نوشتم ، علاوه بر حل کننده ISP ، آدرس های عمومی زیادی وجود دارد ، به عنوان مثال ، می توانید این لیست را بررسی کنید. برخی از آنها ممکن است بسیار ارجح تر باشند زیرا اتصال شبکه بهتری نسبت به حل کننده پیش فرض دارند.

وقتی لیست کوچک است، می توانید به راحتی آن را به صورت دستی "پینگ" کنید و زمان های تاخیر را مقایسه کنید، اما اگر حتی لیست ذکر شده در بالا را انتخاب کنید، این کار ناخوشایند می شود.

بنابراین، برای آسان‌تر کردن این کار، من که با سندرم فریبنده پر شده بودم، یک اثبات مفهوم ایده خود را در 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 است که 1.1.1.1 زیبا را به آن وصل کرده است.

تفاوت، همانطور که می بینید، قابل توجه است، زیرا حتی سریع ترین پرتو نور نمی تواند از سن پترزبورگ به مسکو در کمتر از 10 میلی ثانیه برسد.

علاوه بر پینگ ساده، PoC امکان مقایسه تاخیر برای پروتکل های دیگر مانند http و tcp و همچنین زمان تبدیل دامنه ها به IP را از طریق یک Resolver خاص دارد.

برنامه‌هایی برای مقایسه تعداد گره‌ها بین میزبان‌ها با استفاده از traceroute وجود دارد تا یافتن میزبان‌هایی که مسیر کوتاه‌تری به آن‌ها دارند آسان‌تر شود.

کد خام است، فاقد یک سری چک است، اما روی داده های تمیز کاملاً خوب کار می کند. من از هر گونه بازخوردی قدردانی می کنم، ستاره ها githubو اگر کسی ایده این پروژه را دوست داشت، خوش آمدید که یک مشارکت کننده باشید.

منبع: www.habr.com

اضافه کردن نظر