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" <jam...@nau.edu> To: malve...@cs.ucsd.edu Cc: "nox-dev" <nox-dev@noxrepo.org> 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, malve...@cs.ucsd.edu 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" < jam...@nau.edu > To: malve...@cs.ucsd.edu Cc: "nox-dev" < nox-dev@noxrepo.org > 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, malve...@cs.ucsd.edu 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 nox-dev@noxrepo.org http://noxrepo.org/mailman/listinfo/nox-dev_noxrepo.org
_______________________________________________ nox-dev mailing list nox-dev@noxrepo.org http://noxrepo.org/mailman/listinfo/nox-dev_noxrepo.org