BGP завжди вибирає один з маршрутів як найкращий. Коли маршрут обрано, BGP поміщає його в свою таблицю маршрутизації, і передає його своїм neighbor’ам (сусідам). Для вибору найкращого маршруту BGP використовує наступні критерії:
- Якщо шлях, вказаний в полі next-hop, недоступний, цей update знищується.
- Кращим вважається шлях з найбільшим значенням weight;
- Якщо weight шляхів однакові, то вибирається шлях з найбільшим lpref (local-preference);
- Якщо weight і lpref однакові, то вибирається шлях, який з’явився в таблиці маршрутів BGP на даному роутері. (Мається на увазі, що це буде самий найліпший шлях);
- Якщо немає шляхів, які “народилися” на даному роутері, то вибирається шлях з AS_path мінімальної довжини;
- Якщо всі шляхи мають однакову довжину (а, отже, однакова кількість hop’ів), вибирається шлях з “lowest origin type“. Вважається, що IGP <EGP <Incomplete
- Якщо Origin attr. code однакові для всіх шляхів, вибирається шлях з найменшим MED attr.;
- Якщо і MED однакові для всіх можливих шляхів, кращим вважається external path перед internal path;
- Якщо знову всі шляхи однакові, то prefer the path through the closest IGP neighbor;
- Вибирається шлях з найменшою IP адресою з тих, які вказуються by the BGP router ID.
Оригінал: muff.kiev.ua/content/bgp-kak-proiskhodit-vybor-nailuchshego-marshruta