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.

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • SQL Server 2005“备份集中的数据库备份与现有的数据库不同”解决方法

    SQL Server 2005“备份集中的数据库备份与现有的数据库不同”解决方法以前一直使用SQLServer2000,现在跟潮流都这么紧,而且制定要求使用SQLServer2005,就在现在的项目中使用它了。 对于SQLServer2005,有几个地方是要注意的,比方在还原数据库时,不像2000里边将数据库和文件区分的很细,统一均为文件,这就使还原的数据库文件制定为.bak。那么想还原2000的数据库(备份数据库文件,无后缀名的),就需要自己手工选择。

  • java string简单例子_javaStringBuilder类的详解及简单实例

    java string简单例子_javaStringBuilder类的详解及简单实例javaStringBuilder类的详解及简单实例实现代码:publicclassStringBuilderTest{/***@paramargs*/publicstaticvoidmain(String[]args){StringBuildersb=newStringBuilder();//追加字符串sb.append(“java”);//sb=”java”…

  • 用Pytest+Allure生成漂亮的HTML图形化测试报告[通俗易懂]

    用Pytest+Allure生成漂亮的HTML图形化测试报告[通俗易懂]对于软件测试来说,测试报告是非常重要的工作产出。一个漂亮、清晰、格式规范的测试报告,能够减少开发人员和测试人员的沟通成本。本篇文章将介绍如何使用开源的测试报告生成框架Allure生成规范、格式统一、美观的测试报告。通过这篇文章的介绍,你将能够:-将Allure与Pytest测试框架相结合;-执行测试之后,生成Allure格式的测试报告。1、Allure测…

  • java解析XML的所需Jar包「建议收藏」

    java解析XML的所需Jar包「建议收藏」链接:https://pan.baidu.com/s/1ck6YIRT2MpiDLsCAxi-I9Q提取码:yjss其中包括dom4j和jaxen包

  • __setattr__,setattr(),getattr__,getattr()及__getattribute__的区别

    __setattr__,setattr(),getattr__,getattr()及__getattribute__的区别Python2.7IDEPycharm5.0.3首先,给一波定义__setattr__(self,name,value)#当试图给特性name赋值时候自动被调用,其余方法同理#相当于触发机制__getattribute__(self,item)#每次通过实例化访问属性都会通过该函数#如果没有该属性,则访问完该函数后,再会通过__getattr__函数_setattr_和_get

    2022年10月30日
  • 常用端口列表[通俗易懂]

    常用端口列表[通俗易懂]常见端口0|无效端口,通常用于分析操作系统1|传输控制协议端口服务多路开关选择器2|管理实用程序3|压缩进程5|远程作业登录7|回显9|丢弃11|在线用户13|时间17|每日引用18|消息发送协议19|字符发生器20|FTP文件传输协议(默认数据口)21|FTP文件传输协议(控制)22|SSH远程登录协议23|telnet(终端仿真协议),木马TinyTelnetServer开放此端口24|预留给个人用邮件系统25|SMTP服务器所…

发表回复

您的电子邮箱地址不会被公开。

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