当前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. can/socket can

    1. 概念 参考:Linux-CAN编程详解 can引脚: cn2: 15:CAN1_H 19 CAN1_L 根据每组报文开头的 11 位标识符(扩展帧为29位标识符.CAN 2.0A 规范)解释数据 ...

  2. bind9配置转发服务

    修改bind主配置文件 $ vi /etc/named.conf//// named.conf//// Provided by Red Hat bind package to configure th ...

  3. Echart 改变X轴、Y轴、折线的颜色和数值

    在操作E-chart时需要根据需求改变颜色和属性 图1: option = { xAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu' ...

  4. MD5 加盐(Java)

    本文转载自:https://blog.csdn.net/dingsai88/article/details/51637977 jar:https://pan.baidu.com/s/1-8JaRoUt ...

  5. 插入sql返回主键id

    <insert id="insertSelective" parameterType="com.xxx.model.XDetail" useGenerat ...

  6. AutoFac简介

    在.NET上现在存在许多的依赖注入容器, 如:Castle Windsor.StructureMap.Autofac .Unity. 这里主要介绍一下Autofac,Autofac和其他容器的不同之处 ...

  7. Jquery实现form表单提交后局部刷新页面的多种方法

    最近做一个小项目,刚好需要用到搜索功能,实现搜索框内输入数据然后按回车或者点击“提交”,然后给后台数据库处理并返回数据给前端,在前端局部更新数据. 但是遇到了一个小问题,就是form表单下任意输入框输 ...

  8. python中作用域

    Python 中,一个变量的作用域总是由在代码中被赋值的地方所决定的. 函数定义了本地作用域,而模块定义的是全局作用域.如果想要在函数内定义全局作用域,需要加上global修饰符. 变量名解析:LEG ...

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

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

  10. MS SQL Server数据库查询优化技巧

    [摘 要]本文主要是对MS SQL Server数据库查询优化技巧进行了说明和分析,对索引使用.查询条件以及数据表的设计等进行了阐述.中国论文网 http://www.xzbu.com/2/view- ...