背景:

在一个大型的AS当中受到iBGP水平分割(从iBGP的邻居接收到的路由不能再传递给其他的iBGP邻居)的影响,将会造成BGP的路由无法通过iBGP邻居接收。解决办法有三种:

  1. 建立全互联的iBGP邻居
  2. BGP的联盟(上一个笔记)
  3. 路由反射器

路由反射器概述:

在一个AS内,其中一台路由器作为路由反射器RR(Route Reflector),其它路由器作为客户机(Client)。客户机与路由反射器之间建立IBGP连接。路由反射器和它的客户机组成一个集群(Cluster)。路由反射器在客户机之间反射路由信息,客户机之间不需要建立BGP连接。

  1. 路由反射器RR(Route Reflector):允许把从IBGP 对等体学到的路由反射到其他IBGP对等体的BGP设备。
  2. 客户机(Client):与RR形成反射邻居关系的IBGP设备。在AS内部客户机只需要与RR直连。
  3. 非客户机(Non-Client):既不是RR也不是客户机的IBGP设备。在AS内部非客户机与RR之间,以及所有的非客户机之间仍然必须建立全连接关系。
  4. 始发者(Originator):在AS内部始发路由的设备。Originator_ID属性用于防止集群内产生路由环路。
  5. 集群(Cluster):路由反射器及其客户机的集合。Cluster_List属性用于防止集群间产生路由环路。

最终达到的目标,让整个IBGP客户机能够获得相应的BGP路由条目。

路由反射原理:

同一集群内的客户机只需要与该集群的RR直接交换路由信息,因此客户机只需要与RR之间建立iBGP连接,不需要与其他客户机建立iBGP连接,从而减少了iBGP连接数量。在向多个对等体发送路由更新时,可以对RR实现进行优化,使RR只简单地复制Update消息,而不是针对每个对等体逐一生成相同的路由进行更新。

上图中示,在AS100内,一台设备作为RR,两台设备作为客户机,形成Cluster 1;一台作为非客户机。两个客户机之间不需要建立IBGP连接,不仅简化了设备的配置,也减轻了网络和CPU的负担。RR打破了iBGP水平分割的限制,并采用Cluster List 属性和Originator, ID属性防止路由环路。RR向iBGP邻居发布路由规则:

  1. 从非客户机学到的路由, 发布给所有客户机。
  2. 从客户机学到的路由,发布给所有非客户机和客户机(发起此路由的客户机除外)。
  3. 从eBGP对等体学到的路由,发布给所有的非客户机和客户机。

运用反射中的两个BGP属性:

当网络中只部署一台RR时会难以提供更好的可靠性及冗余性,如果该RR设备发生故障,将会导致其他所有的路由器无法收到路由,因此部署多台RR可以提供更好的冗余。如图所示,在一个AS内部署了两台RR设备,都能够用于路由的反射,其他设备同时与两台RR建立iBGP邻居关系。

即使其中一台出现故障,另外一台也可以工作。但是部署过多的RR以及复杂的拓扑也可能带来环路的隐患,传统的AS_ PATH无法检测到AS内的环路。因此,在部署路由反射器时,BGP提供了两种属性,用于检测AS内的环路问题,分别是Originator_ID和Cluster_ List 属性:

  1. Originator_ID:可选非过渡属性,该属性由RR产生,封装在Update消息中,使用的Router_ ID 的值标识路由的始发者,用于防止集群内产生路由环路。
  2. Cluster_ List:可选非过渡属性,该属性是集群ID (Cluster_ ID)的列表,AS内的每个集群都由唯一的Cluster_ID来标识(可以在BGP进程中使用Cluster_ID命令来修改,默认为BGP的Router_ ID)。 路由反射器使用Cluster_ List 属性记录路由经过的每个集群的Cluster_ ID (类似AS_ PATH属性),用来在集群间避免环路。当一条路由第一次被RR反射的时候,RR会把本地Cluster_ ID添加到Cluster_ List 的前面。如果没Cluster_List属性,RR就创建一个。当RR接收到一条更新路由时,RR会检查Cluster_List。如果Cluster_ List 中已经有本地Cluster_ ID,丢弃该路由:如果没有本地Cluster_ID,将其加入Cluster_ List,然后反射该路由。

