BGP 邻居

路由协议通常分为内部网关协议(IGP:Interior Gateway Protocol)和外部网关协议(EGP:Exterior Gateway Protocol)两大类。一般来讲,IGP用于自治系统AS(Autonomous System)内部,EGP用于AS之间。当前使用版本是BGP-4(RFC4271)。BGP-4作为事实上的互联网外部路由协议标准,已被广泛应用于ISP(Internet Service Provider)之间。
BGP是一种动态路由协议,但它实际上不产生路由、不发现路由、不计算路由,其主要功能是完成最佳路由的选择并在BGP邻居之间进行最佳路由的传递。BGP选择了TCP作为传输协议,端口号为179
BGP支持无类域间路由CIDR(Classless Inter-Domain Routing),并且采用了触发增量更新方式,这大大减少了BGP在传播路由信息时所占用的带宽,特别适用于在互联网上传播大量的路由信息
BGP提供了丰富的路由属性(Attribute),通过对这些属性的操作和控制,BGP能够非常容易的实现丰富而灵活的路由策略。BGP还具有良好的扩展性,支持 Multicast、VPN、IPv6 等多种特性。
BGP邻居关系分为IBGP(Internal BGP)和 EBGP(External BGP)两种:当两台路由器位于同一AS时(AS编号相同),它们的邻居关系为IBGP 邻居关系;当两台BGP路由器位于不同的AS时(AS编号不同),它们的邻居关系为EBGP邻居关系。BGP没有自动建立邻居关系的能力,邻居关系必须通过手动配置来建立。

R1与R2属于同一个运营商网络 ,AS编号为100,R1与R2之间的邻居关系为IBGP邻居关系。R3属于另一个运营商网络,AS编号为200,R3与R2之间的邻居关系为EBGP邻居关系。路由器分别采用物理接口和Loopback接口来进行IBGP和EBGP邻居关系的建立
在这里插入图片描述

配置IBGP邻居。
在R1、R2上使用直连物理接口来配置IBGP邻居关系。为了实现链路冗余,R1与R2之间部署了两条链路,当其中一条链路出现故障,另一条物理链路可以提供连通性。
接口配置不赘述。
在这里插入图片描述
在这里插入图片描述
在R2上使用 display bgp peer 命令查看BGP邻居关系
在这里插入图片描述
可以看,R2现在有两个BGP邻居分别使用了R1的GE0/0/0和GE0/0/1接口地址来表示,AS编号为100,与R2自己的AS编号相同,因此R2与R1为IBGP邻居,当前邻居状态为 Established,表示邻居关系已经完全建立。

在R1上将Loopback 0接口地址通告到BGP进程中。
[R1]bgp 100
[R1-bgp]network 10.0.1.1 32

查看R2的BGP路由表。
在这里插入图片描述
可以看到R2的BGP路由表中包含了两条去往10.0.1.1/32的路由,下一跳分别为10.0.12.1,10.0.21.1,这是因为R1与R2之间建立了两个IBGP邻居关系,BGP路由实现了冗余。
BGP是运行在TCP之上的,如果能让R1的 Loopback 0 接口与R2的 Loopback 0 接口建立起TCP会话,并使用 Loopback 0 接口的IP地址来建立BGP邻居关系,则可以让R1和R2只维护一个BGP邻居关系即可。当R1与R2之间的一条链路出现故障时,TCP可以通告另外一条物理链路继续维持会话关系,这种方法在网络的稳定性方面和网络资源的节省上比直接使用物理接口来建立BGP邻居关系更具优势。

为了能使R1的 Loopback 0 接口与R2的 Loopback 0 接口建立起TCP会话,需要在R1和R2上配置能到达对方 Loopback 0 接口的静态路由。
[R1]ip route-static 10.0.2.2 32 10.0.12.2
[R1]ip route-static 10.0.2.2 32 10.0.21.2

[R2]ip route-static 10.0.1.1 32 10.0.12.1
[R2]ip route-static 10.0.1.1 32 10.0.21.1

删除之前采用物理接口配置 IBGP 邻居的命令,并使用 Loopback 0 接口重新建立 IBGP 邻居关系。
[R1]bgp 100
[R1-bgp]undo peer 10.0.12.2
[R1-bgp]undo peer 10.0.21.2
[R1-bgp]peer 10.0.2.2 as-number 100

[R2]bgp 100
[R2-bgp]undo peer 10.0.12.1
[R2-bgp]undo peer 10.0.21.1
[R2-bgp]peer 10.0.1.1 as-number 100

查看R1的BGP邻居关系。
在这里插入图片描述
可以看到R1与R2的邻居关系停留在 Active 状态,而非 Established,这说明R1与R2尚未正常建立起IBGP邻居关系。

在配置BGP邻居时所使用的IP地址,应该互为BGP报文的源IP地址和目的IP地址。默认情况下,BGP会使用去往邻居路由器的出接口的IP地址作为BGP报文的源地址。在上面的配置中,R2向R1发送BGP报文的源IP地址和R1上指定的邻居地址10.0.2.2不一致,从而导致了R1无法和R2正常建立BGP邻居关系。解决此问题的方法是通过命令来强制指定路由器发送BGP报文时所使用的源IP地址。

