智安网络丨32张图详解BGP路由协议:BGP基本概念、BGP对等体、BGP状态机等

      最后更新:2022-07-13 14:59:53 手机定位技术交流文章

      BGP路由协议是网络中最广泛使用的协议,不管运营商网络、企业网络、数据中心网络,目前都使用BGP协议。

      今天详细介绍了以下的BGP路由协议;

      什么是BGP路由协议

      1.BGP协议背景

      OSPF、ISIS路由协议在网络中已经广泛使用,但是随着网络规模的扩大,路由条目也随增加,IGP协议已经无法管理大规模网络了。因此出现了AS的概念。

      AS的概念比较抽象。

      官方解释: AS指的是一套在同一组织管理下使用统一路径策略的设备。

      简言之,你可以将网络中的不同设备分成不同的组(AS),或者把它们全部分成一个组,使这些设备在一个组中具有相同的路由协议。

      比如你可以将企业总部网络划分在一个AS中,企业的分部网络划分在一个AS中。不同的AS可以运行不同的路由协议。

      那么不同AS的网络需要通信时,采用什么路由协议进行通信呢?答案就是本章的BGP路由协议。那么为什么不能够通过IGP(ISIS、BGP)进行通信呢?

      这里是一个简单的例子。当连接到运营商的互联网时,企业网络或数据中心网络.如果在连接时使用IPP路由协议(OSPF、ISIS),因此,目前企业网络和运营商网络运行在一个网络中,这个是不安全的,你为什么认为运营商信任你的业务网络?

      另一个问题是整个网络正在扩大,线路的数目正在增加,线路的汇集速度缓慢。

      因此,是否有路由协议可以实现不同网络之间的路由交互?答案是BGP。BGP的优点是它不生成路径,它只通过路径,并且具有丰富的路径策略。

      这个时候可能有人还会站出来说,静态协议不就可以解决吗?其实是可以解决,不过有个问题就是使用静态协议时网络变动时都需要人手动去增删路由,那么有没有一种动态的方式呢?答案就是BGP路由协议了。

      以上面的例子为例:企业和运营商可以使用BGP路由协议相互交互实现路由。

      BGP传输路由的优点

      如果不同的AS通过BGP路由协议连接,使用BGP比IGP有什么优势?

      • BGP基于TCP路由协议,所以只要可以建立TCP,就可以建立BGP;BGP只发送路由信息,不计算路由,不暴露AS内部的网络拓扑;BGP路由更新是触发更新,而不是周期更新;
      什么是BGP路由协议

      BGP是一个基于距离向量的路由协议,用于实现不同AS之间的路由访问。

      BGP协议的基本特征:

      (一)BGP是一个外部门户协议,其重点不在于路径的发现和计算,而是控制路径的传播和选择最佳路径;

      (二)BGP使用TCP作为其传输层协议(端口编号179),以提高协议的可靠性;

      (三)BGP是一种避免设计中出现循环的距离向量路由协议;

      (4)BGP提供了丰富的路由策略,使路由的过滤和选择具有灵活性;

      (五)BGP使用触发的增益更新而不是定期更新;

      BGP对等体

      什么是BGP等价

      BGP Talker:运行BGP路由协议,称为BGP Talker(BGP Router);

      BGP等价:两个内置的BGP对话(BGP对话基于TCP)由一个可以交换BGP等价路由表的BGP等价路由到彼此;

      BGP分类等价

      BGP等价可以分为EBGP等价和IBGP等价,取决于两个路由器是否类似AS。

      (一)IBGP:位于同一AS的BGP路由器与IBMGP之间的同等关系;

      (二)EBGP:位于不同AS和EBGP的BGP路由器之间的等价关系;

      可以 确定 等价 的 条件 是 :

      • 两个路由器指定要建立等价的地址;可以建立TCP连接;
      如何建立BGP等价

      (一)建立TCP连接

      假设BGP路由器R1首先启动,然后R1首先启动以建立TCP连接,并通过三个握手完成TCP连接。

      (2)BGP路由器发送开放消息谘询参数

      在三个握手完成后,R1和R2互相发送一个开放消息,以建立对等值的参数协商。

      OPEN报文参数:

      • 自身AS号;hold time:用于协商后续keepalive报文发送时间;BGP identifier:自身router id;

      (3)BGP路由器发送维护消息完成等价创建

      参数协商正常后双方相互发送keepalive报文,收到对方的keepalive报文后对等体建立成功,同时后续定期发送keepalive报文用于保持连接。

      (4)BGP路由器发送更新消息路由器

      BGP对等体关系建立好了,就可以通过BGP update 报文通告路由到对等体。收到对方的keepalive报文后对等体建立成功,同时后续定期发送keepalive报文用于保持连接。

      BGP为赤道建立源地址

      默认情况下,BGP使用输出接口的IP地址创建一个等效。

      (1)在建立IBGP对等体关系时,建议使用loopback地址建立IBGP对等体。因为loopback地址稳定,可以借助内部IGP冗余保证可靠性。

      例如上图:

      R1和R2通过回路地址创建IBMGP等价,如果R1和R2之间的物理链断裂,loopback地址连通不会受到影响,R1和R2的回路地址可以通过R3相互连接,因此,R1和R2之间的对称关系仍然可以建立。如果通过接口建立,就会导致BGP对等体关系中断。

      (2)在建立EBGP对等体关系时,建议使用直连地址建立EBGP对等体。如果使用loopback,需要注意EBGP多跳的问题。

      BGP报文类型

      1、BGP报文类型

      BGP存在5种不同类型的报文,分别是open、update、notification、keepalive、route-refresh。

      BGP标题格式

      不同于常见的IGP协议,BGP使用TCP作为传输层协议,端口号179。BGP存在5种不同类型的报文,不同类型的报文具有相同的头部。

      报文头字段解释:

      • Marker:16Byte,指示BGP的界限,所有位数为"1"长度:2Byte,BGP总消息长度(包括标题)类型:1字节,BGP报文的类型。其取值从1到5,分别表示open、update、notification、keepalive、route-refresh报文。
      3、BGP报文格式

      (1)OPEN报文

      开放消息是建立TCP连接后发送的第一个消息,用于咨询参数;

      • 版本:bgp版本,通常是4; 我的AS: 本地AS; 保持时间: 保持时间.在建立等价关系时,双方应有时间进行协商,如果在这段时间内未收到对端发来的keepalive报文和update报文,则认为BGP连接中断;BGP identifier: BGP标识符,通过IP地址的识别,用来识别路由器。

      (二)更新报告

      更新消息用于将路由信息传递到赤道之间,并可用于发布和取消路由。

      一个Update报文可以通告具有相同路径属性的多条路由,这些路由保存在NLRI(网络层可达信息)中。

      • Withdrawn Routes Length:标明Withdrawn Routes部分的长度。其值为零时,表示没有撤销的路由。
      • Total path attribute length:路径属性字段的长度,以Byte为单位。如果为0则说明没有Path Attributes 字段。

      (3)Notification报文

      当BGP检测到一个错误状态时,它发送一个通知消息给同类人,通知同类人错误,并立即终止BGP连接。

      • Error Code、Error Code:差错码、差错子码,描述错误类型;Data:错误内容;

      (四)Keepalive报告

      双方相互发送keepalive报文,收到对方的keepalive报文后对等体建立成功,同时后续定期发送keepalive报文用于保持连接。

      (五)路由检讨报告

      Route-refresh消息是用来要求同类重新发送指定地址家族的路由信息,通常通过局部修改相关路由策略,让另一方重新发送更新消息。

      在有关公开报告的磋商期间是否将支持“路线重新调度”,如果该等价支持路由重新恢复功能,然后你可以手动重新修改bgp命令来解构BGP连接,BGP软分离可以刷新BGP路由表,而不干扰BGP连接,并应用新的策略。

      BGP状态机

      BGP的6个州

      BGP的状态有idle、connect、active、opensent、openconfirm、established六种状态。

      BGP状态转换

      BGP的状态有idle、connect、active、opensent、openconfirm、established六种状态。

      (1)闲置状态是BGP的初始状态。

      在Idle状态下,BGP拒绝对等体发送的连接请求。只有在收到本设备的Start事件后,BGP才开始尝试和其它BGP对等体进行TCP连接,并转至Connect状态。

      启动事件是由一个配置了BGP进程的操作者造成,或者通过替换现有进程,或者由路由器软件替换BGP进程。

      任何状态中收到Notification报文或TCP拆链通知等Error事件后,BGP都会转至Idle状态。

      (二)连接状态

      在Connect状态下,BGP启动连接重传定时器(Connect Retry),等待TCP完成连接。

      • 如果TCP连接成功,然后BGP发送一个开放消息,向相反的等价,然后移动到OpenSent状态。如果TCP连接失败,然后BGP转换为Active。如果与再发送器的连接是超时,BGP尚未收到与BGP相等的答复,然后,BGP继续尝试与其他BGP同等的TCP连接,保持连接状态。

      (三)活动状态

      在Active中,BGP总是试图建立一个TCP连接。

      • 如果TCP连接成功,然后BGP发送一个开放消息,向相反的等价,关闭连接重发时间表,然后移动到OpenSent状态。如果TCP连接失败,然后BGP保持在主动状态。如果与再发送器的连接是超时,BGP尚未收到与BGP相等的答复,然后BGP切换为连接状态。

      (4)Opensent状态、openconfirm状态

      在成功建立TCP三个握手之后,发送一个公开消息建立一个等价关系,在这个点国家是

      opensent状态,当收到对端回应的open报文,并且参数检查无误,在发送keepalive报文后进入openconfirm状态。

      (五)建立的国

      进入openconfirm状态后,收到对端的keepalive报文后进入established状态。

      BGP路由表

      1、BGP对等体表

      BGP等价表可以通过dis bgp peer查看;

      同行地址

      (2)V:版本号

      (3)AS:正交AS数

      (4)UP/DOWN:对等体存在up或者down的时间

      (五)状态:平衡的状态

      (六)前缀:从方程对得到的路径前缀的数目

      2、BGP路由表

      可以通过display bgp routing-table 查看BGP路由表;

      如果有多个路线到达相同的目的地,则所有路线都是路线的,但每个目的地只选择一个路线。

      通过display bgp routing-table ipv4-address { mask | mask-length } 可以显示指定IP地址/掩码长度的路由信息,它包含关于BGP路由的详细信息,例如, 路径发源者, 下一个跳跃地址, 路径属性等.

      BGP路由生成

      BGP路由是通过BGP命令通告而成的,而通告BGP路由的方法有两种:network和Import。

      (1)网络模式:

      使用网络命令可以释放当前设备路由表中的路径(非BGP)到BGP路由表,并通知邻居,网络命令在OSPF中使用的方式非常不同,就在BGP宣布时,你只需要宣布网络分段 + 面具的数量,如:network 12.12.0.0 16。

      (二)进口方法:

      使用进口命令可以将路由设备重新分配到BGP路由表的路由信息中,是BGP声明路由的一种方法,可以引入BGP路由, 包括直接链接、静态和动态路由协议.它的命令格式类似于在RIP中重新分配的OSPF。

      BGP通告原则

      BGP设备将最佳路径添加到BGP路径表,以形成BGP路径。

      在BGP装置与赤道建立邻近关系后,采用了下列相互作用原则:

      从IBMGP获取的BGP路由对等,BGP设备只能通过其EBGP等价。从EBGP到等价的BGP路由,BGP设备向它传递所有EBGP和IBGP等价(等价是IBGP只能传递一个跳跃,当有多个有效路径到达相同的目的地地址时,等价是EBGP。BGP设备只发布最佳路径,以更新同等路径,BGP设备只发送更新的BGP路由到所有同类路由,BGP设备将接收下一跳入传输中的所有EBGP对改变下一跳入传输中的所有EBGP对保持不变(需要特别注意)默认EBGP传输TTL值为1(需要特别注意)默认EBGP传输TTL值为255

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/29567.html

          热门文章

          文章分类