searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

初识P4(一)

2023-09-27 07:35:30
29
0

开篇首先记住一张图

上图展示了一个P4程序通过编译载入到芯片中,通过底层驱动与上层API和控制面进行配合。

今天首先学习P4语言的一部分。P4有14和16版本,这里以16为例。

        P4的数据面模型是PISA形式,即不依赖协议的交换机架构。当收到报文时,首先解析器解析报文头部信息,之后通过Match-Action去匹配,最后通过deparser封装报文头部信息,转发出去。

在上述过程中,是一个流水线的一半的过程,即是pipeline的ingress或者egress的流程。一条流水线如图:

其中PRE是包复制引擎,TM是流量管理器。

      TNA架构包含的部分为:

ingress 和 egress的pipeline、tf的固有数据、PacketIO、Packet复制引擎(PRE)、TM

    一个合格的P4程序:

 

#include <core.p4>
#include <tna.p4>

parser start {
    
}

control ingress {
    apply {
        // 处理入口数据包的逻辑
    }
    drop {} // 丢弃不符合规则的数据包
}

control egress {
    apply {
        // 处理出口数据包的逻辑
    }
    drop {} // 丢弃不符合规则的数据包
}

 

除此之外,还要定义头文件:

 

header_type ethernet_t {
    bit<48> dst_addr;
    bit<48> src_addr;
    ....
}

header ethernet_t ethernet_header;

 

以上就是今日主要分享的内容,包括前置知识P4交换机结构以及P4程序的工作流程、P4程序模板。

下期继续学习P4!!

    

0条评论
0 / 1000
w****m
3文章数
0粉丝数
w****m
3 文章 | 0 粉丝
w****m
3文章数
0粉丝数
w****m
3 文章 | 0 粉丝
原创

初识P4(一)

2023-09-27 07:35:30
29
0

开篇首先记住一张图

上图展示了一个P4程序通过编译载入到芯片中,通过底层驱动与上层API和控制面进行配合。

今天首先学习P4语言的一部分。P4有14和16版本,这里以16为例。

        P4的数据面模型是PISA形式,即不依赖协议的交换机架构。当收到报文时,首先解析器解析报文头部信息,之后通过Match-Action去匹配,最后通过deparser封装报文头部信息,转发出去。

在上述过程中,是一个流水线的一半的过程,即是pipeline的ingress或者egress的流程。一条流水线如图:

其中PRE是包复制引擎,TM是流量管理器。

      TNA架构包含的部分为:

ingress 和 egress的pipeline、tf的固有数据、PacketIO、Packet复制引擎(PRE)、TM

    一个合格的P4程序:

 

#include <core.p4>
#include <tna.p4>

parser start {
    
}

control ingress {
    apply {
        // 处理入口数据包的逻辑
    }
    drop {} // 丢弃不符合规则的数据包
}

control egress {
    apply {
        // 处理出口数据包的逻辑
    }
    drop {} // 丢弃不符合规则的数据包
}

 

除此之外,还要定义头文件:

 

header_type ethernet_t {
    bit<48> dst_addr;
    bit<48> src_addr;
    ....
}

header ethernet_t ethernet_header;

 

以上就是今日主要分享的内容,包括前置知识P4交换机结构以及P4程序的工作流程、P4程序模板。

下期继续学习P4!!

    

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0