Skip to content

PSA Meeting Minutes Sep 18, 2017

Calin Cascaval edited this page Sep 19, 2017 · 1 revision

Attendees:

  • Calin, Tom, Vlad, Mihai, Han
  • online: AndyF, AndyK, Samar, BapiV, Antonin, Nate

Schedule

Meeting schedule

  • Every other week, Wed @ 1:30-3:00.
  • Rotate between Barefoot, Cisco, and Google

PSA developer day in Nov

  • AI: Calin to check with Antonin what we need to have bmv2-psa
  • release the spec as a draft for comments

Discussion

  • MAC size - number of members (action profile)
  • action selector - no limit on the number of groups.
  • Mihai: Number of groups x max(number of members) = table entries
  • Vlad: annotation for max number of groups?
  • Mihai: make it a constructor parameter. It should be possible to have an additional constructor with different parameters.
  • Samar: table entries are defining the number of flows, and the extern has an attribute that allows the max number of groups and the number of members in a group.
  • Vlad: max number of groups is a virtual parameters -- should be optional
  • Vlad: when programming the table, the selector field does is not part of the API generation
  • Andy: output_width parameter?
  • Tom: the max size of the group is 2^output_width
  • Mihai: it should be removed if there are no other possible uses
  • Samar: output_width is the size of the key
  • Tom: action selector gives the hash
  • Andy: if a group has no member, then it can not be added (current bmv2 behavior)
  • Samar: group size and member size parameters
  • Vlad: there are APIs that do allow 0-member groups and that do not allow sharing
  • Andy: P4runtime?
  • Andy: what happens when going outside the specified limits? The control plane should provide a clean error message.
  • Tom: an implementation should have at least the specified limit, it can work up to the real limit, and then fail, with the control plane reporting when the limits are exceeded.
  • AI Samar to update the PR based on the discussion

Type annotations (Calin)

  • type annotations are carried to all uses of a variable of that type, except in cases when the types are substituted
  • casting replaces the type, no annotations are carried through
  • On eliminating the ComputeChecksum control block
    • Typically there is a unit that computes it (which is not a control)
    • Checksum in deparser
    • deparser signature: inout param vs copy of the header
  • incremental checksums
    • one object with the hash algo and some hash algos support incremental
    • having two objects
  • TCP checksum computes checksum over the whole payload
    • P4_14 allows access to the payload
    • P4_16 doesn't have access to payload, but externs can access anything, so we need to add this access
    • what constitutes payload: what it is not parsed -- in ingress or egress?
  • Vlad: switches usually don't compute checksums over payload
  • Decision: no payload checksum
  • Decision: incremental checksum - the remove method, supported for Checksum16 only.
    • Nate: does remove have to save the old value?
    • Vlad: need to keep track of which values need to be removed and updated
  • Mihai: remove in ingress, compute the delta and pass to egress, and do the update in egress
  • Vlad: the remove returns the checksum value with the removed values
  • Nate: in is read-only, but it would be nice to have an in that allows copy-in and modification
  • Decision: eliminate the control and change to inout.
    • PSA already restricts what we can do in deparsers and will continue to warn
  • AI Nate to update the PR based on the discussion

Traffic classes (Andy)

  • AI Andy: need to update the PR. No controversial items.

Random extern (Andy)

  • AI Andy: need to update the PR. No controversial items.

Digest (Han)

  • extern that can be invoked in the deparser. emits data to the receiver specified in the constructor.
  • Andy: restrict emit to headers -- because of bit order semantics
    • metadata packaging has no bit order semantics
  • Vlad: Compiler defines the serialization order and generates the de-serialization code
  • Andy: marshal, serialize, pickle, pack

Clone emit semantics

  • Han: should we restrict emit/serialize to be called only once?
  • Cloning and resubmit: emit?
    • bit order semantics and parsed by a P4 program
  • Clone vs checksum
  • AI: Han to work on usage examples

Undefined values

  • make undefined values to be illegal defined values
  • anything that is in should be defined
  • needs an extra bit to represent the illegal value
  • AI: Andy to review the direction of the metadata

Agenda for next time

  • Cloning and metadata bridging
Clone this wiki locally