> On Nov 24, 2015, at 9:40 AM, Jarno Rajahalme <ja...@ovn.org> wrote:
> 
> 
>> On Nov 24, 2015, at 9:25 AM, Ben Pfaff <b...@ovn.org> wrote:
>> 
>> On Thu, Nov 19, 2015 at 01:33:18PM -0800, Jarno Rajahalme wrote:
>>> Currently ovs-ofctl replace-flows and diff-flows commands only support
>>> flows in table 0.  Extend this to cover all possible tables.
>>> 
>>> Signed-off-by: Jarno Rajahalme <ja...@ovn.org>
>> 
>> There's one oddity that may deserve consideration.  It depends on how
>> careful we want to be.
>> 
>> OpenFlow 1.0 does not define a way to add a flow to a particular table.
>> The switch is responsible for deciding which table is most appropriate
>> for a given flow.  For example, a switch might have one table that
>> supports wildcards and another one that is exact-match (this is in fact
>> specifically envisioned by OF1.0 through its insistence that exact-match
>> flows have the highest priority).
>> 
>> This means that when talking to an OF1.0 switch, "ovs-ofctl
>> replace-flows" (and friends) should ignore the table number.  If
>> a flow on the switch is in table 1, but the input file says it is in
>> table 0 (probably because it doesn't specify a table at all), ovs-ofctl
>> should do nothing, because that's the desired state.
>> 
> 
> So for an OF1.0 switch without the Table ID extension we should ignore table 
> numbers both ways, when reading from the file and when reading from the 
> switch, essentially pretend that there is only one table?
> 
>> However, for practically forever, OVS has had special extensions to
>> allow control over the table in which a flow lives.  This means that if
>> ovs-ofctl is talking to OVS, even in OpenFlow 1.0, it should place flows
>> where the user requested and should not ignore the table numbers.
>> 
>> This distinction is reflected through ofputil_protocol values.  If a
>> switch supports OFPUTIL_P_OF10_STD_TID or OFPUTIL_P_OF10_NXM_TID, then
>> ovs-ofctl can place flows arbitrarily; if it only supports
>> OFPUTIL_P_OF10_STD (or, theoretically, only OFPUTIL_P_OF10_NXM), then it
>> is just a plain OF1.0 switch and all of the tables should be treated
>> alike.
>> 
>> OF1.1+ all support placing flows where the user requests.
>> 
>> It's probably not too hard to support this, and possibly it is
>> worthwhile.
>> 

IMO this could be cleaner if the choice of protocol is driven by the input 
file. If the file has any flow with a non-zero or non-all table number, then we 
restrict the choice of protocols to ones that support multiple tables. Sounds 
reasonable?

  Jarno

>> What do you think?
> 
> I’ll take a stab at it, assuming the above,
> 
>  Jarno
> 

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to