zoukankan      html  css  js  c++  java
  • BGP的反射器和联盟

    BGP反射器

    IBGP全互联的问题

    为了实现路由信息的交互,BGP要求一个AS内的所有BGP Speaker相互形成IBGP全互连,导致IBGP的会话数是n(n-1)/2,而这一要求使得IBGP的扩展成为了一个很大的问题

    IBGP全互联问题解决方案

     路由反射 (RFC 2796)
     降低对指定路由器IBGP路由通告机制的限制,允许将从IBGP对等体接收到的更新信息传给某些IBGP对等体 打破传统IBGP水平分割的限制
     联盟 (RFC3065)
     将大的AS分成若干小的AS,而小AS之间建立EBGP对等体关系

    BGP路由反射器(Route Reflector)

     在AS200里,有三台路由器分别为RTA,RTB和RTC。在默认的情况下,如果RTA收到一条外部的路由更新,并且该路由被RTA选举为最佳路由,则RTA肯定会把该路由通告给RTB以及RTC。由于RTB和RTC互为IBGP对等体,所以不会把从IBGP学习到的路由通告给其它IBGP对等体。
     如果该通告原则可以被放松,允许RTC可以把从RTA学习到的IBGP路由通告给其它IBGP对等体的话,这样将可以取消RTA与RTB之间的IBGP会话,RTC就是BGP路由反射器。
    BGP的反射器和联盟

    不同角色的对等体

     一个BGP Speaker通告一条IBGP路由到另外一个IBGP对等体的操作。而这样的一个BGP Speaker通常被称为路由反射器(Route Reflector, RR),这样的一条IBGP路由被称为反射路由。IBGP对等体可以有三种角色:
    • 路由反射器 (Route Reflector) 
    • 客户机 (Client)
    • 非客户机 (Non-Client) 
     路由反射器和它的客户机组成一个集群(Cluster)。路由反射器在客户机之间传递(反射)路由信息,所以客户机之间不需要建立BGP连接。
     既不是反射器也不是客户机的BGP路由器被称为非客户机(Non-Client)。非客户机与路由反射器之间,以及所有的非客户机之间仍然必须建立全连接关系。
    BGP的反射器和联盟
    总结对等体之间的关系
    • Client只需维护与RR之间的IBGP会话。
    • Non-Client与Non-Client之间需要建立IBGP全互连。
    • RR与Non-Client之间需要建立IBGP全互连。
    • RR与RR之间需要建立IBGP的全互连。

    路由反射宣告原则 (1)

     从非客户机IBGP对等体学到的路由,发布给此RR的所有客户机
     从EBGP对等体学到的路由,发布给所有的非客户机和客户机
    BGP的反射器和联盟

    路由反射宣告原则 (2)

     从客户机学到的路由,发布给此RR的所有非客户机和客户机(发起此路由的客户机除外)
     从EBGP对等体学到的路由,发布给所有的非客户机和客户机
    BGP的反射器和联盟

    路由反射簇 (Cluster)

    • 当一个AS内存在多台RR为Client提供冗余时,RR间的路由更新很有可能会形成环路,为防止该现象,引入了Cluster的概念
    BGP的反射器和联盟

    什么是簇?

     通过4字节的Cluster_ID来标识Cluster,通常会使用Loopback地址作为Cluster_ID。
     一个Cluster里可以包括一个或多个RR;一个Client可以同时属于多个Cluster。
     通常,一个客户的簇只拥有一个RR,并由RR的BGP Router-id去标识该簇。有时,为了防止单点失效,在单一簇里引入多个RR,如图中的备份RR组网。

    路由反射环路防止机制 - Originator_ID

    • Originator_ID属性用于防止在反射器和客户机/非客户机之间产生环路。
    • Originator_ID属性长4字节,可选非过渡属性,属性类型为9 ,是由路由反射器(RR)产生的,携带了本地AS内部路由发起者的Router ID。
    • 当一条路由第一次被RR反射的时候,RR将Originator_ID属性加入到这条路由,标识这条路由的始发路由器。如果一条路由中已经存在了Originator_ID属性,则RR将不会创建新的Originator_ID。
    • 当其它BGP Speaker接收到这条路由的时候,将比较收到的Originator_ID和本地的Router ID,如果两个ID相同,BGP Speaker会忽略掉这条路由,不做处理。
    BGP的反射器和联盟

    路由反射环路防止机制 - Cluster_List

     Cluster_List是可选非过渡属性,属性类型编码为10
     Cluster_List由一系列的Cluster_ID组成,描述了一条路由所经过的反射器路径,这和描述路由经过的As路径的AS_Path属性有相似之处。Cluster_List由路由反射器产生
     Cluster_List只在AS内部传播,从EBGP对等体收到的含有Cluster_List的路由将被丢弃。
     当RR在它的客户机之间或客户机与非客户机之间反射路由时,RR会把本地Cluster_ID添加到Cluster_List的前面。如果Cluster_List为空,RR就创建一个
     当RR接收到一条更新路由时,RR会检查Cluster_List。如果Cluster_List中已经有本地Cluster_ID,丢弃该路由;如果没有本地Cluster_ID,将其加入Cluster_List,然后反射该更新路由
     Cluster_List只被RR用来检测路由环路,不是RR的客户机和非客户机不会检测该属性。
    Cluster list与Originator ID的相同与不同
     相同:它们都是防止AS内部的环路
     不同:Originator ID就是在发起该路由的路由器发现收到了一条路由信息(该路由信息里面的originator ID就是这台路由器),此时路由器便会忽略该路由这样达到防环作用
     CLUSTER list是RR产生的,是通过RR来防止路由环路的。当RR发现收到的路由更新里面的cluster ID和RR自己一样,此时便忽略该路由更新

    AS内多个簇

    一个AS中可能存在多个簇(Cluster)。各个RR之间是IBGP对等体的关系,一个RR可以把另一个RR配置成自己的客户机或非客户机。因此可以灵活的配置AS内部簇与簇之间的关系。
    BGP的反射器和联盟

    层次化路由反射

    BGP的反射器和联盟

    BGP联盟

    联盟通过把大的AS分成多个更小的自治系统来解决IBGP全互连的问题,这些自治系统叫做成员自治系统或子自治系统。成员自治系统之间使用EBGP会话,因此它们不需要全互连。然而,在每一个成员AS中,仍然要求IBGP全互连。
    BGP的反射器和联盟

    联盟术语

     联盟通过把大的AS分成多个更小的AS来解决IBGP全互连的问题,这些自治系统叫做成员AS。因为成员AS之间使用EBGP会话,它们之间不需要全互连。然而在每一个成员AS中,IBGP全互连的要求仍然适用。
     联盟中的EBGP会话和常规的EBGP会话有所不同。为了区分它们,这种类型的EBGP会话叫做联盟内的EBGP会话。与普通EBGP会话区别就发生在当通过会话传播路由的时候,联盟内的EBGP会话在一方面遵循路由通告的部分IBGP规则,在另一方面又遵循路由通告的部分EBGP规则。如:在发送更新的时候,NEXP_HOP、MED和LOCAL_PREF被保留,而AS-PATH被修改。
     对于外部邻居来说(联盟外的的对等体),成员AS拓扑是不可见的。也就是说,在发向EBGP邻居的更新消息中,已经剥去了联盟内被修改的AS_PATH。从其他的自治系统来看,联盟就像单个AS一样。
     每个成员AS中,IBGP全连接是需要的。路由反射也可以被部署。部署联盟的一个明显优势就是其成员AS不需要使用相同的IGP。每个成员AS不需要向其他成员AS通告自己的内部拓扑。不过,当使用不同的IGP时,每一个成员AS内必须保证BGP下一跳的可达性。
    BGP的反射器和联盟

    AS-Path回顾

    当前,AS_PATH属性被定义为公认必遵属性,该属性由AS号所组成。AS_PATH属性字段由三元组所组成:
    Path Segment Type, Path Segment Length, Path Segment Value
    在BGPv4里,path segment type字段是由1字节长的数值所组成,主要是标识AS_PATH的不同类型:

     Value     Segment Type
          1       AS_SET: 由一系列AS号无序地组成,包含在UPDATE消息里。
          2       AS_SEQUENCE: 由一系列AS号顺序地组成,包含在UPDATE消息里。
          3       AS_CONFED_SEQUENCE: 在本地联盟内由一系列成员AS号按顺序地组成,包含在UPDATE消息中,只能在本地联盟内传递。
          4       AS_CONFED_SET: 在本地联盟内由一系列成员AS无序地组成,包含在UPDATE消息中,同样只能在本地联盟内传递。

    AS_Path变化过程

    联盟内采用AS-CONFED来防止子AS间的路由环路。
    联盟内的AS-PATH属性变化:
     联盟内的EBGP会话
     子AS号被添加到AS-PATH中的AS-CONFED-SEQUENCE前面
     联盟内的IBGP会话
     不修改AS-PATH
     外部BGP会话
     子AS号从AS-PATH中清除,而大AS号被添加到AS-PATH前面
    BGP的反射器和联盟
    BGP的反射器和联盟

    联盟与反射的比较

    BGP的反射器和联盟

  • 相关阅读:
    python字典
    python元组
    python list列表
    deepin常用操作
    Be a child.Be a man...
    “夹心阶层”——面对高昂的房价,要面对现实,广州,除了劳动力便宜,什么都贵。
    男人一生中16件事情(转载)
    被老板臭骂了一顿,但受益匪浅。
    陪伴
    高品质生活
  • 原文地址:https://www.cnblogs.com/liujunjun/p/13513527.html
Copyright © 2011-2022 走看看