Hi Marlon, On 2015年01月16日 05:48, Marlon Olaya wrote: > 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.
Sorry, I didn't check OpenFlow version. If you use a router with "OpenFlow 1.0", OFPErrorMsg show the error with type = 3(OFPET_FLOW_MOD_FAILED) and code = 0(OFPFMFC_ALL_TABLES_FULL). Please check FlowTable setting in your router. Thanks > > 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] > <mailto:[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] <mailto:[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
