通过上一篇文章,我们了解到了BGP的四类公认属性,和选路规则,发布策略,下面我们进行实验演示
如图,我们现在在r1和r2建立EBGP邻居,r2和r4建立IBGP邻居,然后观察路由表和BGP各种表项
第一步:配置各个接口IP
这里我采用的是比较直观的设置IP地址
r1连接r2的接口g0/0设置的是1.1.12.1
r2连接r1的接口g0/0设置的是1.1.12.2
以此类推,掩码都是24位
r1:g0/0--1.1.12.1 loop 0--1.1.1.1
r2:g0/0--1.1.12.2 g0/1--1.1.23.3 loop 0--2.2.2.2
r3:g0/0--1.1.23.3 g0/1--1.1.34.3 loop 0--3.3.3.3
r4:g0/0--1.1.34.4 loop 0--4.4.4.4
第二步:建立邻居
先观察EBGP邻居
这是AS100的r1的BGP配置
这时AS200的r2的BGP配置
r1配置命令配好的时候是这样的处于idle状态
r2配置好时,r1有start事件,开始建立TCP连接,发送Open报文
再过一段时间进入了established状态
现在我们查看路由表和BGP路由表
可以看到我们r2宣告的2.2.2.2回环接口被r1收到写到了路由表
下面我们看看r2的两个路由表
也跟r1是一样的现象,现在我们仔细看看
AS_Path值是100,也就是经过了AS100
Next-Hop是1.1.12.1,r1连接r2的出接口
Origin值在这里有不同,看到第三张图片我们可以看到1.1.1.1Origin值是igp,为什么呢明明是通过EBGP引进的属性却是igp
这里我们看到的其实我们去查bgp路由这条路由其实已经写进r2内部,通过这条命令查看不能正确查看Origin值,再第二张图
1.1.1.1的路由左边有个e也就是来自EBGP邻居,这里才能正确表示路由的Origin值,
这里没有Local-pref值,本地优先级,是在IBGP邻居之间传递的
Med和pref-val值为0,本地优先级的值默认为0,默认开销也为0
接下来我们看看AS200内邻居的建立
首先,我们知道,想要建立TCP连接,r2和r4之间肯定是要能互相访问的,这里我们用的是ospf达到连通性
r1和r2之间是EBGP默认TTL为1,物理直连所以建立邻居用的是物理接口的IP
r2、r4的IBGP的TTL默认为255之间为了稳定性用的是loopback接口
r2、r3、r4类似操作就可以了
配置完成后,ping通,接下来配置IBGP邻居
r2的配置和邻居表
r4的配置和邻居表
过了一段时间发现
为什么会建立不成功,首先双方可达,配置的命令邻居也没错,跟EBGP配置一样,
问题来了,既然EBGP使用的是物理接口,而我们现在为了稳定性使用的虚拟接口,问题就在这里
虚拟接口在作为IBGP邻居建立的时候配置命令还要加一条
然后我们邻居就建立成功了
接下来我们看看BGP路由表
发现r4已经学到了去往r1的
我们发现ping路由器r1是不同,
我们看看路由表
我们可以看到r4有去往r1的路由
有去了,看看有没有回
我们看到没有回来的路由,所以我们现在看到问题就是没有回来的路由
我们看到这里,没有4.4.4.0网段了路由,因为我们r4上面还没有宣告4.4.4.0网段
发现有4.4.4.0网段了
在ping一下
发现是通的
但是我们用源地址为1.1.1.1ping4.4.4.4
发现是通的,现在想想,在r1出去经过r2去4.4.4.4,r2在给r3去4.4.4.4,r3在给r4这条路是通的
现在我们看看回来的路由,r4发给r3去1.1.1.1,r3上没有配置BGP,我们r1、r2、r3宣告路由的时候也没有宣告1.1.1.0网段
也就没有这条路由
现在我们配置一条静态路由
ip route-static 1.1.1.1 24 1.1.23.2
发现通了,但是实际项目中,肯定不会用这种方法,所以可以把r3也跟r2、r4建立IBGP建立邻居,达到一个全连接的状态
但是问题又来了,当实际生活中网络中路由器数量过多,人工手动配置就会耗费大量的时间和资源,下篇文章我们就一起
学习BGP的高级配置
等等,等等,李某人这么可能这么短呢,咳咳
相信细心的小伙伴已经发现了,
EBGP和IBGP在传递路由的时候,下一跳属性的变换,在EBGP之间传递路由的时候会发现,会主动把下一跳改为自己
例如在把4.4.4.4地址给r1的时候把下一跳改为了1.1.12.2
而IBGP在传递路由的时候,比如1.1.1.1这条路由,r2在引进的时候下一跳地址为1.1.12.2给r4的时候还是1.1.12.2
如果我们在宣告r2网段的时候没有把1.1.12.0网段宣告进ospf,是不是r4就没有去往1.1.12.2的路由
这也是BGP路由传递的一个小细节,学到了吗?