首页 > 其他分享 >路由选择协议三剑客--BGP协议

路由选择协议三剑客--BGP协议

时间:2024-04-26 11:00:09浏览次数:21  
标签:协议 自治 -- 报文 系统 BGP 路由 三剑客

一、背景
边界网关协议(Border Gateway Protocol, BGP)是用来处理像因特网规模大小的网络协议,能够妥善处理好不相关路由域间的多路连接协议。BGP一般用于企业和企业之间,也就是运营商骨干网的通信,一般使用在AS内或AS间通信,在大型企业网中实现的比较多。
内部网关协议只用关心AS自治系统内部的情况,无需考虑自治系统外部其他方面的策略,而外部网关协议这一类别的协议,是用于自治系统之间的路由选择,典型的就是BGP协议。由于不同自治系统内部,度量路由的“代价(包括时延、带宽、距离)”可能不同,因此对于自治系统之间的路由选择,使用“代价”作为度量来寻找最佳路由是不可行的。

由上图所示,AS4可以通过哪些路径到达AS5呢?有很多中路径:

  • AS4->AS1->AS2->AS5
  • AS4->AS1->AS3->AS5
  • AS4->AS1->AS2->AS3->AS5
  • ...
    那么如何选择最优路径呢?由于没有统一的度量,因此不能像之前内部网关协议那样考虑。此外,自治系统之间的路由选择还要考虑其他因素,如政治、经济、安全等。比如国内站点互相传送数据时,不应该经过国外的AS,特别是对国内有威胁的国家。基于以上考虑,BGP只能力求寻找一条能够到达目的网络且比较好的路由,而并非要寻求一条最佳路由。
    二、BGP基本工作原理
    在配置BGP时,每个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人”。而BGP发言人往往就是BGP路由器,不同自治系统的BGP发言人要交换路由信息,首先需要建立TCP连接,端口号是179.

在此TCP连接上交换BGP报文以建立BGP会话,利用BGP会话交换路由信息。
利用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的邻站(neighbor)或对等站(peer)。BGP发言人除了运行BGP协议外,还必须运行自己所在自治系统所使用的内部网关协议IGP比如RIP或者OSPF。BGP发言人交换网络可达性信息,就是要到达某个网络所要经过的一些列自治系统。
当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的较好的路由,也就是构造出不存在回路的自治系统连接图(树形结构)
三、BGP优势
BGP适用于多级结构的因特网,如下图展示了BGP发言人交换路径向量的树形结构。

这里的(AS1,AS2)就是路径向量,AS3收到路径向量后,会判断AS3是否包含在其中,在的话则不能采用这条路径,否则会兜圈子。BGP版本4中规定的四种报文:

  • 打开报文(OPEN):用来与相邻的另一个BGP发言人建立关系,使通信初始化
  • 更新报文(UPDATE):用来发送某一路由的信息,以及列出要撤销的多条路由
  • 保活报文(KEEPLIVE):周期性地证实邻站的连通性
  • 通知报文(NOTIFICATION):用来发送检测到的差错
    在BGP协议刚刚运行时,BGP的邻站交换整个BGP路由表,但以后只需要在发生变化时更新有变化的部分,这样做对节省网络带宽和减少路由器的处理开销都有好处。
    BGP是一个用来处理像因特网大小的网络协议,能够妥善处理好不相关路由域间的多路连接协议,平时接触这个协议可能会比较少。
    四、对路由选择协议三剑客进行总结
    RIP使用UDP协议,OSPF使用IP,而BGP使用TCP。

RIP协议采用UDP是因为RIP每周期需要全网组播路由信息,路由信息数量较大,故使用UDP协议可以提高效率。
OSPF全网路由器保持着同样的一个LSDB(链路状态数据库),当拓扑发生变化时,需要携带的变更信息较少,通过IP协议即可完成。
BGP因携带的路由信息较多,且可能跨不同网络传送路由信息,为保证可靠性,需要使用TCP协议,可兼顾容量和可靠性。

问题:为什么RIP周期性地和邻站交换路由信息而BGP不这样做?
内部网关协议主要是设法使数据报文在一个自治系统中尽可能有效的从源站传送到目的站,在一个自治系统内部并不需要考虑其他方面的策略,然而BGP使用的环境却不同。

  • 因特网规模太大,使得自治系统之间的路由选择非常困难
  • 对于自治系统之间的路由选择,要寻找最佳路径并不现实
  • 自治系统之间的路由选择必要考虑有关策略

由于以上情况,BGP只能是力求寻找一条能够到达目的网络且比较好的路由,而并非要寻找一条最佳路径,所以BGP不需要像RIP那样周期性地和邻站交换路由信息。

标签:协议,自治,--,报文,系统,BGP,路由,三剑客
From: https://www.cnblogs.com/bonne-chance/p/18159542

相关文章

  • 什么是CDN
    参考:https://cloud.tencent.com/developer/article/2090707https://blog.csdn.net/weixin_40381947/article/details/131409507CDNCDN的全称是ContentDeliveryNetwork,即内容分发网络。CDN是ContentDeliveryNetwork(内容分发网络)的缩写,是一种利用分布式节点技术,在全球部署......
  • 「笔记」对顶堆动态维护中位数
    目录写在前面问题思路代码例题写在最后写在前面妈的为啥我不会这个问题给定\(n\)次操作,要求动态地维护一个可重集合,每次操作为下列三种形式之一:给定参数\(x\),向集合中插入一个权值\(x\)。给定参数\(x\),删除集合中已存在的一个权值\(x\)。查询集合的中位数。要求......
  • 读《我和Labview》7控件的局部变量和属性
    7.1控件与变量之间的关系7.2控件的标签和标题7.3控件的默认值7.4局部变量7.4.1创建局部变量7.4.2把数据写入控制控件,或从显示控件读取数据7.4.3应用与多线程间的共享数据7.5属性节点和调用节点7.5.1属性节点7.5.2关联控件7.5.3调用节点7.5.4应用实例-移动控件7.5.5应......
  • MongoDB基础操作
    目录一、什么是MongoDB二、MongoDB与关系型数据库对比三、数据类型四、部署MongoDB1、下载二进制包2、下载安装包并解压3、创建用于存放数据和日志的目录,并修改权限4、启动MongoDB4.1前台启动4.2后台启动4.3、配置文件启动服务4.4、配置systemd服务4.5、systemctl启动MongoDB5、......
  • Promise 与腾讯云无感验证结合使用
    需求分析:点击操作按钮--调用腾讯云无感验证获取参数--携带参数请求接口重点:函数的执行顺序,先调用腾讯云,然后携带参数请求接口demo.html<script>//定义回调函数functioncallback(res){console.log('callback:',res);if(res.ret===0......
  • 10. Semaphore ||(信号量)
    信号量实现同步举个例子在这里司机启动车辆需要售票员关车门,售票员开车门需要司机到站停车。对于这两个线程来说需要设置两个semaphored=0;semaphorec=0;为什么呢,因为有执行顺序的问题,只有售票员关门时候才可以启动车辆,设置一个d=0,司机启动汽车时候,这个线程执行p(d)来检......
  • Jenkins 简述及其搭建
    什么是持续集成?持续集成(CI)是在软件开发过程中自动化和集成许多团队成员的代码更改和更新的过程。在CI中,自动化工具在集成之前确认软件代码是有效且无错误的,这有助于检测错误并加快新版本的发布。什么是持续交付?持续交付(CD)是指每天多次将新软件投入生产,自动将应用程序......
  • 火山引擎VeDI:如何高效使用A/B实验,优化APP推荐系统
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群在移动互联网飞速发展的时代,用户规模和网络信息量呈现出爆炸式增长,信息过载加大了用户选择的难度,这样的背景下,推荐系统应运而生,为用户提供个性化的内容推荐。推荐系统在不断迭代中,其算法、策......
  • 【Qt 专栏】QString::arg()函数
    原文链接:https://blog.csdn.net/Gnar_w/article/details/134966919作者:Gnar_w  (CSDN) 一、说明在QT的QString中,arg方法类似于C中的printf中使用的格式输出符(仅有些许类似)。二、使用有以下方式:使用arg(str1,str2,str3)这种方法进行替换。使用arg(str1).arg(str2).arg(......
  • Jenkins 配置 以接收 GitHub 的 WebHook 通知
    要配置Jenkins以接收GitHub的WebHook通知,你需要在Jenkins上安装并配置GitHub插件,然后在GitHub仓库中设置WebHook指向Jenkins的URL。以下是配置步骤的简要说明和示例:确保Jenkins安装了GitHub插件。在Jenkins中配置GitHub插件,使其能够与GitHub通信(如......