"dev" <dev-boun...@openvswitch.org> wrote on 06/22/2016 01:07:36 PM:
> From: Ryan Moats/Omaha/IBM@IBMUS > To: Ben Pfaff <b...@ovn.org> > Cc: dev@openvswitch.org > Date: 06/22/2016 01:08 PM > Subject: Re: [ovs-dev] SFC summary? > Sent by: "dev" <dev-boun...@openvswitch.org> > > Ben Pfaff <b...@ovn.org> wrote on 06/22/2016 12:47:06 PM: > > > From: Ben Pfaff <b...@ovn.org> > > To: Ryan Moats/Omaha/IBM@IBMUS > > Cc: dev@openvswitch.org > > Date: 06/22/2016 12:47 PM > > Subject: SFC summary? > > > > Ryan, any chance you could give us a summary of the SFC ideas that have > > come out of the huge discussion on openstack-dev? I'd like to know what > > approach we're likely to pursue. > > > > (I'd be happy to hear from anyone else, too, but I think I recall that > > you were planning to take a lead here.) > > > > Thanks, > > > > Ben. > > > > I'll pull together something by EoD so that there are out there for > tomorrow's IRC meeting. > > Ryan Ok, so it wasn't as late as I thought it might be - we can go over questions at tomorrow's IRC (and I'm always looking for better solutions if people think of them!)... To date, most of the ongoing conversation has been on the openstack side in terms of what types of NFVs (bump in the wire (BiW)/L2/L3) can/should be supported. The first place where SFC intersects with OVS/OVN is in the additional tables that will be added to the OVN northbound database. SFC defines the concept of a port chain, which consists of an ordered list of port pair groups, each of which has one or more port pairs where a port pair represents the input and output ports of a particular SF instance. Traffic is routed to a port chain via a flow classifier. John's original patches proposed to make all of these separate tables within the northbound database, and while I've not found a better way to handle the port chain, port pair groups or port pairs than with new tables, I've been pushing to extend the ACL definition to allow SFC flow classifiers to be treated as ACL entries, with the action being admittance to the port chain. The second place of intersection is how these entries are converted to logical flows. The original effort proposed breaking out of the ingress pipeline and directly punting packets to the input port of a particular port pair. My thinking has been that's not a good idea because it (a) breaks the pipeline architecture and (b) creates the possibility of multicast/broadcast loops for a BiW SF. My counter proposal (and we are still discussing it) is to augment the current ingress and egress pipelines with an additional "SFC" stage added into each pipeline. - The extended ACLs would be converted by ovn-controller into logical flows that identify the port chain and port pair group that traffic that matches it needs to go to. - For the ingress SFC stage, ovn-northd would write logical flows that would do the same based on the incoming OVS port. - For the egress SFC stage, ovn-northd would write a logical flow to select the output OVS port based on bucket grouping if the destination port pair group has multiple port pairs in it. The advantage of the above (besides maintaining what I feel is a clean architecture) is that the loopback rules in table 34 can be leveraged to break the potential loops for a BiW SF by programming table 34 to drop multicast/broadcast packets that are trying to go from the output port of a port pair back to the input port of that same port pair. Since table 34 is programmed by ovn-controller directly from physical.c, my current best solution (and I'm looking for a better one) is to have ovn-northd identify these ports in the Port_Binding table by using the options field to identify the companion Port_Binding (i.e. the other port of the port pair). Then ovn-controller can use that information to program table 34 correctly. The downside of the above is that it implies storing of port chain and port pair group information as metadata and I've not yet worked out all the details for where that can be put and how to make sure it doesn't break what we are currently carrying. Ryan _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev