2

BGP RR反射器理论实验,BGP联盟详解 纯干货!

 2 years ago
source link: https://blog.51cto.com/u_15255312/5166025
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

首先复习一下BGP

​BGP简介​

边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS(Autonomous System)之间的路由可达,并选择最佳路由的距离矢量路由协议。

早期发布的三个版本分别是BGP-1(RFC1105)、BGP-2(RFC1163)和BGP-3(RFC1267),1994年开始使用BGP-4(RFC1771),2006年之后单播IPv4网络使用的版本是BGP-4(RFC4271),其他网络(如IPv6等)使用的版本是MP-BGP(RFC4760)。

MP-BGP是对BGP-4进行了扩展,来达到在不同网络中应用的目的,BGP-4原有的消息机制和路由机制并没有改变。MP-BGP在IPv6单播网络上的应用称为BGP4+,在IPv4组播网络上的应用称为MBGP(Multicast BGP)

为方便管理规模不断扩大的网络,网络被分成了不同的自治系统。1982年,外部网关协议EGP(Exterior Gateway Protocol)被用于实现在AS之间动态交换路由信息。

但是EGP设计得比较简单,只发布网络可达的路由信息,而不对路由信息进行优选,同时也没有考虑环路避免等问题,很快就无法满足网络管理的要求。

BGP是为取代最初的EGP而设计的另一种外部网关协议。不同于最初的EGP,BGP能够进行路由优选、避免路由环路、更高效率的传递路由和维护大量的路由信息。

虽然BGP用于在AS之间传递路由信息,但并不是所有AS之间传递路由信息都需要运行BGP。比如在数据中心上行的连入Internet的出口上,为了避免Internet海量路由对数据中心内部网络的影响,设备采用静态路由代替BGP与外部网络通信。

​BGP从多方面保证了网络的安全性、灵活性、稳定性、可靠性和高效性:​

1、BGP采用认证和GTSM的方式,保证了网络的安全性。

2、BGP提供了丰富的路由策略,能够灵活的进行路由选路。

3、BGP提供了路由聚合和路由衰减功能用于防止路由振荡,有效提高了网络的稳定性。

4、BGP使用TCP作为其传输层协议(端口号为179),并支持BGP与BFD联动、BGP Tracking和BGP GR,提高了网络的可靠性。

​下面开始正文​

一、BGP路由反射器

为保证IBGP对等体之间的连通性,需要在IBGP对等体之间建立全连接关系。​假设在一个AS内部有n台设备,那么建立的IBGP连接数就为n(n-1)/2。​

当设备数目很多时,设备配置将十分复杂,而且配置后网络资源和CPU资源的消耗都很大。在IBGP对等体间使用路由反射器可以解决以上问题。

1、BGP路由反射器角色

BGP RR反射器理论实验,BGP联盟详解 纯干货!_网工干货

如上图1,在一个AS内部关于路由反射器有以下几种角色:

如上图1,在一个AS内部关于路由反射器有以下几种角色:

​路由反射器RR(Route Reflector):允许把从IBGP对等体学到的路由反射到其他IBGP对等体的BGP设备,类似OSPF网络中的DR。​

1、客户机(Client):

与RR形成反射邻居关系的IBGP设备。在AS内部客户机只需要与RR直连。

2、非客户机(Non-Client):

既不是RR也不是客户机的IBGP设备。在AS内部非客户机与RR之间,以及所有的非客户机之间仍然必须建立全连接关系。

3、始发者(Originator):

在AS内部始发路由的设备。Originator_ID属性用于防止集群内产生路由环路。

4、集群(Cluster):

路由反射器及其客户机的集合。Cluster_List属性用于防止集群间产生路由环路。

RR的作用:

​1、从客户机收到的路由,反射给其他的客户机。 ​​

​​2、从客户机收到的路由,反射给其他的非客户机。 ​​

​​3、从非客户机收到的路由,反射给其他的客户机。​​

​4、​从非客户机收到的路由,不反射给非客户机。​

​总结​:

​RR只传递最优的BGP路由,除了非客户机之间的路由不反射,其他的都反射。​

​反射​:

​只有打破了IBGP路由只传一跳特征的才叫做反射,反射不会修改IBGP路由的任何属性。 RR将路由反射出去的时候添加两个属性:Originator ID、Cluster list 用于防止环路。​

