Hi Syed, One can interpret "finish processing" as having dropped. I am suggesting we do, but this is apparently not a impossibility. It is a rare event nonetheless.
Regards KK On 19 December 2010 23:37, Syed Akbar Mehdi <akbar.me...@seecs.nust.edu.pk> wrote: > Hi KK, > > Thanks for detailed explanation. However this conflicts somewhat with the > OpenFlow Spec v1.0. In section 5.3.7 (page 36) of the OpenFlow1.0 spec it is > written that: > > "Upon receipt, the switch must finish processing all previously received > messages before executing any messages beyond the Barrier Request". > > -- > Regards, > Syed Akbar Mehdi, > School of EECS (SEECS), > National University of Sciences and Technology (NUST), > Pakistan. > > On Mon, Dec 20, 2010 at 12:18 PM, kk yap <yap...@stanford.edu> wrote: >> >> Hi Syed, >> >> The barrier function is only there to tell you that a preceding >> message is processed (i.e., the command is carried out, dropped or >> error code is returned). So, you can imagine if you want to check the >> flow mod is inserted or not, you can do the following: >> 1) send flow mod >> 2) send barrier request >> 3) send flow stat after receiving barrier reply >> This ensures that the flow mod is processed by the switch already. >> Switch can choose to process messages out of order of what is >> received, except for the barrier message. >> >> Hope this is clearer. >> >> Regards >> KK >> >> On 19 December 2010 22:53, Syed Akbar Mehdi >> <akbar.me...@seecs.nust.edu.pk> wrote: >> > Hi KK, >> > >> > You say that: >> > >> > "Meaning, it is perfectly okay for a switch to >> > send a reply to the barrier and ignore the flow mod before that." >> > >> > How is the barrier reply useful then, if it does not guarantee this? >> > >> > -- >> > Regards, >> > Syed Akbar Mehdi, >> > School of EECS (SEECS), >> > National University of Sciences and Technology (NUST), >> > Pakistan. >> > >> > On Mon, Dec 20, 2010 at 10:38 AM, kk yap <yap...@stanford.edu> wrote: >> >> >> >> Hi Derek, >> >> >> >> Some comments inline. Hope they help. >> >> >> >> Regards >> >> KK >> >> >> >> On 19 December 2010 21:10, Derek Cormier <derek.corm...@lab.ntt.co.jp> >> >> wrote: >> >> > I noticed that the flow mod event fires in response to a successful >> >> > NOX >> >> > API >> >> > call for adding a flow. It gives the impression that it was >> >> > successfully >> >> > added to the switch, but, this is not always the case. For example, >> >> > if I >> >> > send two identical ofp_flow_mod requests with the OFPFF_CHECK_OVERLAP >> >> > flag >> >> > set, then I will still get a flow mod, even though one triggers an >> >> > error >> >> > and >> >> > is not added to the switch's table. >> >> >> >> A flow mod event is triggered whenever a flow_mod is sent by a >> >> component. As you have noticed, multiple comments can be sending flow >> >> mods and this is a way for a component to see all the flow mods sent. >> >> That's all. It does not imply NOX has sent the message, and even less >> >> if the switch has received it or processed it. >> >> >> >> > >> >> > I'm guessing the reason for this is speed. Since OpenFlow switches do >> >> > not >> >> > reply to flow mod requests, there are a couple ways I can think of to >> >> > confirm if a flow was added: >> >> > >> >> > 1. Send a barrier message after each add flow message. If a reply is >> >> > received and no error message was received, then it was added. >> >> >> >> Most of the time, you are right. While OpenFlow messages are carried >> >> over TCP and SSL connections, there is no guarantee that a switch will >> >> honor all the messages. Meaning, it is perfectly okay for a switch to >> >> send a reply to the barrier and ignore the flow mod before that. This >> >> is really because a switch can be overwhelmed by control messages and >> >> at some point it might discard messages. Your flow mod might just be >> >> the unlucky message dropped. >> >> >> >> > 2. Store an internal copy of the flow table in the NOX component and >> >> > check >> >> > for potential errors before adding. >> >> >> >> Yes. This is prudent but unfortunately tedious. This allows assume >> >> you emulate the entire switch functionality in the controller. By the >> >> way, you still will not have any guarantees about the switch inserting >> >> the flow mod, as I have explained above. >> >> >> >> > Both of these solutions have problems if other components are also >> >> > adding >> >> > flows. Does anyone have any other ideas? >> >> >> >> In my mind, the obvious way to do this is hard and evil. You have to >> >> send the flow mods, cache it in the controller and periodically dump >> >> the flow table to check that it is there. This can be done in >> >> conjunction with other operations like stat gathering, but the >> >> operation can be very stressful to a switch. >> >> >> >> > It would be nice if the OpenFlow protocol had responses to flow mod >> >> > requests >> >> > that could be optionally turned on/off for speed. >> >> >> >> We have been through this discussion a few times in OpenFlow. And >> >> current result is that we still don't have it in the spec, even for >> >> the upcoming OpenFlow v1.1. >> >> >> >> > -Derek >> >> > >> >> > _______________________________________________ >> >> > nox-dev mailing list >> >> > nox-dev@noxrepo.org >> >> > http://noxrepo.org/mailman/listinfo/nox-dev_noxrepo.org >> >> > >> >> > >> >> >> >> _______________________________________________ >> >> nox-dev mailing list >> >> nox-dev@noxrepo.org >> >> http://noxrepo.org/mailman/listinfo/nox-dev_noxrepo.org >> > >> > > _______________________________________________ nox-dev mailing list nox-dev@noxrepo.org http://noxrepo.org/mailman/listinfo/nox-dev_noxrepo.org