[P4-dev] Implementation on marking a particular flow
hamkuu at gmail.com
Thu Dec 22 10:15:12 EST 2016
I am trying to implement a P4 program that can mark the characteristics (i.e. some header information) of a packet, so that subsequent packets of the same flow can be processed faster under some shortcut processing pipeline.
After reading the P4 specification, I’m considering using Register to implement this feature. But I was confused by some description, as I quoted from the latest specification:
Registers are stateful memories whose values can be read and written in actions. They are like counters, but can be used in a more general way to keep state.
A simple example use might be to verify that a "first packet" was seen for a particular type of flow. A register cell would be allocated to the flow, initialized to "clear". When the protocol signalled a "first packet", the table would match on this value and update the flow’s cell to "marked". Subsequent packets in the flow could would be mapped to the same cell; the current cell value would be stored in metadata for the packet and a subsequent table could check that the flow was marked as active.
What I confused about is [When the protocol signalled a "first packet”]. Can anyone explain the mechanism on signaling a first packet? What does THE protocol mean in this case?
If anyone had implement such feature before, any source code or pseudo-code would help.
Another question (which might be silly question, but I really need to clear my confusion):
Are stateful memories like Counter, Meter, and Register part of the metadata in the P4 language?
Thanks in advance.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the P4-dev