Hi,

 We found a issue related to idle timeout of flow entry while working on OVS 
1.2.2.

* Bug Description
Idle timeout is not resetting when packet matching the flow entry.


* What you did that make the problem appear?

1.        Made the following bridge:
     ovs-vsctl show
     e999897a-932f-4a57-81ce-252adc12cce9
     Bridge "br0"
        fail_mode: secure
        Port "br0"
            Interface "br0"
                type: internal
        Port "em1"
            Interface "em1"
        Port "vnet0"
            Interface "vnet0"


2.       Create a ICMP flow entry with idle timeout 20 seconds

3.       Send one ping packet after 10 seconds of this flow entry creation

4.       Verify flow table after next 10 seconds



* What you expected to happen?
    Flow entry should not be deleted and idle timer should restart when packet 
match the flow entry.

* What actually happened.
   Idle timeout is not resetting.


* The Open vSwitch version number (as output by "ovs-vswitchd --version")

ovs-vswitchd (Open vSwitch) 1.2.2
Compiled May 21 2012 11:23:22
OpenFlow versions 0x1:0x1

* The Git commit number (as output by "git rev-parse HEAD"),
   if you built from a Git snapshot.
   Not from git.

 * Any local patches or changes you have applied (if any).
   No patches are applied.


* The kernel version on which Open vSwitch is running (from

   /proc/version) and the distribution and version number of

   your OS (e.g. "Centos 5.0").
Linux version 2.6.38.6-26.rc1.fc15.x86_64 
(mockbu...@x86-04.phx2.fedoraproject.org<mailto:mockbu...@x86-04.phx2.fedoraproject.org>)
 (gcc version 4.6.0 20110428 (Red Hat 4.6.0-6) (GCC) ) #1 SMP Mon May 9 
20:45:15 UTC 2011

OVS OS- Fedora 15

* The output of "ovs-dpctl show".
system@br0:
                lookups: frags:0, hit:30, missed:6, lost:0
                port 0: br0 (internal)
                port 1: em1

* A fix or workaround, if you have one.
When a single packet hits the flow entry , an exact match flow (facet)is 
created in datapath but first time when this facet is created, the rule used 
time is not updated with facet used time. Rule used time is initialized when a 
rule is added to flow table ,hence for single packet the rule used time remains 
as rule creation time and rule gets deleted after idle timeout without 
resetting the timer.

Rule_expired routine in ofproto-dpif.c uses rule->used variable to determine 
whether to delete a rule or not,  but in facet_update_time routine in 
ofproto-dpif.c,  rule->used variable is updated only when used time of 
facet_execute is greater than facet used time, but for first packet both of 
these are equal and hence rule used time is not getting updated, If we change 
this condition to update rule->used variable when facet execute is greater than 
OR EQUAL TO facet used time, this will fix this issue.

* Any other information that you think might be relevant.
We have verified this on OVS-1.4.1, same is happening on this release also.




DISCLAIMER:

-----------------------------------------------------------------------------------------------------------------------

The contents of this e-mail and any attachment(s) are confidential and
intended

for the named recipient(s) only. 

It shall not attach any liability on the originator or NECHCL or its

affiliates. Any views or opinions presented in 

this email are solely those of the author and may not necessarily reflect the

opinions of NECHCL or its affiliates. 

Any form of reproduction, dissemination, copying, disclosure, modification,

distribution and / or publication of 

this message without the prior written consent of the author of this e-mail is

strictly prohibited. If you have 

received this email in error please delete it and notify the sender

immediately. .

-----------------------------------------------------------------------------------------------------------------------
_______________________________________________
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to