细读P4论文(Programming Protocol-Independent Packet Processors)

一、P4是什么?

P4是一种高级语言,用来编写协议无关的包处理器,P4和SDN 控制协议Openflow一起工作。如何一起工作?我们可以看到SDN引入了控制平台和转发平台,而P4和OpenFlow就工作在控制平台和转发平台之间。那么都运行在其之间,OpenFlow和P4的区别在哪?OpenFlow没办法改变switch的处理逻辑,它只能通过表配置来对switch进行小小的控制,相当于OpenFlow面对的还是fix function的switch。而P4不仅可以影响switch中的某些表,而且还可以对switch的处理逻辑进行编程。可以这样说,P4提供了网络编程的抽象层次。

P4主要有以下目标:

(1)  可以改变packet switch的处理数据包的逻辑流程

(2)  使得switch不再限制于处理特定的协议数据包,协议无关。

(3)  平台独立,编程者可以不基于底层硬件来进行数据包处理流程的编写,通过编译器再将程序映射到特定的硬件交换机上

为什么要引入P4?

 

OpenFlow通过显示地声明协议头部来表名可以处理的操作,近些年来,协议头部集合已经从12个扩展到了41个,复杂性大大提高,而且也没有提供足够的灵活性来增加新的协议。

P4可以看做是OpenFlow的一种未来演化趋势。

 

二、一个抽象的转发模型

下图是一个抽象的switch ,它由一个可编程的parser、具有很多状态的并行或者组合的match+action构成。

 

上面这个模型与openflow模型的区别有三点:

(1)  openflow模型假定了一个fix parser,而这个模型假定了一个可编程的parser

(2)  openflow模型假定match+action的stages是顺序的,而这个模型假定它们既可以是顺序的,也可以是并列的

(3)  上面的这个模型假定action是由被switch支持的,独立于特定协议的基元(primitives)组成的

实际中的包可能会被不同的转发设备转发,比如说Ethernet switches,router等。但是我们不管这些底层硬件,只把注意力集中在P4语言如何描述在这个抽象的转发模型上的数据转发。通过这一点,程序员可以编写平台无关的程序,然后通过编译器将它映射到不同的转发设备上去。

转发模型有两种类型的控制操作:配置和填充(config

  • 10
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值