From bc84a51dd404c54e9a0693ab0b11e9b8bdc39f31 Mon Sep 17 00:00:00 2001 From: Luis Tomas Bolivar Date: Wed, 13 Dec 2023 08:06:21 +0100 Subject: [PATCH] Add documentation about NB DB driver This includes the option to use the OVN-Cluster for routing instead of the kernel. It also updates the supportability matrix to better reflect the current status, and makes a little reorg on the organization structure Change-Id: If8fb9a42f74511e9f70a25d7c08dce99c20c3f10 --- doc/images/ovn-cluster-overview.png | Bin 0 -> 45390 bytes .../bgp_supportability_matrix.rst | 91 +-- doc/source/contributor/agent_deployment.rst | 163 +++++ doc/source/contributor/bgp_advertising.rst | 66 ++ doc/source/contributor/bgp_mode_design.rst | 603 ------------------ .../contributor/bgp_traffic_redirection.rst | 78 +++ .../contributor/drivers/bgp_mode_design.rst | 310 +++++++++ .../bgp_mode_stretched_l2_design.rst | 0 .../{ => drivers}/evpn_mode_design.rst | 10 +- doc/source/contributor/drivers/index.rst | 12 + .../drivers/nb_bgp_mode_design.rst | 386 +++++++++++ .../drivers/ovn_bgp_mode_design.rst | 265 ++++++++ doc/source/contributor/index.rst | 8 +- doc/source/index.rst | 3 +- 14 files changed, 1339 insertions(+), 656 deletions(-) create mode 100644 doc/images/ovn-cluster-overview.png rename doc/source/{contributor => }/bgp_supportability_matrix.rst (53%) create mode 100644 doc/source/contributor/agent_deployment.rst create mode 100644 doc/source/contributor/bgp_advertising.rst delete mode 100644 doc/source/contributor/bgp_mode_design.rst create mode 100644 doc/source/contributor/bgp_traffic_redirection.rst create mode 100644 doc/source/contributor/drivers/bgp_mode_design.rst rename doc/source/contributor/{ => drivers}/bgp_mode_stretched_l2_design.rst (100%) rename doc/source/contributor/{ => drivers}/evpn_mode_design.rst (98%) create mode 100644 doc/source/contributor/drivers/index.rst create mode 100644 doc/source/contributor/drivers/nb_bgp_mode_design.rst create mode 100644 doc/source/contributor/drivers/ovn_bgp_mode_design.rst diff --git a/doc/images/ovn-cluster-overview.png b/doc/images/ovn-cluster-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..b64f4aa2d33ef9ad266ed4179221086a71e0ceaa GIT binary patch literal 45390 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