Thanks Mark and Miguel, I applied this to master.
On Mon, Nov 13, 2017 at 01:34:38PM +0100, Miguel Angel Ajo Pelayo wrote: > Acked-by: Miguel Angel Ajo <majop...@redhat.com> > > Looks good to me too :) > > On Thu, Nov 9, 2017 at 11:20 PM, Mark Michelson <mmich...@redhat.com> wrote: > > > Looks good by me! > > > > On Thu, Nov 9, 2017 at 4:03 PM Ben Pfaff <b...@ovn.org> wrote: > > > > > This is adapted from a talk I gave at OpenStack Summit Sydney on Nov. 6. > > > > > > Signed-off-by: Ben Pfaff <b...@ovn.org> > > > > > Acked-by: Mark Michelson <mmich...@redhat.com> > > > > > --- > > > v1->v2: Replace overview of OVN with reference to ovn-architecture(7). > > > (Thanks Mark!) > > > v2->v3: Additional improvements from Mark Michelson. > > > > > > Documentation/automake.mk | 1 + > > > Documentation/topics/index.rst | 1 + > > > Documentation/topics/ovn-news-2.8.rst | 278 > > > ++++++++++++++++++++++++++++++++++ > > > 3 files changed, 280 insertions(+) > > > create mode 100644 Documentation/topics/ovn-news-2.8.rst > > > > > > diff --git a/Documentation/automake.mk b/Documentation/automake.mk > > > index 733da3ca9da1..3ea2c2cb5fe0 100644 > > > --- a/Documentation/automake.mk > > > +++ b/Documentation/automake.mk > > > @@ -40,6 +40,7 @@ DOC_SOURCE = \ > > > Documentation/topics/integration.rst \ > > > Documentation/topics/language-bindings.rst \ > > > Documentation/topics/openflow.rst \ > > > + Documentation/topics/ovn-news-2.8.rst \ > > > Documentation/topics/ovsdb-replication.rst \ > > > Documentation/topics/porting.rst \ > > > Documentation/topics/role-based-access-control.rst \ > > > diff --git a/Documentation/topics/index.rst > > > b/Documentation/topics/index.rst > > > index 00d6b0b837ec..13b6d8abbb30 100644 > > > --- a/Documentation/topics/index.rst > > > +++ b/Documentation/topics/index.rst > > > @@ -58,6 +58,7 @@ OVN > > > > > > high-availability > > > role-based-access-control > > > + ovn-news-2.8 > > > > > > .. list-table:: > > > > > > diff --git a/Documentation/topics/ovn-news-2.8.rst > > > b/Documentation/topics/ovn-news-2.8.rst > > > new file mode 100644 > > > index 000000000000..fae0a4278157 > > > --- /dev/null > > > +++ b/Documentation/topics/ovn-news-2.8.rst > > > @@ -0,0 +1,278 @@ > > > +.. > > > + Licensed under the Apache License, Version 2.0 (the "License"); > > you > > > may > > > + not use this file except in compliance with the License. You may > > > obtain > > > + a copy of the License at > > > + > > > + http://www.apache.org/licenses/LICENSE-2.0 > > > + > > > + Unless required by applicable law or agreed to in writing, > > software > > > + distributed under the License is distributed on an "AS IS" BASIS, > > > WITHOUT > > > + WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. > > > See the > > > + License for the specific language governing permissions and > > > limitations > > > + under the License. > > > + > > > + Convention for heading levels in Open vSwitch documentation: > > > + > > > + ======= Heading 0 (reserved for the title in a document) > > > + ------- Heading 1 > > > + ~~~~~~~ Heading 2 > > > + +++++++ Heading 3 > > > + ''''''' Heading 4 > > > + > > > + Avoid deeper levels because they do not render well. > > > + > > > +=============================== > > > +What's New with OVS and OVN 2.8 > > > +=============================== > > > + > > > +This document is about what was added in Open vSwitch 2.8, which was > > > released > > > +at the end of August 2017, concentrating on the new features in OVN. It > > > also > > > +covers some of what is coming up in Open vSwitch and OVN 2.9, which is > > > due to > > > +be released in February 2018. OVN has many features, and this document > > > does > > > +not cover every new or enhanced feature (but contributions are welcome). > > > + > > > +This document assumes a basic familiarity with Open vSwitch, OVN, and > > > their > > > +associated tools. For more information, please refer to the Open > > vSwitch > > > and > > > +OVN documentation, such as the ``ovn-architecture``\(7) manpage. > > > + > > > +Debugging and Troubleshooting > > > +----------------------------- > > > + > > > +Before version 2.8, Open vSwitch command-line tools were far more > > painful > > > to > > > +use than they needed to be. This section covers the improvements made > > to > > > the > > > +CLI in the 2.8 release. > > > + > > > +User-Hostile UUIDs > > > +~~~~~~~~~~~~~~~~~~ > > > + > > > +The OVN CLI, through ``ovn-nbctl``, ``ovn-nbctl``, and ``ovn-trace``, > > used > > > +full-length UUIDs almost everywhere. It didn't even provide any > > > assistance > > > +with completion, etc., which in practice meant always cutting and > > pasting > > > UUIDs > > > +from one command or window to another. This problem wasn't limited to > > the > > > +places where one would expect to have to see or use a UUID, either. In > > > many > > > +places where one would expect to be able to use a network, router, or > > port > > > +name, a UUID was required instead. In many places where one would want > > > to see > > > +a name, the UUID was displayed instead. More than anything else, these > > > +shortcomings made the CLI user-hostile. > > > + > > > +There was an underlying problem that the southbound database didn't > > > actually > > > +contain all the information needed to provide a decent user interface. > > > In some > > > +cases, for example, the human-friendly names that one would want to use > > > for > > > +entities simply weren't part of the database. These names weren't > > > necessary > > > +for correctness, only for usability. > > > + > > > +OVN 2.8 eased many of these problems. Most parts of the CLI now allow > > > the user > > > +to abbreviate UUIDs, as long as the abbreviations are unique within the > > > +database. Some parts of the CLI where full-length UUIDs make output > > hard > > > to > > > +read now abbreviate them themselves. Perhaps more importantly, in many > > > places > > > +the OVN CLI now displays and accepts human-friendly names for networks, > > > +routers, ports, and other entities. In the places where the names were > > > not > > > +previously available, OVN (through ``ovn-northd``) now copies the names > > > into > > > +the southbound database. > > > + > > > +The CLIs for layers below OVN, at the OpenFlow and datapath layers with > > > +``ovs-ofctl`` and ``ovs-dpctl``, respectively, had some similar problems > > > in > > > +which numbers were used for entities that had human-friendly names. > > Open > > > +vSwitch 2.8 also solves some of those problems. Other than that, the > > most > > > +notable enhancement in this area was the ``--no-stats`` option to > > > ``ovs-ofctl > > > +dump-flows``, which made that command's output more readable for the > > cases > > > +where per-flow statistics were not interesting to the reader. > > > + > > > +Connections Between Levels > > > +~~~~~~~~~~~~~~~~~~~~~~~~~~ > > > + > > > +OVN and Open vSwitch work almost like a stack of compilers: the OVN > > > Neutron > > > +plugin translates Neutron configuration into OVN northbound > > configuration, > > > +which ``ovn-northd`` translates into logical flows, which > > > ``ovn-controller`` > > > +translates into OpenFlow flows, which ``ovs-vswitchd`` translates into > > > datapath > > > +flows. For debugging and troubleshooting it is often necessary to > > > understand > > > +exactly how these translations work. The relationship from a logical > > > flow to > > > +its OpenFlow flows, or in the other direction, from an OpenFlow flow > > back > > > to > > > +the logical flow that produced it, was often of particular interest, but > > > OVN > > > +didn't provide good tools for the job. > > > + > > > +OVN 2.8 added some new features that ease these jobs. ``ovn-sbctl > > > lflow-list`` > > > +has a new option ``--ovs`` that lists the OpenFlow flows on a particular > > > +chassis that were generated from the logical flows that it lists. > > > +``ovn-trace`` also added a similar ``--ovs`` option that applies to the > > > logical > > > +flows it traces. > > > + > > > +In the other direction, OVN 2.8 added a new utility ``ovn-detrace`` > > that, > > > given > > > +an Open vSwitch trace of OpenFlow flows, annotates it with the logical > > > flows > > > +that yielded those OpenFlow flows. > > > + > > > +Distributed Firewall > > > +~~~~~~~~~~~~~~~~~~~~ > > > + > > > +OVN supports a distributed firewall with stateful connection tracking to > > > ensure > > > +that only packets for established connections, or those that the > > > configuration > > > +explicitly allows, can ingress a given VM or container. Neutron uses > > this > > > +feature by default. Most packets in an OpenStack environment pass > > > through it > > > +twice, once after egress from the packet's source VM and once before > > > ingress > > > +into its destination VM. Before OVN 2.8, the ``ovn-trace`` program, > > which > > > +shows the path of a packet through an OVN logical network, did not > > > support the > > > +logical firewall, which in practice made it almost useless for Neutron. > > > + > > > +In OVN 2.8, ``ovn-trace`` adds support for the logical firewall. By > > > default it > > > +assumes that packets are part of an established connection, which is > > > usually > > > +what the user wants as part of the trace. It also accepts command-line > > > options > > > +to override that assumption, which allows the user to discover the > > > treatment of > > > +packets that the firewall should drop. > > > + > > > +At the next level deeper, prior to Open vSwitch 2.8, the OpenFlow > > tracing > > > +command ``ofproto/trace`` also supported neither the connection tracking > > > +feature underlying the OVN distributed firewall nor the "recirculation" > > > feature > > > +that accompanied it. This meant that, even if the user tried to look > > > deeper > > > +into the distributed firewall mechanism, he or she would encounter a > > > further > > > +roadblock. Open vSwitch 2.8 added support for both of these features as > > > well. > > > + > > > +Summary Display > > > +~~~~~~~~~~~~~~~ > > > + > > > +``ovn-nbctl show`` and ``ovn-sbctl show``, for showing an overview of > > the > > > OVN > > > +configuration, didn't show a lot of important information. OVN adds > > some > > > more > > > +useful information here. > > > + > > > +DNS, and IPAM > > > +------------- > > > + > > > +OVN 2.8 adds a built-in DNS server designed for assigning names to VMs > > and > > > +containers within an OVN logical network. DNS names are assigned using > > > records > > > +in the OVN northbound database and, like other OVN features, translated > > > into > > > +logical flows at the OVN southbound layer. DNS requests directed to the > > > OVN > > > +DNS server never leave the hypervisor from which the request is sent; > > > instead, > > > +OVN processes and replies to the request from its ``ovn-controller`` > > local > > > +agent. The OVN DNS server is not a general-purpose DNS server and > > cannot > > > be > > > +used for that purpose. > > > + > > > +OVN includes simple built-in support for IP address management (IPAM), > > in > > > which > > > +OVN assigns IP addresses to VMs or containers from a pool or pools of IP > > > +addresses delegated to it by the administrator. Before OVN 2.8, OVN > > IPAM > > > only > > > +supported IPv4 addresses; OVN 2.8 adds support for IPv6. OVN 2.8 also > > > enhances > > > +the address pool support to allow specific addresses to be excluded. > > > Neutron > > > +assigns IP addresses itself and does not use OVN IPAM. > > > + > > > +High Availability > > > +----------------- > > > + > > > +As a distributed system, in OVN a lot can go wrong. As OVN advances, it > > > adds > > > +redundancy in places where currently a single failure could disrupt the > > > +functioning of the system as a whole. OVN 2.8 adds two new kinds of > > high > > > +availability. > > > + > > > +ovn-northd HA > > > +~~~~~~~~~~~~~ > > > + > > > +The ``ovn-northd`` program sits between the OVN northbound and > > southbound > > > +databases and translates from a logical network configuration into > > logical > > > +flows. If ``ovn-northd`` itself or the host on which it runs fails, > > then > > > +updates to the OVN northbound configuration will not propagate to the > > > +hypervisors and the OVN configuration freezes in place until > > > ``ovn-northd`` > > > +restarts. > > > + > > > +OVN 2.8 adds support for active-backup HA to ``ovn-northd``. When more > > > than > > > +one ``ovn-northd`` instance runs, it uses an OVSDB locking feature to > > > +automatically choose a single active instance. When that instance dies > > or > > > +becomes nonresponsive, the OVSDB server automatically choose one of the > > > +remaining instance(s) to take over. > > > + > > > +L3 Gateway HA > > > +~~~~~~~~~~~~~ > > > + > > > +In OVN 2.8, multiple chassis may now be specified for L3 gateways. When > > > more > > > +than one chassis is specified, OVN manages high availability for that > > > gateway. > > > +Each hypervisor uses the BFD protocol to keep track of the gateway nodes > > > that > > > +are currently up. At any given time, a hypervisor uses the > > > highest-priority > > > +gateway node that is currently up. > > > + > > > +OVSDB > > > +----- > > > + > > > +The OVN architecture relies heavily on OVSDB, the Open vSwitch database, > > > for > > > +hosting the northbound and southbound databases. OVSDB was originally > > > selected > > > +for this purpose because it was already used in Open vSwitch for > > > configuring > > > +OVS itself and, thus, it was well integrated with OVS and well supported > > > in C > > > +and Python, the two languages that are used in Open vSwitch. > > > + > > > +OVSDB was well designed for its original purpose of configuring Open > > > vSwitch. > > > +It supports ACID transactions, has a small, efficient server, a flexible > > > schema > > > +system, and good support for troubleshooting and debugging. However, it > > > lacked > > > +several features that are important for OVN but not for Open vSwitch. > > As > > > OVN > > > +advances, these missing features have become more and more of a problem. > > > One > > > +option would be to switch to a different database that already has many > > of > > > +these features, but despite a careful search, no ideal existing database > > > was > > > +identified, so the project chose instead to improve OVSDB where > > necessary > > > to > > > +bring it up to speed. The following sections talk more about recent and > > > future > > > +improvements. > > > + > > > +High Availability > > > +~~~~~~~~~~~~~~~~~ > > > + > > > +When ``ovsdb-server`` was only used for OVS configuration, high > > > availability > > > +was not important. ``ovsdb-server`` was capable of restarting itself > > > +automatically if it crashed, and if the whole system went down then Open > > > +vSwitch itself was dead too, so the database server's failure was not > > > +important. > > > + > > > +In contrast, the northbound and southbound databases are centralized > > > components > > > +of a distributed system, so it is important that they not be a single > > > point of > > > +failure for the system as a whole. In released versions of OVN, > > > +``ovsdb-server`` supports only "active-backup replication" across a pair > > > of > > > +servers. This means that if one server goes down, the other can pick it > > > back > > > +up approximately where the other one left off. The servers do not have > > > +built-in support for deciding at any given time which is the active and > > > which > > > +the backup, so the administrator must configure an external agent to do > > > this > > > +management. > > > + > > > +Active-backup replication is not entirely satisfactory, for multiple > > > reasons. > > > +Replication is only approximate. Configuring the external agent > > requires > > > extra > > > +work. There is no benefit from the backup server except when the active > > > server > > > +fails. At most two servers can be used. > > > + > > > +A new form of high availability for OVSDB is under development for the > > > OVN 2.9 > > > +release, based on the Raft algorithm for distributed consensus. Whereas > > > +replication uses two servers, clustering using Raft requires three or > > more > > > +(typically an odd number) and continues functioning as long as more than > > > half > > > +of the servers are up. The clustering implementation is built into > > > +``ovsdb-server`` and does not require an external agent. Clustering > > > preserves > > > +the ACID properties of the database, so that a transaction that commits > > is > > > +guaranteed to persist. Finally, reads (which are the bulk of the OVN > > > workload) > > > +scale with the size of the cluster, so that adding more servers should > > > improve > > > +performance as the number of hypervisors in an OVN deployment increases. > > > As of > > > +this writing, OVSDB support for clustering is undergoing development and > > > early > > > +deployment testing. > > > + > > > +RBAC security > > > +~~~~~~~~~~~~~ > > > + > > > +Until Open vSwitch 2.8, ``ovsdb-server`` had little support for access > > > control > > > +within a database. If an OVSDB client could modify the database at all, > > > it > > > +could make arbitrary changes. This was sufficient for most uses case to > > > that > > > +point. > > > + > > > +Hypervisors in an OVN deployment need access to the OVN southbound > > > database. > > > +Most of their access is reads, to find out about the OVN configuration. > > > +Hypervisors do need some write access to the southbound database, > > > primarily to > > > +let the other hypervisors know what VMs and containers they are running > > > and how > > > +to reach them. Thus, OVN gives all of the hypervisors in the OVN > > > deployment > > > +write access to the OVN southbound database. This is fine when all is > > > well, > > > +but if any of the hypervisors were compromised then they could disrupt > > the > > > +entire OVN deployment by corrupting the database. > > > + > > > +The OVN developers considered a few ways to solve this problem. One way > > > would > > > +be to introduce a new central service (perhaps in ``ovn-northd``) that > > > provided > > > +only the kinds of writes that the hypervisors legitimately need, and > > then > > > grant > > > +hypervisors direct access to the southbound database only for reads. > > But > > > +ultimately the developers decided to introduce a new form of more access > > > +control for OVSDB, called the OVSDB RBAC (role-based access control) > > > feature. > > > +OVSDB RBAC allows for granular enough control over access that > > > hypervisors can > > > +be granted only the ability to add, modify, and delete the records that > > > relate > > > +to themselves, preventing them from corrupting the database as a whole. > > > + > > > +Further Directions > > > +------------------ > > > + > > > +For more information about new features in OVN and Open vSwitch, please > > > refer > > > +to the NEWS file distributed with the source tree. If you have > > questions > > > about > > > +Open vSwitch or OVN features, please feel free to write to the Open > > > vSwitch > > > +discussion mailing list at ovs-disc...@openvswitch.org. > > > -- > > > 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 > > _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev