哈工大计算机网络课程网络层协议详解之:Internet路由BGP协议详解

哈工大计算机网络课程网络层协议详解之:BGP协议详解

在之前的网络层协议中,我们介绍了Internet网络两个自治系统内的路由协议:RIP协议和OSPF协议。这两个协议应该来说是自治系统内协议的两个代表性协议,前一个基于距离向量路由算法,后一个基于链路状态路由算法。

在这一节中,我们进一步介绍Internet网络作为一个层次化路由,在自治系统间采用什么样的路由协议。为此引入BGP协议。

Internet AS间路由协议:BGP

BGP协议:边界网关协议(Border Gateway Protocol)。BGP协议目前已经成为Internet网络中域间(自治系统间)路由协议标准。目前正在使用的是BGP4,也就是第四版的BGP协议。BGP协议也是将Internet“粘合”为一个整体的关键,也正是因为有了这样的协议,才使得能够在全球性的大规模的Internet网络中实现路由信息的分发。

BGP为每个AS提供了一种手段:

  • eBGP:从邻居AS获取子网可达性信息。 即根据邻居连接的自治系统,到达哪些子网的信息。
  • iBGP:向所有AS内部路由器传播子网可达性信息。
  • 当把上述信息传播给自治系统内的每个路由器之后,每个路由器都可以基于可达性信息与策略,确定到达其他网络的最优路径。

有了BGP协议之后,事实上使得整个互联网中的任何一个子网,在互联网中有了这样一种途径或机制,能够让它在整个互联网中向其他子网通告自己的存在,告诉其他子网/网络如何将数据传输到它对应的子网中来。这也是BGP协议之所以重要和存在的意义和价值。

BGP协议基础

BGP会话(session)

BGP协议的内容和原理较为复杂,本节首先在这里介绍协议的基础概念,便于后续理解。

BGP会话(session): BGP协议的主要工作过程是通过在路由器之间,交换BGP报文来完成的。在两个BGP路由器(“Peers”)之间交换BGP报文的过程称为一个BGP会话。在完成BGP会话的过程中,两端的路由器在术语中被称为”Peer“,类似P2P应用中的”Peer“概念。事实上,是为了强调两个路由器间没有绝对的主次关系,而是对等的两方。

利用BGP的报文交换,从而实现:

  • 一个BGP的Peer路由器可以向另一个路由器通告去往不同目的前缀(prefix) 的路径(“路径向量(path vector)“协议)。这里的前缀也就是CIRD地址中的用来表示网络地址前缀。在网络中,我们经常使用前缀来表示一个子网,或者是一个任意大的IP网络。

    由于BGP协议交换的是一个子网层次的,或者说一个自治系统层次的目的地址,因此我们也成BGP协议是一个路径向量协议。因为它交换的是一个完整的自治系统路径。这跟我们之前介绍的自治系统内通告交换的距离向量或链路状态分组都是有差别的。在这些通告中,交换的是到达目的网络或路由器的最小费用路径,而BGP协议中通告是交换到达目的网络(自治系统)的一个完整的自治系统路径。

  • BGP协议的报文交换基于半永久的TCP连接。

    说明BGP协议同RIP协议一样,也是应用进程来实现的。更进一步说,使用的是TCP的传输层协议,在两个路由器Peer间要交换BGP报文,需要先建立连接。由于BGP协议的特殊性,一个BGP会话的连接建立后,可能长时间不会拆除。因为有时我们也称BGP协议的连接是一个半永久的TCP连接。

BGP报文

BGP协议中定义了多种类型的报文,最典型的四种报文包括:

  • OPEN报文:与Peer建立TCP连接,并认证发送方。
  • UPDATE报文:更新路径,通告新路径(撤销原路径)。当一个Peer向另一个Peer通告可达性信息的时候,就可以利用UPDATE报文进行通告,比如告知对方通过哪一条路径到达哪一个子网。也可以用于撤销原路径,比如原先通告的路径可能因为各种问题无法连通了,撤销原先通告的路径。
  • KEEPALIVE:在无UPDATE时,保活TCP连接;也用于对OPEN请求报文的确认。
  • NOTIFICATION:报告之前报文的差错;也被用于关闭连接。

总结:BGP协议主要是通过建立TCP连接,建立BGP会话来交换BGP报文,从而完成网络可达性信息(网络前缀路径)的传输和交换。

下面以一个例子来介绍BGP协议过程:

在这里插入图片描述

假设当自治系统AS3通告一个前缀给自治系统AS1 时:

  • 路由器3a会向路由器1c发送一个BGP报文,利用BGP报文来交换可达性信息。

  • 当一个自治系统向另一个自治系统通告前缀可达性信息时,作为这个自治系统实际上做了一个承诺:即该自治系统(e.g. AS3)承诺可以将数据报转发给该子网。

  • AS3在通告中会聚合网络前缀。

    由于BGP协议按层次路由的概念来说,属于最高层路由。因此,在网络前缀可达性信息通告过程中,会尽可能的进行路由聚合(会尽可能的把符合条件的网络前缀聚合在一起)。从而减少通告的报文量,节省带宽使用。

分发路径信息

事实上,作为BGP协议在分发路径信息时,会利用BGP会话来进行,而BGP会话按我们上面讲的进一步可以区分为外部会话和内部会话。

还是以上面图中为例

在这里插入图片描述

  • 在3a和1c之间,建立的BGP会话,跨越了两个不同的自治系统,事实上是两个不同自治系统的网关路由器之间建立TCP连接,按照TCP连接会话的方式进行通信。这种会话方式就被称为外部会话。

  • 在1c收到AS3发来的网络前缀可达性信息后,则可以利用iBGP向AS1内的所有路由器分发新的前缀可达性信息。

  • 进一步,作为AS1内部的路由器,1b可以(也可能不)通过1b—2a的eBGP会话,向AS2通告新的可达性信息。

当路由器获取新的前缀可达性信息时,即在其转发表中新增加关于该前缀的入口(路由项)。

路径属性与BGP路由(route)

下面我们接着看一个BGP协议在通告路径时,都包含什么样的信息。

我们前面介绍过,通告时一定会包含网络前缀信息,通告给不同的自治系统到达目的网络所需要走的链路,并让其记录在转发表中。

实际上,除了上述的网络前缀信息之外,还包括BGP协议的一些属性。

  • 前缀+属性 构成了BGP路由。

BGP协议定义了若干属性,比较重要的两个属性包括:

  • AS-PATH(AS路径):包含前缀通告所经过的AS序列:

    这个AS路径信息表示,在通告到达某个前缀路径的时候,可能经过了一系列的AS自治系统。因此这个路径就包含了这些自治系统的序列。比如,这个AS序列: AS 67, AS 17,表示需要把数据发送到某一网络前缀路径时,需要先经过自治系统67,再经过自治系统17,然后就是到达目的自治系统。

  • NEXT-HOP(下一跳):开始一个AS-PATH的路由器接口,指向下一跳AS。
    由于BGP协议是更高层次的协议,它所对应的维度是一个个的自治系统。因此,在BGP协议中,它的可达性信息中所表示的下一跳应该是一个自治系统,而不是路由器的概念。

比如下面这个例子,假设当路由器3a向路由器1c利用外部BGP会话,发送了一个前缀可达性信息,这里就包含了上述两个重要的属性:自治系统(AS)路径、下一跳AS。

因为从AS3发送的BGP报文可能经过了若干个自治系统才到达AS1,因此,AS-PATH包含了报文经过的所有自治系统路径:AS3、AS67、AS17…。

另一个重要信息下一跳,按我们上面介绍的,指向开始一个自治系统路径的路由器接口,比如这里AS3中路由器3a的发送接口11.11.1.1。

当AS1接收到前缀可达性信息后,还可能会继续向其相邻的自治系统中继续进行分发,以此类推。因此在BGP协议中,下一跳属性是非常重要的信息,因为假设存在多条路径可达目的子网时,下一跳属性就指明了每一次转发时下一跳应该具体走哪一条路径。

比如在图中的AS2,如果它向右侧的其他网络通告AS路径时,**通过2c和2b分发到达目的自治系统所对应的AS路径一定是相同的,但是两个通告的下一跳是不同的,路由器2c分发的是其路由器接口对应的IP地址,而2b则是其路由器接口对应的IP地址。**那么对于右侧的自治系统网络来说,最终选择2c还是2b,则对应了之前层次化路由中介绍过的,比如热土豆路由的方式来解决。

