Thanks Numan!
On Tue, Nov 12, 2019 at 4:23 AM Numan Siddique <num...@ovn.org> wrote: > > Hi Han, > > I have started with reviewing the patches, but with skimming them > faster so that I get the complete > picture. So you might see some review comments now :) > > > Thanks > Numan > > > On Thu, Oct 31, 2019 at 2:44 AM Han Zhou <hz...@ovn.org> wrote: > > > > Signed-off-by: Han Zhou <hz...@ovn.org> > > --- > > ovn-architecture.7.xml | 107 ++++++++++++++++++++++++++++++++++++++++++++++++- > > 1 file changed, 106 insertions(+), 1 deletion(-) > > > > diff --git a/ovn-architecture.7.xml b/ovn-architecture.7.xml > > index 7966b65..56b2167 100644 > > --- a/ovn-architecture.7.xml > > +++ b/ovn-architecture.7.xml > > @@ -1246,7 +1246,14 @@ > > <p> > > <dfn>Distributed gateway ports</dfn> are logical router patch ports > > that directly connect distributed logical routers to logical > > - switches with localnet ports. > > + switches with external connection. > > + </p> > > + > > + <p> > > + There are two types of external connections. Firstly, connection to > > + physical network through a localnet port. Secondly, connection to > > + another OVN deployment, which will be introduced in section "OVN > > + Deployments Interconnection". > > </p> > > > > <p> > > @@ -1801,6 +1808,104 @@ > > </li> > > </ol> > > > > + <h2>OVN Deployments Interconnection (TODO)</h2> > > + > > + <p> > > + It is not uncommon for an operator to deploy multiple OVN clusters, for > > + two main reasons. Firstly, an operator may prefer to deploy one OVN > > + cluster for each availability zone, e.g. in different physical regions, > > + to avoid single point of failure. Secondly, there is always an upper limit > > + for a single OVN control plane to scale. > > + </p> > > + > > + <p> > > + Although the control planes of the different availability zone (AZ)s are > > + independent from each other, the workloads from different AZs may need > > + to communicate across the zones. The OVN interconnection feature provides > > + a native way to interconnect different AZs by L3 routing through transit > > + overlay networks between logical routers of different AZs. > > + </p> > > + > > + <p> > > + A global OVN Interconnection Northbound database is introduced for the > > + operator (probably through CMS systems) to configure transit logical > > + switches that connect logical routers from different AZs. A transit > > + switch is similar as a > s/as a/to a > > > regular logical switch, but it is used for > > + interconnection purpose only. Typically, each transit switch can be used > > + to connect all logical routers that belong to same tenant across all AZs. > > + </p> > > + > > + <p> > > + A dedicated daemon process <code>ovn-ic</code>, OVN interconnection > > + controller, in each AZ will consume this data and populate corresponding > > + logical switches to their own northbound databases for each AZ, so that > > + logical routers can be connected to the transit switch by creating > > + patch port pairs in their northbound databases. Any router ports > > + connected to the transit switches are considered interconnection ports, > > + which will be exchanged between AZs. > > + </p> > > + > > + <p> > > + Physically, when workloads in from different AZs communicate, packets > > + need to go through multiple hops: source chassis, source gateway, > > + destination gateway and destination chassis. All these hops are connected > > + through tunnels so that the packets never leave overlay networks. > > + A distributed gateway port is required to connect the logical router to a > > + transit switch, with a gateway chassis specified, so that the traffic can > > + be forwarded through the gateway chassis. > > + </p> > > + > > + <p> > > + A global OVN Interconnection Southbound database is introduced for > > + exchanging control plane information between the AZs. The data in > > + this database is populated and consumed by the <code>ovn-ic</code>, > > + of each AZ. The main information in this database includes: > > + </p> > > + > > + <ul> > > + <li> > > + Datapath bindings for transit switches, which mainly contains the tunnel > > + keys generated for each transit switch. Separate key ranges are reserved > > + for transit switches so that they will never conflict with any tunnel > > + keys locally assigned for datapaths within each AZ. > > + </li> > > + <li> > > + Availability zones, which are registerd by <code>ovn-ic</code> > > + from each AZ. > > + </li> > > + <li> > > + Gateways. Each AZ specifies chassises that are supposed to work > > + as interconnection gateways, and the <code>ovn-ic</code> will > > + populate this information to the interconnection southbound DB. > > + The <code>ovn-ic</code> from all the other AZs will learn the > > + gateways and populate to their own southbound DB as a chassis. > > + </li> > > + <li> > > + Port bindings for logical switch ports created on the transit switch. > > + Each AZ maintains their logical router to transit switch connections > > + independently, but <code>ovn-ic</code> automatically populates > > + local port bindings on transit switches to the global interconnection > > + southbound DB, and learns remote port bindings from other AZs back > > + to its own northbound and southbound DBs, so that logical flows > > + can be produced and then translated to OVS flows locally, which finally > > + enables data plane communication. > > + </li> > > + </ul> > > + > > + <p> > > + The tunnel keys for transit switch datapaths and related port bindings > > + must be agreed across all AZs. This is ensured by generating and storing > > + the keys in the global interconnection southbound database. Any > > + <code>ovn-ic</code> from any AZ can allocate the key, but race conditions > > + are solved by enforcing unique index for the column in the database. > > + </p> > > + > > + <p> > > + Once each AZ's NB and SB databases are populated with interconnection > > + switches and ports, and agreed upon the tunnel keys, data plane > > + communication between the AZs are established. > > + </p> > > + > > <h2>Native OVN services for external logical ports</h2> > > > > <p> > > -- > > 2.1.0 > > > > _______________________________________________ > > 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