| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 如果大家都只用BGP协议,世界会变成怎么样? -> 正文阅读 |
|
[网络协议]如果大家都只用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年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 19:26:04- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |