P4 学习更新中......

enum bit<16> EtherType {
VLAN = 0x8100,
QINQ = 0x9100,
MPLS = 0x8847,
IPV4 = 0x0800,
IPV6 = 0x86dd
}

MPLS
header Mpls_h {
bit<20> label;
bit<3> tc;
bit bos;
bit<8> ttl;
}
Mpls_h[10] mpls;

VLAN学习
字段

长度

含义

取值

TPID

2Byte

Tag Protocol Identifier(标签协议标识符),表示数据帧类型。

取值为0x8100时表示IEEE 802.1Q的VLAN数据帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。

各设备厂商可以自定义该字段的值。当邻居设备将TPID值配置为非0x8100时, 为了能够识别这样的报文,实现互通,必须在本设备上修改TPID值,确保和邻居设备的TPID值配置一致。

PRI

3bit

Priority,表示数据帧的802.1p优先级。

取值范围为0~7,值越大优先级越高。当网络阻塞时,交换机优先发送优先级高的数据帧。

CFI

1bit

Canonical Format Indicator(标准格式指示位),表示MAC地址在不同的传输介质中是否以标准格式进行封装,用于兼容以太网和令牌环网。

CFI取值为0表示MAC地址以标准格式进行封装,为1表示以非标准格式封装。在以太网中,CFI的值为0。

VID

12bit

VLAN ID,表示该数据帧所属VLAN的编号。

VLAN ID取值范围是0~4095。由于0和4095为协议保留取值,所以VLAN ID的有效取值范围是1~4094。
P4 学习更新中......_第1张图片
P4 学习更新中......_第2张图片

注意事项

  1. action中一般不要写if-else分支,否则会出现Conditional execution in actions unsupported on this target这个错误,把分支写在apply里
  2. V1MODEL的六个部分一定要严格与标准对应,不能缺少,参数形式也要对应
  3. struct headers 成员不能是bit和struct的混合,一定要统一

你可能感兴趣的:(可编程网络,学习)