在IBGP中对等体之间须要创建全互连关系,因此假设一个as内有n台路由器,创建的IBGP链接数就有n(n-1)/2。当IBGP对等体数目不少时候,很消耗设备的资源。ide
利用路由反射器能够缓解这一问题。客户端只须要和反射器创建IBGP链接便可。反射器会在客户端之间反射路由信息,客户端之间不须要创建IBGP链接。只有非客户端和非客户端之间不能传递BGP路由spa
参考Juniper官方文档咱们来作这个实验。我以为有点小问题,还但愿老司机指正。3d
A是反射器,BC是A的客户端,DE位于cluster之外,因此是非客户端。按照前面介绍的,B和C做为A的客户端,只须要和A创建IBGP链接,不须要再和DE创建IBGP链接。同理,E只须要创建和D,A的IBGP链接便可。blog
1.A是反射器,因此须要在BGP里面指定全部的IBGP对等体,同时配置本身的cluster-id(本例使用A的lo0口):接口
2.B和C做为客户端,只须要在BGP里面指定反射器A的对等体。
进程
3.D和E做为非客户端,一样也不须要指定客户端B和C的对等体。ip
4.以A为例子,配置IGP,并把OSPF路由重分布进IBGP。资源
配置IGP:路由
配置重分布:文档
5.直链接口和ROUTER-ID以及AS号:
6.检查BGP的邻居:
我发现D的状态里面是ROUTE REFLECTOR CLIENT。D不是应该非客户端吗?
我试着在cluster id后面配置neither 发现cluster是group全局的。
因此我修改了配置,BGP的进程一台设备只能起一个,可是group能够创建不少个:
而后我再查看bgp的邻居:
D依旧创建起了邻居。可是状态没有了 客户端选项。
B的邻居中依旧显示 客户端。
接下来查看BGP group,由于我修改了配置,输出可能会和官方的文档有些出入:
继续查看BGP summary:
最后查看路由:
实验的最后,能够看到在BC上收到了DE的IBGP路由,也在DE上看到BC的IBGP路由。惟一的问题就是 既然DE是非客户端,为何文档里要把他俩也配置在cluster id下面变成客户端呢?仍是我理解错了