diff mbox series

[ovs-dev] ofproto-dpif-xlate: Report ct fields changes in ofproto/trace

Message ID 1521051401-26151-1-git-send-email-yihung.wei@gmail.com
State Accepted
Headers show
Series [ovs-dev] ofproto-dpif-xlate: Report ct fields changes in ofproto/trace | expand

Commit Message

Yi-Hung Wei March 14, 2018, 6:16 p.m. UTC
With commit f6fabcc6 ("ofproto-dpif: Mark packets as "untracked" after
call to ct()", after the ct() action, the packet conntrack state is set
to an untracked state, and all the conntrack fields are cleared.
This patch updates ofproto/trace report to reflect this change, so that
it would be easier to debug OpenFlow pipeline with conntrack.

Signed-off-by: Yi-Hung Wei <yihung.wei@gmail.com>
---
 ofproto/ofproto-dpif-xlate.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Ben Pfaff March 14, 2018, 10:27 p.m. UTC | #1
On Wed, Mar 14, 2018 at 11:16:41AM -0700, Yi-Hung Wei wrote:
> With commit f6fabcc6 ("ofproto-dpif: Mark packets as "untracked" after
> call to ct()", after the ct() action, the packet conntrack state is set
> to an untracked state, and all the conntrack fields are cleared.
> This patch updates ofproto/trace report to reflect this change, so that
> it would be easier to debug OpenFlow pipeline with conntrack.
> 
> Signed-off-by: Yi-Hung Wei <yihung.wei@gmail.com>

Would you mind showing an example to provide context?

Thanks,

Ben.
Yi-Hung Wei March 14, 2018, 11:14 p.m. UTC | #2
On Wed, Mar 14, 2018 at 3:27 PM, Ben Pfaff <blp@ovn.org> wrote:
> On Wed, Mar 14, 2018 at 11:16:41AM -0700, Yi-Hung Wei wrote:
>> With commit f6fabcc6 ("ofproto-dpif: Mark packets as "untracked" after
>> call to ct()", after the ct() action, the packet conntrack state is set
>> to an untracked state, and all the conntrack fields are cleared.
>> This patch updates ofproto/trace report to reflect this change, so that
>> it would be easier to debug OpenFlow pipeline with conntrack.
>>
>> Signed-off-by: Yi-Hung Wei <yihung.wei@gmail.com>
>
> Would you mind showing an example to provide context?
>

Hi Ben,

Here is a simplified version of what I was debugging using ofproto/trace.


table=0, in_port=1, tcp, action=ct(table=1)

table=1, tcp, action=resubmit(,2), resubmit(,3)

table=2, ct_state=+trk+new, action=ct(commit)

table=3, ct_state=+trk+new, action=output:2
table=3, ct_state=-trk, action=drop


Basically, the controller is expecting the ct_sate to be +trk+new in
table 3, however, it is clear in the first resubmit in table 2 (after
ovs 2.9).  Therefore, mentioning that in the ofproto/trace report
would be helpful to know that the conntrack fields are actually
cleared.

-Yi-Hung
Ben Pfaff April 4, 2018, 11:16 p.m. UTC | #3
On Wed, Mar 14, 2018 at 04:14:58PM -0700, Yi-Hung Wei wrote:
> On Wed, Mar 14, 2018 at 3:27 PM, Ben Pfaff <blp@ovn.org> wrote:
> > On Wed, Mar 14, 2018 at 11:16:41AM -0700, Yi-Hung Wei wrote:
> >> With commit f6fabcc6 ("ofproto-dpif: Mark packets as "untracked" after
> >> call to ct()", after the ct() action, the packet conntrack state is set
> >> to an untracked state, and all the conntrack fields are cleared.
> >> This patch updates ofproto/trace report to reflect this change, so that
> >> it would be easier to debug OpenFlow pipeline with conntrack.
> >>
> >> Signed-off-by: Yi-Hung Wei <yihung.wei@gmail.com>
> >
> > Would you mind showing an example to provide context?
> >
> 
> Hi Ben,
> 
> Here is a simplified version of what I was debugging using ofproto/trace.
> 
> 
> table=0, in_port=1, tcp, action=ct(table=1)
> 
> table=1, tcp, action=resubmit(,2), resubmit(,3)
> 
> table=2, ct_state=+trk+new, action=ct(commit)
> 
> table=3, ct_state=+trk+new, action=output:2
> table=3, ct_state=-trk, action=drop
> 
> 
> Basically, the controller is expecting the ct_sate to be +trk+new in
> table 3, however, it is clear in the first resubmit in table 2 (after
> ovs 2.9).  Therefore, mentioning that in the ofproto/trace report
> would be helpful to know that the conntrack fields are actually
> cleared.

Thanks.  I applied this to master.
diff mbox series

Patch

diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c
index bc6429c25346..104315ff53b6 100644
--- a/ofproto/ofproto-dpif-xlate.c
+++ b/ofproto/ofproto-dpif-xlate.c
@@ -5750,6 +5750,8 @@  compose_conntrack_action(struct xlate_ctx *ctx, struct ofpact_conntrack *ofc,
     /* The ct_* fields are only available in the scope of the 'recirc_table'
      * call chain. */
     flow_clear_conntrack(&ctx->xin->flow);
+    xlate_report(ctx, OFT_DETAIL, "Sets the packet to an untracked state, "
+                 "and clears all the conntrack fields.");
     ctx->conntracked = false;
 }