I notice in your code below you are using CACHE_TIMEOUT as the idle
timeout.  Assuming you're modifying pyswitch, that's only 5 seconds.  Is
this the actual code you're using?  Are you sure your flows aren't just
timing out?  If you change that to OFP_FLOW_PERMANENT, will it start
doing what you want?

-- Murphy

On Mon, 2011-02-21 at 23:04 -0800, [email protected] wrote: 
> I am using a Fulcrum microsystems switch that has provided an
> openvswitch implementation for their switches.
> I need to run ovs-openflowd  on the switch that connects to the
> specified nox controller and supports the standard openvswitch flow
> insertion rules etc.
> 
> ----- Original Message -----
> From: "Kyriakos Zarifis" <[email protected]>
> To: [email protected]
> Cc: "Murphy McCauley" <[email protected]>, "nox-dev"
> <[email protected]>
> Sent: Monday, February 21, 2011 10:40:15 PM GMT -08:00 US/Canada
> Pacific
> Subject: Re: [nox-dev] Matching wildcard flows with different
> priorities
> 
> Hey Malveeka, 
> 
> 
> what kind of switch are you using? (sorry if you mentioned this and I
> missed it)
> 
> On Mon, Feb 21, 2011 at 9:08 PM, <[email protected]> wrote:
>         So if I insert the rules in the order flow1, flow2 then you're
>         right  flow2 doesn't get installed . 
>         However, if I insert flow2 and then flow1, both rule do get
>         installed but in that case,  even packets that should match
>         flow1 (because it's higher priority) match against flow2 and
>         get forwarded incorrectly. 
>         
>         
>         
>         
>         
>         ----- Original Message -----
>         From: "Murphy McCauley" <[email protected]>
>         To: [email protected]
>         Cc: "nox-dev" <[email protected]>
>         
>         
>         Sent: Monday, February 21, 2011 8:28:38 PM GMT -08:00
>         US/Canada Pacific
>         Subject: Re: [nox-dev] Matching wildcard flows with different
>         priorities
>         
>         I think my next step would be to inspect the switch and see if
>         the flows I'm expecting are there (that is... is flow2
>         actually getting installed?).  If you're using the reference
>         switch or Open vSwitch, I'd just use the appropriate dpctl
>         tool to dump the flow table. 
>         
>         
>         -- Murphy 
>         
>         On Feb 21, 2011, at 8:09 PM, [email protected] wrote: 
>         
>                 I am not building the match by hand. 
>                 
>                 
>                 I am specifying the flow as a dictionary and calling
>                 the install_datapath_flow method: 
>                 
>                 
>                 inst.install_datapath_flow(dpid, flow, CACHE_TIMEOUT, 
>                 
>                 openflow.OFP_FLOW_PERMANENT, actions, 
>                                                    bufid, priority, 
>                                                    port, buf) 
>                 where flow is simply a dictionary ..  
>                 flow1 = {'dl_dst': array('B', [0, 96, 221, 70, 81,
>                 94]), 'dl_src': array('B', [0, 96, 221, 70, 81, 94])} 
>                 flow2 = {'dl_src': array('B', [0, 96, 221, 70, 81,
>                 94])} 
>                 
>                 
>                 and I invoke install_datapath_flow to insert entries
>                 flow flow1 and flow2. 
>                 
>                 
>                 From what I understand install_datapath_flow
>                 internally calls set_match to create the ofp_match
>                 object for the flow. 
>                 I even tried creating a ofp_match object for the given
>                 flow and passing it to the install_datapath_flow
>                 command in place of flow but that gave me an
>                 AttributeError 
>                 
>                 
>                 Following is the traceback. 
>                 
>                 
>                 Traceback (most recent call last): 
>                   File "./nox/lib/util.py", line 138, in f 
>                     ret = f.cb(event.datapath_id, attrs) 
>                   File "./nox/coreapps/examples/hybriddc.py", line 66,
>                 in datapath_join_callback 
>                     rules.insert_static_rules(inst, dpid, 1) 
>                   File "./nox/coreapps/examples/staticrules.py", line
>                 38, in insert_static_rules 
>                     self.insert_rules_pod01(inst, dpid) 
>                   File "./nox/coreapps/examples/staticrules.py", line
>                 112, in insert_rules_pod01 
>                     None, None) 
>                   File "./nox/coreapps/examples/staticrules.py", line
>                 288, in insert_forwarding_rule 
>                     port, buf) 
>                   File "./nox/lib/core.py", line 380, in
>                 install_datapath_flow 
>                     (idle_timeout, actions, buffer_id), hard_timeout) 
>                   File "./nox/lib/core.py", line 253, in
>                 send_flow_command 
>                     m = set_match(attrs) 
>                   File "./nox/lib/util.py", line 250, in set_match 
>                     if attrs.has_key(core.IN_PORT): 
>                   File "./nox/lib/openflow.py", line 756, in <lambda> 
>                     __getattr__ = lambda self, name:
>                 _swig_getattr(self, ofp_match, name) 
>                   File "./nox/lib/openflow.py", line 54, in
>                 _swig_getattr 
>                     raise AttributeError(name) 
>                 
>                 
>                 
>                 
>                 
>                 
>                 
>                 ----- Original Message -----
>                 From: "Murphy McCauley" <[email protected]>
>                 To: [email protected]
>                 Cc: "nox-dev" <[email protected]>
>                 Sent: Monday, February 21, 2011 7:41:47 PM GMT -08:00
>                 US/Canada Pacific
>                 Subject: Re: [nox-dev] Matching wildcard flows with
>                 different priorities
>                 
>                 The expected behavior is as you expect, not what
>                 you're observing.  Are you building the match by hand,
>                 or are you using set_match() (in util) or something
>                 that calls it?  If you're building it by hand, are you
>                 accounting for byte order in the wildcards field using
>                 htonl()? 
>                 
>                 
>                 -- Murphy 
>                 
>                 On Feb 21, 2011, at 6:18
>                 PM, [email protected] wrote: 
>                 
>                         Hi 
>                         
>                         
>                         I thought I'd start another thread for this
>                         issue.. 
>                         
>                         
>                         I am inserting the following two flow entries
>                         in the switch.  
>                         
>                         
>                         1) match: (src1, dst1, *) ,  action: send out
>                         on port x, priority = 101 (higher priority)
>                         
>                         2) match: (src1, *)  action: send out on port
>                         y,  priority = 5 (lower priority) 
>                         
>                         
>                         The flow between src1 and dst1 is correctly
>                         being sent on port x. This is expected because
>                         flow entry 1 has a higher priority. 
>                         
>                         
>                         However for a flow between src1 and dst2, the
>                         packets  are being sent to the controller
>                         instead of being sent out on port y. 
>                         
>                         
>                         I had expected that since the match will fail
>                         for a higher priority flow entry it'll be
>                         matched against the lower priority entry and
>                         sent out on port y but this doesn't seem to be
>                         the case. 
>                         Is this the expected behavior ? 
>                         
>                         
>                         If so, what should I change so that the flows
>                         between src1 and destination other than dst1
>                         are sent out on port y ? 
>                         
>                         
>                         Thanks! 
>                         Malveeka 
>                         _______________________________________________
>                         nox-dev mailing list
>                         [email protected]
>                         
> http://noxrepo.org/mailman/listinfo/nox-dev_noxrepo.org
>                         
>                 
>                 
>                 
>         
>         
>         
>         _______________________________________________
>         nox-dev mailing list
>         [email protected]
>         http://noxrepo.org/mailman/listinfo/nox-dev_noxrepo.org
>         
> 
> 




_______________________________________________
nox-dev mailing list
[email protected]
http://noxrepo.org/mailman/listinfo/nox-dev_noxrepo.org

Reply via email to