Hi, Llorente
Yes, as you said, there is an asymmetric behavior between the action and
the matching section.
As I mentioned, this is due to historical reasons.
We know it is good to fix this asymmetric structure,
however we also expect it will be a large scale modification.
And... Ryu REST API is just an example application, not a core future.
So the fix does not have high priority.
Thanks,
Fujimoto
On 2017年06月03日 04:56, Llorente Santos Jesus wrote:
Hi Fujimoto,
I realized my first assumption was incorrect, I am able to insert the
flow defining the IP tunnel endpoints as well as the key in the action
set with the following:
curl -X POST -d '{"dpid": 1193046, "match": {"ipv4_src":
"192.168.0.100", "in_port": 100, "eth_type": 2048, "ipv4_dst":
"172.16.0.2"}, "actions": [{"field": "eth_src", "value":
"00:00:00:00:00:00", "type": "SET_FIELD"}, {"field": "eth_dst",
"value": "00:00:00:00:00:00", "type": "SET_FIELD"}, {"field":
"ipv4_src", "value": "0.0.0.0", "type": "SET_FIELD"}, {"field":
"ipv4_dst", "value": "0.0.0.0", "type": "SET_FIELD"}, {"field":
"tun_ipv4_src", "value": "100.64.1.130", "type": "SET_FIELD"},
{"field": "tun_ipv4_dst", "value": "100.64.2.130", "type":
"SET_FIELD"}, {"field": "tunnel_id", "value": 5, "type": "SET_FIELD"},
{"port": 101, "type": "OUTPUT"}], "priority": 10, "table_id": 1}'
http://localhost:8081/stats/flowentry/add
After taking a closer look, I noticed the problem of matching on
“tun_ipv4_src” and “tun_ipv4_dst” only happen when used in the “match”
part of the message. For example, this is not properly inserted and
Ryu throws the “Unknown match field” messages:
curl -X POST -d '{"actions": [{"type": "SET_FIELD", "field":
"eth_src", "value": "00:00:00:12:34:56"}, {"type": "SET_FIELD",
"field": "eth_src", "value": "00:00:00:12:34:56"}, {"type":
"SET_FIELD", "field": "ipv4_src", "value": "172.16.0.2"}, {"type":
"SET_FIELD", "field": "ipv4_dst", "value": "192.168.0.100"}, {"type":
"OUTPUT", "port": 100}], "priority": 10, "dpid": 1193046, "table_id":
2, "match": {"tunnel_id": 5, "in_port": 101, "tun_ipv4_dst":
"100.64.1.130", "tun_ipv4_src": "100.64.2.130", "eth_type": 2048}}'
http://localhost:8081/stats/flowentry/add
<http://localhost:8081/stats/flowentry/add>
Do we have an asymmetric behaviour with respect to the NXM fields
allowed in the action vs the matching section? Is this intended or
should it be fixed?
Thank you for your quick response!
Best,
Jesus Llorente
*From:*Fujimoto Satoshi [mailto:[email protected]]
*Sent:* 02 June 2017 03:48
*To:* Llorente Santos Jesus <[email protected]>;
[email protected]
*Subject:* Re: [Ryu-devel] Issue with Ryu REST API and fields
tun_ipv4_dst and tun_ipv4_src
Hi, Llorente
For historical reasons, REST API cannot use full of fields defined in
ofproto/*.py.
The list of match fields REST API can use is shown here:
http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html#description-of-match-and-actions
To use "tun_ipv4_src" and "tun_ipv4_dst" via REST API,
adding fields in this list might be good:
https://github.com/osrg/ryu/blob/6dfda4a227c493c1aed6c468d763650d21d5acce/ryu/lib/ofctl_v1_3.py#L195
Thanks,
Fujimoto
On 2017年06月01日 22:47, Llorente Santos Jesus wrote:
Hello community!
I am trying to use Ryu REST API to insert a flow in an OpenvSwitch
datapath. Unfortunately, I have run into problems with the fields
tun_ipv4_src and tun_ipv4_dst. However, if I add the intended flow
via ovs-ofctl, then I can then fetch it correctly through the Ryu
REST API.
The ovs-ofctl command is the following:
# ovs-ofctl add-flow -O OpenFlow13 br-test0
"table=0,priority=10,in_port=100,ip,nw_src=192.168.0.100,nw_dst=172.16.0.1
actions=set_field:100.64.1.130->tun_src,set_field:100.64.2.130->tun_dst,set_field:5->tun_id,output:101"
Is there any way around this issue? I took a look at the
ofctl_rest.py but couldn't figure out myself how to modify the
parser so it accepts Nicira fields.
Thank you!
Jesus
PS: This is exactly the same problem as already reported by Zhao
Jun on 2016-03-03. I copy it here for further reference
>>> Hi, all
>>> I want to use ryu rest api to add a flow rule to OpenvSwitch.
>>> Here is the body I use
>>> { "dpid": 95529493015, "table_id": 0, "idle_timeout":
0, "hard_timeout": 1800, "priority": 11, "match":{
"in_port":2, "tunnel_id_nxm":5001,
"tun_ipv4_src":"52.193.10.12", "dl_type":2048,
"nw_src":"10.0.0.0/24", "nw_dst":"10.0.1.0/24"
}, "actions":[ { "type":"SET_FIELD",
"field":"tunnel_id_nxm", "value":5001 },
{ "type":"SET_FIELD", "field":"tun_ipv4_dst",
"value":"52.33.232.199" }, {
"type":"OUTPUT", "port": 0xfffffff8 } ]}
>>> The log shows that "Unknown match field: tunnel_id_nxm" and
"Unknown match field: tun_ipv4_src"
>>> These two match fields are found here:
https://github.com/osrg/ryu/blob/7a9b1be5d6874933fdfbf4e610992dd302915ed9/ryu/ofproto/nx_match.py
>>> I guess they are corresponding with "tun_id" and "tun_src" in
OpenvSwitch.
>>> But the result is not same as I expected. So if I want to
match "tun_id" and "tun_src" in Openvswitch, which match field
shoud I use?
>>> Many thanks.
>>>
>>> Zhao Jun
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org!http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
[email protected]
<mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/ryu-devel
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel