一、配置IP地址启用OSPF
如图,24网段环回用于模拟用户,32网段环回用于BGP建邻
二、启动BGP
此处列举R1/R2的配置
[r1]bgp 1
[r1-bgp]router-id 1.1.1.1
[r1-bgp]peer 12.1.1.2 as-number 2
****与R2建邻 此处R2的as号需要写2
[r2]bgp 64512
****启用BGP,并使用私有AS号以使用联邦
[r2-bgp]router-id 2.2.2.2
[r2-bgp]confederation id 2
****告知该小AS所属AS2
[r2-bgp]confederation peer-as 64513
****告知本地直连的其他小AS号,若没有直连到其他小AS不用配置
****同理R5、R4、R7在AS2中也需要配置该项
[r2-bgp]peer 12.1.1.1 as-number 1
[r2-bgp]peer 172.16.1.3 as-number 64512
[r2-bgp]peer 172.16.1.3 connect-interface LoopBack 0
****与本路由器的LoopBack 0建邻
[r2-bgp]peer 172.16.1.5 as-number 64513
[r2-bgp]peer 172.16.1.5 connect-interface LoopBack 0
[r2-bgp]peer 172.16.1.5 ebgp-max-hop 2
****因为R5所属AS64513,建邻方式参考的是EBGP,需修改TTL值
****同理R5、R4、R7在AS2中也需要配置该项
IBGP内的建邻
此处列举R3
[r3]bgp 64512
[r3-bgp]router-id 3.3.3.3
[r3-bgp]confederation id 2
[r3-bgp]peer 12.1.1.1 as-number 1
[r3-bgp]peer 172.16.1.3 as-number 64512
[r3-bgp]peer 172.16.1.3 connect-interface LoopBack 0
各个路由配置完成后查看BGP邻居表,已完成建邻
此处列举R2
[r2-bgp]dis bgp peer
BGP local router ID : 2.2.2.2
Local AS number : 64512
Total number of peers : 3 Peers in established state : 3
Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
12.1.1.1 4 1 76 93 0 01:13:02 Established 1
172.16.1.3 4 64512 82 80 0 01:07:00 Established 0
172.16.1.5 4 64513 74 80 0 01:01:57 Established 1
三、宣告路由
先宣告R1的环回
[r1-bgp]network 1.1.1.0 255.255.255.0
该路由条目会被R2加表,并遵循IBGP水平分割传递给R3,模拟EBGP工作方式传递给R5(但下一条不变);
但因为AS-BY-AS,R3、R5学习到该路由条目的下一条不可达,所以不会加表;
令R2传递给邻居的路由条目指向R2
[r2-bgp]peer 172.16.1.3 next-hop-local
[r2-bgp]peer 172.16.1.5 next-hop-local
此时R3会将该路由加表,但不会传递给R4;
R5会将该路由加表,并且传递给R6加表(因为R2、R5之间为EBGP工作模式);
查看他们的BGP路由表
[r3-bgp]dis bgp ro
BGP Local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 1.1.1.0/24 172.16.1.2 0 100 0 1i
[r6-bgp]dis bgp ro
BGP Local router ID is 6.6.6.6
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 1.1.1.0/24 172.16.1.2 0 100 0 (64512) 1i
下面来解决R4、R7、R8学习不到该路由条目的问题
配置路由反射器,解决IBGP中水平分割的问题;
令R3为RR,并指定R2为客户端,将该路由传递给R4;
由于R4、R5的EBGP邻居关系,R4会将该路由传递给R7;
由于R7、R8的EBGP邻居关系,R7会将该路由传递给R8;
为了防止R3出现故障无法反射路由,所以再令R6为一个RR以作备份;
配置如下
[r3-bgp]peer 172.16.1.2 reflect-client
****指定R2为客户端
[r6-bgp]peer 172.16.1.5 reflect-client
****指定R5为客户端
此时查看R8的BGP路由表,已学习到该路由
[r8-bgp]dis bgp ro
BGP Local router ID is 8.8.8.8
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 1.1.1.0/24 78.1.1.2 0 2 1i
同理宣告R8的环回后,需配置R7使它传递的路由的下一条指向R7;
由于RR从一个非客户端学习到的路由,可以传递给本地的其他客户端、EBGP邻居;不能传递给其他的非客户端;
至此,R1也会学习到R8的环回;
[r1-bgp]dis bgp ro
BGP Local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 1.1.1.0/24 0.0.0.0 0 0 i
*> 8.8.8.0/24 12.1.1.2 0 2 3i
因为BGP的宣告原则为宣告的是该路由器路由表中的条目;
而需要减少路由条目考虑汇总;
所以在R2和R7上建立一个指向IBGP172.16.0.0/16的空接口,再在他们上面宣告172.16.0.0/16;
且防止了路由黑洞;
至此R1和R8会学习到该路由条目
[r1-bgp]dis bgp ro
BGP Local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 1.1.1.0/24 0.0.0.0 0 0 i
*> 8.8.8.0/24 12.1.1.2 0 2 3i
*> 172.16.0.0 12.1.1.2 0 0 2i
[r8-bgp]dis bgp ro
BGP Local router ID is 8.8.8.8
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 1.1.1.0/24 78.1.1.2 0 2 1i
*> 8.8.8.0/24 0.0.0.0 0 0 i
*> 172.16.0.0 78.1.1.2 0 2i
三、测试
1.1.1.1 ping 8.8.8.8
1.1.1.1 ping 172.16.3.1
1.1.1.1 ping 172.16.6.1
8.8.8.8 ping 172.16.2.1
8.8.8.8 ping 172.16.4.1
8.8.8.8 ping 172.16.5.1