P4语法(3)Table,Action

本文介绍了P4语言中的Table和Action概念。Table是P4中的匹配-动作表,包含key(匹配字段)、Action及其他属性。Key由表单对构成,Action是Table支持的操作类型。当数据包匹配key后,执行相应的Action。P4提供了default_action、counters等属性,并支持预设的table entry。Action类似函数,可以对数据包进行处理,包括协议无关的操作。文中还给出了ipv4转发的代码样例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Table

table是p4的匹配——动作表,定义了匹配字段(key)、动作(action)和一些其他相关属性。

其处理数据包的流程:

  1. Key construction.建立其匹配字段
  2. Key lookup in a lookup table.The result of key lookup is an "action". 数据包中去匹配table中的key中的字段,并获得要执行的"action"。
  3. Action execution.执行动作。

key

key由一个个表单对组成(e:m),其中e是对应数据包中匹配的字段,而m是一个match_kind常数用来表示匹配的算法。

例如:

1 key = {
2     hdr.ipv4.dstAddr:lpm;
3 }

这个就是以ipv4头的目的地址作为匹配字段,采用的是lpm(最长前缀字段)匹配方式。

p416 core现在提供三种默认的match_kind。 

1 match_kind{
2     lpm,//最长前缀字段
3     ternary,//三元匹配
4     exact//完全匹配
5 }

 

Action

table中的action list是列举了该table支持的action类型。用于action的匹配。

其他属性

p416提供了一些预设的其他属性:

  • default_action:当table miss的时候执行的动作。
  • counters:计数器
  • size:table大小
  • impl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值