计算机网络 —— 路由协议:RIP、OSPF、BGP、MPLS

路由协议

    • 1. 定义
    • 2. IGP
      • 2.1 RIP
      • 2.2 OSPF
    • 3. BGP
    • 4. MPLS

1. 定义

互联网中需要通过路由将数据发送至目标主机。

路由器根据**路由控制表(RoutingTable)**转发数据包,它根据所收到的数据包中目标主机的IP地址与路由控制表的比较得出下一个应该接收的路由器。

(1)静态路由与动态路由

静态路由是指事先设置好路由器和主机中并将路由信息固定的一种方法,通常是由使用者手工操作完成的。

而动态路由是指让路由协议在运行过程中自动地设置路由控制信息的一种方法。动态路中,路由器根据设置的路由协议给相邻路由器发送自己已知的网络连接信息,而这些信息又像接力一样依次传递给其他路由器,直至整个网络都了解时,路由控制表也就制作完成了。

(2)路由控制范围

根据路由控制的范围,由协议大致分为两大类:

  • 外部网关协议EGP,Exterior Gateway Protocol
  • 内部网关协议IGP,Interior Gateway Protocol)

(3)路由算法

路由控制有各种各样的算法,其中最具代表性的有两种是:

  • 距离向量(Distance-Vector)算法
  • 链路状态(Link-State)算法

距离向量算法(DV)是指根据距离(代价)和方向决定目标网络或目标主机位置的一种方法。该方法中,每个路由器掌握的信息都不相同。

在这里插入图片描述
链路状态算法是路由器在了解网络整体连接状态的基础上生成路由控制表的一种方法。该方法中,每个路由器必须保持同样的信息才能进行正确的路由选择。

在这里插入图片描述
(4)主要协议

路由协议名下一层协议方式适用范围循环检测
RIPUDP距离向量域内不可以
OSFPIP链路状态域内可以
BGPTCP路径向量对外连接可以

2. IGP

2.1 RIP

(1)定义

路由信息协议(RIP,Routing Information Protocol)是一种较为简单的内部网关协议(IGP,Interior Gateway Protocol),包括RIP-1和RIP-2两个版本。

RIP是一种基于距离矢量(DV)算法的协议,它使用跳数Hop Count)作为度量来衡量到达目的网络的距离。通过UDP报文进行路由信息的交换,使用的端口号为520

RIP主要应用于规模较小的网络中,例如校园网以及结构较简单的地区性网络。

(2)工作原理

广播路由控制信息
在这里插入图片描述
根据距离向量确定路由信息
在这里插入图片描述

2.2 OSPF

(1)定义

开放式最短路径优先OSPF,Open Shortest Path First)是IETF根据中间系统到中间系统的路由选择协议(IS-IS,Intermediate System to Intermediate System Intra- Domain routing information exchange protocol)开发的一个基于链路状态内部网关协议(Interior Gateway Protocol)。

目前针对IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用OSPF Version 3(RFC2740)。

(2)工作原理

OSPF网络中,每台路由器根据自己周围的网络拓扑结构生成链路状态通告LSA,Link State Advertisement),并通过更新报文将LSA发送给网络中的其它路由器。

每台路由器都通过链路状态数据库LSDB,Link State DataBase)掌握全网的拓扑结构。

每台路由器都会收集其它路由器发来的LSA,所有的LSA放在一起便组成了链路状态数据库LSDB。LSA是对路由器周围网络拓扑结构的描述,LSDB则是对整个自治系统的网络拓扑结构的描述。路由器将LSDB转换成一张带权的有向图,这张图便是对整个网络拓扑结构的真实反映。在网络拓扑稳定的情况下,各个路由器得到的有向图是完全相同的。

在这里插入图片描述
(3)报文类型

类型报文名称功 能
1问候(HELLO)确认相邻路由器、确定指定路由器
2数据库描述(Database Description)链路状态数据库的摘要信息
3链路状态请求(LinkState Request )请求从数据库中获取链路状态信息
4链路状态更新(Link State Update)更新链路状态数据库中的链路状态信息
5链路状态确认应答(Link State Acknowledgement )链路状态信息更新的确认应答

(4)工作机制

OSPF的运行机制包括以下5个步骤:

  • 通过交互Hello报文形成邻居关系

路由器运行OSPF协议后,会从所有启动OSPF协议的接口上发送Hello报文。如果两台路由器共享一条公共数据链路,并且能够成功协商各自Hello报文中所指定的某些参数,就能形成邻居关系。
图1 通过交互Hello报文形成邻居关系

  • 通过泛洪LSA通告链路状态信息

形成邻居关系的路由器之间进一步交互LSA形成邻接关系。每台路由器根据自己周围的网络拓扑结构生成LSA,LSA描述了路由器所有的链路、接口、邻居及链路状态等信息,路由器通过交互这些链路信息来了解整个网络的拓扑信息。
在这里插入图片描述

  • 通过组建LSDB形成带权有向图

通过LSA的泛洪,路由器会把收到的LSA汇总记录在LSDB中。最终,所有路由器都会形成同样的LSDB,如图3所示。LSA是对路由器周围网络拓扑结构的描述,而LSDB则是对整个自治系统的网络拓扑结构的描述,LSDB是LSA的汇总。

在这里插入图片描述

  • 通过SPF算法计算并形成路由

当LSDB同步完成之后,每一台路由器都将以其自身为根,使用SPF算法来计算一个无环路的拓扑图来描述它所知道的到达每一个目的地的最短路径(最小的路径代价)。这个拓扑图就是最短路径树,有了这棵树,路由器就能知道到达自治系统中各个节点的最优路径。
图4 通过SPF算法计算并形成路由

  • 维护和更新路由表

根据SPF算法得出最短路径树后,每台路由器将计算得出的最短路径加载到OSPF路由表形成指导数据转发的路由表项,并且实时更新。同时,邻居之间交互Hello报文进行保活,维持邻居关系或邻接关系,并且周期性地重传LSA。

在这里插入图片描述

3. BGP

(1)定义

边界网关协议BGP,Border Gateway Protocol)是一种用来在路由选择域之间交换网络层可达性信息(NLRI,Network Layer Reachability Information)的路由选择协议,当前使用的版本是BGP-4。

Internet是一个由多个自治系统AS,Autonomous System)相互连接构成的大网络,BGP作为事实上的Internet外部路由协议标准,被广泛应用于ISP(Internet Service Provider)之间,连接不同组织机构(自治系统)。

(2)AS

自治系统AS,Autonomous System)指的是一组在统一行政管理下且遵循特定路由策略的互联网协议(IP)前缀集合。

简单来说,AS是一个大型网络或网络组,它们之间遵循着统一的路由策略,自治系统又被称为路由选择域(routing domain)。

互联网是由一个又一个的自治系统AS组成,每个接入互联网的计算机或设备都归属于某个AS。

AS必须具有一个公开且正式登记的自治系统编号ASN),ASN由互联网地址分派机构IANA, Internet Assigned Numbers Authority)统一管理。
在这里插入图片描述

ASN分为16位和32位两种类型:2007年以前,所有的ASN均为16位,范围从1至65,535。随着数量的耗尽——类似于IPv4地址——引入了32位的ASN,其范围从65,536扩展到4,294,967,295。

截止目前,全球一共分配了191626个as自治系统号,中国到目前有3,236多个自治系统。

在这里插入图片描述

全球的自治系统编号由互联网编号分配局(IANA)进行管理,并由五个地区互联网注册处负责分配。

  • 非洲网络信息中心(AFRINIC):非洲
  • 亚太网络信息中心(APNIC):亚洲和太平洋地区
  • 北美互联网注册处(ARIN):加拿大、美国及部分加勒比海岛屿
  • 拉丁美洲和加勒比网络信息中心(LACNIC):拉丁美洲和加勒比地区
  • 欧洲IP网络协调中心(RIPE NCC):欧洲、中东和中亚

(3)BGP报文中的角色

  • Speaker:发送BGP报文的路由设备称为BGP发言者(Speaker),它接收或产生新的路由信息,并发布(Advertise)给其它BGP Speaker。当BGP Speaker收到来自其它AS的新路由时,如果该路由比当前已知路由更优、或者当前还没有该路由,它就把这条路由发布给所有其他BGP Speaker(发布该路由的BGP Speaker除外)。
  • Peer:相互交换报文的BGP Speaker之间互称对等体(Peer)。

BGP扬声器为了在 AS之间交换 BGP信息,必须与所有AS建立对等的BGP连接。BGP则基于AS之间的合约进行数据包的转发。BGP一般选择AS 数最少的路径,不过仍然要遵循各个AS之间签约的细节进行更细粒度的路由选择。

BGP中数据包送达目标网络时,会生成一个中途经过所有AS的编号列表,叫做AS路径信息访问列表(ASPathList)。ASPathList不仅包含转发方向和距离,还涵盖了途径所有AS的编号。BGP这种根据所要经过的路径信息访问列表进行路由控制的协议属于路径向量(PathVector)型协议。

(4)BGP的报文

BGP的运行是通过报文驱动的,共有Open、Update、Notification、Keepalive和Route-refresh五种报文类型。

  • Open报文:是TCP连接建立后发送的第一个报文,用于建立BGP对等体之间的连接关系。对等体在接收到Open报文并协商成功后,将发送Keepalive报文确认并保持连接的有效性。确认后,对等体间可以进行Update、Notification、Keepalive和Route-refresh报文的交换。
  • Update报文:用于在对等体之间交换路由信息。Update报文可以发布多条属性相同的可达路由信息,也可以撤销多条不可达路由信息。
  • Notification报文:当BGP检测到错误状态时,就向对等体发出Notification报文,之后BGP连接会立即中断。
  • Keepalive报文:BGP会周期性地向对等体发出Keepalive报文,用来保持连接的有效性。
  • Route-refresh报文:Route-refresh报文用来请求对等体重新发送所有的可达路由信息。

(5)BGP处理过程

BGP的传输层协议是TCP协议,所以在BGP对等体建立之前,对等体之间首先进行TCP连接。BGP邻居间会通过Open报文协商相关参数,建立起BGP对等体关系。

建立连接后,BGP邻居之间交换整个BGP路由表。BGP会发送Keepalive报文来维持邻居间的BGP连接,BGP协议不会定期更新路由表,但当BGP路由发生变化时,会通过Update报文增量地更新路由表。当BGP检测到网络中的错误状态时(例如收到错误报文时),BGP会发送Notification报文进行报错,BGP连接会随即中断。

在这里插入图片描述
(6)BGP有限状态机

BGP有限状态机共有六种状态,分别是IdleConnectActiveOpen-SentOpen-ConfirmEstablished

在BGP对等体建立的过程中,通常可见的三个状态是:Idle、Active、Established。

  • Idle状态下,BGP拒绝任何进入的连接请求,是BGP初始状态。
  • Connect状态下,BGP等待TCP连接的建立完成后再决定后续操作。
  • Active状态下,BGP将尝试进行TCP连接的建立,是BGP的中间状态。
  • Open-Sent状态下,BGP等待对等体的Open报文。
  • Open-Confirm状态下,BGP等待一个Notification报文或Keepalive报文。
  • Established状态下,BGP对等体间可以交换Update报文、Route-refresh报文、Keepalive报文和Notification报文。

BGP对等体双方的状态必须都为Established,BGP邻居关系才能成立,双方通过Update报文交换路由信息。

在这里插入图片描述

4. MPLS

(1)定义

多协议标签交换(MPLS,Multi-Protocol Label Switching)是由IETF 提出的一种在IP骨干网上利用标签来指导数据报文高速转发的协议。

MPLS位于TCP/IP协议栈中的链路层和网络层之间,用于向IP层提供连接服务,同时又从链路层得到服务。相对于传统的IP路由方式,MPLS提供了一种新的网络交换方式,它将IP地址映射为简短且长度固定、只具有本地意义的标签以标签交换替代IP查表,从而显著提升转发效率。

MPLS的标签转发本质上是一种隧道技术,可以在IP网络中构筑一条逻辑上的隧道,而且MPLS兼容不同的网络层和链路层协议,因此,MPLS可以很好的为各种L2VPN、L3VPN以及EVPN业务提供公网隧道服务。

在这里插入图片描述
(2)工作原理

MPLS的实现原理是指:转发等价类FEC,Forwarding Equivalence Class)分配标签来建立标签交换路径LSP,Label Switched Path

MPLS是一种分类转发技术,它将具有相同转发处理方式的数据分组归为一类,称为转发等价类FEC,Forwarding Equivalence Class)。MPLS对相同FEC的数据分组采取完全相同的处理方式。

FEC的划分方式非常灵活,可以是源地址、目的地址、源端口、目的端口、协议种类、业务类型等要素的任意组合。例如,在采用最长匹配算法的IP路由转发中,去往同一个目的地址的所有报文就是一个FEC。

标签交换路径LSP,Label Switched Path)是指属于同一FEC的报文(即封装了MPLS标签的报文)在MPLS域内转发所经过的路径。

在这里插入图片描述
(3)MPLS标签

MPLS标签是一个短而定长的、只具有本地意义的标识符,用于唯一标识一个分组所属的FEC。

在这里插入图片描述
标签共有4个域:

  • Label:20bit,标签值域。
  • Exp:3bit,用于扩展。现在通常用做CoS(Class of Service),其作用与Ethernet802.1p的作用类似。
  • BoS:1bit,栈底标识。MPLS支持多层标签,即标签嵌套。S值为1时表明为最底层标签。
  • TTL:8bit,和IP分组中的TTL(Time To Live)意义相同。

MPLS标签的基本操作包括:

  • Push(标签压入):指当IP报文进入MPLS域时,MPLS边界设备在报文二层首部和IP首部之间插入一个新标签;或者MPLS中间设备根据需要,在标签栈顶增加一个新的标签(即标签嵌套封装)。
  • Swap(标签交换):当报文在MPLS域内转发时,根据标签转发表,用下一跳分配的标签,替换MPLS报文的栈顶标签。
  • Pop(标签弹出):当报文离开MPLS域时,将MPLS报文的标签去掉;或者MPLS倒数第二跳的节点处去掉栈顶标签,减少标签栈中的标签数目。

在这里插入图片描述

(4)MPLS网络主要包含以下要素:

MPLS网络主要包含以下要素:

  • 支持MPLS功能的网络设备称为标签交换路由器LSR,Label Switching Router),它是MPLS网络的基本组成单元。由一系列连续的LSR构成的网络区域称为MPLS域。
  • MPLS域内部的LSR称为Core LSR,如果一个LSR的相邻节点都运行MPLS,则该LSR就是Core LSR。
  • 位于MPLS域边缘、连接其它网络的LSR称为标签边缘路由器(LER,Label Edge Router),如果一个LSR有一个或多个不运行MPLS的相邻节点,那么该LSR就是LER。

在这里插入图片描述
在MPLS网络中,任何两个LER之间都可以建立LSP,用来转发进入MPLS域的报文,中间可途径若干个Core LSR。因此,一条LSP的Ingress和Egress都是LER,而Transit是Core LSR。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端通过ResizeObserver来监听dom大小动态渲染echarts

export const GlobalResizeObserver (function () {const ATTR_NAME global-resizeobserver-keyconst attrValueToCallback {}function antiShake(fn, delay, immediate false) {let timer null//不能用箭头函数return function () {//在时间内重复调用的时候需要清空之前…

常见的反爬手段和解决思路(爬虫与反爬虫)

常见的反爬手段和解决思路(爬虫与反爬虫) 学习目标1 服务器反爬的原因2 服务器长反什么样的爬虫(1)十分低级的应届毕业生(2)十分低级的创业小公司(3)不小心写错了没人去停止的失控小…

firewalld(2)安装、配置文件、规则查询

安装firewalld 我使用的操作系统是debian 12,并没有安装firewalld。 通过apt install firewalld安装firewalld firewalld 本身是一个服务(firewalld.service),可以通过 systemctl 进行启动、停止和重启,而iptables 本身并不是一个服务,而是一个用户空间工具,被用来配置底…

计算机人说学校-北京理工大学-计算机方向

1. 专长、特点、特色 北京理工大学(北理工)的计算机专业同样具有显著的优势和特点: 学术水平高:作为一所985高校,北理工在计算机科学与技术以及人工智能领域都有着较高的学术水平和教学资源。研究方向广泛&#xff1…

并发编程基础概念

相关概念 并行 并行是指同一个时刻,多个任务同时进行。只有在多核CPU下才会发生。 并发 并发是指单个CPU在不同任务之间来换切换工作,但是同一时刻只有一个任务在工作。由于CPU的切换速度很快,给人的感受是多个任务在一起运行。 串行 串行…

一年前 LLM AGI 碎片化思考与回顾系列⑧ · 穿越SystemⅡ未知之境

阅读提示: 本篇系列内容的是建立于自己过去一年在以LLM为代表的AIGC快速发展浪潮中结合学术界与产业界创新与进展的一些碎片化思考并记录最终沉淀完成,在内容上,与不久前刚刚完稿的那篇10万字文章 「融合RL与LLM思想,探寻世界模型…

期末C语言易错知识点整理

1.在定义多维数组时,除了最左边的维度,其余的维度必须明确指定大小 2.int m[1][4]{4}; 定义的是一个 1 行 4 列的二维数组,初始化时提供了一个元素 4,其余元素默认初始化为 0,因此是正确的。 3.二维数组 a[3][6] 中的索…

PKG打包sqlite3项目,如何添加node_sqlite3.node依赖

项目地址:https://github.com/helson-lin/pkg_sqlite 在ffandown项目内,由于项目使用了sqlite3,在跨平台打包的时候,除了本机外其他平台打包之后运行缺少node_sqlite3.node依赖。 为了解决问题,百度了很久&#xff0c…

分享一个导出数据到 Excel 的解决方案

前言 许多业务场景下需要处理和分析大量的数据,而 Excel 是广泛使用的文件格式,几乎所有人都能打开和查看 Excel 文件,因此将数据库中的原始数据处理后,导出到 Excel 是一个很常见的功能,对于数据管理、分析、备份、展…

【代码随想录】【算法训练营】【第45天】 [198]打家劫舍 [213]打家劫舍II [337]打家劫舍III

前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day 45,周五,坚持不了一点~ 题目详情 [198] 打家劫舍 题目描述 198 打家劫舍 解题思路 前提:相邻两房屋不能连续盗窃 思路:动态规划, dp[i]: [0,…

【C语言】--操作符详解

🌭个人主页: 起名字真南 🍿个人专栏:【数据结构初阶】 【C语言】 目录 1 算术操作符1.1 和 -1.2 *1.3 /1.4 % 2 赋值操作符 :2.1 复合赋值符 3 单目操作符3.1 和- - 4 强制类型转换5 printf 和 scanf5.1 printf5.1.1 基本用法5.1.2 占位符5.…

Navicat连接Oracle出现Oracle library is not loaded的解决方法

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 使用Navicat链接Oracle的时候,出现如下提示:Oracle library is not loaded. 截图如下所示: 2. 原理分析 通常是由于缺少必需的 Oracle 客户端库或环境变量未正确配置所致 还有一种情况是 32位与64位的不匹配:Navica…

【数据可视化技术】1、如何使用Matplotlib和Seaborn库在Python中绘制热力图

热力图是一种数据可视化技术,可以显示变量之间的相关性。这个代码段是数据分析和可视化的常用方法,特别适合于展示变量之间的相关性,对于数据科学和机器学习项目非常有帮助。 1、 导入必要的库 首先,确保你已经安装了matplotlib…

javaSE知识点整理总结(上)

目录 一、面向对象 1. 类、对象、方法 2.面向对象三大特征 (1)封装 (2)继承 (3)多态 二、常用类 1.Object类 2.Array类 3.基本数据类型包装类 4.String类 5.StringBuffer类 6.Math类 7.Random…

WAIC2024 | 华院计算邀您共赴2024年世界人工智能大会,见证未来科技革新

在智能时代的浪潮汹涌澎湃之际,算法已成为推动社会进步的核心力量。作为中国认知智能技术的领军企业,华院计算在人工智能的广阔天地中,不断探索、创新,致力于将算法的潜力发挥到极致。在过去的时日里,华院计算不断探索…

Mac可以读取NTFS吗 Mac NTFS软件哪个好 mac ntfs读写工具免费

在跨操作系统环境下使用外部存储设备时,特别是当Windows系统的U盘被连接到Mac电脑时,常常会遇到文件系统兼容性的问题。由于Mac OS原生并不完全支持对NTFS格式磁盘的读写操作,导致用户无法直接在Mac上向NTFS格式的U盘或硬盘写入数据。下面我们…

SpringBoot:使用Spring Batch实现批处理任务

引言 在企业级应用中,批处理任务是不可或缺的一部分。它们通常用于处理大量数据,如数据迁移、数据清洗、生成报告等。Spring Batch是Spring框架的一部分,专为批处理任务设计,提供了简化的配置和强大的功能。本文将介绍如何使用Spr…

排序(冒泡排序、选择排序、插入排序、希尔排序)-->深度剖析(一)

欢迎来到我的Blog,点击关注哦💕 前言 排序是一种基本的数据处理操作,它涉及将一系列项目重新排列,以便按照指定的标准(通常是数值大小)进行排序。在C语言中,排序算法是用来对元素进行排序的一系…

【高性能服务器】服务器概述

🔥博客主页: 我要成为C领域大神🎥系列专栏:【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 ​ 服务器概述 服…

DDMA信号处理以及数据处理的流程---聚类

Hello,大家好,我是Xiaojie,好久不见,欢迎大家能够和Xiaojie一起学习毫米波雷达知识,Xiaojie准备连载一个系列的文章—DDMA信号处理以及数据处理的流程,本系列文章将从目标生成、信号仿真、测距、测速、cfar检测、测角、目标聚类、目标跟踪这几个模块逐步介绍,这个系列的…