Hi Derek,

This question is better asked on openflow-spec or openflow-discuss.  :)

Regards
KK

On 19 December 2010 22:11, Derek Cormier <derek.corm...@lab.ntt.co.jp> wrote:
> Thanks KK, that clears everything up. May I ask, what is the main reason for
> not including a flow mod reply in the OpenFlow protocol? Is it speed? Isn't
> OpenFlow fast enough?
>
> -Derek
>
> On 12/20/2010 02:38 PM, kk yap 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

Reply via email to