一、对等体组:

A、概述和操作:

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

在大型BGP网络中,对等体的数量会很多,其中很多对等体具有相同的配置,在配置时会重复使用一些命令,利用对等体组可以简化配置,同时减少路由性能的消耗。当用户想对几个对等体进行相同配置的时候,可以先创建一个对等体组并对其进行相应的配置,然后将对等体再加入到该组中,组内的所有对等体都具有了该组的配置。

# 配置
group 名字  internal/external  		# 创建对等体组,internal为IBGP对等体组、external为EBGP对等体组,缺省为创建IBGP对等体组
peer X.X.X.X 指定邻居的AS号			# 在EBGP邻居对等体组才需要
peer X.X.X.X  group + 组名  			# 将邻居加入到对等体中
peer huawei connect-interface LoopBack0		# 配置策略
peer huawei next-hop-local					# 配置策略

对等体组是如何减少路由性能损耗的:默认情况下,BGO会针对不同邻居单独打包路由(即使针对不同邻居有相同的路由策略)

Untitled

按组打包技术将所有拥有共同出口策略的BGP邻居当作是一个打包组,每条待发送的路由只被打包一次然后发送给组内所有的邻居

若BGP对等体组内的对等体在某属性配置上与对等体组不一致,则当undo对等体上该属性配置时,对等体会从对等体组上继承该属性配置。

删除对等体组会导致该组内没有配置AS号的对等体中断连接,建议先删除掉对等体组里没有配置AS号的对等体或给这些对等体先配置上AS号,然后再删除对等体组。

二、路由聚合:

在大规模的网络中,BGP路由表十分庞大,给设备造成了很大的负担,同时使发生路由振荡的几率也大大增加,影响网络的稳定性。

路由聚合是将多条路由合并的机制,它通过只向对等体发送聚合后的路由而不发送所有的具体路由的方法,减小路由表的规模。并且被聚合的路由如果发生路由振荡,也不再对网络造成影响,从而提高了网络的稳定性。

BGP在IPv4网络中支持自动聚合和手动聚合两种方式,而IPv6网络中仅支持手动聚合方式:

  • 自动聚合:对BGP引入的路由进行聚合,自动聚合为主类网段,默认关闭,只能在只能在始发路由器上进行配置。配置自动聚合后,BGP将按照自然网段聚合路由(例如非自然网段A类地址10.1.1.1/24和10.2.1.1/24将聚合为自然网段A类地址10.0.0.0/8),并且BGP向对等体只发送聚合后的路由。

  • 手动聚合:对BGP本地路由表中存在的路由进行聚合,可以在任何路由器上进行配置。手动聚合可以控制聚合路由的属性,以及决定是否发布具体路由。注意:手动聚合若不是在始发路由器配置,则需加一条聚合静态指向黑洞路由

为了避免路由聚合可能引起的路由环路,BGP设计了AS_Set属性。AS_Set属性是一种无序的AS_Path属性,标明聚合路由所经过的AS号。当聚合路由重新进入AS_Set属性中列出的任何一个AS时,BGP将会检测到自己的AS号在聚合路由的AS_Set属性中,于是会丢弃该聚合路由,从而避免了路由环路的形成。

[h3c-bgp-default-ipv4]summary automatic # 开启BPG自动聚合
[h3c-bgp-default-ipv4]aggregate 1.1.1.0 24 detail-suppressed # 配置BGP手动聚合,detail-suppressed 指不发布明细路由
[h3c-bgp-default-ipv4]aggregate 1.1.1.0 24 as-set # 聚合时保留AS-PATH属性,用于防环(常用)

命令格式

核心作用

发布内容

aggregate 聚合地址(无抑制参数)

基础路由聚合,不主动抑制明细路由

聚合路由 + 所有被聚合的明细路由

aggregate 聚合地址 detail-suppressed

抑制明细路由,仅保留聚合路由

仅聚合路由(被聚合的明细路由不发布)

aggregate 聚合地址 suppress-policy 路由策略

根据路由策略筛选需抑制的明细路由

仅聚合路由(满足策略的被聚合路由被抑制,不发布)

summary automatic

自动按自然网段聚合

按自然网段生成的聚合路由(如将 192.168.1.0/24、192.168.2.0/24 聚合为 192.168.0.0/16)

# 聚合时使用路由策略修改属性
[R1]route-policy 1 permit node 10
[R1-route-policy]apply origin incomplete
[R1-bgp]aggregate 1.1.1.0 24 attribute-policy 1
# 聚合时使用抑制策略选择需要抑制的路由
[R1-acl-basic-2000]rule 5 permit source 1.1.1.1 32
[R1]route-policy 1 permit node 10
[R1-route-policy]if-match acl 2000
[R1-bgp]aggregate 1.1.1.0 24 suppress-policy 1

三、反射器:

A、概述:

1、使用原因:

由于水平分割原则的原因,为了保证中转AS所有的BGP路由器都能学习到完整的BGP路由,就必须在AS内实现IBGP全互联。然而实现IBGP全互联存在诸多短板:

  1. 路由器需维护大量的TCP及BGP连接,尤其在路由器数量较多时,路由器性能资源占用大。

  2. AS内BGP网络的可扩展性较差,配置条目繁琐。

为此可以采用路由反射器技术。打破BGP通告原则3(打破水平分割),允许将从IBGP邻居学习到的路由发送给特定IBGP邻居,打破了IBGP邻居关系全互联的需求,减少IBGP会话的数量。注意:反射路由无法使用策略去更改路由属性

2、角色介绍:

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

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

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

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

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

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

3、反射规则和原理:

4、其他介绍**:**