在这里插入图片描述

在介绍完上述BGP协议中的基本概念后,接下来深入介绍BGP协议如何再不同自治系统间进行路由选择的算法。

BGP路由选择

网关路由器收到对端网关路由的通告后,利用其输入策略(import policy)决策接受/拒绝该路由。这个输入策略重点就是要考虑策略问题:

  • 比如,根据某个策略,从不将流量路由到AS x。那么当你的AS-PATH中包含了这个自治系统x,就拒绝采用通告的这个路由信息。

因此,基于BGP的路由算法实际上是一种基于策略(policy-based)的路由。 在BGP协议的策略约束中,实际上很多都是由网络管理人员设置的,这个设置有的时候是策略,策略可能是技术层面的策略,也可能是企业层面的政策问题,再上层也可能是国家的政策问题(比如通告的路由的自治系统路径包含了敌对国家的自治系统)。

当路由器利用BGP协议获取了到达某一目的AS的多条路由时,基于以下准则选择:

  • 本地偏好(perference)值属性:策略决策(policy decision)。 比如在实际中会人为的为某些AS路径设置不同的偏好值,这个偏好值越大,代表选择的偏向性越高,反之亦然。这个偏好值也反映了BGP协议基于策略这样一个特性。

  • 当偏好值没有或者相等的情况下,进一步会考虑最短AS-PATH路径。 也就是把数据送到目的网络所经过的最短自治系统个数。注意,这里的最短是自治系统个数,而不是经过的链路费用或者路由器个数。

  • 另外一个准则是最近NEXT-HOP路由器:热土豆路由(hot phtato routing)。

    比如在上一节中的例子,可能从某个自治系统的两个路由器发送后,后续经过的自治系统路径一定是相同的,此时应该选择从这两个路由器中的哪个发送呢?这个时候的准则就是选择到达下一跳路由器(也就是下一个自治系统网关路由器)越近,就选择哪一个内部路由器转发。

  • 附加准则

接下来,通过一个示例观察BGP路由选择策略:

在这里插入图片描述

  • 在BGP协议层面,以自治系统AS为粒度,因此上述网路的A、B、C都表示一个自治系统AS,这里表示提供商网络ISP的自治系统。

  • X、W、Y是客户网络(customer network/AS)。

  • W、Y是桩网络(stub network/AS):只与一个其他AS相连。这种网络的跨自治系统路由相对来说更加简单了,不需要更复杂的BGP路由选择。因为离开或进入自治系统完全只能走一个接口,因此可能使用一个静态的路由配置就完成了。

  • X是双宿网络(dual-homed network/AS):连接两个其他AS。

作为客户自治系统,与运营商ISP自治系统最大区别在于,客户自治系统通常都不提供过路流量的传输。换句话说,如果数据报的目的地址不是在客户自治系统的内部网络的,而是需要做路由转发操作,实际上客户网络是不会这样做的。只有运营商的网络才提供这种路由转发服务。

在上述例子中,客户网络X是不提供经过它来路由B到C的流量。因为,网络X不会向B通告任何一条到达网络C的路由。

现在假设网络A向网络B通告一条路径:经过自治系统A可以将数据发送到自治系统W,AS-PATH为:AW。

作为网络B,由于X是B的客户网络,所以它会把这个路径可达性信息进一步转发给网络X, 此时的AS-PATH为:BAW。

那么,此时存在的问题是:网络B是否应该向C通告路径BAW呢?

BGP协议作为自治系统间的路由协议,事实上,运营商之间如何去交换网络可达性路径信息,其实并没有一个法律或是标准来完全约束。但是有一些通常大家遵循的基本原则:

  • 作为任何一个网络提供商,它提供路由的时候,只为它的客户网络提供服务。

在这种原则下,由于网络C和网络W均不是网络B的客户,网络B路由CBAW的流量没有任何收益,因此便不会把路由信息:CBAW通告给网络C。

In a word,在自治系统间路由时遵循的一个基本原则是:提供商网络通常只为它的客户网络提供路由服务。

对于网络B来说,它的客户是网络X,因此只有到达或离开网络X的流量,才会为其提供路由服务。在这样的原则下也意味着,网络B不把BAW的路径信息通告给网络C,从而强制网络C只能把数据路由给A在路由到目的网络W。

为什么采用不同的AS内与AS间路由协议?

最后,我们再总结归纳一下,在介绍了诸如RIP协议、OSPF协议、BGP协议之后,为什么在Internet网路中要根据不同的层次采用不同的路由协议?这样的好处是什么?

自治系统内的路由和自治系统间的路由其实主要从这几个方面考虑:

  • 策略(policy)
    • inter-AS:在自治系统间期望能够管理控制流量如何被路由,以及确定哪些路由可以经过其网络等。这些信息都很难单独利用一个算法来计算。
    • intra-AS:在自治系统内期望能够对路由信息进行单一管理,无需策略决策。
  • 规模(scale)
    • 从规模角度来说,层次化路由也是必须的。层次路由将网络划分不同的自治系统,从而缩小了路由算法计算路由信息时的规模,节省路由表大小,较少路由更新流量,也省了带宽消耗。
    • 基于层次化路由的策略,可以适应大规模互联网。
  • 性能(performance)
    • intra-AS:在自治系统内部侧重性能,因为没有不同自治系统间的差异。
    • inter-AS:策略主导。

小结

实际上BGP协议是一个非常复杂的协议,我们上述讲解的也只是BGP协议中非常基本的概念和逻辑,作为初步的了解。如果想深入研究里面的算法和思想,需要更进一步的参阅相关书籍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/34609.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue项目业务实现,视频监控-文件流,大屏适配方案(v-scale-screen),websocket前端

最近把以前的业务场景及解决方案整理了一下,具体实现的工具如下: 监控-视频文件流>video.js videojs-contrib-hls 大屏适配方案> v-scale-screen websocket>sockjs-client webstomp-client 视频监控-文件流 使用方法 下载video插件&#xf…

异步交互技术Ajax

Ajax 概念:Asynchronous JavaScr And XML 异步的JavaScript和XML作用: 数据交换:通过Ajax可以给服务器发送请求,并获取服务响应的数据异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部…

第3章 创建项目并初始化业务数据(过程记录)

项目声明和依赖 ECommerceRecommendSystem [pom.xml] 公用的声明、依赖、插件 properties 声明 log4g:处理日志的框架(日志的具体实现)sel4g:简单日志门面(简单日志的接口)mongodb-spark:Mong…

用隐私换便利,,,,,,您配吗?

用隐私换便利,您配吗? 引言 近日,某高校毕业生在校期间窃取学校内网数据,收集全校学生个人隐私信息的新闻引发了人们对互联网生活中个人信息安全问题的再度关注。在大数据时代,算法分发带来了隐私侵犯,在享受消费生活…

TX Text Control .NET for WPF 31.SP3 Crack

.NET WPF 应用程序的文档处理 将文档编辑、创建和 PDF 生成添加到您的 WPF 应用程序中。 视窗用户界面 功能齐全的文档编辑器 TX Text Control 是一款免版税、完全可编程的丰富编辑控件,它在专为 Visual Studio 设计的可重用组件中为开发人员提供了广泛的文字处理功…

Matlab学习-轨迹热力图绘制

Matlab学习-轨迹热力图绘制 参考链接: MathWork-scatter函数使用 问题需求: 需要将轨迹上的点另一维信息同时显示在图上,比如横纵向误差等,这个时候画轨迹与误差的热力图就能很好同时反应位置和定位误差之间的关系;…

CSS圆角进化论

CSS圆角发展过程 大致经历了3个阶段,包括: 背景图片实现圆角CSS2.0标签模拟圆角CSS3.0圆角属性(border-radius属性)实现圆角 ☛背景图片实现圆角:使用背景图片实现圆角的方式很多,实现的方式和圆角的切图方式关系密…

高级篇十六、多版本并发控制(重要)

目录 1、什么是MVCC2、快照读与当前读2.1 快照读2.2 当前读 3、复习3.1 隔离级别3.2 隐藏字段、Undo Log版本链 4、MVCC实现原理之ReadView4.1 什么是ReadView? 1、什么是MVCC MVCC (Multiversion Concurrency Control),多版本并…

电脑出现0xC1900101错误怎么办?

在更新或安装Windows操作系统时,有时系统会提示出现了0xC1900101错误。这个错误的出现通常是源于与驱动程序相关的错误所致。那么当电脑出现0xC1900101错误时该怎么办呢? 为什么会出现错误代码0xC1900101? 通常情况下,有以下几个…

error: exportArchive: No signing certificate \“Mac Development\“ found

error: exportArchive: No signing certificate “Mac Development” found UNIAPP打包又遇到这个问题了, 证书过期续期的时候又遇到这个问题了(之前遇到过解决了,时间长忘了),记录一下,报错信息 error: exportArchive: No signing certificate \"Mac Development\"…

5.8.8 TCP流量控制

5.8.8 TCP流量控制 计算机网络的流量控制实际上是调节发送方的速率使得接收方能够及时处理的一个过程。 在TCP中采用的是大小可变的滑动窗口的方式进行流量控制,窗口大小的单位是字节。 如图 根据接收方的接收能力,通过接收窗口rwnd可以实现一个端到端…

C语言王国探险记之字符串+注释

王国探险记系列 文章目录(3) 前言 一,什么是字符串呢? 1,那C语言是怎么表示字符串的呢? "hello world.\n" 2,证明字符串的结束标志是一个 \0 的转义字符 3,证明字符串的结束标…

基于springboot+Redis的前后端分离项目(二)-【黑马点评】

🎁🎁资源文件分享 链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA?pwdeh11 提取码:eh11 商户查询缓存,缓存更新策略,缓存穿透 商户查询缓存a.什么是缓存1.为什么要使用缓存2.如何使用缓存 b.添加商…

微信小程序分包

原生小程序分包和 uniapp 小程序分包差不多。 分包只是在原有代码结构上,指定那个文件夹属于分包,所以,页面地址原本路径不会修改。 比如,将pages/mine设为分包,mine下面的有页面地址pages/mine/index/index&#xf…

系统盘空间不足怎么清理?Win11系统盘瘦身的方法

系统盘空间不足怎么清理?当我们的电脑使用久了,就会有大量的垃圾文件堆积,会给系统盘空间带来很大的压力,容易出现系统运行卡顿的情况,对此我们需要对系统盘进行一次大扫除。本期教程小编将为大家分享Win11系统盘瘦身的…

20本期刊影响因子上涨,7月SCI/SSCI/AHCI/EI刊源表已更新!

2023年7月SCI/SSCI/AHCI/EI期刊目录更新 2023年6月28日发布的最新《期刊引证报告》中,我处合作期刊中,7月刊源表有20本期刊影响因子上涨,同时新增多本快刊! 重磅!2023年JCR正式发布(附影响因子名单下载&a…

自定义MVC引用XML配置文件实现

目录 前言 自定义MVC实现 1. 导入XML配置文件 2. 导入XML解析建模 3. 优化中央控制器 3.1 修改DisPathServlet中init初始化方法 3.2 修改ActionServlet逻辑处理流程 3.3 通过反射机制实例化子控制器类 3.4 中央控制器将请求委托给子控制器处理 3.5 根据请求结果码跳…

【物联网无线通信技术】802.11无线安全认证

本文由简入繁介绍了IEEE802.11i无线局域网安全技术的前世今生,帮助路由器开发者对WLAN的加密安全策略有一个概念上的认知,能够更好地分析STA掉线以及漫游等问题。 目录 WEP WPA WPA/WPA2-PSK认证过程 802.11i WEP WEP是Wired Equivalent Privacy的简…

Learning C++ No.30 【lambda表达式实战】

引言: 北京时间:2023/6/9/9:13,今天8:15起床,可能是最近课非常少,导致写博客没什么压力,什么时间都能写,导致7点起不来,哈哈哈,习惯睡懒觉了,但是问题不大&a…

记一次自建靶场域渗透过程

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 01 环境搭建02 外网突破03 权限提升并维持(1)获取 meterpreter 会话(2)尝试开启远程桌面(3)Msf 派生 Cobalt Strike shell&#…