我们都知道BGP路由防环主要分为:
ebgp防环:通过as-path,收到含有我本as号的路由就丢弃。
ibgp防环:BGP speaker 从IBGP获得的路由不会通告给它的IBGP邻居。(水平分割)
接下来,我们通过实验来了解一下ibgp防环机制会带来什么问题?怎么解决。
一、实验拓扑
二、配置思路
1、根据拓扑图,在ensp模拟器上搭好环境;
2、完成设备的基础配置(设备名、直连ip地址、loopback接口);
3、配置IBGP路由,在AS200内配置OSPF,都在area0里;在AS100,配置默认路由;4、配置BGP路由协议,R1与R2形成ebgp邻居关系,R2与R3形成ibgp邻居关系。
5、在R1创建loopbakc 10,ip为10.10.10.10/24,并宣告到bgp中。
6、查看BGP路由。7、在AS200配置BGP联盟,并分析、查看BGP路由。
三、配置过程
01、搭建实验环境
略。(参考拓扑图)
02、基础配置
以R2为例,如下,其他设备参考如下及拓扑图信息进行配置,这里不再一一展示。
03、配置IGP路由、默认路由
配置IBGP路由,在AS200内配置OSPF,都在area0里;在AS100,配置默认路由;
在R1配置默认路由:(因为AS100就一台路由器,所以我就简单配置默认路由)
R2的OSPF路由协议配置如下:
R3的OSPF路由协议配置如下:
R4的OSPF路由协议配置如下:
R5的OSPF路由协议配置如下:
R6的OSPF路由协议配置如下:
配置完OSPF后,可以检查一下邻居状态是否都full了?
以R3为例,使用如下命令查看:
04、配置BGP路由
配置BGP路由协议,R1与R2形成ebgp邻居关系,R2与R3形成ibgp邻居关系。
在R1配置BGP:
在R2配置BGP:
在R3配置BGP:
在R2查看一下bgp邻居关系是否都建立了:
05、R1上新增路由,宣告BGP
在R1创建loopbakc 10,ip为10.10.10.10/24,并宣告到bgp中。
06、查看BGP路由
接下来,我们在AS200里的路由器上查看R1发布的那条BGP路由(10.10.10.0/24)
R2查看,确认收到该路由了:
R3查看,也确认收到该路由了:
R3去ping一下连通性,也能通:
在R4、R5、R6查看bgp路由:
会发现R4、R5、R6均没有收到R1发布的BGP路由,原因我们开头也提到了,这是BGP的ibgp防环机制水平分割导致的,BGP speaker 从IBGP获得的路由不会通告给它的IBGP邻居。本例就是R2从R1收到ebgp路由,可以传给R3,但是当R3从R2这个IBGP邻居关系收到的路由,它不会再传递给R4、R5了。
怎么解决呢?
1、最笨的方法就是AS200内的路由器,两两之间建立ibgp邻居关系。这样有n路由器,就有n(n-1)/2的ibgp邻居关系了。(我们都知道BGP是基于TCP的)
如本例有5台路由器:
5(5-1)/2=10 (可数一下,下图有几根线?是不是也等于10)
2、可以使用BGP反射器(后续分享)
3、使用BGP联盟。(本期分享配置)
这里简单说一下我对BGP联盟的简单理解:
1、联盟机制就是把大的AS切成若干个小AS,在大的AS内部下,传递会携带小AS,用于防环。
2、出来了大AS号,就会剥离掉小AS号,这样ebgp邻居看来,就如同透明一样,没察觉到。
注:本来大AS号就是AS 200 。
07、配置BGP联盟
提醒:现网中配置BGP联盟需谨慎,因为要删除当前的BGP配置,重新配置。
配置BGP联盟,先来规划一下AS200内的小as号:
规划后,可知:在AS200下,
R2与R3形成ebgp邻居关系,
R3与R4形成ibgp邻居关系,R3与R5形成ebgp邻居关系。
R5与R6形成ibgp邻居关系。
R2的BGP联盟配置如下:
R3的BGP联盟配置如下:
R4的BGP联盟配置如下:
R5的BGP联盟配置如下:
R6的BGP联盟配置如下:
配置完后先看看bgp邻居是否已建立?
是不是简洁很多了,配置完联盟,AS200内只需4条bgp邻居关系,原本需要10条。
现在,我们到R3、R4、R5、R6上查看R1发布的那条bgp路由(10.10.10.0/24)是否可以收到了?
你会发现,他们均收到R1发布的bgp路由,不过属性里多了括号和新增的AS号,用来防环的。
现在我们可以再R6也发布一条bgp路由,然后再R2、R1上查看,同时也可以抓包看看。
在R6进行如下配置:
在R1、R2上查看bgp路由:
R1上查看:
R2上查看:
在R2的两个接口抓包:
在R6重新发布一些,这样抓包才能抓到R6发布的这条bgp路由:
R2发给R1的ebgp路由,发现as-path只有200:
R3发给R2的ibgp路由,发现as-path携带是括号+新增的as号:
所以,得出结论:
联盟新增的as号,只会在本AS(200)内传递使用,用于防环。出了AS200,就把联盟新增的as号剥离了,添加AS200。