Untitled

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

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

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

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

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

  • 非非不传,从非客户机学习的路由,不发送给非客户机

  • 当路由反射器执行路由反射时,它只将自己使用的、最优的BGP路由进行反射

对等体之间的关系:

  1. Client只需维护与RR之间的IBGP会话。

  2. RR与RR之间需建立IBGP的全互联。

  3. Non-Client和Non-Client之间需建立IBGP全互联。

  4. RR与Non-Client之间需建立IBGP全互联。

路由反射防环机制:RR的设定使得IBGP水平分割原则失效(对等体非直连的情况下无法学习到路由),这就可能导致环路的产生,为此RR会为BGP路由添加两个特殊的路径属性来避免出现环路: Originator_IDCluster_List。Originator_ID和Cluster_List属性都属于可选过渡类型

Originator ID:

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

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

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

Untitled

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,然后反射该更新路由。

Untitled

B、反射器高级技术:

1、备份路由反射器:

为增加网络的可靠性,防止单点故障对网络造成影响,有时需要在一个集群中配置一个以上的RR。由于RR打破了从IBGP对等体收到的路由不能传递给其他IBGP对等体的限制,所以同一集群内的RR之间中可能存在环路。这时,该集群中的所有RR必须使用相同的Cluster ID,以避免RR之间的路由环路。

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

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

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

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

Untitled

2、多集群路由反射器:

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

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

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

Untitled
Untitled

三、BGP 联盟:

A、概述:

解决AS内部的IBGP网络连接激增问题,除了使用路由反射器之外,还可以使用联盟(Confederation)。联盟将一个AS划分为若干个子AS,子AS使用私有AS编号。每个子AS内部建立IBGP全连接关系,子AS之间建立联盟EBGP连接关系,但联盟外部AS仍认为联盟是一个AS。配置联盟后,原AS号将作为每个路由器的联盟ID。

这样有两个好处:

  1. 一是可以保留原有的IBGP属性,包括Local Preference属性、MED属性和NEXT_HOP属性等;

  2. 二是联盟相关的属性在传出联盟时会自动被删除,即管理员无需在联盟的出口处配置过滤子AS号等信息的操作。

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

  1. 在联盟AS间传递联盟EBGP路由时不改变下一跳。

  2. 如果在联盟AS之间通过loopback口建立联盟EBGP邻居,同样需要指定EBGP多跳,默认TTL为1

Untitled

B、联盟的防环机制:AS_SET::由一系列AS号无序地组成,包含在UPDATE消息里。当网络发生聚合时,可通过适当策略使AS_PATH使用类型AS_SET来避免路径信息丢失。

AS_SEQUENCE::由一系列AS号顺序地组成,包含在UPDATE消息里。一般情况下,AS_PATH类型为AS_SEQUENCE。

():表示联盟内有序的AS;[]:表示联盟内无序的AS。 //华为才会有,思科是大括号;{}:表示联盟外无序的AS。正则表达式中下划线可以配置小括号,大括号,不能匹配中括号。

  • AS_CONFED_SEQUENCE:本地联盟内由一系列成员AS号按顺序地组成,包含在UPDATE消息中,用法和AS_SEQUENCE相同,只能在本地联盟内传递

  • AS_CONFED_SET:在本地联盟内由一系列成员AS无序组成,包含在UPDATE消息中,用法和AS_SET相同,只能在本地联盟内传递

C、和反射器比较:

Untitled

D、相关配置:

# 配置前需要删除原有AS号、创建新的成员AS号
bgp 65001
confederation id 100	# 指定联盟ID
peer 10.1.12.1 as-number 65001  	# 指定联盟内的IBGP邻居
peer 10.1.24.4 as-number 200  		# 指定联盟外的EBGP邻居
confederation peer-as 65002  		# 65002是联盟内的EBGP邻居
peer 10.1.13.3 as-number 65002
Untitled

四、团体属性:

该章节不在进行详细介绍,可参阅这篇文章

对于团体属性,需掌握利用团体属性对批量路由进行操作,操作可参考该篇博文 三、团体属性控制:

五、路由衰减:

当BGP应用于复杂的网络环境时,路由振荡十分频繁。为了防止频繁的路由振荡带来的不利影响,BGP使用路由衰减来抑制不稳定的路由。

路由振荡指路由表中添加一条路由后,该路由又被撤销的过程。当发生路由振荡时,设备就会向邻居发布路由更新,收到更新报文的设备需要重新计算路由并修改路由表。所以频繁的路由振荡会消耗大量的带宽资源和CPU资源,严重时会影响到网络的正常工作。

路由衰减使用惩罚值(Penalty value)来衡量一条路由的稳定性,惩罚值越高说明路由越不稳定。如上图所示,路由每发生一次振荡,BGP便会给此路由增加1000的惩罚值,其余时间惩罚值会慢慢下降。当惩罚值超过抑制阈值(suppress value)时,此路由被抑制,不加入到路由表中,也不再向其他BGP对等体发布更新报文。被抑制的路由每经过一段时间,惩罚值便会减少一半,这个时间称为半衰期(half-life)。当惩罚值降到再使用阈值(reuse value)时,此路由变为可用并被加入到路由表中,同时向其他BGP对等体发布更新报文。从路由被抑制到路由恢复可用的时间称为抑制时间(suppress time)。

路由衰减只对EBGP路由起作用,对IBGP路由不起作用。这是因为IBGP路由可能含有本AS的路由,而IGP网络要求AS内部路由表尽可能一致。如果路由衰减对IBGP路由起作用,那么当不同设备的衰减参数不一致时,将会导致路由表不一致。

Untitled