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" <[email protected]> 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 <[email protected]
> > wrote:
>
>> Why use exact matches?
>>
>> P.S., please consider not dropping the list.
>>
>> On Sep 7, 2014, at 3:23 AM, Padma Jayasankar <[email protected]> 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 <
>> [email protected]> wrote:
>>
>>> On Sep 6, 2014, at 11:19 PM, Padma Jayasankar <[email protected]>
>>> 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 <[email protected]>
>>> 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 <
>>>> [email protected]> wrote:
>>>>
>>>>>
>>>>> On Sep 5, 2014, at 11:08 AM, Padma Jayasankar <[email protected]>
>>>>> 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 <
>>>>> [email protected]> 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 <[email protected]>
>>>>>> 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 <
>>>>>> [email protected]> 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 <[email protected]>
>>>>>>> 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 <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> On Aug 28, 2014, at 1:12 AM, Padma Jayasankar <[email protected]>
>>>>>>>> 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 <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Aug 26, 2014, at 9:40 AM, Padma Jayasankar <[email protected]>
>>>>>>>>> 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 <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> On Aug 25, 2014, at 7:25 AM, Padma Jayasankar <
>>>>>>>>>> [email protected]> 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 <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Aug 24, 2014, at 9:08 PM, Padma Jayasankar <
>>>>>>>>>>> [email protected]> 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 <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Yes.
>>>>>>>>>>>>
>>>>>>>>>>>> On Aug 24, 2014, at 7:15 AM, Padma Jayasankar <
>>>>>>>>>>>> [email protected]> 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 <
>>>>>>>>>>>> [email protected]> 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 <
>>>>>>>>>>>>> [email protected]> 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 <
>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Aug 24, 2014, at 2:54 AM, Padma Jayasankar <
>>>>>>>>>>>>>>> [email protected]> 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 <
>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Aug 23, 2014, at 5:42 AM, Padma Jayasankar <
>>>>>>>>>>>>>>>> [email protected]> 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>
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>>
>>
>