Cái gì là any anyật tinh và nó hữu ích như thế nào?


85

Tôi chưa bao giờ nghe về anycast cho đến vài giây trước khi tôi đọc " Một số thủ thuật mạng / máy chủ thú vị hoặc hữu ích là gì? ".

Bài viết " Anycast " trên wikipedia khá chính thức và không thực sự gợi lên một bức tranh tinh thần về cách nó sẽ được sử dụng.

Ai đó có thể giải thích trong một vài câu không chính thức "anycast" là gì, cách bạn định cấu hình nó (chỉ theo nghĩa chung) và lợi ích của nó là gì (nó giúp gì dễ dàng hơn)?

Câu trả lời:


88

Anycast là kỹ thuật kết nối mạng trong đó cùng một tiền tố IP được quảng cáo từ nhiều vị trí. Sau đó, mạng sẽ quyết định vị trí nào để định tuyến yêu cầu của người dùng, dựa trên chi phí giao thức định tuyến và có thể là 'sức khỏe' của các máy chủ quảng cáo.

Có một số lợi ích cho anycast. Đầu tiên, ở trạng thái ổn định, người dùng dịch vụ anycast (DNS là một ví dụ tuyệt vời) sẽ luôn kết nối với máy chủ DNS 'gần nhất' (từ phối cảnh giao thức định tuyến). Điều này giúp giảm độ trễ, cũng như cung cấp mức độ cân bằng tải (giả sử rằng người tiêu dùng của bạn được phân phối đều trên mạng của bạn).

Một ưu điểm khác là dễ quản lý cấu hình. Thay vì phải định cấu hình các máy chủ DNS khác nhau tùy thuộc vào nơi máy chủ / máy trạm được triển khai (Châu Á, Châu Mỹ, Châu Âu), bạn có một địa chỉ IP được định cấu hình ở mọi vị trí.

Tùy thuộc vào cách thức anycast được thực hiện, nó cũng có thể cung cấp mức độ sẵn sàng cao. Nếu quảng cáo của tuyến anycast có điều kiện trên một loại kiểm tra sức khỏe nào đó (ví dụ: truy vấn DNS cho một tên miền nổi tiếng, trong ví dụ này), thì ngay khi máy chủ bị lỗi tuyến đường có thể bị xóa. Sau khi kết nối lại mạng, các yêu cầu của người dùng sẽ được chuyển tiếp liên tục đến phiên bản DNS gần nhất tiếp theo mà không cần bất kỳ sự can thiệp hoặc cấu hình lại thủ công nào.

Một lợi thế cuối cùng là quy mô ngang; nếu bạn thấy rằng một máy chủ đang bị tải quá mức, chỉ cần triển khai một máy chủ khác ở một vị trí sẽ cho phép nó chiếm một phần tỷ lệ yêu cầu của máy chủ bị quá tải. Một lần nữa, vì không cần cấu hình máy khách, điều này có thể được thực hiện rất nhanh.


Anycast có sử dụng nhiều băng thông hơn so với unicast không? Hãy tưởng tượng chúng ta có một ngàn máy chủ chia sẻ cùng một địa chỉ IP, khi chúng ta gửi một gói đến địa chỉ đó , liệu nó có chiếm nhiều băng thông hơn so với việc không sử dụng không?
Pacerier

5
Không - lưu lượng được gửi đến một địa chỉ anycast sẽ chỉ đến một địa điểm quảng cáo địa chỉ đó. Bạn có thể nghĩ về phát đa hướng , trong đó các gói được gửi đến một địa chỉ nhóm phát đa hướng được gửi đến tất cả các máy chủ quan tâm đến nhóm đó.
Murali Suriar

Không phải vấn đề " Thay vì phải cấu hình các máy chủ DNS khác nhau tùy thuộc vào nơi máy chủ / máy trạm được triển khai " được giải quyết bằng tên miền? Vì vậy, điểm của anycast là gì khi chỉ cần sao chép tên miền đang làm gì?
Pacerier

