数据包循环
数据包将要从egress出去时再循环进入交换机
p4文件
#include <core.p4>
#include <v1model.p4>
typedef bit<48> macAddr_t;
typedef bit<9> egressSpec_t;
header ethernet_t {
bit<48> dstAddr;
bit<48> srcAddr;
bit<16> etherType;
}
header ipv4_t {
bit<4> version;
bit<4> ihl;
bit<8> diffserv;
bit<16> totalLen;
bit<16> identification;
bit<3> flags;
bit<13> fragOffset;
bit<8> ttl;
bit<8> protocol;
bit<16> hdrChecksum;
bit<32> srcAddr;
bit<32> dstAddr;
}
struct metadata {
}
struct headers {
@name(".ethernet")
ethernet_t ethernet;
@name(".ipv4")
ipv4_t ipv4;
}
parser ParserImpl(packet_in packet, out headers hdr, inout metadata meta, inout standard_metadata_t standard_metadata) {
@name(".parse_ethernet") state parse_ethernet {
packet.extract(hdr.ethernet);
transition select(hdr.ethernet.etherType) {
16w0x800: parse_ipv4;

本文档展示了一个使用P4语言编写的交换机配置,该配置在数据包即将离开(egress)交换机时将其循环回设备进行处理。通过定义一个名为set_mytos的动作和相应的表set_tos,实现了根据IP包的TOS字段来调整其值并重新注入到交换机。此外,还包含了ingress和egress控制平面,用于处理包的入站和出站逻辑,包括修改源MAC地址、目的MAC地址、TTL以及校验和计算。测试部分说明了如何使用mininet进行网络部署和包捕获,以验证P4程序的功能。
最低0.47元/天 解锁文章
991

被折叠的 条评论
为什么被折叠?



