美文网首页
p4数据面编程语言

p4数据面编程语言

作者: 彳亍cium | 来源:发表于2019-10-07 18:35 被阅读0次

p4语言简介

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

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


1561476867994.png

p4语言特点

p4的几个需要注意的点:

  • 可以实现现有协议的转发功能
  • 可以自定义数据包结构
  • 可以在现有协议的基础上进行新的功能开发
  • SW 风格开发——协议和转发的开发模式类似于软件开发

p4的语言要素

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

headers

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

parser

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

  • start
  • reject
  • accept


    1561476068584.png

    除这三个之外的状态可以自己定义,状态之间的转变也可以用户自己定义,完全是可编程的。

table & action

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


1561476451635.png

control flow code

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

相关文章

网友评论

      本文标题:p4数据面编程语言

      本文链接:https://www.haomeiwen.com/subject/ziimpctx.html