BGP邻居

原理概述:

路由信息协议分为内部网关协议(IGP:Interior Gateway Protocol)和外部网关协议(EGP:Exterior Gateway Protocol)两大类。IGP用于自治系统AS(Autonomous System)内部,EGP用于AS之间。最早的IGP是一种称为GGP(Gateway-to-Gateway Protocol)的路由协议,而最早的EGP是一种EGP(Exterior-Gateway protocol,注意,它与类别名EGP同名,现已被废除)的路由协议。目前,常见的IGP包括RIP、OSPF、IS-IS等,而常见的EGP只有BGP(Border Gateway Protocol)。

实验目的:

理解BGP协议的应用场景

理解IBGP和EBGP邻居的概念

配置IBGP与EBGP邻居关系

实验拓扑:

1:基础配置:

将在R1和R2上使用直连物理接口来配置IBGP邻居关系,为了实现链路冗余,R1和 R2之间部署了两条链路,当其中一条链路出现故障时,另一条物理链路可以提供连通性。

R1:

#

interface GigabitEthernet0/0/0

 ip address 10.0.12.1 255.255.255.0

#

interface GigabitEthernet0/0/1

 ip address 10.0.21.1 255.255.255.0

#

interface GigabitEthernet0/0/2

#

interface NULL0

#

interface LoopBack0

 ip address 10.0.1.1 255.255.255.255

#

bgp 100

 router-id 10.0.1.1

 peer 10.0.12.2 as-number 100

 peer 10.0.21.2 as-number 100

 #

 ipv4-family unicast

  undo synchronization

  network 10.0.1.1 255.255.255.255

  peer 10.0.12.2 enable

  peer 10.0.21.2 enable

R2:、

#

interface GigabitEthernet0/0/0

 ip address 10.0.12.2 255.255.255.0

#

interface GigabitEthernet0/0/1

 ip address 10.0.21.2 255.255.255.0

#

interface GigabitEthernet0/0/2

 ip address 10.0.23.2 255.255.255.0

#

interface GigabitEthernet4/0/0

 ip address 10.0.32.2 255.255.255.0

#

interface NULL0

#

interface LoopBack0

 ip address 10.0.2.2 255.255.255.255

#

bgp 100

 router-id 10.0.2.2

 peer 10.0.12.1 as-number 100

 peer 10.0.12.2 as-number 100

 peer 10.0.21.1 as-number 100

 #

 ipv4-family unicast

  undo synchronization

  peer 10.0.12.1 enable

  undo peer 10.0.12.2 enable

  peer 10.0.21.1 enable

R3:
#

interface GigabitEthernet0/0/0

 ip address 10.0.23.3 255.255.255.0

#

interface GigabitEthernet0/0/1

 ip address 10.0.32.3 255.255.255.0

#

interface GigabitEthernet0/0/2

#

interface NULL0

#

interface LoopBack0

 ip address 10.0.3.3 255.255.255.255

2:配置IBGP邻居:

我们在基础配置上已经配置完成了,接下来我们查看BGP邻居关系

可以看到,R2现在有两个BGP邻居,分别使用R1的G0/0/0和G0/0/1接口地址来表示,AS编号为100,与R2自己的AS编号相同,因此R2与R1为IBGP邻居,当前邻居状态为Established,表示邻居关系已完全建立。

[R1]bgp 100

[R1-bgp]network 10.0.1.1 32

配置完成后,在R2上查看BGP路由表

为了能使R1的Loopback 0 接口与R2的Loopback接口建立起TCP会话,需要在R1和R2上配置到达对方Loopback 0 接口的静态路由。

R1:Lo0的静态:

[R1]ip route-static 10.0.2.2 32 10.0.12.2

[R1]ip ro

[R1]ip route-s

[R1]ip route-static 10.0.2.2 32 10.0.21.2

R2:Lo0的静态:

