概述:


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

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

路由聚合是会使用Aggregator属性和AutoAggregator属性 :

Atomic-Aggregate属性:属于公认任意属性,主要用于路由聚合时,如果聚合路由将所有明细路由抑制了,就会为聚合路由生成该属性。使用该属性也有一种警告作用,用于告知对等体,原始的明细路由AS_ PATH 出现了丢失。

Aggregator属性:属于可选过渡属性,该属性作为Atomic-Aggregate 的补充,指明路由信息是在何处出现了丢失,该属性包含发起聚合路由的AS号及生成聚合路由的BGP通告者的RouterID ( 又称为Aggregator ID)。

自动聚合:


自动聚合注意事项:

  1. 该命令对BGP引入的路由进行聚合,引入的路由可以是直连路由、静态路由、RIP路由、OSPF路由、IS-IS路由。配置聚合后,BGP将按照自然网段聚合路由,明细路由在BGP路由更新中被抑制。该命令对network命令引入的路由无效。
  2. BGP只向对等体发送聚合后的路由。
  3. 缺省情况下BGP不启用自动聚合。

配置:

  1. 执行命令bgp as-number,进入BGP视图。
  2. 执行命令ipv4-family unicast,进入IPv4单播地址族视图。
  3. 执行命令summary automatic,配置对本地引入的路由自动聚合。
    该命令对BGP引入的路由进行聚合,引入的路由可以是直连路由、静态路由、RIP路由、OSPF路由、IS-IS路由。配置该命令后,BGP将按照自然网段聚合路由。该命令对network命令引入的路由无效。

手动聚合:

一、利用静态路由进行聚合
这种方式是先在路由表中为聚合地址创建静态表项,之后再利用network命令宣告该聚合地址,如下面这个例子:

如图,AS100中有192.168.1.0/24、192.168.2.0/24、192.168.3.0/24和192.168.4.0/24四个内部网络,现在要将4个内部网络的路由聚合成一条192.168.0.0/16这条路由。R1的关键配置:

bgp 100
peer 11.1.1.2 as-number 200

ipv4-family unicast
undo synchronization
network 192.168.0.0 255.255.0.0 //将聚合路由发布到BGP中
peer 11.1.1.2 enable

ip route-static 192.168.0.0 255.255.0.0 NULL0 //配置一条指向NULL0的静态聚合路由

由于聚合路由本身并不是合法的终端目的地址,因而静态路由指向Null接口,该路由在R1的路由表中仅代表一条精确路由。如果数据包的目的地址属于AS100的C类地址,那么AS100的外部路由器将撇配该聚合路由并转发给R1,到了路由器R1之后,数据包将被匹到更精确的地址,并被转发到正确的内部下一跳路由器。如果因某种导致更精确的C类地址不在R1路由表中的话,将把该数据包转发到Null接口并予以丢弃。我们查看R2的BGP路由表:

R2的路由表中只有一条聚合路由,其他明细路由均未进入R2的路由表。

二、通过aggregate命令手动聚合路由,并抑制明细路由
在上面这种简单的场景下,通过静态路由进行聚合的方式已经足够了,但是对于拓扑结构或者路由策略稍微复杂一些的情况,通过静态路由进行聚合的方式不建议被使用,我们可以使用aggregate命令进行手动聚合。下面具体说明下aggregate命令极其参数的作用。先在上面那个简单的例子中使用aggregate命令。

R1的关键配置:

bgp 100
peer 11.1.1.2 as-number 200

ipv4-family unicast
undo synchronization
aggregate 192.168.0.0 255.255.0.0 detail-suppressed
network 192.168.1.0
network 192.168.2.0
network 192.168.3.0
network 192.168.4.0
peer 11.1.1.2 enable

想要宣告由aggregate命令指定的聚合路由,必须通过重分布或者network命令使至少一个更精确的地址进入BGP路由表。这里我们查看R1和R2的BGP路由表:

