Hi, To use OVS 'bundle' action,do i have to add some part in Nicira.py. In nicira.py "NXAST_BUNDLE" in in the actions constants list. But it has not been assigned any value. And there is no corresponding class definition for it. From nicira-ext.h, i can understand that as u said, this bundle action can be used to add more than one ports to a flow table entry. But how to incorporate that in POX. Please provide some input on this.
Thanks and Regards, Padma V On Fri, Sep 19, 2014 at 3:42 PM, Murphy McCauley <murphy.mccau...@gmail.com> wrote: > It can be done with an Open vSwitch extension to OpenFlow 1.0 in POX. I'm > not sure if the POX code to do it has been merged yet, but it's fairly > simple to add it. I think there are a couple ways to do it, one of them > being the OVS "bundle" action. > > This is certainly better than trying to hack the switch in order to allow > two identical entries and match on them differently depending on the port > availability which is conceptually messy, likely quite difficult to code, > and will be completely unique and uncommon as opposed to using one of the > methods already available in OVS which are widely deployed. > > Good luck. > > -- Murphy > > On Sep 19, 2014, at 3:09 AM, Padma Jayasankar <padmaj...@gmail.com> wrote: > > Hi, > Thanks for the clarification. > Can v do this with openflow1.0 itself. To do like this,don't we have to > specify the group type as 'FF' (Fast failover). WIth POX can v do this? > > On Fri, Sep 19, 2014 at 3:17 PM, Murphy McCauley < > murphy.mccau...@gmail.com> wrote: > >> 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 <http://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> >>>>>> >>>>>> >>>>>> >>>>> >>>> >>>> >>> >>> >> >> > >