反射器只在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 Reflector:RR,路由反射器
打破了AS内水平分割的机制(从IBGP邻居收到了路由,可以传递给IBGP邻居)
*反射器反射了路由,自身是有感知,客户端是无感知的
在进行AS内IBGP邻居路由传递时,容易出现环路问题:
1.簇内环路:
AR1和AR3、AR1和AR2、AR2和AR3建立IBGP邻居关系 我AR2和AR1建立IBGP邻居 AR2把AR1指定为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设置为反射客户端即可
目前学的只是给你打开一个思路,在实际工作中有千千万万种变化,只需要和想要获取路由的设备设置为反射客户端