On Mon, Jun 10, 2019 at 01:19:33AM +0000, pei Jikui wrote:
> 1) Based on my understanding, there are two kinds of cases to age out the 
> datapath flow.
>     a) Timer.
>     b) revalidate. The flow will be deleted if there are some invalidated 
> conditions such as there is no output interface for this flow.
> 
> Even if the revalidate does not work, the timer mechanism will eventually 
> delete the flows.

The timer mechanism is only used if a flow becomes idle, which can take
an indefinite time.

> 2) Would you please help to elaborate what the impaction of this change 
> imposes to the case where the actions are changed from "drop" to anything 
> else?  I couldn't understand this well.

If the controller changes the OpenFlow flow table, then revalidation
might change datapath flow actions arbitrarily.  Some of those changes
can be from "drop" to something else.

> Thanks for working on the problem.
> 
> I agree that this will solve this particular problem.  At the same time,
> it will break OVS in every situation where a flow's actions need to
> change from "drop" to anything else.  We can't accept that regression,
> which would be a correctness issue, not just a performance issue.
> 
> On Sun, Jun 02, 2019 at 01:52:56AM +0000, pei Jikui wrote:
> > Attach the diff which I have verified locally.
> > Thanks.
> >
> > [root@localhost ovs]# git diff
> > diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c
> > index dc30824..c5a7de6 100644
> > --- a/ofproto/ofproto-dpif-upcall.c
> > +++ b/ofproto/ofproto-dpif-upcall.c
> > @@ -2678,9 +2678,12 @@ revalidate(struct revalidator *revalidator)
> >              }
> >              if (kill_them_all || (used && used < now - max_idle)) {
> >                  result = UKEY_DELETE;
> > -            } else {
> > +            /*Only validate the ukey if the flow's action is not 
> > drop.Since for the drop flows, there might be not validated.*/
> > +            } else if (f->actions_len > 0) {
> >                  result = revalidate_ukey(udpif, ukey, &f->stats, 
> > &odp_actions,
> >                                           reval_seq, &recircs);
> > +            } else {
> > +                result = UKEY_KEEP;
> >              }
> >              ukey->dump_seq = dump_seq;
> >
> >
> >
> > ________________________________
> > 发件人: [email protected] <[email protected]> 代表 
> > pei Jikui <[email protected]>
> > 发送时间: 2019年6月2日 9:42
> > 收件人: Ben Pfaff
> > 抄送: [email protected]; [email protected]
> > 主题: [ovs-dev] 回复: one issue in vxlan functionality of the kernel-datapath 
> > type of ovs
> >
> > hi,
> >
> > I looked into this further and found the root cause.
> >
> > 1) for the unwanted packets(no vxlan tunnel configured for this case), the 
> > receiver will install the drop-action flow to the datapath.
> > 2) when the revalidator thread is trying to age-out/clean-up the flows 
> > installed in step 1), they are considered as invalidated by revalidator 
> > thread since the revalidator thread could not find the xport for them. 
> > Hence the revalidator thread delete the them very soon.
> > 3) that is causing all the upcoming packets are sending to userspace again. 
> >   And repeat the steps that  a) send to userspace, b) install drop-action 
> > flow table c) the revalidator thread delete them.
> > 4) A proposed fix is if the flow's action is drop, we only bank on the time 
> > age-out mechanism to clean them up and don't enforce the revalidate_ukey 
> > action for them.
> >
> > Thanks.
> >
> > Jikui
> >
> > ________________________________
> > 发件人: pei Jikui <[email protected]>
> > 发送时间: 2019年5月25日 7:31
> > 收件人: Ben Pfaff
> > 抄送: [email protected]; [email protected]
> > 主题: Re: [ovs-dev] one issue in vxlan functionality of the kernel-datapath 
> > type of ovs
> >
> > In my test bed there is no any dropping flow entry generated in the 
> > datapath, which causes all the unwanted vxlan packets will go to the slow 
> > path.  That’s a little time-consuming for this case.
> >
> >
> >
> > 发送自 Outlook<http://aka.ms/weboutlook>
> >
> > ________________________________
> > 发件人: Ben Pfaff <[email protected]>
> > 发送时间: 2019年5月25日 2:36
> > 收件人: pei Jikui
> > 抄送: [email protected]; [email protected]
> > 主题: Re: [ovs-dev] one issue in vxlan functionality of the kernel-datapath 
> > type of ovs
> >
> > On Sat, May 18, 2019 at 10:23:50AM +0000, pei Jikui wrote:
> > > I found one issue in the vxlan functionality in kernel-datapath type of 
> > > ovs which could be potentially optimize?
> > >
> > >
> > > For example, there is a machine (A) running ovs with one configured one 
> > > vxlan interface with tunnel value 123,  then all the vxlan traffics 
> > > destinate to this machine(A) will be dealt with the ovs.
> > >
> > >
> > > Although the ovs in machine A only configured with one vxlan tunnel 
> > > (123), all the vxlan traffics regardless the tunnel value is 123 or not, 
> > > will be delivered to the vswitchd to do the slow path if there is no flow 
> > > tables found in the datapath.
> > >
> > > This is due to the vxlan configuration such as the configured vxlan 
> > > tunnel valuse does not exist in the datapath. (There is only one vxlan 
> > > tunnel with vni value 0 exist in the datapath’s vxlan configuration).
> >
> > It's true, but does it matter?  It would be unusual for a host to
> > receive much VXLAN traffic that it is only going to drop.
> > _______________________________________________
> > dev mailing list
> > [email protected]
> > https://mail.openvswitch.org/mailman/listinfo/ovs-dev
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to