起源ID:

​1、RR将路由反射出去的时候添加Orignator ID,取值为IBGP邻居的Router id。

​2、当BGP设备接受一条路由之后,起源ID和自身RouterID相同,则拒绝接受该路由

BGP RR反射器理论实验,BGP联盟详解 纯干货!_企业网络搭建_02

2、BGP路由反射器原理

同一集群内的客户机只需要与该集群的RR直接交换路由信息,因此客户机只需要与RR之间建立IBGP连接,不需要与其他客户机建立IBGP连接,从而减少了IBGP连接数量。

如上图1所示,在AS65000内一台设备作为RR,三台设备作为客户机,形成Cluster1。此时AS65000中IBGP的连接数从配置RR前的10条减少到4条,不仅简化了设备的配置,也减轻了网络和CPU的负担。

RR突破了“从IBGP对等体获得的BGP路由,BGP设备只发布给它的EBGP对等体。”的限制,并采用独有的Cluster_List属性和Originator_ID属性防止路由环路

RR向IBGP邻居发布路由规则如下:

1、从非客户机学到的路由,发布给所有客户机。

2、从客户机学到的路由,发布给所有非客户机和客户机(发起此路由的客户机除外)。

3、从EBGP对等体学到的路由,发布给所有的非客户机和客户机。

3、BGP Cluster_List属性

路由反射器和它的客户机组成一个集群(Cluster),使用AS内唯一的Cluster ID作为标识。为了防止集群间产生路由环路,路由反射器使用Cluster_List属性,记录路由经过的所有集群的Cluster ID。

当一条路由第一次被RR反射的时候,RR会把本地Cluster ID添加到Cluster List的前面。如果没有Cluster_List属性,RR就创建一个。

当RR接收到一条更新路由时,RR会检查Cluster List。如果Cluster List中已经有本地Cluster ID,丢弃该路由;如果没有本地Cluster ID,将其加入Cluster List,然后反射该更新路由。

​4、BGP Originator_ID属性​

Originator ID由RR产生,使用的Router ID的值标识路由的始发者,用于防止集群内产生路由环路。

当一条路由第一次被RR反射的时候,RR将Originator_ID属性加入这条路由,标识这条路由的发起设备。如果一条路由中已经存在了Originator_ID属性,则RR将不会创建新的Originator_ID属性。

当设备接收到这条路由的时候,将比较收到的Originator ID和本地的Router ID,如果两个ID相同,则不接收此路由。

​5、BGP备份路由反射器​

为增加网络的可靠性,防止单点故障对网络造成影响,有时需要在一个集群中配置一个以上的RR。

由于RR打破了从IBGP对等体收到的路由不能传递给其他IBGP对等体的限制,所以同一集群内的RR之间中可能存在环路。这时,该集群中的所有RR必须使用相同的Cluster ID,以避免RR之间的路由环路。

图2 备份路由反射器

如上图2,路由反射器RR1和RR2在同一个集群内,配置了相同的Cluster ID。

1、当客户机Client1从EBGP对等体接收到一条更新路由,它将通过IBGP向RR1和RR2通告这条路由。

2、RR1和RR2在接收到该更新路由后,将本地Cluster ID添加到Cluster List前面,然后向其他的客户机(Client2、Client3)反射,同时相互反射。

3、RR1和RR2在接收到该反射路由后,检查Cluster List,发现自己的Cluster ID已经包含在Cluster List中。于是RR1和RR2丢弃该更新路由,从而避免了路由环路。

6、BGP多集群路由反射器

一个AS中可以存在多个集群,各个集群的RR之间建立IBGP对等体。当RR所处的网络层不同时,可以将较低网络层次的RR配成客户机,形成分级RR。当RR所处的网络层相同时,可以将不同集群的RR全连接,形成同级RR。

​7、BGP分级路由反射器​

图3 分级路由反射器  

在实际的RR部署中,常用的是分级RR的场景。如上图3,ISP为AS100提供Internet路由。AS100内部分为两个集群,其中Cluster1内的四台设备是核心路由器,采用备份RR的形式保证可靠性。

​8、BGP同级路由反射器​

图4 同级路由反射器

如上图4,一个骨干网被分成多个集群。各集群的RR互为非客户机关系,并建立全连接。此时虽然每个客户机只与所在集群的RR建立IBGP连接,但所有RR和客户机都能收到全部路由信息。

​二、BGP联盟​

解决AS内部的IBGP网络连接激增问题,除了使用路由反射器之外,还可以使用联盟(Confederation)。

联盟将一个AS划分为若干个子AS。每个子AS内部建立IBGP全连接关系,子AS之间建立联盟EBGP连接关系,但联盟外部AS仍认为联盟是一个AS。

配置联盟后,原AS号将作为每个路由器的联盟ID。

这样有两个好处:一是可以保留原有的IBGP属性,包括Local Preference属性、MED属性和NEXT_HOP属性等;二是联盟相关的属性在传出联盟时会自动被删除,即管理员无需在联盟的出口处配置过滤子AS号等信息的操作。

如上图1所示,AS100使用联盟后被划分为3个子AS:AS65001、AS65002和AS65003,使用AS100作为联盟ID。此时IBGP的连接数量从10条减少到4条,不仅简化了设备的配置,也减轻了网络和CPU的负担。而AS100外的BGP设备因为仅知道AS100的存在,并不知道AS100内部的联盟关系,所以不会增加CPU的负担。

联盟AS:大AS,部署了联盟的AS叫做联盟AS。

成员EBGP邻居:在成员AS之间建立的EBGP邻居叫做成员EBGP邻居。

​联盟EBGP邻居:EBGP邻居,与其他常规AS建立的EBGP邻居,叫做联盟EBGP邻居。

联盟AS内部存在多个成员AS,成员AS之间建议使用相同的IGP协议

​联盟命令:​

confederation id 123 所在的大的AS号

​confederation peer-as 45 3 //自己所连接的子as就配置多少

基于成员EBGP邻居之间传递路由,当做IBGP等同对待原则:从成员EBGP邻居接受到的路由,传递给其他成员EBGP邻居和IBGP邻居时,无法使用Next-hop-local修改下一跳属性。也基于这一特征,所以建议联盟AS内部存在多个成员AS时,成员AS之间建议使用相同的IGP协议。

​​三、BGP RR实验​

​配置OSPF阶段​

BGP RR反射器理论实验,BGP联盟详解 纯干货!_网工干货_07

AR1的IP地址表

BGP RR反射器理论实验,BGP联盟详解 纯干货!_网工干货_08

AR2的IP地址表

BGP RR反射器理论实验,BGP联盟详解 纯干货!_企业网络搭建_09

AR3的IP地址表

BGP RR反射器理论实验,BGP联盟详解 纯干货!_网工干货_10

AR4的IP地址表

BGP RR反射器理论实验,BGP联盟详解 纯干货!_华为网工_11

AR5的IP地址表

BGP RR反射器理论实验,BGP联盟详解 纯干货!_网工干货_12

此时是EBGP邻居 AR2 AR3 AR4 AR5先建立底层通信 启用OSPF 建立 之后再建立EBGP邻居 指定RR反射器反射给客户端

AR2 OSPF:

ospf 1 router-id 2.2.2.2

area 0.0.0.0

network 2.2.2.2 0.0.0.0  

network 23.1.1.2 0.0.0.0  

network 24.1.1.2 0.0.0.0  

network 25.1.1.2 0.0.0.0  

AR3 OSPF:

ospf 1  

area 0.0.0.0  

network 0.0.0.0 255.255.255.255   此时直接宣告全部网段为了节省时间 

AR4 OSPF:

ospf 1 router-id 4.4.4.4  

area 0.0.0.0  

network 0.0.0.0 255.255.255.255 

AR5 OSPF:

ospf 1 router-id 5.5.5.5  

area 0.0.0.0  

network 0.0.0.0 255.255.255.255

​在AR2上查看OSPF邻居建立状态 此时已经全FUll状态了 建立完成​

BGP RR反射器理论实验,BGP联盟详解 纯干货!_网工的逆袭之路_13

以下为BEGP 配置包含RR反射器 详细配置我会标注出来

配置EBGP,IBGP RR反射器

AR1配置EBGP 对AR2指向邻居

AR1的EBGP配置​

bgp 1    运行BGP AS号为1

peer 12.1.1.2 as-number 2345  ​ peer指向对端的ip地址 as-number是对方的AS号为2345

ipv4-family unicast 进入IPv4单播地址簇下

undo synchronization

peer 12.1.1.2 enable  将这条命令使能

AR2的EBGP配置​

bgp 2345   配置BGP  本端AS号为2345 

peer 3.3.3.3 as-number 2345     ​这是指向AR3 指向的是对端的环回接口一会要更改发送源地址为环回接口 不然邻居建立不成功,AR3的AS号为2345​

peer 3.3.3.3 connect-interface LoopBack0 //将发送源地址更改为环回接口地址 发送TCP三次握手是用环回接口发起的建立

peer 4.4.4.4 as-number 2345   这是向AR4建立的IBGP邻居建立 指向的还是环回接口 AS号为2345

peer 4.4.4.4 connect-interface LoopBack0 ​//将发送源地址更改为环回接口 用环回接口地址建立TCP连接

peer 5.5.5.5 as-number 2345    //和AR5建立IBGP连接 指向的是对方的环回接口 AR5的AS号为2345

peer 5.5.5.5 connect-interface LoopBack0 ​ //将发送源地址更改为环回接口 本端的是2.2.2.2 意思就是说2.2.2.2和3.3.3.3建立 前提是2.2.2.2做为源地址可以和3.3.3.3互通才可以 才可以建立TCP连接成功建立BGP

peer 12.1.1.1 as-number 1  此时是和AR1建立EBGP邻居 AR1的AS号为1 此时是和接口发起的连接 不需要更改发送源地址

 ipv4-family unicast     //进入IPv4地址簇下进行配置

 undo synchronization

 peer 3.3.3.3 enable      //将指向3.3.3.3这条命令使能

 peer 3.3.3.3 reflect-client    ​//配置RR反射器 对端3.3.3.3开启RR反射器​

 peer 3.3.3.3 next-hop-local    //此时要更改下一跳 建立EBGP 边缘路由器要为IBGP内的路由更改下一跳不然路由表会出现问题

 peer 4.4.4.4 enable    //将指向4.4.4.4 这条命令使能开启

 peer 4.4.4.4 next-hop-local  //此时要更改下一跳 建立EBGP 边缘路由器要为IBGP内的路由更改下一跳不然路由表会出现问题

 peer 5.5.5.5 enable   ////将指向5.5.5.5 这条命令使能开启

 peer 5.5.5.5 next-hop-local    ​//此时要更改下一跳 建立EBGP 边缘路由器要为IBGP内的路由更改下一跳不然路由表会出现问题​

 peer 12.1.1.1 enable   指向12.1.1.1的这条命令使能

AR3的BGP配置​

bgp 2345

peer 2.2.2.2 as-number 2345     //指向AR2的环回口 AR2的AS号为2345 

peer 2.2.2.2 connect-interface LoopBack0  //将发送源地址更改为环回接口建立TCP连接 完成BGP的邻居建立

ipv4-family unicast

 undo synchronization

 network 192.168.1.0  

 peer 2.2.2.2 enable 

AR4 的BGP配置​

bgp 2345

peer 2.2.2.2 as-number 2345  //此时在AR4上和AR2建立邻居, 和对端的环回接口建立 AR2的AS号为2345

peer 2.2.2.2 connect-interface LoopBack0   //将发送源地址更改为环回接口建立TCP连接 完成BGP的邻居的建立

ipv4-family unicast

 undo synchronization

 peer 2.2.2.2 enable

AR5的BGP配置​

bgp 2345

peer 2.2.2.2 as-number 2345   和AR2的环回接口建立IGBP邻居 AR2的AS号为2345 

peer 2.2.2.2 connect-interface LoopBack0   ​//将发送源地址更改为环回接口 用环回接口的地址建立TCP的三次握手 保证BGP的邻居建立完成​

ipv4-family unicast

 undo synchronization

 peer 2.2.2.2 enable

最后在AR2上看一下 BGP邻居建立情况 看bgp邻居表

display bgp peer   //查看BGP邻居表​

BGP RR反射器理论实验,BGP联盟详解 纯干货!_华为网工_14


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK