0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

BGP的第四个版本BGP-4

程序员cxuan 来源:程序员cxuan 作者:程序员cxuan 2022-07-04 09:55 次阅读

之前我们聊 RIP 、OSPF 协议都是基于 AS 即自治系统内的协议,可以把它们认为是域内路由协议;而下面我们要聊的就是 AS 之间的协议了,这也叫做域间路由协议,或者叫做外部网关协议,其最著名的一个协议就是BGP协议,目前使用最多的协议版本就是 BGP 的第四个版本 BGP - 4,简称为 BGP ( Border Gateway Protocol )。

在 RIP 和 OSPF 这些协议中,是由 IP 的网络地址进行路由控制,而 BGP 协议则需要通过整个互联网进行路由控制,范围要大很多。

BGP 的环境与 RIP、OSPF 的环境不一样,主要在于互联网的规模过于庞大, 使得自治系统之间的路由选择比较困难。互联网上的路由器对任何 IP 地址都能通过路由表找到它的目的网络。这是一个非常庞大的集合,如果使用链路状态协议 RIP 和 OSPF 的话,必须要维护一个非常大的了路由集合,一方面路由表检索起来效率很低,而且如此庞大的数据项也不方便维护。还有一点是每个路由器的 metric 不一样,有可能这个 metric 是经过了 100 个路由,而那个链路到达 100 个路由可能就直接报错了。

而且自治系统间的路由选择必须考虑策略问题,这些策略需要把政治、地缘、安全或者经济方面考虑在内。

由于上面这些特殊情况的存在,BGP 协议只是满足选择一条到达目的网络比较好的路由,而非选择一条最佳路由,BGP 采用了路径向量路由选择协议,它与 RIP 和 OSPF 有很大的差别。

在 BGP 协议中,每个 AS 自治系统内部都有许多BGP 边界路由器,这个 BGP 边界路由器就相当是自治系统内部的发言人。不同 AS 之间的 BGP 边界路由器如果要交换路由信息的话,就需要先建立 TCP 连接,然后在此连接上交换 BGP 报文以建立 BGP 会话,通过 TCP 能够提供可靠的服务。两个交换报文的 BGP 边界路由器都被称为彼此的临站(天使)或者对等站。

下图是一个使用了 BGP 边界路由器和 AS 的关系示意图:

b57c943c-fb2c-11ec-ba43-dac502259ad0.jpg

BGP 所交换的网络可达性信息就是要到达某个网络所要经过的一系列的路由。当各个 BGP 边界路由器一旦交换了可达性信息之后,就会选择出来一条到达各个 AS 比较好的路由路径。

BGP 支持无分类域间路由选择 CIDR,因此 BGP 的路由表也就应当包括当前目的网络前缀、下一跳路由器,以及到达目的网络所经过的 AS 。

在 BGP 刚刚运行时,BGP 的临站是交换整个 BGP 路由表,以后只要在发生变化时更新有新变化的部分即可。这样对节省网络带宽和减少路由器开销有很大好处,这个特性和 OSPF 非常相似。

BGP - 4 主要有下面几类报文类型:

OPEN ( 打开 )报文,用来和相邻的 BGP 区域边界路由器建立关系,进行通信初始化。

UPDATE ( 更新 ) 报文,用来通告路由信息,以及列出需要更新的多条路由。

KEEPALIVE ( 保活 ) 报文,用来周期性的证实临站的连通性。

NOTIFICATION ( 通知 ) 报文,用来发送检测到的差错。

如果两个临站属于两个不同的自治系统,而且其中一个临站打算和其他临站进行路由交换的时候,这时候应当有一个路由商量的过程。商量的过程包括临站路由器是否还能够接受额外的路由信息。因此一开始进行商谈的时候应该要先发送 OPEN 报文,如果临站可以接受这种关系,就用 KEEPALIVE 报文响应。响应完成后,两个临站就算是建立关系了。

关系建立之后,是需要相互维持的,这就和情侣之间确定关系之后,你作为老爷们总不能三天两头不搭理人家吧?俗话说的好,感情是需要维持的,那么这个路由关系也是需要维持的。通信双方中的每一方都需要确信对方是否已经存在,因此两个 BGP 边界路由器需要定期交换 KEEPALIVE 报文,一般这个定期的时间就是 30 s。

BGP 边界路由器可以使用 UPDATE 报文来更新路由:包括撤掉以前通知过的路由和增加新的路由。撤销路由时一次可以撤销多条,但是新增路由一个 UPDATE 报文只能增加一条。

当然在 BGP 中不存在 "好消息传播快坏消息传播慢" 的问题( 感觉 RIP 的这个问题被玩出梗了 )。因为 BGP 边界路由器不只有一个,而且当某个路由器或者链路出现故障时,由于 BGP 边界路由器可以不止从一个临站获得路由信息,因此很容易选出新的路由。

下面是 BGP 的报文格式:

b58f785e-fb2c-11ec-ba43-dac502259ad0.jpg

上面介绍的四种报文类型它们具有通用的报文首部,首部为 19 字节,通用首部主要分为三个字段。

标记 marker 字段为 16 字节长,用来鉴别收到的 BGP 报文,如果不使用鉴别,标记字段要置为全 1。

长度字段指出包括通用首部在内的整个 BGP 报文的长度,以字节为单位,最小值是 19,最大值是 4096.

类型字段的值为 1 到 4,分别对应上面报文的介绍顺序。

OPEN 报文共有 6 个字段,如下图抓包所示

b5b0c716-fb2c-11ec-ba43-dac502259ad0.png

前三个字段是 BGP 通用报文首部,下面的几个字段依次是 Version 版本 ( 1 字节,值为 4 ), My AS 本自治系统号( 2 字节,使用的是全球唯一的 16 位系统号 ) , Hold Time 保持时间 ( 2 字节,以秒计算的保持为临站关系的时间 ),BGP Identifier BGP 标识符 ( 4 字节,路由器的 IP 地址 ),下面是可选长度和可选参数

KEEPALIVE报文只有 BGP 19 字节的通用首部。

b5d3ab96-fb2c-11ec-ba43-dac502259ad0.png

UPDATE报文有五个字段,如下图所示

b5e919d6-fb2c-11ec-ba43-dac502259ad0.png

报文中的 Unfeasible routes length 表示不可行路由长度,后面有个字段报文没有列出来,就是 Withdrawn Routes ,要撤销的路由列表,后面的 Total Path Attribute Length 表示路径属性总长度,后面的 Path attributes 就表示路径属性,最后的 NLRI 标识发出这个报文的网络。

NOTIFICATION报文有三个字段,如下图所示

b6165306-fb2c-11ec-ba43-dac502259ad0.png

主要包括差错代码 ( 1 字节 ),差错子代码 ( 1 字节 ) ,后面还有差错数据。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 协议
    +关注

    关注

    2

    文章

    602

    浏览量

    39252
  • 路由器
    +关注

    关注

    22

    文章

    3733

    浏览量

    113944

原文标题:6 分钟看完 BGP 协议。

文章出处:【微信号:cxuangoodjob,微信公众号:程序员cxuan】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ADS131E08采用的是单端输入模式,前三通道的数据还比较稳定,但是从第四个通道就不正常了,为什么?

    P = IN6P ≈ 0V ,7,8两通道没用全部通过电阻接地。 前三通道的数据还比较稳定,但是从第四个通道就不正常了,尤其5,6,7,8通道完全就是乱码,这个是怎么回事。
    发表于 01-02 07:12

    华为设备中的BGP命令详解

    华为(Huawei)作为全球领先的信息与通信威廉希尔官方网站 (ICT)解决方案供应商,其网络设备广泛应用于企业网络和运营商网络中。边界网关协议(Border Gateway Protocol,BGP)是互联网
    的头像 发表于 08-12 18:11 1055次阅读

    ESP32S3 SPI2挂多个从机设备,无法操作第三设备的原因?如何解决?

    时, SPI读取就是0XFFFF, https://github.com/espressif/esp-idf/issues/8876 以上issue中描述的问题,是无法添加第四个设备,我修改后可以添加第四个
    发表于 06-11 08:26

    四个2输入异或门数据表

    电子发烧友网站提供《四个2输入异或门数据表.pdf》资料免费下载
    发表于 05-22 09:58 0次下载
    <b class='flag-5'>四个</b>2输入异或门数据表

    四个2输入正极和栅极数据表

    电子发烧友网站提供《四个2输入正极和栅极数据表.pdf》资料免费下载
    发表于 05-17 10:28 0次下载
    <b class='flag-5'>四个</b>2输入正极和栅极数据表

    四个2输入正极和栅极数据表

    电子发烧友网站提供《四个2输入正极和栅极数据表.pdf》资料免费下载
    发表于 05-16 10:22 0次下载
    <b class='flag-5'>四个</b>2输入正极和栅极数据表

    四个2输入异或门数据表

    电子发烧友网站提供《四个2输入异或门数据表.pdf》资料免费下载
    发表于 05-13 11:04 0次下载
    <b class='flag-5'>四个</b>2输入异或门数据表

    四个2输入正极和栅极数据表

    电子发烧友网站提供《四个2输入正极和栅极数据表.pdf》资料免费下载
    发表于 05-10 10:10 0次下载
    <b class='flag-5'>四个</b>2输入正极和栅极数据表

    有源晶振四个脚是如何定义的?

    有源晶振四个脚是如何定义的?有源晶振型号类型比较多,而且每一种型号的引脚定义都有所不同,接法也不是通用的。下面小扬介绍一下有源晶振常用引脚识别法,以方便大家:有点标记的为1脚,按逆时针(管脚向下)分别为2、3、4
    的头像 发表于 04-28 15:37 1555次阅读
    有源晶振<b class='flag-5'>四个</b>脚是如何定义的?

    半导体发展的四个时代

    台积电的 Suk Lee 发表了题为“摩尔定律和半导体行业的第四个时代”的主题演讲。Suk Lee表示,任何试图从半导体行业传奇而动荡的历史中发掘出一些意义的事情都会引起我的注意。正如台积电所解释
    发表于 03-27 16:17

    BGP路由的生成方式及5种报文

    TCP的三次握手。先启动BGP的一端先发起TCP连接。如图所示,RTB先启动BGP协议,RTB随机端口号向RTA的179端口发起TCP连接
    发表于 03-26 14:11 4042次阅读
    <b class='flag-5'>BGP</b>路由的生成方式及5种报文

    BGP 路由聚合实验

    当把R1的路由条目转给R4的时候,要改变下一跳,从R5学到的路由条目转给R4的时候也要改变下一跳
    的头像 发表于 03-25 12:43 636次阅读
    <b class='flag-5'>BGP</b> 路由聚合实验

    半导体发展的四个时代

    台积电的 Suk Lee 发表了题为“摩尔定律和半导体行业的第四个时代”的主题演讲。Suk Lee表示,任何试图从半导体行业传奇而动荡的历史中发掘出一些意义的事情都会引起我的注意。正如台积电所解释
    发表于 03-13 16:52

    四个引脚无源晶振的接线方法

    无源晶振是一种常用的被动元件,用于产生稳定的时钟信号。它通常有四个引脚,分别是VCC、GND、OUT和NC。
    的头像 发表于 01-23 18:15 6755次阅读

    FPGA图像处理之CLAHE算法的线性差值

    对于最后一种情况,也就是位于中间白色区域的点,他需要进行双线性插值。可以看到整个点位于第四个block,所以他需要在第一,第二第四个和第五
    发表于 01-21 10:51 1919次阅读
    FPGA图像处理之CLAHE算法的线性差值