Bootstrap

BGP反射器

反射器只在IBGP邻居间生效

为了解决BGP,AS内路由黑洞的问题使用了全互联的解决方案,但是对于设备的性能要求较高所以设计了反射器的方案

设备角色划分:

1.反射器:执行路由反射的设备     就是从IBGP接收到IBGP路由又可以传递给其他邻居的

2.反射客户端:被RR指定的设备

3.非反射客户端:没有被RR指定的设备

路由的转发:

 非非不传  从非客户端收到的路由不可以反射给非客户端

 1.从客户端收到的路由可以反射给客户端

 2.从客户端收到的路由可以反射给非客户端

 3.从非客户端收到的路由可以反射给客户端

 4.从非客户端收到的路由不可以反射给非客户端

怎么知道是客户端还是非客户端?

[AR1-bgp]peer 2.2.2.2 reflect-client

  1.配置2.2.2.2 成为自身的反射客户端

  2.配置该命令后自身成为反射器

想要谁称为自己的反射客户端就指定谁 上方 2.2.2.2区域

RR反射的路由:

1.反射的路由条目,一定是IBGP邻居学习到的,且传递给IBGP邻居      不能说我IBGP传递到EBGP EBGP反射传递到IBGP

2.反射的路由条目,下一跳不需要做更改(都在一个AS内,底层IGP相互通信)

  反射器针对客户端配置next-hop-local命令,也不会将路由下一跳改变

<AR1>dis bgp routing-table 100.1.1.1

 BGP local router ID : 10.1.12.1 描述自己的route ID

 Local AS number : 100 描述自己的AS号

 Paths:   1 available, 1 best, 1 select  描述本地的路由条数

 BGP routing table entry information of 100.1.1.1/32: 描述了自己存在100.1.1.1的路由

 Network route.

 From: 0.0.0.0 (0.0.0.0)  描述自己  来自于谁

 Route Duration: 00h12m53s 

 Direct Out-interface: InLoopBack0  BGP直连的出接口

 Original nexthop: 127.0.0.1 下一跳:自己  去往什么样的人要走的下一跳

 Qos information : 0x0

 AS-path Nil, origin igp, MED 0, pref-val 0, valid, local, best, select, pre 0

 Advertised to such 1 peers:3.3.3.3  通告给的邻居

在AR3上查看

属性值中增加了IGP的COST

在AR2上查看通过反射器学到的100.1.1.1的路由

Route ReflectorRR,路由反射器

打破了AS内水平分割的机制(从IBGP邻居收到了路由,可以传递给IBGP邻居)

*反射器反射了路由,自身是有感知,客户端是无感知的

  在进行AS内IBGP邻居路由传递时,容易出现环路问题:

1.簇内环路

   AR1和AR3、AR1和AR2、AR2和AR3建立IBGP邻居关系   AR2AR1建立IBGP邻居 AR2AR1指定为RR客户端  AR1发送给AR3 AR3发送给AR2 AR2又会发送给AR1 成环

   AR1是AR3的反射客户端 , AR3是AR2的反射客户端    

   AR1将路由传递给AR3,AR3将路由反射给AR2,AR2将路由反射给AR1

解决方法:    Originator:起源者ID

   Originator属性防环,该字段就是设备的RID

   *如果设备收到Originator属性携带的值和自身的RID相同,则不接收该路由

   Originator属性不是始发路由设备进行设置的    说人话就是不是上图的AR1发出方打上的

   Originator属性是反射器,反射客户端、非客户端 路由时,给打上客户端、非客户端 的RID    说人话就是上面的AR3反射器给AR1打上的

   *Originator属性只有第一台RR会设置,如果RR收到了客户端的路由,但路由已存在Originator属性,则不做修改  说人话就是上图AR3打上了AR1的起源属性AR2就不能打了

*只有反射器知道我们是做了反射器的,客户端是不知道这是IBGP到IBGP 再到IBGP传递回来的

2.簇间环路: 不是客户端的问题是反射器的问题

   多台RR设备相互反射,客户端的路由在RR设备之间出现环路:

  

   解决办法:簇列表

    Cluster list属性防环,该字段是RR设备的RID

    如果RR设备收到Cluster list字段中存在和自身RID相等的Cluster ID,则不接收该路由

    Cluster list属性包含多个Cluster ID值,Cluster ID是RR设备在反射路由时将自身的RID进行填充

  簇列表   

*反射器的Routerr ID成为簇ID经过每台RR设备 RR设备就会在簇列表中反射的时候添加上自己的RID AR3传递到AR4 AR4也会打上自己的RID 接收到簇ID相等的路由则不接收

簇列表只在RR间产生

RR之间成环 AR1给到AR2 AR2给到AR3 AR3给到AR4 AR4给到AR2 因为没有起源者属性 

在网络中部署RR

1.直连部署:RR设备既要做控制平面路由的学习,也要做转发平面数据的转发

2.旁挂部署:RR设备只需要做控制平面路由的学习,不需要做转发平面数据的转发

在网络中设置RR:  当一台RR失效有一台备用的能启用,一般会做RR集群

1.备份RR(同级RR

          只会反射客户端、非客户端的路由信息  只会影响客户端和非客户端的路由,不会影响自身的路由

说人话:将两个RR的簇ID值修改成一致,再建立IBGP邻居之后,因为两台RR设备的簇ID值都一样 把他们相互学习的机制干掉,互联起来可以传递本身的路由

          RR设备之间不会相互学习被反射的路由

          RR设备设置[AR3-bgp]reflector cluster-id x.x.x.x

将反射器的簇列表router ID改成一样的

做平级RR的两台或者多台RR设备都要修改簇ID为一样的

2.分级RR

   设备做为上一级的反射客户端,做为下一级的反射器  AR1是 AR2 AR3的反射器 AR2是 AR4 AR5的反射器

AR2 AR3作为AR1的平级反射器

规划时,网络中只有一台RR只需要把IBGP邻居建立到RR 之后RR再将网络中的 RT设置为反射客户端即可

目前学的只是给你打开一个思路,在实际工作中有千千万万种变化,只需要和想要获取路由的设备设置为反射客户端

;