1
@Pacerier - bạn không thể sử dụng tên miền để tìm máy chủ DNS của mình - đó là một phụ thuộc vòng tròn. Ví dụ: cấu hình dns.foo.com. là máy chủ DNS của bạn. Địa chỉ IP nào tôi gửi yêu cầu đến dns.foo.com đến? Tôi biết, tôi sẽ tìm nó trong DNS. vv
Murali Suriar

32

Một trong những điều thường làm tôi bối rối khi hiểu "anycast" là, trong khi đó là một thuật ngữ cấp cao, trong thực thi thực tế, nó thường nắm rõ hai ví dụ:

  1. Bộ định tuyến sử dụng BGP để quảng cáo cùng một khối IP thông qua nhiều đường dẫn AS như một cách thô sơ để hướng người dùng đến một trang web "gần hơn". Đồng thời, nó cung cấp khả năng chuyển đổi dự phòng gần như minh bạch cho các trang web khác bằng cách rút lại các tuyến đường từ một trang web gặp khó khăn. Điều này có thể hữu ích cho gần như bất kỳ giao thức nào, mặc dù rõ ràng nó gây ra nhiều lo ngại về đồng bộ hóa dữ liệu phụ trợ.

  2. Quảng cáo cùng một IP dịch vụ từ nhiều điểm trong mạng riêng của bạn (thông qua định tuyến tĩnh , OSPF , EIGRP hoặc bất cứ điều gì). Nếu các tuyến có trọng số khác nhau, nó hoạt động như một cơ chế chuyển đổi dự phòng. Nếu các tuyến có trọng số đồng đều, nó có thể tận dụng khả năng cân bằng tải trên mỗi gói hoặc mỗi luồng của hầu hết các bộ định tuyến của nhà cung cấp tên thương hiệu. Bạn phải cẩn thận rằng giao thức lớp ứng dụng thoải mái với điều này, đó là lý do tại sao bạn hầu như luôn nghe thấy nó được sử dụng với DNStrong đó một yêu cầu luôn là một gói và mọi thứ đều không trạng thái. Cá nhân, tôi xem đây là một sự xâm nhập của các lớp ứng dụng vào lớp mạng khi sự kết hợp giữa DNS và các bộ cân bằng tải thích hợp sẽ luôn luôn là một giải pháp tốt hơn.


+1 để đề cập đến một gói và trạng thái không trạng thái
nponeccop

3
vấn đề với DNS là người ta có thể sử dụng google hoặc một số trình phân giải từ xa khác và máy chủ gần nhất để phân giải có thể khác với người dùng. Tất nhiên, điều này chỉ hợp lệ với anycast là không sử dụng DNS (ví dụ: tcp anycast hoặc sử dụng khác).
akostadinov

@cagenut, HTTP có bị hỏng trong trường hợp cân bằng tải trên mỗi gói không (do trọng lượng thậm chí là khác)?
Pacerier

16

Chủ yếu được sử dụng cho các dịch vụ dựa trên UDP như DNS. Về cơ bản, bạn thông báo cùng một tuyến trong số nhiều trung tâm dữ liệu trên toàn thế giới. Bằng cách này, khách hàng của bạn sẽ được gửi đến trung tâm dữ liệu "tốt nhất" và "gần nhất" dựa trên các tuyến đường BGP. Tôi đặt "tốt nhất" và "gần nhất" trong dấu ngoặc kép vì các nhà cung cấp mạng có thể chơi trò chơi và định tuyến lưu lượng truy cập từ các mạng nhất định khác nhau. Nói chung, mọi thứ hoạt động tốt nhất với anycast, nhưng đó không phải là một sự đảm bảo.

Một ví dụ về điều này sẽ là liệt kê các máy chủ DNS của bạn là 1.2.3.4 và 1.2.3.5. Các bộ định tuyến của bạn sẽ thông báo một tuyến đường cho 1.2.3 / 24 trong số nhiều trung tâm dữ liệu. Nếu bạn ở Nhật Bản và có một trung tâm dữ liệu ở đó, rất có thể bạn sẽ kết thúc ở đó. Nếu bạn ở Mỹ, bạn sẽ được gửi đến trung tâm dữ liệu tại Hoa Kỳ. Một lần nữa, nó dựa trên định tuyến BGP chứ không phải định tuyến địa lý thực tế, nhưng đó thường là cách mọi thứ bị phá vỡ.