在R1上使用命令 peer 10.0.2.2 connect-interface Loopback 0,指定R1使用自己的 Loopback 0 接口地址作为发送BGP报文时的源IP地址;R2上也需要使用类似的命令。
[R1]bgp 100
[R1-bgp]peer 10.0.2.2 connect-int loopback 0

[R2]bgp 100
[R2-bgp]peer 10.0.1.1 connect-int loopback 0

查看R2的BGP邻居。
在这里插入图片描述
可以看到R2现在只与10.0.1.1有一个IBGP邻居关系,状态为 Established。

查看R2的BGP路由表。
在这里插入图片描述
可以看到R2的BGP路由表中只有一条去往10.0.1.1/32的路由,下一跳为10.0.1.1。

再看R2的IP路由表。
在这里插入图片描述
可以看到R2去往10.0.1.1的路由有两条,下一跳分别为10.0.12.1和10.0.21.1,因此当10.0.12.0/24这条链路不可用时,R1和R2之间的邻居关系不会收到影响,相应的BGP路由也不会收到影响。
总之,使用 Loopback 接口建立BGP邻居关系与使用物理接口来建立邻居关系相比较,前者具有更好的稳定性,且能够减少设备资源的开销。

配置EBGP邻居
使用物理接口来建立R和1R2的BGP邻居关系时,配置相对简单,并且能够实现邻居关系的冗余。但是,这样的配置也会产生两个TCP会话和两个BGP邻居关系,当有路由需要彼此通告时,会通告这两个邻居关系分别进行通告,因此比较消耗设备资源,并且链路不稳定也会导致BGP邻居关系的不稳定。

接下来在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的邻居状态一直停留在 Idle 状态,说明邻居关系未能正常建立。BGP邻居关系建立的前提条件是要能够建立起TCP会话,而目前R2和R3上都不存在去往对方的 Loopback 0 接口的路由,因此无法建立TCP会话。为了解决这个问题,可以在R2和R3上配置到达对方的 Loopback 0 接口的静态路由。
[R2]ip route-static 10.0.3.3 32 10.0.23.3
[R2]ip route-static 10.0.3.3 32 10.0.32.3

[R3]ip route-static 10.0.2.2 32 10.0.23.2
[R3]ip route-static 10.0.2.2 32 10.0.32.2

查看R3上的BGP邻居关系。
在这里插入图片描述
可以看到R2与R3之间的邻居关系一直停留在 Active 状态,说明邻居关系还是未能正常建立起来。 前面说过解决此问题的方法通过命令来强制指定路由器发送BGP报文时所使用的源IP地址。
[R2-bgp]peer 10.0.3.3 connect-int loopback 0

[R3-bgp]peer 10.0.2.2 connect-int loopback 0

查看R3的BGP邻居关系。
在这里插入图片描述
可以看到R3的邻居状态是Idle,说明R2与R3之间的EBGP邻居关系仍然未能正常建立。
在默认情况下,EBGP邻居之间在发送BGP报文时,TTL值为1,所以EBGP默认要求邻居之间必须物理直连。但是,当R2和R3使用 Loopback 0 接口建立邻居关系时,由于使用的不是物理直连的接口,所以TTL值会被多减一次,成为0,最终使得BGP报文会被丢弃,从而导致邻居关系无法建立。为解决这一问题,可以修改EBGP邻居发送BGP报文的TTL值,使报文的TTL值大于1。

在R2和R3上使用命令 peer ebgp-max-hop 2,配置BGP报文的TTL值为2。
[R2]bgp 100
[R2-bgp]peer 10.0.3.3 ebgp-max-hop 2

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

在R3上查看BGP邻居关系。
在这里插入图片描述
可以看到R2与R3已经建立起了EBGP邻居关系。
注意:在实际场景中,通常使用 Loopback 接口来建立IBGP邻居关系,使用物理接口建立EBGP邻居关系。

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: BGP邻居配置警告是因为在BGP路由器中,配置邻居关系时需要注意一些问题。首先,需要正确配置EBGP和IBGP邻居关系,确保运行在不同AS之间的BGP路由器建立的邻居关系为EBGP邻居关系,而运行在相同AS内的BGP路由器建立的邻居关系为IBGP邻居关系。其次,当BGP路由器从EBGP邻居获得的最优路由发布给IBGP邻居时,需要注意不改变下一跳,否则会导致IBGP收到的邻居路由下一跳不可达,***那么这些路由将不会发送给EBGP邻居。这个机制主要用于防止BGP路由黑洞问题。因此,配置BGP邻居时需要注意以上几点,以避免出现路由无效或路由黑洞的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [BGP协议原理与配置](https://blog.csdn.net/qq_43704340/article/details/120921780)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [BGP路由属性和选路](https://blog.csdn.net/qq_61593692/article/details/124592442)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值