Hi Simon,

Sorry for the delay in responding.

On 01/11/2013 13:52, Simon Horman wrote:
On Tue, Oct 15, 2013 at 05:12:22PM +0900, YAMAMOTO Takashi wrote:
Signed-off-by: YAMAMOTO Takashi <yamam...@valinux.co.jp>
---
  OPENFLOW-1.1+ | 7 +++++++
  1 file changed, 7 insertions(+)

diff --git a/OPENFLOW-1.1+ b/OPENFLOW-1.1+
index 07b2660..4f30520 100644
--- a/OPENFLOW-1.1+
+++ b/OPENFLOW-1.1+
@@ -121,6 +121,13 @@ didn't compare the specs carefully yet.)
        [optional for OF1.3+]

      * More flexible table miss support.
+      This requires the following.
+      - Change the default table-miss action (in the absense of table-miss
+        entry) from packet_in to drop for OF1.3+.  Decide what to do if
+        a switch is configured to support multiple OF versions.

I'm wondering what is a good approach to take here.

It is possible to configure Open vSwitch (ovs-vswtichd) to only accept Open
Flow 1.3+ connections.  In which case it should be possible to select the
default behaviour described above.  However it is also possible for Open
vSwitch (ovs-vswtichd) to be configured to accept a connections for Open
Flow versions prior to 1.3, and 1.3+.

This is complicated by the fact that OpenFlow 1.3 conveniently deprecates
all the TABLE_MOD bits that allow configuration of this behaviour. Though I
assume deprecated doesn't mean not allowed.

With the constraints describe above and making the bold assumption that I'm
not missing any further constraints I propose the following:

A:
   1. If Open vSwtich is configured to only accept connections
      for Open Flow 1.3+ then default to drop.

   2. Otherwise use the current default, packet_in.

   Is this a good idea? It may be to subtle to be useful in practice.

B:
   Implement TABLE_MOD to allow it to be used to control the behaviour
   of each table's miss behaviour.

   We could even go so far as to encourage people to use it,
   even if they are using Open Flow 1.3+, to ensure that the
   behaviour is what they expect.

.


Agree to A plan.
The default behaviors below match OF protocols:

  C(1.3) - O(1.3) [absence_table_miss:drop]
  for v in 1.0, 1.1, 1.2:
    C(v) - O(v) [table_miss:packet_in]

  * C = Controller, O = OVS

When connecting controller, OVS choose default (absent_)table_miss action.
A log may be needed when set absence_table_miss to drop.

== More ==

See OpenFlow 1.3.2 [5.4 Table-miss], it says table-miss flow
entry is a normal flow. It doesn't exist by default.

If there isn't any flow include table-miss flow, then switch should
drop the packet by default.

This "drop" behavior isn't a table-miss, and it could be modified
by protocol like OFCONF, so it seems to be different between
OF 1.0~1.2 and 1.3:

                 |             TABLE MISS BEHAVIOR
  ———————————————|—————————————————————————————————————————————————————————
                 |                      not found
  OF1.0 to OF1.2 | lookup flow-entries ——————————> table-miss process
                 |                                               not found
  OF1.3          | lookup flow-entries include table-miss entry ——————————>
                 |   drop (absent_table_miss)

So in OF1.3, a FLOW_MOD msg is ok to replace a TABLE_MOD msg, I think.

--
Best Regards,
Alexander Wu

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

Reply via email to