Продолжаем разбираться с агрегированием маршрутов в BGP.
Мы уже рассмотрели как суммаризовать маршруты с помощью network, расмотрели supress карты.
Сейчас мы рассмотрим параметр as-set, что он нам дает и для чего использовать.
Например у нас есть роутер A, имеющий сети 10.0.0.0/24, 10.0.1.0/24, к нему подключен по ebgp роутер B с сеткой 10.0.2.0/24.
Мы принимаем решение сделать суммаризацию маршрутов в /16 сетку на роутере B. Как это сделать, мы уже знаем : aggregate-address 10.0.0.0 255.255.0.0 summary-only
Так же роутер А у нас подключен к другой AS, та в свою очередь еще к одной и так далее, и при просмотре маршрутов BGP на тех роутерах, мы будем видеть, что маршрут к нам пришел из AS роутера А (а на самом то деле из AS роутера B).
Смотрим на сеть 10.0.0.0/16 видим, что маршрут пришел из 10-ой системы (на самом деле здесь агригируется маршрут из другой, 40-ой системы), потом прошел через 100-ую.
Если мы укажем параметр as-aet в aggregate-address, то мы увидим и ту систему из которой пришла сеть, которая в дальнейшем была агрегирована.
Итак, прописываем
aggregate-assress 10.0.0.0 255.255.0.0 as-set summary-only
и смотрим изменения:
Теперь видим, что добавилась AS, 40, в которой и был создан наш маршрут, который в дальнейшем был склеен.
Чем же нам грозит то, что не будет видно AS в которой был поражден маршрут? А тем, что может возникнуть петля.
В BGP реализован простейший метод проверки на петлю. При получении маршрута смотрится AS-PATH, и если себя там не обнаруживаем, то считается что петель нет, и наоборот, если мы находим там свою AS, то маршрут отбрасывается — loop detected. Так работает BGP по умолчанию, но это умолчание может изменяться.
Для того, что бы посмотреть, кем был агрегирован маршрут, можно использовать команду:
show ip bgp 10.0.0.0/16
Получаем:
Видим, что aggregated by указывает на IP того роутера, который суммаризовал запрос. И рядом видим AS. Все честно 🙂