hi,
in addition that what you wrote, by adding "out_port=ofp.OFPP_ANY, 
out_group=ofp.OFPG_ANY" to the Flow_Mod command for deleting the flow entry, 
it is now working.
Thank you,
...................................................
 mehran shetabi
 PhD student
 Computer Engineering Department
 IUST

-----Original Message-----
 From: Minoru TAKAHASHI <[email protected]>
 To: mehran shetabi <[email protected]>,  
"[email protected]" <[email protected]>
 Date: Tue, 01 Mar 2016 11:33:34 +0900
 Subject: Re: [Ryu-devel] How can I get a notification that a flow has been 
deleted?


Hi,

 At least I think a following code causes an error.

 >                     match = ofp_parser.OFPMatch(ipv4_src='10.10.10.100')

 A match field of "ipv4_src" is allowed only if it is preceded by another 
entry
 with oxm_type=OXM_OF_ETH_TYPE, oxm_hasmask=0, and oxm_value=0x0800.
 (See A.2.3.6 of OpenFlowSpec1.3)

 So, please corrrects as follows.

   match = ofp_parser.OFPMatch(ipv4_src='10.10.10.100', eth_type=0x800)

 And, it may becomes easier to find out the error for using --verbose option 
as follows.

   # ryu-manager [app_name] --verbose
                            ^^^^^^^^^
 <output example>

 EventOFPErrorMsg received.
 version=0x4, msg_type=0x1, msg_len=0x4c, xid=0x4f1e1a45
  `-- msg_type: OFPT_ERROR(1)
 OFPErrorMsg(type=0x4, code=0x9, 
data=b'\x04\x0e\x00\x58\x4f\x1e\x1a\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x02\x00\x00\x00\x01\x00\x01\x00\x00\x00\x01\x00\x0c\x80\x00\x16\x04\x0a\x0a\x0a\x64\x00\x00\x00\x00')
  |-- type: OFPET_BAD_MATCH(4)
  |-- code: OFPBMC_BAD_PREREQ(9)
  `-- data: version=0x4, msg_type=0xe, msg_len=0x58, xid=0x4f1e1a45
      `-- msg_type: OFPT_FLOW_MOD(14)

 thanks,

 On 2016年02月29日 19:21, mehran shetabi wrote:
 > Hi,
 > How can I get a notification that a flow has been deleted? i am using the 
attached code for realizing when a specific flow entry was deleted and then 
measuring the flow setup time, but there is no EventOFPFlowRemoved event 
that i can catch it. why? would you please help me to fix it?
 > this is the code:
 >  
 >     def _measure_flow_setup_time(self):
 >         while True:
 >             for dp in self.datapaths.values():
 >                 if dp.id == 1:
 >                     ofp = dp.ofproto
 >                     ofp_parser = dp.ofproto_parser
 >                    
 >                     match = ofp_parser.OFPMatch(ipv4_src='10.10.10.100')
 >                     actions = 
[ofp_parser.OFPActionOutput(ofp.OFPP_NORMAL, 0)]
 >                     inst = 
[ofp_parser.OFPInstructionActions(ofp.OFPIT_APPLY_ACTIONS, actions)]
 >                     req_add = ofp_parser.OFPFlowMod(dp, 
command=ofp.OFPFC_ADD, idle_timeout=0, hard_timeout=0, 
flags=ofp.OFPFF_SEND_FLOW_REM,
 >                                                 priority=0, out_port=2, 
out_group=1, match=match, instructions=inst)
 >                    
 >                     dp.send_msg(req_add)
 >                     hub.sleep(1)
 >                    
 >                
 >                
 >                     req_del = ofp_parser.OFPFlowMod(dp, 
command=ofp.OFPFC_DELETE_STRICT, idle_timeout=0, hard_timeout=0, 
flags=ofp.OFPFF_SEND_FLOW_REM,
 >                                                 priority=0, out_port=2, 
out_group=1, match=match, instructions=inst)
 >                                
 >                
 >                     dp.send_msg(req_del)
 >                     self.flow_del_send_time = time.time()
 >                     self.k += 1
 >                     hub.sleep(1)
 >
 >
 >
 >
 >     @set_ev_cls(ofp_event.EventOFPFlowRemoved, MAIN_DISPATCHER)
 >     def flow_removed_handler(self, ev):
 >         print "flow_removed_handler"
 >         msg = ev.msg
 >         dp = msg.datapath
 >         ofp = dp.ofproto
 >
 >            
 >         if dp.id == 1:
 >             if msg.reason == ofp.OFPRR_IDLE_TIMEOUT:
 >                 reason = 'IDLE TIMEOUT'
 >             elif msg.reason == ofp.OFPRR_HARD_TIMEOUT:
 >                 reason = 'HARD TIMEOUT'
 >             elif msg.reason == ofp.OFPRR_DELETE:
 >                 reason = 'DELETE'
 >                 self.flow_removed_receive_time = time.time()
 >                 
self.f4.write(str(self.k)+'\t'+str(((self.flow_removed_receive_time - 
self.flow_del_send_time) + self.execution_time)*1000)+'\n')
 >
 >             elif msg.reason == ofp.OFPRR_GROUP_DELETE:
 >                 reason = 'GROUP DELETE'
 >             else:
 >                 reason = 'unknown'
 >
 >             print reason
 >  
 >  
 > Thank you,
 > ...................................................
 > mehran shetabi
 > PhD student
 > Computer Engineering Department
 > IUST
 >
 >
 > 
------------------------------------------------------------------------------
 > Site24x7 APM Insight: Get Deep Visibility into Application Performance
 > APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
 > Monitor end-to-end web transactions and take corrective actions now
 > Troubleshoot faster and improve end-user experience. Signup Now!
 > http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140 
[http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140]
 >
 >
 >
 > _______________________________________________
 > Ryu-devel mailing list
 > [email protected]
 > https://lists.sourceforge.net/lists/listinfo/ryu-devel 
[https://lists.sourceforge.net/lists/listinfo/ryu-devel]
 >
------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to