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