一、集群内防止环路:

场景描述:一个集群中部署两个RR (两个RR使用相同的Cluster__ID), 每个RR和集群中每个客户建立iBGP邻居关系。一条路由从Client 1 发送给RRI,RR1 将该路由反射给RR2 (RR2可以不是RRI的客户),RR2继续反射该路由给其客户Client 1, 路由回到始发路由器,Client 1如果使用该路由,则环路出现。

使用originator_ID来解决,解决方式如下:

  1. Client 1将路由传递给RR 1。
  2. RR 1将为该路由添加Originator_ID属性,该属性为始发者的Router_ID (Client 1)。
  3. 该路由反射给RR2后,再继续由RR2反射给Client 1。反射过程中Originator_ ID属性不变化。
  4. Client 1收到带有Originator_ ID的路由,将Originator_ ID属性值和本地的Router_ ID 进行比较,如果一致,说明Client 1收到的这条路由是其通告出去的路由,路由形成了环路,Client 1拒绝接收该路由以避免环路。

说明:
上述场景并不会发生,原因是由于另外一个BGP属性Cluster_List在RR 1反射Client 1的路由给RR2时,由于RR2和RR1具有相同的Cluster_ID,RR2根本不会接收从相同Cluster_ ID的RR反射过来的路由(同集群的RR间不互相接收对方路由),所以,RR2 也不会反射路由回Client 1。

二、集群间防止环路:

场景描述:如图所示,RR 1/RR 2/RR3是三个反射集群中的路由反射器,假设RR 1/RR 2/RR3中,任两个RR都是另一个RR的客户,并部署全互联的iBGP邻居关系。来自Client 1-1的路由通告给RR 1,若RR 1反射给RR 2,RR 2再反射给RR3,接着RR3又重新将该路由发送回RR1,一旦RR 1接收并使用该路由,则环路形成。

使用Cluster_ List来解决,解决方式如下:

  1. Client 1将路由传递给RR 1。RR 1接收到路由,检查Cluster_ List中是否有自己的Cluster_ ID,如果没有则添加进去,有则丢弃掉,并且反射给它的客户机。
  2. RR2是Cluster 1的客户机,RR 2接收路由后,检查Cluster_ List 中是否有自己的Cluster_ ID,如果有则丢弃该路由,没有则添加自己的Cluster_ ID, 并继续反射给它的客户机。
  3. RR 3也是Cluster 2的客户机,RR 3收到路由并检查Cluster_ List中是否有自己的Cluster_ ID,如果有则丢弃掉该路由,没有则添加,并再次反射给它的客户机。
  4. RR 1从RR 3收到该路由,检查Cluster_ List, 发现在该列表中已经有了自己的Cluster_ ID,该路由将直接被丢弃掉,避免路由环路。

注意:
Cluster_ List和Originator_ID这两个属性仅存在于当RR将从iBGP邻居收到的路由向另一个iBGP邻居通告时(反 射行为),用于防止环路而添加的仅在AS内起作用的属性,这两个属性并不会出现在AS外。

路由反射器运行场景:

一、备份RR:

备份RR主要是为了解决单点故障,增加了网络环境的冗余性:

  1. VRP需要使用命令reflector cluster-id给所有位于同一个集群内的路由反射器配置相同的Cluster_ID。
  2. 在冗余的环境里,客户机会收到不同反射器发来的到达同一目的地的多条路由,这时客户机应用BGP选择路由的策略来选择最佳路由。
  3. Cluster_List的应用保证了同一AS内的不同RR之间不出现路由循环。
  4. 备份RR之间建立普通IBGP邻居关系。