可以看到,R1的BGP路由表中包含了所有精确路由,而R2的路由表中只有一条聚合路由,这是因为在aggregate命令中配置了detail-suppressed参数,使R1只会将聚合路由发送给R2。而R1的BGP路由表中,明细路由前面都有“s”的标志,代表这些路由已经被聚合路由抑制。

三、 同时发送聚合路由和明细路由
对于像上面这种简单拓扑来说,确实不需要同时宣告聚合路由和明细路由。再看一下下面这个例子:

如图,AS100多归属到AS200,AS200需要从AS100接受全部路由以设置路由策略,但AS200仅能向AS300发送聚合路由。这个场景下,AS100就需要将全部路由发送给AS200。这里一种简单的解决方式是利用团体属性。让AS100发送给AS200的明细路由携带NO_EXPORT团队属性。配置以R1为例:

bgp 100
peer 11.1.1.2 as-number 200

ipv4-family unicast
undo synchronization
aggregate 192.168.0.0 255.255.0.0 /路由聚合为192.168.0.0/16,并且不抑制明细路由
network 192.168.1.0
network 192.168.2.0
network 192.168.3.0
network 192.168.4.0
peer 11.1.1.2 enable
peer 11.1.1.2 route-policy COMMUNITY export /对R2出方向使用路由策略COMMUNITY
peer 11.1.1.2 advertise-community /对R2发送携带团队属性的路由

route-policy COMMUNITY permit node 5 /配置路由策略COMMUNITY,对匹配前缀列表AGGREGATE的路由不设置团队属性
if-match ip-prefix AGGREGATE
apply community none

route-policy COMMUNITY permit node 10 /未匹配上一个节点的路由,为其打上团队属性NO_EXPORT,这样就实现了仅对明细路由打上NO_EXPORT属性
apply community no-export

ip ip-prefix AGGREGATE index 10 permit 192.168.0.0 16 /配置前缀列表
AGGREGATE仅匹配192.168.0.0/16

我们通过命令display bgp routing-table 192.168.0.0查看R2上聚合路由的详细信息:

可以看到,该路由已被并标明是一条聚合路由,并且在AS100进行聚合,始发路由器的ROUTER ID是11.1.1.1。该路由并未携带任何团队属性。再查看R5的BGP路由表:

R5上只存在聚合路由,明细路由由于携带NO_EXPORT团队属性,并未发送给R5。

四、仅发送聚合路由和选定的明细路由

在上述场景下,通过仅发送聚合路由和选定的明细路由,我们还可以实现链路的备份和负载分担,方法如下:

  1. 让R1-R2的链路只宣告192.168.1.0/24和192.168.2.0/24这两条路由。
  2. 让R3-R4的链路只宣告192.168.3.0/24和192.168.4.0/24这两条路由
  3. 通过上述两条链路宣告聚合路由作为备份,再任一条链路出现故障的情况下,所有该链路上访问AS100的流量都会迅速被切换到另外一条链路上。

这里,我们需要R1和R3分别发送聚合路由和一部分明细路由,这时,会用到aggregate命令的另外一个参数“suppress-policy”。下面给出R1和R3的关键配置:

R1的关键配置:

bgp 100
peer 11.1.1.2 as-number 200

ipv4-family unicast
undo synchronization
aggregate 192.168.0.0 255.255.0.0 suppress-policy SUPPRESS /聚合路由时使用抑制列表SUPPRESS,对于匹配路由策略SUPPRESS的明细路由进行抑制,没有匹配到的就放行,不抑制。
network 192.168.1.0
network 192.168.2.0
network 192.168.3.0
network 192.168.4.0
peer 11.1.1.2 enable

route-policy SUPPRESS permit node 5 /配置路由策略,注意这里只能配置if-match子句,用来匹配被抑制的路由。虽然上面使用的是抑制策略,但是这里仍然配置路由策略即可,但是名称需要和调用的抑制。并且不要再添加一个新的节点,只需要匹配抑制的条目即可。
if-match ip-prefix SUPPRESS

ip ip-prefix SUPPRESS index 10 permit 192.168.3.0 24 /配置前缀列表,匹配抑制的条目
ip ip-prefix SUPPRESS index 20 permit 192.168.4.0 24

R3的关键配置:

bgp 100
peer 12.1.1.2 as-number 200

ipv4-family unicast
undo synchronization
aggregate 192.168.0.0 255.255.0.0 suppress-policy SUPPRESS
network 192.168.1.0
network 192.168.2.0
network 192.168.3.0
network 192.168.4.0
peer 12.1.1.2 enable

route-policy SUPPRESS permit node 5
if-match ip-prefix SUPPRESS

ip ip-prefix SUPPRESS index 10 permit 192.168.1.0 24
ip ip-prefix SUPPRESS index 20 permit 192.168.2.0 24

我们通过抑制特定的明细路由,实现了R1和R3只宣告聚合路由和特定的明细路由,在R5上查看BGP路由表:

可以看到,R5上聚合路由有两个下一跳,而192.168.1.0/24和192.168.2.0/24这两条路由的下一跳为R2,而192.168.3.0/24和192.168.4.0/24这两条路由的下一跳为R4。这就实现了访问AS100不同网段的流量的负载分担,而一旦有一条链路出现故障,由于聚合路由的存在,可以将流量快速切换到另外一条链路上。

五、仅聚合特定的明细路由
依然是这个场景下,假定我们要求R1只将192.168.1.0/24和192.168.2.0/24这两条路由进行聚合,而聚合其余的明细路由。如图:

这里,我们可以用到aggregate命令的“origin-policy”参数。下面给出R1的具体配置:

R1的关键配置:

bgp 100
peer 11.1.1.2 as-number 200

ipv4-family unicast
undo synchronization
aggregate 192.168.0.0 255.255.0.0 detail-suppressed origin-policy ORIGIN /这里只有匹配路由策略ORIGIN的路由被聚合,其他明细路由未被聚合。并只宣告聚合路由
network 192.168.1.0
network 192.168.2.0
network 192.168.3.0
network 192.168.4.0
peer 11.1.1.2 enable

route-policy ORIGIN permit node 5 /配置路由策略ORIGIN(仍然是配置路由策略),注意这里只能配置if-match子句,匹配前缀列表ORIGIN的路由
if-match ip-prefix ORIGIN

ip ip-prefix ORIGIN index 10 permit 192.168.1.0 24 /配置前缀列表
ip ip-prefix ORIGIN index 20 permit 192.168.2.0 24

这样,就实现了只聚合特定的明细路由,而其余明细路由未被聚合,我们查看一下R2的BGP路由表:

可以看到,R2的BGP路由表中,只有一条聚合路由,和两条明细路由。由于192.168.1.0/24和192.168.2.0/24这两条路由已被聚合,而R1上又配置了detail-suppressed参数,所以这两条明细路由并未发送给R2,而其余明细路由由于未被聚合,所以被发送给了R2,这里还需要说明的是,只有被聚合的明细路由(192.168.1.0/24和192.168.2.0/24)均失效的情况下,聚合路由才会实效,而其余明细路由失效与否是不会影响聚合路由的。

六、修改聚合路由的属性

还是这个场景,在R5上,聚合路由的下一跳有两个,分别是R2和R4,而我们很可能要求手动实现R5选择R4作为优选下一跳,而选择R2作为备份下一跳。如果用MED属性,我们需要在R2和R4上部署路由策略,这里我们采用另外一种方式:在发送聚合路由的时候,可以修改聚合路由的属性。

由于明细路由均为我们手动Network进R1的,所以路由的Origin属性均为IGP,而当两条BGP路由的Origin分别为IGP和Incomplete时,BGP会优选Origin属性为IGP的路由。所以我们可以将R1发送给R2的聚合路由属性修改为Incomplete。

这时,我们会用到了aggregate命令的另一个参数“attribute-policy”。下面给出具体配置:

R1的关键配置:

bgp 100
peer 11.1.1.2 as-number 200

ipv4-family unicast
undo synchronization
aggregate 192.168.0.0 255.255.0.0 detail-suppressed attribute-policy ATTRIBUTE /按照路由策略ATTRIBUTE修改聚合路由属性
network 192.168.1.0
network 192.168.2.0
network 192.168.3.0
network 192.168.4.0
peer 11.1.1.2 enable

route-policy ATTRIBUTE permit node 5 /配置路由策略ATTRIBUTE修改属性为incomplete
apply origin incomplete

查看R5的BGP路由表:

可以看到,BGP优选了R4作为优选下一跳,由于R4对应的路由Ogn值为“i”代表该路由的Origin属性为IGP,而R2对应的路由的Ogn值为“?”代表该路由的Origin属性为Incomplete。

配置汇总:

  1. 执行命令bgp as-number,进入BGP视图。
  2. 执行命令ipv4-family unicast,进入IPv4单播地址族视图。
  3. 根据实际组网选择执行如下命令,配置路由的手动聚合。
    • 发布全部的聚合路由和明细路由:执行命令aggregate ipv4-address { mask | mask-length }
    • 只发布聚合路由:执行命令aggregate ipv4-address { mask | mask-length } detail-suppressed
    • 有选择的发布明细路由:执行命令aggregate ipv4-address { mask | mask-length } suppress-policy route-policy-name
    可以通过peer route-policy命令应用策略来达到相同的效果。
    • 生成检测环路的聚合路由:执行命令aggregate ipv4-address { mask | mask-length } as-set
    • 设置聚合路由的属性:执行命令aggregate ipv4-address { mask | mask-length } attribute-policy route-policy-name
    通过执行peer route-policy命令也可以达到相同效果。
    执行aggregate命令时,如果使用了关键字as-set,而在策略中也执行命令apply as-path配置了AS_Path属性,那么策略中的AS_Path不会生效。
    • 只根据部分明细路由来生成聚合路由:执行命令aggregate ipv4-address { mask | mask-length } origin-policy route-policy-name

手动聚合对BGP本地路由表中已经存在的路由表项有效,例如BGP路由表中不存在10.1.1.1/24等掩码长度大16的路由,即使配置了命令aggregate 10.1.1.1 16对其进行聚合,BGP也不会将这条聚合路由发布出去。

检测配置结果:使用display bgp routing-table [ network [ mask | mask-length ] ]命令查看BGP聚合路由信息。

另外,如果一个聚合路由条目的起源有?也有i,最后聚合出来的路由条目的起源为?。如果都为i才为i。

整理资料来源:《交换机在江湖》、华为培训文档

BGP路由聚合原理和实验(华为设备)相关推荐

  1. 华为设备路由策略原理与实验

    概述: 路由策略可以在路由协议发布.接收和引入路由时配置使用,也可用于过滤路由和改变路由属性. 路由策略各工具之间的调用关系: 条件工具:用于把需要的路由"抓取"出来. 策略工具: ...

  2. 链路捆绑与端口聚合原理与实验结合理解小白看了都秒懂(华为ensp模拟器)不懂不可能的

    链路捆绑与端口聚合 链路捆绑与端口聚合原理与介绍 链路聚合组和链路聚合接口: 成员接口和成员链路: 活动接口和非活动接口.活动链路和非活动链路: 链路接口最大链路活动值: 链路接口最小链路活动值: 链 ...

  3. BGP路由属性之MED 实验分析

    BGP路由属性之MED Multi-Exit Discriminator 多出口鉴别属性 特点: 当两个AS之间存在多条路径的时候才使用 用来影响EBGP邻居,告诉自己的EBGP邻居如何选最优路由. ...

  4. 跨设备链路聚合_路由与交换技术(华为设备)第五讲---链路聚合

    前言: 随着网络规模不断扩大,用户对骨干链路的带宽和可靠性提出了越来越高的要求.在传统技术中,常用更换高速率的接口板或更换支持高速率接口板的设备的方式来增加带宽,但这种方案需要付出高额的费用,而且不够 ...

  5. VRRP浮动路由(浮动路由原理,了解HSRP路由选举原理,实验过程与总结)

    文章目录 前言 单一链路存在的问题 HSRP是思科的私有协议 HSRP (热备份路由选择协议)介绍 VRRP浮动路由原理 Master路由器选举原理 浮动路由原理 实验详解 实验目的 实验过程 主机设 ...

  6. 【直通华为HCNA/HCNP系列R篇-12】BGP路由配置与管理-王达-专题视频课程

    [直通华为HCNA/HCNP系列R篇-12]BGP路由配置与管理-20623人已学习 课程介绍         本课程以笔者编写.由华为公司指定作为ICT认证培训教材的<华为路由器学习指南> ...

  7. 第十一天----BGP的基本配置,路由聚合

    6,BGP的基本配置 1,BGP建邻的基本配置 1)EBGP对等体关系直连建邻 [r1]bgp 1----启动BGP进程----后面的1不是 进程号,而是配置路由器所在AS的AS号 [r1-bgp]r ...

  8. BGP同步与路由黑洞,路由聚合

    BGP路由不优 BGP路由下一跳不可达 BGP同步 拓扑图 (AS 234之间直接 2 4建立BGP,EBGP之间采取直连 ) 下一跳属性: 将EBGP邻居学习路由传递给IBGP邻居时,下一跳不发生变 ...

  9. 锐捷BGP基础配置(邻居建立、路由重发布、路由聚合、认证)

    目录 配置IBGP邻居 配置EBGP邻居 配置BGP重发布OSPF BGP路由聚合 BGP其它配置 配置IBGP邻居 R2.R3.R4底层IGP互通,此处IGP互通配置不做介绍 R2与R4通过Loop ...

  10. 【H3C V7路由器实战视频课程系列-9】BGP路由配置与管理-王达-专题视频课程

    [H3C V7路由器实战视频课程系列-9]BGP路由配置与管理-42人已学习 课程介绍         全面介绍H3C路由器中BGP协议的基础知识和工作原理,并以实战方式介绍H3C路由器BGP路由配置 ...

最新文章

  1. SAP Marketing Cloud的双重登录认证
  2. nodejs服务后台持续运行
  3. Java多线程(3)--线程的生命周期
  4. apollo 配置中心_.NET Core 下使用 Apollo 配置中心
  5. 通过FD耗尽实验谈谈使用HttpClient的正确姿势
  6. Java,使用泛型构建自己的工具包——包装System.out
  7. elasticsearch查询操作(使用marvel插件)
  8. VS2010 + OpenCL 1.1 @ Windows 7 + AMD HD6870
  9. iphone已停用怎么解锁_iPhone X已停用 连接iTunes 怎么办
  10. 记服务器系统安装中不识别固态硬盘问题
  11. 专业的PRD撰写模板
  12. excel不同文件表格批量加表头vba_用Excel VBA实现多文件夹内文件加入表头 遍历文件...
  13. 《科尼龙作曲家》——简单易用又功能丰富的五线谱编辑和作曲软件
  14. 以防遗忘001_通过斜率求垂直线段的端点,附Unity(UI image)画线
  15. 接呀呀云实时语音SDK总结
  16. 【HR面试100问】一篇文章根治各种HR面的套路问题,文章给出参考答案~持续更新
  17. nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
  18. 检索有项目的教师信息mysql_学生成绩管理系统(六):项目总结
  19. 使用 idea查看类关系图形
  20. 数字IC手撕代码--交通灯

热门文章

  1. 如何做 ASO 优化?
  2. gin 渲染不同目录下的模板(支持多层目录)
  3. NPS——搭建属于你的内网穿透平台
  4. 升级IOS15.4出现更新验证失败如何解决
  5. 软件测试的六大测试质量标准
  6. php在线拍照裁切,基于cropper.js封装vue实现在线图片裁剪组件的功能
  7. CSS 如何制作下拉菜单
  8. win10有效清理c盘空间: 移动pagefile.sys和删除hiberfil.sys文件
  9. 【论文阅读】Rethinking the Value of Network Pruning
  10. 【学习笔记—eat_pytorch_in_20_days】结构化数据建模流程范例