当前位置: 首页 > news >正文

路由反射器(Route Reflector)简介

关键字:Reflector 客户机 反射器 路由技术  路由器

  在使用BGP路由协议的网络中,为保证IBGP对等体之间的连通性,需要在IBGP对等体之间建立全连接关系。假设在一个AS内部有n台路由器,那么应该建立的IBGP连接数就为n(n-1)/2.当IBGP对等体数目很多时,对网络资源和CPU资源的消耗都很大。

  一、路由反射器的定义

  利用路由反射可以解决这一问题。在一个AS内,其中一台路由器作为路由反射器RR(Route Reflector),其它路由器做为客户机(Client)。客户机与路由反射器之间建立IBGP连接。路由反射器和它的客户机组成一个集群(Cluster)。路由反射器在客户机之间传递(反射)路由信息,而客户机之间不需要建立BGP连接。

  既不是反射器也不是客户机的BGP路由器被称为非客户机(Non-Client)。非客户机与路由反射器之间,以及所有的非客户机之间仍然必须建立全连接关系。如下图所示。

  二、路由反射器的工作步骤

  当RR收到IBGP发来的路由,首先使用BGP选择路由的策略选择最佳路由。在公布学习到的路由信息时,RR按照RFC2796中的规则发布路由:

  1)从非客户机IBGP对等体学到的路由,发布给此RR的所有客户机。

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

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

  RR的一个好处就是配置方便,因为只需要在反射器上配置,客户机不需要知道自己是客户机。

  三、Originator_ID

  RFC2796定义了Originator_ID属性和Cluster_List属性,用于检测和防止路由环路。

  Originator_ID属性长4字节,是由路由反射器(RR)产生的,携带了本地AS内部路由发起者的Router ID.

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

  2)当其它BGP Speaker接收到这条路由的时候,将比较收到的Originator_ID和本地的Router ID,如果两个ID相同,BGP Speaker会忽略掉这条路由,不做处理。

  Originator_ID属性保证路由在反射器和客户机/非客户机之间的不出现循环。

  四、Cluster_List

  对于AS之间,BGP用于防止环路的主要措施是通过AS_Path属性记录途经的AS路径,带有本地AS号的路由将被路由器丢弃;对于AS之内,BGP防止路由环路的方法是禁止IBGP对等体发布从AS内部学来的路由。

  路由反射器的实现是基于放宽对"BGP在AS内学到的路由不会在AS中转发"的要求,即允许IBGP对等体之间发布从AS内部学来的路由。在这种情况下,Cluster_List属性被引入,用于防止AS内部的环路。

  Cluster_List由一系列的Cluster_ID组成,描述了一条路由所经过的反射器路径,这和描述路由经过的As路径的AS_Path属性有相似之处。Cluster_List由路由反射器产生。

  1)当RR在它的客户机之间或客户机与非客户机之间反射路由时,RR会把本地Cluster_ID添加到Cluster_List的前面。如果Cluster_List为空,RR就创建一个。

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

  为了保证客户机可以学习到反射器发来的路由,Cluster_ID不能和客户机的Router ID相同。如果相同,客户机会将收到的路由丢弃。Cluster_List只在AS内部传播,从EBGP对等体收到的含有Cluster_List的路由将被丢弃。

转载于:https://www.cnblogs.com/yechuan/archive/2013/01/09/2852945.html

相关文章:

  • 最优化原理,凸优化
  • Windows7+vs2008进行wince开发的环境配置
  • 太难、太贵、太耗时......这些都是你对CRM工具的误解!
  • 百度搜索结果的URL参数关键词(wd|word|kw|keyword)
  • delay的几个函数说明
  • 定制Android ListView 快速滚动的滚动条-fast scroll bar thumb
  • VR混战已开始,看各大虚拟现实如何争春?
  • java9 gc log参数迁移
  • NSURL
  • MySQL数据库----流程控制
  • windowsPhone开发(什么是手机开发?)
  • 记一次内存溢出的分析经历——thrift带给我的痛orz
  • [精华][推荐]CAS SSO 单点登录框架学习 环境搭建
  • 部门机关名称/部门人员名称的获取
  • 2017,技术年度总结篇
  • Akka系列(七):Actor持久化之Akka persistence
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • es6--symbol
  • hadoop集群管理系统搭建规划说明
  • HashMap剖析之内部结构
  • Mysql优化
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • vue 个人积累(使用工具,组件)
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 复习Javascript专题(四):js中的深浅拷贝
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 使用Swoole加速Laravel(正式环境中)
  • 用jquery写贪吃蛇
  • 字符串匹配基础上
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • (26)4.7 字符函数和字符串函数
  • (4)事件处理——(7)简单事件(Simple events)
  • (C语言)fread与fwrite详解
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (转)c++ std::pair 与 std::make
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • .cfg\.dat\.mak(持续补充)
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .Net FrameWork总结
  • .NET 命令行参数包含应用程序路径吗?
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .net的socket示例
  • .NET简谈设计模式之(单件模式)
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • .project文件
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • @Bean注解详解
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务