Сегодня я про BGP. Заметки с работы — чтобы не пропадали.
Есть такой функционал, как фиктивная AS.
Здесь и далее говорю в нотации Huawei.
Традиционный сценарий использования — это переезд с одного номера АС на другой, например, при покупке сети одного оператора другим. При этом есть стопицот соседей, которые почему-то не могут взять и все разом переехать вместе с нами.
Тогда для них, мы можем настроить пиринг так, будто бы мы остались в старой АС.
Если для пира указать команду fake-as, то и в Open и в AS-Path появится именно она, а не новая (настоящая). У циски тот же функционал называется Local-as.
Удобный инструмент, когда используется по назначению.
Теперь, условно, сеть заказчика:
Клиент хочет, спать не может, пиринг с АС3. Но не хочет платить за VPN. Просто попросил АС2 представиться АС3.
Вот этот промежуточный АС2 и настраивает фиктивную АС на своём ASBR, указывая в её качестве АС3.
Проблема в том, что ASBR при анонсе маршрута всё равно, негодяй такой, вставляет в AS-Path фиктивную АС, несмотря на то, что она там уже есть.
То есть AS-Path для маршрутов, которые получает клиент, выглядит как <АС3, АС3, итд.>
В документации написано, что, если соседство было установлено через фиктивную АС, то и в AS-Path именно она появится. Если через настоящую — то настоящая. Но так, чтобы совсем не появлялась — нельзя. Ну не аккуратненько это, супротив идеологии BGP.
В таком случае на оборудовании Хуавей нет другого способа, кроме как вручную через рут-полиси сделать overwrite AS-Path, что совсем не по-инженерски, понятное дело.
В новых версиях появилась возможность указывать, какую именно АС хочешь добавлять — фиктивную или настоящую. Однако не добавлять вообще — нет такой опции.
Ещё я тут хочу сказать про циску — в случае заказчика технически на циске можно реализовать его хотелку.
Сначала расскажу, чем отличается работа этой команды там — главное отличие — по умолчанию циска вставляет две АС — и настоящую и фиктивную. Сделано это для того, чтобы исключить образование петли маршрутизации (вот это по-бгпшному).
В команде local-as есть атрибуты no-prepend и replace-as. No-prepend позволят не добавлять в AS-Path номер фиктивной АС — только настоящей. Опция replace-as позволит заменить её на фиктивную.
То есть опять вроде как нельзя реализовать полное удаление. И вообще такого рода манипуляции с AS-Path ни к чему хорошему не приводят.
Чисто для примера можно вспомнить недавнюю историю о том, как недавно Иран лишил порнухи себя и ближайшие страны, когда поигрался с анонсами БГП.
Но особенность в том, что у заказчика номер АС2 — приватный. И если использовать комбинацию опций local-as no-prepend replace-as, а потом добавить remove-private-as (цисковский аналог хуавэйско команды public-as-only) то всё-таки срабатывает и дублирующая АС удаляется.
Но повторюсь, это читерство и костыль.
Автор: eucariot