拓扑描述

  1. 当客户机Client1从外部对等体接收到一条更新路由(10.0.0.0/24)后,它通过IBGP向RR1和RR2通告这条路由。
  2. RR1接收到该更新路由后,它向其他的客户机(Client2、Client3)和非客户机(RR2)反射,同时将本地Cluster_ID添加到Cluster_List前面。
  3. RR2接收到该反射路由后,检查Cluster_List,发现自己的Cluster_ID已经包含在Cluster_List中。因此,它丢弃该更新路由,不再向自己的客户机反射。

二、同级反射器:

一个骨干网被分成多个反射集群,每个RR将其它的RR配置成非客户机,各RR之间建立全连接。每个客户机只与所在集群的RR建立IBGP连接。这样该自治系统内的所有BGP路由器都会收到反射路由信息。例如RR2收到了其客户机发送的路由条目,将客户机的条目反射到非客户机RR1和RR3上,然后传递到对应的集群中,RR1和RR3同理,当RR2接收到了从RR1和RR3反射回来的带有Cluster2标记的路由条目后就会将其丢弃,防止环路的产生。

三、分级反射器:

Cluster1中部署了一个一级RR(RR-1),Cluster2和Cluster3中的RR(RR-2和RR-3)作为RR-1的客户端。例如当Client1的报文发送给RR2,RR2会发送给自己的非客户机RR1,RR1会将客户机RR2发送的路由发送给自己的客户机RR3,RR3会将非客户机的路由发送到自己的客户机上去,Cluster2和Cluster3上的最底层的客户机就会互相学习到对方的路由条目了。当然Cluster值也会防止其中产生的环路。

实验:


如上图,R2、R3、R4任何一台作为RR都可以,本例我们用R3作为RR。R3的关键配置如下:(如果在R2上配置,则R3和R4作为其客户机,之间建立IBGP邻居关系)

bgp 200
peer 10.0.12.1 as-number 200
peer 10.0.23.1 as-number 200

ipv4-family unicast //进入相应的地址簇进行配置
undo synchronization
reflector cluster-id 1 //配置cluster-id,缺省为设备router id,可选配置
peer 10.0.12.1 enable
peer 10.0.12.1 reflect-client //配置10.0.12.1为客户机,客户机不用自己配置
peer 10.0.23.1 enable
peer 10.0.23.1 reflect-client

我们在R1上发布10.1.4.0/24这条路由,查看R4的路由表,发现R4已经收到这条路由,在R4上查看这条路由的详细信息:这条路由的NEXT-HOP为10.0.23.2(反射器默认不修改路由内容)

这条路由的Cluster_list属性中,已经记录了0.0.0.1。集群使用AS内唯一的ClusterID作为标识。

改变路由属性:

使能路由反射器通过出口策略修改路由的路径属性,可以改变BGP的选路结果。

背景信息:路由反射器上不能通过出口策略修改路由路径属性,因为这样配置可能会导致路由循环。所以默认情况下,禁止路由反射器通过出口策略修改路由路径属性。但是如果需要对网络流量进行重新规划,可以使能路由反射器通过出口策略修改路由的路径属性。

配置:

联盟与路由反射器的比较:

当然,在某些场景下,联盟和路由反射器同时使用将更加事半功倍。一个简单的例子:

在每个子AS内做路由反射,子AS之间划分为建立EBGP邻居关系,方便又快捷。

整理资料来源:华为Hedex文档、HCIE路由交换学习指南

BGP路由反射器原理和实现(华为设备)相关推荐

  1. 【华为认证】HCIP 数通笔记—BGP路由反射器

    周工这里还准备了一些HCIP的学习笔记  点赞+留言  即可领取 BGP路由反射器 由于水平分割的原因,为了保证中转AS200所有的BGP路由器都能学习到完整的BGP路由,就必须在AS内实现IBGP全 ...

  2. BGP路由反射器RR

    曾子曰:"吾日三省吾身:为人谋而不忠乎?与朋友交而不信乎?传不习乎?" 文章目录 一.拓扑 二.基础配置与分析 三.BGP 13 条选路原则 四.BGP路由反射器RR 五.备份路由 ...

  3. BGP路由反射器和防环机制

    一.BGP:边界网关协议 BGP是运行于TCP上的一种自治系统的路由协议,基于TCP179端口工作,无类别的EGP协议,用于AS之间的路由传递,同时在AS级别上可实施策略决策. AS长16位,共655 ...

  4. BGP 路由反射器详解,RR反射簇与RR的防环机制介绍与实验

    一.什么是RR RR(Route Reflector):路由反射器 由于水平分割的原因,为了保证AS内所有的BGP路由器都能学习到完整的BGP路由,就必须在AS内实现IBGP全互联. 然而实现IBGP ...

  5. BGP项目实验案例(基于华为设备)

    一:BGP概述 1:自治系统 自治系统是由同一个技术管理机构管理.使用同一选录策略的一组路由器的集合. 2:动态路由的分类 (1)按自治系统分类 IGP:自治系统内部路由协议,包括RIP.OSPF.I ...

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

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

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

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

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

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

  9. 华为HCIE-RS3.0论述题--BGP路由黑洞

    3.3BGP路由黑洞 题干:R1/R2/R3/R4运行ospf协议,R1和R4建立IBGP,并且BGP进程下宣告站点路由. 1,根据以上描述,当站点1的用户访问站点2的用户时会发生什么问题?请描述产生 ...

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

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

最新文章

  1. 【Zabbix】配置 腾讯企业邮箱 发送报警邮件
  2. PyTorch框架学习十三——优化器
  3. 重新写博+linux查找系列
  4. python特性描述_详解 Python 最优雅的特性之一 — 描述符
  5. 养一台家庭轿车的年费是多少?有的工薪打工者为什么卖车?
  6. win8卸载mysql数据库,彻底卸载win8自带的metro应用的方法
  7. Jmeter使用SSL(HTTPS协议)
  8. matlab官方中文网站
  9. 三种射频通信接收机原理框图及优缺点
  10. DB9引脚在UART,CAN,RS485中的定义
  11. Arduino驱动的安装
  12. 深度测试oppo软件,OPPO深度测试app
  13. GWAS分析之绘制 SNP 密度图
  14. 报考华为认证考试流程
  15. a与文件下载-(下载一)
  16. 插入排序、希尔排序(Shell)、选择排序、堆排序、冒泡排序、快速排序、归并排序和基数排序(桶排)的 时间复杂度和空间复杂度
  17. 开源办公的五个法律问题 ——以“新型冠状病毒”防控期间企业在线远程运营为视角...
  18. 快问快答,MySQL面试夺命20问
  19. GNN论文周报 | 来自北航、中科院、MSRA、新加坡国立大学、慕尼黑工业大学等机构前沿论文研究...
  20. HDU 2096 小明A+B

热门文章

  1. 每周荐书:MyBatis、并行编程、Ansible(评论送书)
  2. Cocos2d-x 3.X手游开发实例详解
  3. 《我也能做CTO之程序员职业规划》之十三:用凸透镜选择技术
  4. 优化理论13----黄金分割法、单峰函数、python实现及验证
  5. HMM:隐马尔科夫模型 - 预测和解码
  6. 网页开发者模式调整到手机模式_苹果全球开发者大会将于6月22日召开 全线上模式...
  7. html ul li 的高度,ul与li高度不一致
  8. python flask request 参数映射_Flask request获取参数问题
  9. centos7 默认启动项_如何在centos7中搭建 ISCSI 服务
  10. 炉石怎么看服务器是否维护,炉石传说服务器维护故障补偿方案详细内容