2.BGP选路原则
(1)实验 2.1 优选 Prefval 值更高的路由
【1】实验目的
深入理解13条选路原则的第一条,基于Prefval值选路;掌握修改Prefval值的两个方法。
【2】IP地址规划
-
互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
-
每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
【3】实验拓扑
【4】实验步骤
a.先配置基本的IP地址,此处略。
b.配置AS100内部的IGP,确保AR1,AR2的环回口可达。
在AR1上:
在AR2上:
c.配置AS100内部的IBGP连接关系,用lookback0作为建立IBGP连接的IP地址,配置下一跳为本地。
在AR1上:
在AR2上:
d.配置各个AS间的EBGP连接关系,用直连接口IP地址建立EBGP连接。
在AR1上:
在AR2上:
在AR3上:
e.在AR1上查看邻居状态
f.在AR3上用network的方法产生一条BGP路由
g.在AR3上去查看一下这条路由
- 我们发现这条路由的Prefval值为0,因为起源于本地。
h.再去AR1上查看一下
- 以上表示 AR1 这条路由从 AR3 学到了,然后也从 AR2 学到了。他们的 PrefVal 值都为0。现在因为选路原则(EBGP 优于IBGP)选择了从AR3来的路由。现在去修改成从AR2学到于的路由 PreVal值为 100,以重新选择为从 AR2 来的更优。
i.针对从某个邻居学习到的所有路由修改 PrefVal值。
在AR1上:
刷新一下BGP路由表:
再去查看AR1的BGP表:
- 以上表示此路由重新选择了AR2,因为从AR2学习到的路由器前缀的 PrefVal值为1000。但此方法有不精确的地方,就是从 AR2 学过来的所有路由的 PrefVal值都会变成1000,所以我们一般会用第二种方法:
j.先在 AR1 上用 route-policy 去匹配这条路由然后优改此路由的 PrefVal值。
在AR1上:
再去调用这个route-policy
然后在AR1查看BGP路由表:
以上表明成功修改成了 200,并且我们发现,当我们二种方法都使用了的话,用route-policy 的这种方法的优先级会更高一些。
k.再去 AR3 上产生一条路由来观察这种现象。
然后在AR1上查看BGP路由表:
以上表示我们用route-policy精确匹配的一条被优先改成了200,其他的改成了1000。
(2)实验 2.2 优选 local preference 值更高的路由
【1】实验目的
深入理解13条选路原则的第二条,基于Local Preference值选路,掌握修改Local Preference值的两个方法。
【2】IP地址规划
-
互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
-
每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
【3】实验拓扑
【4】实验步骤
- 基础环境搭建:IP 地址规划和前面实验一致。
- 配置 AS100 内部的 IGP,确保 AR1,AR2 的回环口可达。
- 配置 AS100 内部的IBGP 连接关系,用loopback0 作为建立 IBGP 连接的IP 地址,配置下一跳本地(next-hop-local)
- 配置各个 AS 间的 EBGP 连接关系,用直连接口IP 地址建立 EBGP 连接以上步骤不再演示。做好以后,在 AR1,AR2,AR3 上都会看到两个 BGP 邻居关系。
a.在AR1上查看BGP邻居
b.在AR3上用network的方法产生一条路由10.1.3.3/32,此步骤也不再演示
c.做完以上步骤后去AR1上查看BGP表项
- 以上表示从 IBGP 邻居 AR2 学到的路由默认的 Local preference 值为 100,从EBGP邻居 AR3 学到的值为空(EBGP 邻居过来的条目不带 local preference 值),但是本地路由器会赋予没有携带 local preference 的 BGP 条目默认值。所以此时通过 AR3 学来的路由前缀实质在本地的 local preference 值也为100。所以此时没有通过比较 localpreference 值选出最优路径。
- 现在 AR1 的选择是从 AR3 学过来的路由前缀,我们去修改从 AR2 学过来的 localpreference 值为 200,然后去观察选路的变化。
d:用 route-policy 的方法针对某个邻居的某条路由做修改
先用 route-policy把要修改的路由匹配上修改成期望值:
在AR1上:
e.再去基于R2邻居调用即可
在AR1上:
f.刷新一下R1的BGP表项,然后再看BGP路由
- 以上表示已经生效了。由于从 AR2学过来的这条路由local preference 值已经变成了200,被选为了最优。
- 我们再去用另一种把从 AR3学过来的local preference 值改为 300,让 BGP 再把从 AR3选为最优:用下面的方法实现
g.修改缺省的local preference 值,此命令只对从 EBGP 邻居学过来的路由和本地产生的路由生效。对于从IBGP 学过来的路由不生效。
在AR1上:
做完之后再去查看AR1的BGP表项:
- 通过上面的表项看到了AR1只有通过AR3学习到了路由前缀,那为什么AR1没有了从AR2学过来的那条路由了呢?
h.我们去AR2上查看BGP表:
- 以上表示 AR2 选择了从 AR1 过来的最优,所以没有再把这条路由回传给 AR1了,而且我们发现从 AR1 传递过来的前缀local preference 变成了 300,也正因为如此 AR1 上才只有从 AR3 学习到的前缓。这也说明了 local preference 值在同一个 AS 之间是可以相互传递的。
(3)实验 2.3 优选从本路由器始发的路由
【1】实验目的
深入理解13条选路原则的第三条,优选从本地注入的BGP条目。
【2】IP地址规划
-
互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
-
每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
【3】实验拓扑
【4】实验步骤
- 基础环境搭建:IP 地址规划和前面实验一致。
- 配置 AS100 内部的 IGP,确保 AR1,AR2 的回环口可达。
- 配置 AS100 内部的IBGP 连接关系,用loopback0 作为建立 IBGP 连接的IP 地址,配置下一跳本地(next-hop-local)
- 配置各个 AS 间的 EBGP 连接关系,用直连接口IP 地址建立 EBGP 连接以上步骤不再演示。做好以后,在 AR1,AR2,AR3 上都会看到两个 BGP 邻居关系。
a.在AR1上产生一条100.1.1.1/32的路由
这条路由必然会被AR2所学到,然后我们再去AR2上产生同样的一条路由。
b.在AR2上产生同样一条路由
c.在AR2上查看BGP路由表
- 可以看到,从 AR2 本身宣告的条目 LocPrf为空,缺省是100。因此第一二条选路原则都不能选出最优 BGP 条目。下一跳为 0.0.0.0 的 BGP 条目为 AR2 自身宣告的条目,被选为最优。
(4)实验 2.4 优选有最短 AS_PATH 的 BGP 路由条目
【1】实验目的
深入理解13条选路原则的第四条,学会使用route-policy增加as-path影响
【2】IP地址规划
-
互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
-
每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
【3】实验拓扑
【4】实验步骤
- 基础环境搭建:IP 地址规划和前面实验一致。
- 配置 AS100 内部的 IGP,确保 AR1,AR2 的回环口可达。
- 配置 AS100 内部的IBGP 连接关系,用loopback0 作为建立 IBGP 连接的IP 地址,配置下一跳本地(next-hop-local)
- 配置各个 AS 间的 EBGP 连接关系,用直连接口IP 地址建立 EBGP 连接以上步骤不再演示。做好以后,在 AR1,AR2,AR3 上都会看到两个 BGP 邻居关系。
a.现在AR3上network宣告10.1.3.3的路由,然后在AR1上查看BGP表项
以上表示现在选择了从AR3过来的路由条目最优,我们现在去把从AR3学过来的路由前缀AS-path加长,这样就会选择从AR2过来的最优了。
b.在AR1上配置route-policy
c.再去针对AR3邻居调用这个route-policy
d.在AR1上查看BGP路由表:
以上表示已经成功了,重新选择了从AR2过来的路由为最优。并且也看到了新加的3个AS Path。
(5)实验 2.5 优选更低 Origin 属性的路由
【1】实验目的
深入理解13条选路原则的第五条,学会使用route-policy影响第五条选路原则。
【2】IP地址规划
-
互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
-
每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
【3】实验拓扑
【4】实验步骤
- 基础环境搭建:IP 地址规划和前面实验一致。
- 配置 AS100 内部的 IGP,确保 AR1,AR2 的回环口可达。
- 配置 AS100 内部的IBGP 连接关系,用loopback0 作为建立 IBGP 连接的IP 地址,配置下一跳本地(next-hop-local)
- 配置各个 AS 间的 EBGP 连接关系,用直连接口IP 地址建立 EBGP 连接以上步骤不再演示。做好以后,在 AR1,AR2,AR3 上都会看到两个 BGP 邻居关系。
a.现在AR3上network宣告10.1.3.3的路由,然后在AR1上查看BGP表项
- 我们去把AR3学过来的路由的起源属性改为incomplete,这样就会重新选择AR2了。
在AR1上:
b.再对AR3调用这个route-policy
c.刷新一下路由表再去看现象
- 我们发现从AR3学过来的路由起源已经变为了 “?” ,并且也选择了AR2作为最优。
(6)实验 2.6 优选最小 MED 值的路由
【1】实验目的
深入理解13条选路原则的第六条,学会使用route-policy影响第6条选路原则。
理解什么情况下MED值的比较生效,理解compare-different-as-med。
【2】IP地址规划
-
互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
-
每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
【3】实验拓扑
【4】实验步骤
- 基础环境搭建:IP 地址规划和前面实验一致。
- 配置 AS100 内部的 IGP,确保 AR1,AR2 的回环口可达。
- 配置 AS100 内部的IBGP 连接关系,用loopback0 作为建立 IBGP 连接的IP 地址,配置下一跳本地(next-hop-local)
- 配置各个 AS 间的 EBGP 连接关系,用直连接口IP 地址建立 EBGP 连接以上步骤不再演示。做好以后,在 AR1,AR2,AR3 上都会看到两个 BGP 邻居关系。
a.现在AR3上network宣告10.1.3.3的路由,然后在AR1上查看BGP表项
b.然后再从AR2查看BGP表项
- 以上表示 AR1,AR2 分别都选择了各自的 EBGP 邻居 AR3 做为自己最优下一跳。现在我们去 AR3 上的出方向做修改,让 AS100(也就是 AR1 和 AR2)的所有流量都从 AR1进入AS200(也就是去访问 AR3)。
- 针对于 AR1,我们修改 10.1.3.3/32路由的 MED值 500。针对于 AR2,我们修改为 1000这样就会选择 AR1。
c.在AR3上配置route-policy
d.再写针对AR2的route-policy
e.分别去调用他们
f.先在AR3刷新一下出向,然后去AR1,AR2查看BGP路由表
- 以上表示 AS100 里面的 AR1,AR2 的选路都是从 AR1 进到 AS200 了,达到了我们的要求。
- MED 值的比较条件:在 AS-PATH 中,默认第一个AS 号相同时才进行 MED 比较。
- 现在我们让 AR2 收到的这条路由的第一个 AS 号不一致,再来看现象
- 用我们刚才学到的知识,分别 AR1和 AR2 的入方向改变 AS-path (增加的长度要一样,AS 号码要不同)。
g.在AR1上
h.再去AR2上
h.直接在AR2 查看BGP路由表
以上表示 AR2 从 AR3 学过来的 metric 值为 1000,但他依然选择了 AR3 为最优,这就是因为他们的第一个 AS path 不一致,默认情况是不比较 Metric 值的。
i.这时,如果第一个AS path 不一致时,我们也可以用以下命令要求 BGP 去做比较
在AR2上:
然后再AR2上看BGP路由表:
以上表示在第一个AS不一致的时候,也开始比较MED值了。达到实验要求。
(7)实验 2.7优选从 EBGP 邻居学习到的路由
【1】实验目的
深入理解13条选路原则的第七条。
【2】IP地址规划
-
互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
-
每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
【3】实验拓扑
【4】实验步骤
- 基础环境搭建:IP 地址规划和前面实验一致。
- 配置 AS100 内部的 IGP,确保 AR1,AR2 的回环口可达。
- 配置 AS100 内部的IBGP 连接关系,用loopback0 作为建立 IBGP 连接的IP 地址,配置下一跳本地(next-hop-local)
- 配置各个 AS 间的 EBGP 连接关系,用直连接口IP 地址建立 EBGP 连接以上步骤不再演示。做好以后,在 AR1,AR2,AR3 上都会看到两个 BGP 邻居关系。
a.现在AR3上network宣告10.1.3.3的路由,然后在AR1上查看BGP表项
b.然后在AR2上查看路由表和详细路由
- 可以看到 AR1 和 AR2 都优选直接从 AR3 学习到的 BGP 条目,而且在 AR2 上输出详细内容发现从 AR1 学习到的路由信息不优选的原因是“not preferred forpeer type”,同理AR1 上也是一样。
- 备注:peer type类型两种,IBGP和EBGP,EBGP>IBGP。
(8)实验 2.8优选从更近的 BGP邻居学到的路由
【1】实验目的
- 深入理解13条选路原则的第八条,掌握通过调整去往BGP条目next-hop的路由的IGP度量值来影响BGP路由选路。
- 其实这个用到的情况非常少,因为需要EBGP邻居之间也运行IGP协议,正常情况下EBGP邻居是不会跑IGP的。
- 所以这个实验跳过,记住这个原理就行了。
(9)实验 2.9 BGP 的等价负载均衡
【1】实验目的
理解BGP的等价负载均衡,掌握打开和关闭IBP和EBGP的等价负载均衡。
【2】IP地址规划
-
互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
-
每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
【3】实验拓扑
【4】实验步骤
- 基础环境搭建:IP 地址规划和前面实验一致。
- 配置 AS100 内部的 IGP,确保 AR1,AR2 的回环口可达。
- 配置 AS100 内部的IBGP 连接关系,用loopback0 作为建立 IBGP 连接的IP 地址,配置下一跳本地(next-hop-local)
- 配置各个 AS 间的 EBGP 连接关系,用直连接口IP 地址建立 EBGP 连接以上步骤不再演示。做好以后,在 AR1,AR2,AR3 上都会看到两个 BGP 邻居关系。
a.去AR2上产生一条路由
b.去AR3上查看BGP表与路由表
- 以上表示 AR3 选择了从 AR1 传过来的路由,原因是因为从 AR1 学习到了这一条的route-id 小。但那不是前8条选路原则选出来的,所以这里我们就可以实现负载均衡。
c.接下来直接去AR3上打开负载分担就行了
d.然后再查看AR3的路由表
- 以上表示这条路由有了两个下一跳,实现了负载分担。
(10)实验 2.10 优选拥有最短的 cluster-list长度的路由
【1】实验目的
深入理解13条选路原则的第十条。
【2】IP地址规划
-
互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
-
每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
【3】实验拓扑
【4】实验步骤
- 基础环境搭建:IP 地址规划和前面实验一致。
- 配置 AS100 内部的 IGP,确保 AR1,AR2,AR5,AR6 的回环口可达
- 配置AR1,AR2,AR5全互联IBGP邻居,AR5与AR6配置IBGP邻居,以上配置自己配好。
a.配置AR1和AR2为RR,他们client都为AR5,然后配置AR5为RR,AR5的client为AR6。
b.再去AR6上用network方式产生一条BGP路由
c.去AR1上查看BGP路由表
- 以上表项说明此路由的下一跳都是一样的,甚至我们都看不出来这两条分别是从哪里学来的。
d.再去看详细的
- 可以看到选了Cluster List最短的。
(11)实验 2.11优选具有更小的 Originator ID或者是 route-ID的 BGP 邻居
【1】实验目的
深入理解13条选路原则的第十一条。
【2】IP地址规划
-
互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
-
每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
【3】实验拓扑
【4】实验步骤
- 基础环境搭建:IP 地址规划和前面实验一致。
- 配置 AS100 内部的 IGP,确保 AR1,AR2 的回环口可达。
- 配置 AS100 内部的IBGP 连接关系,用loopback0 作为建立 IBGP 连接的IP 地址,配置下一跳本地(next-hop-local)
- 配置各个 AS 间的 EBGP 连接关系,用直连接口IP 地址建立 EBGP 连接以上步骤不再演示。做好以后,在 AR1,AR2,AR3 上都会看到两个 BGP 邻居关系。
a.去AR2上产生一条路由
b.去AR3上查看BGP表与路由表
c.然后直接看10.1.22.22这条路由的详细
- 以上表示AR3选择了从AR1传过来的路由,原因是因为从AR1学习到的这一条路由的router-id小。
(12)实验 2.12优选具有最小BGP邻居地址的路由
【1】实验目的
深入理解13条选路原则的第十二条。
【2】IP地址规划
-
互联地址采用 10.1.XY.X/24位,比如 AR1与 AR2 的互联接口地址分别为 10.1.12.1/24和 10.1.12.2/24,以此类推。
-
每台设备都有一个测试用的loopback0口,地址为10.1.X.X/32,比如 AR1的loopback0口地址为 10.1.1.1/32,以此类推。
【3】实验拓扑
【4】实验步骤
- 基础环境搭建:IP 地址规划和前面实验一致。
- 配置 AS100 内部的 IGP,确保 AR1,AR2 的回环口可达。
- 配置 AS100 内部的IBGP 连接关系,用loopback0 和lookback1作为建立 IBGP 连接的IP 地址,以上步骤不再展示。
a.注意在AR1和AR2上分别都有lookback0和lookback1接口
b.接下来配置IBGP邻居
在AR1上:
在AR2上:
c.在AR2上用network方式产生一条BGP路由100.1.2.2/32
d.再去AR1上查看BGP路由表
- 以上表示AR1选择了更小的IP地址建立的邻居关系的路由