BGP应用与优化(7)

BGP应用与优化(7),第1张

IBGP水平分割,从IBGP邻居学到的路由不会再通告给其他的IBGP邻居;

在一个大型的AS当中收到IBGP水平分割的影响,出现了BGP路由无法通过IBGP邻居接收的问题,解决办法有三种:

1、全互连的IBGP邻居

2、路由反射器RR

3、BGP联盟

一、全互连的IBGP邻居

建立全互连的IBGP邻居将会需要更多的资源,每建立一个BGP邻居就需要一个TCP连接,这样会极大地消耗CPU资源,TCP连接数计算公式:n(n-1)/2

在大型的BGP网络中,一般不采用全连接方式,通常会采用路由反射器RR和联盟来解决

二、路由反射器RR

多台路由器只与一台中心路由器建立邻居关系,不需要全互连的邻居,这台中心路由器允许从IBGP邻居学来的路由被反射出去,打破了IBGP水平分割限制的中心路由器就是路由反射器RR;

1、路由反射器RR的几种角色:

(1)路由反射器route reflector

允许把从IBGP邻居学到的路由反射给其他IBGP邻居的BGP设备;

(2)客户机client

与RR形成反射邻居关系的IBGP设备,由RR决定哪台设备作为客户机;

(3)非客户机non-client

既不是RR也不是客户机的IBGP设备;

在AS内部所有的非客户机与RR必须建立全互连的IBGP邻居;

(4)始发者Originator

在AS内部始发路由的设备,Originator-ID属性用于防止集群内产生路由环路;

(5)集群Cluster

路由反射器及其客户机集合,Cluster-List属性用于防止集群间产生路由环路;

2、路由反射原理

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

RR打破了IBGP水平分割的限制,并采用Originator-ID属性和Cluster-List属性防止路由环路;

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

(1)从非客户机学来的路由,反射给所有的客户机;

(2)从客户机学来的路由,反射给其他所有的客户机和非客户机;

(3)从EBGP学来的路由,反射给所有的客户机和非客户机;

3、Originator-ID属性和Cluster-List属性

当网络中只部署一台RR时,如果该RR设备发生故障,将会导致其他所有的路由器无法收到路由,因此部署多台RR可以提供更好的冗余;

在一个AS内部署了两台RR设备,都能够用于路由的反射,其他设备同时与两台RR建立IBGP邻居关系,及时一台出现故障,另外一台也可以工作;

但是部署过多的RR以及复杂的拓扑也可能带来环路的隐患,AS-Path无法检测到AS内的环路,因此在部署路由反射器时,BGP提供了两种属性,用于检测AS内的环路问题,分别是Originator-ID和Cluster-List属性,这两个属性仅存在当RR将从IBGP邻居收到的路由向另一个IBGP邻居通告时,用于防止环路而添加的仅在AS内起作用的属性,这两个属性不会出现在AS外;

(1)Originator-ID:可选非过渡属性,RR反射路由时,为该路由添加Originator-ID属性(内容是路由始发者客户机的RouterID),用于防止集群内路由环路;

集群内环路现象:

一个集群中部署两个RR(两个RR使用相同的Cluster-ID),每个RR和集群中每个客户机建立IBGP邻居关系,两个RR之间建立IBGP邻居关系(如果存在EBGP邻居的话需要建立IBGP邻居关系);

客户机Client1通告一条路由给RR1,RR1将该路由反射给RR2,RR2继续反射该路由给客户机Clent1,路由回到始发路由器,Client1如果使用该路由则环路产生;

在反射集群内使用Originator-ID属性解决环路过程如下:

客户机Client1通告一条路由给RR1

RR1反射该路由时为该路由添加Originator-ID属性,内容是路由始发者客户机Client1的RouterID,然后反射给RR2;

RR2反射该路由时,发现路由已经携带Originator-ID属性,继续反射给客户机Client1;

客户机Client1收到该路由后,发现路由携带OriginatorID属性且与自身RouterID一致,丢弃该路由;

说明:此场景仅用于阐述Originator-ID原理,实际上RR1反射路由给RR2时,除了添加Originator-ID属性外,还添加了Cluster-List属性,RR2发现路由携带Cluster-List属性且包含自身Cluster-ID(两个RR属于同一集群,Cluster-ID相同),就会丢弃该路由;

(2)Cluster-List:可选非过渡属性,RR使用该属性记录路由经过每个集群的Cluster-ID,用来在集群间避免环路;

AS内的每个集群都由唯一的Cluster-ID来标识,默认为BGP的RouterID,可以使用命令Cluster-ID来修改;

当一条路由被RR反射的时候,RR会把本地Cluster-ID添加到Cluster-List的前面;

当RR接收到一条路由时,会检查Cluster-List,如果Cluster-List中已经有本地Cluster-ID,丢弃该路由,否则把本地Cluster-ID添加到Cluster-List的前面,然后反射出去;

集群间环路现象:

RR1、RR2、RR3是三个反射集群中的路由反射器,假设任意两个RR都是另一个RR的客户机,并部署全互连的IBGP邻居关系;

客户机Client1通告一条路由给RR1,RR1反射给RR2,RR2反射给RR3,RR3重新将该路由反射给RR1,一旦RR1接收并使用该路由则产生环路;

在反射集群之间使用Cluster-List属性解决花露过程如下:

客户机Client1将一条路由通告给RR1;

RR1收到该路由发现没携带Cluster-List属性,为路由添加Cluster-List属性并把自身集群Cluster-ID添加进去,然后反射出去;

RR2收到该路由发现携带Cluster-List属性,不包含自身集群Cluster-ID,把自身集群Cluster-ID添加进去,然后反射出去;

RR3收到该路由发现携带Cluster-List属性,不包含自身集群Cluster-ID,把自身集群Cluster-ID添加进去,然后反射出去;

RR1收到该路由发现携带Cluster-List属性,包含自身集群Cluster-ID,丢弃该路由;

4、路由反射器的设计部署

(1)备份路由反射器方案

为增加网络的可靠性,避免单点故障,需要在一个集群中配置一个以上的RR,同一集群中的所有RR必须使用相同的Cluster-ID;

路由反射器RR1和RR2在同一个集群内,配置了相同的Cluster-ID;

客户机Client和相同Cluster-ID的RR都建立IBGP邻居关系,RR之间建立IBGP邻居关系;

客户机Client学到EBGP路由后,同时向RR1和RR2通告这条路由;

RR1和RR2收到该路由后,将本地Cluster-ID添加到Cluster-List前面,然后向其他客户机反射,同时相互反射;

RR1和RR2收到该反射路由后,检查Cluster-List发现包含自身的Cluster-ID,丢弃该路由,能避免同集群内路由反射器间互相学习源自同一客户机的路由,节省内存空间;

由于集群内RR之间不互相学习Client的路由,所以如果RR上没有EBGP邻居关系,则RR间可以没有IBGP邻居关系;

(2)同级路由反射器方案

一个骨干网被分成多个集群,各集群的RR之间互为非客户机关系,建立IBGP全连接;

每个客户机只与所在集群的RR建立IBGP连接,所有RR和客户机都能收到全部路由信息;

(3)分层路由反射器方案

一个AS内可以存在多个集群,各个集群的RR之间建立IBGP邻居;

当RR所处的网络层不同时,可以将较低网络层次的RR配成客户机,形成分级RR;

每个路由反射器既可以作为该集群的反射器角色,也可作为其他集群的客户机角色;

三、BGP联盟

1、联盟概念

在一个AS中,受IBGP水平分割的影响,如果IBGP会话数量较多,管理起来将会显得麻烦,为了解决该问题,除了使用路由反射器外,还可以使用BGP联盟Confederation;

联盟的概念就是将一个AS划分为若干个子AS,每个子AS内部建立IBGP全连接关系(联盟IBGP邻居),子AS之间建立EBGP连接关系(联盟EBGP邻居),但联盟外部AS仍认为联盟是一个AS;

AS100被分成三个子AS(65001、65002、65003),使用AS100作为联盟ID,此时不需要采用IBGP全互连,连接数从10条减少到4条,如果没有配置联盟,AS100内部都是IBGP邻居,配置联盟以后形成了联盟EBGP邻居和联盟IBGP邻居,在联盟子AS内部可以使用全互连或RR,而在联盟子AS之间使用联盟AS-Path来避免环路;

2、联盟的特点

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

通告给联盟内的路由,MED属性在整个联盟范围内保留;

Local Preference属性在整个联盟范围内保留,而不只是在通告的成员AS内;

在联盟内保留联盟外部的next-hop属性;

在联盟内将子AS号加入AS-Path中,但不会将联盟内子AS号通告到联盟之外;

联盟内的子AS号在AS-Path属性中用单独的两种类型AS-CONFED-SEQUENCE和AS-CONFED-SET表示,默认联盟将子AS号以AS-CONFED-SEQUENCE的形式在AS-Path中列出,如果在联盟内配置了聚合,AS号将以AS-CONFED-SET形式列出;

AS-Path中的联盟子AS号用于避免环路,不计算在AS-Path长度中;

联盟EBGP邻居和联盟IBGP邻居都被看作IBGP类型邻居,不存在联盟EBGP路由优于联盟IBGP路由,即在其他条件相同的情况下,同时从EBGP邻居学到、联盟EBGP或联盟IBGP学到同一条路由,从EBGP邻居学到的路由更优;

联盟内相关属性传出联盟时将会自动删除,不用配置策略过滤子AS号等信息;

3、联盟配置举例

R1为AS100,R2/R3/R4拥有联盟ID为200,R2和R3在联盟子AS65001中,R4属于联盟子AS65002,R5属于AS300;

通过命令confederation id配置BGP联盟,指定联盟ID;

通过命令confederation peer-as指定联盟内子AS号;

R2配置:

bgp 65001

confederation id 200

peer 12.1.1.1 as-number 100

peer 23.1.1.3 as-number 65001

R3配置:

bgp 65001

confederation id 200

peer 23.1.1.2 as-number 65001

confederation peer-as 65002

peer 34.1.1.4 as-number 65002

一、MP-BGP

传统的BGP-4只能管理IPv4单播路由信息,MP-BGP对BGP-4进行了扩展,提供对多种网络层协议的支持;

MP-BGP使用 扩展属性 和 地址族 来实现对IPv6、组播和VPN相关内容的支持,BGP协议原有的报文机制和路由机制并没有改变;

BGP4+,指MP-BGP对IPv6单播网络的支持特性;

MBGP,指MP-BGP对IPv4组播网络的支持特性;

MP-BGP为IPv6单播网络和IPv4组播网络建立独立的拓扑结构,并将路由信息存储在独立的路由表中,保持单播IPv4网络、单播IPv6网络和组播网络之间的路由信息相互隔离,实现用单独的路由策略维护各自网络的路由;

MP-BGP扩展属性

为实现对多种网络层协议的支持,BGP需要将网络层协议的信息反映到NLRI及Next-hop,因此MP-BGP引入了两个新的可选非过渡路径属性:

1、MP_REACH_NLRI    多协议可达NLRI

用于发布可达路由信息和下一跳信息;

内容含义:

(1)Flag标志位:可选非过渡属性;

(2)AFI为IPv6,SAFI为单播;

(3)可达路由信息为2000:10:1:1::/64,下一跳地址为fe80::2

2、MP_REACH_NLRI    多协议不可达NLRI

用于撤销不可达的路由信息;

内容含义:

(1)Flag标志位为可选非过渡属性;

(2)AFI是IPv6,NAFI为单播

(3)需要撤销的路由为2000:10.1:4::/64 , 2000:10:1:5::/64

二、BGP ORF     Outbound Route Filtering出口路由过滤

能将本端设备配置的基于前缀的入口策略通过路由刷新报文发送给BGP邻居;

BGP邻居根据这些策略构造出口策略,在路由发送时对路由进行过滤;

这样不仅避免了本端设备接收大量的无用路由,降低了本端设备的CPU使用率,还降低了链路带宽利用率;

需要两端同时配置,否则不生效,配置命令如下:

peer x.x.x.x capability-advertise orf ip-prefix both

三、路由衰减 dampening         只对EBGP路由起作用

路由振荡指路由表中添加一条路由后,该路由又被撤销的过程;

当发生路由振荡时,设备就会向邻居发布路由更新,收到更新报文的设备需要重新计算路由并修改路由表,所以频繁的路由振荡会消耗大量的带宽资源和CPU资源;

为了防止频繁的路由振荡带来的不利影响,BGP使用路由衰减来抑制不稳定的路由;

1、惩罚值penalty value     

用来衡量一条路由的稳定性,惩罚值越高说明路由越不稳定;

路由每发生一次振荡,路由就会增加1000的惩罚值;

2、抑制阀值suppress value    

当惩罚值达到或超过抑制阀值时(缺省为2000),路由被抑制(不加表,不通告给邻居);

