Що таке "anycast" і як це корисно?


85

Я ніколи не чув про anycast до декількох секунд тому, коли читав " Які якісь цікаві чи корисні хитрощі з сервером / мережами? ".

Стаття про Вікіпедію " Anycast " про неї є досить формальною і насправді не викликає душевної картини того, як вона буде використовуватися.

Чи може хтось пояснити в декількох неофіційних реченнях, що таке "anycast", як ви налаштовуєте його (просто в загальному розумінні), і які його переваги (що це полегшує)?

Відповіді:


88

Anycast - це мережева техніка, де однаковий префікс IP рекламується з декількох місць. Потім мережа вирішує, до якого місця направити запит користувача, виходячи з витрат на протокол маршрутизації та, можливо, «здоров’я» рекламних серверів.

Існує кілька переваг для anycast. По-перше, у стаціонарному стані користувачі будь-якої послуги будь-якої передачі (DNS - відмінний приклад) завжди підключатимуться до "найближчого" (з точки зору протоколу маршрутизації) сервера DNS. Це зменшує затримку, а також забезпечує рівень збалансованості навантаження (якщо припустити, що ваші споживачі рівномірно розподілені по вашій мережі).

Ще одна перевага - простота управління конфігурацією. Замість того, щоб налаштовувати різні DNS-сервери залежно від того, де розміщений сервер / робоча станція (Азія, Америка, Європа), у вас є одна IP-адреса, яка налаштована у кожному місці.

Залежно від того, як реалізується anycast, він також може забезпечити рівень високої доступності. Якщо реклама маршруту anycast обумовлена ​​якоюсь медичною перевіркою (наприклад, запит DNS для добре відомого домену, у цьому прикладі), то, як тільки сервер не вдасться, його маршрут можна буде видалити. Після того як мережа відновиться, запити користувачів будуть безперешкодно перенаправлені до наступного найближчого примірника DNS, без необхідності будь-якого вручну втручання чи перенастроювання.

Кінцевою перевагою є горизонтальне масштабування; якщо ви виявите, що один сервер перевантажений, просто розгорніть інший у такому місці, яке б дозволило йому прийняти деяку частку запитів перевантаженого сервера. Знову ж таки, оскільки конфігурація клієнта не потрібна, це можна зробити дуже швидко.


Чи використовує anycast більше пропускної здатності порівняно з одноадресною? Уявіть, що у нас є тисяча серверів, які мають спільну IP-адресу, коли ми надсилаємо пакет на цю адресу, чи не зайняв би він більше пропускної здатності, ніж порівняно з одноадресною?
Pacerier

5
Ні - трафік, надісланий на будь-яку адресу, буде надходити лише в одне місце, де рекламується адреса. Ви можете думати про багатоадресну передачу , де пакети, надіслані на адресу групи багатоадресних повідомлень, надсилаються всім хостам, які цікавляться цією групою.
Муралі Суріар

Чи не проблема " Замість того, щоб налаштувати різні DNS-сервери залежно від того, де розміщений сервер / робоча станція ", вирішена доменними іменами? Тож який сенс anycast, коли він просто дублює те, що доменні імена вже роблять?
Pacerier

1
@Pacerier - ви не можете використовувати доменні імена для пошуку свого DNS-сервера - це кругова залежність. Приклад: налаштуйте dns.foo.com. як ваш DNS-сервер. На яку IP-адресу я надсилаю запити на dns.foo.com? Я знаю, я шукаю це в DNS. пр.
Муралі Суріар

32

Однією з речей, яка часто плутає мене в розумінні "anycast", є те, що, хоча це термін на високому рівні, у практичній реалізації він зазвичай зводиться до двох прикладів:

  1. Маршрутизатори, що використовують BGP для рекламування одного і того ж блоку IP через декілька контурів AS, як грубий спосіб спрямування користувачів на "ближчий" сайт. У той же час він передбачає майже прозорий відхід на інші сайти, просто відтягуючи маршрути від проблемного сайту. Це може бути корисно майже для будь-якого протоколу, хоча, очевидно, це викликає багато проблем із синхронізацією резервних даних.

  2. Рекламування одного і того ж IP-сервісу з декількох точок у вашій власній мережі (за допомогою статичної маршрутизації , OSPF , EIGRP або будь-якого іншого). Якщо маршрути зважуються по- різному, він діє як механізм відмови. Якщо маршрути зважуються рівномірно, це може скористатися можливостями балансування навантаження на потік або за потоком більшості маршрутизаторів іменних торгових марок. Ви повинні бути обережними, щоб протокол рівня додатків був у цьому комфортний, тому ви майже завжди чуєте про нього, що використовується в DNSде запит - це завжди один пакет, і все без громадянства. Особисто я розглядаю це як хитке вторгнення рівня додатків у мережевий рівень, коли комбінація DNS та належних балансирів навантаження майже завжди буде кращим рішенням.


+1 за згадування одного пакету та безгромадянства
nponeccop

3
Проблема з DNS полягає в тому, що можна використовувати google або якийсь інший віддалений дозвіл і найближчий сервер до резолютора, може бути іншим, ніж для користувача. Звичайно, це справедливо, тільки anycast призначений для використання без DNS (наприклад, tcp anycast або іншого використання).
акостадінов

@cagenut, Чи зламається HTTP у випадку балансування навантаження на пакет (через рівну вагу чи інакше)?
Pacerier

16

В основному використовується для служб на базі UDP, таких як DNS. В основному, ви оголошуєте той самий маршрут із кількох центрів обробки даних по всьому світу. Таким чином, ваші клієнти будуть відправлені в "найкращий" та "найближчий" центр обробки даних на основі маршрутів BGP. Я ставлю «найкращі» та «найближчі» в лапках, оскільки постачальники послуг можуть по-різному грати в ігри та маршрутизувати трафік з певних мереж. Як правило, все виходить найкраще за допомогою anycast, але це не є гарантією.

Прикладом цього може бути перелік ваших серверів DNS як 1.2.3.4 та 1.2.3.5. Ваші маршрутизатори оголосять маршрут на 1.2.3 / 24 з декількох центрів обробки даних. Якщо ви перебуваєте в Японії та маєте там центр обробки даних, швидше за все, ви там опинитесь. Якщо ви перебуваєте в США, вас відправлять у центр обробки даних США. Знову ж таки, вона базується на маршрутизації BGP, а не на фактичній географічній маршрутизації, але зазвичай так виходять з ладу.


1
Як тоді уникнути конфліктів?
Pacerier

Я не впевнений, що ви маєте на увазі під конфліктами. BGP насправді не допускає конфліктів. Це просто вибирає маршрут. Одна (часто ігнорована) проблема з anycast є законною. Технічно будь-який ефір охоплюється різними патентами. Ніхто цього не примушує, але різні типи трафіку (CDN, DNS, TCP проти UDP) охоплюються різними патентами. Цей пункт повинен бути охоплений IANAL.
diq

Отже, ви маєте на увазі, що ці служби ip2location неточні? Оскільки для IP-адреси немає офіційного місця розташування, і воно може бути де завгодно залежно від того, з яким комп'ютером BGP ви спілкуєтесь?
Pacerier

9

Відповідно до моєї оригінальної відповіді, я щойно опублікував у своєму блозі ще дві статті під назвою: Anycast DNS - частина 3, використання RIP та Anycast DNS - частина 3, використання RIP (продовження). Остання детальніше описується більш детально, але на веб-сайті www.netlinxinc.com/netlinx-blog.html ви знайдете фактичні рецепти, як налаштувати маршрутизатори Cisco та програмне забезпечення для маршрутизації Open Source Quagga на основі хоста для Anycast DNS за допомогою RIP.

Зараз я працюю над написанням четвертої статті в серії. Це дасть відповіді про те, як розгорнути Anycast DNS за допомогою OSPF. Останній у серії я покажу рецепти розгортання DNS Anycast за допомогою BGP.

Anycast DNS - Частина 1, огляд

Anycast DNS - Частина 2, Використання статичних маршрутів

Anycast DNS - частина 3, використовуючи RIP

Anycast DNS - частина 3, використання RIP (продовження)


Тож чи правда, що через будь-яку трансляцію, можливо, хтось інший в Інтернеті по всьому світу може мати такий самий публічний IP, як і той, який вам надав ваш Інтернет-провайдер?
Pacerier

Чи не правда, що лише провайдери можуть розгортати сервери anycast?
Pacerier

Насправді вам знадобиться мати декілька провайдерів, щоб зробити будь-який канал.
Pacerier

4

Враховуючи це в даний час DNS в основному ...

Неофіційно це робить вашу службу більш еластичною та кращою мережевим доступом / затримкою / швидкістю, дозволяючи налаштувати одну і ту ж послугу в декількох місцях по всьому світу, використовуючи одну і ту ж адресу. Коли хтось запитує на цю адресу, їм надається найближчий / найкращий маршрут.

З точки зору сервера:

Якщо єдиноборство - ви збираєтеся до однієї людини, а багатостороннє - ви збираєтеся до кількох людей, а трансляція - чи збираєтесь ви всіх людей, то будь-який канал є шитзофреніком і має безліч особистостей, де особистість, яка найкраще підходить до кожної людини, з'єднується з ними. Хм. Не найкраща аналогія.


3

Дійсно цікаве використання anycast - DNS. Ви можете розміщувати 5 різних DNS-серверів у різних фізичних та мережевих місцях, але ділити один (або іноді як основний, так і вторинний) DNS-адреси. Залежно від джерела, вони перенаправляються до найближчого вузла. Це робить деяке врівноваження трафіку, а також забезпечує надмірність, якщо DNS-сервер гине.


Але чи не передбачено резервування системи DNS?
Pacerier

2

За словами одного з моїх колег, це також корисно як техніка пом'якшення атаки DoS, оскільки люди можуть атакувати лише "найближчу" будь-яку IP-адресу anycast, тому, якщо в скажімо, США багато зомбінів, ваш веб-сайт Євро буде в основному це не стосується, оскільки вони фактично не можуть надсилати йому пакети.

Також можливо використовувати його як спосіб (дещо наївно) фільтрувати підроблені пакети, якщо вони, очевидно, приходять звідкись навряд чи будуть рекламовані в BGP як правильний маршрут (наприклад, пакети, що надходять в Європу, коли ASN вказує на N американця блок).


1
Ну, навіть у простому випадку, який би зупинив лише людей, які AS шлях йде до цього сервера --- наприклад, ви можете зупинити людей, які до вас звертаються з Comcast, але не AT&T. Якщо ви встановили його "належним чином" для відмови (відслідковуйте службу L7, перестаньте повідомляти, коли вона знижується), то насправді набагато складніше обробляти атаки DoS, оскільки вона запустить один сервер, а потім перейде до наступного, коли це анонси знімаються ...
Джеймс Кейп

@JamesCape, Цікаво, але коли вони переходять до наступного, дос не вдалося, оскільки люди не в змозі підключитися правильно?
Pacerier

@Pacerier У найпростішому випадку, коли ви просто рекламуєте один і той же IP всюди, не маючи на ньому інтелекту, так. Однак якщо ви спробуєте проявити розум і відкликати рекламу в США, оскільки сервіс не відповідає, то єдиною, що залишилася, буде рекламою в Європі. Тож усі зомбі США вдарять про наступний доступний сервер і вбивають і цього.
Джеймс Кейп

2

Також добре зауважити, що Anycast не є хорошим або надійним для деяких TCP-з'єднань, які не витримають скидання або будь-якої тривалої розмови.

IP-адреси Anycast, використовуючи BGP, повідомляють Інтернету, що існує певний шлях до 3, 3 або більше до певного хоста , однак насправді це НЕ той самий хост , вони є точними репліками хостів, що рекламуються в декількох центрах обробки даних для досягнення меншої затримки зв'язку.

Наприклад, у мене є 3 сервери, які роблять 301 перенаправлення без www за 198.251.86.133, якщо ви переймете цей хост, ви можете отримувати ДУПЛІКАТНІ відповіді часом або навіть краплі залежно від місця, де ви знаходитесь, оскільки мої сервери - це США-Схід, США -Захід, і EUR. для короткочасних з'єднань (наприклад, 301, які є кешем браузера), це дає швидку відповідь місцевим сервером у найближчому центрі обробки даних.

З точки зору надмірності немає жодного вбудованого в anycast, вам все одно знадобиться незалежне надмірність на кожному сайті, оскільки цей IP завжди (у типових сценаріях) завжди вказуватиме на ці центри даних.


Re "пінг"; не пінг-з'єднання UDP?
Pacerier

Re "як цей IP буде (у типових сценаріях) завжди вказувати на ці центри даних"; ти впевнений? Якщо це серверне відключення, вони почнуть вказувати на наступний найближчий сервер, чи не так?
Pacerier
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.