[ovs-dev] [PATCH 02/12] vswitchd: Add datapath, CT_Zone, and CT_Timeout_Policy tables.
William Tu
u9012063 at gmail.com
Fri Jul 26 15:11:06 UTC 2019
On Thu, Jul 25, 2019 at 04:24:04PM -0700, Yi-Hung Wei wrote:
> From: Justin Pettit <jpettit at ovn.org>
>
> Signed-off-by: Justin Pettit <jpettit at ovn.org>
> ---
> vswitchd/vswitch.ovsschema | 44 +++++++-
> vswitchd/vswitch.xml | 254 ++++++++++++++++++++++++++++++++++++---------
> 2 files changed, 249 insertions(+), 49 deletions(-)
>
> diff --git a/vswitchd/vswitch.ovsschema b/vswitchd/vswitch.ovsschema
> index f7c6eb8983cd..17aed1fc3ad1 100644
> --- a/vswitchd/vswitch.ovsschema
> +++ b/vswitchd/vswitch.ovsschema
> @@ -1,9 +1,14 @@
> {"name": "Open_vSwitch",
> - "version": "8.0.0",
> - "cksum": "3962141869 23978",
> + "version": "8.2.0",
> + "cksum": "2203523463 25517",
> "tables": {
> "Open_vSwitch": {
> "columns": {
> + "datapaths": {
> + "type": {"key": {"type": "string"},
> + "value": {"type": "uuid",
> + "refTable": "Datapath"},
> + "min": 0, "max": "unlimited"}},
> "bridges": {
> "type": {"key": {"type": "uuid",
> "refTable": "Bridge"},
> @@ -629,6 +634,41 @@
> "min": 0, "max": "unlimited"},
> "ephemeral": true}},
> "indexes": [["target"]]},
> + "Datapath": {
> + "columns": {
> + "datapath_version": {
> + "type": "string"},
> + "ct_zones": {
> + "type": {"key": {"type": "integer",
> + "minInteger": 0,
> + "maxInteger": 65535},
> + "value": {"type": "uuid",
> + "refTable": "CT_Zone"},
> + "min": 0, "max": "unlimited"}},
> + "external_ids": {
> + "type": {"key": "string", "value": "string",
> + "min": 0, "max": "unlimited"}}}},
> + "CT_Zone": {
> + "columns": {
> + "timeout_policy": {
> + "type": {"key": {"type": "uuid",
> + "refTable": "CT_Timeout_Policy"},
> + "min": 0, "max": 1}},
> + "external_ids": {
> + "type": {"key": "string", "value": "string",
> + "min": 0, "max": "unlimited"}}}},
> + "CT_Timeout_Policy": {
> + "columns": {
> + "timeouts": {
> + "type": {"key": "string",
> + "value": {"type" : "integer",
> + "minInteger" : 0,
> + "maxInteger" : 4294967295},
> + "min": 0, "max": "unlimited"}},
> + "external_ids": {
> + "type": {"key": "string", "value": "string",
> + "min": 0, "max": "unlimited"}}},
> + "indexes": [["timeouts"]]},
Hi Justin,
Just to let you know, this is a little different than your
original patch. I made the timeouts column to be unique using
"indexes" above. And update the cksum.
Thanks
William
the rest below remains the same.
> "SSL": {
> "columns": {
> "private_key": {
> diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
> index 027aee2f523b..7f1686a676aa 100644
> --- a/vswitchd/vswitch.xml
> +++ b/vswitchd/vswitch.xml
> @@ -52,6 +52,13 @@
> one record in the <ref table="Open_vSwitch"/> table.
>
> <group title="Configuration">
> + <column name="datapaths">
> + Map of datapath types to datapaths. The
> + <ref column="datapath_type"/> column of the <ref table="Bridge"/>
> + table is used as a key for this map. The value points to a row in
> + the <ref table="Datapath"/> table.
> + </column>
> +
> <column name="bridges">
> Set of bridges managed by the daemon.
> </column>
> @@ -1192,53 +1199,11 @@
> </column>
>
> <column name="datapath_version">
> - <p>
> - Reports the version number of the Open vSwitch datapath in use.
> - This allows management software to detect and report discrepancies
> - between Open vSwitch userspace and datapath versions. (The <ref
> - column="ovs_version" table="Open_vSwitch"/> column in the <ref
> - table="Open_vSwitch"/> reports the Open vSwitch userspace version.)
> - The version reported depends on the datapath in use:
> - </p>
> -
> - <ul>
> - <li>
> - When the kernel module included in the Open vSwitch source tree is
> - used, this column reports the Open vSwitch version from which the
> - module was taken.
> - </li>
> -
> - <li>
> - When the kernel module that is part of the upstream Linux kernel is
> - used, this column reports <code><unknown></code>.
> - </li>
> -
> - <li>
> - When the datapath is built into the <code>ovs-vswitchd</code>
> - binary, this column reports <code><built-in></code>. A
> - built-in datapath is by definition the same version as the rest of
> - the Open VSwitch userspace.
> - </li>
> -
> - <li>
> - Other datapaths (such as the Hyper-V kernel datapath) currently
> - report <code><unknown></code>.
> - </li>
> - </ul>
> -
> - <p>
> - A version discrepancy between <code>ovs-vswitchd</code> and the
> - datapath in use is not normally cause for alarm. The Open vSwitch
> - kernel datapaths for Linux and Hyper-V, in particular, are designed
> - for maximum inter-version compatibility: any userspace version works
> - with with any kernel version. Some reasons do exist to insist on
> - particular user/kernel pairings. First, newer kernel versions add
> - new features, that can only be used by new-enough userspace, e.g.
> - VXLAN tunneling requires certain minimal userspace and kernel
> - versions. Second, as an extension to the first reason, some newer
> - kernel versions add new features for enhancing performance that only
> - new-enough userspace versions can take advantage of.
> - </p>
> + Reports the datapath version. This column is maintained for
> + backwards compatibility. The preferred locatation is the
> + <ref column="datapath_id" table="Datapath"/> column of the
> + <ref table="Datapath"/> table. The full documentation for this
> + column is there.
> </column>
>
> <column name="other_config" key="datapath-id">
> @@ -5560,6 +5525,201 @@ ovs-vsctl add-port br0 p0 -- set Interface p0 type=patch options:peer=p1 \
> </group>
> </table>
>
> + <table name="Datapath">
> + <p>
> + Configuration for a datapath within <ref table="Open_vSwitch"/>.
> + </p>
> + <p>
> + A datapath is responsible for providing the packet handling in Open
> + vSwitch. There are two primary datapath implementations used by
> + Open vSwitch: kernel and userspace. Kernel datapath
> + implementations are available for Linux and Hyper-V, and selected
> + as <code>system</code> in the <ref column="datapath_type"/> column
> + of the <ref table="Bridge"/> table. The userspace datapath is used
> + by DPDK and AF-XDP, and is selected as <code>netdev</code> in the
> + <ref column="datapath_type"/> column of the <ref table="Bridge"/>
> + table.
> + </p>
> + <p>
> + A datapath of a particular type is shared by all the bridges that use
> + that datapath. Thus, configurations applied to this table affect
> + all bridges that use this datapath.
> + </p>
> +
> + <column name="datapath_version">
> + <p>
> + Reports the version number of the Open vSwitch datapath in use.
> + This allows management software to detect and report discrepancies
> + between Open vSwitch userspace and datapath versions. (The <ref
> + column="ovs_version" table="Open_vSwitch"/> column in the <ref
> + table="Open_vSwitch"/> reports the Open vSwitch userspace version.)
> + The version reported depends on the datapath in use:
> + </p>
> +
> + <ul>
> + <li>
> + When the kernel module included in the Open vSwitch source tree is
> + used, this column reports the Open vSwitch version from which the
> + module was taken.
> + </li>
> +
> + <li>
> + When the kernel module that is part of the upstream Linux kernel is
> + used, this column reports <code><unknown></code>.
> + </li>
> +
> + <li>
> + When the datapath is built into the <code>ovs-vswitchd</code>
> + binary, this column reports <code><built-in></code>. A
> + built-in datapath is by definition the same version as the rest of
> + the Open VSwitch userspace.
> + </li>
> +
> + <li>
> + Other datapaths (such as the Hyper-V kernel datapath) currently
> + report <code><unknown></code>.
> + </li>
> + </ul>
> +
> + <p>
> + A version discrepancy between <code>ovs-vswitchd</code> and the
> + datapath in use is not normally cause for alarm. The Open vSwitch
> + kernel datapaths for Linux and Hyper-V, in particular, are designed
> + for maximum inter-version compatibility: any userspace version works
> + with with any kernel version. Some reasons do exist to insist on
> + particular user/kernel pairings. First, newer kernel versions add
> + new features, that can only be used by new-enough userspace, e.g.
> + VXLAN tunneling requires certain minimal userspace and kernel
> + versions. Second, as an extension to the first reason, some newer
> + kernel versions add new features for enhancing performance that only
> + new-enough userspace versions can take advantage of.
> + </p>
> + </column>
> +
> + <column name="ct_zones">
> + Configuration for connection tracking zones. Each pair maps from a
> + zone id to a configuration for that zone. Zone <code>0</code> applies
> + to the default zone (ie, the one used if a zone is not specified in
> + connection tracking-related OpenFlow matches and actions).
> + </column>
> +
> + <group title="Common Columns">
> + The overall purpose of these columns is described under <code>Common
> + Columns</code> at the beginning of this document.
> +
> + <column name="external_ids"/>
> + </group>
> + </table>
> +
> + <table name="CT_Zone">
> + Connection tracking zone configuration
> +
> + <column name="timeout_policy">
> + Connection tracking timeout policy for this zone. If timeout policy is
> + not specified, defaults to the timeout policy in the default zone. If
> + the timeout policy in default zone is not specified, defaults to the
> + default timeouts in the system.
> + </column>
> +
> + <group title="Common Columns">
> + The overall purpose of these columns is described under <code>Common
> + Columns</code> at the beginning of this document.
> +
> + <column name="external_ids"/>
> + </group>
> + </table>
> +
> + <table name="CT_Timeout_Policy">
> + Connection tracking timeout policy configuration
> +
> + <group title="Timeouts">
> + <column name="timeouts">
> + The <code>timeouts</code> column contains key-value pairs used
> + to configure connection tracking timeouts in a datapath.
> + Key-value pairs that are not supported by a datapath are
> + ignored.
> + </column>
> +
> + <group title="TCP Timeouts">
> + <column name="timeouts" key="tcp_syn_sent">
> + TCP SYN sent timeout.
> + </column>
> +
> + <column name="timeouts" key="tcp_syn_recv">
> + TCP SYN receive timeout.
> + </column>
> +
> + <column name="timeouts" key="tcp_established">
> + TCP established timeout.
> + </column>
> +
> + <column name="timeouts" key="tcp_fin_wait">
> + TCP FIN wait timeout.
> + </column>
> +
> + <column name="timeouts" key="tcp_close_wait">
> + TCP close wait timeout.
> + </column>
> +
> + <column name="timeouts" key="tcp_last_ack">
> + TCP last ACK timeout.
> + </column>
> +
> + <column name="timeouts" key="tcp_time_wait">
> + TCP time wait timeout.
> + </column>
> +
> + <column name="timeouts" key="tcp_close">
> + TCP close timeout.
> + </column>
> +
> + <column name="timeouts" key="tcp_syn_sent2">
> + TCP syn sent2 timeout.
> + </column>
> +
> + <column name="timeouts" key="tcp_retransmit">
> + TCP retransmit timeout.
> + </column>
> +
> + <column name="timeouts" key="tcp_unack">
> + TCP unacknowledgment timeout.
> + </column>
> + </group>
> +
> + <group title="UDP Timeouts">
> + <column name="timeouts" key="udp_first">
> + First UDP packet timeout.
> + </column>
> +
> + <column name="timeouts" key="udp_single">
> + The timeout in the state that source host sends more than one packet
> + but the destination host has never sent one backs.
> + </column>
> +
> + <column name="timeouts" key="udp_multiple">
> + UDP packets seen in both directions timeout.
> + </column>
> + </group>
> +
> + <group title="ICMP Timeouts">
> + <column name="timeouts" key="icmp_first">
> + First ICMP timeout.
> + </column>
> +
> + <column name="timeouts" key="icmp_reply">
> + ICMP reply timeout.
> + </column>
> + </group>
> + </group>
> +
> + <group title="Common Columns">
> + The overall purpose of these columns is described under <code>Common
> + Columns</code> at the beginning of this document.
> +
> + <column name="external_ids"/>
> + </group>
> + </table>
> +
> <table name="SSL">
> SSL configuration for an Open_vSwitch.
>
> --
> 2.7.4
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
More information about the dev
mailing list