I'd suggest that you not use two entries with different priorities in order to 
do backup paths.  Instead, use a single entry and an action type which tries 
one port and fails over to another one if the first one is down.  This is what 
everyone already does, and Open vSwitch already supports it.

-- Murphy

On Sep 19, 2014, at 2:43 AM, Padma Jayasankar <padmaj...@gmail.com> wrote:

> HI,
>   l2_multi uses of.ofp_match.from_packet(packet), to get the match for the 
> folw table entry. This will be an exact match right. Now i have to add one 
> more flow entry(for backup path) for the same kind of packets. Hence i used 
> the same match and different priority. But as u have already mentioned, this 
> priority is defaulted to highest priority as it is an exact match and i am 
> getting an error as this entry is duplicate of working path entry.
>   What is the solution for this? can i make the backup entry with wildcards? 
> If so which fields? and how to set wildcards in match?
>   Or can v change the behavior of openflow protocol and make it to alow the 
> exact match entry with different priorities. In that case where should i make 
> the change? when i go thru libopenflow_01 , i couldn't find anything which 
> overwrites priority?
>   Please provide some input.
> 
> Thanks and Regards,
> Padma V
> 
> On Mon, Sep 8, 2014 at 2:39 AM, Murphy McCauley <murphy.mccau...@gmail.com> 
> wrote:
> Why use exact matches?
> 
> P.S., please consider not dropping the list.
> 
> On Sep 7, 2014, at 3:23 AM, Padma Jayasankar <padmaj...@gmail.com> wrote:
> 
>> Hi,
>>  Thanks for the clarification. Mine is exact match only. 
>>  But to enable backup path installation i have to enter two flow entries for 
>> the same match with different priorities.
>>  Is this possible? Hope i have to change the switch part for it.Or is it not 
>> possible ?
>> 
>> Thanks and Regards,
>> Padma V
>>  
>> 
>> 
>> On Sun, Sep 7, 2014 at 12:06 PM, Murphy McCauley <murphy.mccau...@gmail.com> 
>> wrote:
>> On Sep 6, 2014, at 11:19 PM, Padma Jayasankar <padmaj...@gmail.com> wrote:
>> 
>>> Hi,
>>>   I am trying to modify forwarding.l2_multi for backup path computation. 
>>> For this as a first step , i wanted to put some flow entries with the 
>>> priority 0x0001. But though i am setting the msg.priority to this value , 
>>> the flows which are installed in the switch have the priority 65535. 
>>>   Ia m setting the msg.priority of ofp_flow_mod message before 
>>> switch.connection.send(msg) statment
>>> 
>>>   def _binstall (self, switch, in_port, out_port, match, buf = None):
>>>     out_port_temp =3
>>>     msg = of.ofp_flow_mod()
>>>     msg.match = match
>>>     msg.match.in_port = in_port
>>>     msg.idle_timeout = FLOW_IDLE_TIMEOUT
>>>     msg.hard_timeout = FLOW_HARD_TIMEOUT
>>>     msg.priority = BACKUP_PRIORITY
>>>     log.debug("Installing backup path with priority %s",msg.priority)
>>>     msg.actions.append(of.ofp_action_output(port = out_port))
>>>     msg.buffer_id = buf
>>>     switch.connection.send(msg)
>>> 
>>> 1)The log.debug statement shows the priority as 1. But the flow entries are 
>>> with the priority 65535. 
>>> What is the reason for it?
>> 
>> From Section 3.4 of the OpenFlow 1.0 specification:
>> Packets are matched against flow entries based on prioritization. An entry 
>> that
>> specifies an exact match (i.e., it has no wildcards) is always the highest 
>> priority.
>> All wildcard entries have a priority associated with them. Higher priority 
>> entries
>> must match before lower priority ones. 
>> 
>> So... is your match an exact match?
>> 
>>> 2) What will be the effect of switch.connection.send(msg).
>>>   (ie) After the execution of this statement where will the control go.I 
>>> guess the control goes to the switch. If so which module of openvswitch 
>>> will handle this?
>> 
>> The effect is that it takes msg, serializes it into an OpenFlow command, and 
>> tells the OS to send it out the TCP connection to the switch.  Then control 
>> returns to the statement immediately following the call to send().
>> 
>> Elsewhere, the command goes through the OS's TCP stack, is sent over a link, 
>> is received by the switch, and the switch processes it.  I wouldn't call any 
>> of that a transfer of control, though.  It's all asynchronous.  And it's all 
>> outside the scope of POX.  If you want to understand how OVS works, you 
>> might try reading the OVS code or searching the OVS mailing lists.
>> 
>> 
>> Good luck!
>> 
>> -- Murphy
>> 
>>> On Sat, Sep 6, 2014 at 8:07 AM, Padma Jayasankar <padmaj...@gmail.com> 
>>> wrote:
>>> Hi,
>>>   I waited for complete discovery cycle..even though it is not working for 
>>> the single,2 topology. But it is working for the custom topology which i 
>>> created with loop.
>>> 
>>> Regarding openvswitch, i followed the below instructions to install it.
>>> 
>>> root@mininet-vm# cd /root
>>> root@mininet-vm# wget 
>>> http://openvswitch.org/releases/openvswitch-1.10.0.tar.gz
>>> root@mininet-vm# tar zxvf openvswitch-1.10.0.tar.gz
>>> 
>>> Build debian packages and install
>>> ---------------------------------
>>> root@mininet-vm# cd openvswitch-1.10.0/
>>> root@mininet-vm# apt-get install build-essential fakeroot
>>> root@mininet-vm# apt-get install debhelper autoconf automake libssl-dev 
>>> pkg-config bzip2 openssl python-all procps python-qt4 python-zopeinterface 
>>> python-twisted-conch
>>> root@mininet-vm# fakeroot debian/rules binary
>>> root@mininet-vm# cd ..
>>> root@mininet-vm# dpkg -i openvswitch-common*.deb 
>>> openvswitch-datapath-dkms*.deb openvswitch-controller*.deb 
>>> openvswitch-pki*.deb openvswitch-switch*.deb
>>> But before following debian package install mehods, i tried to install with 
>>> - 
>>> 
>>> Binary build and Install
>>> ------------------------------------
>>> root@mininet-vm# cd openvswitch-1.10.0/
>>> root@mininet-vm# ./configure --prefix=/usr --with-linux=/lib/modules/`uname 
>>> -r`/build
>>> root@mininet-vm# make
>>> root@mininet-vm# make install
>>> root@mininet-vm# make modules_install
>>> root@mininet-vm# rmmod openvswitch
>>> root@mininet-vm# depmod -a
>>> 
>>> But i got some error while executing make..
>>> 
>>> My doubt is
>>> 1. with debian packages install method, will i be able to change the source 
>>> code
>>> and build again.
>>> 2. As per this installation guidelines openvswitch1.10.0 folder is created 
>>> under root folder
>>>  and i am not able to see this folder contents(permission denied).. So how 
>>> to change the 
>>> source code of openvswitch
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> On Sat, Sep 6, 2014 at 2:33 AM, Murphy McCauley <murphy.mccau...@gmail.com> 
>>> wrote:
>>> 
>>> On Sep 5, 2014, at 11:08 AM, Padma Jayasankar <padmaj...@gmail.com> wrote:
>>> 
>>>> Hi,
>>>>  1)I have removed ovs that come along with Mininet and installed 
>>>> openvswitch 1.10.0. After this i tested mininet, with the following command
>>>>   sudo mn --topo single,2 --switch ovsk --controller 
>>>> remote,ip=192.168.56.1,port=6633
>>>> its working and pingall runs successfully.
>>>>  
>>>> Does this sufficient to check whether the installed openvswitch works 
>>>> fine? Please clarify.
>>>> Here i checked with POX controller with following 3 commands.
>>> 
>>> Probably, though I am not an authoritative source on the subject.
>>> 
>>>> ./pox.py log.level  forwarding.l2_learning
>>>> ./pox.py log.level  openflow.discovery   forwarding.l2_multi
>>>> ./pox.py log.level  openflow.discovery openflow.spanning_tree   
>>>> forwarding.l2_multi
>>>> 
>>>> For all these pingall test was successful
>>>> 
>>>> 2) But when i run the pox controller with the below options
>>>>  ./pox.py log.level  openflow.discovery openflow.spanning_tree --no-flood 
>>>> --hold-down  forwarding.l2_multi
>>>> the ping test fails for the sudo mn command given above.
>>>> 
>>>> But for another topology with loop, pingall test was successful
>>>> sudo mn --custom ~/mininet/custom/topo-3sw-2host.py --topo mytopo  
>>>> --controller remote,ip=192.168.56.1,port=6633
>>>> 
>>>> i have attached the custom topology file.
>>>> 
>>>> Why this happens? 
>>> 
>>> Did you wait a while before running the ping test?  With no-flood and 
>>> hold-down, you have to wait for a complete discovery cycle before you can 
>>> expect things to work.
>>> 
>>>> Thanks,
>>>> Padma V 
>>>> 
>>>> 
>>>> 
>>>> On Thu, Sep 4, 2014 at 10:54 AM, Murphy McCauley 
>>>> <murphy.mccau...@gmail.com> wrote:
>>>> Many features of OVS are available via specific OVS extensions to OpenFlow 
>>>> 1.0.  They may also be available as features in higher OpenFlow versions.
>>>> 
>>>> POX currently only supports OpenFlow 1.0, but it does support a number of 
>>>> OVS extensions (and others can be added).
>>>> 
>>>> As far as I know, there are no plans to have OVS stop supporting any lower 
>>>> versions of OpenFlow.  Certainly, the latest versions still support 1.0.
>>>> 
>>>> -- Murphy
>>>> 
>>>> On Sep 3, 2014, at 10:17 PM, Padma Jayasankar <padmaj...@gmail.com> wrote:
>>>> 
>>>>> HI,
>>>>>  Regarding OVS extensions to support back up path, do u mean the fast 
>>>>> fail over group type..
>>>>>   If that is the case then openflow controller(i am using POX), have to 
>>>>> support atleast OpenFlow 1.1 know..But it supports only OpenFlow 1.0 
>>>>> right.
>>>>>   Further, can i use the new OVS versions to support OpenFlow 1.0. Or 
>>>>> will they support only OpenFlow 1.3.
>>>>> 
>>>>> Thanks ,
>>>>> Padma V
>>>>> 
>>>>> 
>>>>> On Thu, Sep 4, 2014 at 10:27 AM, Murphy McCauley 
>>>>> <murphy.mccau...@gmail.com> wrote:
>>>>> Right, you'd have to build your own version.  I think you have the right 
>>>>> idea of asking on the mininet list for more guidance here.
>>>>> 
>>>>> Though again... OVS has lots of extensions already for doing 
>>>>> failover/backup-paths (even without controller involvement), which are 
>>>>> already used extensively.  I would not be surprised if it already had all 
>>>>> the capabilities you need.
>>>>> 
>>>>> Good luck.
>>>>> 
>>>>> -- Murphy
>>>>> 
>>>>> On Sep 3, 2014, at 6:56 AM, Padma Jayasankar <padmaj...@gmail.com> wrote:
>>>>> 
>>>>>> Hi,
>>>>>>   If i have to modify the openvswitch,then do i have to remove the one 
>>>>>> which is installed by mininet and download and install openvswitch.
>>>>>>   
>>>>>> Thanks & Regards,
>>>>>> Padma V
>>>>>> 
>>>>>> 
>>>>>> On Fri, Aug 29, 2014 at 9:51 AM, Murphy McCauley 
>>>>>> <murphy.mccau...@gmail.com> wrote:
>>>>>> On Aug 28, 2014, at 1:12 AM, Padma Jayasankar <padmaj...@gmail.com> 
>>>>>> wrote:
>>>>>> 
>>>>>>> Thanks a lot.
>>>>>>>   I am able to see the flow tables of other switches by changing the 
>>>>>>> port like 6635,6637..
>>>>>>> One more doubt.
>>>>>>>   If i have to add a new type of openflow message then where should i 
>>>>>>> do it.
>>>>>>>   In the server where i have installed minnet, Openflow folder is also 
>>>>>>> there.
>>>>>>>   I am able to find Openflow.h file in openflow/include/openflow 
>>>>>>> folder. This file has the declaration and structure definition of all 
>>>>>>> openflow messages like port_status,Packet_in etc. So here i have to add 
>>>>>>> the new message name and format i guess..
>>>>>> 
>>>>>> Probably not.  By default, Mininet uses Open vSwitch.  So you'll want to 
>>>>>> modify Open vSwitch.  Of course, Open vSwitch already contains features 
>>>>>> for backup paths...
>>>>>> 
>>>>>>>  But the controller also will be using openflow protocol to listen to 
>>>>>>> switch..So in the server in which i ghave installed the controller, 
>>>>>>> where will it be..i believe, i have to make changes in that part too.. 
>>>>>>> is it correct?
>>>>>> 
>>>>>> Sure.  In POX, this is mostly in libopenflow_01.py.  You can look at 
>>>>>> nicira.py also to see how some extensions have been added.  (It's not 
>>>>>> currently as clean/modular as would be desirable... cleaning it up will 
>>>>>> hopefully happen in a later POX version.)
>>>>>> 
>>>>>>> On Tue, Aug 26, 2014 at 11:57 PM, Murphy McCauley 
>>>>>>> <murphy.mccau...@gmail.com> wrote:
>>>>>>> 
>>>>>>> On Aug 26, 2014, at 9:40 AM, Padma Jayasankar <padmaj...@gmail.com> 
>>>>>>> wrote:
>>>>>>> 
>>>>>>>> HI,
>>>>>>>> 
>>>>>>>> 1. You might use l2_multi as a starting point, but you might want to 
>>>>>>>> use something like NetworkX to base your path computation upon.
>>>>>>>> what is this NetworkX..please explain
>>>>>>> 
>>>>>>> It's a graph library for Python which you can learn a lot about by 
>>>>>>> doing a web search for "NetworkX".
>>>>>>> 
>>>>>>>> In the below command 'switch ' is specified as tcp:127.0.0.1:6634. 
>>>>>>>> 
>>>>>>>> dpctl add-flow tcp:127.0.0.1:6634 in_port=1,actions=output:2
>>>>>>>> 
>>>>>>>> How is this mapped to a particular switch. In my topology if i have 3 
>>>>>>>> switches s3,s4,s5 then how to specify one of these switches in the 
>>>>>>>> command. Please clarify.
>>>>>>> 
>>>>>>> This is a Mininet question not a POX one.  Furthermore, as I already 
>>>>>>> mentioned, you are probably better off using the OVS tools (ovs-dpctl, 
>>>>>>> ovs-vsctl, ovs-ofctl, etc.).  Among other things, you can usually 
>>>>>>> specify a datapath by name when using the OVS tools (e.g., ovs-vsctl s3 
>>>>>>> ...).  That all said, I believe each switch in Mininet listens on a 
>>>>>>> different port.  So maybe port 6634 is s3, and 6635 is s4, etc.
>>>>>>> 
>>>>>>> Good luck.
>>>>>>> 
>>>>>>> -- Murphy
>>>>>>> 
>>>>>>>> On Tue, Aug 26, 2014 at 5:27 AM, Murphy McCauley 
>>>>>>>> <murphy.mccau...@gmail.com> wrote:
>>>>>>>> On Aug 25, 2014, at 7:25 AM, Padma Jayasankar <padmaj...@gmail.com> 
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>>> HI,
>>>>>>>>>  I feel, it will be better if i explain my requirement clearly. My 
>>>>>>>>> aim is to reduce the failure recovery time. For  this, i am trying to 
>>>>>>>>> avoid controller intervention at the time of failure. For that,in 
>>>>>>>>> response to traffic the controller should find primary and backup 
>>>>>>>>> path and install it in the switches.Back up path will be installed 
>>>>>>>>> with a different(lower) priority.
>>>>>>>>>  When a failure occurs, the switches connected to the failed link 
>>>>>>>>> should do the following.
>>>>>>>>>     1) Delete the flow entries that use the failed link(in/out port) 
>>>>>>>>>  By doing this, now the traffic will be redirected through the backup 
>>>>>>>>> path automatically as the switch has the backup path entries (which 
>>>>>>>>> is installed at the beginning) itself.
>>>>>>>>>     2) Renew this backup path entries:
>>>>>>>>>   When there is no failure, as the switches use the working path 
>>>>>>>>> only, the back up paths will be removed automatically. But this 
>>>>>>>>> should not happen. Hence the switches have to send some packets 
>>>>>>>>> through this path periodically to avoid expiration. These packets 
>>>>>>>>> should be different from normal data packets. I am referring these 
>>>>>>>>> packets as renewal packets. These packets has to be identified 
>>>>>>>>> uniquely, so that egress switches doesn't deliver them to hosts.
>>>>>>>>> 
>>>>>>>>>    3) Restoration of working path:
>>>>>>>>>  Once a link fails, the switches starts using the back up path. But 
>>>>>>>>> these backup paths are less efficient than primary path. Hence once 
>>>>>>>>> the failure is rectified and the link is up, again we should reroute 
>>>>>>>>> the traffic through the primary path.
>>>>>>>>>   But as the switches has backup entries, it won't direct the packets 
>>>>>>>>> to the controller. They will route the traffic through backup path 
>>>>>>>>> only.hence when a link is up, the corresponding switch has to send 
>>>>>>>>> restoration packets(a special type of packet) to the controller.Then 
>>>>>>>>> the controller will recompute the path for that flow and install the 
>>>>>>>>> primary and backup entries.
>>>>>>>>> 
>>>>>>>>> Now in implementation perspective, please clarify the below points.
>>>>>>>>> 1. For the (1) requirement can i use, l2_multi with changes to 
>>>>>>>>> compute backup path.
>>>>>>>>> 2. How to make the switches to generate renewal packets..where should 
>>>>>>>>> i place the code for this??
>>>>>>>> 
>>>>>>>> 1. You might use l2_multi as a starting point, but you might want to 
>>>>>>>> use something like NetworkX to base your path computation upon.
>>>>>>>> 
>>>>>>>> 2. Assuming you want to do it from the controller, maybe you want to 
>>>>>>>> use callDelayed() or a Timer (see the POX manual) to generate a 
>>>>>>>> packet-out message to send to a switch.
>>>>>>>> 
>>>>>>>> Beyond that, I'm not sure if I'll be much help to you.  Good luck!
>>>>>>>> 
>>>>>>>> -- Murphy
>>>>>>>> 
>>>>>>>>> On Mon, Aug 25, 2014 at 10:12 AM, Murphy McCauley 
>>>>>>>>> <murphy.mccau...@gmail.com> wrote:
>>>>>>>>> 
>>>>>>>>> On Aug 24, 2014, at 9:08 PM, Padma Jayasankar <padmaj...@gmail.com> 
>>>>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>>> Hi,
>>>>>>>>>>  In my previous mails, i asked two things
>>>>>>>>>> 1) I want to install back up paths proactively. According to my 
>>>>>>>>>> understanding l2_multi does this reactively(once failure occurs,it 
>>>>>>>>>> finds the new path). Did u mean the same abt l2_multi.
>>>>>>>>>> 2)ofp_flow_mod_flags of ofp_flow_mod has to be set to 
>>>>>>>>>> OFPFF_SEND_FLOW_REM to invoke flow removal notification messages.
>>>>>>>>>>  Is it correct? please confirm
>>>>>>>>>> 
>>>>>>>>>> Does your 'Yes' holds for both.
>>>>>>>>> 
>>>>>>>>> My yes was just for the second one.
>>>>>>>>> 
>>>>>>>>> For the first one... l2_multi is reactive.  It doesn't create any 
>>>>>>>>> switch state except in response to traffic.  In general, this is a 
>>>>>>>>> bad design.  topo_proactive is a somewhat more reasonable variation.  
>>>>>>>>> But you seem to be talking about creating both primary and backup 
>>>>>>>>> paths in response to traffic.  I'd say this is still reactive.  I 
>>>>>>>>> mean... I guess you could install just the primary and then install 
>>>>>>>>> the backup in response to failure, but in that case I wouldn't call 
>>>>>>>>> it a backup -- it's just a new path.
>>>>>>>>> 
>>>>>>>>>> Further regarding back up path renewal,
>>>>>>>>>> - For fast recovery, i have to enable the switches to delete the 
>>>>>>>>>> working path entries , when the corresponding link fails(though 
>>>>>>>>>> timeout constraint not met). Hence i can not make the switches to 
>>>>>>>>>> delete the backup paths on flow removal notification.
>>>>>>>>>>    Hence i have to use renewal packets.In which part this has to be 
>>>>>>>>>> done? It will be helpful, if i get a starting point.
>>>>>>>>> 
>>>>>>>>> I'm not sure I know what you mean by renewal packets.  I was assuming 
>>>>>>>>> you just meant packets that kept the flows from expiring.
>>>>>>>>> 
>>>>>>>>> Regardless, I believe the way I mentioned still works.  Yes, you 
>>>>>>>>> delete them manually when you get a flow removal message.  This is in 
>>>>>>>>> order to "clean them up".  This has nothing to do with how you react 
>>>>>>>>> on failure; this has to do with removing useless entries.
>>>>>>>>> 
>>>>>>>>> I don't actually know what mechanism you plan to use to detect a 
>>>>>>>>> failure and switch to an alternate path, but I think it probably 
>>>>>>>>> diverges heavily from how I'd do it, so I'm not sure how helpful I 
>>>>>>>>> can be.
>>>>>>>>> 
>>>>>>>>>> Thanks and Regards,
>>>>>>>>>> Padma V
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> On Mon, Aug 25, 2014 at 2:27 AM, Murphy McCauley 
>>>>>>>>>> <murphy.mccau...@gmail.com> wrote:
>>>>>>>>>> Yes.
>>>>>>>>>> 
>>>>>>>>>> On Aug 24, 2014, at 7:15 AM, Padma Jayasankar <padmaj...@gmail.com> 
>>>>>>>>>> wrote:
>>>>>>>>>> 
>>>>>>>>>>> Hi,
>>>>>>>>>>>   2)When i checked the openflow specification , came to know that 
>>>>>>>>>>> ofp_flow_mod_flags of ofp_flow_mod has to be set to 
>>>>>>>>>>> OFPFF_SEND_FLOW_REM to invoke flow removal notification messages.
>>>>>>>>>>>  Is it correct? please confirm
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> On Sun, Aug 24, 2014 at 7:42 PM, Padma Jayasankar 
>>>>>>>>>>> <padmaj...@gmail.com> wrote:
>>>>>>>>>>> Hi,
>>>>>>>>>>>   2)When i checked the openflow specification , came to know that 
>>>>>>>>>>> ofp_flow_mod_flags
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> On Sun, Aug 24, 2014 at 6:25 PM, Padma Jayasankar 
>>>>>>>>>>> <padmaj...@gmail.com> wrote:
>>>>>>>>>>> HI,
>>>>>>>>>>> 
>>>>>>>>>>> Thanks for quick reply.
>>>>>>>>>>> 
>>>>>>>>>>> 1) I want to install back up paths pro actively. According to my 
>>>>>>>>>>> understanding l2_multi does this reactively(once failure occurs,it 
>>>>>>>>>>> finds the new path). Did u mean the same abt l2_multi.
>>>>>>>>>>>    
>>>>>>>>>>> 2) I will implement back up path entries as per ur guidence. But to 
>>>>>>>>>>> install flow entries with flow removal notification, what should be 
>>>>>>>>>>> done? please provide a starting point.
>>>>>>>>>>> 
>>>>>>>>>>> Tahnks and Regards,
>>>>>>>>>>> Padma V
>>>>>>>>>>>    
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> On Sun, Aug 24, 2014 at 3:40 PM, Murphy McCauley 
>>>>>>>>>>> <murphy.mccau...@gmail.com> wrote:
>>>>>>>>>>> On Aug 24, 2014, at 2:54 AM, Padma Jayasankar <padmaj...@gmail.com> 
>>>>>>>>>>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>>> Hi,
>>>>>>>>>>>>   Thanks for the clarifications..
>>>>>>>>>>>> 1) For the first query, as u have said the iCMP type differs in 
>>>>>>>>>>>> the entries.
>>>>>>>>>>>> 2) Regarding the back up path, i can not install them without a 
>>>>>>>>>>>> timeout..Let me explain my requirement.
>>>>>>>>>>>>    My aim is to improve the recovery time.
>>>>>>>>>>>>    Hence i have to install backup paths along with working 
>>>>>>>>>>>> paths(both have to be computed and installed).
>>>>>>>>>>>>    when a link fails, the corresponding switch has to remove the 
>>>>>>>>>>>> corresponding entry, involving that link.
>>>>>>>>>>>>    As back up flow is already installed, the switch will use that 
>>>>>>>>>>>> entry immediately.
>>>>>>>>>>>>    But though we install backup path entries in the switch, when 
>>>>>>>>>>>> there is no failure , it won't be used Hence because of idle time 
>>>>>>>>>>>> out, they will get expired.If we install it as permenant entries , 
>>>>>>>>>>>> then this will result in large no of flow entries in the flow 
>>>>>>>>>>>> tables(in largel networks). 
>>>>>>>>>>>>    Hence ,the switches has to generate some renew packets(of small 
>>>>>>>>>>>> size), and send it through the back up path periodically(to avoid 
>>>>>>>>>>>> expiration). How to accomplish this.
>>>>>>>>>>> 
>>>>>>>>>>> Are you writing this reactively and using fine-grained table 
>>>>>>>>>>> entries?  Despite the fact that this is how l2_multi, for example, 
>>>>>>>>>>> works... I strongly caution against this. This introduces scaling 
>>>>>>>>>>> problems which are generally avoidable.
>>>>>>>>>>> 
>>>>>>>>>>> More to the point, though... I can think of several ways of keeping 
>>>>>>>>>>> the backup paths for active flows.  One way (which doesn't involve 
>>>>>>>>>>> any "renew packets" is... Install the primary table entries with 
>>>>>>>>>>> timeouts and with flow-removal notification.  Install the backup 
>>>>>>>>>>> entries with no timeouts.  If you get an expiration notification 
>>>>>>>>>>> from the primary path, remove the backup path (unless you've failed 
>>>>>>>>>>> over and are using the backup path; in this case, reinstall the 
>>>>>>>>>>> backup path with expirations).
>>>>>>>>>>> 
>>>>>>>>>>>> 3) To start with, i created a  custom topology, with 3 switches 
>>>>>>>>>>>> and 2 hosts in mininet. i wrote a python script to start the 
>>>>>>>>>>>> network and test pingall. I have attached the python script.
>>>>>>>>>>>>    I tried to connect that with remote POX controller
>>>>>>>>>>>> ./pox.py log.level  openflow.discovery openflow.spanning_tree 
>>>>>>>>>>>> --no-flood --hold-down  forwarding.l2_multi
>>>>>>>>>>>>  
>>>>>>>>>>>> ping was successful.
>>>>>>>>>>>> But i want to down a link and test the behaviour of ping after the 
>>>>>>>>>>>> link down. How to include it in the python script.
>>>>>>>>>>>> i know the mininet command
>>>>>>>>>>>> h1 ping -c10 h2
>>>>>>>>>>>> link s3 s4 down
>>>>>>>>>>>> h1 ping -c10 h2
>>>>>>>>>>>> link s3 s4 down
>>>>>>>>>>>> h1 ping -c10 h2
>>>>>>>>>>>> But how to invoke this in the script. Is there any way? Then only 
>>>>>>>>>>>> i can identify that how much time the controller takes to recover 
>>>>>>>>>>>> from failure.
>>>>>>>>>>> 
>>>>>>>>>>> This is a Mininet concern, and you should look into the Mininet 
>>>>>>>>>>> resources (the FAQ, mailing list archive, etc.).
>>>>>>>>>>> 
>>>>>>>>>>>> Sorry, if it is a very silly doubt..I am new to SDN, 
>>>>>>>>>>>> Python,mininet and POX and i have a very little time to finish my 
>>>>>>>>>>>> project. 
>>>>>>>>>>>> 
>>>>>>>>>>>>  
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> On Sun, Aug 24, 2014 at 4:05 AM, Murphy McCauley 
>>>>>>>>>>>> <murphy.mccau...@gmail.com> wrote:
>>>>>>>>>>>> On Aug 23, 2014, at 5:42 AM, Padma Jayasankar 
>>>>>>>>>>>> <padmaj...@gmail.com> wrote:
>>>>>>>>>>>> 
>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>  I am new to POX and Openflow. In my project.I have to compute 
>>>>>>>>>>>>> working path and backup path and install them in switches.I am 
>>>>>>>>>>>>> going to use Mininet and POX..Please guide me where to start 
>>>>>>>>>>>>> with..
>>>>>>>>>>>>> 
>>>>>>>>>>>>> In POX, i tried with
>>>>>>>>>>>>>    python ./pox.py openflow.discovery forwarding.l2_multi
>>>>>>>>>>>>> and in Mininet,
>>>>>>>>>>>>>   sudo mn --topo single,2 --controller remote,ip=192.168.1.4,6633
>>>>>>>>>>>>> 
>>>>>>>>>>>>> The topology was built successfully.
>>>>>>>>>>>>> 1)I wanted to check the flow entries in the flow table of switch 
>>>>>>>>>>>>> s1.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> i executed 
>>>>>>>>>>>>> sudo dpctl dump-flows tcp:127.0.0.1:6634
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Initially it showed a single entry which directed the flows to 
>>>>>>>>>>>>> the controller.
>>>>>>>>>>>> 
>>>>>>>>>>>> This is probably an entry to direct the discovery packets to the 
>>>>>>>>>>>> controller.
>>>>>>>>>>>> 
>>>>>>>>>>>>> Then i executed h1 ping -c10 h2
>>>>>>>>>>>>> 
>>>>>>>>>>>>> mean while checked the flow entries using dpctl command
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Now it listed some 5 entries including the previous one. For the 
>>>>>>>>>>>>> same input and poutput pairs there were 2 entries..why is it so? 
>>>>>>>>>>>> 
>>>>>>>>>>>> l2_multi installs exact-match flows.  There's probably a pair for 
>>>>>>>>>>>> both directions of ARP and another pair for both directions of 
>>>>>>>>>>>> ICMP.  Check the Ethertype and IP protocol numbers for each table 
>>>>>>>>>>>> entry.
>>>>>>>>>>>> 
>>>>>>>>>>>> Also, you should probably use the OVS tools (ovs-dpctl, ovs-ofctl, 
>>>>>>>>>>>> etc.) rather than the reference distribution's dpctl.
>>>>>>>>>>>> 
>>>>>>>>>>>>> 2) According to my requirements, some of the switches have to 
>>>>>>>>>>>>> generate renewal packets peroiodically, to keep the back up paths 
>>>>>>>>>>>>> alive. Which part has to be modified for this? 
>>>>>>>>>>>> 
>>>>>>>>>>>> You haven't really explained your strategy for backup paths, so I 
>>>>>>>>>>>> don't have any idea what you're talking about here.  Offhand, it 
>>>>>>>>>>>> seems like you could just install the entries for your backup 
>>>>>>>>>>>> paths without a timeout.
>>>>>>>>>>>> 
>>>>>>>>>>>>> Please clarify the doubts..
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Thanks & Regards,
>>>>>>>>>>>>> Padma V
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> <mytestping.py>
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>>>> 
>>>> 
>>>> 
>>>> <topo-3sw-2host.py>
>>> 
>>> 
>>> 
>> 
>> 
> 
> 

Reply via email to