These changes look good but need to be subject to major rewriting if property packet-type-aware is removed.
> -----Original Message----- > From: ovs-dev-boun...@openvswitch.org > [mailto:ovs-dev-boun...@openvswitch.org] On Behalf Of Ben Pfaff > Sent: Tuesday, 13 June, 2017 00:28 > To: d...@openvswitch.org > Cc: Ben Pfaff <b...@ovn.org> > Subject: [ovs-dev] [PATCH 04/31] fixup: Improve documentation. > > Signed-off-by: Ben Pfaff <b...@ovn.org> > --- > lib/meta-flow.xml | 131 > +++++++++++++++++++++++++++++++++++++----------------- > 1 file changed, 90 insertions(+), 41 deletions(-) > > diff --git a/lib/meta-flow.xml b/lib/meta-flow.xml > index c94288e4c294..82daaaffcb44 100644 > --- a/lib/meta-flow.xml > +++ b/lib/meta-flow.xml > @@ -24,20 +24,21 @@ > <p> > Data fields that are always present as a consequence of the basic > networking technology in use are called called <dfn>root fields</dfn>. > - In earlier versions of Open vSwitch, the Ethernet header was always > - present and, as a consequence, the Ethernet header fields were root > fields. > - This remains the default mode of operation of Open vSwitch. When packets > - are received from a "layer3" Tunnel which does not encapsulate an > Ethernet > - header (such as LISP or GRE), Open vSwitch synthesizes one. > + Open vSwitch 2.7 and earlier considered Ethernet fields to be root > fields, > + and this remains the default mode of operation for Open vSwitch bridges. > + In this mode, when a packet is received from a non-Ethernet interfaces, > + such as a layer-3 LISP or GRE tunnel, Open vSwitch force-fits it to this > + Ethernet-centric point of view by pretending that an Ethernet header is > + present whose Ethernet type that indicates the packet's actual type (and > + whose source and destination addresses are all-zero). > </p> > > <p> > - The present version of Open vSwitch supports the concept of packet type- > - aware pipeline introduced in OpenFlow 1.5. A bridge configured as packet > + Open vSwitch 2.8 and later supports the ``packet type-aware pipeline'' > + concept introduced in OpenFlow 1.5. A bridge configured to be packet > type-aware can handle packets of multiple networking technologies, such > as > - Ethernet, IP, ARP, MPLS, or NSH in parallel. > - The new packet type data metadata field <cite>packet_type</cite> becomes > - the single root field and determines the applicability of all data > fields. > + Ethernet, IP, ARP, MPLS, or NSH in parallel. Such a bridge does not have > + any root fields. > </p> > > <p> > @@ -62,8 +63,8 @@ > example, one may match (see <cite>Matching</cite>, below) a given > field only if the match includes the field's prerequisite, > e.g. matching an ARP field is only allowed if one also matches on > - Ethertype 0x0806 or the packet_type for ARP in a packet type-aware > - bridge. > + Ethertype 0x0806 or the <ref field="packet_type"/> for ARP in a packet > + type-aware bridge. > </p> > > <p> > @@ -331,10 +332,10 @@ tcp,tp_src=0x07c0/0xfff0 > > <p> > These shorthand notations continue to work in packet type-aware bridges. > - The absence of a packet_type match implies packet_type=ethernet, so that > - shorthands match on Ethernet packets with the implied eth_type. Please > - note that the shorthand <code>ip</code> does not match packets of > packet_type > - (1,0x800) for IPv4. > + The absence of a packet_type match implies > + <code>packet_type=ethernet</code>, so that shorthands match on Ethernet > + packets with the implied eth_type. Please note that the shorthand > + <code>ip</code> does not match packets of packet_type (1,0x800) for IPv4. > </p> > > > @@ -2289,11 +2290,22 @@ actions=clone(load:0->NXM_OF_IN_PORT[],output:123) > > <field id="MFF_PACKET_TYPE" title="Packet Type"> > <p> > - Holds the current type of the packet in the format specified in > - OpenFlow 1.5. The 32-bit value consists of the name space > <code>NS</code> > - in the upper 16 bits and a type <code>NS_TYPE</code> (within that > name > - space) in the lower 16 bits. For ease of use the packet type field > is > - specified and displayed in the <code>(NS,NS_TYPE)</code> syntax. > + The type of the packet in the format specified in OpenFlow 1.5: > + </p> > + > + <diagram> > + <header name="Packet type"> > + <bits name="ns" above="16" width=".75"/> > + <bits name="ns_type" above="16" width=".75"/> > + </header> > + <dots/> > + </diagram> > + > + <p> > + The upper 16 bits, <var>ns</var>, are a namespace. The meaning of > + <var>ns_type</var> depends on the namespace. The packet type field > is > + specified and displayed in the format > + <code>(<var>ns</var>,<var>ns_type</var>)</code>. > </p> > > <p> > @@ -2301,33 +2313,70 @@ actions=clone(load:0->NXM_OF_IN_PORT[],output:123) > for matching: > <dl> > <dt><code>(0,0)</code></dt> > - <dd>(NS=ONF and NS_TYPE=Ethernet)</dd> > - <dt><code>(1,xxxx)</code></dt> > - <dd>(NS=Ethertype and xxxx=Ethertype value)</dd> > + <dd>Ethernet.</dd> > + <dt><code>(1,<var>ethertype</var>)</code></dt> > + <dd> > + <p> > + The specified <var>ethertype</var>. Open vSwitch can forward > + packets with any <var>ethertype</var>, but it can only match on > + and process data fields for the following supported packet > types: > + </p> > + <dl> > + <dt><code>(1,0x800)</code></dt> <dd>IPv4</dd> > + <dt><code>(1,0x806)</code></dt> <dd>ARP</dd> > + <dt><code>(1,0x86dd)</code></dt> <dd>IPv6</dd> > + <dt><code>(1,0x8847)</code></dt> <dd>MPLS</dd> > + <dt><code>(1,0x8848)</code></dt> <dd>MPLS multicast</dd> > + <dt><code>(1,0x8035)</code></dt> <dd>RARP</dd> > + <dt><code>(1,0x894f)</code></dt> <dd>NSH</dd> > + </dl> > + </dd> > </dl> > </p> > > <p> > - Even though Open vSwitch can forward packets with any NS_TYPE value > - for NS=Ethertype, it can only match on and process data fields for > - the following list of supported packet types: > - <dl> > - <dt><code>(1,0x800)</code></dt> <dd>IPv4</dd> > - <dt><code>(1,0x806)</code></dt> <dd>ARP</dd> > - <dt><code>(1,0x86dd)</code></dt> <dd>IPv6</dd> > - <dt><code>(1,0x8847)</code></dt> <dd>MPLS</dd> > - <dt><code>(1,0x8848)</code></dt> <dd>MPLS multicast</dd> > - <dt><code>(1,0x8035)</code></dt> <dd>RARP</dd> > - <dt><code>(1,0x894f)</code></dt> <dd>NSH</dd> > - </dl> > + Consider the distinction between a packet with > <code>packet_type=(0,0), > + dl_type=0x800</code> and one with <code>packet_type=(1,0x800)</code>. > + The former is an Ethernet frame that contains an IPv4 packet, like > + this: > + </p> > + > + <diagram> > + <header name="Ethernet"> > + <bits name="dst" above="48" width="0.4"/> > + <bits name="src" above="48" width="0.4"/> > + <bits name="type" above="16" below="0x800" width="0.4"/> > + </header> > + <header name="IPv4"> > + <bits name="..." width="0.4"/> > + <bits name="proto" above="8" width="0.4"/> > + <bits name="src" above="32" width="0.4"/> > + <bits name="dst" above="32" width="0.4"/> > + </header> > + <dots/> > + </diagram> > + > + <p> > + The latter is an IPv4 packet not encapsulated inside any outer frame, > + like this: > </p> > > + <diagram> > + <header name="IPv4"> > + <bits name="..." width="0.4"/> > + <bits name="proto" above="8" width="0.4"/> > + <bits name="src" above="32" width="0.4"/> > + <bits name="dst" above="32" width="0.4"/> > + </header> > + <dots/> > + </diagram> > + > <p> > - The packet type field is mandatory if the OVS bridge is configured > - to be packet type-aware. In that case the packet type becomes a > - pre-requisite for all matches. If it is omitted from the match, > - it defaults to <code>(0,0)</code> (Ethernet) for backward > - compatibility. > + When the OVS bridge is configured to be packet type-aware, <ref > + field="packet_type"/> is a pre-requisite for all data field matches. > + As a special case to simplify the common case, and for backward > + compatibility, when no such match is supplied, Open vSwitch acts as > + though a match on <code>(0,0)</code> (Ethernet) had been supplied. > </p> > > <p> > -- > 2.10.2 > > _______________________________________________ > dev mailing list > d...@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev