Ситуация с маршрутами у нас такая.
Есть BGP-таблица, в которой хранятся абсолютно все маршруты, полученные от соседей.
То есть если есть у нас несколько маршрутов, до сети 100.0.0.0/23, то все они будут в BGP-таблице, независимо от “плохости” оных:
А есть знакомая нам таблица маршрутизации, хранящая только лучшие из лучших. Точно также BGP анонсирует не все приходящие маршруты, а только лучшие. То есть от одного соседа вы никогда не получите два маршрута в одну сеть.
Итак, критерии выбора лучших:
-
Максимальное значение Weight (локально для маршрутизатора, только для Cisco)
-
Максимальное значение Local Preference (для всей AS)
-
Предпочесть локальный маршрут маршрутизатора (next hop = 0.0.0.0)
-
Кратчайший путь через автономные системы. (самый короткий AS_PATH)
-
Минимальное значение Origin Code (IGP < EGP < incomplete)
-
Минимальное значение MED (распространяется между автономными системами)
-
Путь eBGP лучше чем путь iBGP
-
Выбрать путь через ближайшего IGP-соседа
Если это условие выполнено, то происходит балансировка нагрузки между несколькими равнозначными линками
Следующие условия могут различаться от вендора к вендору.
-
Выбрать самый старый маршрут для eBGP-пути
-
Выбрать путь через соседа с наименьшим BGP router ID
-
Выбрать путь через соседа с наименьшим IP-адресом
Как видите, очень много критериев выбора. Причём они довольно сложные и с ходу их все понять непросто. Втягивайтесь потихоньку.
О некоторых упомянутых атрибутах мы поговорим ниже, а конкретно на выборе маршрутов остановимся в отдельной статье.