当前位置: 首页 > news >正文

计算机网络 —— 路由协议: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。

相关文章:

  • 【基础算法总结】分治—快排
  • 《数据仓库与数据挖掘》 总复习
  • 小试牛刀-Solana合约账户详解
  • JS实现当前元素的同级元素 以及父元素的同级元素
  • k8s流控平台apiserver详解
  • xtrabackup 备份报错“too many open files“ 突然消失
  • Hive数据倾斜--处理方法
  • 数据操作10-15题(30 天 Pandas 挑战)
  • Redis面试合集
  • JVM原理(二):JVM之HotSpot虚拟机中对象的创建寻位与定位整体流程
  • 如何取消闪迪Micro SD卡的写保护?这个技巧很有效!
  • 【C语言内存函数】
  • PHP景区旅游多商户版微信小程序系统源码
  • Kafka 管理TCP连接
  • 《妃梦千年》第二十四章:皇后的考验
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 【comparator, comparable】小总结
  • Centos6.8 使用rpm安装mysql5.7
  • CSS中外联样式表代表的含义
  • Javascript Math对象和Date对象常用方法详解
  • JavaScript服务器推送技术之 WebSocket
  • JSDuck 与 AngularJS 融合技巧
  • Linux gpio口使用方法
  • Meteor的表单提交:Form
  • tweak 支持第三方库
  • Vue.js源码(2):初探List Rendering
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 高性能JavaScript阅读简记(三)
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 如何编写一个可升级的智能合约
  • 设计模式走一遍---观察者模式
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 算法系列——算法入门之递归分而治之思想的实现
  • 一个SAP顾问在美国的这些年
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • FaaS 的简单实践
  • #Java第九次作业--输入输出流和文件操作
  • #宝哥教你#查看jquery绑定的事件函数
  • (4)事件处理——(7)简单事件(Simple events)
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (分享)自己整理的一些简单awk实用语句
  • (剑指Offer)面试题34:丑数
  • (九)c52学习之旅-定时器
  • (未解决)macOS matplotlib 中文是方框
  • (转)EOS中账户、钱包和密钥的关系
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)shell调试方法
  • (转)关于pipe()的详细解析
  • **PHP分步表单提交思路(分页表单提交)
  • .“空心村”成因分析及解决对策122344
  • .equals()到底是什么意思?
  • .NET Core 成都线下面基会拉开序幕
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)