ip route-static 10.0.1.1 255.255.255.255 10.0.12.1

ip route-static 10.0.1.1 255.255.255.255 10.0.21.1

删除之前采用物理接口的配置IBGP邻居的命令,并使用Loopback 0接口重新建立IBGP邻居关系。

[R1]bgp 100

[R1-bgp]undo peer 10.0.12.2

[R1-bgp]un peer 10.0.21.2

[R1-bgp]peer 10.0.2.2 as-number 100



[R2]bgp 100

[R2-bgp]un peer 10.0.12.1

[R2-bgp]un peer 10.0.21.1

[R2-bgp]peer 10.0.1.1 as-number 100

上述配置完成后,在R1上查看BGP的邻居关系

可以看到,R1与R2的邻居关系停留在Active状态,而非Extablished,这说明R1与R2尚未正常建立起IBGP邻居关系。

在R1上指定使用自己的Loopback 0 接口地址作为发送BGP报文时的源IP地址,R2上也需使用类似的命令

[R1]bgp 100

[R1-bgp]peer 10.0.2.2 connect-interface lo 0



[R2]bgp 100

[R2-bgp]peer 10.0.1.1 connect-interface lo 0

上述配置完成后,在R2上查看BGP路由表

 

可以看到,R2的BGP路由表中只有一条去往10.0.1.1/32的路由,下一跳为10.0.1.1

再查看R2的IP路由表

配置EBGP邻居

在R2和R3上使用Loopback 0 接口来建立EBGP邻居关系

[R2]bgp 100

[R2-bgp]peer 10.0.3.3 as-number 200



[R3]bgp 200

[R3-bgp]router-id 10.0.3.3

[R3-bgp]peer 10.0.2.2 as-number 100

上述配置完成后,在R3上查看BGP邻居关系

可以看到,R2与R3的邻居状态一直停留在IdIe状态,说明邻居关系未能正常建立。

我们知道,BGP邻居关系建立的前提条件是要能够建立起TCP会话,而目前R2和R3上都不存在去往对方Loopback 0 接口的路由,因此无法建立TCP会话,为了解决这个问题,可以在R2和R3上配置到达Loopback 0 接口的静态路由。


[R2]ip route-static 10.0.3.0 24 10.0.23.3

[R2]ip route-static 10.0.3.0 24 10.0.32.3

[R3]ip route-static 10.0.2.0 24 10.0.23.2

[R3]ip route-static 10.0.2.0 24 10.0.32.2

上述配置完成后,在R3上查看BGP邻居关系

可以看到,R2与R3之间的邻居关系一直停留在Active状态,说明邻居关系还是未能正常建立起来

[R2-bgp]peer 10.0.3.3 connect-interface lo 0

[R3-bgp]peer 10.0.2.2 connect-interface lo 0

配置完成后,在R3上查看BGP邻居关系

在默认情况下,EBGP邻居之间在发送BGP报文时,TTL为1,所以EBGP默认要求邻居之间必须物理直连。但是当R2和R3使用Loopback 0 接口建立邻居关系时,由于使用的不是物理直连的接口,所以TTL值会被多减一次,成为0,最终使得BGP报文会丢弃;从而导致邻居关系无法建立,为了解决这一问题,可以修改EBGP邻居发送的BGP报文的TTL值,使报文的TTL值大于1

在R2和R3上配置BGP报文的TTL值为2

[R2-bgp]peer 10.0.3.3 ebgp-max-hop 2

[R3-bgp]peer 10.0.2.2 ebgp-max-hop 2

上述配置完成后,在R3上查看BGP邻居关系

可以看到,R2与R3之间已经建立起了EBGP邻居关系

需要说明的是,在实际场景中,通常使用Loopback接口来建立IBGP邻居关系,使用物理接口来建立EBGP邻居关系。

备注:如有错误,请谅解!

此文章为本人学习笔记,仅供参考!如有重复!!!请联系本人!

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