[ovs-dev,RFC,1/2] ingress scheduling: schema and docs

Message ID 1518814401-21311-2-git-send-email-billy.o.mahony@intel.com
State Superseded
Delegated to: Ian Stokes
Headers show
Series
  • Ingress Scheduling
Related show

Commit Message

Billy O'Mahony Feb. 16, 2018, 8:53 p.m.
Signed-off-by: Billy O'Mahony <billy.o.mahony@intel.com>
---
 Documentation/howto/dpdk.rst | 18 ++++++++++++++++++
 vswitchd/vswitch.ovsschema   |  9 +++++++--
 vswitchd/vswitch.xml         | 40 ++++++++++++++++++++++++++++++++++++++++
 3 files changed, 65 insertions(+), 2 deletions(-)

Patch

diff --git a/Documentation/howto/dpdk.rst b/Documentation/howto/dpdk.rst
index d717d2e..b9d55d8 100644
--- a/Documentation/howto/dpdk.rst
+++ b/Documentation/howto/dpdk.rst
@@ -237,6 +237,24 @@  respective parameter. To disable the flow control at tx side, run::
 
     $ ovs-vsctl set Interface dpdk-p0 options:tx-flow-ctrl=false
 
+Ingress Scheduling
+------------------
+
+The ingress scheduling feature is described in general in
+``ovs-vswitchd.conf.db (5)``.
+
+Ingress scheduling currently only supports setting a priority for incoming
+packets for an entire interface. Priority levels 0 (lowest) to 3 (highest) are
+supported.  The default priority is 0.
+
+Interfaces of type ``dpdk`` and ``dpdkvhostuserclient`` support ingress
+scheduling.
+
+To prioritize packets on a particular port:
+
+    $ ovs-vsctl set Interface dpdk0 \
+        ingress_sched=port_prio=3
+
 pdump
 -----
 
diff --git a/vswitchd/vswitch.ovsschema b/vswitchd/vswitch.ovsschema
index 90e50b6..5552d87 100644
--- a/vswitchd/vswitch.ovsschema
+++ b/vswitchd/vswitch.ovsschema
@@ -1,6 +1,6 @@ 
 {"name": "Open_vSwitch",
- "version": "7.15.1",
- "cksum": "3682332033 23608",
+ "version": "7.15.2",
+ "cksum": "2390903851 23814",
  "tables": {
    "Open_vSwitch": {
      "columns": {
@@ -352,6 +352,11 @@ 
                    "minInteger": 1},
            "min": 0,
            "max": 1}},
+       "ingress_sched": {
+         "type": {"key": {"type": "string",
+                          "enum": ["set", ["port_prio"]]},
+                  "value": "string",
+                  "min": 0, "max": 1}},
        "error": {
          "type": {"key": "string", "min": 0, "max": 1}}},
      "indexes": [["name"]]},
diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
index 0c6a43d..24bdc0b 100644
--- a/vswitchd/vswitch.xml
+++ b/vswitchd/vswitch.xml
@@ -3075,6 +3075,33 @@  ovs-vsctl add-port br0 p0 -- set Interface p0 type=patch options:peer=p1 \
       </column>
     </group>
 
+    <group title="Ingress Scheduling">
+      <p>
+       Configuration to allow certain traffic to be prioritized.  This means
+       some combination of:
+      </p>
+      <ul>
+        <li>
+         prioritized packets are forwarded to their destination port before
+         non-prioritized
+        </li>
+        <li>
+         prioritized packets are less likely to be dropped in an overloaded
+         situation than prioritized packets
+        </li>
+      </ul>
+      <p>
+       Ingress scheduling is supported with the best effort of the Interface
+       type and datapath.  Currently the only field supported is port_prio
+       which applies a priority to all incoming packets on the Interface.
+      </p>
+      <column name="ingress_sched" key="port_prio">
+        <p>
+         Priority levels are 0 (lowest) to 3 (highest).
+        </p>
+      </column>
+    </group>
+
     <group title="Bidirectional Forwarding Detection (BFD)">
       <p>
         BFD, defined in RFC 5880 and RFC 5881, allows point-to-point
@@ -3631,6 +3658,19 @@  ovs-vsctl add-port br0 p0 -- set Interface p0 type=patch options:peer=p1 \
       </column>
     </group>
 
+    <group title="Ingress Scheduling">
+      <p>
+        Ingress Scheduling allows XXX TODO BOM
+      </p>
+
+      <column name="ingress_sched" key="port_prio" type='{"type": "integer"}'>
+        The ingress priority of the port: 0 lowest to 3 highest. Higher
+        priority ports are read more frequently than lower priority ports. This
+        providing enhanced protection against being dropped due to Rx queue
+        overflow to packets ingressing on those ports.
+      </column>
+    </group>
+
     <group title="Common Columns">
       The overall purpose of these columns is described under <code>Common
       Columns</code> at the beginning of this document.