Hi Folks, I am trying to install a rule in OpenFlow switch based on the below conditions
- If the destination IP matches "10.0.0.9" - If the dstination mac matches "some_mac" - If the protocol is ICMP - Then send the packet to "10.0.0.3" with mac "0:0:0:0:0:3" But looks like switch is sending all the ICMP packets to "10.0.0.3" instead of sending those who are destined to "10.0.0.9". Am I missing something here ? COde : #msg = oflow.ofp_packet_out() 262 msg = oflow.ofp_flow_mod() 263 msg.data = new_frame 264 msg.in_port = event.ofp.in_port 265 266 if ip_packet.dstip == VIRTUAL_IP: 267 msg.match.nwdst = VIRTUAL_IP 268 msg.match.dldst = VIRTUAL_MAC 269 msg.match.nw_proto = 1 #ICMP Messages 270 msg.match.dl_type = 0x800 #IPv4 Messages 271 272 action1 = oflow.ofp_action_nw_addr.set_dst(REAL_IP) 273 action2 = oflow.ofp_action_dl_addr.set_dst(REAL_MAC) 274 action3 = oflow.ofp_action_output(port = oflow.OFPP_FLOOD) 275 msg.actions.append(action1) 276 msg.actions.append(action2) 277 msg.actions.append(action3) 278 self.connection.send(msg) 279 print "Successful in dstip VIRTUAL_IP >>>>>>> REAL_IP" Rule installed on the switch : mininet> dpctl dump-flows *** s1 ------------------------------------------------------------------------ NXST_FLOW reply (xid=0x4): mininet> mininet> mininet> h1 ping testing_host ^CPING testing_host (10.0.0.9) 56(84) bytes of data. --- testing_host ping statistics --- 3 packets transmitted, 0 received, 100% packet loss, time 2017ms mininet> mininet> mininet> dpctl dump-flows *** s1 ------------------------------------------------------------------------ NXST_FLOW reply (xid=0x4): cookie=0x0, duration=45.417s, table=0, n_packets=4, n_bytes=392, idle_age=43, icmp actions=mod_nw_dst:10.0.0.3,mod_dl_dst:00:00:00:00:00:03,FLOOD mininet> Thanks Anil