<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Apr 19, 2017 at 12:56 AM,  <span dir="ltr"><<a href="mailto:ding.rui@zte.com.cn" target="_blank">ding.rui@zte.com.cn</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail-m_-1980048246684901878zcontentRow"> <p>Thanks, I still have some questions.</p><p>1)Why is <span style="line-height:21px">Thrift RPC API  <span style="line-height:21px">not portable? <span style="line-height:21px">In my opinion,<span style="line-height:21px">Thrift RPC API  and </span> <span style="line-height:21px">protobuf / gRPC API  are functionally similar.</span></span></span></span></p></div></blockquote><div>It is non-portable in the sense that we are not going to standardize this API across P4 targets. It was written for bmv2 and is only implemented for bmv2.</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail-m_-1980048246684901878zcontentRow"><p><span style="line-height:21px">2)Is Thrift RPC API only used for bmv2's CLI? Will <span style="line-height:21px">Thrift RPC API  and </span><span style="line-height:21px"> </span><span style="line-height:21px">protobuf / gRPC API exist simultaneously or not?</span></span></p></div></blockquote><div>A target-independent CLI will ultimately be built on top of the gRPC API. The current implementation of the gRPC API for bmv2 actually uses the Thrift API, so yes at the moment both exist simultaneously. The current design is like this: there is one gRPC server for a "chassis" of bmv2 instances. This gRPC server communicates with each bmv2 instance / process using the Thrift API. Because each bmv2 instance runs its own Thrift server, the bmv2 CLI can still be used. However, this is a little silly because we have a dependency on 2 different RPC mechanisms and there is the overhead of translation from protobuf to Thrift in the middle. There is a version of simple_switch in the bmv2 repo (<a href="https://github.com/p4lang/behavioral-model/tree/master/targets/simple_switch_grpc">https://github.com/p4lang/behavioral-model/tree/master/targets/simple_switch_grpc</a>) which does not use Thrift at all, but simply starts a gRPC server. Of course this means that one gRPC server can only manage on bmv2 instance (instead of a chassis of instances). In the future, we may need to be able to run multiple bmv2 instances in a single process (and with a single gRPC server). Of course this code is still experimental.</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail-m_-1980048246684901878zcontentRow"><p><span style="line-height:21px"><span style="line-height:21px">3)What about PI? Is PI CLI use the new <span style="line-height:21px">protobuf / gRPC API?</span></span></span></p></div></blockquote><div>Ultimately there will be a target-independent CLI built on top of the gRPC API. The current PI CLI in the PI repo was more a proof of concept and uses some ad-hoc RPC mechanism. It will be quickly deprecated once we have a proper CLI using the gRPC API.<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail-m_-1980048246684901878zcontentRow"><p><br></p><p><br></p><p><br></p><div><div class="gmail-m_-1980048246684901878zhistoryRow" style="display:block"><div class="gmail-m_-1980048246684901878zhistoryDes" style="width:100%;height:28px;line-height:28px;background-color:rgb(224,229,233);color:rgb(19,136,255);text-align:center">原始邮件</div><div id="gmail-m_-1980048246684901878zwriteHistoryContainer"><div class="gmail-m_-1980048246684901878control-group gmail-m_-1980048246684901878zhistoryPanel"><div class="gmail-m_-1980048246684901878zhistoryHeader" style="padding:8px;background-color:rgb(245,246,248)"><div><strong>发件人:</strong><span class="gmail-m_-1980048246684901878zreadUserName"> <<a href="mailto:antonin@barefootnetworks.com" target="_blank">antonin@barefootnetworks.com</a>><wbr>;</span></div><div><strong>收件人:</strong><span class="gmail-m_-1980048246684901878zreadUserName" style="display:inline-block">丁瑞10106591;</span><span class="gmail-m_-1980048246684901878zreadUserName" style="display:inline-block"> <<a href="mailto:p4-dev@lists.p4.org" target="_blank">p4-dev@lists.p4.org</a>>;</span></div><div><strong>日 期 :</strong><span>2017年04月19日 03:14</span></div><div><strong>主 题 :</strong><span class="gmail-m_-1980048246684901878zreadTitle"><strong>Re: Re: [P4-dev] A question about reconfiguration bmv2 dynamically.</strong></span></div></div><p class="gmail-m_-1980048246684901878zhistoryContent"><br></p><div><div dir="ltr">Adding back the mailing list (my bad for removing it).<br><div>If you don't want to use the CLI, your options are limited right now. You can use the bmv2 Thrift RPC API directly to swap the config: <a href="https://github.com/p4lang/behavioral-model/blob/master/thrift_src/standard.thrift#L560" target="_blank">https://github.com/<wbr>p4lang/behavioral-model/blob/<wbr>master/thrift_src/standard.<wbr>thrift#L560</a> (this is the API that the CLI is implemented with). The problem with this Thrift API is that it is not portable: your code will only work with bmv2.</div><div>We are working on a new protobuf / gRPC API (<a href="https://github.com/p4lang/PI/blob/master/proto/p4/p4runtime.proto" target="_blank">https://github.com/p4lang/PI/<wbr>blob/master/proto/p4/<wbr>p4runtime.proto</a>) but it is still in the works and won't be ready for use for a while.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Apr 17, 2017 at 7:56 PM,  <span dir="ltr"><<a href="mailto:ding.rui@zte.com.cn" target="_blank">ding.rui@zte.com.cn</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail-m_-1980048246684901878m_6732252485710912684zcontentRow"><p>Thanks for your reply. I want to ask another question. I am trying to reconfigure bmv2 by SDN controller.</p><p>Could you give some advice?  </p><p><br></p><p><br></p><p><br></p><p><br></p><div><div class="gmail-m_-1980048246684901878m_6732252485710912684zhistoryRow" style="display:block"><div class="gmail-m_-1980048246684901878m_6732252485710912684zhistoryDes" style="width:100%;height:28px;line-height:28px;background-color:rgb(224,229,233);color:rgb(19,136,255);text-align:center">原始邮件</div><div id="gmail-m_-1980048246684901878m_6732252485710912684zwriteHistoryContainer"><div class="gmail-m_-1980048246684901878m_6732252485710912684control-group gmail-m_-1980048246684901878m_6732252485710912684zhistoryPanel"><div class="gmail-m_-1980048246684901878m_6732252485710912684zhistoryHeader" style="padding:8px;background-color:rgb(245,246,248)"><div><strong>发件人:</strong><span class="gmail-m_-1980048246684901878m_6732252485710912684zreadUserName"> <<a href="mailto:antonin@barefootnetworks.com" target="_blank">antonin@barefootnetworks.com</a>><wbr>;</span></div><div><strong>收件人:</strong><span class="gmail-m_-1980048246684901878m_6732252485710912684zreadUserName" style="display:inline-block">丁瑞10106591;</span></div><div><strong>日 期 :</strong>2017年04月18日 00:09</div><div><strong>主 题 :</strong><span class="gmail-m_-1980048246684901878m_6732252485710912684zreadTitle"><strong>Re: [P4-dev] A question about reconfiguration bmv2 dynamically.</strong></span></div></div><div><div class="gmail-m_-1980048246684901878h5"><p class="gmail-m_-1980048246684901878m_6732252485710912684zhistoryContent"><br></p><div><div dir="ltr">Hi,<br><div>I sent a detailed answer to the community a couple months ago: <a href="http://lists.p4.org/pipermail/p4-dev_lists.p4.org/2017-February/000740.html" target="_blank">http://lists.p4.org/piper<wbr>mail/p4-dev_lists.p4.org/2017-<wbr>February/000740.html</a></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Apr 16, 2017 at 7:18 PM,  <span dir="ltr"><<a href="mailto:ding.rui@zte.com.cn" target="_blank">ding.rui@zte.com.cn</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail-m_-1980048246684901878m_6732252485710912684m_-1779615648029087325zcontentRow"><p>Hi,</p><p>    I want to ask a question. Who can tell me how to upgrade bmv2 logic with json file dynamically? <br>In other words, reconfiguration bmv2 <span style="line-height:21px">dynamically.</span></p><p><br></p><p><br></p><p><br></p></div><br>______________________________<wbr>_________________<br> P4-dev mailing list<br> <a href="mailto:P4-dev@lists.p4.org" target="_blank">P4-dev@lists.p4.org</a><br> <a href="http://lists.p4.org/mailman/listinfo/p4-dev_lists.p4.org" rel="noreferrer" target="_blank">http://lists.p4.org/mailman/li<wbr>stinfo/p4-dev_lists.p4.org</a><br></blockquote></div><br><br clear="all"><span class="gmail-HOEnZb"><font color="#888888"><br>-- <br><div class="gmail-m_-1980048246684901878m_6732252485710912684gmail_signature"><div dir="ltr">Antonin<br></div></div></font></span></div></div><span class="gmail-HOEnZb"><font color="#888888"><p><br></p></font></span></div></div></div></div></div></div><span class="gmail-HOEnZb"><font color="#888888"><p><br></p></font></span></div></blockquote></div><span class="gmail-HOEnZb"><font color="#888888"><br><br clear="all"><br>-- <br><div class="gmail-m_-1980048246684901878gmail_signature"><div dir="ltr">Antonin<br></div></div></font></span></div></div><p><br></p></div></div></div></div><p><br></p> </div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr">Antonin<br></div></div>
</div></div>