@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 <[email protected]> wrote:
>
>
> On 4/23/18, 6:53 PM, "Carlos Ferreira" <[email protected]> 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 <[email protected]> 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, "[email protected] on behalf of
> Carlos Ferreira" <[email protected] on behalf of
> [email protected]> 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 - [email protected]
> > Skype & GTalk -> [email protected]
> > 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
> > [email protected]
> >
> 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 - [email protected]
> Skype & GTalk -> [email protected]
> 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 - [email protected]
Skype & GTalk -> [email protected]
LinkedIn -> http://www.linkedin.com/in/carlosmferreira
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev