-
Notifications
You must be signed in to change notification settings - Fork 80
PSA Meeting Minutes Sep 18, 2017
Calin Cascaval edited this page Sep 19, 2017
·
1 revision
- Calin, Tom, Vlad, Mihai, Han
- online: AndyF, AndyK, Samar, BapiV, Antonin, Nate
- Every other week, Wed @ 1:30-3:00.
- Rotate between Barefoot, Cisco, and Google
- AI: Calin to check with Antonin what we need to have bmv2-psa
- release the spec as a draft for comments
Action profiles (Samar) https://github.com/p4lang/p4-spec/pull/410
- 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 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
Checksum (Nate) https://github.com/p4lang/p4-spec/pull/421
- 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 anin
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
- AI Andy: need to update the PR. No controversial items.
- AI Andy: need to update the PR. No controversial items.
- 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
- 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
- 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
- Cloning and metadata bridging