计算机网络 —— 路由协议: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.mzph.cn/diannao/39188.shtml

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

相关文章

盛元广通打造智慧校园实验室安全管理系统

盛元广通智慧校园实验室安全管理系统以安全为重点,构建由学校、二级单位、实验室组成的三级联动的实验室安全多级管理体系、多类用户角色,内置教育部标准检查表,支撑实验室相关业务过程的智慧管理。实现通过PC端/手机移动端开展检查工作、手机…

将exe文件添加到注册表中,实现开机时自动运行

目录 一、前言 二、代码 三、使用步骤 1.编译生成exe文件、 2.以管理员身份运行代码 3.打开注册表,验证结果 一、前言 在Windows操作系统中,将exe文件的路径添加到注册表下,主要用于实现程序的开机自动运行功能。 注册表路径为&#xf…

Python中的并发编程(5)PyQt 多线程

PyQt 多线程 1 卡住的计时器 我们定义了一个计时器,每秒钟更新一次显示的数字。此外我们定义了一个耗时5秒的任务oh_no,和按钮“危险”绑定。 当我们点击“危险”按钮时,程序去执行oh_no,导致显示停止更新了。 import sys im…

Kile钟优化等级讲解

这里直接说说kile的优化等级: 这里有4个等级,分别为:-O0、-O1、-O2、-O3 为什么要进行编译优化? 主要目的: 1. 提高代码执行的速度; 2. 减少内存占用; 3. 降低能耗,延长电池寿命; 4. 消除代码中冗余和不必要的代码,提高程序稳定性和可靠性。 Kile等级描述: -O0:这…

leetcode-21-回溯-全排列及其去重

一、[46]全排列 给定一个 没有重复 数字的序列,返回其所有可能的全排列。 示例: 输入: [1,2,3]输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 其中,不需要使用startIndex used数组,其实就是记录此时path里都有哪些元素…

【图论】200. 岛屿问题

200. 岛屿问题 难度:中等 力扣地址:https://leetcode.cn/studyplan/top-100-liked/ 问题描述 给你一个由 1(陆地)和 0(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围&…

一个专为Android平台设计的高度可定制的日历库

大家好,今天给大家分享一个高度可定制的日历库kizitonwose/Calendar。 Calendar专为Android平台设计,支持RecyclerView和Compose框架。它提供了丰富的功能,允许开发者根据需求定制日历的外观和功能。 项目介绍 此库是开发Android应用时&…

大型语言模型评估调查

原文链接:A Survey on Evaluation of Large Language Models | ACM Transactions on Intelligent Systems and Technology 本文从三个关键维度:评价什么、在哪里评价和如何评价,对这些 LLMs 评价方法进行了全面回顾。 首先,我们…

第十四届蓝桥杯省赛C++A组F题【买瓜】题解(AC)

70pts 题目要求我们在给定的瓜中选择一些瓜,可以选择将瓜劈成两半,使得最后的总重量恰好等于 m m m。我们的目标是求出至少需要劈多少个瓜。 首先,我们注意到每个瓜的重量最多为 1 0 9 10^9 109,而求和的重量 m m m 也最多为…

用OpenAI接口给女朋友手搓AI小助理,她说要奖励我,结果……

前言 最近,我那财经系的小女友迎来了考试周,她的复习资料已经堆得像珠穆朗玛峰一样高。压力山大的她不断让我帮她整理这些资料,还频频向我倾诉她的苦水。虽然我自己也挺忙的,但为了爱,我只能忍痛扛起这重担。。。为了…

【C++】STL-priority_queue

目录 1、priority_queue的使用 2、实现没有仿函数的优先级队列 3、实现有仿函数的优先级队列 3.1 仿函数 3.2 真正的优先级队列 3.3 优先级队列放自定义类型 1、priority_queue的使用 priority_queue是优先级队列,是一个容器适配器,不满足先进先出…

Spring Boot配置文件properties/yml/yaml

一、Spring Boot配置文件简介 (1)名字必须为application,否则无法识别。后缀有三种文件类型: properties/yml/yaml,但是yml和yaml使用方法相同 (2) Spring Boot 项⽬默认的配置文件为 properties &#xff…

【单片机毕业设计选题24041】-基于STM32的水质检测系统

系统功能: 系统上电后显示“欢迎使用水质检测系统请稍后”两秒后进入正常显示页面。 第一页面第一行显示“系统状态信息”,第二行显示温度和PH值信息,第三行显示 浑浊度信息,第四行显示TDS值信息。 第一页面下的按键操作: 短…

SSE代替轮询?

什么是 SSE SSE(Server-Sent Events,服务器发送事件),为特定目的而扩展的 HTTP 协议,用于实现服务器向客户端推送实时数据的单向通信。如果连接断开,浏览器会自动重连,传输的数据基于文本格式。…

[python][Anaconda]使用jupyter打开F盘或其他盘文件

jupyter有一个非常不好的体验,就是不能在界面切换到其他盘来打开文件。 使用它,比较死板的操作是要先进入文件目录,再运行jupyter。 以Windows的Anaconda安装了jupyter lab或jupyter notebook为例。 1,先运行Anaconda Prompt 2&…

基于OpenCV与Keras的停车场车位自动识别系统

本项目旨在利用计算机视觉技术和深度学习算法,实现对停车场车位状态的实时自动识别。通过摄像头监控停车场内部,系统能够高效准确地辨认车位是否被占用,为车主提供实时的空闲车位信息,同时为停车场管理者提供智能化的车位管理工具…

网优小插件_基于chrome浏览器Automa插件编写抓取物业点信息小工具

日常在无线网络优化,经常需要提取某一地市,某个属性物业点信息(物业点名称、地址、及经纬度信息),本文介绍基于chrome浏览器Automat插件开发自动化工具,利用百度地图经纬度拾取网资源开发一个抓取物业点基本…

为什么这几年参加PMP考试的人越来越多

参加PMP认证的人越来越多的原因我认为和社会发展、职场竞争、个人提升等等方面有着不小的关系。国际认证与国内认证的性质、发展途径会有一些区别,PMP引进到中国二十余年,报考人数持增长状态也是正常的。 具体可以从下面这几个点来展开论述。 市场竞争…

Rakis: 免费基于 P2P 的去中心化的大模型

是一个开源的,完全在浏览器中运行的去中心化 AI 推理网络,用户无需服务器,打开即可通过点对点网络使用 Llama-3、Mistral、Gemma-2b 等最新开源模型。 你可以通过右上角的 Scale Worker ,下载好模型后挂机就能作为节点加入到这个…

JVM线上监控环境搭建Grafana+Prometheus+Micrometer

架构图 一: SpringBoot自带监控Actuator SpringBoot自带监控功能Actuator&#xff0c;可以帮助实现对程序内部运行情况监控&#xff0c;比如监控内存状况、CPU、Bean加载情况、配置属性、日志信息、线程情况等。 使用步骤&#xff1a; 1. 导入依赖坐标 <dependency><…