一、知识补充
1、BGP4+
- 传统BGP-4只管理IPV4路由信息,对于使用其它网络程协议 (若IPV6等)的应用末给予支持。
- IETF对BGP-4扩展,提出BGP4+,可以提供对IPV6、IPX和MPLS VPN的支持 (简单说: 扩展IPV6协议栈支持)。
2、全互联
在上一篇博文中提到过水平分割原则
,解决办法是将边界路由器配置为路由反射器,或者BGP联邦,此处使用的是全互联,也就AS内部实现路由器的全互联,相互建立邻居,这样可以避免水平分割。
3、EBGP多跳
通常情况下,EBPG邻居之间必须具有直连的物理链路,EBGP邻居关系也将基于直连接口建立,如果不满足这一要求,则必须使用ebgp-multihop 命令允许它们之间经过多跳建立TCP连接。ebgp-multihop 命令用来配置允许BGP同非直连网络上的对等体建立EBGP连接,并同时可以指定允许的最大跳数。
如上图所示,两个路由器之间要基于Loopback地址建立EBGP邻居关系。这种情况属于EBGP邻居之间不基于直连接口建立邻居关系的场景,必须配置多跳。
二、配置需求及拓扑图
- IPV4:
- EBGP
- R1与R2是EBGP邻居关系,使用物理直连接口建立邻居
- R4与R5是EBGP邻居关系,使用Loopback0建立邻居
- IBGP
- R2–R3,R3–R4,R2–R4建立IBGP邻居关系
- 使用Loopback0来建立邻居(底层协议—OSPF)
- EBGP
- IPV6:
- R1--R2建立IPV6的EBGP邻居关系
- R1--R2建立IPV6的EBGP邻居关系
三、配置步骤
1、IPv6地址的配置
R1
R1(config)#int g0/0
R1(config-if-GigabitEthernet 0/0)#ip add 10.1.12.1 24
R1(config-if-GigabitEthernet 0/0)#ipv6 enable
R1(config-if-GigabitEthernet 0/0)#ipv6 address 12::1/64
R1(config-if-GigabitEthernet 0/0)#exit
验证–IPv6配置信息
R2
R2(config)#int g0/0
R2(config-if-GigabitEthernet 0/0)#no switchport
R2(config-if-GigabitEthernet 0/0)#ip add 10.1.12.2 24
R2(config-if-GigabitEthernet 0/0)#ipv6 enable
R2(config-if-GigabitEthernet 0/0)#ipv6 address 12::2/64
R2(config-if-GigabitEthernet 0/0)#exit
验证–IPv6配置信息
2、OSPF配置
R2
R2(config)#router ospf 1
R2(config-router)#router-id 2.2.2.2
Change router-id and update OSPF process! [yes/no]:y
R2(config-router)#network 2.2.2.2 0.0.0.0 area 0
R2(config-router)#network 10.1.23.0 0.0.0.255 area 0
R2(config-router)#exit
R3
R3(config)#router ospf 1
R3(config-router)#router-id 3.3.3.3
Change router-id and update OSPF process! [yes/no]:y
R3(config-router)#network 3.3.3.3 0.0.0.0 area 0
R3(config-router)#network 10.1.23.0 0.0.0.255 area 0
R3(config-router)#network 10.1.34.0 0.0.0.255 area 0
R3(config-router)#exit
R4
R4(config)#router ospf 1
R4(config-router)#router-id 4.4.4.4
Change router-id and update OSPF process! [yes/no]:y
R4(config-router)#network 4.4.4.4 0.0.0.0 area 0
R4(config-router)#network 10.1.34.0 0.0.0.255 area 0
R4(config-router)#exit
验证–邻居关系的建立
3、R1和R2使用直连接口配置EBGP
R1
R1(config)#router bgp 10
R1(config-router)#bgp router-id 1.1.1.1
R1(config-router)#neighbor 10.1.12.2 remote-as 234
R1(config-router)#exit
R2
R2(config)#router bgp 234
R2(config-router)#bgp router-id 2.2.2.2
R2(config-router)#neighbor 10.1.12.1 remote-as 10
R2(config-router)#exit
验证–EBGP邻居的建立
4、R1、R3、R4建立全互联IBGP
使用环回接口建立邻居,需要修改更新源。默认更新源是物理口,需要修改为自己的环回口。
R2
R2(config)#router bgp 234
R2(config-router)#neighbor 3.3.3.3 remote-as 234
R2(config-router)#neighbor 3.3.3.3 update-source loopback 0
R2(config-router)#neighbor 4.4.4.4 remote-as 234
R2(config-router)#neighbor 4.4.4.4 update-source loopback 0
R2(config-router)#exit
R3
R3(config)#router bgp 234
R3(config-router)#bgp router-id 3.3.3.3
R3(config-router)#neighbor 2.2.2.2 remote-as 234
R3(config-router)#neighbor 2.2.2.2 update-source loopback 0
R3(config-router)#neighbor 4.4.4.4 remote-as 234
R3(config-router)#neighbor 4.4.4.4 update-source loopback 0
R3(config-router)#exit
R4
R4(config)#router bgp 234
R4(config-router)#bgp
R4(config-router)#bgp router
R4(config-router)#bgp router-id 4.4.4.4
R4(config-router)#neighbor 2.2.2.2 remote-as 234
R4(config-router)#neighbor 2.2.2.2 update-source loopback 0
R4(config-router)#neighbor 3.3.3.3 remote-as 234
R4(config-router)#neighbor 3.3.3.3 update-source loopback 0
R4(config-router)#exit
验证–R3查看BGP邻居状态
5、R4、R5配置静态路由,使Loopback地址可达
R4
R4(config)#ip route 5.5.5.5 255.255.255 10.1.45.2
R5
R5(config)#ip route 4.4.4.4 255.255.255 10.1.45.1
验证–连通性测试
5、R4、R5配置EBGP
R4
R4(config)#router bgp 234
R4(config-router)#neighbor 5.5.5.5 remote-as 50
R4(config-router)#neighbor 5.5.5.5 update-source loopback 0
R4(config-router)#exit
R5
R5(config)#router bgp 50
R5(config-router)#bgp router-id 5.5.5.5
R5(config-router)#neighbor 4.4.4.4 remote-as 234
R5(config-router)#neighbor 4.4.4.4 update-source loopback 0
R5(config-router)#exit
验证–R5查看BGP对等体的建立
可以看到状态为Idel,建立失败。建立EBGP时因为EBGP只传一跳,所以在建立EBGP邻居时,需要修改EBGP多跳的跳数为2以上(自己环回口到对端换回口是2跳,默认为1跳),需要添加多跳属性。
R4
R4(config)#router bgp 234
R4(config-router)#neighbor 5.5.5.5 ebgp-multihop 2
R4(config-router)#exit
R5
R5(config)#router bgp 50
R5(config-router)#neighbor 4.4.4.4 ebgp-multihop 2
R5(config-router)#exit
验证–R5查看邻居关系
6、BGP4+
R1
R1(config)#router bgp 10
R1(config-router)#neighbor 12::2 remote-as 234
R1(config-router)#address-family ipv6
R1(config-router-af)#neighbor 12::2 activate
R1(config-router-af)#exit
R2
R2(config)#router bgp 234
R2(config-router)#neighbor 12::1 remote-as 10
R2(config-router)#address-family ipv6
R2(config-router-af)#neighbor 12::1 activate
R2(config-router-af)#exit
R2(config-router)#exit
验证–R2查看IPv6邻居
7、配置全网互通
BGP路由只是负责邻居建立,不负责路由转发
查看R1的BGP路由,发现为空,需要在R1中引入直连路由
R1(config)#router bgp 10
R1(config-router)#redistribute connected 引入直连路由
R1(config-router)#exit
查看R3的路由表,可以发现在AS234内部是依靠OSPF转发路由
如果要学习到R1的路由,则需要在R2上OSPF引入BGP路由
R2(config)#router ospf 1
R2(config-router)#redistribute bgp subnets
R2(config-router)#exit
可以看到学习到了R1的loopback
查看R1的路由表,发现学习不到AS234的路由明细,在AS234内部跑的OSPF协议传递路由,而AS10和AS234之间跑的BGP,所以看不到OSPF路由,需要在R2的BGP引入OSPF
R2(config)#router bgp 234
R2(config-router)#redistribute ospf 1
R2(config-router)#exit
查看R1的路由表,已经学习到AS234的所有路由
在R3上查看路由表,发现缺少R5的相关路由
R4的OSPF引入静态路由
R4(config)#router ospf 1
R4(config-router)#redistribute static subnets
R4(config-router)#exit
查看R3的IP路由表
查看R1的IP路由表,发现缺少AS50的路由;查看R5的一样是缺少对端EBGP的路由
根据BGP默认规则,EBGP传递路由时下一跳会改变,但IBGP在传递路由时不会改变下一跳地址
自治系统边界路由器(ASBR)修改路由的下一跳属性
R2(config)#router bgp 234
R2(config-router)#neighbor 3.3.3.3 next-hop-self
R2(config-router)#neighbor 4.4.4.4 next-hop-self
R2(config-router)#exit
查看R5的路由表,可以发现学习到AS10的路由信息
因为在R1上跑的是BGP路由,所以需要在R4上引入静态路由
R4(config)#router bgp 234
R4(config-router)#redistribute static
R4(config-router)#exit
在R2上查看BGP路由表,可以看到5.5.5.5/32路由,但不是最佳路由,所以没出现在IP路由表中
同样在R4上修改下一跳属性
R4(config)#router bgp 234
R4(config-router)#neighbor 2.2.2.2 next-hop-self
R4(config-router)#neighbor 3.3.3.3 next-hop-self
R4(config-router)#exit
在R1上查看IP路由表
学不到10.1.45.0是因为没有宣告直连路由
R4(config)#router bgp 234
R4(config-router)#redistribute connected
R4(config-router)#exit
ok 学习成功