实验拓扑及要求:
一、配置IP及运行动态路由协议:
AR1:
#
interface GigabitEthernet0/0/0
ip address 10.1.12.1 255.255.255.0
#
interface LoopBack0
ip address 1.1.1.1 255.255.255.0
#
interface LoopBack1
ip address 99.1.1.1 255.255.255.0
#
ip route-static 2.2.2.2 255.255.255.255 10.1.12.2
AR2:
#
interface GigabitEthernet0/0/0
ip address 10.1.23.2 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 10.1.12.2 255.255.255.0
#
interface LoopBack0
ip address 2.2.2.2 255.255.255.0
#
ospf 1 router-id 2.2.2.2
area 0.0.0.0
network 2.2.2.0 0.0.0.255
network 10.1.23.0 0.0.0.255
#
ip route-static 1.1.1.1 255.255.255.255 10.1.12.1
AR3:
[V200R003C00]
#
sysname r3
#
interface GigabitEthernet0/0/0
ip address 10.1.34.3 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 10.1.23.3 255.255.255.0
#
interface LoopBack0
ip address 3.3.3.3 255.255.255.0
#
ospf 1 router-id 3.3.3.3
area 0.0.0.0
network 3.3.3.0 0.0.0.255
network 10.1.0.0 0.0.255.255
AR4:
#
sysname r4
#
interface GigabitEthernet0/0/0
ip address 10.1.45.4 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 10.1.34.4 255.255.255.0
#
interface LoopBack0
ip address 4.4.4.4 255.255.255.0
#
ospf 1 router-id 4.4.4.4
area 0.0.0.0
network 4.4.4.0 0.0.0.255
network 10.1.34.0 0.0.0.255
#
ip route-static 5.5.5.5 255.255.255.255 10.1.45.5
AR5:
#
sysname r5
#
interface GigabitEthernet0/0/1
ip address 10.1.45.5 255.255.255.0
#
interface LoopBack0
ip address 5.5.5.5 255.255.255.0
#
interface LoopBack1
ip address 100.1.1.1 255.255.255.0
#
ip route-static 4.4.4.4 255.255.255.255 10.1.45.4
二、启动BGP协议以及宣告路由:
AR1:
#
bgp 100
router-id 1.1.1.1
peer 2.2.2.2 as-number 200
peer 2.2.2.2 ebgp-max-hop 2 #由于AS-BY-AS的规则,从EBGP学习到的路由携带EGP的信息。
peer 2.2.2.2 connect-interface LoopBack0 #真实链路中会出现链路断掉的可能性,故使用换回建立
#
network 1.1.1.0 255.255.255.0
network 99.1.1.0 255.255.255.0 #路由宣告
AR2:
#
bgp 200
router-id 2.2.2.2
peer 1.1.1.1 as-number 100
peer 1.1.1.1 ebgp-max-hop 2 #由于EGP的规则,会导致发包时TTL值减一,此时路由无法达到对面换
回,故需要设置的最大条数为2
peer 1.1.1.1 connect-interface LoopBack0
peer 3.3.3.3 as-number 200
peer 3.3.3.3 connect-interface LoopBack0
peer 4.4.4.4 as-number 200 #相邻的自治系统为200
peer 4.4.4.4 connect-interface LoopBack0
#
network 2.2.2.0 255.255.255.0
peer 1.1.1.1 enable
peer 3.3.3.3 enable
peer 3.3.3.3 next-hop-local
peer 4.4.4.4 enable
peer 4.4.4.4 next-hop-local
AR4:
#
bgp 200
router-id 4.4.4.4
peer 2.2.2.2 as-number 200
peer 2.2.2.2 connect-interface LoopBack0
peer 3.3.3.3 as-number 200
peer 3.3.3.3 connect-interface LoopBack0
peer 5.5.5.5 as-number 300
peer 5.5.5.5 ebgp-max-hop 2
peer 5.5.5.5 connect-interface LoopBack0
#
network 4.4.4.0 255.255.255.0
peer 2.2.2.2 enable
peer 2.2.2.2 next-hop-local
peer 3.3.3.3 enable
peer 3.3.3.3 next-hop-local
peer 5.5.5.5 enable
AR5:
#
bgp 300
router-id 5.5.5.5
peer 4.4.4.4 as-number 200
peer 4.4.4.4 ebgp-max-hop 2
peer 4.4.4.4 connect-interface LoopBack0
#
network 5.5.5.0 255.255.255.0
network 100.1.1.0 255.255.255.0
peer 4.4.4.4 enable
三、AR3也启用BGP策略
1、查询AR1的路由表:
经过查询,发现到也有到达AR5的路由,下面进行ping通测试。
由此可见,即使AR1上有到达AR5换回的路由,但依旧连接失败。
原因:由于BGP的路由黑洞问题, 导致AR3上没有到达AR5的路由,只是一台单纯的IGP路由器,所以到数据层面的流量到达AR3上会被丢弃,这就是路由黑洞。
2、进行AR3的配置,让AR3成为一台IBGP路由器,临时解决路由黑洞问题。
AR3配置:
#
bgp 200
router-id 3.3.3.3 #并非全网唯一,但邻居之间要做到唯一
peer 2.2.2.2 as-number 200 #邻居的区域
peer 2.2.2.2 connect-interface LoopBack0
peer 4.4.4.4 as-number 200
peer 4.4.4.4 connect-interface LoopBack0
#
network 3.3.3.0 255.255.255.0 #宣告路由
peer 2.2.2.2 enable
peer 4.4.4.4 enable
此时查看AR3上的路由表:
四、ping通测试
AR1上的换回可以ping通AR5上的换回,故实验结束。
五、合理补充
1、BGP的宣告问题
如果我们在AR4的路由器上,写一条到达AR5网段的静态,命令:
#
ip route-static 5.5.5.0 255.255.255.0 10.1.45.5
AR4:
AR3:
从AR4上的路由器和AR3上的路由器我们查询发现,AR4上到达AR5换回的路由不优,而AR3上更是没有到达AR5的路由。
解释:这是由于逻辑悖论而导致的问题,刚才我们修改了AR4上的静态路由,从而AR4有到达AR5的换回的路由,但是由于AR4与AR5建立EBGP邻居的关系,是为了AR4可以获取到AR5身上的换回的路由,而AR4上由于有了AR5上换回的路由,才可以建立EBGP的邻居关系(就如同,我想去和对面需要造船,而我造船仅仅是为了去河对面)
解决方案:
在AR4上写到5换回的路由为单个地址,由于上述规则,所以我们仅需要在AR4上建立BGP邻居时仅用AR5的换回即可(实际工程也是如此,BGP的邻居建立仅仅需要两台运行BGP的换回即可,而底下的真实网段与换回完全不在一个网段)
配置命令:
AR4:
#
ip route-static 5.5.5.5 255.255.255.255 10.1.45.5
1、现在查看AR3上的路由(路由已恢复现状)
2、进行ping通测试:
2、在一个EBGP上宣告IGP上的换回:
1、首先删除其他路由器上宣告,从AR2上可以查询到BGP表:
2、修改其他路由器上的换回接口为broadcast
我们可以明显的查询到在AR2上的BGP表中,掩码变成了24位
3、在AR2上进行网段宣告:
AR2:
#
network 2.2.2.0 255.255.255.0
network 3.3.3.0 255.255.255.0
network 4.4.4.0 255.255.255.0
查看BGP表:
通过路由器的表可以看到:
这个字符含义代表该路由器到达该网段的度量。
现在,我们在AR5上查询BGP表,不难发现AR5上的路由器MED值位空,从中我们可以得出由于AR4上的路由是通过IBGP学到的,所以当他传给AR5时,此时度量会被清零。
此刻,我们在AR4上宣告IGP中的网段:
AR4:
#
network 2.2.2.0 255.255.255.0
network 3.3.3.0 255.255.255.0
network 4.4.4.0 255.255.255.0
随后,在AR5上查看BGP表:
所以,此刻我们可以得出结论,在相邻的两个区域中,一定不止一台EBGP路由器,要做到两台AS区域中的BGP路由器都进行宣告网段,此时BGP选路才能达到正确,不然为宣告网段的路由器度量为0,选路不佳。