[pox-dev] Changing the POX component without restarting POX controller

2013-05-29 Thread Windhya Rankothge
Hi,

I am soory if this is a stupid question, but I am new to POX and even
though i searched in internet i could not find an answer..

I am using two component files : l2_multi.py component which will send
traffic using shortest path.. and l2_multi_edited.py which will send
traffic using longest path..

I create a topoligy in mininet and start the POX with l2_multi.py component
which will send traffic using shortest path..

after sometime I want to change the componet to l2_multi_edited.py without
restarting POX, so that  traffic will be send with longest path..

how can I do this ? Please be kind enough to help me


Best Regards,

Windhya Rankothge


Re: [pox-dev] Changing the POX component without restarting POX controller

2013-05-29 Thread Windhya Rankothge
Sorry trouble you again Murphy..

Is there any way that I can trace the packet, so that I can check the
correctness of my algorithms ?

I tried traceroute, but looks like its not working as expected in Mininet


On Wed, May 29, 2013 at 2:13 PM, Windhya Rankothge windys...@gmail.comwrote:

 Thanks Murphy.. It worked correctly..


 On Wed, May 29, 2013 at 12:52 PM, Murphy McCauley 
 murphy.mccau...@gmail.com wrote:

 I'd say the right way to do it is to remove the event listeners set by
 one component, and then set them up using the other.  l2_multi wasn't
 really written with this in mind so it'd take a bit of tweaking to make it
 happen.  If you were really inclined to do so, I think the easiest way
 would be to add a boolean enable/disable flag to the l2_multi class and to
 your version of it.  Then have an if statement in
 l2_multi._handle_ConnectionUp (and your own class's version) that uses the
 flag to decide whether it should actually call sw.connect().  When you want
 to switch between components, toggle the enabled flags, then iterate
 through all active connections, calling disconnect() on the switches of the
 old component and connect() on the switches of the new component.

 I think there may be a far, far easier way to go about this, though.  It
 seems like the only thing you should need to change is _get_path() or
 _get_raw_path() or _calc_paths().  I'd just swap the function at runtime.
  For example, if you put a modified _get_path() in ext/longestpath.py, you
 could do something like...

 ./pox.py forwarding.l2_multi openflow.discovery py

 This will load up l2_multi and then give a Python interpreter.  You can
 swap the functions from the interpreter...
 POX import pox.forwarding.l2_multi as l2m
 POX shortest = l2m._get_path
 POX import ext.longestpath
 POX l2m._get_path = ext.longestpath._get_path

 You can switch back to shortest again by doing:
 POX l2m._get_path = shortest

 When you switch, you'll have to wait for existing flows to time out, or
 send a flow_mod to each connection to delete them (iterate over
 core.openflow.connections).  You might want to wrap that and the other
 commands above into a quick little toggle function, which you could then
 add to the interactive prompt.  The component would looks something like:

 import pox.forwarding.l2_multi as l2m

 _orig_get_path = l2m._get_path

 def _my_get_path (...):
   ...
   Your longest path code here
   ...

 def toggle ():
   if l2m._get_path is _orig_get_path:
 l2m._get_path = _my_get_path
   else:
 l2m._get_path = _orig_get_path

 def launch ():
   core.Interactive.variables['toggle'] = toggle

 Then you can just do toggle() from the POX prompt to switch.

 Hope that helps.

 (Excuse bugs in the above code; none of it is tested.)

 -- Murphy

 On May 29, 2013, at 3:13 AM, Windhya Rankothge wrote:

 
  Hi,
 
  I am soory if this is a stupid question, but I am new to POX and even
 though i searched in internet i could not find an answer..
 
  I am using two component files : l2_multi.py component which will send
 traffic using shortest path.. and l2_multi_edited.py which will send
 traffic using longest path..
 
  I create a topoligy in mininet and start the POX with l2_multi.py
 component which will send traffic using shortest path..
 
  after sometime I want to change the componet to l2_multi_edited.py
 without restarting POX, so that  traffic will be send with longest path..
 
  how can I do this ? Please be kind enough to help me
 
 
  Best Regards,
 
  Windhya Rankothge




 --
 Best Regards,

 Windhya Rankothge. (WINDY)




-- 
Best Regards,

Windhya Rankothge. (WINDY)


Re: [pox-dev] Changing the POX component without restarting POX controller

2013-05-29 Thread Murphy McCauley
traceroute works via expiring TTLs, which won't happen in OpenFlow switches 
without some extra work.

I don't know of a better way than just running a bunch of tcpdump/wireshark 
instances on all the intermediate switches.

-- Murphy

On May 29, 2013, at 7:25 AM, Windhya Rankothge wrote:

 Sorry trouble you again Murphy.. 
 
 Is there any way that I can trace the packet, so that I can check the 
 correctness of my algorithms ?
 
 I tried traceroute, but looks like its not working as expected in Mininet
 
 
 On Wed, May 29, 2013 at 2:13 PM, Windhya Rankothge windys...@gmail.com 
 wrote:
 Thanks Murphy.. It worked correctly..
 
 
 On Wed, May 29, 2013 at 12:52 PM, Murphy McCauley murphy.mccau...@gmail.com 
 wrote:
 I'd say the right way to do it is to remove the event listeners set by one 
 component, and then set them up using the other.  l2_multi wasn't really 
 written with this in mind so it'd take a bit of tweaking to make it happen.  
 If you were really inclined to do so, I think the easiest way would be to add 
 a boolean enable/disable flag to the l2_multi class and to your version of 
 it.  Then have an if statement in l2_multi._handle_ConnectionUp (and your own 
 class's version) that uses the flag to decide whether it should actually call 
 sw.connect().  When you want to switch between components, toggle the enabled 
 flags, then iterate through all active connections, calling disconnect() on 
 the switches of the old component and connect() on the switches of the new 
 component.
 
 I think there may be a far, far easier way to go about this, though.  It 
 seems like the only thing you should need to change is _get_path() or 
 _get_raw_path() or _calc_paths().  I'd just swap the function at runtime.  
 For example, if you put a modified _get_path() in ext/longestpath.py, you 
 could do something like...
 
 ./pox.py forwarding.l2_multi openflow.discovery py
 
 This will load up l2_multi and then give a Python interpreter.  You can swap 
 the functions from the interpreter...
 POX import pox.forwarding.l2_multi as l2m
 POX shortest = l2m._get_path
 POX import ext.longestpath
 POX l2m._get_path = ext.longestpath._get_path
 
 You can switch back to shortest again by doing:
 POX l2m._get_path = shortest
 
 When you switch, you'll have to wait for existing flows to time out, or send 
 a flow_mod to each connection to delete them (iterate over 
 core.openflow.connections).  You might want to wrap that and the other 
 commands above into a quick little toggle function, which you could then add 
 to the interactive prompt.  The component would looks something like:
 
 import pox.forwarding.l2_multi as l2m
 
 _orig_get_path = l2m._get_path
 
 def _my_get_path (...):
   ...
   Your longest path code here
   ...
 
 def toggle ():
   if l2m._get_path is _orig_get_path:
 l2m._get_path = _my_get_path
   else:
 l2m._get_path = _orig_get_path
 
 def launch ():
   core.Interactive.variables['toggle'] = toggle
 
 Then you can just do toggle() from the POX prompt to switch.
 
 Hope that helps.
 
 (Excuse bugs in the above code; none of it is tested.)
 
 -- Murphy
 
 On May 29, 2013, at 3:13 AM, Windhya Rankothge wrote:
 
 
  Hi,
 
  I am soory if this is a stupid question, but I am new to POX and even 
  though i searched in internet i could not find an answer..
 
  I am using two component files : l2_multi.py component which will send 
  traffic using shortest path.. and l2_multi_edited.py which will send 
  traffic using longest path..
 
  I create a topoligy in mininet and start the POX with l2_multi.py component 
  which will send traffic using shortest path..
 
  after sometime I want to change the componet to l2_multi_edited.py without 
  restarting POX, so that  traffic will be send with longest path..
 
  how can I do this ? Please be kind enough to help me
 
 
  Best Regards,
 
  Windhya Rankothge
 
 
 
 
 -- 
 Best Regards,
  
 Windhya Rankothge. (WINDY)
 
 
 
 -- 
 Best Regards,
  
 Windhya Rankothge. (WINDY)