P4

P4

Posted by chinaljr on August 1, 2018

Control Blocks

Actions

  • action 需要 action code 和 action data
    • data由控制层提供
    • action code 根据 action data 生成 data plane
action Forward_a(out bit<9> outputPort, bit<9> port) {
    outputPort = port;
}

tables

  • 流程
    • key construction
    • match
    • action
  • properties
    • key
    • actions
    • default_action
    • size

主要元素

  • key
    • expression :match_kind
  • match_kind
    • exact
    • ternary 用 mask
    • lpm 最长前缀
  • actions
    • 无方向参数,需要控制层指定
    • 有方向参数,在action list中指定
  • 静态entries
    • 运行时不可改变
    •   const entries = {
        (0x01, 0x1111 &&& 0xF ) : a_with_control_params(1);
        (0x02, 0x1181 ) : a_with_control_params(2);
        (0x03, 0x1111 &&& 0xF000) : a_with_control_params(3);
        (0x04, 0x1211 &&& 0x02F0) : a_with_control_params(4);
        (0x04, 0x1311 &&& 0x02F0) : a_with_control_params(5);
        (0x06, _ ) : a_with_control_params(6);
        }
      
  • size
    • 不一定是条目数???
  • 附加参数
    • implemention
  • apply()
  • control 内部可以 调用 control
    • 实例化
    • instance.apply()

Parameterization

除了运行必须的参数,还可以添加可选参数

deparsing

packet_out.emit

Architecture description

设备商一定会提供一个关于package的说明。