Почему я вообще должен был это делать?
RomanЗаметка короткая, но у неё обязано быть предисловие. Вот оно:
Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.
(В общем, старая шутка про регэксп)
Итак, некоторые вендоры ведут себя странно. Представим себе вот такой кусок некой абстрактной топологии.
Есть сервера, у каждого из которых 4-ре ноги. Двумя ногами каждый сервер включен в один коммутатор, двумя другими - в другой:

Каждый линк - это чистый IPv6 L3-линк с Unique Local адресацией. Между серверами и коммутаторами - eBGP - каждый коммутатор в своей AS и каждый сервер - тоже. Сервера через каждые свои 4-ре линка что-то анонсируют коммутаторам - какой-то ipv6-ой префикс. С учётом того, что с точки зрения одного коммутатора этот префикс достижим минимум через два линка здравая идея здесь включить ECMP. Включаем. С учётом того, что бывают anycast-вые префиксы (когда разные сервера анонсируют один и тот же префикс) и потенциально у коммутатора будет ну очень много путей, включаем maximum path на максимум.
Теперь немного конкретики.
Пусть ServerA имеет ASN 4209910020 и анонсирует префикс "fd00:99:ff:1::/64"
Вопрос - вот с точки зрения свитча номер два сколько будет путей до префикса "fd00:99:ff:1::/64" ? Правильно - два:

Ну вот в bgp два путя - и в таблице маршрутизации два будет:

Ну и вопрос номер два. Сколько путей будет до префикса в таблице маршрутизации у свитча номер 1?
Я ожидал тоже два, но тут выскочил Аршавин!


Такс, а что там в BGP:

Оно логично - SW2 (AS-ка его 4209920002), получив маршрут на целевой префикс от Сервера A разослала его на все остальные сервера, ну а те в свою очередь отдали его на SW1
Но запихивать такие BGP анонсы в таблицу маршрутизации сразу? Серьёзно? Наравне с "более лучшими" по as-path length ?
Всегда считал, что для того, чтобы маршруты оказались "равными" с точки зрения ECMP у них должны совпасть - LP, Origin, MED и, мать его, AS Path! При этом, по умолчанию, AS-Path должен быть именно что одинаковым. Да, есть отдельные "послабления" в виде "as-path multipath-relax ", когда проверяется длина AS Path-а и его содержимое становится не важно. Но что бы и на длину можно было забить - такова я не видел.
В общем, удивился немного, потом вспомнил слова Аршавина. И пошёл проблему решать. Регэкспами да. Делаем, что нибудь такое, запрещая принимать анонсы где в качестве транзитной есть AS-ка второго свитча, и забываем как страшный сон то, что только что пришлось увидеть:
ip as-path access-list Drop_from_sw02 deny _4209920002_
ip as-path access-list Drop_from_sw02 permit .*