热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

PISCES:AProgrammable,ProtocolIndependentSoftwareSwitch(总结)

PISCES:AProgrammable,Protocol-IndependentSoftwareSwitch重要性虚拟机监视器使用软件交换机来引导数据包进出虚拟机。这些交换机

PISCES: A Programmable, Protocol-Independent Software Switch


重要性

虚拟机监视器使用软件交换机来引导数据包进出虚拟机。这些交换机经常需要升级和定制,以支持新的协议头或用于隧道和覆盖的封装,以改进测量和调试功能,甚至添加类似于中间设备的函数。软件交换机通常基于大量的代码,包括内核代码,改变交换机是一项艰巨的任务,需要精通网络协议的设计和开发、测试,以及维护一个庞大而复杂的代码库。改变软件交换机转发数据包的方式不需要对其实现有深入的了解。相反,应该可以指定如何用高级领域特定语言(DSL)(如P4)处理和转发数据包,并将其编译为在软件交换机上运行。评估表明,PISCES的性能与OVS相当,PISCES程序的长度约为OVS源代码的1/40。


挑战

如何实现和优化


方案

软件交换机的转发行为是使用特定领域的语言指定的。本例是基于Open vSwitch (OVS)软件交换机,使用P4领域专用语言进行配置。
该方案的好处有:


  • 添加新的标准或私有协议头:数据中心所有者可以更快地编译和部署新协议
  • 删除标准协议头:删除未使用的协议与删除协议规范中未使用的部分并重新编译交换机源代码一样简单
  • 更好的可视化:能够快速修改转发和监视逻辑,可以减少诊断和修复网络故障的时间。
  • 可以添加添加全新的功能:用户和网络所有者可以修改转发行为,将更快地改进他们的网络。
    本例对OVS进行了改进
  • 任意封装和解封装:OVS不支持P4程序可能需要的任意封装和解封装。所以添加了两个新的原语,封装和解封装。
  • 基于报头字段比较的条件:OpenFlow只直接支持对报头字段的按位相等测试。在OVS中添加了对不等关系的直接支持,以条件操作的形式。
  • 一般的校验和验证/更新:OVS只支持增量校验和,但为了支持以程序员希望的方式使用校验和,对增量校验进行了优化。
    并且本例对编译器后端进行了优化:
  • 内联编辑/流水线编辑:优化器分析中间表示,以确定在流水线中一个包可能需要修改多少次。如果值低于某个阈值,则优化器执行内联编辑;否则,它将执行流水线后编辑。
  • 动作优化:使用诸如死代码消除之类的优化来识别和消除设置操作中的冗余
  • 增量校验和:通过用高级程序描述(如P4)来表示校验和操作,程序员可以向编译器提供必要的上下文信息,以便更有效地实现校验和
  • 解析器优化:在高级语言中指定转发行为可以为编译器提供可以用来优化解析器的信息。
  • 动作合并:通过分析P4程序中的控制流和匹配操作处理,编译器可以发现哪些字段实际上被修改了,并可以生成一个有效的、单一的操作来直接更新这些字段。
  • 缓存字段修改:通过自动生成操作来实现P4程序所需的特定算术操作,在可能的情况下避免匹配和设置
  • 分阶段指派:增强了P4语言,使用户能够用阶段编号注释每个头文件

见解

设计和实现了第一个允许在高级DSL中定制协议规范而不需要直接修改交换机源代码的软件交换机。平均比等效的OVS源代码短约40倍,而转发性能(即吞吐量)开销仅为2%左右。证明在虚拟机监视器交换机中,可编程性的成本可以忽略不计,研究结果可以启发设计新的协议无关的软件交换机。


推荐阅读
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了StartingzookeeperFAILEDTOSTART相关的知识,希望对你有一定的参考价值。下载路径:https://ar ... [详细]
  • 本文介绍了2020年计算机二级MSOffice的选择习题及答案,详细解析了操作系统的五大功能模块,包括处理器管理、作业管理、存储器管理、设备管理和文件管理。同时,还解答了算法的有穷性的含义。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
author-avatar
十只北羊鱼
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有