本文主要是介绍如果大家都只用BGP协议,世界会变成怎么样?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
有小友提问说,既然有了BGP,为什么还需要OSPF和RIP这种IGP?
这个问题问的就像是……为什么有了局域网,还要广域网?
而且这个问题其实可以从两个角度来自我论证:①历史发展角度 ②技术角度,下面各位答主各有角度,但总体都是这两个方向。
老杨想做点补充,降低一点这个问题的理解门槛,毕竟这几个名词放在一起,小白大概率会懵逼,老杨先给你先理清一下关系。
乍一看,这题问的是BGP和IGP能不能二选一,对吧?
但实际上:
IGP(内部网关协议)对应的是EGP(外部网关协议),这两个才是相同量级,可以进行比较的。
BGP(边界网关协议)是EGP(外部网关协议)的发展到现如今的最新版本,所以这俩才能对比。
这个过程里又不得不提到一个新的名词,叫做AS自治系统(autonomous system),这就是IGP和BGP这俩小朋友的游乐场,没有它,他俩没地儿折腾,也不存在什么取舍问题了。
所以,咱们先把这仨玩意儿到底是啥搞清楚,我们再往下分析。
1、什么是自治系统(AS)
AS的全称就是autonomous system,从英文名其实就可以看出来,所谓的自治系统就是处于一个管理机构(比如运营商)控制之下的路由器和网络群组的全体,它们对互联网执行共同的路由策略。
移动、联通、电信三大巨头,他们各自都有自治系统,他们之间是相互独立的,但每一个运营商的自治系统内部都是按照一定规律在稳定运行的。
这样的自治系统有很多很多,就像一个又一个大型的局域网,自治系统内部需要规则来管理,外部也需要通过手段让彼此之间互联互通,才可以自由通信。
也就是说,对于互联网来说,一个AS是一个独立的整体网络。
在这个内部管理和外部交流的双重目标之下,就出现了IGP和EGP这两个“管理措施”,保证运转畅通。
2、什么是IGP(内部网关协议)?
IGP(内部网关协议)指的是在一个自治系统(AS)的内部所使用的一种路由协议,它一般分为2种类型:距离-矢量路由协议、链路状态路由协议。
其中,问题里涉及的OSPF和RIP就在这里头。
一个AS内部可以有多个路由器管理多个网络,各个路由器之间需要路由信息以知道子网络的可达信息,IGP起到的就是用来管理这些内部路由的作用,IGP里最典型的代表就是RIP和OSPF。
RIP是一种谣传路由,它主要的动作就是记录下离自己最近的路由器发来的现成的路由表,这些路由条目不用自己计算,机制非常简单,所以但非常容易学到错误路由。
它就只是听从邻居的话,使用邻居做为去往一个又一个非直连网络的下一跳。
OSPF是一种最佳路由,它主要的动作是收集网络中的各种信息并独立构建出拓扑图,再通过自己的独立计算到达目标地。
运行OSPF的路由器是先知道网络的拓扑,再基于拓扑计算路由。
乍一看OSPF挺好,RIP有点憨批是吧?
其实这俩在运用过程里都有自己优点和缺陷:
RIP配置很简单方便,很容易上手,但RIP显而易见的缺陷就是容易学到错误路由,除此之外,RIP的收敛时间比较长,也是一个卡点。
OSPF收集信息的确很精细,每个细节都不放过,但同时也太多大庞大了,很是负累。
3、什么是BGP(边界网关协议)?
BGP(Border Gateway Protocol)是指边界网关协议,它是运行在自制系统间的路由协议,主要作用交换域间路由协议。可以说,它是互联网上一个核心的去中心化自治路由协议。它存在的目的就是去中心化,以达到各个网络自治。
BGP是EGP(外部网关协议)发展了20多年以后的最新成果,所以和IGP(内部网关协议)可以形成呼应和对比。
可以理解为,IGP是自身性格,BGP就是社交手段。就像我们国家对人始终温和谦逊,但必要的时候也需要采取强硬手段震慑敌军,这是两种方式,但目的都是为了自身更好的运转。
BGP是应用层协议,其传输层使用TCP,默认端口号是179。BGP是唯一使用TCP作为传输层的路由协议,其他的路由协议可能都还到不了传输层。
因为是应用层协议,可以认为它的连接是可靠的,并且不用考虑底层的工作,例如fragment,确认,重传等等。
所以,也可以说BGP是最复杂的路由协议,根据收到的信息判断决策,再应用到路由表。
在EGP的基础上不断发展至今,BGP又分成了EBGP(Exterior BGP:不同AS之间的BGP连接)和IBGP(Interior BGP :同一个AS之间的连接)两种类型。
关键来了,这个IBGP明确表示它可以应用于AS内部,那就和IGP有冲突了不是?
所以,为什么要有IBGP?为什么IGP还在用呢?
4、既然有了BGP,为啥还要OSPF/RIP?
不同的性格有着不同的优势,就像铲子和汤勺,筷子和叉子,都是餐具,但使用场景不同,效果不同。
你吃意面用筷子吃也不是不行,但你用叉子卷着吃速度更快;有的时候用筷子夹汤圆吃也不是不行,但勺子吃更方便。所以,各类的路由协议也有自己的优势和短板,这是IGP没有被替换掉的原因。
IBGP和IGP一定是2选1吗?显然不是。
那作为同样都应用于AS内部的协议,为什么不能只选其中一个来用呢?
传统的解释看着累赘,我们简化一下理解。
我们来假设一下,如果没有IGP,只有IBGP的话,会变成什么样子:
IBGP是通过TCP连接的,IBGP·1号和IBGP·2号之间很可能没有实际的物理链路,如果没有IGP来提供路由,那么IBGP就毫无用处。
我们再来假设一下,如果没有IBGP,只有IGP,会变成什么样子:
IGP在内部好用是好用,但是处理路由的条目有限,路由表的数量一旦超过某个极限值,IGP就无法处理了。
再加上按照IGP那么“死板”的处理原则,只要其中有一条路由出现问题,那用IGP的这台路由器就要全部重新路由,10条可以,100条可以,10万条呢?
别说路由器受不受得住,带宽占用率也要哀嚎了。
而有IBGP就可以解决这个问题。
举个例子:
现在AS50/60/70里各有300台路由器,那这个时候AS50想要把其中的20000+路由传递到AS70之中,和AS60没有太大关系。
如果这时候没有IBGP的话,这20000+的路由都会被送到AS60的IGP之中去;如果时候有IBGP的话,那就只有AS70可以收到这20000+路由,提高效率不说,也突出了IBGP的路由控制能力。
你从这个例子里也可以看出,IBGP突出的能力其实是基于大基数的数据量来看的。BGP对于路由的学习,是比较特殊的适用于大型企业网。所以一般用于在各个企业网之间使用。
如果是一些小型网络,操作简单快捷才是最重要的,那这时候IGP里的其中一员猛将OSPF,OSPF的设备要比支持BGP的要多,选它不是更好吗?
具体问题具体分析,因地制宜制定策略,才可以高效行事。
全部都用BGP不是不行,理论上是ok的,只是本身设计时就是为了大型网络而设的,你小型网非要用,负荷那么大,不必强撑。
听点话,大家都这么用当然都是有自己的道理。
杀鸡焉用牛刀?但你非要用也不是不行,用呗,咱够豪横(手动狗头)
原创: 老杨丨8年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部
这篇关于如果大家都只用BGP协议,世界会变成怎么样?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!