BGP sẽ gán đường đi hợp lệ đầu tiên như là đường đi tốt nhất hiện có. Sau đó BGP sẽ so sánh đường đi tốt nhất này với đường đi kế tiếp trong danh sách cho tới khi nào hoàn tất tất cả các đường trong danh sách đường đi hợp lệ. Dưới đây là danh sách các luật được dùng để xác định đường đi tốt nhất.
- Ưu tiên đường đi có trọng số WEIGHT cao nhất. WEIGHT là một thông số do Cisco đưa ra. Thông số này chỉ có ảnh hưởng trong phạm vi nội bộ của router được cấu hình dùng thông số này.
- Ưu tiên đường có LOCAL_PREF cao nhất. Những đường đi không có thuộc tính LOCAL_PREF sẽ có giá trị mặc định là 100.
- Ưu tiên những đường đi có nguồn gốc từ lệnh network hoặc lệnh aggregate hoặc thông qua quá trình redistribution từ một IGP. Các đường đi có nguồn gốc từ lệnh network hoặc lệnh redistribution được ưu tiên hơn những đường đi có nguồn gốc từ lệnh aggregate.
Tìm hiểu và triển khai hệ thống mạng với giao thức BGP cho doanh nghiệp
- Ưu tiên những đường đi có thuộc tính AS_PATH ngắn nhất. Bước này sẽ bị bỏ qua nếu biến bgp bestpath as-path được cấu hình. Một tập hợp AS_SET sẽ được đếm từ 1, bất chấp có bao nhiêu AS bên trong tập hợp. Các biến AS_CONFED_SEQUENCE và AS_CONFED_SET sẽ không bao gồm trong AS_PATH.
- Ưu tiên các đường đi có nguồn gốc thấp nhất. IGP thì thấp hơn EGP và EGP thì thấp hơn INCOMPLETE.
- Ưu tiên những đường đi có giá trị MED nhỏ nhất. Sự so sánh này chỉ được thực hiện nếu AS đầu tiên là giống nhau cho cả hai đường đi. Bất cứ một AS con của confederation sẽ bị bỏ qua. Nói cách khác, ME được so sánh chỉ nếu giá trị AS đầu tiên trong AS_SEQUENCE là giống nhau. Nếu lệnh bgp always-compare-med được cấu hình, MED được so sánh cho tất cả các đường đi có thể. Nếu dùng chọn lựa này, tất cả các router trong AS phải được cấu hình với chọn lựa bgp always-compare-med, nếu không routing loop sẽ xảy ra. Nếu thông số bgp bestpath med-confed được cấu hình, MED sẽ được so sánh trên tất cả các đường đi mà chỉ chứa biến AS_CONFED_SEQUENCE (là những đường đi xuất phát từ local confederation). Những đường đi được nhận từ một router láng giềng có giá trị MED là 4,294,967,295 sẽ có giá trị MED thay đổi đến 4,294,967,294 trước khi được chèn vào bảng BGP. Những đường đi được nhận mà không có MED được cấu hình sẽ được gán giá trị MED bằng 0.
- Ưu tiên những đường đi eBGP so với iBGP. Nếu đường đi tốt nhất được chọn lựa, qua bước 9.
- Ưu tiên những đường đi có IBP metric thấp nhất đến BGP next-hop.
- Kiểm tra xem có nhiều đường đi dự phòng cần phải cài đặt vào bảng routing hay không. Nếu cả hai đường đi là từ bên ngoài, ưu tiên đường đi được nhận trước (đường đi cũ nhất). Bước này sẽ bị bỏ qua nếu:
+ Lệnh bgp best path compare-routerid được dùng.
+ RouterID là giống nhau cho nhiều đường đi vì các routes được nhận từ cùng 1 router.
+ Hiện tại không có một đường đi tốt nhất.
- Ưu tiên những đường đi đến từ BGP router có routerID nhó nhất. Giá trị routerID là địa chỉ IP cao nhất trên router. Giá trị này cũng có thể được gán bằng lệnh bgp router-
Tìm hiểu và triển khai hệ thống mạng với giao thức BGP cho doanh nghiệp
id. Nếu một đường đi chứa 1 route-reflector, thuộc tính Originator ID của Route-Reflector sẽ thay thế cho routerID.
- Nếu RouterID là giống nhau cho nhiều đường đi, ưu tiên đường đi có số cluster là ít nhất. Điều này chỉ đúng trong môi trường BGP route-reflector. Nó cho phép những thành viên trong Route-Reflector thiết lập quan hệ peer với các thành viên trong các RR khác.
- Ưu tiên những đường đi đến từ những láng giếng có địa chỉ thấp nhất. Địa chỉ này là địa chỉ được dùng trong lệnh neighbor.