@IWAMOTO @Darrel Thank you for your support. I have figured out what was missing!
It seems the table_id = OFPTT_ALL was missing from the OFPFlowMod message. Ryu seems to default this value to zero. Because of this, by default, the OFPFlowMod when used as a OFPFC_DELETE command, has a "table_id = 0" matching requirement. So, when using Ryu, the proper message structure to remove a Flow with a cookie equal to 2 from the Switch, is: ofp_parser.OFPFlowMod( datapath=datapath_obj, cookie=2, cookie_mask=0xFFFFFFFFFFFFFFFF, table_id=ofp.OFPTT_ALL, command=ofp.OFPFC_DELETE, out_port=ofp.OFPP_ANY, out_group=ofp.OFPG_ANY ) Acording to the standard, out_port needs to be equal to OFPP_ANY and out_group needs to be equal to OFPG_ANY, otherwise it will be considered as a matching requirement. It seems that table_id follows almost the same logic, requiring a table_id = OFPTT_ALL to match all tables. I now consider this issue resolved. My best regards, Carlos Ferreira On 24 April 2018 at 04:15, Darrell Ball <db...@vmware.com> wrote: > > > On 4/23/18, 6:53 PM, "Carlos Ferreira" <carlosmf...@gmail.com> wrote: > > @IWAMOTO > > Hello IWAMOTO, > No, I do not get any kind of error from Ryu. I have also verified the > structure of the Openflow messages sent to the switch using Wireshark > and no anomalies were found. The packet was well structured. > > @Darrell, > > Darrel, thank you for the info. I tried to use the del-flows using the > "ovs-ofctl del-flows" command with the specific cookie and in fact, it > did work. I'm lost here, because it does not seems to work if the > communication is done via OpenFlow with a remote controller. > > Maybe you want to check what Ryu is sending the switch > > http://www.openvswitch.org//support/dist-docs/ovs-ofctl.8.pdf > > “ > OpenFlow Switch Monitoring Commands > > monitor switch [miss-len] [invalid_ttl] [watch:[spec...]] > Connects to switch and prints to the console all OpenFlow messages received. > Usually, switch > should specify the name of a bridge in the ovs−vswitchd database. > “ > > eg) ovs-ofctl monitor br0 65534 invalid_ttl --detach --no-chdir --pidfile 2> > ofctl_monitor.log > > > > > On 24 April 2018 at 02:42, Darrell Ball <db...@vmware.com> wrote: > > //You can verify that OVS supports deletion by cookie specification by > checking these tests: > > > > 932: ofproto.at:1746 ofproto - del flows based on cookie > > 933: ofproto.at:1767 ofproto - del flows based on cookie mask > > > > // Run the tests using “make check” like this: > > sudo make check TESTSUITEFLAGS='932-933' -C _gcc > > > > //Look at what is being tested here: > > tests/ofproto.at > > > > Thanks Darrell > > > > > > On 4/23/18, 4:17 PM, "ovs-dev-boun...@openvswitch.org on behalf of > Carlos Ferreira" <ovs-dev-boun...@openvswitch.org on behalf of > carlosmf...@gmail.com> wrote: > > > > Hello to all > > > > According to the OpenFlow 1.3.5 spec, page 44 specifies the > following: > > > > > > "Modify and delete commands can also be filtered by cookie value, if > > the cookie_mask field contains > > a value other than 0. This constraint is that the bits specified by > > the cookie_mask in both > > the cookie field of the flow mod and a flow entry’s cookie value > must > > be equal. In other words, > > (flow entry.cookie&flow mod.cookie mask) == (flow mod.cookie&flow > > mod.cookie mask)." > > > > > > Now, using the Ryu python-based controller, I tried to delete a flow > > by specifying the flow's cookie value, but the procedure was not > > successful. > > > > The following code is a test-example which I used. > > > > from ryu.base.app_manager import RyuApp > > from ryu.controller.dpset import EventDP > > from ryu.controller.handler import MAIN_DISPATCHER > > from ryu.controller.handler import set_ev_cls > > from ryu.ofproto import ofproto_v1_3 > > from ryu.ofproto import ether, inet > > > > class MPLS_Testing(RyuApp): > > OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION] > > > > @set_ev_cls(EventDP, MAIN_DISPATCHER) > > def switch_connect_event(self, ev): > > ofp_parser = ev.dp.ofproto_parser > > ofp = ev.dp.ofproto > > datapath_obj = ev.dp > > if ev.enter: > > datapath_obj.send_msg( # Removes all flows registered in > this switch. > > ofp_parser.OFPFlowMod( > > datapath=datapath_obj, > > table_id=ofp.OFPTT_ALL, > > command=ofp.OFPFC_DELETE, > > out_port=ofp.OFPP_ANY, > > out_group=ofp.OFPG_ANY, > > ) > > ) > > add_label_flow = ofp_parser.OFPFlowMod( > > datapath=datapath_obj, > > cookie=1, > > table_id=0, > > command=ofp.OFPFC_ADD, > > match=ofp_parser.OFPMatch( > > in_port=1 > > ), > > instructions=[ > > ofp_parser.OFPInstructionActions( > > ofp.OFPIT_APPLY_ACTIONS, > > [ > > ofp_parser.OFPActionPushMpls(), > > ofp_parser.OFPActionSetField(mpls_label=16), > > ] > > ), > > ofp_parser.OFPInstructionGotoTable(table_id=1), > > ] > > ) > > datapath_obj.send_msg(add_label_flow) > > > > add_label_flow2 = ofp_parser.OFPFlowMod( > > datapath=datapath_obj, > > cookie=2, > > table_id=1, > > command=ofp.OFPFC_ADD, > > match=ofp_parser.OFPMatch( > > in_port=1 > > ), > > instructions=[ > > ofp_parser.OFPInstructionActions( > > ofp.OFPIT_APPLY_ACTIONS, > > [ > > ofp_parser.OFPActionPushMpls(), > > ofp_parser.OFPActionSetField(mpls_label=12), > > ] > > ), > > ofp_parser.OFPInstructionGotoTable(table_id=2), > > ] > > ) > > datapath_obj.send_msg(add_label_flow2) > > > > # Deletes flow with cookie equal to 2. > > datapath_obj.send_msg( > > ofp_parser.OFPFlowMod( > > cookie=2, > > cookie_mask=0xFFFFFFFFFFFFFFFF, > > datapath=datapath_obj, > > command=ofp.OFPFC_DELETE, > > out_port=ofp.OFPP_ANY, > > out_group=ofp.OFPG_ANY, > > ) > > ) > > > > Can anyone tell me if OpenVSwitch 2.9 supports cookie match when > > deleting a flow from the tables? OpenFlow 1.3.5 spec clearly states > > that a Delete command could also filter flows using the cookie > value, > > when the cookie_mask is different than zero. Currently, I'm kinda > lost > > here. > > > > Thank you! > > > > -- > > > > Carlos Miguel Ferreira > > Researcher at Telecommunications Institute > > Aveiro - Portugal > > Work E-mail - c...@av.it.pt > > Skype & GTalk -> carlosmf...@gmail.com > > LinkedIn -> > https://urldefense.proofpoint.com/v2/url?u=http-3A__www.linkedin.com_in_carlosmferreira&d=DwIGaQ&c=uilaK90D4TOVoH58JNXRgQ&r=BVhFA09CGX7JQ5Ih-uZnsw&m=ND4lqlTir-Ukyp2WkESK_WJ7j0b1dAUdptpdObaFU7Y&s=saz4uZw1U4C3pxnJSK9cRxTNXucuBUokJFvgmL3P3Wg&e= > > _______________________________________________ > > dev mailing list > > d...@openvswitch.org > > > https://urldefense.proofpoint.com/v2/url?u=https-3A__mail.openvswitch.org_mailman_listinfo_ovs-2Ddev&d=DwIGaQ&c=uilaK90D4TOVoH58JNXRgQ&r=BVhFA09CGX7JQ5Ih-uZnsw&m=ND4lqlTir-Ukyp2WkESK_WJ7j0b1dAUdptpdObaFU7Y&s=A8DVOVYZJhWrS-4plyLgmB6DmiB0nWaYxbqdlekjUOU&e= > > > > > > > > -- > > Carlos Miguel Ferreira > Researcher at Telecommunications Institute > Aveiro - Portugal > Work E-mail - c...@av.it.pt > Skype & GTalk -> carlosmf...@gmail.com > LinkedIn -> > https://urldefense.proofpoint.com/v2/url?u=http-3A__www.linkedin.com_in_carlosmferreira&d=DwIFaQ&c=uilaK90D4TOVoH58JNXRgQ&r=BVhFA09CGX7JQ5Ih-uZnsw&m=j9V3B7ygf4O--CxRpwz12p2tUPPwIjBqmilIY5vrfIM&s=NdRdr5TN0ZvE3gY7DHkfHb1q2amlsHU5WU_Ho-04KNE&e= > > -- Carlos Miguel Ferreira Researcher at Telecommunications Institute Aveiro - Portugal Work E-mail - c...@av.it.pt Skype & GTalk -> carlosmf...@gmail.com LinkedIn -> http://www.linkedin.com/in/carlosmferreira _______________________________________________ discuss mailing list disc...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-discuss