p4数据面编程语言

2019-10-07  本文已影响0人  彳亍cium

p4语言简介

p4-shu-ju-mian-bian-cheng-yu-yan.png

P4(Programming Protocol-Independent Packet Processors) 是一种数据面的高级编程语言。数据面编程就是我们自定义匹配字段 ,自定义动作类型 , 从而自定义流表 ,进而形成流水线。p4不仅可以对数据流进行转发,还可以对交换机等转发设备的数据处理流程进行软件编程定义。p4语言实现的交换机架构如下图


1561476867994.png

p4语言特点

p4的几个需要注意的点:

p4的语言要素

  1. headers(metadata)
  2. parser
  3. table & action
  4. control flow code

headers

可以自定义header,添加目前数据包中不存在的字段,便于实现转发时候特定字段的匹配和动作。但是p4写成的程序只负责解析字段,所以还需要软件环境。

parser

用于解析数据包的headers的状态机,他可以有很多种状态,可以根据来的数据包的状态来选择变成哪个状态,而且有三个预留的状态

table & action

table是由controller通过南向协议进行下发,而匹配的模式可以由p4语言来确定,table只提供了表,怎么去查表,查表之后进行怎么样的动作,也都完全由p4程序来确定,包括匹配的key,下一步的action id,但是action data是由table传出来的。


1561476451635.png

control flow code

这部分就像是c++程序里面的顺序结构,规定先干什么,然后在干什么,最后干什么,这部分的可编程化,把交换机的单一功能变得更加自主和智能化。交换机不再仅仅完成简单的ip或者名称匹配,而是又一个复杂的流程需要完成,可以是多个匹配任务的连续,也可以对数据包的包头进行修改,增加,删减等动作。所谓的协议和转发策略一切变得跟软件开发一样简单。

上一篇 下一篇

猜你喜欢

热点阅读