估计学习过或者在学习BGP的读者,心里面都会有这么一个问题:“BGP到底有什么用?如果在网络中不用BGP,光用OSPF不行吗?”
“肯定是行不通的!”
“那为什么行不通呢?”
问到这里,如果单说概念就真的很难把人说服了。因为那个概念太显得干巴巴的了,也太容易被人举出反证,甚至是一些无理取闹的杠精思维给搅乱。
“那我今天一定要你把话说清楚了不可!”
别忘了,数学里面有一种证明的方法叫做“反证法”,那今天我就用“反证法”来给你们证明这个问题。
命题如下。求证:如果在网络中不用BGP,光用OSPF是行不通的。
用反证法来证明,就是假设:“在网络中就不用BGP,只使用OSPF一种协议是可以的。”
那好,我们就先用一个单业务,无VRF的业务网来说明。
首先,这个网络架构是这样的,各个汇聚与核心之间是OSPF Area 0,汇聚下方与接入层交换机,汇聚路由器与各个同城网点之间使用OSPF Area 1-Area 5。
如下图所示:
这有什么问题吗?
这肯定没什么问题啊!
汇聚与核心之间的OSPF 区域ID为Area 0,然后每一个大区内部如果有OSPF的话,就给这个大区单独划分一个OSPF区域。而且,Area 1—Area 4都是在一个机房内的功能区域,使用的都是比较高端的交换路由设备,用的是10G的光纤来互联的,就算是你不划分Area 1—Area 4,也没有太大的问题。
如果你真的不想划分Area 1-Area 4,确实没啥问题。设备性能可以支持足够大的路由表,互联线缆也能承受突发的大流量,就是在管理上有些难看,就看客户有没有强迫症了。
真正需要路由聚合与分流的实际上是Area 5,因为Area 5下挂了20多个同城站点,类似于银行的支行,供电局的各个服务站那种。同城站点的接入路由器与中心机房的汇聚路由器之间可是用MSTP专线来互联的,而MSTP专线的带宽一般都是20-30M,已经是低带宽线路了。
所以,一定要对Area 5进行划分区域,在路由聚合的同时调整聚合后路由的Cost,达到分流的效果。
你说OSPF的路由聚合与业务分流能力不强,但是在OSPF区域之间,这点要求还是满足得到的。在这里,看Area 0与Area 5就可以了解:
从上面的描述我们可以看到,就单一的中心网络,下面挂一些小型的分支站点,就完全没有用BGP的必要了。
但如果,我们再把目光放大一点,把8个地州市的网络通过下联二级骨干接入进来,这个网络从架构上来看,应该是这样(拓扑只能画得下4个,就以4个来说明吧):
那现在还有用BGP的必要吗?
先说说要求:
8个地市级局域网,每个站点分配32个C,所以正好可以把10.113.0.0/16和172.17.0.0/16分配给地市级局域网,分别作为主业务网段和保卫监控网段,正好就够8个地市级网络使用了。为了降低地市级单位和中心网络的路由表,也是有路由聚合要求的。
那这个时候,也有路由聚合与分流的要求,如果你仍然要使用OSPF,可以不呢?
如果你只看地市级局域网与中心网络之间的对接,光用OSPF也是可以的。
让地市级局域网的上联骨干路由器做ABR,每个地市级的局域网分配一个区域ID,这样其实也没问题:
然后,在ABR上,把本地的路由聚合为一个/19的大段发布给Area 0,再把Area 0的路由聚合成/14收过来,在不同的链路上调整不同的Cost值,也是能达到分流效果的。这里和Area 0与Area 5之间的情况类似。
那是不是你就可以得到一个“BGP没用”的结论了呢?
别急,你还高兴得有点太早。我们还有场景没说完呢,如果此时,地市局域网下方也用MSTP专线连接了同城站点呢?
如果还要沿用地区1局域网的OSPF进程,就只有三条路可以走。
A、同城站点接入路由器与两台汇聚路由器之间,仍然划入Area 101。但这样做无法实现路由聚合与分流,因为同区域内的OSPF路由是无法聚合,也无法调整网段分流的。就算是客户能忍受接入路由器上充斥着上百条/30、/32的路由,估计也无法忍受业务压在一条带宽不高的MSTP专线上造成的拥塞吧。
B、让同城站点接入路由器与两台汇聚路由器的区域继续划分为Area 1001,这样Area 1001与Area 0不相连,但是可以让Area 101作为虚链路的传输区域嘛。在同城汇聚路由器和二级骨干上联路由器架个虚链路不就得了?
这个方法看起来应急可行,但却使得地市级局域网的两台二级骨干上联接入路由器成了“高危设备”,让上下联的区域耦合度增高,也增加了网络运维的难度。
如果此时Area 101内网络变更出现震荡重收敛,也会导致虚链路出现问题。
C、让让同城站点接入路由器与两台汇聚路由器另起一个OSPF进程,让两个OSPF进程的路由在同城站点两台汇聚路由器上进行重分发。这样,路由的聚合,分流不就全部实现了吗?
这可行是可行,也有成功案例作支撑,但是这操作难度可不小,双点双向重分发路由要注意防环,要注意根据不同的网段调整Cost值。这个你们可以找找我之前写过的“路由重分发”文章。
所以,综上所述:全网都用OSPF协议,其实是可行的。只是在某些特殊的节点上,会对变更操作和运维带来一些难度。但这些难度会不会对整个网络埋下隐患,就不得而知了。
如果允许用BGP的话,那BGP肯定是用在二级骨干之间,也就是中心网络与各个地市级网络之间了,如下图所示:
而好处也是显而易见的!
在二级骨干网之间用了BGP以后,每个地市级网络的OSPF进程就被BGP隔开了,就可以相互“独立”,不受到其他站点干扰了。就像上面那张图上画的,中心网络和每个地市级网络的核心位置的OSPF区域都能设置为Area 0了,这大大增加了每个局域网内部网络规划的灵活性!
并且,中心网络和每个地市级网络的内部局域网的任何收敛,不会对其他局域网造成影响。
所以,最终的结论就是:BGP在单纯做路由协议的时候,是完全有它的使用场合的。你需要记住的就是:BGP可以用在较大的两个局域网,通过广域网链路对接的时候,将路由的收敛范围分割在一定的范围内。比如数据中心核心设备之间的DCI对接,总部级单位与省级单位;省级单位与地市级单位时间的对接,都可以考虑使用BGP对接。利用BGP强大的路由聚合功能和丰富的路径属性,实现两个较大局域网之间的路由传递和最优路径选择。