pcep协议什么意思_SDN学习笔记

pcep协议什么意思_SDN学习笔记SDN什么是SDNSDN是一种框架和思想,核心诉求是通过软件控制网络,实现业务的自动化部署,为方便软件来控制网络,希望控制面和转发面是分离的。例如,传统的交换机内部,由交换机负责具体的网络流量往哪里转发,在SDN中,有一个控制器进行流量转发的计算,然后将结果发送给交换机,交换机只进行简单的转发,从分布式的控制转发过程称为集中式的控制,使得控制和转发平面相分离。SDN的特点网络开放可编程、数控分离(…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

SDN

什么是SDN

SDN是一种框架和思想,核心诉求是通过软件控制网络,实现业务的自动化部署,为方便软件来控制网络,希望控制面和转发面是分离的。

例如,传统的交换机内部,由交换机负责具体的网络流量往哪里转发,在SDN中,有一个控制器进行流量转发的计算,然后将结果发送给交换机,交换机只进行简单的转发,从分布式的控制转发过程称为集中式的控制,使得控制和转发平面相分离。

SDN的特点

网络开放可编程、数控分离(数据平面和控制平面相分离,为开放可编程提供架构基础)、逻辑上集中控制、网络业务的自动化应用程序控制。

SDN的架构

pcep协议什么意思_SDN学习笔记

数据平面

可以抽象为数据平面或者转发平面,可以是交换机、虚拟交换机、路由器等。数据平面通用抽象模型将不同协议的匹配表整合起来,形成多字段匹配表,解决了网络协议堆砌的问题

传统网络中,现有的分层协议可以看作一种数据平面的抽象模型,但是控制平面依然只是网络功能和网络协议的堆砌,缺少合适的抽象模型

南向接口

控制面跟数据转发面之间的接口,传统网络的南向接口存在于各个设备商的私有代码中,对外不可见,如存在于交换机内部

控制器(控制平面)

可以有多个,可以是主从关系,也可以是对等关系,一个控制器控制多台设备,一个设备也可以被多台控制器控制,向上提供应用程序的编程接口,向下控制硬件设备。

北向接口

传统网络里,指交换机控制面跟网管软件之间的接口,在SDN中,指控制器跟应用程序之间的接口

SDN应用服务

为用户提供服务,包括负载均衡、安全、网络运行情况监测等,并以应用软件的形式表现出来,代替传统的网管软件来对网络进行控制和管理,可以跟控制器位于同一台服务器,也可以运行在别的服务器上通过通信协议来跟控制器通信。

SDN南向协议

狭义的SDN南向协议具有对数据平面编程的能力,可以指导数据平面设备的转发操作等网络行为,关键在于是否具有确切的数据平面可编程能力(如openflow)。

广义的SDN南向协议主要分为三种类型。第一种是仅具有对数据平面配置的南向协议(如OF-Config、OVSDB、NET-CONF);第二种是应用于广义SDN,具有部分可编程能力的协议(如OpFlex);第三种是本来就存在,其应用范围很广,不限于应用在SDN控制平面和数据平面之间传输控制信令的协议(如PCEP、XMPP)。

狭义SDN南向协议 — Openflow

Openflow原理

pcep协议什么意思_SDN学习笔记

Openflow交换机

Openflow交换机可以分成流表和安全通道两部分。

流表用于存放流表项,控制器可以给交换机下发流表项来指导交换机处理匹配流表项的数据包

安全通道用于和控制器通信的安全连接

在Openflow协议中,交换机是策略的执行者,而网络相关的策略需要控制器下发

Openflow表

流表

pcep协议什么意思_SDN学习笔记

匹配域用于区分不同的数据流

计数器记录了匹配数据流的数据包的数目和字节数等相关数据

组表

组表用于定义一组动作,且这组动作可以被多个流表项共同使用,从而实现组播、负载均衡、容灾备份和聚合等功能。

Meter表

Meter表用于计量和限速,可以针对流制定对应的限速规则,从而实现丰富的Qos功能,注意不是针对端口的。

OpenFlow通道

控制器和交换机的通信通道,支持以下三类报文:

Controller-to-Switch:主要由控制器初始化并发送给交换机

Asynchronous:交换机异步上传给控制器的报文,告知控制器新数据包的到达和交换机状态的改变

Symmetric:无需等待对方请求,双发都可以任意发送的报文

OpenFlow的缺点

无法适应复杂的场景,当出现一种新的协议,需要扩充流表的匹配域,同时重写交换机和控制器两端的协议栈,交换机只能按照固定的协议逻辑去处理数据,不断增多的匹配域,使得OpenFlow的交换机的设计与实现越来越复杂

只能在现有支持的转发逻辑上添加对应的流表项来指导数据包的转发,而无法对交换机的转发进行编程和修改,使得数据平面仍然需要掌握协议的语义等控制信息才能完成数据的匹配

无状态协议,交换机只能受控制器的指导去执行操作,而无法在满足条件时主动采取动作,过度依赖控制平面

POF协议和P4协议对此进行了改进

广义SDN南向协议

OF-Config协议

OF-Config协议是一种交换机配置协议,主要功能包括进行交换机连接的控制信息,端口和队列资源的配置及端口等资源的状态修改等。

OF-Config协议可以看作是Openflow协议的一种补充。

pcep协议什么意思_SDN学习笔记

pcep协议什么意思_SDN学习笔记

OVSDB协议

OVSDB与OF-Config协议类似,都是交换机配置协议,两者区别在于:OVSDB仅用于OVS(Open vSwitch)的配置,而OF-Config可以用于所有支持OpenFlow的软件或者硬件的交换机

NETCONF协议

是一种产生于SDN之前的网络配置协议,NETCONF是许多网络协议的配置协议,能统一管理和配置SDN设备和传统网络设备,既保证了现有网络设备的可用性,又支持SDN设备的设备

OpFlex协议

OpFlex是一种声明式控制的协议,只通知对象要达到一种状态的要求,但并没有规定通过指定的方式去达到这个状态

OpenFlow会精确的告诉交换机具体的动作,来完成数据的处理

OpFlex具有的可编程能力不强

XMMP协议

不是专门为SDN设计,可以统一管理传统设备和SDN设备,可以用于做OpenFlow的补充协议,或者用于SDN和传统网络混合组网的管理

PCEP

PCEP用于为流量工程提供路径计算服务,把路径计算的控制逻辑从转发设备中抽离到远端,实现了部分数据平面和控制平面的分离,将OpenFlow和PCEP协议结合使用实现OpenFlow网络和传统网络的统一管理和调度

完全可编程南向协议

POF协议

通过$\{offset,length\}$来确定匹配数据,强调协议无关

协议的操作无非是增加、修改和删除对应的字段/标签,这些操作可以通过通用的指令集来实现,POF协议为交换机设计了通用的指令集

针对OpenFlow的无状态缺点,POF设计了相关指令来在交换机内部维护一个简单的状态机,在条件满足时,可以采取主动的动作,然后异步通知控制器发生的改变,从而实现数据的同步

POF协议的设计思想借助了计算机的设计思想,控制器相当于操作系统,而转发元件(交换机)相当于CPU执行相关的指令

pcep协议什么意思_SDN学习笔记

POF协议的缺点

控制流程复杂,丢失了部分性能,需要定义一套通用指令集,实现复杂的指令调度

P4

协议无关数据包处理编程语言,关注的是数据平面的可编程

P4编程语言具有对交换机的协议解析流程和数据处理流程进行编程的能力

转发设备协议无关转发

设备无关性

思想:是一门数据平面编程语言,当出现一种新的协议,通过P4语言编写程序,利用P4编译器将程序编译并写入交换机中,使得交换机能够拥有处理该协议的功能。

SDN控制器

pcep协议什么意思_SDN学习笔记

SDN数据平面

通用可编程转发模型

通用硬件模型

pcep协议什么意思_SDN学习笔记

上图为OpenFlow Switch通用硬件模型架构,其中网络数据处理流程为:数据包从端口进入$\rightarrow$通用模型中的数据包解析模块对数据包头进行分析$\rightarrow$选择对应的流表进行处理$\rightarrow$在流表内部,与每个流表项进行比较,若匹配成功,则按照对应的动作处理

流水线处理

pcep协议什么意思_SDN学习笔记

采用多级流表,数据包在进入流水线之前,被分配一个空的操作指令集,进入第0个流表开始处理,通用硬件模型将数据包协议内容与每个流表项进行匹配,将匹配成功的流表项中的操作指令写入操作指令集中,或者传输给下一个流表

现有交换机内部通常有多个查找表,多级流表使得资源的利用率变得更高

单流表会造成资源浪费,多级流表可以组合支持实现不同处理之间的逻辑关系,有效的减少流表的数量,具有更好的适配能力

流表

pcep协议什么意思_SDN学习笔记

每个流表由多个流表项组成,流表项的匹配域用来与每个数据包的指定包头标识集合进行比较;

流表项的优先级用来表示该流表项匹配的优先级,当数据包与多条流表项匹配成功的时候,需要按照优先级来选择一条流表项,并执行该表项的动作;

失效时间包括硬超时和软超时,如果流表项的生存时间超过硬生存时间或者在软生存时间内没有匹配到数据包,则流表项中的内容将被清空

单个流表的处理过程

pcep协议什么意思_SDN学习笔记

先从网络数据包中提取待匹配的网络数据包协议字段组合,再加上上一个流表的Metadata信息共同组成一个待匹配域(可能该数据包从上级流表流入)

与每个流表项进行匹配,如果只有一个流表项匹配到,则更新对应流表项的计数器等状态,然后执行流表项中的指令,这些指令会指明数据包跳转到哪一个流表【跳转指令,不是操作指令】,从而实现流表的跳转【只能向前跳转】;当数据包与多条流表项匹配成功的时候,需要按照优先级来选择一条流表项;

当流表项中没有指定跳转指令时,流水线停止跳转,然后对数据包执行具体的操作【最后一个流表不会包含跳转指令】

组表

pcep协议什么意思_SDN学习笔记

组表用于定义一组动作,且这组动作可以被多个流表项共同使用,从而实现组播、负载均衡、容灾备份和聚合等功能

每个组表由多条组表项组成,在流表项中,通过使用Group操作可以将数据包指向某个组操作

组表项的桶操作(Action Buckets)可以用来存储多个Action Bucket,每个Action Bucket包含一个数据包操作指令集

组表项操作类型(Group Type):

全操作类型(ALL),执行Action Buckets中的所有Action Bucket中的操作指令集,可以实现网络中的组播和广播功能

选择类型(Select),只执行一个Action Bucket中的操作指令集,可用于流量的网络负载均衡

间接类型(Indirect),只支持一个Action Bucket

快速恢复类型(Fast Failover),只执行激活的第一个Action Bucket,多用于容灾备份场景

Meter表

pcep协议什么意思_SDN学习笔记

Meter表用于计量和限速,可以针对流制定对应的限速规则,从而实现丰富的Qos功能,注意不是针对端口的

通常当网络数据流的当前流量超过rate阈值时,才会执行band type中的指定操作

通用处理指令

网络处理控制指令

对数据包的操作指令集进行写入、应用或者删除等修改指令,如数据包在流表中,控制指令完成对数据包操作指令集中指令的添加、更新和删除等操作

数据包在多个表中的处理顺序的跳转指令

操作指令

完成对数据包的丢弃、复制、转发和修改等操作

专用指令

如Table-miss表项中的Table-miss指令定义了在流表中匹配不成功时处理网络数据包的行为,匹配所有的匹配域,优先级为零,使得Table-miss表项能被所有的数据包匹配

Open Swtich的缺点

数据包解析和包调度模块还不具备编程能力

新协议扩展方面抽象能力不够

不支持有状态的网络数据处理

只支持有限数量的网络数据处理操作,不支持新的处理操作扩展

网络流量监控和分析方面不足

白盒交换机

也称为开放交换机,网络交换机硬件和操作系统解耦合的结果

本质上,解决网络可编程的因素在于数据平面的可编程

参考资料

杨泽卫, 李呈. 重构网络: SDN 架构与实现[J]. 2017.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/196321.html原文链接:https://javaforall.net

(0)
上一篇 2025年9月29日 上午10:43
下一篇 2025年9月29日 上午11:15


相关推荐

  • IIS无法启动解决方案

    IIS无法启动解决方案br IIS 启动提示 br nbsp br WorldWideWeb 服务因下列错误而停止 br 无法使用已在使用中的标识启动新的会话 br nbsp br 由于错误 WorldWideWeb 服务正在退出 数据字段包含错误号 br nbsp br 有时重启电脑可以解决 有时不可以 br nbsp br 重装 MSDTC 服务可解决 br nbsp br br br IIS 无法打开 asp 文件之 MSD

    2026年3月16日
    2
  • navicat premium15激活码(JetBrains全家桶)

    (navicat premium15激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlS3…

    2022年3月26日
    73
  • WPF 实现label换行

    WPF 实现label换行LabelMaxWidt 550 TextBlockTex Wrap Text 在此输入要换行的文字 前提是它足够长 并且 Label 的 MaxWidth 不足以让它一行显示 Label

    2026年3月18日
    2
  • leetcode第一刷_Permutations II

    leetcode第一刷_Permutations II

    2021年12月14日
    55
  • pycharm设置打不开怎么回事_pycharm界面设置

    pycharm设置打不开怎么回事_pycharm界面设置害,pycharm专业版到期了,不能再用了,下了一个社区版,想要编译程序的时候发现没有解释器。解决方法找到设置(右上角,小齿轮)找到项目的Pythoninterpreter设置,点击小齿轮添加新的解释器。选择添加新的interpreter选择对应版本的Python即可。点确定就设置好了。…

    2022年8月26日
    8
  • SSL工作原理

    SSL工作原理

    2021年9月22日
    51

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号