P4入门(一)

P4入门(一)

PISA和openflow

openflow和P4都基于Programmable Hardwares(可编程硬件)的理念。openflow是再Control Plane(控制层)实时改写switch和router上的路由表。但是openflow存在许多问题,于是Protocol Independent Switch Architecture(PISA)诞生,从更底层入手把packet的转发最基础的过程高度抽象化,消除了openflow存在的很多问题。它的图示如下:
PISA

P4简介

P4是一种类似C语言的静态语言。代码文件的基本样式如下:
20230527101940

  • Libraries: 类似C语言的库文件;
  • Declarations:定义基本数据结构,支持typedef;
  • Parse packet headers:放置解析headers的代码;
  • Control flow:代码的逻辑部分,定义Match-Action functions,按照定义的规则修改网络包里的内容(这里只有Ingress部分,还会有Egress部分);
  • Assemble: Deparser部分把前面修改好的部分重新组装为一个新的packet转发;
  • main: 将定义好的部分按正确的顺序调用
    • 一般为三段式:Parser->Match-Action Pipeline->Deparser

总结

本篇简单介绍了P4的背景,架构,它的出现就是方便我们在不那么“灵活”的硬件上编写自己设计的“灵活”protocol。


P4入门(一)
http://clordc.github.io/2023/05/29/P4入门(一)/
作者
Oscar Cui
发布于
2023年5月29日
许可协议