首先复习一下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之间的路由环路。

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

图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分级路由反射器​

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

图3 分级路由反射器  

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

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

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

图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号等信息的操作。

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

如上图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