From 60872c25a1840f82dc21d86fe3e969204d5d25ff Mon Sep 17 00:00:00 2001 From: shi-su Date: Fri, 4 Sep 2020 21:23:04 +0000 Subject: [PATCH 1/4] Add a document for configuration of synchronous mode --- doc/synchronous-mode/synchronous-mode-cfg.md | 40 ++++++++++++++++++ .../synchronous-mode-diagram.png | Bin 0 -> 40492 bytes 2 files changed, 40 insertions(+) create mode 100644 doc/synchronous-mode/synchronous-mode-cfg.md create mode 100644 doc/synchronous-mode/synchronous-mode-diagram.png diff --git a/doc/synchronous-mode/synchronous-mode-cfg.md b/doc/synchronous-mode/synchronous-mode-cfg.md new file mode 100644 index 0000000000..ad4cde9b24 --- /dev/null +++ b/doc/synchronous-mode/synchronous-mode-cfg.md @@ -0,0 +1,40 @@ +# 1. Scope +This document describes the design for the configuration of synchronous mode between orchagent and syncd. + +# 2. A brief of synchronous mode +An illustrative figure of the synchronous mode is shown below. The synchronous mode achieves a closed-loop execution if SAI APIs from orchagent. In contrast to the previous asynchronous mode which cannot properly handle SAI API failures, the synchronous mode can gracefully handle SAI API failures by conducting the proper actions in orchagent. Therefore, the synchronous mode can substantially improve the reliability of SONiC. + + + +# 3. Configuration design +### 3.1 Configuration Requirements +1. Allow users to enable or disable synchronous mode via CLI. +2. Follow the image-specified mode when upgrading an image with cold/warm/fast-reboot if the synchronous mode configuration is not explicitly specified by users in configDB. +3. Use the user-specified mode when an explicit configuration of synchronous mode exists in configDB. +4. Support enabling/disabling the synchronous mode when deploying a minigraph. + +### 3.2 ConfigDB changes +The following field is added to `DEVICE_METADATA|localhost` in configDB to support the configuration of synchronous mode +``` +DEVICE_METADATA|localhost + "synchronous_mode": "enable|disable" +``` +There are three possibilities for the field with the behavior as follows: +| Field value | Behavior | +|---------------------------|-----------------------------------| +| enable | Enable synchronous mode. | +| disable | Disable synchronous mode. | +| Field does not exist | Orchagent and syncd use the mode specified by `orchagent.sh` and `syncd-init-common.sh`, respectively. | + +### 3.3 CLI command +A CLI command is provided to enable or disable synchronous mode: + +`config synchronous_mode {enable|disable}` + +Note that the CLI command only writes the configuration into configDB. To further apply the configuration, it is required to restart swss. A message will be provided to the users to remind them of the need for swss restart after calling the command. The necessity of swss restart should also be included in the help message of the command line. This CLI command achieves requirement 1 in Section 3.1. + +### 3.4 Configuration with SONiC images +A SONiC image does not write any configuration into `DEVICE_METADATA|localhost|synchronous_mode` by loading the image. If there is no previously defined synchronous mode configuration in configDB, the configuration specified by `orchagent.sh` and `syncd-init-common.sh` would be used for orchagent and syncd, respectively. Otherwise, the configuration in configDB would be applied. Note that the default configuration in `orchagent.sh` and `syncd-init-common.sh` is defined by the image. As such, requirements 2 and 3 in Section 3.1 are met. + +### 3.5 Minigraph parser +The minigraph parser would explicitly write either "disable" or "enable" into `DEVICE_METADATA|localhost|synchronous_mode` in config_DB as the ground-truth configuration. And the configuration will be applied after swss restarts. Such a design complies with requirement 4 in Section 3.1. \ No newline at end of file diff --git a/doc/synchronous-mode/synchronous-mode-diagram.png b/doc/synchronous-mode/synchronous-mode-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..a614d68349c351e78b15e92a2848fcc7a496383e GIT binary patch literal 40492 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 literal 0 HcmV?d00001 From 19b8fbe7f2d910b54913bc2c0095b33975e4965f Mon Sep 17 00:00:00 2001 From: shi-su Date: Sat, 5 Sep 2020 00:25:47 +0000 Subject: [PATCH 2/4] Address review comments --- doc/synchronous-mode/synchronous-mode-cfg.md | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/doc/synchronous-mode/synchronous-mode-cfg.md b/doc/synchronous-mode/synchronous-mode-cfg.md index ad4cde9b24..a68050dc15 100644 --- a/doc/synchronous-mode/synchronous-mode-cfg.md +++ b/doc/synchronous-mode/synchronous-mode-cfg.md @@ -11,7 +11,9 @@ An illustrative figure of the synchronous mode is shown below. The synchronous m 1. Allow users to enable or disable synchronous mode via CLI. 2. Follow the image-specified mode when upgrading an image with cold/warm/fast-reboot if the synchronous mode configuration is not explicitly specified by users in configDB. 3. Use the user-specified mode when an explicit configuration of synchronous mode exists in configDB. -4. Support enabling/disabling the synchronous mode when deploying a minigraph. +4. Support enabling/disabling the synchronous mode when parsing a minigraph and generating `config_db.json`. + +Design details to achieve such requirements would presented in the following sections. ### 3.2 ConfigDB changes The following field is added to `DEVICE_METADATA|localhost` in configDB to support the configuration of synchronous mode @@ -20,11 +22,11 @@ DEVICE_METADATA|localhost "synchronous_mode": "enable|disable" ``` There are three possibilities for the field with the behavior as follows: -| Field value | Behavior | -|---------------------------|-----------------------------------| -| enable | Enable synchronous mode. | -| disable | Disable synchronous mode. | -| Field does not exist | Orchagent and syncd use the mode specified by `orchagent.sh` and `syncd-init-common.sh`, respectively. | +| Field value | Behavior | +|---------------------------|---------------------------------------| +| enable | Enable synchronous mode. | +| disable | Disable synchronous mode. | +| Field does not exist | Use the mode defined by the image. This is expected if users only load images but never write the field in configDB with the minigraph parser or CLI command.| ### 3.3 CLI command A CLI command is provided to enable or disable synchronous mode: @@ -34,7 +36,11 @@ A CLI command is provided to enable or disable synchronous mode: Note that the CLI command only writes the configuration into configDB. To further apply the configuration, it is required to restart swss. A message will be provided to the users to remind them of the need for swss restart after calling the command. The necessity of swss restart should also be included in the help message of the command line. This CLI command achieves requirement 1 in Section 3.1. ### 3.4 Configuration with SONiC images -A SONiC image does not write any configuration into `DEVICE_METADATA|localhost|synchronous_mode` by loading the image. If there is no previously defined synchronous mode configuration in configDB, the configuration specified by `orchagent.sh` and `syncd-init-common.sh` would be used for orchagent and syncd, respectively. Otherwise, the configuration in configDB would be applied. Note that the default configuration in `orchagent.sh` and `syncd-init-common.sh` is defined by the image. As such, requirements 2 and 3 in Section 3.1 are met. +A SONiC image does not write any configuration into `DEVICE_METADATA|localhost|synchronous_mode` by loading the image. + +If there is no previously defined synchronous mode configuration in configDB, the device applies the default mode defined by the image without the field `DEVICE_METADATA|localhost|synchronous_mode` exists in configDB. By loading an image with a different default mode, the device would execute the updated mode defined by the new image. As such, requirement 2 in Section 3.1 is achieved. + +When the synchronous mode configuration exists in configDB, the configuration in configDB would override the default mode specified by the image and be applied to the device. This achieves requirement 3 in Section 3.1. ### 3.5 Minigraph parser The minigraph parser would explicitly write either "disable" or "enable" into `DEVICE_METADATA|localhost|synchronous_mode` in config_DB as the ground-truth configuration. And the configuration will be applied after swss restarts. Such a design complies with requirement 4 in Section 3.1. \ No newline at end of file From a0c160f343172946832a8f593333395be280c51a Mon Sep 17 00:00:00 2001 From: shi-su Date: Wed, 9 Sep 2020 03:14:33 +0000 Subject: [PATCH 3/4] Add discussion about applying the config in configDB and L2 switch mode --- doc/synchronous-mode/synchronous-mode-cfg.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/doc/synchronous-mode/synchronous-mode-cfg.md b/doc/synchronous-mode/synchronous-mode-cfg.md index a68050dc15..8d652c1c19 100644 --- a/doc/synchronous-mode/synchronous-mode-cfg.md +++ b/doc/synchronous-mode/synchronous-mode-cfg.md @@ -26,7 +26,9 @@ There are three possibilities for the field with the behavior as follows: |---------------------------|---------------------------------------| | enable | Enable synchronous mode. | | disable | Disable synchronous mode. | -| Field does not exist | Use the mode defined by the image. This is expected if users only load images but never write the field in configDB with the minigraph parser or CLI command.| +| Field does not exist | Use the default mode defined by the image. This is expected if users only load images but never write the field in configDB with the minigraph parser or CLI command.| + +The orchagent and syncd read the field and apply the configuration accordingly when `orchagent.sh` and ` syncd_init_common.sh` starts the two processes, respectively. ### 3.3 CLI command A CLI command is provided to enable or disable synchronous mode: @@ -43,4 +45,7 @@ If there is no previously defined synchronous mode configuration in configDB, th When the synchronous mode configuration exists in configDB, the configuration in configDB would override the default mode specified by the image and be applied to the device. This achieves requirement 3 in Section 3.1. ### 3.5 Minigraph parser -The minigraph parser would explicitly write either "disable" or "enable" into `DEVICE_METADATA|localhost|synchronous_mode` in config_DB as the ground-truth configuration. And the configuration will be applied after swss restarts. Such a design complies with requirement 4 in Section 3.1. \ No newline at end of file +The minigraph parser would explicitly write either "disable" or "enable" into `DEVICE_METADATA|localhost|synchronous_mode` in config_DB as the ground-truth configuration. And the configuration will be applied after swss restarts. Such a design complies with requirement 4 in Section 3.1. + +### Configuration with L2 switch mode +When configuring a device to [L2 Switch mode](https://github.com/Azure/SONiC/wiki/L2-Switch-mode), the configuration of synchronous mode in config_DB will be removed. In the scenario that there is no user-specified configuration for the synchronous mode in configDB before configuring to L2 Switch mode, the device will keep using the same default mode specified by the image after configuring to L2 switch mode. If the user would like to use a specific configuration for the synchronous mode, the user needs to specify the configuration with the CLI in Section 3.3 to explicitly wite the configuration into config_DB after configuring the switch to L2 switch mode. From 61762c8e709ead5f8ee7df83facea6ceee9de6f5 Mon Sep 17 00:00:00 2001 From: shi-su Date: Wed, 9 Sep 2020 16:38:29 +0000 Subject: [PATCH 4/4] Add a missing section number --- doc/synchronous-mode/synchronous-mode-cfg.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/synchronous-mode/synchronous-mode-cfg.md b/doc/synchronous-mode/synchronous-mode-cfg.md index 8d652c1c19..a4926bbf03 100644 --- a/doc/synchronous-mode/synchronous-mode-cfg.md +++ b/doc/synchronous-mode/synchronous-mode-cfg.md @@ -47,5 +47,5 @@ When the synchronous mode configuration exists in configDB, the configuration in ### 3.5 Minigraph parser The minigraph parser would explicitly write either "disable" or "enable" into `DEVICE_METADATA|localhost|synchronous_mode` in config_DB as the ground-truth configuration. And the configuration will be applied after swss restarts. Such a design complies with requirement 4 in Section 3.1. -### Configuration with L2 switch mode +### 3.6 Configuration with L2 switch mode When configuring a device to [L2 Switch mode](https://github.com/Azure/SONiC/wiki/L2-Switch-mode), the configuration of synchronous mode in config_DB will be removed. In the scenario that there is no user-specified configuration for the synchronous mode in configDB before configuring to L2 Switch mode, the device will keep using the same default mode specified by the image after configuring to L2 switch mode. If the user would like to use a specific configuration for the synchronous mode, the user needs to specify the configuration with the CLI in Section 3.3 to explicitly wite the configuration into config_DB after configuring the switch to L2 switch mode.