Hi Yusuke, searching a bit more than before I can identify that error code
same as you, and I forgot to mention that im using a Router
Mikrotik-RB915G-2HnD with openflow 1.0 support.

So when I saw that the Router can't recognize the instruction I tried to
run my app in a Switch HP Procurve 3500-24 and it works!!!

Thanks a lot for the answer and I will try it.
Thanks again,
Marlon

2015-01-15 0:58 GMT-05:00 Yusuke Iwase <[email protected]>:

> Hi Marlon,
>
> On 2015年01月10日 01:31, Marlon Olaya wrote:
> > Hi dear experts, im trying to add a flow using mac src, dst, ip src and
> dst and that flow needs to change this in the packet to send it to another
> pc, so im using this code for add the flow:
> > [CODE]
> >
> > def add_flow(self, datapath, in_port, src_mac, dst_mac,
> src_ip,dst_ip,dl_type, actions):
> >
> > ofproto = datapath.ofproto
> >
> >
> > match = datapath.ofproto_parser.OFPMatch(
> >
> > in_port=in_port, dl_src=addrconv.mac.text_to_bin(src_mac),
> dl_dst=addrconv.mac.text_to_bin(dst_mac), dl_type = dl_type, nw_src =
> struct.unpack('!I', ipv4_to_bin(src_ip))[0], nw_dst=struct.unpack('!I',
> ipv4_to_bin(dst_ip))[0])
> >
> > print "****** match addflow********"
> >
> > print match
> >
> > print ""
> >
> >
> > mod = datapath.ofproto_parser.OFPFlowMod(
> >
> > datapath=datapath, match=match, cookie=0,
> >
> > command=ofproto.OFPFC_ADD, idle_timeout=0, hard_timeout=0,
> >
> > priority=ofproto.OFP_DEFAULT_PRIORITY,
> >
> > flags=ofproto.OFPFF_SEND_FLOW_REM, actions=actions)
> >
> > datapath.send_msg(mod)
> >
> > print "****** Regla enviada al controlador********"
> >
> > print ""
> >
> > print ""
> >
> > [/CODE]
> >
> > and my actions are coded in a handler in this section:
> >
> > [CODE]
> > if dst_ip == self.ip_fake:
> >             print ""
> >             print "Mensaje HACIA el SERVIDOR"
> >             print "tabla ip_to_port"
> >             print self.ip_to_port
> >             print ""
> >
> >             (out_port, mac_server) = self.round_robin()
> >             print ""
> >             print "puerto de salida: ", out_port
> >             print "type", type(out_port)
> >             print "mac del Server: ", mac_server
> >
> >
> >             actions =
> [datapath.ofproto_parser.OFPActionSetDlDst(haddr_to_bin(mac_server)),
> >
> datapath.ofproto_parser.OFPActionSetNwDst(struct.unpack('!I',
> ipv4_to_bin(self.ip_servidores[out_port-1]))[0]),
> >                        datapath.ofproto_parser.OFPActionOutput(out_port)]
> >             #se anade regla al sw en el sentido user -> server
> >             self.add_flow(datapath, port, pkt_eth.src,
> self.mac_servidores[0],src_ip, self.ip_servidores[out_port-1],
> ether.ETH_TYPE_IP, actions)
> >
> >             out = datapath.ofproto_parser.OFPPacketOut(
> >             datapath=datapath, buffer_id=buffer_id, in_port=port,
> >             actions=actions, data = pkt.data)
> >
> >             datapath.send_msg(out)
> > [/CODE]
> >
> > So, when I run my app, all seems to be ok, but when its the time to
> install the flow, the console throws me this error:
> >
> > error msg ev version: 0x1 msg_type 0x1 xid 0x98550208
> OFPErrorMsg(code=0,data='\x01\x0e\x00h\x98U\x02\x08\x000\x00\xe2\x00\x02\x00\x19\xd1Z"\xdat\xd45\x07)\x04\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\xc0\xa8X_\xc0\xa8Xc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\xff\xff\xff\xff\xff\xff\x00\x01\x00\x05\x00\x10t\xd45\x07)\x04\x00\x00\x00\x00\x00\x00\x00\x07\x00\x08\xc0\xa8Xc\x00\x00\x00\x08\x00\x01\xff\xe5',type=3)
> type 0x3 code 0x0 0x1 0xe 0x0 0x68 0x98 0x55 0x2 0x8 0x0 0x30 0x0 0xe2 0x0
> 0x2 0x0 0x19 0xd1 0x5a 0x22 0xda 0x74 0xd4 0x35 0x7 0x29 0x4 0x0 0x0 0x0
> 0x0 0x8 0x0 0x0 0x0 0x0 0x0 0xc0 0xa8 0x58 0x5f 0xc0 0xa8 0x58 0x63 0x0 0x0
> 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x80 0x0
> 0xff 0xff 0xff 0xff 0xff 0xff 0x0 0x1 0x0 0x5 0x0 0x10 0x74 0xd4 0x35 0x7
> 0x29 0x4 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x7 0x0 0x8 0xc0 0xa8 0x58 0x63 0x0
> 0x0 0x0 0x8 0x0 0x1 0xff 0xe5
>
> OFPErrorMsg show the error with type = 3(OFPET_BAD_INSTRUCTION) and code =
> 0(OFPBIC_UNKNOWN_INST).
> ---
> OpenFlow Spec 1.3.4:
>     If the instructions requested in a flow mod message are unknown the
> switch must return an
>   ofp_error_msg with OFPET_BAD_INSTRUCTION type and OFPBIC_UNKNOWN_INST
> code.
> ---
>
> I think you need to set actions into instruction at add_flow() function as
> folloing.
> ---
> def add_flow(self, datapath, in_port, src_mac, dst_mac,
> src_ip,dst_ip,dl_type, actions):
>     ...
>     inst =
> [datapath.ofproto_parser.OFPInstructionActions(ofproto.OFPIT_APPLY_ACTIONS,
>                                                           actions)]
>     ...
>     mod = datapath.ofproto_parser.OFPFlowMod(datapath=datapath,
> match=match, cookie=0,
>                                              command=ofproto.OFPFC_ADD,
> idle_timeout=0,
>                                              hard_timeout=0,
>
>  priority=ofproto.OFP_DEFAULT_PRIORITY,
>
>  flags=ofproto.OFPFF_SEND_FLOW_REM,
>                                              instructions=inst)
> ---
>
> For more exmaple, please refer to add_flow() function in
> ryu/app/simple_switch_13.py.
>
> Thanks
>
> >
> > So please can anyone help me?
> > I think its and error in the packet from controller to switch but I cant
> see where is it in my code.
> >
> > thanks
> > Marlon
> >
> >
> >
> ------------------------------------------------------------------------------
> > Dive into the World of Parallel Programming! The Go Parallel Website,
> > sponsored by Intel and developed in partnership with Slashdot Media, is
> your
> > hub for all things parallel software development, from weekly thought
> > leadership blogs to news, videos, case studies, tutorials and more. Take
> a
> > look and join the conversation now. http://goparallel.sourceforge.net
> >
> >
> >
> > _______________________________________________
> > Ryu-devel mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/ryu-devel
> >
>
------------------------------------------------------------------------------
New Year. New Location. New Benefits. New Data Center in Ashburn, VA.
GigeNET is offering a free month of service with a new server in Ashburn.
Choose from 2 high performing configs, both with 100TB of bandwidth.
Higher redundancy.Lower latency.Increased capacity.Completely compliant.
http://p.sf.net/sfu/gigenet
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to