1
Làm thế nào để tránh xung đột sau đó?
Pacerier

Tôi không chắc ý của bạn là gì khi xung đột. BGP không thực sự cho phép xung đột. Nó chỉ chọn một tuyến đường. Một vấn đề (thường bị bỏ qua) với anycast là hợp pháp. Về mặt kỹ thuật, anycasting được bao phủ bởi các bằng sáng chế khác nhau. Không ai thực thi điều này, nhưng các loại lưu lượng khác nhau (CDN, DNS, TCP so với UDP) được bảo vệ bởi các bằng sáng chế khác nhau. Đoạn này nên được bao phủ bằng IANAL.
diq

Vậy ý bạn là những dịch vụ ip2location đó không chính xác? Bởi vì không có vị trí chính thức cho một IP và nó có thể ở bất cứ đâu tùy thuộc vào máy tính BGP mà bạn nói chuyện?
Pacerier

9

Theo phản hồi ban đầu của tôi, tôi vừa đăng thêm hai bài viết trên blog của mình có tên: Anycast DNS - Phần 3, Sử dụng RIP và Anycast DNS - Phần 3, Sử dụng RIP (tiếp theo). Phần sau sẽ đi sâu vào chi tiết hơn, nhưng tại www.netlinxinc.com/netlinx-blog.html bạn sẽ tìm thấy các công thức thực tế về cách định cấu hình bộ định tuyến của Cisco và phần mềm định tuyến dựa trên máy chủ Quagga mã nguồn mở cho Anycast DNS bằng RIP.

Tôi hiện đang làm việc để viết bài thứ tư trong loạt bài. Điều này sẽ cung cấp cho người nhận về cách triển khai Anycast DNS bằng OSPF. Cuối cùng trong loạt bài này, tôi sẽ hiển thị các công thức để triển khai DNS Anycast bằng BGP.

Anycast DNS - Phần 1, Tổng quan

Anycast DNS - Phần 2, Sử dụng các tuyến tĩnh

Anycast DNS - Phần 3, Sử dụng RIP

Anycast DNS - Phần 3, Sử dụng RIP (tiếp theo)


Vì vậy, có đúng là do anycast, có thể một người nào khác trên internet trên toàn cầu có thể có cùng một IP công khai như ISP của bạn đã cung cấp cho bạn không?
Pacerier

Có phải sự thật là chỉ có ISP mới có khả năng triển khai máy chủ anycast không?
Pacerier

Trong thực tế, bạn sẽ cần sở hữu nhiều ISP để thực hiện anycast.
Pacerier

4

Cho rằng đây chủ yếu là DNS tại thời điểm này ...

Một cách không chính thức, nó làm cho dịch vụ của bạn trở nên linh hoạt hơn và với khả năng truy cập / độ trễ / tốc độ mạng tốt hơn bằng cách cho phép bạn thiết lập cùng một dịch vụ ở nhiều địa điểm trên toàn thế giới bằng cùng một địa chỉ. Khi ai đó truy vấn địa chỉ đó, họ được cung cấp tuyến đường gần nhất / tốt nhất.

Từ góc độ máy chủ:

Nếu unicast là bạn sẽ đến với một người, và multicast là bạn sẽ đến một vài người, và phát sóng là bạn sẽ đến với tất cả mọi người, thì anycast đang bị tâm thần phân liệt và có nhiều tính cách phù hợp nhất với từng người. Hừm. Không phải là sự tương tự tốt nhất.


3

Một ứng dụng thực sự thú vị của anycast là DNS. Bạn có thể đặt 5 máy chủ DNS khác nhau ở các vị trí mạng và vật lý khác nhau nhưng chia sẻ một địa chỉ (hoặc đôi khi cả DNS chính và phụ). Tùy thuộc vào vị trí của nguồn, chúng được chuyển đến nút gần nhất. Điều này thực hiện một số cân bằng lưu lượng cộng với nó cung cấp dự phòng nếu máy chủ DNS chết.


Nhưng không phải là sự dư thừa đã được cung cấp bởi hệ thống DNS?
Pacerier

2

Theo một trong những đồng nghiệp của tôi, nó cũng hữu ích như một kỹ thuật giảm thiểu tấn công DoS, vì mọi người chỉ có thể tấn công địa chỉ IP anycast "gần nhất", vì vậy, nếu có rất nhiều zombine ở Hoa Kỳ, trang web Euro của bạn sẽ là hầu như không bị ảnh hưởng, vì họ thực sự không thể gửi các gói đến nó.

Ngoài ra, có thể sử dụng nó như một cách để lọc các gói giả mạo (hơi ngây thơ) nếu chúng rõ ràng đến từ nơi nào đó không được quảng cáo trong BGP là tuyến chính xác (ví dụ: các gói đến châu Âu khi ASN chỉ ra N American khối).


1
Chà, ngay cả trong trường hợp đơn giản sẽ chỉ ngăn những người AS đường dẫn đến máy chủ đó --- ví dụ: bạn có thể ngăn những người tiếp cận bạn với Comcast, nhưng không phải AT & T. Nếu bạn đã thiết lập "đúng" cho chuyển đổi dự phòng (theo dõi dịch vụ L7, ngừng thông báo khi nó ngừng hoạt động), thì thực sự sẽ rất khó khăn hơn để xử lý các cuộc tấn công DoS vì nó sẽ chuyển sang một máy chủ tiếp theo khi nó chuyển sang máy chủ tiếp theo. thông báo được gỡ xuống ...
James Cape

@JamesCape, Thật thú vị, Nhưng khi họ chuyển sang phần tiếp theo, dos đã thất bại vì mọi người không thể kết nối phải không?
Pacerier

@Pacerier Trong trường hợp đơn giản nhất, nơi bạn chỉ quảng cáo cùng một IP ở mọi nơi mà không có thông tin về nó, vâng. Tuy nhiên, nếu bạn cố gắng thông minh và rút quảng cáo ở Mỹ vì dịch vụ không đáp ứng, thì quảng cáo duy nhất còn lại sẽ là quảng cáo ở châu Âu. Vì vậy, tất cả các thây ma Hoa Kỳ sau đó sẽ tấn công máy chủ có sẵn tiếp theo và tiêu diệt cả máy chủ đó.
James Cape

2

Cũng cần lưu ý rằng Anycast không tốt hoặc đáng tin cậy đối với một số kết nối TCP không thể tồn tại được đặt lại hoặc bất kỳ cuộc trò chuyện dài nào.

Các IP Anycast, sử dụng BGP, nói với internet rằng có 2, 3 hoặc nhiều đường dẫn đến một HOST cụ thể , tuy nhiên trên thực tế chúng KHÔNG phải là cùng một máy chủ , chúng là bản sao chính xác của các máy chủ được quảng cáo trên nhiều trung tâm dữ liệu để đạt được kết nối độ trễ thấp hơn.

Ví dụ: tôi có 3 máy chủ thực hiện chuyển hướng 301 không www cho 198.251.86.133, nếu bạn ping máy chủ này, bạn có thể nhận được phản hồi DUPLICATE đôi khi, hoặc thậm chí giảm tùy thuộc vào vị trí của bạn, vì máy chủ của tôi là US-East, US -West và EUR. đối với các kết nối có thời gian ngắn (như 301 là bộ đệm của trình duyệt), điều này mang lại phản hồi nhanh bởi máy chủ cục bộ trong trung tâm dữ liệu gần nhất.

Từ quan điểm dự phòng, không có điểm nào được tích hợp vào anycast, bạn vẫn sẽ cần dự phòng độc lập tại mỗi trang vì IP đó sẽ (trong các kịch bản điển hình) luôn luôn trỏ đến các trung tâm dữ liệu đó.


"Ping" lại; không ping kết nối UDP?
Pacerier

Re "như IP đó sẽ (trong các kịch bản điển hình) luôn luôn trỏ đến các trung tâm dữ liệu đó"; bạn có chắc không? Nếu máy chủ đó mất điện, họ sẽ bắt đầu trỏ đến máy chủ gần nhất phải không?
Pacerier
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.