3、半衰期half-life

被抑制的路由每经过一段时间(半衰期,缺省为15min),惩罚值会减少一半;

4、使用阀值reuse value

当被抑制的路由经过半衰期减少到可用的阀值(缺省为750),路由恢复可用(加表,通告给邻居);

5、最大上限值ceiling

惩罚值增加到一定程度后(惩罚上限值,缺省为16000),不会再增加;

6、抑制时间suppress time

从路由被抑制到路由恢复可用的时间;

路由衰减配置示例:

配置半衰期10分钟、使用阀值1000、抑制阀值2000、最大惩罚值5000;

bgp 100

dampening 10 1000 2000 5000

四、对等体组

在大型BGP网络中,对等体的数量会很多,其中很多对等体具有相同的策略,在配置时会重复使用一些命令,邻居越多配置量越大;

对等体组是一些具有某些相同策略的对等体的集合,对等体组中的对等体可以继承对等体组的配置,当对等体组的配置改变时,组内成员的配置也相应改变;

利用对等体组可以实现批量配置,简化管理的难度,并提高路由通告效率;

对等体组配置示例:

group ttt external

peer ttt as-number 200

peer ttt connect-interface loopback0

peer ttt ebgp-max-hop

peer 10.1.2.2 group ttt

peer 10.1.3.3 group ttt

五、BGP认证

BGP认证分为md5认证和keychain认证;

md5认证只能为TCP连接设置认证密码;

keychain认证除了可以为TCP连接设置认证密码外,还可以对BGP协议报文进行认证;

BGP使用TCP作为传输层协议,可以在建立TCP连接时进行md5认证,认证由TCP来提供;

peer x.x.x.x passward cipher xxx

md5认证配置后生成单一密码,需要人为干预才可以切换密码;

配置BGP keychain认证前,必须配置keychain-name对应的keychain认证;

peer x.x.x.x keychain xxx

keychain具有一组密码,可以根据配置自动切换,适用于对安全性要求比较高的网络;

六、BGP GTSM    Generalized TTL Security Mechanism

开启BGP GTSM功能,设备对所有BGP报文的TTL值进行检查,丢弃TTL值小于阀值的攻击报文,避免网络攻击报文占用CPU;

peer x.x.x.x valid-ttl-hops xxx

gtsm default-action drop

GTSM是对称的,需要在对等体双方都配置;

当我们说一个在两个AS之间的连接时,意味着两件事:

物理连接:两个AS之间存在一条共享的数据链路子网,并且在该子网上,每个AS至少有一台自己的边界网关路由器。因此,每个AS的边界网关路由器可以转发数据包到其他AS的边界网关路由器,无需借助于AS内到AS间的路由。

BGP连接:在各个AS的BGP发言人之间有一个BGP会话进程,通过会话沟通路由,经过声明的AS到达某目标网络。

本文档中,我们对构成BGP连接的BGP发言人加以额外限制:他们必须是自己直接共享数据链路子网。因此,相邻AS间的BGP会话无需AS内或AS间的路由。超出本文范围的案例可能与该限制不符。

因此,在每个连接中,每个AS拥有一个以上的BGP发言人和边界网关路由器,这些BGP发言人和边界网关路由器分布在共享数据链路子网上。注意到, BGP发言人不一定是边界网关路由器,反之亦然。一条连接上一个AS的BGP发言人声明的路径可以被同一个共享子网上其他AS的边界网关路由器使用,也就是非直接的邻居是允许的。

一个AS内的流量,要么是源于该AS,要么是终于该AS(也就是说,IP数据包的源IP或目的IP在该AS内)。符合以上描述的流量称为本地流量,否则称为过渡流量。BGP使用的主要目的是控制过渡流量。

按照某AS如何处理过渡流量,AS可以分为以下几类:

末端AS:只连接到一个其他AS。自然地,末端AS只运输本地流量。

多宿主AS:连接到超过一个的其他AS,但不运输过渡流量。

过渡AS:连接到超过一个的其他AS,可以运输本地和过渡流量。

一个完整的AS path提供了有效和简捷的方式来避免路由回路、消除伴随距离向量算法的计数到无穷问题,因此,BGP没有对AS之间的连接拓扑加以任何限制。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/81378.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-04
下一篇2023-03-04

发表评论

登录后才能评论

评论列表(0条)

    保存