Hi,
On 2015年09月23日 14:41, Vishlesh Patel wrote:
> Hi there,
>
> I am using RYU controller with flowvisor. As flowvisor do not support any
> other version other than openflow v1. I am using openflow v1 in my project.
>
> I have topology of 3 ovs switches and controller sits in one of server
> conataining ovs bridge. Other two ovs bridge in other servers connects to
> controller through public interface. But when run my ryu application, it
> connects to switches but not able to add rules with nw_src match . I am
> getting this error here:
>
> hub: uncaught exception: Traceback (most recent call last):
> File "/usr/local/lib/python2.7/dist-packages/ryu/lib/hub.py", line 52, in
> _launch
> func(*args, **kwargs)
> File "/usr/local/lib/python2.7/dist-packages/ryu/base/app_manager.py", line
> 276, in _event_loop
> handler(ev)
> File "/home/vishlesh/ryu-scripts/sample.py", line 79, in
> switch_features_handler
> self.add_flow(datapath, 10, match, action)
> File "/home/vishlesh/ryu-scripts/sample.py", line 137, in add_flow
> datapath.send_msg(mod)
> File "/usr/local/lib/python2.7/dist-packages/ryu/controller/controller.py",
> line 235, in send_msg
> msg.serialize()
> File
> "/usr/local/lib/python2.7/dist-packages/ryu/ofproto/ofproto_parser.py", line
> 212, in serialize
> self._serialize_body()
> File
> "/usr/local/lib/python2.7/dist-packages/ryu/ofproto/ofproto_v1_0_parser.py",
> line 2135, in _serialize_body
> self.match.serialize(self.buf, offset)
> File
> "/usr/local/lib/python2.7/dist-packages/ryu/ofproto/ofproto_v1_0_parser.py",
> line 213, in serialize
> self.nw_src, self.nw_dst, self.tp_src, self.tp_dst)
> File "/usr/local/lib/python2.7/dist-packages/ryu/lib/pack_utils.py", line
> 25, in msg_pack_into
> buf += struct.pack(fmt, *args)
> error: cannot convert argument to integer
>
> My code is here:
> class SimpleSwitch(app_manager.RyuApp):
> OFP_VERSIONS = [ofproto_v1_0.OFP_VERSION]
> """
> Constructor:
> You can define some globally used variables inside the class
> """
> def __init__(self, *args, **kwargs):
> super(SimpleSwitch, self).__init__(*args, **kwargs)
> # arp table: for searching
> self.arp_table ={"10.0.0.3":"53:54:00:69:ae:2b",
> "10.1.0.3":"52:54:00:cb:51:8b"}
> self.TCP_proto = 6
> self.UDP_proto = 17
> self.ICMP_proto = 1
>
> @set_ev_cls(ofp_event.EventOFPSwitchFeatures, CONFIG_DISPATCHER)
> def switch_features_handler(self, ev):
> datapath = ev.msg.datapath
> ofproto = datapath.ofproto
> parser = datapath.ofproto_parser
>
> # Insert Static rule
> match1 = parser.OFPMatch()
> action1 = [parser.OFPActionOutput(ofproto.OFPP_CONTROLLER)]
> self.add_flow(datapath, 0, match1, action1)
>
>
> match2 = parser.OFPMatch(dl_type = ether.ETH_TYPE_ARP)
> action2 = [parser.OFPActionOutput(ofproto.OFPP_CONTROLLER)]
> self.add_flow(datapath, 40, match2, action2)
> print "added rule#1"
>
> # Installing static rules to process TCP/UDP and ICMP and ACL
> dpid = datapath.id <http://datapath.id> # classifying the switch ID
> print("switch ",dpid," detected")
> if dpid == 2: # switch ovs of host 1
> match = parser.OFPMatch(dl_type=ether.ETH_TYPE_IP,
> nw_proto=self.TCP_proto,
> nw_src = '10.0.0.3' , nw_dst = '10.1.0.3' )
> action = [parser.OFPActionOutput(2)]
> self.add_flow(datapath, 10, match, action)
>
> Please help.
You need to convert IP/MAC address into binary data.
e.g.)
from ryu.lib import addrconv
...
parser.OFPMatch(nw_src=addrconv.ipv4.text_to_bin('10.0.0.3'))
This conversion is required in only OpenFlow1.0 with Ryu.
Thanks,
Iwase
>
>
> Best Regards,
> Vishlesh Patel
> M.S. Computer Engineering
> NYU Polytechnic School of Engineering
>
>
> ------------------------------------------------------------------------------
> Monitor Your Dynamic Infrastructure at Any Scale With Datadog!
> Get real-time metrics from all of your servers, apps and tools
> in one place.
> SourceForge users - Click here to start your Free Trial of Datadog now!
> http://pubads.g.doubleclick.net/gampad/clk?id=241902991&iu=/4140
>
>
>
> _______________________________________________
> Ryu-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/ryu-devel
>
------------------------------------------------------------------------------
Monitor Your Dynamic Infrastructure at Any Scale With Datadog!
Get real-time metrics from all of your servers, apps and tools
in one place.
SourceForge users - Click here to start your Free Trial of Datadog now!
http://pubads.g.doubleclick.net/gampad/clk?id=241902991&iu=/4140
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel