#opendaylight-help-openflow #opendaylight #help #opendaylight-help-openflow #opendaylight #help


abercrombiepayments@...
 
Edited

I am using Opendaylight Carbon (also tried Oxygen) with Mininet. I created a small network which conects to the remote ODL Controller using OpenFlow 1.3 using Virtual machines (Ubuntu 18.04) on the same subnet and the mininet hosts can ping each other as expected.

When connecting to the controller using a browser, I can login with default credentials and view the topoogy and Nodes using a web UI. Yang shows various properties of which very few gives a response from the controller.

Problem: When sending the GET request: http://ip_address:8181/restconf/config/opendaylight-inventory:nodes/ I get an error message:

"Request could not be completed because the relevant data model content does not exist"


My objectives are to:

1) get the controller to send a message to the switches to clear their flow tables
2) get the controller to send a message to the switches to modify their flow tables

Any advice will be really appreciated.


Luis Gomez
 

See inline:

On Apr 7, 2021, at 5:30 AM, abercrombiepayments@... wrote:

I am using Opendaylight Carbon (also tried Oxygen) with Mininet. I created a small network which conects to the remote ODL Controller using OpenFlow 1.3 using Virtual machines (Ubuntu 18.04) on the same subnet and the mininet hosts can ping each other as expected.

When connecting to the controller using a browser, I can login with default credentials and view the topoogy and Nodes using a web UI. Yang shows various properties of which very few gives a response from the controller.

Problem: When sending the GET request: http://ip_address:8181/restconf/config/opendaylight-inventory:nodes/ I get an error message



This request will only show the flows/groups pushed by the user via REST API, therefore it is expected no content, try operational vs config to see switch flows/groups.

"Request could not be completed because the relevant data model content does not exist"

Note: I also get this error message on the switch when trying to view the flow table: mininet> sh ovs-ofctl dump-flows s1 2021-04-07T01:02:40Z|00001|vconn|WARN|unix:/var/run/openvswitch/s1.mgmt: version negotiation failed (we support version 0x01, peer supports version 0x04) ovs-ofctl: s1: failed to connect to socket (Broken pipe)



The right command for OF13 protocol is: sh ovs-ofctl dump-flows s1 -O OpenFlow13

However, I am getting this message with both ODL and RYU, so I am not sure if they are related.

I need this to work in order to write a Python program to clear flow tables.

Any advice will be appreciated.






abercrombiepayments@...
 

Hi Luis,

You're absolutely correct - the command is indeed sh ovs-ofctl dump-flows s1 -O OpenFlow13.

I have some code in Python which tries to clear the flow table from a switch. It first reads operational (successfully) and then reads config but returns an error as nothing is in there.

At first, config was empty but it now shows "controller-config" (see attachment). I'm not sure how I managed to do this. Perhaps I pushed a REST API command somehow.

My objective is to get the controller to send a message to the switches to clear their flow tables.
I also want to be able to get the controller to send a message to the switches to modify their flow tables.

How can I do this? I could really use your help.



Luis Gomez
 

For flows not pushed by user, you have to use RPCs:

- To delete all flows for a given table you can use a body like this:

{
"input": {
"opendaylight-flow-service:node":"/opendaylight-inventory:nodes/opendaylight-inventory:node[opendaylight-inventory:id='openflow:18097231385380982899']",
"table_id": 255
}
}

In the same document you can see RPCs to modify flows.

BR/Luis

On Apr 7, 2021, at 5:30 AM, abercrombiepayments@... wrote:

[Edited Message Follows]

I am using Opendaylight Carbon (also tried Oxygen) with Mininet. I created a small network which conects to the remote ODL Controller using OpenFlow 1.3 using Virtual machines (Ubuntu 18.04) on the same subnet and the mininet hosts can ping each other as expected.

When connecting to the controller using a browser, I can login with default credentials and view the topoogy and Nodes using a web UI. Yang shows various properties of which very few gives a response from the controller.

Problem: When sending the GET request: http://ip_address:8181/restconf/config/opendaylight-inventory:nodes/ I get an error message:

"Request could not be completed because the relevant data model content does not exist"


My objectives are to:

1) get the controller to send a message to the switches to clear their flow tables
2) get the controller to send a message to the switches to modify their flow tables

Any advice will be really appreciated.






abercrombiepayments@...
 

Hi Luis,

Apologies, I am very new to this.

Could you provide specific instructions on how I could delete an entire openflow table from a switch? How can I use the xml example from the website?


Thanks.


Luis Gomez
 

It is all in the docs link I sent, you need a REST client and then pass the URL, headers and body as described. Let me know if you have specific questions.

On Apr 8, 2021, at 7:31 AM, abercrombiepayments@... wrote:

Hi Luis,

Apologies, I am very new to this.

Could you provide specific instructions on how I could delete an entire openflow table from a switch? How can I use the xml example from the website?


Thanks.


abercrombiepayments@...
 

Hi Luis,

I had a look at the document and it seems to be very informative and gives examples of REST and RPC commands. I kind of figured that this would be the solution. I was under the impression that the config datastore contained what was learnt by the controller. I might be wrong as I am new to SDN.

Would adding a flow manually on a vswitch automatically push a config to the controller config store? I tried this but the config store is still empty.

When I delete a flow on a switch using Mininet command (sh ovs-ofctl del-flows s1 -O OpenFlow13) it does not learn automatically from the controller. Is this normal? I can add a flow manually and it works.

Thanks for the very informative answers which has cleared some doubts.