Anycast DNS - как вы справляетесь с запросами TCP DNS?
Давайте предположим, что я настроил пару anycasted DNS -серверов во внутренней сети, используя bird, и они просто общаются OSPF с моими основными маршрутизаторами. Я нашел это в интернете и сделал это возможным.
Если я настрою один из них на более дорогой путь, чем другой, сладкий, я просто сделал симпатичный способ отработки отказа, не вызывая у моих клиентов каких-либо таймаутов при переключении с одного хоста в их resolv.conf на другой распознаватель в их resolv.conf.
Но этого недостаточно для меня. Я хочу распределить нагрузку между своими DNS -серверами. Поэтому я установил одинаковую стоимость для обоих, поэтому маршрутизаторы теперь должны выполнять ECMP и отправлять 50% запросов одному и 50% запросов другому.
Но оказывается, что мое предприятие использует TCP для большой части нашего DNS - скажем, у нас есть огромные записи SRV, и мы используем DNSSEC, потому что мы потрясающие.
Теперь, как мне настроить мои умные настройки anycast, чтобы справиться с тем фактом, что для запросов TCP требуется 3 или 4 пакета, чтобы выполнить запрос, и теперь один из этих 3 пакетов всегда собирается на неправильный маршрутизатор и получает соединение tcp сброс.
2 ответа
Ну, в такой схеме вы можете просто заблокировать ответы RST для неправильного сеанса, не так ли?:) или (что еще лучше), не передавайте его в эксплуатацию:
- неверное состояние?
- нет, попробуйте другой!
PS Да, мне очень нравится презентация " TCP Anycast - Не верь FUD - nanog" по ссылке, которую я дал тебе в комментариях.;)
Просто используйте ECMP OSPF для каждого потока вместо каждого пакета, и все будет в порядке, как говорится в презентации NANOG.
Anycast для TCP - это только потенциальная проблема для долгоживущих TCP-сессий, и почти каждая известная мне реализация DNS использует только очень недолговечные TCP-сессии.