Как предотвратить асимметричную маршрутизацию с несколькими маршрутизаторами eBGP?
У меня есть 2 маршрутизатора, объявляющих подсеть /22 для разных провайдеров (один провайдер подключается к каждому из 2 маршрутизаторов). Я разделил /22 на два /23, чтобы объявить по одному /23 на каждом из маршрутизаторов плюс /22 (провайдеры выберут более конкретный маршрут). Это позволяет мне переключаться при сбое и сохранять трафик внутри /23 для одного и того же провайдера.
Какими другими способами я мог бы объявить только /22 обоими маршрутизаторами и получить пакеты от серверов в сети за маршрутизаторами, чтобы они возвращались к тому же маршрутизатору, с которого они пришли?
РЕДАКТИРОВАТЬ:
Основная проблема, с которой я сталкиваюсь, на которую конечные пользователи и клиенты жалуются больше всего, заключается в том, что маршрут с наименьшим количеством переходов иногда не является "оптимальным". В моем случае я знаю, что у провайдера B может быть лучшее время ожидания для X страны. Но когда пакеты приходят от провайдера B, они могут выходить из провайдера A или провайдера B. Обратное также верно. Если я отправлю пакет провайдеру А нации Х, даже если он может иметь больше хопов, пакет, скорее всего, поступит от провайдера Б (который может иметь большую задержку, потерю пакетов и т. Д. Для этой страны)
3 ответа
Строго говоря, вы теряете полный контроль над маршрутами входящей маршрутизации, когда объявляете свой префикс нескольким провайдерам, потому что в нисходящем направлении принимаются независимые решения о маршрутизации для возврата трафика вам. Кроме того, ваши объявления могут даже быть изменены последующими поставщиками после их отправки.
пример
Это один из примеров того, что может случиться. Предположим, у вас есть AS 777, который владеет 2.2.0.0/22. У вас есть сервисы, к которым у компании с маршрутизатором A есть доступ... Давайте также предположим, что AS 100 не имеет хорошей связи с вами (возможно, это прерывисто портит трафик из-за проблем физического уровня, которые вы не смогли исправить). Итак, вы подумаете: "Я просто добавлю все свои объявления к AS100 с большим количеством ASN, чтобы никто не предпочел ссылку AS100, пока я не смогу это исправить".
Проблема в том, что у вас есть только полный контроль над вашими исходящими решениями о маршрутизации. Вы не получаете полный контроль над входящими... так что давайте предположим, что администратор маршрутизатора А не знает, что ваша ссылка на AS100 плохая. Они имеют двойную связь с AS200 и AS100, но AS100 предлагает гораздо более дешевый транзит на Мбит / с; поэтому инженер Маршрутизатора А получает полные маршруты от AS100 и использует только AS200 в качестве резервной копии (принимая из них только значение по умолчанию).
Как администратор AS 777, вы можете принудительно направлять трафик к маршрутизатору A через AS 200, но трафик от маршрутизатора A до 2.2.0.0/22 по-прежнему будет занимать AS 100 (поскольку лучший маршрут - через AS 100 в маршрутизаторе A).
Возможные решения
Обычно асимметричные пути имеют значение из-за балансировки нагрузки или брандмауэра, который получает трафик. Некоторые возможные решения:
- Для услуг, предлагаемых в других ASN, вы можете отправлять весь исходящий трафик NAT на адрес, который является локальным для ссылки, ведущей к определенной AS (хотя это не очень хорошо работает для поставщиков услуг)
- Для услуг, предлагаемых в вашем ASN, вы могли бы направлять NAT весь входящий трафик на адрес, который является локальным для подсети на рассматриваемом пиринговом маршрутизаторе BGP (хотя это не работает для поставщиков услуг)
- Вы можете настроить DMZ, которая получает трафик от всех различных ASN и предлагает единую точку входа / выхода для трафика от ваших восходящих потоков. При некоторых обстоятельствах вы даже можете синхронизировать таблицу состояний на устройствах DMZ. (хотя это плохо работает для поставщиков услуг)
- Если вы хотите использовать такие функции, как условная реклама BGP, иногда вы можете обойти эти проблемы за счет отказа от использования других операторов для входящего трафика до версии 2.2.0.0/22.
Если вы предоставите более подробную информацию о характере услуг и проблемах, мы могли бы предложить более конкретные рекомендации.
Какими другими способами я мог бы объявить только /22 обоими маршрутизаторами и получить пакеты от серверов в сети за маршрутизаторами, чтобы они возвращались к тому же маршрутизатору, с которого они пришли?
Почему вы хотите этого? Или, точнее, почему вы хотите форсировать это поведение (поскольку, как правило, это происходит благодаря магии маршрутизации)?
Вся суть BGP и иерархии распределенной маршрутизации, которая составляет современный интернет, состоит в том, что ваши пакеты будут выбирать лучший доступный маршрут к месту назначения. Если пакет пришел Route A
но Route B
По какой-то причине лучше выбрать ответ, почему бы вам не отправлять ответ по оптимальному маршруту?
Единственная причина, по которой я это вижу, - это желание нанести ущерб вашему трафику от более дорогого оператора связи (в этом случае существуют более эффективные методы).
Способ достижения симметрии здесь на самом деле не столько функция BGP, сколько NAT. Предположим, вы продолжаете со схемой рекламы /22 из обоих маршрутизаторов, а также по одному /23 из каждого. Настройте исходящий NAT таким образом, чтобы трафик, покидающий данный граничный маршрутизатор, получал адрес источника в /23 этого маршрутизатора. Чтобы добиться симметрии для входящего трафика, вам также потребуется источник NAT для преобразования соединений из глобальных источников в отдельные пулы, выделенные для каждого пограничного маршрутизатора.
На уровне сервера вы потеряете видимость того, откуда на самом деле происходят соединения, но эта информация может быть получена из маршрутизатора через Netflow или аналогичные механизмы.
Здесь представлена существенная степень потенциальной сложности, которая также будет переводиться (без каламбура) в то, где и как вы размещаете шлюзы по умолчанию для серверов. Это может потребовать промежуточного уровня говорящих маршрутизаторов BGP с соответствующими политиками, чтобы поддерживать локально исходящий трафик в правильном направлении. В целом, однако, не существует элегантного способа обеспечить симметричную маршрутизацию, когда вы рекламируете идентичные маршруты с одинаковыми метриками из нескольких маршрутизаторов - и, честно говоря, вне особых требований к устройствам с поддержкой состояния, таким как определенные брандмауэры или балансировщики нагрузки, это просто это не то, что обычно является целью проектирования для большинства сетей.