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