Главная страница
Навигация по странице:

  • Практика Community

  • Материалы выпуска

  • Микровыпуск №3. IBGP. 3. Ibgp13 октября 2013, 17 4392


    Скачать 3.56 Mb.
    Название3. Ibgp13 октября 2013, 17 4392
    Дата05.03.2023
    Размер3.56 Mb.
    Формат файлаpdf
    Имя файлаМикровыпуск №3. IBGP.pdf
    ТипРешение
    #968862
    страница3 из 3
    1   2   3
    7 Наш новый клиент AS 64504
    подключен к нашей сети. И пока что не планирует подключение к другому провайдеру. На данном этапе клиент может использовать номер автономной системы из приватного диапазона.
    Блок адресов, который использует клиент, будет частью нашего диапазона сетей.
    Задание: Так как сеть клиента является частью нашего блока адресов, надо чтобы сеть клиента не анонсировалась соседним провайдерам.
    Не использовать фильтрацию префиксов или фильтрацию по AS
    для решения этой задачи.
    Конфигурация и схема: Community.

    Отличия только в том, что сеть, которую анонсирует AS64504:
    100.0.1.0/28, а не 130.0.0.0/24
    Подробности задачи тут.
    =====================
    В сети тысячи примеров настройки таких базовых коммьюнити и крайне мало примеров реального использования.
    А меж тем одно из самых интересных применений этого атрибута
    — блэкхоулинг от старославянского black hole — способ борьбы с
    DoS-атаками. Очень подробно с примером настройки о нём уже было рассказано на хабре.
    Суть в том, что когда началась атака на какой-то из адресов вашей
    AS, вы этот адрес передаёте вышестоящему провайдеру с комьюнити 666, и он отправляет такой маршрут в NULL —
    блэкхолит его. То есть до вас уже этот паразитный трафик не доходит. Провайдер может передать такой маршрут дальше, и так, шаг за шагом, трафик от злоумышленника или системы ботов будет отбрасываться уже на самых ранних этапах, не засоряя
    Интернет.
    Достигается такой эффект расширяющейся чёрной дыры именно благодаря коммьюнити. То есть в обычном случае вы анонсируете этот адрес в составе большой сети /22, например, а в случае DoS’а передаёте самый специфичный маршрут /32, который будет,
    естественно, более приоритетным.
    О таких атаках вы, кстати, можете послушать в шестом выпуске нашего подкаста linkmeup.
    Другие примеры — управление атрибутом Local Preference в чужой AS, сообщать ему, что анонсу нужно увеличить AS-path (AS- path prepending) или не передавать маршрут каким-либо соседям.
    Насчёт последнего. Как, например, вы решите следующую задачу?
    Имеется сеть, представленная на рисунке ниже. Вы хотите отдавать свои маршруты соседям из AS 100 и 200 и не хотите 300.

    Без использования коммьюнити силами только своей AS сделать это не представляется возможным.
    Кстати, как бы это ни было прискорбно, но такие ограничения реально используются в нашей жизни. Распространены ситуации,
    когда несколько провайдеров устанавливают между собой пиринговые отношения — трафик между их сетями не ходит через вышестоящих провайдеров, не даёт круг через пол-России, но кого-то не пускают — кому-то свои сети не анонсируют.
    Интереснейшие статьи об Интернете и BGP и о пиринговых войнах.
    Практика Community
    Мы же в качестве примера рассмотрим следующую ситуацию.
    Основная схема статьи дополняется ещё одним маршрутизатором клиента и двумя линками.

    R7 и R9 разнесены территориально — так называемое георезервирование. Главным является его правый сайт, левый —
    резервный.
    Внутри своей AS он без проблем настроил передачу исходящего трафика в нужном месте — через R3. А вот со входящим посложнее — MED не позволяет использовать религия, да и доверия ему нет.
    Поэтому мы разработали схему взаимодействия, используя community. На самом деле она будет общая для всех. Например,
    ниже мы установим правило — если получили маршрут с коммьюнити 64500:150, увеличить Local Preference для него до
    150. А потом такую политику применяем к нужным нам маршрутам.
    На нашем оборудовании (на всём) мы определяем ip community- list:
    ip community-list 1 permit 64500:150
    Задаём правило обработки:
    route-map LP150 permit 10
    match community 1
    set local-preference 150
    Это общий блок, который будет одинаков для всех устройств.
    После этого клиент может сказать, что хочет воспользоваться этой функцией и мы применяем карту на BGP-соседа:
    Применяем карту к BGP-соседу на R3:
    router bgp 64500
    neighbor 100.0.0.10 remote-as 64504
    neighbor 100.0.0.10 route-map LP150 in
    Итак, если в анонсе от соседа 100.0.0.10 community совпадает со значением в условии, установить Local Preference для этих маршрутов в 150.
    Часто такие политики (route-map) применяются по умолчанию на всех внешних соседей.
    Клиентам остаётся только настроить передачу нужной коммьюнити и даже не нужно просить о чём-то провайдера — всё сработает автоматически.
    Это наша политика по использовании коммьюнити. О ней мы сообщаем клиенту, мол, хочешь Установить для своего маршрута
    Local Preference в 150 в нашей AS, используй community 64500:150
    И вот он настраивает на R9:
    router bgp 64504
    neighbor 100.0.0.9 remote-as 64500
    neighbor 100.0.0.9 route-map LP out neighbor 100.0.0.9 send-community route-map LP permit 10
    set community 64500:150
    При необходимости то же самое он может настроить на R7.
    После clear ip bgp * so в отправляемых анонсах мы можем увидеть community:

    В итоге R3 имеет маршрут с более высоким Local Preference:
    Передаёт его рут-рефлектору (R1 и R2), который делает выбор и распространяет всем своим соседям:
    И даже R4, которому рукой дотянуться до R7, будет отправлять трафик на R3:
    Трафик идёт именно тем путём, который мы выбрали.

    Пусть вас не пугает по 3 записи для каждого хопа
    — это говорит о балансировке трафика между равноценными линками R1<->R2<->R3 и R1<-
    >R4<->R3. Просто один раз он идёт по одному пути, второй по другому. А вот вы лучше попробуйте ответить на вопрос, почему на первом хопе 1-я и 3-я попытки идут через R4, а вот на втором хопе на R3. Почему пакет
    “перепрыгивает”? Как так получается?
    Кстати, не стоит забывать команду ip bgp-community new-format,
    а иначе вместо этого:
    вы увидите это:
    Отправляться будет то же самое, но в выводах show команд будет отображаться в удобном виде. ===================== Задача
    8
    В нашей AS для настройки политик с клиентскими
    AS, используются community. Используются такие значения: 64500:150, 64500:100, 64500:50,
    64500:1, 64500:2, 64500:3.
    Кроме того, маршрутизаторы нашей AS также используют community для работы с соседними
    AS. Их формат: 64501:xxx, 64502:xxx.
    Задание:
    — все значения community приходящие от клиентов, которые не определены политикой, должны удаляться,

    — значения community, которые проставлены клиентами, должны удаляться, при передаче префиксов соседним вышестоящим AS.
    При этом не должны удаляться другие значения, которые проставлены маршрутизаторами нашей AS.
    Конфигурация и схема: базовые.
    Подробности задачи тут.
    =====================
    Конфигурация устройств
    В приведённом примере видно, что коммьюнити позволяет работать не с отдельными анонсами и для каждого из них отдельно применять какие-то политики, а рассматривать их сразу как группу, что естественно, значительно упрощает обслуживание.
    Иными словами, коммьюнити — это группа анонсов с одинаковыми характеристиками.
    При работе с community важно понимать, что настройка необходима с двух сторон — чтобы желаемое заработало, у провайдера тоже должна быть выполнена соответствующая конфигурация.
    Часто у провайдеров бывает уже выработанная политика использования коммьюнити, и они просто дают вам те номера,
    которые необходимо использовать. То есть после того, как вы добавите к анонсу номер коммьюнити, провайдеру не придётся ничего делать руками — всё произойдёт автоматически.
    Например, у Балаган-Телекома может быть такая политика:
    Значение
    Действие
    64501:100Х При анонсировании маршрута соседу A добавить Х
    препендов, где Х от 1 до 6 64501:101X При анонсировании маршрута соседу B добавить Х
    препендов, где Х от 1 до 6 64501:102X При анонсировании маршрута соседу C добавить Х
    препендов, где Х от 1 до 6 64501:103X При анонсировании маршрута в AS64503 добавить Х
    препендов, где Х от 1 до 6 64501:20050Установить Local Preference для полученных маршрутов в 50 64501:20150Установить Local Preference для полученных маршрутов в 150 64501:666
    Установить Next-Hop для маршрут в Null — создать
    Black Hole
    64501:3333 выполнить скрипт по уничтожению конфигурации
    BGP на всех маршрутизаторах AS
    Исходя из этой таблички, которая опубликована на сайте Балаган- телекома, мы можем сами принять решение об управлении трафиком.
    Как это реально может помочь нам?
    У нас Dual-homing подключение к двум различным провайдерам
    — Балаган Телеком и Филькин Сертификат. У датацентра подключение также к обоим провайдерам. Он принадлежит какому-то контент-генератору, допустим это оператор потового
    видео.
    По умолчанию, в нашу сеть всё ходит через Балаган-Телеком
    (AS64501). Канал там хоть и широкий, но его утилизация уже достаточно высока. Мы хотим продавать домашним клиентам услугу IPTV и прогнозируем значительный рост входящего трафика. Неплохо было бы его завернуть в Филькин Сертификат и не бояться о том, что основной канал забьётся. При этом,
    естественно, весь другой трафик переносить не нужно.
    В таблице BGP проверяем, где находится сеть 103.0.0.0. Видим,
    что это AS64503, которая достижима через обоих провайдеров с равным числом AS в AS-Path.
    Вот как видит нас маршрутизатор из AS 64503:
    Маршрут в Балаган-Телеком выбран предпочтительным
    Какие мысли?
    Анонсировать определённые сети в Филькин Сертификат, а остальные оставить в Балаган Телеком? Негибко,
    немасштабируемо.
    Вешать препенды на маршруты, отдаваемые в Балаган Телеком?
    Тогда, скорее всего, куча другого трафика перетечёт на Филькин
    Сертификат.
    Попросить инженера Балаган-Телекома вручную удлинить наши маршруты при передаче их в AS64503. Уже ближе к истине, и это даже сработает, но, скорее всего, инженер провайдера пошлёт вас… на сайт с табличкой, где прописана их политика Community.
    Собственно, всё, что нужно сделать нам — на маршрутизаторе R1
    применить route-map по добавлению коммьюнити 64500:1031 к соседу R5(напоминаем, что 103Х — это для соседа из AS 64503).

    Дальше всё сделает автоматика.
    Вот как R5 видит маршрут сам:
    Всё без изменений. Вот как его видит R8:
    Как видите, галочка стоит напротив более короткого пути через
    Филькин Сертификат, чего мы и добивались.
    =====================
    Задача 9 Одним из наших клиентов стала крупная компания. Платят они нам довольно много, но тут возникла проблема с тем, что когда происходят какие-то проблемы с провайдером
    AS64501, то качество связи, которую обеспечивает линк с провайдером AS64502, не устраивает клиента. Главное для нашего клиента,
    хорошее качество связи к филиалам.
    Так как клиент солидный, то пришлось установить пиринг с еще одним провайдером AS64513. Но он нам дорого обходится поэтому использовать его мы будем только когда провайдер
    AS64501 недоступен и только для этого важного клиента.
    Задание:
    Надо настроить работу сети таким образом, чтобы через провайдера AS64513 сеть клиента 150.0.0.0/24 анонсировалась
    только в том случае, если через провайдера AS64501 недоступна сеть 103.0.0.0/22 (она используется для проверки работы провайдера). Кроме того, от провайдера AS64513 нам надо принимать только сети филиалов клиента (50.1.1.0/24, 50.1.2.0/24,
    50.1.3.0/24) и использовать их только если они недоступны через провайдера AS64501. Остальной трафик клиента будет ходить через AS64502.
    Конфигурация: базовая.
    Подробности задачи тут.
    =====================
    Материалы выпуска
    Повесть о настоящем Интернете
    BGP Blackhole — эффективное средство борьбы с DDoS
    Сравнение функций и мест использования EBGP и IBGP
    Основы BGP
    Конфигурация устройств: базовый IBGP, Route Re ectors,
    Community.
    Послесловие
    Вот на этом знакомство с BGP можно считать законченным.
    Теперь мы вернёмся к нему ни много ни мало при рассмотрении
    MPLS L3VPN.
    За траблшутинг статьи спасибо JDIMA
    Задачки предоставлены Наташей — автором лучшего викисайта по сетевым протоколам и технологиям — xgu.ru.
    92
    246464
    34
    34 коментария
    Dmitry Alekseev
    Войдите, чтобы ответить
    Добрый день.
    Прошу уточнить по Well-Known community, нет ли ошибки? т.к.
    согласно tools.ietf.org/html/rfc1997:
    «NO_EXPORT (0xFFFFFF01)
    1   2   3


    написать администратору сайта