BGP建邻详解(华为设备)

目录

写在前面

参考阅读

实验拓扑

需求

分析

配置部署

验证测试


写在前面

本篇主要对如下问题进行详解

AS-BY-AS(通过EBGP邻居学习到的路由传给IBGP时下一跳不发生变化);

IBGP水平分割;

建邻用的地址在底层的IGP可达;

EBGP默认TTL为1 ;

参考阅读

深入浅出BGP

BGP汇总(理论+实验)

实验拓扑

需求

R1-R5的环回都可ping通,即不同运营商之间的用户可以访问

分析

首先,进行IP地址的配置,然后再R2-R4间运行OSPF,使AS内部的路由器可以全网可达,即同一运营商内部是相通的

配置部署

接下来建立BGP邻居

思路

BGP邻居分为IBGP邻居与EBGP邻居,即属于同一个AS内的是IBGP,不属于同一个AS的是EBGP.

配置

无论用直连链路还是环回接口建立TCP会话,前提是IP可达

  • R1与R2建立EBGP邻居(直连链路)

 

测试IP可达否

 

查看TCP会话建立情况、BGP邻居关系,可见12.1.1.1作为目标端口,与12.1.1.2建立了端到端的TCP会话,此时,TCP的三次握手建立会话,相当于完成了BGP的邻居发现功能

  • R2与R3建立IBGP邻居(环回接口)

使用环回接口建立端对端的TCP会话时,需再两个路由器上更改源为环回接口(默认的是物理接口)

测试IP可达否

 

查看TCP会话建立情况、BGP邻居关系,可见2.2.2.2作为目标端口,与3.3.3.3建立了端到端的TCP会话,此时,TCP的三次握手建立会话,相当于完成了BGP的邻居发现功能

 

R3与R4之间建立IBGP同理

 

  • R4与R5之间建立EBGP邻居(这里使用环回接口)

为了使IP可达(R4与R5的环回可以相通),手工配置静态路由.

 

接下来配置R4与R5之间的EBGP邻居,并更改建立TCP会话的源为自己的环回.

 

此时,在R4上查看bgp邻居表,可见与R5间并没有建立邻居,状态为闲置状态.这是因为IBGP邻居间BGP数据包的TTL值为255, EBGP邻居为1;因此使用环回接口建立EBGP邻居关系时,TTL值必须被修改

 

此时,R4与R5间的EBGP邻居就建立成功

接下来,完成实验要求,即宣告路由

在R1上自己的环回宣告后,R2就会学习到,并传递给R3,但是R3不会传递给R4,这是由于IBGP水平分割机制所导致的(从IBGP邻居学习到的路由不会再传递给IBGP邻居),

解决的办法是,R2与R4之间建立邻居,这样R2就会把从EBGP邻居那里学习到的R1的环回传递给R4,R4也会传递给R5,

 

在R3上查看路由表,发现R2 传递来的这条环回,不是最优路径,则不会加到路由表内, 这是因为AS-BY-AS的规则,导致通过在一个as内部传递时,属性不变;可能导致下一跳不可达,路径不优

解决方案, 将路由传递给该邻居时,下一跳修改为本地

 

在查看R3上的路由表,可见变成了最佳路径,也加入到了路由表内

 

由于IBGP水平分割的机制,导致R2不会将此条路由传递给R3,所以,建立R2与R4的邻居,并在R2上更改向R4传递路由时的下一跳属性为自己

 

 

此时,R4上就学习到了R1的环回,并且还会将此条路由传递给R5,EBGP之间传递路由时,将下一跳属性改为自己(在EBGP邻居关系间传递路由时,下一跳将自动被修改为本地)

 

接下来,在其他路由器上宣告自己的环回(模拟的用户)

在R5上宣告后,R4学习到的是无效路由,原因是因为R4上本身手工配置了到达R5的静态,优先值为60,小于EBGP邻居(R5)传递来的优先值为255的,

解决方案就是在R4上宣告5.5.5.0/24(因为BGP宣告的意思是,宣告本路由器路由表中存在的路由条目)

 

宣告后,两条相同的路由优选了本地产生的

 

这时,R4会将这条路由传递给R3,R3上这条路由的下一跳是R4的环回,IBGP内部传递路由时,下一跳属性不会发生改变(AS-BY-AS),但是R3不会传递给R2(IBGP水平分割),R4与R2间有邻居,即R4传递给R2

 

R2会将此条路由传递给R1,EBGP邻居间传递路由时,会将下一跳将自动被修改为本地

 

R2 R3 R4上宣告自己的环回

 

宣告完成后,在每个路由器上查看BGP路由表

R5的BGP路由表上显示R4的环回为无效路由是因为R5去往R4的环回有一条静态,静态加表,通过EBGP邻居学习到的不加表

 

验证测试