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
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