拓扑

知识点
- 用loopback 地址建立 Full mesh
- 从eBGP (R5) 向 iBGP (R4)宣告路由的时候,下一跳地址不会变化(保留为10.45.1.2)。所以需要把eBGP 直连的网段,通过IGP宣告进 iBGP。否则BGP路由无法通过Validity,进而不会被加载进路由表,也不会被宣告给邻居
目标
- 将R1 和 R5 的环回地址(模拟eBGP 路由)互相宣告给对方
步骤
配置
- 各接口IP地址,包括 Loopback
- R2,R3,R4 上配置OSPF,此时可以先不宣告 Loopback
- 在所有R上配置 BGP,在iBGP 上使用 Loopback 地址作为 Peering 地址
#R1router bgp 65100 bgp log-neighbor-changes network 192.168.1.1 mask 255.255.255.255 neighbor 10.12.1.2 remote-as 65200#R2router bgp 65200 bgp log-neighbor-changes neighbor 10.12.1.1 remote-as 65100 neighbor 192.168.3.3 remote-as 65200 neighbor 192.168.3.3 update-source Loopback0 neighbor 192.168.4.4 remote-as 65200 neighbor 192.168.4.4 update-source Loopback0#R3router bgp 65200 bgp log-neighbor-changes neighbor 192.168.2.2 remote-as 65200 neighbor 192.168.2.2 update-source Loopback0 neighbor 192.168.4.4 remote-as 65200 neighbor 192.168.4.4 update-source Loopback0#R4router bgp 65200 bgp log-neighbor-changes neighbor 10.45.1.2 remote-as 65300 neighbor 192.168.2.2 remote-as 65200 neighbor 192.168.2.2 update-source Loopback0 neighbor 192.168.3.3 remote-as 65200 neighbor 192.168.3.3 update-source Loopback0#R5router bgp 65300 bgp log-neighbor-changes network 192.168.5.5 mask 255.255.255.255 neighbor 10.45.1.1 remote-as 65200
校验
- 在R2上可以看到和R1 有建立连接,但是R3、R4无法建立连接,为什么 —— 因为这里我们用了Loopback 地址,而R3、R4的Loopback地址是不可达的,所以底层连接无法建立。 需要在R2、R3、R4各自的OSPF进程里宣告对应的环回地址。之后就可以正常建立连接。


- 此时回到R2,发现192.168.5.5 在BGP的RIB表中,但是没在路由表中。因为在执行 Validity 会发现 10.45.1.2 不可达。没有告知R2 如何 去往10.45.1.2. 没有通过Validity,所以不会写入自己的路由表,也不会对外宣告

- 查看具体的 BGP RIB 条目,也提示 inaccessible

- 在R1上可以看到,R2 也没有把192.168.5.5 这条路由传递给R1

解决办法
- 第1种方法,在R4 上把10.45.1.0 宣告进OSPF。(对称地,R2也需要宣告10.12.1.0,否则R4、R5 也是同样的问题)。之后R2 通过OSPF知道去到R4的路径,查看具体的BGP 路由条目,状态也从 inaccessable 变成了 metric 2. 同时R1上也得到了去到192.168.5.5 的

