前提:AS之间要运行IGP,保证AS内部网络的连通性,R2,R3,R4之间宣告各自的环回口,但,并没有宣告和其他as相连的网段。
①R2和R3用环回口建立邻居关系
R2:
router bgp 200 -运行bgp 200
no synchronization --关闭同步功能
bgp router-id 2.2.2.2 --配置router-id
neighbor 3.3.3.3 remote-as 200 和3.3.3.3 建立IBGP 邻居关系,3.3.3.3所属AS号为200
neighbor 3.3.3.3 update-source Loopback0 ---指定用自己的环回口和3.3.3.3建立邻居关系,可以单方指定,R3可配可不配
no auto-summary --关闭自动汇总
R3:
router bgp 200
no synchronization
bgp router-id 3.3.3.3
neighbor 2.2.2.2 remote-as 200
no auto-summary
注:R2和R3之间用直连口建立邻居关系类似于EBGP使用直连口建立关系,不会有任何问题
②R1和R2用直连口建立邻居关系
R1:
router bgp 100
no synchronization
bgp router-id 1.1.1.1
neighbor 12.1.1.2 remote-as 200
no auto-summary
R2:
router bgp 200
no synchronization
bgp router-id 2.2.2.2
neighbor 12.1.1.1 remote-as 100
no auto-summary
③R1和R2使用环回口建立邻居关系
R1:
router bgp 100
no synchronization
bgp router-id 1.1.1.1
neighbor 2.2.2.2 remote-as 200
neighbor 2.2.2.2 ebgp-multihop 2 -----默认EBGP使用环回口建立邻居关系的时候,最大跳数为1,然而到达2.2.2.2 需要经过2条,所以需要修改最大跳数,大于2即可,范围1-255
neighbor 2.2.2.2 update-source Loopback0
no auto-summary
R2:
router bgp 200
no synchronization
bgp router-id 2.2.2.2
neighbor 1.1.1.1 remote-as 100
neighbor 1.1.1.1 ebgp-multihop 2
neighbor 1.1.1.1 update-source Loopback0
no auto-summary
④在R2上宣告2.2.2.0/24网段,在R2上再起一个环回口22.2.2.0/24,并宣告
router bgp 200
net 2.2.2.0 mask 255.255.255.0
net 22.2.2.0 mask 255.255.255.0
net 222.2.2.0 mask 255.255.255.0---这条路由不存在
在R3上查看bgp的路由:
注:R3学习到了2.2.2.0/24的路由,但是带r,表示加表失败,因为R2,R3,R4之间运行了rip,并宣告了各自的环回口地址,所以R3从rip也学习到了2.2.2.0/24的路由,由于rip的AD值为120,IBGP的AD值为200,所以bgp路由比不过rip的,才会加表失败。
R3学习到了22.2.2.0/24的路由,之后既带*和>的路由才可以放到路由表中,也就是,可以使用的,由于22.2.2.0/24没有宣告进rip中,所以bgp学习到的这条路由,是可以使用的。
R3并没有学习到222.2.2.0/24路由,因为在R2上的igp路由表中并不存在该路由,R3要想学习到222.2.2.0/24的路由,可以在R2上学一条静态路由指向null0,当然也可以把222.2.2.0/24网段配置到某一个接口中。
R2写一条静态:
R2(config)# ip route 222.2.2.0 255.255.255.0 null 0
R3查看bgp路由表,发现222.2.2.0/24路由就存在
⑤解决R3不把R2学习的路由传递为R4问题,可以配置RR
router bgp 200
neighbor 4.4.4.4 route-reflector-client ---把R4作为R3的反射客户端
R2是非客户端,R3是反射器,R4反射客户端
反射规则:
①客户端会反射给非客户端
②非客户端只会反射给客户端
所以,放射器只需单方向配置即可。
⑥为什么R2不把从R1学习来1.1.1.0/24的路由传递给R3?
因为R2学习1.1.1.0/24路由的下一跳是12.1.1.1,传递给R3的时候,下一跳保持不变,由于R3无法到达12.1.1.1,所以条路由不可以用,也不会继续往下传递,这时候,需要在R2上把传递给R3的路由的下一跳都给位自己。
router bgp 200
neighbor 3.3.3.3 next-hop-self ---作用是把传递给3.3.3.3bgp路由的下一跳,都改为neighbor时用到的地址。
15,BGP的邻居状态
发生错误时,会达到active状态
16,network命令的使用
①,所要network的网关必须要在本地路由表中存在
②,network只能精确宣告,不能够宣告主类网络,例如,本地路由表中存在2.2.2.0/24这个网段,正确的宣告方式:network 2.2.2.0 mask 255.255.255.0
错误的宣告方式:network 2.2.0.0 mask 255.255.255.0
network 2.2.2.0 ---不加掩码,代表的是宣告主类网络
17,next hop 为0.0.0.0 代表的是这条路由是自己通告的。
18,从IBGP邻居学习的路由,不会传给另外一个IBGP邻居,这条规则就是为了防止AS内部的环路
解决办法就是配置反射器,俗称RR
19,路由在AS内部进行传递的时候基本属性保持不变,因为bgp是以AS为单位的。
20,从EBGP邻居学习到的路由会原封不动的传递给IBGP邻居。
21,当路由器学习到的路由,下一跳不可达时,该路由不会带>号,也就是不可以使用,也不会继续传递。
22.ping 2.2.2.2 -t ---windows 一直ping的方法,就是后面加一个 -t
ping 2.2.2.2 repeat ----路由器一直ping的方法
23,路由黑洞,就是两端都能学习到路由,但是中间学习不到,收到数据包就回丢包,如上图,假如只在R2和R4之间运行BGP,那么,就会出现路由黑洞,因为R3没有运行bgp,就会学习不到路由,就会丢包。
24,解决路由黑洞的方法:
①两两之间建立邻居关系,并且配置RR
②全互联 ---要建立大量的TCP连接,相当的耗费资源
③路由重分布---bgp的路由数目过于庞大,可能会导致igp崩溃。
④MPLS -----最完美的解决方法 。