P4学习----Control

P4提供了一种称为Control的结构,它可以由多个表和命令语句组合成更大的代码块。
在 P4 裡面有两个主要的 control flow:ingress、 egress,这两个 control flow 分别代表了一个数据包的进入以及离开。

当 Parser 处理完数据包之后,会将相关的信息,例如解析出来的 header 以及 metadata 储存,然后交由 ingress 处理,ingress 会将封包送往不同的 table、更改数据包 header 内容、设定输出的 port 等等,最后再丢到一个 Queue 中。

Egress 则是会将 Queue 的信息拿出来,再一次的处理并且将数据包包送出、丢弃或是重新处理(recirculate)。

在这里插入图片描述
在control中,可以声明actions和tables,将actions和tables应用。
在这里插入图片描述
Egress spec/port
除了对数据包处理以外,数据包的转发也是网络设备的重要功能,要设定数据包送出去的port,只需要在ingress阶段中设定standard的egress_spec即可:
modify_field(standard_metadata.egress_spec,1);
egress_spec不一定只是一个port,他可以是一个route、VLAN fllod group或是multicast group,而这些要事先于switch中先定义好。
而在egress阶段可以通过standard_metadata取得egress_port这一个值(只读)来判断下一步做什么。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值