Hello, Why don't you use l2_multi? It uses spanning tree, and if you want a backup path when a link is down it works very well. However, if you are looking for a packet replay, remember that you need see if there's host support (in case of UDP, you can search a paper called "n-cast" or in case of TCP you can look at MPTCP) Em 11/09/2014 07:53, "Padma Jayasankar" <padmaj...@gmail.com> escreveu:
> Hi, > Is it not necessary to use exact matches.Regarding the flow entries this > is my understanding - > 1) when a packet comes and it doesn't have any match it will be forwarded > to the controller(openflow 1.0) > 2) For that packet, the controller will find the route using source and > destination fields. > 3) According to the fields in the 'packet', match fields will be assigned > values. > 4) For these match field value an entry will be added in respective > switches with in,out port values > In this case match will be an exact match right? > and foor backup path, i have to install two entries (with different out > port). Hence i have to give two different priorities. > Is my understanding wrong? If so please explain the functionality. > > 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> >>>>> >>>>> >>>>> >>>> >>> >>> >> >> >