[pox-dev] add rules proactively - send flow to two or more ports
yona at gteccom.uff.br
yona at gteccom.uff.br
Wed May 15 13:29:44 PDT 2013
/Lucas and Murphy,
First of all thank you very much for the reply./
Citando Murphy McCauley <murphy.mccauley at gmail.com>:
>
>
> On May 15, 2013, at 8:13 AM, yona at gteccom.uff.br wrote:
>
>> I´m using mininet and POX and I have two questions:
>> II) How do I add a flow_mod without being involved in an event? I
>> want to install proactively rules in the switches, but I only have
>> achieved this when listening events. I didn't find any such thing
>> on Internet. When I make simple applications like the one below, it
>> works, but I need to install rules proactively.
>>
>>
>
> As Lucas Brasilino said, you could do this from a timer, but...
> what's wrong with it being involved with an event? Don't you just
> need to pick the right event?
>
> A common scenario is to install rules when a switch connects. In
> some sense, these are still "reactive". It's just that they're not
> reacting to PacketIn events -- they're reacting to ConnectionUp
> events. See misc.dnsspy for an example. It makes sense to install
> rules in response to this event, right? You're not going to install
> rules BEFORE the switch connects...
>
> /My scenario is a little different, is known in advance and I would
> like to reconfigure the entire network each time a new switch
> connects.Thus, each event ConnectionUp, I would connect to the new
> switch, but wouldn't have access to the other switches that need to
> be reconfigured, right? Or not?/
>> II)How do I add a rule which sends a flow to two or more ports?
>> Using dpctl just put the ports and it works well (e.g.
>> in_port=2,actions=output:1,output:3), and in a application, how
>> would I do that? I tried as above, which works weel when I have two
>> ports, but when I need to install rules that sends flows to one and
>> more ports together :
>> ...
>> self._install(event.connection.dpid,2,(1,3))
>> self._install(event.connection.dpid,1,2))
>> ...
>>
>> it doesn't work:
>>
>> File "/home/mininet/pox/pox/lib/revent/revent.py", line 234, in
>> raiseEventNoErrors
>> return self.raiseEvent(event, *args, **kw)
>> File "/home/mininet/pox/pox/lib/revent/revent.py", line 281, in raiseEvent
>> rv = event._invoke(handler, *args, **kw)
>> File "/home/mininet/pox/pox/lib/revent/revent.py", line 159, in _invoke
>> return handler(self, *args, **kw)
>> File "/home/mininet/pox/ext/swbasico2.py", line 36, in
>> _handle_ConnectionUp
>> self._install(event.connection.dpid,3,1)
>> File "/home/mininet/pox/ext/swbasico2.py", line 46, in _install
>> for i in range(len(out_port)):
>> TypeError: object of type 'int' has no len()
>>
>>
>> Please, could you help me with that?
>>
>>
>>
>>
>
> In the second example, you're passing out_port = 2. When line 46
> does len(out_port), this is len(2), which doesn't make any sense.
> You could fix this function so that it does the right thing
> depending on whether it's passed an integer or a sequence, but you
> can also just pass it a sequence. Lucas almost had it right, except
> that (2) is not a tuple -- it's just a subexpression. Try this:
> self._install(event.connection.dpid,1,(2,)))
> or
> self._install(event.connection.dpid,1,[2]))
>
> /Thank you very much, I had used
> self._install(event.connection.dpid,1,(2,)) and worked well./
>
>
>
> -- Murphy
>
>
>
> --
> Esta mensagem foi verificada pelo sistema de antivírus e
> acredita-se estar livre de perigo.
>
--
Esta mensagem foi verificada pelo sistema de antivírus e
acredita-se estar livre de perigo.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.noxrepo.org/pipermail/pox-dev-noxrepo.org/attachments/20130515/68b9e45e/attachment-0001.htm>
More information about the pox-dev
mailing list