前期回顾:
1、BGP通告原则之一:仅将自己最优的路由发布给邻居
2、BGP通告原则之二:通过EBGP获得的最优路由发布给所有BGP邻居
3、BGP通告原则之三:通过IBGP获得的最优路由不会发布给其他的IBGP邻居
4、BGP通告原则之四:BGP与IGP同步
实验:
R1:
<Huawei>sys
[Huawei]sysname R1
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 10.1.12.1 24
R2:
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ip add 10.1.12.2 24
[R2-GigabitEthernet0/0/0]int g0/0/1
[R2-GigabitEthernet0/0/1]ip add 10.1.23.2 24
[R2-GigabitEthernet0/0/1]int l0
[R2-LoopBack0]ip add 2.2.2.2 32
R3、R4分别与R2一样多配置了一个l0接口,
R5不用配置l0
继续实验,
两个AS互联的接口不需要加入到isis协议中,将R2的g0/0/1接口加入到isis中。
[R2]isis
[R2-isis-1]is-le
[R2-isis-1]is-level le
[R2-isis-1]is-level level-2
[R2-isis-1]network-entity 49.0002.0000.0000.0002.00
[R2-isis-1]int l0 enabl
[R2-isis-1]int lo 0
[R2-LoopBack0]isis enable
[R2]int g0/0/1
[R2-GigabitEthernet0/0/1]isis enable
R3:级别2的路由器在建立邻居的时候可以不在同一个区域,所以我们区域选择49.0003.0000.0000.0003.00
R4: 49.0004.0000.0000.0004.00
将接口像配置R2的g0/0/1的那样配置起来
我们使用dis isis peer查看
接下来我们进行BGP协议的配置
R1
[R1]bgp 1
[R1-bgp]peer 10.1.12.2 as-number 234
R2
[R2]bgp 234
[R2-bgp]peer 10.1.12.1 as-number 1
[R2-bgp]peer 4.4.4.4 as-number 234
[R2-bgp]peer 4.4.4.4 connect-interface LoopBack 0
R4
[R4] bgp 234
[R4-bgp]peer 2.2.2.2 as-number 234
[R4-bgp]peer 2.2.2.2 connect-interface LoopBack 0
[R4-bgp]peer 10.1.45.5 as-number 5
R5
[R5]bgp 5
[R5-bgp]peer 10.1.45.4 as-number 234
邻居关系基本建立完毕
继续实验
我们在R1上起一个环回口,
R1
[R1]int l0
[R1-LoopBack0]ip address 1.1.1.1 24
我们知道,在BGP中,如果我们想通过BGP访问别的路由器,需要将访问的路由发布出去。
继续
[R1]bgp 1
[R1-bgp]network 1.1.1.0 24
通过bgp路由表我们可以看到
1、路由器R1自己产生(通过路由表我们可以看到nethop为0.0.0.0,所以一般是路由器自己始发的路由)了一条1.1.1.0的路由。
我们可以查看这条路由的详细信息
[R1-bgp]dis bgp routing-table 1.1.1.0
BGP local router ID : 10.1.12.1
Local AS number : 1
Paths: 1 available, 1 best, 1 select
BGP routing table entry information of 1.1.1.0/24:
Network route. #表示发布方式是通过network发布的
From: 0.0.0.0 (0.0.0.0)
Route Duration: 00h04m38s
Direct Out-interface: LoopBack0
Original nexthop: 1.1.1.1
Qos information : 0x0
AS-path Nil, origin igp, MED 0, pref-val 0, valid, local(表示是本路由器产生的), best, select, pre 0
Advertised to such 1 peers:
10.1.12.2
2、我们还可以看到它的标记>,表示是最优的路由,这就意味着,它将会发送给所在路由的所有bgp邻居。
查看R2的路由表,我们发现它还是>标记的最优路由,并且下一跳变为了10.1.12.1
我们查询R4的IGP路由表发现,R4的IGP路由表中并没有同步BGP表中的1.1.1.0的路由。
这样我们可以验证之前的规则,只有BGP与IGP同步的路由才会发给该路由的EBGP邻居。我们看下R4的BGP路由表没有与IGp路由表同步的情况下会不会发给它的EBGP邻居R5,
并没有。
我们查看R4bgp路由,这条路由既不是最优的路由又没有进行BGP与IBGP的同步,那到底是什么原因导致的R5无法产生1.1.1.0的路由呢。
我们先将BGP路由与IGP进行同步操作。
在R2上,
[R2]isis
[R2-isis-1]import-route bgp
接着我们查看R4的路由表和之前的路由表做对比。
BGP路由表和IGP路由表同步了,通信的协议是ISIS
我们查看R5是否有1.1.1.0的路由,发现依然没有。因此我们认为这个路由是因为不是最优的路由所以不会被发送给EBGP。
我们查看R4的BGP路由表,会发现有个标识
-
valid,
带有这种标识的路由代表是有效的路由,即下一跳可达的路由。
我们仔细观察,这条路由的下一跳,还是10.1.12.1,和我们在R2上看到的下一跳是一样的。
我们查看ip路由表,模拟一下R4得到这条路由,先在路由表中查询下一跳,如果查到了就进行转发。
-
顺着这个思路,我们人为指定一条下一跳,让它变得可达
[R4]ip route-static 10.1.12.1 32 10.1.34.3
此时它有的自己的下一跳,这个下一跳也是唯一的一个地址,所以它就变“最优”,并且此时BGP路由表和IGP路由表也同步了。
此时我们看R5
此时我们将之前做的BGP和IGP同步的命令取消,在R2中
[R2-isis-1]undo import-route bgp
此时R5依然能够拥有R4传递过来的1.1.1.0的路由。我们并没有做同步。
我们把R4之前的不做同步加静态路由的方法显示的BGP路由表和BGP路由表各自做对比。
不做同步加静态路由
做同步不加静态路由
发现是因为我们加了静态路由才解决的这个问题,但是每这样一次我们都需要加静态路由的话,BGP网络庞大,一定加不过来的,我们找寻另一种方法。
提供一个思路:之所以R4不转发是因为下一跳还是原来的10.1.12.1,不会改变的原因,具体的说,是因为R2从EBGP邻居传递过来的路由到IBG邻居时,下一跳默认不变。