On Tue, Jan 29, 2013 at 01:34:49PM -0500, soaring eagle wrote:
> Thanks for the quick response. I agree with your assessment that
> Asynchronous seems like the right path for a robust solution. We just
> wanted to get some feedback out from folks like you who have several years
> of real experience developing controller and openflow agent.
> 
>  In your experience developing controllers, have you run into issues like
> this where controller getting blocked due to openflow agents being slow.
> It's probably not so much of an issue on soft-switches.

I haven't run into it, but I don't develop controllers (only switches)
and the Open vSwitch soft switch can handle thousands of new OpenFlow
flows per seconds.

> Couple of other questions:
> - Where is the hard-coded limit of 50 outstanding messages set. If we do
> asynchronous and want to avoid blocking, then in the worst case ofproto may
> need to have outstanding messages equal to max number of flows.

It's at the top of handle_flow_mod__() in ofproto/ofproto.c.

> - How much data is stored for each outstanding flow. Trying to understand
> how much memory impact of bumping the number of outstanding messages would
> be

The main cost of an outstanding flow is the flow itself.  Tracking the
ongoing operations is a small additional cost, probably less than 100
bytes per outstanding operation.  There's one "struct ofopgroup" per
outstanding flow_mod and one "struct ofoperation" per OpenFlow flow
modified by the flow_mod (usually just one).

> - We want to use the OF 1.2/1.3 support in OVS. I understand that it is
> experimental and there are several key pieces missing like support for
> Groups. Do we have a list somewhere which tells if anyone is working on a
> particular feature for OF 1.2/1.3 like group support. We don't want to take
> on a functionality if someone is already doing the feature.

Where I know that someone is working on a feature, the OPENFLOW-1.1+
file at the top of the tree mentions it.  If you plan to work on a
feature (and contribute it), please let me know so I can add a note
there.

> Thanks
> On Tue, Jan 29, 2013 at 12:59 PM, Ben Pfaff <b...@nicira.com> wrote:
> 
> > On Tue, Jan 29, 2013 at 10:43:02AM -0500, soaring eagle wrote:
> > > We are considering porting OVS datapath to a new ASIC hardware platform
> > by
> > > writing a provider for the hardware. We have few basic design questions
> > > that we are looking to get some feedback on:
> > >
> > > 1) We are trying to decide whether to implement the provider
> > > rule->construct, destruct routines synchronously or asynchronously. One
> > > hardware flow update generally takes less than 1 ms on single ASIC but
> > can
> > > take several ms if several ASICs have to be updated and some of the ASICs
> > > are not on the same board (stacking/chassis designs) and RPC has to done
> > to
> > > update the remote ASICs.
> > >
> > > With a synchronous rule provider, the concern is that ofproto can get
> > > blocked when the controller is trying to update several hundred flows.
> > This
> > > may cause couple of issues:
> > >
> > > - Controller will get blocked/slow updating the flows on a switch and may
> > > not be able to service flow updates for other switches
> > > - Controller may not be able to send control keepalive packets if it is
> > > implementing a time sensitive protocol and ofproto is serializing all the
> > > operations
> > >
> > > Do you think these are valid concerns? Making the rule routines
> > > asynchronous adds more complexity to the implementation, so we want to
> > make
> > > sure there would be benefits of going the asynchronous path.
> >
> > It sounds like asynchronous implementation will produce better
> > results, even if it's more work.
> >
> > > b)  Assuming we do asynchronous rule operations, what does ofproto do
> > when
> > > a rule construct fails. Does it send asynchronous message to the
> > controller
> > > informing the flow could not be added. We are trying to understand how
> > > would a controller know whether the flow was successfully added or not.
> >
> > It sends an OpenFlow error message to the controller.
> >
> > > c) While a given rule construct operation is in progress asynchronously,
> > > would the ofproto issue new rule construct operations. How many such new
> > > rule construct operations can ofproto issue before it expects an
> > > acknowledgement on a pending operation.
> >
> > There's currently a hard-coded limit of 50 outstanding OpenFlow
> > flow_mod operations at any given time.  After that, it waits for a
> > flow_mod to complete before allowing another one to issue.
> >
_______________________________________________
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to