目录
前言
我在前一篇博客的 【2.2.2 实验二】中使用BGP实现了两个AS之间 的通信,但是为什么 AR1的路由表中访问AR5 不走AR3,确走的AR2 ?(原因是因为对于等价路由 2.2.2.2 的地址 比 3.3.3.3 小,所以优先级高)
那么能不能通过手动配置来控制走哪一条路呢?本篇博客将对这些属性进行学习。
一、BGP选路
1.1 BGP路由表
了解路由表与BGP路由表的关系:
- 当BGP设备学习到去往同一个目的网络的多条BGP路由(路径)时,设备将这些路由都装载到BGP路由表,并在这些条目中进行路由优选,最终决策出最优(Best )的路由,将该BGP路由加载到全局路由表中,作为数据转发的依据。
- 当存在多路径时,BGP只会将其选择出来的最优路由通告给其他对等体。
- BGP定义了一系列路由优选规则,从而使得设备能够在多条路由中选择出最优的路由。BGP在选择路由时严格按照先后顺序比较路由的属性,如果通过当前的属性就可以选出最优路由,BGP将不再进行后面的比较。
查看BGP路由表命令:
display bgp routing-table
R1 执行 查看BGP路由表命令:
红框中的大于号表示 R1 1.1.1.1 到 5.5.5.5的最佳路径是 2.2.2.2。
路由器的路由表 与 BGP路由表之间的关系:
- BGP路由表中存的是所有有可能有效的路由,像图中的 2.2.2.2 3.3.3.3。
- 最终路由器会选择一条最佳的路由,放到路由器的路由表当中,如 2.2.2.2,最终路由转发是从这张表中取的。
1.2 BGP选路规则
BGP路由优选规则也被称为BGP选路规则,不同厂商的设备在BGP选路上存在细微差异。
- 如果此路由的下一跳不可达,忽略此路由;
- Preferred-Value 值 数值越高越优先,华为私有属性,仅本地有意义;
- Local-Preference值最高的路由优先;
- 聚合路由(路由汇总后的路由)优先于非聚合路由;
- 本地手动聚合路由的优先级高于本地自动聚合的路由;
- 本地通过Network命令引入的路由的优先级高于本地通过 Import-route命令引入的路由;(Network 和 Import-route 都是BGP宣告路由的方式)
- AS-Path 的长度最短的路径优先;
- 比较Origin属性,IGP优于EGP,EGP优于Incomplete;
- 选择MED较小的路由;
- EBGP路由优于IBGP路由;
- BGP优先选择到BGP下一跳的IGP度量值最低的路径;
当以上全部相同,则为等价路由,可以负载分担(注意:AS_Path必须一致,当负载分担时,以下3条原则无效)
- 比较Cluster_list长度,短者优先;
- 比较Originator_ID(如果没有Originator_ID,则用Router_ID比较),选择数值较小的路径;
- 比较对等体的IP地址,选择IP地址数值最小的路径。(也就是前言中,为什么走的是 2.2.2.2 的原因)
1.3 路径属性
二、BGP选路三大属性及实验
都是根据比较值/长度大小来选路的。
选路常用命令:
display bgp peer #查看bgp的对等信息Established为成功建立
display bgp routing-table #查看bgp的路由表信息
[R3] route-policy lop permit node 10 #创建名为lop的路由策略
<R3>reset bgp all #重启BGP,需要在用户模式
<R3>refresh bgp all #软复位,需要在用户模式
<R3>refresh bgp all import/export #软复位,需要在用户模式
2.1 根据Local-Preference控制选路
介绍
Local-Prefernce属性介绍:
- 优先级值越大越优先;
- Local-Preference 为公认自由属性,用于告诉AS中的路由器,哪条路径是离开AS的首选路径;
- Local-Preference 属性只能在 IBGP对等体间传递,而不能在 EBGP对等体间传递,如果在 EBGP对等体间收到的路由的路径属性中携带了 Local-Preference,则会触发 Notifacation报文,造成会话中断;
- 但是可以在AS边界路由器上使用 Import 入站方向 / export 出站方向 的策略来修改 Local-Preference属性值。也就是在收到路由之后,在本地为路由赋予 Local-Preference。
【Local-Prefernce策略命令】