How do I add, delete, modify a flow using the ODL API or Curl?
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
‎02-20-2015 07:52 PM
A question people frequently ask is "how to add a flow in OpenDaylight?". This can be a little confusing because the UI for changing flows in DLUX only works with ADSAL in the Helium release and not MDSAL (which is what you will usually be using).
There are 2 workarounds.
You can use the below curl commands to create/retrieve/delete a flow. For more information on creating flows and flow matches you can refer the below links.
https://wiki.opendaylight.org/view/OpenDaylight_OpenFlow_Plugin:End_to_End_Flows
https://wiki.opendaylight.org/view/Editing_OpenDaylight_OpenFlow_Plugin:End_to_End_Flows:Example_Flo...
Program a flow in config datastore:
Create a file L3Flow and configure flow parameters
curl -X PUT -d@L3Flow -H "Content-Type: application/xml" -H "Accept: application/xml" --user admin:abc123 http://10.127.13.240:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:19701787512/tab...
[openflow@10-127-13-225 ~]$ cat L3Flow
false
flow1
1
255
103
0
20
1800
1800
true
0
0
22
60
2048
2.1.1.10/32
* (Engineering) SW1.133 # show openflow flows
Total number of OpenFlow flows : 1
Total number of default flows : 2
Flow name Type Duration (secs) Prio Packets
---------------- ---- ------------------- ----- --------------------
of_0 ACL 12 20 0
Match : Ethernet Type : 0x0800 (IPv4)
IP Dst Address : 2.1.1.10
Actions: output:22
Timeout (secs/remaining secs) : hard:1800:1787,idle:1800:1787
Cookie : 0x67
Retrieve a flow in config datastore:
curl -X GET -H "Content-Type: application/json" -H "Accept: application/json" --user admin:abc123 http://10.127.13.240:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:19701787512/tab...
Retrieve a flow in operational datastore:
curl -X GET -H "Content-Type: application/json" -H "Accept: application/json" --user admin:abc123 http://10.127.13.240:8181/restconf/operational/opendaylight-inventory:nodes/node/openflow:1970178751...
Delete a flow in operational datastore:
curl -X DELETE -H "Content-Type: application/json" -H "Accept: application/json" --user admin:abc123 http://10.127.13.240:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:19701787512/tab...
There are 2 workarounds.
- If you want to use DLUX, you can enter flow information using the Yang UI.
- If you want to use the API directly or send commands to the API using curl, you can follow the directions/examples below.
You can use the below curl commands to create/retrieve/delete a flow. For more information on creating flows and flow matches you can refer the below links.
https://wiki.opendaylight.org/view/OpenDaylight_OpenFlow_Plugin:End_to_End_Flows
https://wiki.opendaylight.org/view/Editing_OpenDaylight_OpenFlow_Plugin:End_to_End_Flows:Example_Flo...
Program a flow in config datastore:
Create a file L3Flow and configure flow parameters
curl -X PUT -d@L3Flow -H "Content-Type: application/xml" -H "Accept: application/xml" --user admin:abc123 http://10.127.13.240:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:19701787512/tab...
[openflow@10-127-13-225 ~]$ cat L3Flow
1
20
1800
true
2.1.1.10/32
* (Engineering) SW1.133 # show openflow flows
Total number of OpenFlow flows : 1
Total number of default flows : 2
Flow name Type Duration (secs) Prio Packets
---------------- ---- ------------------- ----- --------------------
of_0 ACL 12 20 0
Match : Ethernet Type : 0x0800 (IPv4)
IP Dst Address : 2.1.1.10
Actions: output:22
Timeout (secs/remaining secs) : hard:1800:1787,idle:1800:1787
Cookie : 0x67
Retrieve a flow in config datastore:
curl -X GET -H "Content-Type: application/json" -H "Accept: application/json" --user admin:abc123 http://10.127.13.240:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:19701787512/tab...
Retrieve a flow in operational datastore:
curl -X GET -H "Content-Type: application/json" -H "Accept: application/json" --user admin:abc123 http://10.127.13.240:8181/restconf/operational/opendaylight-inventory:nodes/node/openflow:1970178751...
Delete a flow in operational datastore:
curl -X DELETE -H "Content-Type: application/json" -H "Accept: application/json" --user admin:abc123 http://10.127.13.240:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:19701787512/tab...
4 REPLIES 4
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
‎11-13-2015 01:14 PM
Hi,
Based on previous comment, I try to use this xml, to force the flow to go to another destination, so I want to modify the destination address:
Is there any source that I can refer for adding flows, this seems to be incomplete.
Based on previous comment, I try to use this xml, to force the flow to go to another destination, so I want to modify the destination address:
code:
however sending REST GET request to 10.0.0.8 is not redirected to 10.0.0.7 33000 Foo 1 10.0.0.8/32 2048 0 1 1 10.0.0.7/32
code:
code:
: sudo ovs-ofctl -O OpenFlow13 dump-flows br-int
code:
cookie=0x0, duration=63.453s, table=0, n_packets=0, n_bytes=0, priority=33000,ip,nw_dst=10.0.0.8 actions=output:8,set_field:10.0.0.7->ip_dst
Is there any source that I can refer for adding flows, this seems to be incomplete.
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
‎10-29-2015 04:27 PM
Sanjay, Sorry you haven't been replied to yet. You can just add more actions like the ones i have below. I included IP and MAC change actions.
MAC destination address change:
1
11:22:33:44:55:66
MAC source address change:
2
11:22:33:44:55:66
IP source change:
3
1.1.1.1
IP destination change:
4
1.1.1.1
MAC destination address change:
11:22:33:44:55:66
MAC source address change:
11:22:33:44:55:66
IP source change:
1.1.1.1
IP destination change:
1.1.1.1
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
‎10-29-2015 04:27 PM
Can you please reply to my next comment.
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
‎09-28-2015 02:46 AM
Hello, can you please elaborate the rest API body if a user needs to change the MAC/IP address of an incoming packet at switch ?
