网络通信 频道

BGP、EBGP、IBGP、IGP还没搞清?BGP又有哪些新发展?

  神秘的一天,文档君穿越到某忍者世界,发现硝烟四起,文档君四处打听原因。

  原来起因是雨之国错过了文档君的抽奖活动,但没想到竟导致土之国、火之国、雷之国也无法看到文档君的新推文,忍界大战一触即发……

  所以还不给文档君点亮星标⭐?

  这听起来有点不可思议,为什么雨之国自己的屏蔽行为会影响到其它国家?

  为了知道这其中的原理,我们就不得不提到边界网关协议——BGP了。

  但是想好好聊聊BGP,就必须先简单回顾一下互联网是怎么诞生的~

  01 互联网是如何诞生的?

  一开始,电脑之间互相访问靠的是网线连接。这样,电脑能收到在网线上传输的所有数据。

  但不是每台电脑都希望收到与自己无关的数据,所以需要“路由器”来将电脑们统一管理和分发,传送数据到指定的地方。

  就像无形之中电脑被分了很多个“组”一样,这些“组”都使用相同的技术协议进行管理,我们将这样的“组”称之为“自治系统(AS)”。

  自治系统,顾名思义,就是自己管理自己,一般来说就是由机构或者组织来统一管理自己内部的网络。现实当中,常见的自治系统有一所大学,一个企业或者一个公司个体。

  为了便于理解,我们把自治系统这个概念放大到“忍者世界”的国家层面。

  比如中兴文档的数据想要从兴之国送去土之国、雷之国、火之国。很明显要经过其它中间国家。

  若数据想经过雨之国,那么雨之国可能会想:“凭什么让你的数据从我这里通过,我怎么知道你的数据里是不是藏着爆炸符呢?”

  而且在实际中,每个自治系统都可能采用不同的数据传输手段,这样通信肯定会受到阻碍,又怎么会发展为现在的互联网呢?

  02 BGP

  为调节这种纷争,IANA这个机构就出现主持公道了!(IANA就是负责分配IP地址的那个源头机构)

  IANA给每个国家(自治系统)都分配不重复的编号,这些编号可以理解为大家都遵守的和平协议的标识,而这个和平协议,就是BGP(Border Gateway Protocol,边界网关协议)。

  如果每一个国家(自治系统)都使用BGP这个规则来进行数据的传输,那么路由器也再不需要把全世界的设备都记下来,只需要把国家(自治系统)的编号记录下来就可以啦!

  那数据是如何在不同自治系统的路由器之间进行传输的呢?

  那就要说到BGP的两个分类了:IBGP(Interior Border Gateway Protocol,内部边界网关协议)和EBGP(External Border Gateway Protocol,外部边界网关协议),那么他们分别是什么呢?文档君慢慢跟你道来~

  03 IBGP和EBGP有什么区别?

  IBGP(Internal BGP)和EBGP(External BGP)从字面意思来看Internal表示向内,External表示向外。

  可能粉丝们有疑问BGP本来就是边界网关协议啊?不就是一种外部网关协议吗?为什么还要再区分内部和外部呢?

  文档君继续举例子,这个问题可以理解为分工合作,EBGP就好比每个国家的外交部,外交部专门和其他国家打交道,获取信息后传送给国内的媒体再公布给社会。

  相对地,IBGP就可以理解为国内大媒体,将外交部获得的消息传递到国内。

  结合上面的例子,继续来说说EBGP和IBGP有哪些区别呢?

  EBGP仅处理自治系统之间的数据传输,IBGP仅处理自治系统之中的数据传输,就像外交部和国内媒体分工非常明确。

  IBGP从EBGP获得的自治系统路径,是不会进行更新或者修改的,如果要更新也得由EBGP去更新或者修改,IBGP内部不会独自修改。

  正如国内媒体在得到外交部发布的国际新闻以后,不能自行编造新闻,必须如实传递,不然会使得国内民众的信息不对称。

  EBGP是不需要进行全互联的。比如兴之国要和火之国通信,中间相隔其他国家,如果通过另外架设网络来绕过中间国家,显然是不划算的,也是不现实的。但是如果中间国家也有使用EBGP的话,就可以透过中间国家来传递数据了,这样就不需要进行全互联了。

  04 IBGP与IGP有什么区别呢?

  这个时候可能又有同学疑惑,有了IBGP,是不是不需要IGP了呢?

  当然不是!

  IBGP与IGP重点不同,我们在学习IGP时,我们了解它有鼎鼎有名的几员大将,如OSPF、IS-IS、RIP……。IGP的重点在于自治网络中发现和计算路由,而IBGP在于控制整体路由的传播。

  延用上文的例子。

  IBGP负责国际新闻在国内的整体流通,就好比国内非常有话语权的大媒体,但是具体如何传递给民众并不负责。

  而IGP就负责消息在国内各个小媒体上的传播,并尽力于如何让这些消息传播的更快更准确,所以IBGP和IGP缺一不可。

  读到这里,大家已经可以分清了BGP家族中的EBGP,IBGP,IGP了吧!那我们再详细说说BGP是如何工作的?

  05 BGP是如何工作的?

  这两个BGP建立会话的时候会有四种基本报文类型。

  建立连接——Open报文:Open报文是TCP建立连接后发送的第一个报文,用来与其他设备或自治系统建立连接。

  交换信息——Update报文:Update报文用于在设备或自治系统之间交换路由信息。

  检测状态——Notifiaction报文:当BGP检测到错误状态时,就向对等体发出Notifiaction报文,之后BGP连接会自动中断。

  保持连接——Keepalive报文:BGP会周期性地向设备或自治系统发出Keepalive消息,用来保持连接的有效性。

  为方便执行会话,BGP将交互过程分为以下六种状态:

  Idle(空闲):为初始状态,复位TCP连接的重连计时器(通常为60 s),准备发起TCP连接。路由器查找路由表,是否有到达邻居的路由。

  Connect(连接):BGP发送第一个TCP连接,若收不到邻居发来的TCP应答报文,收不到应答的时间超过重连计时器规定的时间,就会重新发起TCP连接,并继续保持在Connect状态。

  如果TCP连接成功,就转到Open sent状态。

  如果TCP连接失败,就转为Active状态。

  Active(行动):当可以发送TCP连接,也可以收到邻居的应答报文,但是依然无法建立起TCP三次握手,就会进入到此状态(TCP三次握手参见往期推文三次握手,四次挥手,原来TCP这么有礼貌!)。在此状态,BGP总是试图建立TCP连接。

  如果TCP连接建立成功,就转到Open sent状态。

  如果TCP连接建立失败,不停重新发起TCP连接,就退回到Connect状态,并在计时器结束后,转回Active状态。

  Open sent(Open发送):TCP连接成功,发送第一个Open报文,并等待接收邻居的Open报文。

  OPEN confirm(Open证实):表示收到邻居的Open报文,等待Keepalive报文或者Notifiaction报文,如果没有收到又会进入Active状态。

  Established(已建立):最后BGP会话连接的时候就是Established状态了。之后可以通过Keepalive报文进行邻居保活。

  其实说了这么多,BGP这个协议的核心也是让数据在跨域传输的时候选择最优的路径,要选择最优的路径,就必须考虑非常多的属性、时间等因素。

  这里提及BGP最重要的6个属性:

  本地偏好(local Perference)——越大越优

  这个属性会发送给自治系统里所有的IBGP路由器,也就是这个属性在自治系统里使用,并且提供离开自治系统的最优路径,这个属性值同样是越大路径越优。

  举个例子,选择市内交通工具的场景就类似于比较本地优先级~

  MED——越小越优

  说的属性就是MED( Multiple Exit Discriminator ,多出口鉴别器),如果你的相邻自治系统有两个或者多个BGP,路由和你的自治系统相连,这个时候MED属性就可以定义哪条路径更优,使用MED属性值来标识这些属性值越低,表示为更优的路径。

  MED属性特点如下:

  用于向外部对等体指出进入AS的首选路径。

  仅在相邻两个AS之间传递。

  与local Perference分别指引进、出AS的路径。

  同理,选择市间交通工具的场景就类似于比较MED属性~

  自治系统路径(AS path)——越少越优

  AS path就是路由经过的所有AS的集合喔!

  当前我们需要跨越AS进行通信的时候,将本地AS号添加到列表的最前面就可以啦!

  AS path属性可以避免形成路由环路,还可以用于路由的选择和过滤。那么AS path属性是如何进行路由选择和过滤的呢?

  优先级属性(origin):

  IGP>EGP>INCOMPLETE

  源属性是有优先级的喔!IGP优先级最高,EGP次之,Incomplete优先级最低。

  NEXT HOP属性

  下一跳属性定义了到达目的地下一跳的设备IP地址,是告诉别人去往目的地的下一个“坐标”。比如:当我们跳格子的时候,首先要看到下一个格子的位置。对于路由器来说,要首先确认下一个格子(设备)的IP地址,才可以发送数据到这个设备。

  具体还可以分为以下情况:

  COMMUNITY属性

  团体属性根据某些特征对路由信息进行分类,与AS无关。常被用来简化路由策略的应用和降低维护管理的难度。

  有了这些属性以后,我们就可以使用算法配合这些属性,算出最 佳的路径。

  当然BGP并不是一个自动配置的协议,而是需要手动配置的啊!

  06 BGP有哪些新发展?

  接下来我们就把话筒递给BGP,让他来介绍一下BGP有哪些新发展?

  信息搜集有途径——BGP Link State

  经过认真的深造学习,BGP不仅扩展上文提到的属性,还定义了新的link-state NLRI,一致通过了地址族信息AFI/SAFI为163888/71的封装标准,实现了网络拓扑收集的一种新方式——BGP-LS!使得拓扑的收集更为高效!

  大型组网有对策——Segment Routing

  网络安全有保障——BGP Flow Specification

  DoS(Denial of Service)/DDos(Distributed Denail of Service)攻击对网络安全是一个重大威胁,它就像堵车一样会导致网络拥塞或者服务器CPU占用过高而无法为用户提供服务。而传统的流分类、重定向技术都有一定的缺陷。

  BGP为了解决传统预防方法的缺陷,通过NLRI(Network Layer Reachability Information,网络层可达信息)属性携带流量匹配信息,AFI/SAFI为1/133,扩展了团体属性来携带数据流处理动作,比如对流量进行限速、引流、丢弃等。

  极简演进有方向——EVPN

  互联网业务高速发展,数据中心内服务器数量的大量增加,虚拟机的产生使得二层域内MAC数量剧增,传统二层以太网VPN技术VPLS不能满足建立超大型数据中心的需要。

  想知道是哪五种新RT吗?在评论区留言喔~图片

0
相关文章