Hi,

Ryu OpenFlow 1.0 supports OVS resubmit.

https://github.com/osrg/ryu/blob/72a06f6f60dafd3c246d27477b0c3261ba9c061c/ryu/ofproto/ofproto_v1_0_parser.py#L531

Try to import this module or add the code to Ryu openflow 1.3 parser.

Best Regards,
Eder.

On Thu Feb 19 2015 at 1:12:57 PM Clément Rault <rault.clem...@gmail.com>
wrote:

> Hi,
>
> I am using Open vSwitch in my setup yes.
>
> So I will try to use the resubmit action in the next live bucket as you
> mentioned. Although I'm not sure that it's implemented in the controller
> that I am using (Ryu)...
>
> I will investigate it further.
>
> Thanks for your help.
>
> Best,
> Clément
>
> On 19 February 2015 at 15:17, Eder Leão Fernandes <
> ederleaofernan...@gmail.com> wrote:
>
>> Hi,
>>
>> On Thu Feb 19 2015 at 11:12:13 AM Clément Rault <rault.clem...@gmail.com>
>> wrote:
>>
>>> Hi,
>>>
>>> Ok, so you're saying that the group actions are processed right at the
>>> end, after processing all the flow tables, right?
>>>
>>> No, a group action - or any other action -  from an apply action
>> instruction is executed just after the flow match. Only actions written to
>> the action set (write action instruction), are executed after processing
>> all tables.
>>
>>
>>> What do you mean by group chaining? I don't think it's possible to link
>>> to another group entry inside a group entry.
>>>
>>
>> Group chaining is a group that allows group buckets to have group
>> actions. I.e, from one group, it is possible to send the packet to another
>> group. I do not know if your switch supports it (Open vSwitch, from my
>> knowledge does not support it, for example)
>>
>>
>>>
>>> The problem is that it's also not possible to use Goto Table in a group
>>> entry since it's an instruction and not an action.
>>>
>>> One possible solution to send the packet back to the pipeline is the
>> Open vSwitch resubmit action.
>> Please refer to this thread:
>> http://openvswitch.org/pipermail/discuss/2014-August/014807.html
>>
>> Looks like the patch was accepted.
>>
>> https://github.com/openvswitch/ovs/blob/18080541d2768c17c17711c35b4d4a23ab3e4153/lib/ofp-actions.c#L4883
>>
>> So, if you are using OVS, instead of using the metadata field, try to add
>> a resubmit action to the next live bucket, sending the packet to the next
>> table. Following your example:
>>
>>
>>
>>
>>
>> *Table 0:Apply Gr 0 actionsGr 0:bucket 1 : If port 1 is up then forward
>> the packet there*
>> *bucket 2: resubmit packet to table 1*
>>
>>
>>
>>
>>
>> *Table 1:Apply Gr 1 actionsGr 1:If port 2 is up then forward the packet
>> there*
>>
>> Best Regards,
>> Eder.
>>
>>
>>> Best,
>>> Clément
>>>
>>> On 18 February 2015 at 20:27, Eder Leão Fernandes <
>>> ederleaofernan...@gmail.com> wrote:
>>>
>>>> True,
>>>>
>>>> metadata is an instruction, so you cannot add it to the group bucket
>>>> action set.
>>>>
>>>> The problem is not the group order of execution. If you had specified
>>>> the write metadata instruction, it would have been executed after the apply
>>>> action instruction.
>>>> Another reason for your setup failure is the fact that a group action
>>>> inside an apply actions will process a copy of the packet, just like when
>>>> you have an output action inside this instruction type. So the pipeline
>>>> keeps processing the packet in the state before the group action.
>>>>
>>>> What you need to figure is how will you signalize the failure. Does
>>>> your switch supports group chaining? After the first bucket of the failover
>>>> group, a second bucket could point for another group, with the actions you
>>>> need to apply and the output for the failover port.
>>>>
>>>> Best Regards,
>>>> Eder,
>>>>
>>>>
>>>>
>>>>
>>>> On Wed Feb 18 2015 at 2:31:10 PM Clément Rault <rault.clem...@gmail.com>
>>>> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> Thanks for your answer Eder.
>>>>>
>>>>> I need two fast failover groups (and even more in my complete setup)
>>>>> because I wanna do some others actions in the bucket and it wouldn't work
>>>>> with only one group.
>>>>>
>>>>> The software switch I'm using does support fast failover groups (the
>>>>> example you gave is working for example).
>>>>>
>>>>> But I think that I found why my example is not working. And it's
>>>>> because setting the metadata field in a group is not possible because it's
>>>>> an instruction and only actions can be used in groups.
>>>>>
>>>>> Do you have an idea about that?
>>>>>
>>>>> Do you think that it has to do with the fact that group entries
>>>>> actions are processed almost right at the end and that's why it's not
>>>>> possible to go back to flow tables after that? Therefore setting the
>>>>> metadata in the group entries is not possible.
>>>>>
>>>>> Best,
>>>>> Clément
>>>>>
>>>>> On 17 February 2015 at 23:00, Eder Leão Fernandes <
>>>>> ederleaofernan...@gmail.com> wrote:
>>>>>
>>>>>> Hi Clément,
>>>>>>
>>>>>> Your setup does not seem wrong. My question is why do you need two
>>>>>> fast failover groups? Is it not better just to add a second bucket to Gr 
>>>>>> 0?
>>>>>>
>>>>>> With fast failover groups you could set the first bucket watch_port
>>>>>> to the port 1. If port 1 is down, the group will try to execute the 
>>>>>> second
>>>>>> bucket, which has the action to forward for port 2.
>>>>>>
>>>>>> Another thing to check is if the software switch you are using with
>>>>>> mininet supports fast failover groups.
>>>>>>
>>>>>> Best Regards,
>>>>>> Eder.
>>>>>>
>>>>>>
>>>>>> On Tue, Feb 17, 2015 at 12:33 PM, Clément Rault <
>>>>>> rault.clem...@gmail.com> wrote:
>>>>>>
>>>>>>> Hi all,
>>>>>>>
>>>>>>>
>>>>>>> I am currently trying to implement an algorithm allowing an
>>>>>>> alternative path to be found without the need to contact the controller.
>>>>>>> And for that I need to use group entries of the fast failover type. In 
>>>>>>> my
>>>>>>> algorithm, I'm using action buckets of multiple group entries on a 
>>>>>>> single
>>>>>>> packet and I'm wondering if it's possible in practice (with OpenFlow) 
>>>>>>> *as
>>>>>>> group entries actions are processed almost right at the end and it might
>>>>>>> not be possible to go back to flow tables after that*.
>>>>>>>
>>>>>>>
>>>>>>> For example I have the following (simple) *scenario*:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> *Table 0:Apply Gr 0 actions, Goto Table 1Gr 0:If port 1 is up then
>>>>>>> forward the packet there, put metadata to 1Table 1:If metadata is at 0 
>>>>>>> then
>>>>>>> Apply Gr 1 actionsGr 1:If port 2 is up then forward the packet there*
>>>>>>>
>>>>>>>
>>>>>>> I tried it (with mininet and ryu) but it didn't work and I'm worried
>>>>>>> that it's because it's not possible to apply the actions of multiple 
>>>>>>> group
>>>>>>> entries. And probably because group entries actions are processed after
>>>>>>> going through all the flow tables.
>>>>>>>
>>>>>>>
>>>>>>> I would really appreciate, if anyone can kindly help me to
>>>>>>> understand, *if the following scenario is not working because of a
>>>>>>> design "issue" of Openflow or because it's an implementation issue (with
>>>>>>> ryu in my case)*.
>>>>>>>
>>>>>>>
>>>>>>> Thanks in advance,
>>>>>>>
>>>>>>> Best,
>>>>>>> Clément
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> openflow-discuss mailing list
>>>>>>> openflow-discuss@lists.stanford.edu
>>>>>>> https://mailman.stanford.edu/mailman/listinfo/openflow-discuss
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Eder Leão Fernandes
>>>>>>
>>>>>> MSc Candidate
>>>>>> Faculdade de Engenharia Elétrica e Computação
>>>>>> Universidade de Campinas
>>>>>>
>>>>>
>>>>>
>>>
>
_______________________________________________
openflow-discuss mailing list
openflow-discuss@lists.stanford.edu
https://mailman.stanford.edu/mailman/listinfo/openflow-discuss

Reply via email to