小何要努力

小何要努力

BGP的路由反射器、联盟、对等体组

899
2023-12-28

BGP的路由反射器、联盟、对等体组

所周知,IBGP2路由器收到IBGP1传来的BGP路由后,不会再传递给其他IBGP路由器。若要获得该路由就需要进行IBGP邻居的全互联。

在网络较大的情况下,使用IBGP全互联的话,就会很复杂,所以出现了路由反射器和联盟技术

路由反射器

作用:

允许将从IBGP邻居学习到的路由发送给特定IBGP邻居,打破了IBGP邻居关系全互联的需求,减少了IBGP会话数量,节约了设备性能,提高了扩展性,路由传递清晰。

角色:

RR----->路由反射器(route reflector)

把从IBGP对等体学到的路由反射到其他IBGP设备

Client----->客户机

与RR形成反射邻居关系的IBGP设备,由RR决定哪些IBGP邻居成为客户机(成为客户机的设备并知道自己是clien)

client与RR建立正常的IBGP邻居

Non-Client----->非客户机

在AS内部,非客户机与RR之间以及所有的非客户机之间必须建立全互联

Originantor----->始发者

在AS内始发某一条路由的设备,用作防止集群内的环路

Cluster----->集群

路由反射器及其客户机的集合。

RR的邻居关系

1、RR要和AS内的所有IBGP设备建立邻居

2、所有的非客户机之间以及RR与非客户机之间都要建立IBGP全互联

RR发布路由规则

RR打破了IBGP的水平分割

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

(2)从客户机学到的路由,反射给所有的非客户机和客户机

也会向发起此路由的客户机发送此路由
<R1>terminal debugging 开启debugg
 
<R1>debugging bgp update --->bebugg bgp的update报文

<R1>refresh bgp all import

Dec 28 2023 10:29:32.910.1-08:00 R2 RM/6/RMDEBUG:

 BGP.Public : Error identified while receiving UPDATE message from the peer 4.4.4.4 and ignored

 Reason: (ORIGINATORID equal to RouterID).  忽略从4.4.4.4发来的路由,因为起源ID等于了自己的route ID

(3)从EBGP对等体学到的路由,发送给所有的客户机和非客户机

(4)在RR上network的路由会发送给所有的客户机和非客户机

注意:

从非客户机学习到的路由,不能再传递给非客户机(非非不相传)

路由反射器的防环机制

Originator_ID----->起源ID(可选非过渡属性)

作用:

用于防止集群内产生路由环路

  • 当一条路由第一次被RR反射的时候,RR将Originator_ID属性加入这条路由,标识这条路由的发起设备。

  • 如果一条路由中已经存在了Originator_ID属性,则RR将不会创建新的Originator_ID属性

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

Cluster_List-------集群列表(可选非过渡属性)

作用:用于防止集群间产生路由环路

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

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

注意:

  • Cluster_List 可以包含一个Cluster ID,也可以包含多个Cluster ID

  • 当一个网络中有多个RR(防止单点故障)时,可以通过此网络中的RR配置相同的集群ID(Cluster_ID)来减少各RR接收的路由数量

  • Originator_ID和Cluster_List属性仅在本AS内生效

 

问题: 经过RR的路由,RR都会添加Originator_ID和Cluster-list这两个属性吗?

答:不一定。

如果是RR路由器从EBGP邻居学习到的路由,经过RR之后不会添加上这两个属性,因为从EBGP邻居学习到的路由,本身就会传递给IBGP邻居;

如果是RR路由器本身network或者import的路由,也不会添加上这两个属性。

RR部署模式的分类

备份RR

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

RR1给和RR2之间传递路由时,检查自己的Cluster_list中发现有自己的Cluster_ID,就会丢弃掉该路由。

同级RR

AS中被分成多个集群,各集群的RR之间互为非客户机关系,但是建立IBGP全互联

RR之间全互联,RR之间互为非客户机

非客户机之间全互联

非客户机和RR之间全互联

分级RR

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

路由反射器配置

华为配置
bgp 100

 peer  X.X.X.X reflect-client      配置自己为RR,并将指定的对等体配置为Client

 reflector cluster-id  X.X.X.X     配置集群ID

锐捷配置

route bgp 100

 neighbor X.X.X.X route-reflector-client   配置自己为RR,并将指定的对等体配置为Client

 bgp cluster-id x.x.x.x                    配置集群ID

BGP联盟

基础概念:

联盟就是是将一个AS划分为若干个子AS。子AS内部建立IBGP全互联(联盟IBGP邻居),子AS之间建立EBGP连接关系(联盟EBGP邻居关系)。联盟减少了邻居数量,较少了配置,也解决了路由黑洞问题

但联盟外部AS仍认为联盟是一个AS

联盟的特点:

1、通告给联盟内的路由的MED属性、local preference属性在整个联盟范围内保留。

2、在联盟内部将会保留联盟外部的next_hop 属性。

3、联盟内相关的属性传出联盟时将会被自动删除,无需过滤子AS号等操作

AS_Path多种体现形式

1、AS_Path  有序的--->AS-SEQUENCE

2、AS_Set    无序的(聚合路由时产生的)--->AS-SET-SEQUENCE

3、联盟内的AS_Path    有序的--->AS-CONFED-SEQUENCE

4、联盟内的AS_Set      无序的(聚合时产生的)--->AS-CONFED-SET

注意:

联盟AS PATH 仅用于防止环路, 不计入AS PATH 长度

R5收到联盟EBGP邻居R3传来的100.1.1.0和从EBGP邻居R6传来的100.1.1.0,比较AS路径长度时,联盟内传来的路由会优于联盟外传来的。

假设此时,AS相同长度的情况下

R5会选择EBGP邻居传来的路由,联盟的eBGP与联盟的iBGP 都被视为iBGP 邻居, 而eBGP 优于iBGP 。

联盟配置命令:
华为配置

bgp 65002                                  配置子AS号

 confederation id 200                 声明自己所属的联盟AS号

 confederation peer-as 65002         配置自己相连的其他子AS号

 peer X.X.X.X as-number 100 

 peer X.X.X.X as-number 65002

锐捷配置

route bgp 65002                        配置子AS号

 bgp confederation identifier 200      声明自己所属的联盟AS号

 bgp confederation peer 65002          配置自己相连的其他子AS号

 neighbor X.X.X.X remote-as 100        建立BGP对等体

 neighbor X.X.X.X remote-as 65002      建立BGP对等体

对等体组

对等体组( Peer Group ) 是一些具有某些相同策略的对等体的集合,当一个对等体加入对等体组中时,此对等体将获得与所在对等体组相同的配置。对等体组中的对等体可以继承对等体组的配置,当对等体组的配置改变时, 组内成员的配置也相应改变。

对等体组可以减少邻居之间的配置命令,实现批量配置,简化管理的难度

配置命令:
group group-name [external | internal] 

peer EX as-number 200 ---->对于iBGP 对等体组. AS 号为本地编号,不需配直该步骤.

peer 10. 1.2.2 group EX

peer EX connect-interface LoopBack 0

peer EX ebgp-max-hop 

如果不指定对等体组为iBGP 还是eBGP . 那么默认创建iBGP 对等体组。