【HCIP学习】BGP对等体组、聚合、路由反射器、联盟、团体属性

2024-05-13 03:44

本文主要是介绍【HCIP学习】BGP对等体组、聚合、路由反射器、联盟、团体属性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、大规模BGP网络所遇到的问题

BGP对等体众多,配置繁琐,维护管理难度大

BGP路由表庞大,对设备性能提出挑战

IBGP全连接,应用和管理BGP难度增加,邻居数量过多

路由变化频繁,导致路由更新频繁

二、解决大规模BGP网络所遇到的问题

1、BGP对等体众多

对等体组(Peer Group)

BGP团体(Community )

2、BGP路由表庞大

BGP路由聚合

3、IBGP全连接(邻居数量太多)

BGP路由反射(Route Reflection)

BGP联盟(Confederation)

4、路由变化频繁(了解)

BGP路由衰减(Route Dampening)

三、对等体组

定义:BGP 对等体组(Peer Group)是一些具有某些相同属性的对等体的集合。通过对等体组可以简化配置

特点:根据对等体所在的AS,对等体组可分为IBGP对等体组和EBGP对等体组。

建邻要求:

EBGP:R1-R2

IBGP:R2分别于R3/R4/R5

注意:配置EBGP对等体组--------一般不常用,因为只有同一个AS中的EBGP邻居才能加入一个对等体组,如果EBGP邻居分布在多个AS,则需要给每个AS的EBGP邻居,配置一个对等体组。比较麻烦

配置IBGP对等体组

[R2-bgp]group in internal

[R2-bgp]peer 3.3.3.3 group in

[R2-bgp]peer 4.4.4.4 group in

[R2-bgp]peer 5.5.5.5 group in

[R2-bgp]peer in connect-interface l0

[R2-bgp]peer in next-hop-local

[R3-bgp]peer 2.2.2.2 as 200

[R3-bgp]peer 2.2.2.2 connect-interface l0

R4和R5上做和R3相同的配置

配置EBGP对等体组

四、BGP路由聚合

作用:减小路由表规模

1、自动聚合:

只能对引入的IGP的路由进行聚合;

只能将明细路由汇总到主类,这会造成路由黑洞;

华为设备默认关闭自动聚合功能;

只能在始发路由器上进行配置;

[r1-bgp]summary automatic 开启自动聚合

自动聚合后,会出现状态码S(suppressed),代表被抑制的路由信息不会再加表和传递了

实验演示1:只针对重发布的路由条目生效,不对自身宣告的路由生效

在R3上加几个环回口172.16.0.1 24和172.16.1.1 24,并做BGP宣告

[R3-bgp]summary automatic  开启自动聚合

实验演示2:引入直连

[R3-bgp]import-route direct

[R3-bgp]summary automatic

2、手工聚合:

可实现精确汇总:[R1-bgp]aggregate 172.16.0.0 16

可以在任何路由器上对BGP路由进行聚合;

出现问题:明细路由依然被通告,有形成环路的隐患

解决方法:[R1-bgp]aggregate 172.16.0.0 16 detail-suppressed  //抑制明细路由

此命令不通过明细路由;

实验演示1:

[R3-bgp]network 172.16.1.1 24

[R3-bgp]network 172.16.0.1 24

[R3-bgp]aggregate 172.16.0.0 23

测试:查看路由表,聚合成功,但明细路由也存在,并没有达到缩小路由表规模的情况

抑制明细路由。达到了缩小路由表的规模

常见汇总命令:

[R1-bgp]aggregate 172.16.0.0 16 detail-suppressed as-set  汇总的路由可继承明细路由的路径属性,其中AS_PATH属性最关键。

[R1-bgp]aggregate 172.16.0.0 16 suppress-policy ‘路由策略名字’通告汇总路由,并有选择性的抑制明细路由

五、路由反射器

1、定义:

BGP反射器能把从IBGP邻居学习的路由反射给其他IBGP邻居(打破IBGP水平分割的限制)

2、作用:

用于替代IBGP全连接,减少IBGP邻居数量;解决BGP路由黑洞问题;

3、角色:

RR(router  reflect):路由反射器

反射器角色:

        client:RR客户机

        非客户机

注:将一台BGP路由器指定为RR的同时,还需要指定其Client。至于Client本身,无需做任何配置,它并不知晓网络中存在RR

思考:为啥不把一个AS内的所有路由器都变成客户机?还有非客户机的存在?(RTE\RTF)

答案:因为一个AS就是一个城域网。一个城市的城域网中有好多路由器,一个城域网怎么可能只有一个反射器。比如:高新区选一个反射器,不可能让他给雁塔区啊、长安区啊提供反射服务。一个反射器给他特定的客户机提供反射服务。我们可以在 这些区各选一个反射器,让他们给本区的路由器提供反射服务。也就是说可以在一个AS内建立多个路由器反射群。两个反射群之间需要建立邻居关系。它们之间需要传递路由。

4、反射规则

从非反射客户端接受的路由,仅反射给客户端;

从客户端接受到的路由,反射给所有客户端和非客户端,路由始发者除外;

从EBGP接收的路由,反射给所有的客户端和非客户端;

注:一个反射群里的所有反射客户端只需与反射器建立IBGP邻居关系

5、反射集群:

由反射器和客户端组成的网络范围;

如果存在多个反射器,配置相同的cluster_id

思考:当RR故障后,会发生啥?怎么解决?

思考:RR之间需要建立邻居关系?------当然需要

但是这样的组网容易形成环路。(一条路由从客户机1传到RR,RR传到备用RR,备用RR再反射给客户机1)

6、路由反射存在问题:使得IBGP水平分割原则失效,会导致环路的产生

7、解决方法:

通过两个路径属性来避免环路

(1)cluster_list(集群列表):

类似AS_PATH,每个RR都有一个Cluster id,默认为路由器的router id,可手工修改;

同一个AS内的Cluster id必须相同,才能有防环作用。

路由传递过程中,把经过的反射器的Cluster_id一次记录在Cluster_list中;

Cluster_list用于反射器防环,当反射器收到BGP路由时,如果本机的Cluster_id出现在Cluster_list中,则丢弃该路由;

(例如:一条路由从客户机1传到RR,RR会将Cluster id为1.1.1.1这个属性写给这个路由,RR再传到备用RR,会检查自身的Cluster id,发现学到的路由Cluster id与自己一样,就直接丢弃

Cluster-list用于路由优选,短的优先

特殊情况:不受Cluster-list防环机制的约束,依然形成环路

思考:一条路由从客户机3传到备用RR,再传到rr,rr会不会传给客户机3?

答案:会,解决方法用originator_ID

(2)originator_ID:起源ID

由路由器反射器反射一条路由时产生,会在反射出去的路由中增加originator_ID,它就是本地AS路由器的BGP路由器的router-id;

即使这条反射路由经过多个RR,当BGP路由器收到一条携带Originator_ID属性的IBGP路由,并且Originator_ID属性值与自身的Router ID相同,则它会忽略关于该条路由的更新。

originator_ID用于路由优选,短的优先

8、总结BGP的防环机制

(1)AS_PATH:解决AS之间的环路问题

(2)IBGP的水平分割:解决一个AS内部IBGP邻居之间环路问题

(3)当一个反射群中存在多个反射器时,通过Cluster-list防环,(BGP反射器)

(4)originator_ID:在多个反射群之间,通过originator_ID防环,(BGP反射器)

9、注意事项

反射路由无法使用策略去更改路由属性

10、实验配置

[R2-bgp]peer 3.3.3.3 reflect-client      //在反射器上配置其反射客户机

[R2-bgp]reflector cluster-id 2.2.2.2    //配置反射器的集群id

11、实验作业 ----- BGP路由反射器实验

六、BGP联盟

1、定义:

处理AS内部的IBGP网络连接激增的另一种方法,间接避免了IBGP环路问题

2、原理:

联盟将一个自治系统划分为若干个子自治系统,每个子自治系统内部的IBGP对等体建立全连接关系,子自治系统之间建立联盟内部EBGP连接关系。

3、注意点:

子AS使用私有AS编号;

其他真实AS的路由器仍然和联盟AS建立EBGP邻居;

跨越子AS的EBGP邻居仍然需要更改下一跳为本机;

每个联盟里有一台路由器和其他联盟中一个路由器建立邻居关系就行;

实际场景中一般不用联盟,因为他会改变邻居关系

4、配置命令:

[R2]bgp 65001        //进入子AS编号

[R2-bgp]confederation id 200    //申明自己的大号

[R2-bgp]confederation peer-as 65002  //申明自己的联盟同伴

[R2-bgp]peer 100.1.1.1 as-number  100       指定EBGP邻居

[R2-bgp]peer 3.3.3.3 as-number 65001

[R2-bgp]peer 100.2.2.5 as-number 65002

[R2-bgp]peer 3.3.3.3 connect-interface LoopBack 0

[R2-bgp]peer 3.3.3.3 next-hop-local

[R2-bgp]peer 100.2.2.5 next-hop-local   //跨越子AS的EBGP邻居仍然需要更改下一跳为本机;不然从R1传过去的网段,R5收不到

子AS之间的EBGP环回口建邻

七、BGP团体属性(community)

(1)定义:

相当于路由的标记,一组具有相同特征的目的地的集合,可针对特定的路由设置特定的community属性值

问题:网段不连续,ACL写起来比较麻烦。

解决方法:在每个分部的市场部路由的出口设备上,打上100:1的团体属性。

(2)社团属性表达方法:

本质由32位二进制构成,拥有多种表达格式,

比如:可使用10进制;

或者16位二进制,前16位一般是本地AS的AS号,后16位是自定值;

(3)公认的社团属性:

Internet:抓取的BGP流量,默认情况下都属于Internet,可以被通告给所有的BGP对等体;

no-advertise:路由信息无法发送给自己的IBGP对等体或EBGP对等体;

no-export:路由信息可以发给自己的BGP对等体,但对等体不能离开这个AS,无法发给自己的EBGP;但可以发给自己的联邦EBGP对等体;

no-export-subconfed:路由信息可以发给自己的BGP对等体,但对等体不能离开这个AS,无法发给自己的EBGP;也不可以发给自己的联邦EBGP对等体;

注:目前大部分厂商默认在传递BGP路由信息时是不传递社团属性的,如果需要传递社团属性,则需要通过命令开启

(4)配置演示

配置步骤:

抓取流量

[R1]acl 2000

[R1-acl-basic-2000]rule permit source 192.168.1.0 0.0.0.255

配置路由策略,打上团体属性

[R1]route-policy com permit node 10

[R1-route-policy]if-match acl 2000

[R1-route-policy]apply community no-export

[R1]route-policy com permit node 20

调用路由策略

[R1]bgp 100

[R1-bgp]peer 100.1.1.2 route-policy com export

[R1-bgp]peer 100.1.1.2 advertise-community      //通告团体属性,使其他邻居学到

[R2]dis bgp routing-table 192.168.1.0 24   //查看一条路由的详细信息

八、联盟和团体属性实验

九、BGP综合实验

实验报告册见下一篇文章哦~ 

这篇关于【HCIP学习】BGP对等体组、聚合、路由反射器、联盟、团体属性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/984589

相关文章

MySQL count()聚合函数详解

《MySQLcount()聚合函数详解》MySQL中的COUNT()函数,它是SQL中最常用的聚合函数之一,用于计算表中符合特定条件的行数,本文给大家介绍MySQLcount()聚合函数,感兴趣的朋... 目录核心功能语法形式重要特性与行为如何选择使用哪种形式?总结深入剖析一下 mysql 中的 COUNT

python删除xml中的w:ascii属性的步骤

《python删除xml中的w:ascii属性的步骤》使用xml.etree.ElementTree删除WordXML中w:ascii属性,需注册命名空间并定位rFonts元素,通过del操作删除属... 可以使用python的XML.etree.ElementTree模块通过以下步骤删除XML中的w:as

Python打印对象所有属性和值的方法小结

《Python打印对象所有属性和值的方法小结》在Python开发过程中,调试代码时经常需要查看对象的当前状态,也就是对象的所有属性和对应的值,然而,Python并没有像PHP的print_r那样直接提... 目录python中打印对象所有属性和值的方法实现步骤1. 使用vars()和pprint()2. 使

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

SpringBoot读取ZooKeeper(ZK)属性的方法实现

《SpringBoot读取ZooKeeper(ZK)属性的方法实现》本文主要介绍了SpringBoot读取ZooKeeper(ZK)属性的方法实现,强调使用@ConfigurationProperti... 目录1. 在配置文件中定义 ZK 属性application.propertiesapplicati

Java反射实现多属性去重与分组功能

《Java反射实现多属性去重与分组功能》在Java开发中,​​List是一种非常常用的数据结构,通常我们会遇到这样的问题:如何处理​​List​​​中的相同字段?无论是去重还是分组,合理的操作可以提高... 目录一、开发环境与基础组件准备1.环境配置:2. 代码结构说明:二、基础反射工具:BeanUtils

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

MySQL 事务的概念及ACID属性和使用详解

《MySQL事务的概念及ACID属性和使用详解》MySQL通过多线程实现存储工作,因此在并发访问场景中,事务确保了数据操作的一致性和可靠性,下面通过本文给大家介绍MySQL事务的概念及ACID属性和... 目录一、什么是事务二、事务的属性及使用2.1 事务的 ACID 属性2.2 为什么存在事务2.3 事务

golang实现动态路由的项目实践

《golang实现动态路由的项目实践》本文主要介绍了golang实现动态路由项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习... 目录一、动态路由1.结构体(数据库的定义)2.预加载preload3.添加关联的方法一、动态路由1