Thanks a lot!
I'll read that part of documentation carefully.
Sincerely,
Garegin Grigoryan
--- Michał Rzepka wrote ----
> Hello,
>
> That problem is more related to OpenFlow protocol than Ryu controller
> itself. One should remember that some of match fields have prerequisites
> that need to be defined first for the flow to be added correctly, as
> mentioned in OpenFlow specification ("Protocol-specic fields within
> ofp_match will be ignored within a single table when the
> corresponding protocol is not specified in the match. The MPLS match
> fields will be ignored unless the Ethertype specified as either IPv4 or
> ARP.", OpenFlow 1.1.0 spec, p.29). Therefore, your match should also
> contain "dl_type=0x0800". Here is a code of simple app that demonstrates
> IP address match (tested in OvS 2.5.0 and Ryu 4.5, OF 1.0).
>
> __author__ = 'Michal Rzepka'
>
> from ryu.base import app_manager
> from ryu.controller import ofp_event
> from ryu.controller.handler import MAIN_DISPATCHER
> from ryu.controller.handler import set_ev_cls
> from ryu.ofproto import ofproto_v1_0
>
> class L2Switch(app_manager.RyuApp):
> OFP_VERSIONS = [ofproto_v1_0.OFP_VERSION]
>
> def __init__(self, *args, **kwargs):
> super(L2Switch, self).__init__(*args, **kwargs)
>
> @set_ev_cls(ofp_event.EventOFPStateChange, MAIN_DISPATCHER)
> def state_change_handler(self, ev):
>
> dp = ev.datapath
> ofproto = dp.ofproto
> parser = dp.ofproto_parser
>
> addressList = ('10.10.1.1', '10.10.1.2', '10.10.1.3')
>
> for address in addressList:
>
> actions = [parser.OFPActionOutput(ofproto.OFPP_NORMAL)]
> match = parser.OFPMatch(dl_type=0x0800, nw_src=address)
> self.add_flow(dp, match, actions, 1, 100)
>
> def add_flow(self, datapath, match, act, priority=0,
> idle_timeout=0):
>
> parser = datapath.ofproto_parser
>
> mod = parser.OFPFlowMod(datapath=datapath,
> priority=priority,
> match=match, actions=act,
> idle_timeout=idle_timeout)
> datapath.send_msg(mod)
>
> The result is as expected:
>
> cookie=0x0, duration=1.580s, table=0, n_packets=0, n_bytes=0,
> idle_timeout=100, idle_age=1, priority=1,ip,nw_src=10.10.1.1
> actions=NORMAL
> cookie=0x0, duration=1.580s, table=0, n_packets=0, n_bytes=0,
> idle_timeout=100, idle_age=1, priority=1,ip,nw_src=10.10.1.2
> actions=NORMAL
> cookie=0x0, duration=1.579s, table=0, n_packets=0, n_bytes=0,
> idle_timeout=100, idle_age=1, priority=1,ip,nw_src=10.10.1.3
> actions=NORMAL
>
> Regards,
>
> ---
> Michał Rzepka
>
> W dniu 2016-09-29 07:03, Garegin Grigoryan napisał(a):
> > Hi,
> >
> > I'm new to RYU controller and I'm trying to install some simple rules.
> > I use Openflow 1.0.
> >
> > Here's my code:
> >
> > addressList = ('10.10.1.1', '10.10.1.2', '10.10.1.3')
> > for address in addressList:
> > actions = [parser.OFPActionOutput(ofproto.OFPP_NORMAL)]
> > match = parser.OFPMatch(nw_src = address)
> > self.add_flow(dp, match, actions, 1, 100)
> >
> > def add_flow(self, datapath, match, act, priority=0, idle_timeout=0):
> > ofproto = datapath.ofproto
> > parser = datapath.ofproto_parser
> >
> > mod = parser.OFPFlowMod(datapath=datapath, priority=priority,
> > match=match, actions=act, idle_timeout=idle_timeout)
> > datapath.send_msg(mod)
> >
> > Here's what I see in OVS:
> >
> > cookie=0x0, duration=13.212s, table=0, n_packets=0, n_bytes=0,
> > idle_timeout=100,priority=1 actions=NORMAL
> >
> > Why ip-source match was ignored?
> >
> > Thanks for your help!
> >
> > --
> >
> > Sincerely,
> > Garegin Grigoryan
> > ------------------------------------------------------------------------------
> >
> > _______________________________________________
> > Ryu-devel mailing list
> > Ryu-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/ryu-devel
------------------------------------------------------------------------------
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel