计算机网络——网络层(多协议标签交换MPLS、软件定义网络SDN)

news2024/11/13 9:33:21

多协议标签交换MPLS

        多协议标签交换MPLS(multiProtocal Label Switching):“多协议”表示在MPLS的上层可以采用多种协议。

        MPLS利用面向连接技术,使每个分组携带一个叫作标签的小整数(这叫作打上标签)。当分组到达交换机时,交换机读取分组的标签,并用标签值来检索分组转发表。这样就比查找路由表来转发分组快得多。

        人们经常把多标签交换MPLS异步传递方式ATM相联系这仅仅是因为它们都采用了面向连接的工作方式。

        MPLS具有以下三个方面的特点:

  1. 面向连接的服务质量
  2. 支持流量工程,均衡网络负载
  3. 有效支持虚拟专用网    

        

MPLS的工作原理 

        在传统IP网络中,分组传输有着很大的不方便:

  • 如每到达一个路由器,都必须查找转发表,并按照“最长前缀匹配”找到下一跳地址;
  • 当网络很大时,查找大量转发表很耗费时间;
  • 在突发通信量,往往还会使缓存溢出,引起分组丢失、传输延时增大和服务质量下降。

MPLS域和LSR路由器

        MPLS 域(MPLS domain)是指该域中有许多彼此相邻的路由器,并且所有的路由器都是支持 MPLS技术的标签交换路由器LSR(Label Switching Router)。

        LSR同时具有标签交换路由选择这两种功能:标签交换功能是为了快速转发,但在这之前LSR需要先使用路由选择功能构造转发表。


        MPLS的一个重要特点就是在MPLS 域的入口处,给每一个IP数据报打上固定长度“标签”,然后对打上标签的IP数据报用硬件进行转发,这就使得IP数据报转发的过程大大地加快了。

        采用硬件技术对打上标签的IP数据报进行转发就称为标签交换“交换”也表示在转发时不再上升到第三层查找转发表,而是根据标签在第二层(链路层)用硬件进行转发。

        MPLS可使用多种链路层协议,如 PPP、以太网、ATM 以及帧中继等。

基本工作流程 

        (1) MPLS域中的各LSR使用专门的标签分配协议LDP(Label Distribution Protocol)交换报文,并找出和特定标签相对应的路径,即标签交换路径LSP (Label Switched Path)。例如在图中的路径A→B→C→D。各LSR根据这些路径构造出转发表。这个过程和路由器构造自己的路由表相似

        但应注意的是,MPLS是面向连接的,因为在标签交换路径上的第一个LSR就根据IP数据报的初始标签确定了整个的标签交换路径,就像一条虚连接一样。

        (2)当一个IP数据报进入到MPLS域时,MPLS入口节点(ingress node)就给它打上标签(后面我们就会知道,这实际上是插入一个MPLS首部),并按照转发表把它转发给下一个LSR。以后的所有LSR都按照标签进行转发
        给IP数据报打标签的过程叫作分类(classification)。

  • 严格的第三层(网络层)分类只使用了IP首部中的字段,如源IP地址和目的IP地址等。
  • 大多数运营商实现了第四层(运输层)分类(除了要检查IP首部外,运输层还要检查TCP或UDP首部中的协议端口号)。
  • 而有些运营商则实现了第五层(应用层)分类(更进一步地检查数据报的内部并考虑其有效载荷)。


        (3)由于在全网内统一分配全局标签数值是非常困难的,因此一个标签仅仅在两个标签交换路由器LSR之间才有意义。

        分组每经过一个LSR,LSR就要做两件事:一是转发,二是更换新的标签,即把入标签更换成为出标签。这就叫作标签对换(label swapping)。

        做这两件事所需的数据都已清楚地写在转发表中。举例如下:


        (4)当IP数据报离开MPLS域时,MPLS 出口节点(egress node)就把MPLS的标签去除,把IP数据报交付非 MPLS 的主机或路由器,以后就按照普通的转发方法进行转发。
 

        上述这种“由入口LSR确定进入MPLS域以后的转发路径” 称为显示路由选择,它和互联网中通常使用的“每一个路由器逐跳进行路由选择”有着很大区别。

转发等价类FEC 

         所谓“转发等价类”就是路由器按照同样方式对待的IP数据报的集合。这里“按照同样方式对待”表示从同样接口转发到同样的下一跳地址,并且具有同样服务类别和同样丢弃优先级等。

         FEC的例子是:

  • 目的IP地址与某一个特定IP地址的前缀匹配的IP数据报(这就相当于普通的IP路由器);
  • 所有源地址与目的地址都相同的IP数据报;
  • 具有某种服务质量需求的IP数据报

        入口节点并不是给每一个IP数据报指派一个不同的标签,而是将属于同样FEC的IP数据报都指派同样的标签。FEC和标签是一一对应的关系。

FEC数据均载 

        网络管理员采用自定义的FEC就可以更好地管理网络资源。这种均衡网络负载的做法也称为流量工程TE或者通信量工程 

MPLS首部

         MPLS并不要求下层的网络都使用面向连接的技术。因此一对MPLS路由器之间的物理连接,既可以由一个专用电路组成,也可以使用像以太网这样的网络。

        但是这些网络并不提供打标签的手段,而IPv4 数据报首部也没有多余的位置存放MPLS标签。这就需要一个特殊的封装技术:

MPLS首部位置 

MPLS首部格式 

        “给IP数据报打上标签”其实就是在以太网的帧首部和IP数据报的首部之间插入一个4字节的MPLS首部。具体的标签就在“标签值”这个字段中。 


MPLS 首部共包括以下四个字段:
        (1)标签值:占20 位。由于一个MPLS标签占20 位,因此从理论上讲,在设置MPLS时可以使用标签的所有20位,因而可以同时容纳高达2^{20}个流(即1048576个流)。

        但是,实际上几乎没有哪个 MPLS实例会使用很大数目的流,因为通常需要管理员人工管理和设置每条交换路径。
        (2)试验:占3位,目前保留用于试验。
        (3)S:占1位,S (Stack)表示栈,在有“标签栈”时使用。
        (4)生存时间TTL:占8位,用来防止 MPLS分组在 MPLS域中兜圈子。

新一代MPLS 

        虽然 MPLS能够更快地转发分组,但其有关的控制协议(如 LDP)却比较复杂,其扩展性差,运行维护也较困难。

        协议LDP也无法做到基于时延或带宽等要求的流量调度。为了根据需要灵活地选择流量的转发路径,就还需要再使用资源预留协议RSVP(第八章内容)。

        但RSVP的信令非常复杂,每个节点都要维护一个庞大的链路信息数据库。此外,RSVP不支持等价多路径路由选择ECMP (Equal-CostMultipath Routing),而只会选择一条最优路径进行转发。
 

段路由选择协议SR:

        为了解决上述问题,一种保留了MPLS的主要特点,但更加简单的新的源路由选择协议出现了。这就是段路由选择协议(Segment Routing),简称为SR。

        在SR中,“段(segment)”就是标签,也就是转发指令的一种标识符。SR的工作原理仍然是基于标签交换的,不过现在不需要使用协议LDP,因此简化了设备运行的协议数量。

        SR由源节点为发送的报文指定路径,并将路径转换成有序的段列表(Segment List),即 MPLS标签栈其被封装在分组首部。网络中的其他节点就执行首部中的指令(即标签)进行转发。

有SDN存储器的SR: 

        整个网络设有控制器,也就是SDN 控制器,控制器收集并掌握全网的拓扑信息和链路状态信息,计算出分组应传送的整个路径。

        控制器负责给分组分配SR标签。这些标签指明了分组从源点到终点的路径,当分组到达某个网络节点时,节点就根据分组携带的标签转发到下一个节点。

软件定义网络SDN 

        在SDN中,数据层面中的交换机是由控制层面进行控制的,这种控制是通过openflow协议来实现的。 

        时常有人把SDN与openflow放在一起讨论。我们要注重两者差别。

        SDN:是一种体系结构,一种设计、构建和管理网络的新方法,其要点就是把网络的控制层面和数据层面分离,进而让控制层面利用软件控制数据层面的设备。 

        OpenFlow:可以把协议 OpenFlow 看成是在 SDN体系结构中控制层面和数据层面之间的通信接口它使得控制层面的控制器可以对数据层面中的物理设备或虚拟设备,进行直接访问和操纵。这种控制在逻辑上是集中式的,是基于流的控制。

传统意义的“转发”与SDN的广义转发

传统意义上的数据层面的任务,根据转发表转发分组,转发分组分为以下两个步骤:

  • 进行“匹配”:查找转发表中的网络前缀,进行最长前缀匹配。
  • 执行“动作”:把分组从匹配结果指明的接口转发出去。


SDN的广义转发分为以下两个步骤:

  • 进行“匹配”∶能够对网络体系结构中各层(数据链路层、网络层、运输层)首部中的字段进行匹配。
  • 执行“动作”︰不仅转发分组,还可以负载均衡、重写IP首部(类似NAT路由器中的地址转换)。人为地阻挡或丢弃一些分组(类似防火墙一样)

        在SDN的广义转发中,完成“匹配+动作”的设备并不局限在网络层工作,因此不再称为路由器,而称为“OpenFlow交换机”或“分组交换机”,或更简单地称为“交换机”。

        在SDN中取代传统路由器中转发表的是“流表(Flow Table)"
 

流表 

          在SDN中取代传统路由器中转发表的是“流表(Flow Table)"。因此,流表就是“匹配+动作”的转发表。

        一个流就是穿过网络的一种分组序列,而在此序列中的每个分组都共享分组首部某些字段的值。例如,某个流可以是具有相同源IP地址和目的IP地址的所有分组。

        OpenFlow交换机中的流表是由SDN远程控制器来管理的SDN远程控制器通过一个安全信道,使用OpenFlow协议来管理OpenFlow交换机中的流表。


流表项 

  • 每个OpenFlow交换机必须有一个或多个流表
  • 每一个流表可以包含多个流表项
  • 每个流表项包含三个字段:首部字段值((或称匹配字段)、计数器、动作。

首部字段值

         在OpenFlow交换机中,既可以处理链路层的帧,也可以处理网络层的IP分组和运输层的报文。

计数器 

动作 

类似于指令

SDN的使用场景举例 

简单转发 

 

负载均衡

什么是负载均衡?

         

        为了均衡链路S2和S1的通信量,我们规定如下:

  • 但凡是由H4发往H5,H6的数据分组,其转发路径为S2—S3交换机。
  • 但凡是由H3发往H5,H6的数据分组,其转发路径为S2—S1—S3交换机。

        很显然,基于IP目的地址的转发方法不能实现这种负载均衡;而SDN控制器可以通过设置好S2的流表项进行这项操作。

防火墙设置

         为了避免外来攻击,S2交换机只接受S1交换机发来的分组,通过流表进行如上控制。

SDN体系结构

SDN体系结构四种关键特征 


1.基于流的转发:

        SDN 控制的交换机分布在数据层面中,而分组的转发可以基于网络层、运输层和链路层协议数据单元中的首部字段值进行。

        SDN 的转发规则都精确规定在交换机中的流表中。所有交换机中的流表项,都是由SDN控制器进行计算、管理和安装的。

        这和传统的路由器仅仅根据IP分组的目的地址进行转发,有着很大的区别。


2.数据层面与控制层面分离:

        在传统的转发设备路由器中,其数据层面与控制层面都处在同一个设备中,因此二者耦合得非常紧密。

        但在SDN 中,则把这两个层面分离,使二者不在同一个设备中:

                数据层面有许多相对简单但快速的网络交换机。这些交换机在其流表中执行“匹配+动作”的规则;而控制层面则由若干服务器和相应的软件组成,这些服务器和软件决定并管理这些交换机中的流表。

3.位于数据层面交换机之外的网络控制功能:

        SDN 中的控制层面是用软件实现的,而且软件是处在不同的机器上,并且可能还远离这些网络交换机。

        SDN 控制层面包含两个构件:一个是SDN控制器(也就是网络操作系统),另一个由若干个网络控制应用程序组成。

        SDN 控制器维护准确的网络状态信息(例如,远程链路、交换机和主机的状态):把这些信息提供给运行在控制层面的各种控制应用程序,以及提供一些方法,使得这些应用程序能够对底层的许多网络设备进行监视、编程和控制。


        需要注意的是,图中SDN控制器中只画了一个服务器,但这只是强调在逻辑上是集中控制的。实际上,在控制层面中总是使用多个分散的服务器协调地工作,以便实现可扩展性和高可用性。


4.可编程的网络:

        通过在控制层面的一些网络控制应用程序,使整个网络成为可编程的。

        这些应用程序相当于SDN 控制层面中的“大脑”,SDN 控制器使用这些应用程序,在这些网络设备中指明和控制数据层面。

                例如,路由选择网络控制应用程序能够确定在源点和终点之间的端到端路径(这需要执行某种算法,也需要使用由SDN控制器维护的节点状态和链路状态信息)。

        网络应用程序还可以进行接入控制:即决定哪些分组在进入某个交换机时就必须被阻挡住。此外,网络应用程序在转发分组时还可以执行负载均衡的措施。

SDN控制器的三个层次 

        通信层:位于最下层,其任务是完成SDN控制器与受控的网络设备之间的通信。

        显然,要完成这样的通信,我们必须有一个协议,用来在SDN 控制器与这些设备之间传送信息。此外,这些设备还必须能够向SDN控制器传送在本地观察到的事件。

                (例如,用一个报文指示某条链路正常工作或出了故障断开了,或指示某个设备刚刚接入到网络中,或者某种信号突然出现可以表示某个设备已加电并可以工作)。

        
        网络范围的状态管理层:
位于中间的一层,SDN 控制层面若要做出任何最终的控制决定,就需要让控制器掌握全网的主机、链路、交换机,以及其他受SDN控制的设备。

                (例如,在所有的交换机中配置流表以便进行端到端的转发,或实现负载均衡,或实现某种特殊的防火墙能力)

        交换机的流表中包含有计数器,而网络应用程序需要使用这些计数器的值。因此,这些计数器的值对网络应用程序来说也必须是可用的。

        由于控制层面的最终目的是确定各种被控设备的流表,因此控制器还需要维护这些流表的副本所有上述这些信息构成由SDN控制器维护的网络范围状态。

        到网络控制应用程序层的接口:位于最上方一层,SDN控制器与网络控制应用程序的交互都要通过北接口。

        这个 API 接口允许网络控制应用程序对状态管理层里面的网络状态和流表进行读写操作。

        网络控制应用程序事先已进行了注册,当状态变化的事件出现时,网络控制应用程序把得到的网络事件进行通告,并采取相应的动作

                例如,计算新的最低开销的路径。这一层可以提供不同类型的 API。

                图中的REST (REpresentational State Transfer)即表述性状态传递,是一种针对网络应用的设计和开发方法[W-REST]。

                图中的 Intent是对要进行的操作的一种抽象描述[W-INTENT],可用它在组件之间传递数据。

        目前已经出现了一些开放源代码控制器,或简称为开源控制器(Open Source Controller),最有代表性的就是 OpenDaylight和 ONOS。这里就不再进行讨论了。
         

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

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

相关文章

Linux下终极下载管理器:uGet and aria2

你是否曾在火狐浏览器中点击过下载链接,然后连接中断,不得不从头开始重新下载文件? 这就是 uGet 下载管理器的用武之地。 1)uGet 是一款开源的轻量级下载管理器,适用于 Linux、BSD、Android 和 Windows。有了 uGet&a…

Github 2024-08-08 开源项目日报Top10

根据Github Trendings的统计,今日(2024-08-08统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量TypeScript项目5JavaScript项目3Python项目2C#项目1C++项目1Go项目1免费编程学习平台:freeCodeCamp.org 创建周期:3302 天开发语言:TypeScri…

Linux-入门-02

上节我们讲了如何安装虚拟机,本节课讲一些linux的常用命令,首先我们需要做一些配置,我们的centos的镜像是最小版安装,里面什么也没有,所以我们的linux是不能进行联网的,接下来我们就来一步一步联网 1、配置网络 首先我们需要先使用命令查看ip地址,linux中一切皆文件,只能使用命…

opencascade TopoDS_TShape源码学习

opencascade TopoDS_TShape 前言 TShape 是描述二维或三维空间中一组点的拓扑结构。 拓扑形状是由其他形状组成的结构。这是一个延迟类,用于支持拓扑对象。 TShape 由其可选的域(几何)和组件(带有位置和方向的其他 TShape&#…

德国EKKIF高定五金——不断探索全球新材料、新技术和新生活方式

Ekkif Concept品牌理念 “New life” We have always advocated the new concept and lifestyle of "New life". Our design team adheres to the concept of innovation and originality, constantly exploring new materials, technologies, and lifestyles a…

详细分析Linux中的ss命令基本知识(附Demo)

目录 1. 基本知识2. 基本命令2.1 查套接字2.2 查端口 1. 基本知识 ss 用于在 Linux 系统中显示网络套接字统计信息的命令 是 netstat 命令的现代替代品,提供了更快、更详细的输出是 iproute2 套件的一部分,支持许多高级网络功能 基本的功能如下&#…

html+css 实现hover选择按钮

前言:哈喽,大家好,今天给大家分享htmlcss 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目…

WEB应用(十四)---文件上传

什么是文件上传漏洞 文件上传是Web应用的常见功能,允许用户上传图片、视频及其他文件类型文件。如果用户上传的是木马文件,则服务器就会收到攻击。 对于这个漏洞的练习有一个专门的靶场,即upload-labs,这个的安装可以在windows中使…

使用TLA+形式化验证Go并发程序

Writing is natures way of letting you know how sloppy your thinking is - Guindon 在2024年6月份举办的GopherCon Europe Berlin 2024[1]上,一个叫Raghav Roy的印度程序员(听口音判断的)分享了Using Formal Reasoning to Build Concurrent Go Systems[2]&#x…

JavaScript基础 - 基础

目录 A. 简介 B. 基础用法 一. 使用 二. 输出 C. 语法 D. HTML DOM A. 简介 JavaScript 是一种高级的、解释型的编程语言,主要用于网页开发,以下是它的简介: 一、历史与发展 诞生 JavaScript 于 1995 年由 Netscape 公司的 Brendan …

DataX PostgreSQL 读写支持Geometry类型

这里写目录标题 简要说明依赖代码 简要说明 通过简单修改源码中关于相关的reader、writer和DBUtil工具类,实现表到表之间的Geometry字段类型数据的输送,目前修改仅测试过在postgresql的postgis插件下的Geometry类型可行。 依赖 1.通过gitclone 或者 到…

在Nestjs使用mysql和typeorm

1. 创建项目 nest new nest-mysql-test 2. 添加config 安装 nestjs/config 包 pnpm i --save nestjs/config 添加 .env 文件 DATABASE_HOSTlocalhost DATABASE_PORT3306 DATABASE_USERNAMEroot DATABASE_PASSWORD123456 DATABASE_DBdbtest 创建 config/database.config.…

Gstreamer实现udp帧数据的转发(一)

前言 最近有个项目,要求实现信息分发,大概意思是经过了各种交换机和电台,经过两个信息分发软件实现udp数据的转发,可能包括文本、指令、音视频等数据。 例如:设备1 《---》 设备2(信息分发软件1&#xff09…

兼容性测试详解

目录 前言1. 兼容性测试的定义和重要性1.1 兼容性测试的定义1.2 兼容性测试的重要性 2. 兼容性测试的类型2.1 跨浏览器测试2.1.1 跨浏览器测试的挑战2.1.2 跨浏览器测试的方法 2.2 跨平台测试2.2.1 跨平台测试的挑战2.2.2 跨平台测试的方法 3. 兼容性测试的步骤和策略3.1 测试计…

前端错误日志上报解决方案

前言 项目上线之后,用户如果出现错误(代码报错、资源加载失败以及其他情况),基本上没有办法复现,如果用户出了问题但是不反馈或直接不用了,对开发者或公司来说都是损失。 由于我这个项目比较小&#xff0c…

AI绘画工具介绍:以新奇角度分析与探索AI绘画艺术与技术的交汇点

目录 前言 一、AI绘画工具的前沿技术 1.1 深度学习的进化 1.2 GANs的创新应用 1.3 风格迁移的多样化 1.4 交互式AI绘画的智能化 二、艺术与技术的交汇点 2.1 艺术创作的普及化 2.2 艺术风格的创新 2.3 艺术与科技的深度融合 三、新颖的思考角度 3.1 AI作为艺术创作…

nginx平滑重启和php-fpm平滑重启

https://www.jianshu.com/p/c7809490979ahttp://xn--nginxphp-fpm-dc3k7692b4eb248gffzdlr6cx05cfuhyucca 1.在php-fpm.conf的配置中增加配置,让php-fpm重启前如果存在已经在处理的请求,先处理完再重启: 2.重启命令执行前,先…

【Python】简单爆破破解

暴力破解是一种针对密码的破译方法,通过逐个推算或使用工具批量验证来找到正确的密码。暴力破解是信息安全领域中一个非常重要的话题。在当今数字化时代,个人信息、企业数据和各种网络服务都依赖于密码来保护安全。因此,破解密码成为黑客获取…

熵权法模型(评价类问题)

一. 概念 利用信息熵计算各个指标的权重,从而为多指标的评价类问题提供依据。 指标的变异程度越小,所反映的信息量也越少,所以其对应的权值也应该越低。 指标的变异程度(或称为变异性、波动性):描述了一…

AI智能名片S2B2C商城小程序在社群团购平台产品供应链优化中的应用探索

摘要:在社群团购这一新兴零售模式迅速崛起的背景下,产品供应链的效率和稳定性成为制约其进一步发展的关键因素。特别是在社群团购行业尚处于初步发展阶段的今天,产品资源的稀缺性尤为突出。针对这一问题,本文深入探讨了AI智能名片…