论文 ClickP4: Towards Modular Programming of P4 小结
当前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的主页:https://clickp4.github.io/
- 论文ClickP4链接:http://conferences.sigcomm.org/sigcomm/2017/program-demos.html
- ClickP4源码:https://github.com/clickp4/clickp4
论文 ClickP4: Towards Modular Programming of P4 小结的更多相关文章
- SDN 编程语言 p4(SDN programming language P4)
行业趋势,SND是未来. P4 是未来. SDN is inevitably, and P4 is inevitably. P4 = Programming Protocol-Independent ...
- [Erlang 0126] 我们读过的Erlang论文
我在Erlang Resources 豆瓣小站上发起了一个征集活动 [链接] ,"[征集] 我们读过的Erlang论文",希望大家来参加.发起这样一个活动的目的是因为Erlang相 ...
- 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 ...
- Comparison of programming paradigms
Main paradigm approaches[edit] The following are widely considered the main programming paradigms, a ...
- C语言学习书籍推荐《Practical C++ Programming》下载
下载链接 :点我 C++ is a powerful, highly flexible, and adaptable programming language that allows software ...
- 使用 Python 编写脚本并发布
使用 Python 编写脚本并发布 P1: 脚本 通常在 Linux 服务器上会遇到在命令行中输入命令的操作,而有些操作包含的命令数目较多或者其中的命令包含的参数较多,如果一个一个的敲命令的话就太麻烦 ...
- 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: ...
- node中的流程控制中,co,thunkify为什么return callback()可以做到流程控制?
前言 我在学习generator ,yield ,co,thunkify的时候,有许多费解的地方,经过了许多的实践,也慢慢学会用,慢慢的理解,前一阵子有个其他项目的同事过来我们项目组学习node,发现 ...
- Delphi XE5教程1:语言概述
内容源自Delphi XE5 UPDATE 2官方帮助<Delphi Reference>,本人水平有限,欢迎各位高人修正相关错误! 也欢迎各位加入到Delphi学习资料汉化中来,有兴趣者 ...
随机推荐
- IOS第三方之SDWebImage
项目中从服务器端下载图片这些几乎是必备的,使用时也很简单,只需引入SDWebImage文件 // // ViewController.m // sdWebImageDemo // // Created ...
- 使用T4Scaffolding 创建自己的代码生成
nuget查找引入T4Scaffolding.Core 这个是最低层的,没有其他依赖,当然也没有现成的模板 这个有对EF的依赖,自带了生成DBContext的模板 这个自带了一些mvc的contr ...
- WIN 10 初体验:期待越多失望越大
我大多数时候使用 MacBook,不过 WIN 10(预览版)的推送还是让我忍不住升级玩玩——它是微软史上首款真正意义上的免费操作系统,正式版将与中国诸多互联网巨头联合提供升级工具分发这一体现了微软迎 ...
- [日常] 编写HTTP接口文档
一.什么是接口文档?在项目开发中,web项目的前后端分离开发,APP开发,需要由前后端工程师共同定义接口,编写接口文档,之后大家都根据这个接口文档进行开发,到项目结束前都要一直维护.二.为什么要写接口 ...
- lombok入门
pom.xml加入依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lo ...
- Spring系列之——spring security
1 搭建springboot 2 配置pom依赖(springboot版本为2.1.3) <dependency> <groupId>org.springframework.b ...
- 高并发第九弹:逃不掉的Map --> HashMap,TreeMap,ConcurrentHashMap
平时大家都会经常使用到 Map,面试的时候又经常会遇到问Map的,其中主要就是 ConcurrentHashMap,在说ConcurrentHashMap.我们还是先看一下, 其他两个基础的 Map ...
- 【1】Singleton模式(单例模式)
一.单例模式的介绍 说到单例模式,大家第一反应应该就是--什么是单例模式?从“单例”字面意思上理解:一个类只有一个实例.所以单例模式也就是保证一个类只有一个实例的一种实现方法罢了(设计模式其实就是帮助 ...
- 实习小结(四)--- MyBatis Generator使用
第一次听闻MyBatis Generator插件很是惊讶,已经有这么便捷方式的工具通过数据库表来自动生成实体类,映射文件,接口以及帮助类,而且可以通过自己写方法来增加中文注释,遂来学习一波.首先先建一 ...
- JVM的逃逸分析
我们都知道Java中的对象默认都是分配到堆上,在调用栈中,只保存了对象的指针.当对象不再使用后,需要依靠GC来遍历引用树并回收内存.如果堆中对象数量太多,回收对象还有整理内存,都会会带来时间上的消耗, ...