版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
可编程数据平面概述1.1可编程交换机在传统的网络设备中,数据平面具有固定功能,并且使用各种协议(如IP、Ethernet等协议)进行数据包的转发REF_Ref71365625\r\h[47]。这种封闭式的设计模式限制了交换机的能力,从而导致开发新的网络功能需要一个冗长、昂贵且难以实现的过程。该过程不符合软件行业迅捷开发模式的要求,不过最近数据平面的可编程性引起了研究界和产业界的极大关注,它允许程序员运行自定义数据包处理功能,这无疑会加快网络应用的开发。拥有这种可编程数据平面的交换机就叫做可编程交换机,相比于传统的功能固定的交换机,可编程交换机具有以下特性:开发敏捷性:程序开发人员可以在极短的时间内(通常是几周或者几个月)设计、测试并采用新的网络协议和功能。自顶向下的设计:传统网络一直以来都是以自底向上的方式运转,交换机中的ASIC被植入特定的功能,这导致顶部的程序开发人员需要按照交换机的协议和功能标准设计和开发应用。而对于可编程交换机,由于可以自定义数据平面的处理逻辑,程序开发人员可以向ASIC中写入自己想要的协议和功能,因此应用的开发转变为自顶向下的模式。可视化:传统交换机由于不同厂商设备之间的封闭性导致网络拓扑和链路性能测量不方便,使网络可视化成为一个挑战。而可编程交换机则为网络行为带来了可视化能力。例如,可以使用带内网络遥测(In-BandTelemetry,INT)技术不在控制平面的介入下,从数据平面收集并统计信息,实现网络可视化。降低复杂性:传统固定功能的交换机集成了大量的协议,这些协议消耗交换机内部资源并增加了数据包处理逻辑的复杂性,此外这些协议一般是在芯片上硬编码的,实现也比较复杂。而可编程交换机则允许程序开发人员只实现需要的协议。保密性:程序开发人员设计的协议和功能不再需要与设备厂商共享。传统交换机自定义的协议往往需要将协议细节告知设备厂商,厂商才能制作定制化的交换机,而使用可编程交换机可以完全自己实现想要的协议和功能。高性能:可编程交换机不会带来性能下降的问题。相反可编程交换机的性能比固定功能的交换机强。表2.1展示了可编程交换机和固定功能交换机在性能上的对比REF_Ref66819647\r\h[48],从表中可以看出可编程交换机相比固定功能交换机在性能上具有一定优势。表2.1可编程交换机和固定功能交换机性能对比Table2.1Performancecomparisonofprogrammableswitchesandfixed-functionswitches性能参数可编程交换机固定功能交换机吞吐量6.4Tb/s6.4Tb/s最大转发速率4.8Bpps4.2Bpps是否可编程是否能源消耗4.2Wperport4.9Wperport延迟Under400nsUnder450ns遥测速率线性速度基于SFlow取样速率ECMP个数256128通过上述介绍可以看出可编程交换机具有很大的优势,可编程交换机的这些优势是由它不一样的结构产生的,图2.3展示了可编程交换机的结构。可编程交换机的入端口设有名为Parser的数据包解析器,它负责按照程序开发人员定义的状态机顺序解析数据包头部的每一个域,例如可以按照“Ethernet、IP、TCP”的顺序解析数据包;而在出端口设有名为Deparser的逆解析器,它负责将数据包的头部进行重组并重新计算各个域内的校验和,确保数据包可以正常转发,并且通过这个组件数据包被转发到下一跳的位置。可编程交换机的核心在于它内部有多条pipeline进行数据包的逻辑处理,其中每个pipeline由若干个匹配动作单元(MatchActionUnit,MAU)组成,每个MAU使用TCAM进行数据包头部域的匹配,当成功匹配后就可以根据相应的动作对数据进行处理,其中动作的概念可以类比为高级语言中的函数。有的动作中需要存储一些数据和变量,这时候需要使用SRAM进行数据存储。此外,可编程交换机还拥有寄存器资源,方便高速流量的快速处理。图2.3可编程交换机结构Fig.2.3Programmableswitcharchitecture可编程交换机的出现为数据平面带来了很大的改变,但可编程交换机与SDN的某些概念是由区别的。首先,在SDN的数据平面中也存在SDN可编程交换机的概念,但是这个概念和本文使用的可编程交换机是有一定差别的,所谓的SDN可编程交换机是指SDN的控制平面通过OpenFlow协议使用基于流表的形式对SDN可编程交换机进行配置和资源的分配,并且这种SDN可编程交换机是根据OpenFlow协议定制的,它可以实现的功能受限于OpenFlow的规范,开发新的功能需要新的OpenFlow协议的支持,而本文使用的可编程交换机完全不会受到上述限制,通过P4数据平面编程语言实现用户定制的协议和功能,并使用P4Runtime接口进行实时控制,这是可编程交换机和SDN理念的最大区别。其次,SDN中存在集中式控制平面,所有应用通过应用层的编写然后进一步由控制器下发到数据平面,而可编程交换机的控制平面则是将SDN的应用平面和控制平面相结合,通过编写程序控制交换机。最后,可编程交换机的理念更接近于与IBN的理念,因为IBN整体围绕着意图进行运作,这需要大量的自定义的底层数据包控制逻辑,这恰好为可编程交换机可以提供的功能,虽然SDN也有意图接口,但是它的意图接口只是作为应用平面与控制器进行通信的工具,与IBN的理念相差很大。虽然可编程交换机可以提供很多便捷功能,但是它内部需要TCAM资源的支持,而TCAM又是十分昂贵的资源,导致可编程交换机不能被大规模使用,因此设计可编程交换机的资源分配方案是具有实际意义的。1.2数据平面编程语言自从通用计算机被引入到日常生活中,程序开发人员便开始开发各种通用程序或框架用于通用应用开发,例如OpenCL用于图形应用的开发,TensorFlow用于机器学习领域。而可编程数据平面是由以上观念演变而来,最近研究人员正在致力于开发针对网络进行通用开发的机器模型,该模型为协议独立交换机架构(ProtocolIndependentSwitchArchitecture,PISA)。PISA是一个数据包处理模型,它通过对网络操作指令进行优化,实现数据包的高速传输,PISA主要包含可编程解析器(programmableparser)、可编程匹配动作流水线(programmablematch-actionpipeline)和可编程逆解析器(programmabledeparser)。上文提到的可编程交换机是一种典型的PISA,而对于PISA设备进行通用开发的高级编程语言为以下要介绍的P4数据平面编程语言。P4语言在2013年被首次提出,在2014年的SIGCOMM正式发表了P4语言的开山之作(P4:ProgrammingProtocol-independentPacketProcessors)REF_Ref66906222\r\h[9],翻译为“可编程的协议独立的包处理器”,其中“包处理器”的意思为这是一种交换机(或者其他处理数据包的设备),“协议独立的”的意思为这种交换机并不与某些特定的协议绑定,“可编程的”的意思为可以编写高级程序语言控制交换机的行为。上述抽象的概念可以解释为“P4是一门数据平面编程语言,它可以编写应用到交换机上的协议,例如可以使用P4语言实现arp协议、路由协议的程序,并把这些程度加载到交换机中,交换机就可以表现出这些协议的行为;此外,还可以利用P4编写自定义的协议”。P4语言是一种和C语言等高级语言类似的数据平面编程语言,它的编码方式类似与C语言,但是开发流程区别很大。首先,P4语言在开发过程中主要有以下几个重要的语言元素:解析器(Parsers):解析器以有限状态机的形式实现,它可以按照用户定义的状态机对数据包的头部进行解析;控制块(Controls):控制块主要负责“匹配-动作”流水线的逻辑设计,可以用自定义的表和动作来自定义数据包头部的操作;表示式(Expressions):表达式主要指P4原生的操作指令,如加、减等操作;数据类型(DataTypes):P4的主要数据类型包括bit、string、header、struct和array等。程序开发人员可以使用上面相关的语法元素进行数据平面的开发。其次,当编写完P4程序后,需要进行编译,如图2.4所示,当使用p4c命令对test.p4进行编译后会生成图2.4P4语言编译流程Fig.2.4P4languagecompilationprocess两个文件:test.json和test.p4info;其中test.json用来对交换机的处理逻辑进行配置(这里使用的是p4虚拟软件交换机simple_switch),test.p4info则是用来和P4Runtime接口进行配合从而可以对交换机的pipeline进行实时控制。另外,图中有一个“BMv2”的概念,BMv2为“behavioralmodelversion2”,这是一类交换机,在P4的官方文档REF_Ref67078245\r\h[49]中给出常用的虚拟交换机:simple_switch,simple_switch_grpc,psa_switch和simple_router等,这些设备可以应用于不同的场景,但是都可以使用P4进行逻辑的编写。以下对P4Runtime进行介绍,这是本文关于测量资源优化使用到的最基本的技术。P4Runtime是对可编程交换机数据平面进行实时控制的一套API,它使用ProtoBuf(ProtocolBuffers)定义接口,并使用gRPC(GoogleRemoteProcedureCall)传输消息,因此可编程交换机和基于P4Runtime的控制平面形成了微服务的架构组织,使数据传输更快,可拓展性更强。由于后期需要的网络拓扑较大,需要多台可编程交换机,而虚拟软件交换机本身是没有任何功能的,即数据包到达也不会进行转发。因此需要对交换机进行逐一配置,而逐一配置交换机是复杂又易错的,而且每次重启交换机都会导致配置丢失,并且考虑到本文是基于意图进行网络测量,更应该体现意图的理念,促进配置的自动化。因此基于P4Runtime设计了一个可编程交换机自动组网算法,如算法2.1所示。算法2.1基于P4Runtime的可编程交换机自动组网算法Algorithm2.1P4Runtimebasedalgorithmforautomaticnetworkingofprogrammableswitches输入:网络拓扑信息Topo输出:拓扑节点都可以相互连通的方案BEGINFOR;控制器使用P4Runtime通过thrift_port连接交换机;ENDFORFORFORIF将p4Swtich中的ipv4路由表的匹配域设置为与其相连的主机的ip;将路由表的下一跳地址设置为该主机的mac和交换机对应的端口;ELSEIFswitch_dst有主机相连;FORIF;;;将p4Swtich中的路由表的匹配域设置为;将路由表中的下一跳
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 贝类繁育工岗前规划考核试卷含答案
- 废化纤加工处理工复试测试考核试卷含答案
- 纬编工基础实战竞赛考核试卷含答案
- 计算机维修工岗前专项应用考核试卷含答案
- 口腔修复体制作师技术规范评优考核试卷含答案
- 营养师风险评估考核试卷含答案
- 营养配餐员岗中实操测试考核试卷含答案
- 动物检疫检验员保密意识能力考核试卷含答案
- 食品(保健食品)原辅材料买卖合同协议书范本(范本)
- 药品研发公司
- 2026江苏盐城市大丰区西团镇人民政府招聘村级后备跟岗人员4人考试参考题库及答案详解
- 2026年学法考试题库(附答案)
- 烟草系统遴选常见试题及完整答案梳理
- 中远海运集团2026年第七次社招笔试真题
- 2026年山东省中考英语试题(含答案和音频)
- 2025-2026学年四川省凉山州七年级(下)期末数学试卷(含答案)
- 2026秋学期小学苏教版数学四年级上册教学计划
- 社会责任RBA8.0 责任商业联盟行为准则课件
- 设备的维护保养及点检
- 大数据采集与预处理技术详解
- 2023-2024学年山东省青岛市高三(上)期初调研数学试卷
评论
0/150
提交评论