Chọn các nút gần nhất trong mạng

Chọn các nút gần nhất trong mạng

Độ trễ mạng có tác động đáng kể đến hiệu suất của các ứng dụng hoặc dịch vụ tương tác với mạng. Độ trễ càng thấp thì hiệu suất càng cao. Điều này đúng với bất kỳ dịch vụ mạng nào, từ trang web thông thường đến cơ sở dữ liệu hoặc bộ lưu trữ mạng.

Một ví dụ điển hình là Hệ thống tên miền (DNS). DNS về bản chất là một hệ thống phân tán, với các nút gốc nằm rải rác trên khắp hành tinh. Để truy cập bất kỳ trang web nào, trước tiên bạn cần lấy địa chỉ IP của nó.

Tôi sẽ không mô tả toàn bộ quá trình đệ quy đi qua “cây” các vùng miền, nhưng sẽ giới hạn ở thực tế là để chuyển đổi một miền thành địa chỉ IP, chúng ta cần một trình phân giải DNS sẽ thực hiện tất cả công việc này cho chúng ta.

Vậy bạn lấy địa chỉ trình phân giải DNS ở đâu?

  1. ISP cung cấp địa chỉ của trình phân giải DNS của nó.
  2. Tìm địa chỉ của một trình phân giải công khai trên Internet.
  3. Hãy tự lấy hoặc sử dụng bộ định tuyến được tích hợp trong bộ định tuyến tại nhà của bạn.

Bất kỳ tùy chọn nào trong số này sẽ cho phép bạn thoải mái lướt web trên World Wide Web, nhưng nếu bạn có nhu cầu chuyển đổi một số lượng lớn tên miền sang IP, thì bạn nên tiếp cận việc lựa chọn trình phân giải cẩn thận hơn.

Như tôi đã viết, ngoài trình phân giải ISP, còn có nhiều địa chỉ công cộng, chẳng hạn, bạn có thể xem danh sách này. Một số trong số chúng có thể thích hợp hơn nhiều vì chúng có kết nối mạng tốt hơn trình phân giải mặc định.

Khi danh sách nhỏ, bạn có thể dễ dàng “ping” nó theo cách thủ công và so sánh thời gian trễ, nhưng nếu bạn thậm chí lấy danh sách được đề cập ở trên, thì nhiệm vụ này đã trở nên khó chịu.

Vì vậy, để làm cho nhiệm vụ này trở nên dễ dàng hơn, tôi, người mắc hội chứng kẻ mạo danh, đã phác thảo một bằng chứng khái niệm về ý tưởng của mình về cờ vây có tên là đến gần hơn.

Ví dụ: tôi sẽ không kiểm tra toàn bộ danh sách các trình phân giải mà sẽ chỉ giới hạn ở những trình phân giải phổ biến nhất.

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

Có một thời điểm, khi tôi đang chọn một giải pháp cho mình, tôi đã hạn chế chỉ kiểm tra các địa chỉ chính (1.1.1.1, 8.8.8.8, 9.9.9.9) - xét cho cùng, chúng rất đẹp và bạn có thể mong đợi điều gì từ địa chỉ sao lưu xấu xí.

Nhưng vì có một cách tự động để so sánh độ trễ, tại sao không mở rộng danh sách...

Như thử nghiệm cho thấy, địa chỉ Cloudflare “dự phòng” phù hợp với tôi hơn, vì nó được cắm vào spb-ix, gần tôi hơn nhiều so với msk-ix, có cái 1.1.1.1 đẹp đẽ cắm vào.

Như bạn có thể thấy, sự khác biệt là rất đáng kể, bởi vì ngay cả tia sáng nhanh nhất cũng không thể đi từ St. Petersburg đến Moscow trong thời gian chưa đầy 10 mili giây.

Ngoài ping đơn giản, PoC còn có cơ hội so sánh độ trễ của các giao thức khác, chẳng hạn như http và tcp, cũng như thời gian chuyển đổi miền sang IP thông qua một trình phân giải cụ thể.

Có kế hoạch so sánh số lượng nút giữa các máy chủ bằng cách sử dụng traceroute để giúp tìm các máy chủ có đường dẫn ngắn hơn đến chúng dễ dàng hơn.

Mã này còn thô sơ, thiếu nhiều bước kiểm tra nhưng nó hoạt động khá tốt trên dữ liệu sạch. Tôi sẽ đánh giá cao bất kỳ phản hồi nào, hãy đánh dấu sao githubvà nếu ai thích ý tưởng của dự án thì hoan nghênh trở thành cộng tác viên.

Nguồn: www.habr.com

Thêm một lời nhận xét