[P4-discuss] Question about PI and PD

Aaron A. Glenn aaron at aagico.com
Sat May 19 08:50:35 EDT 2018

Hello Douglas,

I'm far from an authority on the subject, but was similarly confused and believe I've come to understand the situation better.

On Fri, May 18, 2018, at 15:34, Douglas Litke wrote:
> I am confused about what is PI and what is PD
> I know PI = Protocol Independent. But what does it do? How is it related 
> to P4Runtime (if it is)?
> I understand PD = Protocol Dependent. I assume this is the code that 
> runs on the switch, and controls the ASIC. Correct?

In the context of P4Runtime specifically, the distinction between architecture/platform dependence or independence is of most interest. P4Runtime is completely oblivious to any underlying protocol (even the RPC between controller & agent, though gRPC & protobuf definitions are exclusively being used, so far).

I've tried to follow things in the P4 world very closely over the past two years, but I missed the part where PI became P4Runtime. The repo name is "still" PI on githubcom/p4lang, despite everything in it being P4Runtime.

> Is there a defined interface between the P4Runtime code that decodes the 
> messages from the Controller, and the code generated by the P4C that 
> controls the ASIC? Or is it all one output?

I believe that is P4Info. I'm only a few weeks into exploring that, so  I'll leave my commentary there :-)

> I have gone through several presentations on P4 and P4Runtime, and have 
> not been able to get a clear picture of the pieces. Maybe I just did not 
> find the correct presentation.

I imagine and hope the evolving v1.0.0 P4Runtime draft will be as enlightening to you as it was me: 


it took a bit of effort to find, and I apologize in advance if it is not meant to be publicly announced or referenced!


  Aaron A. Glenn

+1 (877) 926-5767
AAGlenn Internetworking Company
Cheyenne, WY 82001 | +1 (307) 316-5767

More information about the P4-discuss mailing list