BGP协议

news/2024/10/13 16:22:24

概念

BGP协议是一种外部网关协议,用来连接不同自治系统中的主机

为什么使用BGP协议

在不同自治系统之间的路由选择,为什么不能使用内部网关协议?因为以下两点:

  • 互联网的规模太大,使得自治系统之间路由选择非常困难。连接在互联网主干网上的路由器,必须对任何有效的IP地址都能在路由表中找到匹配的目的网络。如果使用链路状态协议,则每一个路由器必须维持一个很大的链路状态数据库。对于这样大的主干网,计算最短路径花费的时间也太长。另外,由于自治系统各自运行自己选定的内部路由选择协议,并使用本自治系统指明的路径度量,因此,当一条路径通过几个不同的的自治系统时,要想对这样的路径计算出有意义的代价是不可能的。
  • 自治系统之间的路由选择必须考虑有关策略。由于相互连接的网络的性能相差很大,根据最短距离找出来的路径,可能并不合适。再比如自治系统AS1要发送数据报给自治系统AS2,本来最好是经过自治系统AS3,但AS3不愿意让这些数据报通过本自治系统的网络,因为“这是他们的事情,和我没有关系”。因此,自治系统之间的路由选择协议应当允许使用多种路由选择策略,这些策略包括政治、安全或经济方面的考虑。

BGP路由

在一个自治系统中有两种不同功能的路由器,边界路由器(也叫BGP发言人)和内部路由器,一个AS至少要有一个边界路由器和相邻AS的边界路由器相连。
两个自治系统的BGP发言人之间建立eBGP连接,而同一个自治系统中的路由器之间建立iBGP连接。由此可见,BGP协议并非仅运行在AS之间,也运行在AS内部

BGP报文种类

  • OPEN(打开)报文,用来与BGP连接对等端建立关系。
  • UPDATE(更新)报文,用来通告某一路由的信息,以及列出要撤销的路由
  • KEEPALIVE(保活)报文,用来周期性地证实与对等端的连通性。
  • NOTIFICATION(通知)报文,用来发送检测到的差错。

不同路由选择协议的比较

BGP是一种路径向量路由选择协议,他和RIP、PSPF之间的区别如下:

  • 路径矢量路由协议(path-vector routing protocol )是一种网络路由协议,它维护动态更新的路径信息。通过网络循环并返回到同一节点的更新很容易被检测和丢弃。该算法有时用于 Bellman–Ford algorithm路由算法,以避免“数到无穷”问题。它不同于距离矢量路由和链路状态路由。路由表中的每个条目都包含目的地网络、下一个路由器和到达目的地的路径。

  • 距离矢量路由协议(distance-vector routing protocol):数据网络中的距离矢量路由协议根据距离确定数据包的最佳路由。距离向量路由协议通过分组必须通过的路由器数量来衡量距离,一个路由器算作一跳。一些距离矢量协议还考虑了网络延迟和影响给定路由上流量的其他因素。为了确定跨网络的最佳路由,在其上实现了距离矢量协议的路由器相互交换信息,通常是路由表加上目的地网络的跳跃计数,以及可能的其他交通信息。距离向量路由协议还要求路由器定期通知其邻居网络拓扑变化。距离矢量路由协议使用Bellman-Ford算法和Ford-Fulkerson算法来计算最佳路由。

  • 链路状态路由协议(Link-state routing protocols):是分组交换网络中用于计算机通信的两类主要路由协议之一,另一类是距离矢量路由协议。链路状态路由协议的例子包括开放最短路径优先(OSPF)和中间系统到中间系统(IS-IS)。链路状态协议由网络中的每个交换节点(即准备转发数据包的节点;在互联网中,这些被称为路由器)执行。

链路状态路由的基本概念是,每个节点以图的形式构建到网络的连接映射,显示哪些节点连接到哪些其他节点。然后,每个节点独立计算从它到网络中每个可能目的地的下一个最佳逻辑路径。然后,每个最佳路径集合将形成每个节点的路由表。这与距离矢量路由协议形成鲜明对比,距离矢量路由协议的工作原理是让每个节点与其邻居共享其路由表,在链路状态协议中,节点之间传递的唯一信息与连接性有关。链路状态算法有时被非正式地描述为每个路由器,“向世界讲述它的邻居”

iBGP和IGP的区别

iBGP是内部边界网关协议,是要告诉结点去外部的结点应该怎么走,应该找哪个网关、怎么找网关。而IGP是内部网关协议,是一个自治系统内部使用的网关协议,包含OSPF、RIP等。是要告诉结点到每个内部结点应该怎么走。

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

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

相关文章

requests模块 - get

1、Requests 请求常用url:请求的 url 地址,接口文档标注的接口请求地址。 params:请求数据中的链接,常见的一个 get 请求,请求参数都是在 url 地址中。 data:请求数据,参数表单的数据格式。 json:接口常见的数据请求格式。 headers:请求头信息,http 请求中,比如说编…

Redis 必知概念

Redis 为什么快基于内存实现:Redis 将数据存储在内存中,读写操作不会受到磁盘 IO 速度限制; CPU 不是 Redis 的瓶颈,Redis 的瓶颈在于机器内存的大小或者网络带宽I/O多路复用模型的使用:Redis 线程不会阻塞在某一个特定的客户端请求处理上; 可以同时和多个客户端连接并处…

用sdkman管理多个jdk切换

前言 最近项目前后端进行升级,需要在jdk8和jdk17两个版本切换。最简单的是通过手动切换,但切换过程太繁琐,修改环境变量,达到切换目的。于是尝试其它解决方案,最终确实使用sdkman工具。sdkman 是一款面向Java开发者的命令行工具,旨在简化操作系统上SDKs的管理。支持跨平台…

20242822《Linux内核原理与分析》第三周作业

张晓攀+原创作品转载请注明出处+《Linux内核分析》MOOC课程https://mooc.study.163.com/course/1000029000 一、实验楼上实验二——mykernel实验指导(操作系统是如何工作的) 1.使用实验楼的虚拟机打开shell输入所给命令这段代码的意思是应用一个补丁文件到Linux内核源代码,配…

正义使者其五

最正义的一集\(\Huge{能参加高校校园行,好!}\)

2024-2025-1 20241407《计算机基础与程序设计》第三周学习总结

这个作业属于哪个课程 2024-2025-1计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第三周作业这个作业的目标 学习数字分类与计数法、位置计数法、进制转换、模拟数据与数字数据、压缩与解压、数字化、信息安全作业正文 https://www.cnblogs.com/wang…

TowardsDataScience-博客中文翻译-2019-三十五-

TowardsDataScience 博客中文翻译 2019(三十五)原文:TowardsDataScience Blog 协议:CC BY-NC-SA 4.0如何保护云中的健康数据原文:https://towardsdatascience.com/how-to-secure-health-data-in-the-cloud-541fbdad811a?source=collection_archive---------16-----------…

TowardsDataScience-博客中文翻译-2019-三十三-

TowardsDataScience 博客中文翻译 2019(三十三)原文:TowardsDataScience Blog 协议:CC BY-NC-SA 4.0如何用 Python 编写公平抛硬币的代码原文:https://towardsdatascience.com/how-to-code-a-fair-coin-flip-in-python-d54312f33da9?source=collection_archive---------7…