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)