Hello,

I'm currently trying to make a controller aplication in POX that, after a
switch connects, floods the switch with stats_requests. My idea is just to
make it so it looks like a "Denial of Service".

I'm currently trying to use python's thread library, like the below:

"
        for i in range(number_threads):
               thread.start_new_thread( stress_function, (connection, i+1,
request_rate/number_threads) )
"

And every thread is trying to do something like the following, and this is
where I actually try to flood with stats_requests:

"
    while(elapsed_time < test_duration):
        time.sleep(time_step)

connection.send(of.ofp_stats_request(body=of.ofp_flow_stats_request()))
"

The problem is that I get the following error when running with multiple
threads:

"
Unhandled exception in thread started by <function stress_function at
0x20ccc80>
Traceback (most recent call last):
  File "/root/pox/ext/dos_test.py", line 45, in stress_function
    connection.send(of.ofp_stats_request(body=of.ofp_flow_stats_request()))
  File "/root/pox/pox/openflow/of_01.py", line 687, in send
    data = data.pack()
  File "/root/pox/pox/openflow/libopenflow_01.py", line 2470, in pack
    packed += ofp_header.pack(self)
  File "/root/pox/pox/openflow/libopenflow_01.py", line 554, in pack
    len(self), self.xid)
  File "/root/pox/pox/openflow/libopenflow_01.py", line 537, in xid
    self._xid = generate_xid()
ValueError: generator already executing
"

It seems that the concurrent stats_request callings is generating this
problem. Can anyone give me any advice on how to properly do this in an
effective way? I doesn't need to use POX itself, I just need to have
control over the request rate.


Thanks in advance!

Victor T.

Reply via email to