当前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. sql中全文检索CHARINDEX 和PATINDEX 区别

    最近经常使用字符串查找功能. 包括 1.全匹配查找字符串 2.模糊查找字符串 CHARINDEX 和 PATINDEX 函数都返回指定模式的开始位置.PATINDEX 可使用通配符,而 CHARIND ...

  2. PowerDesigner最基础的使用方法入门学习(转载)

    来源:http://www.cnblogs.com/biehongli/p/6025954.html 1:入门级使用PowerDesigner软件创建数据库(直接上图怎么创建,其他的概念知识可自行学习 ...

  3. Promise异步编程整理

    1.单线程模型 单线程模型指的是,JavaScript 只在一个线程上运行.也就是说,JavaScript 同时只能执行一个任务,其他任务都必须在后面排队等待. 注意,JavaScript 只在一个线 ...

  4. Enable Scribble,Enable Guard Edges,Enable Guard Malloc,Zombie Objects

    最近项目中使用一个翻拍身份证信息识别活体检测的第三方框架,在使用时会偶然性的出现崩溃的现象,经过查找是因为第三方框架中有释放的内存区域再次引用引起的,因而补充一下相关知识点.   在Xcode Edi ...

  5. 【转】Java线程详解

    Java线程:概念与原理 一.操作系统中线程和进程的概念 现在的操作系统是多任务操作系统.多线程是实现多任务的一种方式. 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程 ...

  6. 【转】MyBatis接口的简单实现原理

    MyBatis接口的简单实现原理 用过MyBatis3的人可能会觉得为什么MyBatis的Mapper接口没有实现类,但是可以直接用? 那是因为MyBatis使用Java动态代理实现的接口. 这里仅仅 ...

  7. POJ3278(KB1-C 简单搜索)

    Catch That Cow Description Farmer John has been informed of the location of a fugitive cow and wants ...

  8. c语言中函数的形参test(int *&a)?

    今天在看一段c代码的时候看到一个函数的形参是(int *&a)居然是这个东西,这让我好生疑惑啊,不知道用这么多的地址符号用意何在呢?传址么? 那也不必这样,只需要用指针完全能够达到这样的效果啊 ...

  9. python简单验证码

    安装图片处理模块pillow :   pip install pillow pillow官网:http://pillow.readthedocs.io/en/latest/ 在views.py添加视图 ...

  10. 导出PDF乱码

     客户问题: 客户环境 LINUX系统weblogic10.3.0.0 用weblogic自带 JDK160_05 导出PDF中文字体全是口 解决方法: 客户的说他们的测试服务器和生产服务器环境是 ...