当前P4存在的问题(ClickP4为解决的问题)

  • 1.随着P4程序的规模和复杂性的增加,从零开始开发单片P4程序容易出错,需要相当多的时间和精力去解决,所以网络政策的多样性和动态性使得运营商为了满足要求,组合所需功能变得复杂。
  • 2.在P4计划的部署之后,功能的编排很难根据新的需求进行修改。这种不可靠的编排不能满足在运行时需要新的业务流程的新策略,从而潜在地缩小了支持的网络策略。
  • 3.管理P4程序的复杂性。为了充分利用可编程数据平台的功能,运营商需要对部署的P4程序有一个清楚的了解,P4的灵活性反而使操作员对表的管理更加复杂。
  • 4.不同的P4程序可以配置不同的可编程设备,这进一步增加了使用大量可编程设备管理网络的难度。

设计 ClickP4 的两个原则

  • Decomposition of P4 programs: ClickP4通过将单片程序分解为可重用的模块并将功能组合推迟到运行时从而来缓解开发P4程序的复杂性。开发P4程序时,运营商不用担心如何组成P4程序。此外,分解还可以提高P4程序的代码重用和增量重新编程。
  • Dynamic orchestration of features: ClickP4通过动态编排模块为P4程序提供更多的灵活性,并帮助操作员在同一可编程基板上组成流量特定的P4程序。ClickP4中,集合了各种功能,并可在运行时分配给不同的功能。此外,为了方便管理P4程序,ClickP4提供了易于使用的原语,使操作员能够对功能进行排序。

ClickP4的架构

ClickP4的设计

ClickP4的设计有两个方面

  • Programming model:第一部分,为P4程序设计,旨在简化P4程序的开发。在ClickP4中,P4程序员只需要开发分离的模块而不是单片机程序,然后使用这些模块来编写复杂的P4程序。第二部分,为可管理可编程网络的运营商设计,ClickP4提供了一套高级编排描述原语。ClickP4协调器可以解释这些编排描述并将其转换为低级管理规则。

以下是描述两种不同特征编排的两个例子

  • Data plane architecture:在管道开始时,管理组件,初始化程序,提供每一个包一个标记。标记标识哪些功能可以处理第一个执行循环中的数据包。在ClickP4中,数据包只能顺时针穿过逻辑特征环,但某些策略可能需要模块的逆时针执行顺序。位于ClickP4流水线末端的回卷器可以倒带数据包,以使数据包能够在需要的时候逆时针穿过某些模块。

附录

论文 ClickP4: Towards Modular Programming of P4 小结的更多相关文章

  1. SDN 编程语言 p4(SDN programming language P4)

    行业趋势,SND是未来. P4 是未来. SDN is inevitably, and P4 is inevitably. P4 = Programming Protocol-Independent ...

  2. [Erlang 0126] 我们读过的Erlang论文

    我在Erlang Resources 豆瓣小站上发起了一个征集活动 [链接] ,"[征集] 我们读过的Erlang论文",希望大家来参加.发起这样一个活动的目的是因为Erlang相 ...

  3. Chapter 1 An Overview of Computers and Programming Languages

    Babylon巴比伦 loom织布机 weaver, WHO uses loom to work census: to count the population tabulate: make into ...

  4. Comparison of programming paradigms

    Main paradigm approaches[edit] The following are widely considered the main programming paradigms, a ...

  5. C语言学习书籍推荐《Practical C++ Programming》下载

    下载链接 :点我 C++ is a powerful, highly flexible, and adaptable programming language that allows software ...

  6. 使用 Python 编写脚本并发布

    使用 Python 编写脚本并发布 P1: 脚本 通常在 Linux 服务器上会遇到在命令行中输入命令的操作,而有些操作包含的命令数目较多或者其中的命令包含的参数较多,如果一个一个的敲命令的话就太麻烦 ...

  7. Install Oracle Java JDK/JRE 7u55 on Fedora 20/19, CentOS/RHEL 6.5/5.10

    What’s new in Sun/Oracle Java 7 VM Compressed 64-bit object pointers Garbage-First GC (G1) JSR 292: ...

  8. node中的流程控制中,co,thunkify为什么return callback()可以做到流程控制?

    前言 我在学习generator ,yield ,co,thunkify的时候,有许多费解的地方,经过了许多的实践,也慢慢学会用,慢慢的理解,前一阵子有个其他项目的同事过来我们项目组学习node,发现 ...

  9. Delphi XE5教程1:语言概述

    内容源自Delphi XE5 UPDATE 2官方帮助<Delphi Reference>,本人水平有限,欢迎各位高人修正相关错误! 也欢迎各位加入到Delphi学习资料汉化中来,有兴趣者 ...

随机推荐

  1. C#语法之泛型

    前面两篇C#语法主要是回顾委托相关的.这篇主要回顾了泛型. 一.为什么要有泛型? 我们在写一些方法时可能会方法名相同,参数类型不同的方法,这种叫做重载.如果只是因为参数类型不同里面做的业务逻辑都是相同 ...

  2. sql先分组,再算百分比

    --先分组,再算百分比 SELECT  a.CooperationIntention ,         a.OrganizationID ,         COUNT(*) 数量 , CONVER ...

  3. C# WPF打包部署时添加注册表信息实现开机启动

    使用VS自带的打包模块可以很方便的对项目进行打包部署,同时我们也可以在安装部署时操作注册表实现开机启动软件.具体实现如下: 创建安装部署这部分就不用说了,添加安装部署项目后,鼠标右键安装项目-> ...

  4. FileStream文件的使用

    // FileStream//(操作字节的)水一勺一勺的 可以操作任意格式的文件           //File一下子就读出来 //读取文本文件 // FileMode.OpenOrCreate你针 ...

  5. 撩课-Web大前端每天5道面试题-Day26

    1.vuejs与angularjs以及react的区别? .与AngularJS的区别 相同点: 都支持指令:内置指令和自定义指令. 都支持过滤器:内置过滤器和自定义过滤器. 都支持双向数据绑定. 都 ...

  6. jeecg框架解决跨域问题

    controller层方法体中添加如下代码 response.setHeader("Access-Control-Allow-Origin", "*");res ...

  7. Android DiskLruCache完全解析,硬盘缓存的最佳方案

    Android DiskLruCache完全解析,硬盘缓存的最佳方案 概述   记得在很早之前,我有写过一篇文章Android高效加载大图.多图解决方案,有效避免程序OOM,这篇文章是翻译自Andro ...

  8. C# base64 和图片互转

    C# imgage图片转base64字符/base64字符串转图片另存成 //图片转为base64编码的字符串 protected string ImgToBase64String(string Im ...

  9. 《JavaWeb从入门到改行》JDBC经典秘方QueryRunner

    目录: 基础篇_功能各自回顾 JDBC基础代码回顾(使用JdbcUtils工具简化) c3p0数据库连接池的使用(使用JdbcUtils工具简化) 大数据的插入(使用c3p0+JdbcUtils工具简 ...

  10. c#winform中如何修改ListView控件每个单元格的颜色

    ListView在View属性为Details的时候它呈现的方式和DataGirdView差不多,它的每一行都是一个ListViewItem,然而每个ListViewItem都有一个BackColor ...