From e607a9f3e8e0cc77687acf7913b559210804cc65 Mon Sep 17 00:00:00 2001 From: Kartik Chandran Date: Fri, 22 May 2020 22:21:11 -0700 Subject: [PATCH 1/8] Distributed forwarding in a VOQ architecture HLD --- doc/chassis/system-ports.md | 233 ++++++++++++++++++++++++++++++++ images/chassis/architecture.png | Bin 0 -> 41796 bytes 2 files changed, 233 insertions(+) create mode 100644 doc/chassis/system-ports.md create mode 100644 images/chassis/architecture.png diff --git a/doc/chassis/system-ports.md b/doc/chassis/system-ports.md new file mode 100644 index 00000000000..695f21c90ce --- /dev/null +++ b/doc/chassis/system-ports.md @@ -0,0 +1,233 @@ +# Distributed Forwarding in a Virtual Output Queue (VOQ) Architecture + +# High Level Design Document +#### Rev 0.1 + +# Table of Contents +* [List of Tables](#list-of-tables) +* [List of Figures](#list-of-figures) +* [Revision](#revision) +* [About this Manual](#about-this-manual) +* [Scope](#scope) +* [Definitions/Abbreviation](#definitionsabbreviation) +* [1 Requirements](#1-requirements) +* [2 Design](#2-design) +* [3 Testing](#3-testing) + +# List of Tables +* [Table 1: Abbreviations](#definitionsabbreviation) + +# List of Figures +* [Figure 1: VoQ Distributed Forwarding Architecture](#41-general-flow) + +###### Revision +| Rev | Date | Author | Change Description | +|:---:|:-----------:|:------------------:|--------------------| +| 0.1 | May-19 2020 | Kartik Chandran (Arista Networks) | Initial Version | + +# About this Manual + +This document provides an overview of the implementation of SONiC support for distributed packet forwarding across a set of devices that have a VOQ (Virtual Output Queue) architecture interconnected by an internal fabric. + +# Scope + +Support for distributed forwarding encompasses the following aspects +- Physical interfaces and VOQs +- Logical interfaces such as link aggregation groups (LAGs) +- The internal interconnection fabric +- The packet forwarding data plane +- The control plane, both internal (within the devices in the system) and with external devices. + +This document covers + - The basic SONiC architecture enhancements to support distributed VOQ based forwarding + - Representation and management of physical ports across the system. + +The other aspects listed above are expected to be covered in separate self-contained design proposals that build on this architecture. + +The initial target for this work is a VOQ chassis system in which linecards running SONiC are interconnected over a fabric and the overall system is controlled by a supervisor module that also runs SONiC. + +However, this architecture makes no hard assumptions about operating within a chassis and can be extended to other form factors with the same VOQ architecture. + + +# Definitions/Abbreviations + +| | | | +|------|--------------------|--------------------------------| +| FSI | Forwarding SONiC Instance | SONiC instance on a packet forwarding module like a linecard. +| SSI | Supervisor SONiC Instance | SONiC instance on a central supervisor module that controls a cluster of forwarding instances and the interconnection fabric. +| Forwarding Device | A unit of hardware that runs SONiC and is responsible for packet forwarding | +| NPU | Network Processing Unit | A component on a forwarding device that performs the packet forwarding function + + +# 1 Requirements + + +# 1.1 Functional Requirements + + +## 1.1.1 Distributed Operation + +* Each forwarding device must run an independent SONiC instance (called the Forwarding SONiC Instance or FSI) which controls the operation of one or more NPUs on the device, including the front panel and internal fabric ports connected to the NPU. +* A Forwarding device must act as a fully functional router that can run routing protocols and other networking services just like single box SONiC devices. +* The system of forwarding devices should be managed by a single central Supervisor SONiC instance (SSI) that also manages the internal fabric that interconnects the forwarding devices. + +## 1.1.2 Intra-System Control Plane + +- Each FSI should be able to connect to other FSIs over the internal fabric in order to be able to run protocols like BGP within the system. + +- This connection must be fate shared with the data path so that a loss of connectivity in the internal fabric is reflected as loss of internal control plane connectivity as well. + +## 1.1.3 Intra-System Management Plane + +Every FSI must have a management interface over which it can reach the supervisor and the rest of the network outside the system. This network must be completely separate from the internal control plane network described above. + +## 1.2 Configuration and Management Requirements + +- Each SONiC instance must be independently configurable and manageable through standard SONiC management interfaces. + +- All ports in the system must be statically provisioned at startup. Any changes to physical port configuration require a restart of the entire system. + +# 2 Design + +## 2.1 Design Assumptions + +In order for the system to function correctly, some state that provides the global view of the system to all the FSIs is necessary. This state is stored in the SSI and all FSIs connect to the SSI over the internal management network to access this state. + +## 2.2 SAI Support + +Support for VOQ based forwarding in SONiC is dependent on the [SAI VOQ API](https://github.com/opencomputeproject/SAI/blob/0dfc6bf390e4ace3fcc59c2ba47e387ff8aa36f4/doc/SAI-Proposal-VoQ-Switch.docx). + +## 2.3 State Sharing + +![](../../images/chassis/architecture.png) + +All state of global interest to the entire system is stored in the SSI in a new Redis instance with a database called “Chassis DB”. This instance is accessible over the internal management network. + +FSIs connect to this instance in addition to their own local Redis instance to access and act on this global state. + +## 2.3.1 Chassis DB Organization + +The Chassis DB runs in a new container known as ‘docker-database-chassis’ as a separate Redis instance. This ensures both that the Chassis state is isolated from the rest of the databases in the instance and can also be conditionally started only on the SSI. + +## 2.3.2 Config DB Additions + +``` +{ + "DEVICE_METADATA": { + "localhost": { + …. + “chassis_db_address" : "10.8.1.200", + “connect_chassis_db” : “1”, + …. + } + } +``` +Two new attributes are added to the DEVICE_METADATA object in Config DB. These are used to convey to an FSI that a ChassisDB exists in the system. + +## 2.4 Chip Management +There are two kinds of chips that are of interest + +### 2.4.1 NPU + +The NPU (also referred to as switching ASIC in SONiC terminology) performs all the packet reception, forwarding, queueing and transmission functions in the system. + +## 2.4.2 Fabric Chip + +The internal fabric that interconnects forwarding engines is made up of multiple fabric chips that are responsible for moving packets from the source to destination forwarding engine. + +NPUs are connected to fabric chips over internal links that terminate on fabric ports at each end. + +Fabric chips do not play any role in packet forwarding and do not need to be explicitly configured once initialized. All subsequent interactions with fabric chips are for monitoring only. + +Each chip in the system (NPU and Fabric Chip) in the system is given a global ID called a Switch ID. In addition, to support multi-core NPUs each core within a forwarding engine has a Core ID. The combination of (Switch ID, Core ID) must be globally unique across the entire system. + +## 2.5 Port Management + +There are four types of ports that need to be managed + +### 2.5.1 Local Ports + +These are front panel interfaces that are directly attached to each FSI. They are modeled and represented in SONiC exactly as they are with existing fixed configuration devices. + +### 2.5.2 System Ports + +Every port on the system requires a global representation in addition to its existing local representation. This is known as a System Port (AKA sysport). Every system port is assigned an identifier that is globally unique called a system_port_id. In addition, every port is assigned a local port ID within a core called a “Core Port Id”. The scope of the Local Port Id is _within_ a core of a forwarding engine. + +System Ports are modeled in ChassisDB in the SYSTEM_PORT table. + +``` +;Layer2 port representation across a distribute VoQ system +;instance_name is the name of the SONiC instance on the forwarding device on ;which the port is present +key = SYSTEM_PORT|instance_name|ifname +speed = 1*6DIGIT ; port line speed in Mbps +system_port_id = 1*6DIGIT ; globally unique port ID +switch_id = 1*2DIGIT ; global switch ID +core_id = 1*2DIGIT ; core id within switch_id. + ; switch_id+core_id must be globally + ; unique +core_port_id = 1*6DIGIT ; chip specific port +``` + +The globally unique key in the SYSTEM_PORT_TABLE is the name of the FSI instance and the front panel interface name. + +### 2.5.3 Inband Ports + +Inband ports are required to provide control plane connectivity between forwarding engines. They are connected to the forwarding device local CPU on one side and the internal fabric on the other. + +Every inband port is assigned a System Port Id just like front panel ports which are known to all the forwarding devices. Thus, every inband port is reachable from every forwarding engine. + +All other provisioning and configuration aspects of Inband ports are the same as front panel ports + +### 2.5.4 Fabric Ports + + +The provisioning and management of Fabric ports is outside the scope of this document and will be documented as a separate proposal. + + +## 2.6 Orchestration Agent + + +### System Port Handling + + +System port configuration is expected to completely static and known at the start of the system. + +Based on the state of ‘“connect_chassis_db” in the device metadata in ConfigDB, Orchagent connects to Chassis DB and subscribes to the SYSTEM_PORT table in CHASSIS_DB. It uses this list of system ports from the SYSTEM_PORT table to construct the switch attributes needed by the create_switch SAI API. In a later phase, the system ports could be directly created by making sairedis calls from orchagent. + +A system port can be used in lieu of a physical port in several SAI API calls as relevant. For example, a system port can be added as a vlan member or be a lag member. To account for these, portsorch will be updated to support sysports. + + +Portsyncd does not have to support sysports because sysports do not have any associated kernel devices. + + +# 3 Testing + + +Test coverage for the distributed VoQ architecture is achieved by extending the existing virtual switch based SWSS pytest infrastructure. + + +The distributed switching architecture is represented as multiple VS instances connected with each other and called as Virtual Chassis, where one of the instance plays the role of the SSI and the remaining instances as FSIs. + + +## 3.1 Regression Testing + + +Existing SWSS pytests can be executed against any of the instances in the virtual chassis to ensure that existing SONiC functionality is not affected while operating in a distributed environment. + + +## 3.2 Distributed VoQ functionality + + +Additional tests that specifically validate distributed VoQ forwarding functionality run only in the virtual chassis environment. + + +### 3.2.3 test_virtual_chassis.py + + +Is the top level test driver that executes testcases against the virtual chassis. + + +Sysport handling is tested by test_chassis_sysport which validates that +* System ports can be populated in CHASSIS_DB +* All FSIs can connect to CHASSIS_DB and access sysport state +* Orchagent programs the correct SAI Redis ASIC_DB state to represent the configured sysport. diff --git a/images/chassis/architecture.png b/images/chassis/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..7820d886e2e34943c5ba5c0d2da73c5d4c23aa1e GIT binary patch literal 41796 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 N)ReUzl`2}k{x1_GjqCsb literal 0 HcmV?d00001 From 84599875eb835c4128fa82c582102f2f364d71f4 Mon Sep 17 00:00:00 2001 From: Kartik Chandran Date: Tue, 23 Jun 2020 16:24:25 -0700 Subject: [PATCH 2/8] Updates after review meeting dated Jun-18 2020 NPU to be replaced by ASIC/Multi-ASIC for consistency throughout the document [AI: Kartik/Arista] => document updated to use ASIC instead of NPU Section 1.2: Config & Management Requirements Rephrase second bullet to reflect port configuration is static i.e physical wiring only => Wording clarified as requqested Add context in the document for dynamic port changes [AI: Kartik/Arista] => Section outlining dynamic system port support added in "Future Work" section Section 2.3: State Sharing Update image separate Syncd, swss, DB container per fabric chip [AI: Kartik/Arista] => diagram updated to show multiple syncd, one per fabric chip Section 2.4: Chip Management Update section 2.4.2 to clarify switch ID numbering scheme in the system with reference from SAI specs. [AI: Kartik/Arista] => Section updated to reflect the correct numbering scheme with reference to the VOQ SAI spec. Section 2.5: Port Management Section 2.5.2 update system port table schema [AI: Kartik/Arista] => Updated to reflect proper instance naming as below Section 2.5.3 Update inband port to be explicitly provisioned [AI: Kartik/Arista] => wording around inband port is clarified. Require more clarity what is meant by instance - if LC has two ASICs then what will instance scope mean - swss/CPU instance? Is there is 1:1 mapping between instance to ASIC? [AI: Kartik/Arista] => Added new instance naming section describing naming scheme for both the FSI and an ASIC --- doc/chassis/system-ports.md | 121 ++++++++++++++++++++------------ images/chassis/architecture.png | Bin 41796 -> 44202 bytes 2 files changed, 75 insertions(+), 46 deletions(-) diff --git a/doc/chassis/system-ports.md b/doc/chassis/system-ports.md index 695f21c90ce..caf1ce728f6 100644 --- a/doc/chassis/system-ports.md +++ b/doc/chassis/system-ports.md @@ -23,7 +23,8 @@ ###### Revision | Rev | Date | Author | Change Description | |:---:|:-----------:|:------------------:|--------------------| -| 0.1 | May-19 2020 | Kartik Chandran (Arista Networks) | Initial Version | +| 0.1 | May-19 2020 | Kartik Chandran (Arista Networks) | Initial Version | +| 0.2 | June-22 2020 | Kartik Chandran (Arista Networks) | First set of review comments from public review | # About this Manual @@ -56,26 +57,24 @@ However, this architecture makes no hard assumptions about operating within a ch | FSI | Forwarding SONiC Instance | SONiC instance on a packet forwarding module like a linecard. | SSI | Supervisor SONiC Instance | SONiC instance on a central supervisor module that controls a cluster of forwarding instances and the interconnection fabric. | Forwarding Device | A unit of hardware that runs SONiC and is responsible for packet forwarding | -| NPU | Network Processing Unit | A component on a forwarding device that performs the packet forwarding function +| ASIC | Application Specific Integrated Circuit | Refers to the forwarding engine on a device that is responsible for packet forwarding. Also referred to as NPU # 1 Requirements - # 1.1 Functional Requirements - ## 1.1.1 Distributed Operation -* Each forwarding device must run an independent SONiC instance (called the Forwarding SONiC Instance or FSI) which controls the operation of one or more NPUs on the device, including the front panel and internal fabric ports connected to the NPU. +* Each forwarding device must run an independent SONiC instance (called the Forwarding SONiC Instance or FSI) which controls the operation of one or more ASICs on the device, including the front panel and internal fabric ports conn ected to the ASICs. * A Forwarding device must act as a fully functional router that can run routing protocols and other networking services just like single box SONiC devices. * The system of forwarding devices should be managed by a single central Supervisor SONiC instance (SSI) that also manages the internal fabric that interconnects the forwarding devices. ## 1.1.2 Intra-System Control Plane -- Each FSI should be able to connect to other FSIs over the internal fabric in order to be able to run protocols like BGP within the system. +* Each FSI should be able to connect to other FSIs over the internal fabric in order to be able to run protocols like BGP within the system. -- This connection must be fate shared with the data path so that a loss of connectivity in the internal fabric is reflected as loss of internal control plane connectivity as well. +* This connection must be fate shared with the data path so that a loss of connectivity in the internal fabric is reflected as loss of internal control plane connectivity as well. ## 1.1.3 Intra-System Management Plane @@ -83,9 +82,13 @@ Every FSI must have a management interface over which it can reach the superviso ## 1.2 Configuration and Management Requirements -- Each SONiC instance must be independently configurable and manageable through standard SONiC management interfaces. +* Each SONiC instance must be independently configurable and manageable through standard SONiC management interfaces. -- All ports in the system must be statically provisioned at startup. Any changes to physical port configuration require a restart of the entire system. +* The physical configuration of the entire system is fixed at startup. This includes + * The Hardware SKU that is used for each forwarding device + * The Physical port organization of the entire system + +* Live replacement of forwarding devices or pluggable modules like transceivers must be supported as long as the part being replaced is an identical SKU. # 2 Design @@ -95,7 +98,7 @@ In order for the system to function correctly, some state that provides the glob ## 2.2 SAI Support -Support for VOQ based forwarding in SONiC is dependent on the [SAI VOQ API](https://github.com/opencomputeproject/SAI/blob/0dfc6bf390e4ace3fcc59c2ba47e387ff8aa36f4/doc/SAI-Proposal-VoQ-Switch.docx). +Support for VOQ based forwarding in SONiC is dependent on the [SAI VOQ API](https://github.com/opencomputeproject/SAI/blob/master/doc/VoQ/SAI-Proposal-VoQ-Switch.md) ## 2.3 State Sharing @@ -124,32 +127,51 @@ The Chassis DB runs in a new container known as ‘docker-database-chassis’ as ``` Two new attributes are added to the DEVICE_METADATA object in Config DB. These are used to convey to an FSI that a ChassisDB exists in the system. + ## 2.4 Chip Management There are two kinds of chips that are of interest -### 2.4.1 NPU +### 2.4.1 Forwarding ASIC -The NPU (also referred to as switching ASIC in SONiC terminology) performs all the packet reception, forwarding, queueing and transmission functions in the system. +The ASIC (also referred to as NPU in SONiC terminology) performs all the packet reception, forwarding, queueing and transmission functions in the system. -## 2.4.2 Fabric Chip +### 2.4.2 Fabric Chip The internal fabric that interconnects forwarding engines is made up of multiple fabric chips that are responsible for moving packets from the source to destination forwarding engine. -NPUs are connected to fabric chips over internal links that terminate on fabric ports at each end. +ASICs are connected to fabric chips over internal links that terminate on fabric ports at each end. + +Fabric chips do not play any role in packet forwarding and do not need to be explicitly configured once initialized. All subsequent interactions with fabric chips are for monitoring only. + +All chips are managed based on the existing Multi-ASIC paradigm in SONiC, in which there is one instance of syncd (and SAI), swss and other related agents per chip. + +### 2.4.3 Switch Numbering + +* Each chip in the system (ASIC and Fabric Chip) in the system is given a global ID called a Switch ID. +* Each chip consumes C consecutive switch IDs, where C is the number of switching cores. +* Each core on a chip has a core ID between 0 and C. + +Please see the SAI VoQ spec for more detailed examples. + +## 2.5 SONiC Instance and ASIC Naming -Fabric chips do not play any role in packet forwarding and do not need to be explicitly configured once initialized. All subsequent interactions with fabric chips are for monitoring only. +### Forwarding SONiC Instance -Each chip in the system (NPU and Fabric Chip) in the system is given a global ID called a Switch ID. In addition, to support multi-core NPUs each core within a forwarding engine has a Core ID. The combination of (Switch ID, Core ID) must be globally unique across the entire system. +Each FSI has a globally unique name that represents that SONiC instance. In a modular chassis, the name would conventionally be "Lineard-N", where N is the slot in which the linecard is inserted. -## 2.5 Port Management +### ASIC Name + +In addition, each ASIC has a globally unique name which would conventionally be "Linecard-N.K", where K is a slot local identifier of the ASIC. + +## 2.6 Port Management There are four types of ports that need to be managed -### 2.5.1 Local Ports +### 2.6.1 Local Ports These are front panel interfaces that are directly attached to each FSI. They are modeled and represented in SONiC exactly as they are with existing fixed configuration devices. -### 2.5.2 System Ports +### 2.6.2 System Ports Every port on the system requires a global representation in addition to its existing local representation. This is known as a System Port (AKA sysport). Every system port is assigned an identifier that is globally unique called a system_port_id. In addition, every port is assigned a local port ID within a core called a “Core Port Id”. The scope of the Local Port Id is _within_ a core of a forwarding engine. @@ -157,38 +179,32 @@ System Ports are modeled in ChassisDB in the SYSTEM_PORT table. ``` ;Layer2 port representation across a distribute VoQ system -;instance_name is the name of the SONiC instance on the forwarding device on ;which the port is present -key = SYSTEM_PORT|instance_name|ifname +;instance_name is the globally unique name on the forwarding device on ;which the port is present +key = SYSTEM_PORT|asic_name|ifname ; speed = 1*6DIGIT ; port line speed in Mbps system_port_id = 1*6DIGIT ; globally unique port ID -switch_id = 1*2DIGIT ; global switch ID +switch_id = 1*2DIGIT ; global switch ID. core_id = 1*2DIGIT ; core id within switch_id. - ; switch_id+core_id must be globally - ; unique core_port_id = 1*6DIGIT ; chip specific port ``` -The globally unique key in the SYSTEM_PORT_TABLE is the name of the FSI instance and the front panel interface name. +The globally unique key in the SYSTEM_PORT_TABLE is the name of the ASIC instance and the front panel interface name. The ASIC name is chosen so that various agents like syncd can use this name as a filtering criterion to select the subset of entities that they need to operate on in order to manage a specific ASIC. -### 2.5.3 Inband Ports +The only restriction on selecting the ifname is that the key "SYSTEM_PORT|asic_name|ifname" must uniquely identify a port on the system. -Inband ports are required to provide control plane connectivity between forwarding engines. They are connected to the forwarding device local CPU on one side and the internal fabric on the other. +### 2.6.3 Inband Ports -Every inband port is assigned a System Port Id just like front panel ports which are known to all the forwarding devices. Thus, every inband port is reachable from every forwarding engine. - -All other provisioning and configuration aspects of Inband ports are the same as front panel ports +Inband ports are required to provide control plane connectivity between forwarding engines. They are connected to the forwarding device local CPU on one side and the internal fabric on the other. -### 2.5.4 Fabric Ports +Every inband port is assigned a System Port ID just like front panel ports which is known to all the forwarding devices. Thus, every inband port is reachable from every forwarding engine. +### 2.6.4 Fabric Ports The provisioning and management of Fabric ports is outside the scope of this document and will be documented as a separate proposal. +## 2.7 Orchestration Agent -## 2.6 Orchestration Agent - - -### System Port Handling - +### 2.7.1 System Port Handling System port configuration is expected to completely static and known at the start of the system. @@ -199,35 +215,48 @@ A system port can be used in lieu of a physical port in several SAI API calls as Portsyncd does not have to support sysports because sysports do not have any associated kernel devices. - # 3 Testing - Test coverage for the distributed VoQ architecture is achieved by extending the existing virtual switch based SWSS pytest infrastructure. - The distributed switching architecture is represented as multiple VS instances connected with each other and called as Virtual Chassis, where one of the instance plays the role of the SSI and the remaining instances as FSIs. - ## 3.1 Regression Testing - Existing SWSS pytests can be executed against any of the instances in the virtual chassis to ensure that existing SONiC functionality is not affected while operating in a distributed environment. - ## 3.2 Distributed VoQ functionality - Additional tests that specifically validate distributed VoQ forwarding functionality run only in the virtual chassis environment. - ### 3.2.3 test_virtual_chassis.py - Is the top level test driver that executes testcases against the virtual chassis. - Sysport handling is tested by test_chassis_sysport which validates that * System ports can be populated in CHASSIS_DB * All FSIs can connect to CHASSIS_DB and access sysport state * Orchagent programs the correct SAI Redis ASIC_DB state to represent the configured sysport. + +# 4 Future Work + +## Dynamic System Ports + +Dynamic system port support is required to support the following forwarding scenarios + +* Addition of a new forwarding device into an existing running system +* Replacing a forwarding device with another device of a different hardware SKU (such as replacing a linecard with a new linecard of a different SKU in a chassis slot). + +Both these scenarios can be supported smoothly as long as the global system port numbering scheme is maintained and the modifications to system ports can be performed without impacting the System Port IDs of the running system. + +Support for dynamic system ports requires SAI support for the `create_port` and `remove_port` calls. + +### Overview of PortsOrch changes + + * Subscribe to the SYSTEM_PORT table in PortsOrch + * React to changes in the SYSTEM_PORT table + * Make the appropriate `create_port` and `remove_port` calls. + +In addition, forwarding features that are dependent on System Ports need to react to these changes and reprogram the related forwarding plane state such as routing nexthops, LAG membership etc. + + diff --git a/images/chassis/architecture.png b/images/chassis/architecture.png index 7820d886e2e34943c5ba5c0d2da73c5d4c23aa1e..bafcb49a072429e641ebda77edce7e3ad71fa407 100644 GIT binary patch literal 44202 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 z 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 literal 41796 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 N)ReUzl`2}k{x1_GjqCsb From ddf468a0661eeb595b8f1b453baa834fd92c040d Mon Sep 17 00:00:00 2001 From: Kartik Chandran Date: Fri, 26 Jun 2020 10:57:47 -0700 Subject: [PATCH 3/8] Second set of edits from review at VOQ working group. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ifname must be unique per FSI. If we decide to create kernel devices for system ports, ifname may have to be globally unique. AI (Kartik/Arista): Amend wording in the document => amended wording in the document Any existing swss test can be run in the virtual chassis mode - except for LAG tests which aren’t compatible . AI (Kartik/Arista) - Clarify the conditions under which existing tests can be run unchanged. => clarified How would dual supervisor scenario work? What considerations do we have for two SSIs? (Danny/Microsoft) AI (Kartik/Arista) - add a summary in Future work section. => added a new dual supervisor section in Future work and summarized some high level approaches --- doc/chassis/system-ports.md | 46 +++++++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/doc/chassis/system-ports.md b/doc/chassis/system-ports.md index caf1ce728f6..fbb967cd39f 100644 --- a/doc/chassis/system-ports.md +++ b/doc/chassis/system-ports.md @@ -24,7 +24,8 @@ | Rev | Date | Author | Change Description | |:---:|:-----------:|:------------------:|--------------------| | 0.1 | May-19 2020 | Kartik Chandran (Arista Networks) | Initial Version | -| 0.2 | June-22 2020 | Kartik Chandran (Arista Networks) | First set of review comments from public review | +| 0.2 | June-22 2020 | Kartik Chandran (Arista Networks) | First set of review comments from public review | +| 1.0 | June-26 2020 | Kartik Chandran (Arista Networks) | Final set of review comments from public review | # About this Manual @@ -57,7 +58,8 @@ However, this architecture makes no hard assumptions about operating within a ch | FSI | Forwarding SONiC Instance | SONiC instance on a packet forwarding module like a linecard. | SSI | Supervisor SONiC Instance | SONiC instance on a central supervisor module that controls a cluster of forwarding instances and the interconnection fabric. | Forwarding Device | A unit of hardware that runs SONiC and is responsible for packet forwarding | -| ASIC | Application Specific Integrated Circuit | Refers to the forwarding engine on a device that is responsible for packet forwarding. Also referred to as NPU +| ASIC | Application Specific Integrated Circuit | Refers to the forwarding engine on a device that is responsible for packet forwarding. +| NPU | Network Processing Unit | An alternate term for ASIC often used in SONiC vocabulary # 1 Requirements @@ -157,7 +159,7 @@ Please see the SAI VoQ spec for more detailed examples. ### Forwarding SONiC Instance -Each FSI has a globally unique name that represents that SONiC instance. In a modular chassis, the name would conventionally be "Lineard-N", where N is the slot in which the linecard is inserted. +Each FSI has a globally unique name that represents that SONiC instance. In a modular chassis, the name would conventionally be "Linecard-N", where N is the slot in which the linecard is inserted. ### ASIC Name @@ -190,7 +192,7 @@ core_port_id = 1*6DIGIT ; chip specific port The globally unique key in the SYSTEM_PORT_TABLE is the name of the ASIC instance and the front panel interface name. The ASIC name is chosen so that various agents like syncd can use this name as a filtering criterion to select the subset of entities that they need to operate on in order to manage a specific ASIC. -The only restriction on selecting the ifname is that the key "SYSTEM_PORT|asic_name|ifname" must uniquely identify a port on the system. +The ifname is expected to be unique within a SONiC instance. As a result, the key "SYSTEM_PORT|asic_name|ifname" uniquely identifies a system port in the system. ### 2.6.3 Inband Ports @@ -206,13 +208,12 @@ The provisioning and management of Fabric ports is outside the scope of this doc ### 2.7.1 System Port Handling -System port configuration is expected to completely static and known at the start of the system. +System port configuration is expected to be completely static and known at the start of the system. Based on the state of ‘“connect_chassis_db” in the device metadata in ConfigDB, Orchagent connects to Chassis DB and subscribes to the SYSTEM_PORT table in CHASSIS_DB. It uses this list of system ports from the SYSTEM_PORT table to construct the switch attributes needed by the create_switch SAI API. In a later phase, the system ports could be directly created by making sairedis calls from orchagent. A system port can be used in lieu of a physical port in several SAI API calls as relevant. For example, a system port can be added as a vlan member or be a lag member. To account for these, portsorch will be updated to support sysports. - Portsyncd does not have to support sysports because sysports do not have any associated kernel devices. # 3 Testing @@ -240,7 +241,7 @@ Sysport handling is tested by test_chassis_sysport which validates that # 4 Future Work -## Dynamic System Ports +## 4.1 Dynamic System Ports Dynamic system port support is required to support the following forwarding scenarios @@ -259,4 +260,35 @@ Support for dynamic system ports requires SAI support for the `create_port` and In addition, forwarding features that are dependent on System Ports need to react to these changes and reprogram the related forwarding plane state such as routing nexthops, LAG membership etc. +## 4.2 Dual Supervisor Support + +Dual supervisor modules are a common feature in chassis based systems where one supervisor acts as the active and the other as a standby. The presence of the standby supervisor allows the system +to continue functioning without manual intervention in case of a hard failure (such as a hardware failure) on the active supervisor by transferring control to the standby. + +The standby supervisor has its own console, internal and external management IP address. + +There are typically two forms of redundancy + +### Warm Standby + +In this mode, the standby supervisor has booted into the OS and is waiting to take over. No configuration or operational status is known. When a switchover occurs, the processing is very similar to what happens after a fresh boot of a supervisor. + +Warm standby can be supported in SWSS as follows + +- Gracefully handle the loss of connectivity to the SSI and terminate OrchAgent, syncd and all related containers +- Process device configuration and populate standby Chassis DB with static information +- Modify the ChassisDB address in DEVICE_META +- Start all the containers which will now connect to the standby Chassis DB and continue operation. + +### Hot Standby + +In the hot standby mode, the standby supervisor has the control plane running in standby mode, such that it can take over with minimal (or no) disruption to forwarding device. + +At a high level, hot standby mode requires +- Starting Chassis DB on standby SSI in standby mode where it mirrors the Chassis DB. +- Live sync of Chassis DB state between active and standby Chassis DB. +- Graceful handling in OrchAgent of loss of connectivity to SSI and continuing to operate autonomously. +- Reconnecting to Chassis DB when Standby SSI is ready. +- Reconciling relevant Chassis DB state with SAI Asic DB state and modifying SAI state as appropriate to be in sync with Chassis DB. + From 88a798ac9044e8dcc0033328bbefb53f2875fce0 Mon Sep 17 00:00:00 2001 From: Kartik Chandran Date: Wed, 5 Aug 2020 23:11:57 -0700 Subject: [PATCH 4/8] Changes for Rev 2.0 of the document - Clarifications on DB structure and naming - Cleaning up redundant sections that are expected to be covered in other docs --- .../{system-ports.md => architecture.md} | 121 +++++++++--------- images/chassis/architecture.png | Bin 44202 -> 56364 bytes 2 files changed, 57 insertions(+), 64 deletions(-) rename doc/chassis/{system-ports.md => architecture.md} (72%) diff --git a/doc/chassis/system-ports.md b/doc/chassis/architecture.md similarity index 72% rename from doc/chassis/system-ports.md rename to doc/chassis/architecture.md index fbb967cd39f..6542ba0aeed 100644 --- a/doc/chassis/system-ports.md +++ b/doc/chassis/architecture.md @@ -1,7 +1,7 @@ # Distributed Forwarding in a Virtual Output Queue (VOQ) Architecture # High Level Design Document -#### Rev 0.1 +#### Rev 2.0 # Table of Contents * [List of Tables](#list-of-tables) @@ -25,7 +25,8 @@ |:---:|:-----------:|:------------------:|--------------------| | 0.1 | May-19 2020 | Kartik Chandran (Arista Networks) | Initial Version | | 0.2 | June-22 2020 | Kartik Chandran (Arista Networks) | First set of review comments from public review | -| 1.0 | June-26 2020 | Kartik Chandran (Arista Networks) | Final set of review comments from public review | +| 1.0 | June-26 2020 | Kartik Chandran (Arista Networks) | Final set of review comments from public review | +| 2.0 | Aug-5 2020 | Kartik Chandran (Arista Networks) | Revisions after further community review including description of global DB structure, removing sections on system ports, testing and future work to be covered in other documents | # About this Manual @@ -68,7 +69,8 @@ However, this architecture makes no hard assumptions about operating within a ch ## 1.1.1 Distributed Operation -* Each forwarding device must run an independent SONiC instance (called the Forwarding SONiC Instance or FSI) which controls the operation of one or more ASICs on the device, including the front panel and internal fabric ports conn ected to the ASICs. +Each forwarding device must run an independent SONiC instance (called the Forwarding SONiC Instance or FSI) which controls the operation of one or more ASICs on the device, including the front panel and internal fabric ports conn ected to the ASICs. + * A Forwarding device must act as a fully functional router that can run routing protocols and other networking services just like single box SONiC devices. * The system of forwarding devices should be managed by a single central Supervisor SONiC instance (SSI) that also manages the internal fabric that interconnects the forwarding devices. @@ -106,28 +108,68 @@ Support for VOQ based forwarding in SONiC is dependent on the [SAI VOQ API](http ![](../../images/chassis/architecture.png) -All state of global interest to the entire system is stored in the SSI in a new Redis instance with a database called “Chassis DB”. This instance is accessible over the internal management network. +All state of global interest to the entire system is stored in the SSI in a new Redis instance with a database called “Global DB”. This instance is accessible over the internal management network. FSIs connect to this instance in addition to their own local Redis instance to access and act on this global state. + + +## 2.3.1 Global DB Organization -FSIs connect to this instance in addition to their own local Redis instance to access and act on this global state. +The Global DB runs in a new container known as ‘docker-database-global’ as a separate Redis instance. This ensures both that the Global state is isolated from the rest of the databases in the instance and can also be conditionally started only on the SSI. -## 2.3.1 Chassis DB Organization +Multiple databases can be instantiated inside the Global DB analogous to the existing CONFIG_DB, STATE_DB structure in SONiC Today. However, at this time the expectation is that _all_ static configuration including globally applicable conifguration is stored in the FSI CONFIG_DB and only operational application state that needs to be shared between FSIs is stored in the Global DB instance. Accordingly, there is a single DB within the Global DB instance called "GLOBAL_APP_DB" to clearly mark the difference between this DB and the local APP_DB which is accessed by OrchAgent. -The Chassis DB runs in a new container known as ‘docker-database-chassis’ as a separate Redis instance. This ensures both that the Chassis state is isolated from the rest of the databases in the instance and can also be conditionally started only on the SSI. +A new systemd service `config-globaldb` starts the docker-database-global container in the SSI. In the FSI, the config-globaldb service reads the contents of default_config.json and populate /etc/hosts with the IP address for the “redis_chassis.server” host. -## 2.3.2 Config DB Additions +The server name “redis_chassis.server” is used in database_config.json to describe the reachability of the redis_chassis redis instance. + +**database_config.json** +``` + "redis_global":{ + "hostname" : "redis_global.server", + "port": 6385, + "unix_socket_path": "/var/run/redis-chassis/redis_global.sock", + "unix_socket_perm" : 777 + } + + "GLOBAL_APP_DB" : { + "id" : 8, + "separator": "|", + "instance" : "redis_global" + } +``` + +The following information is present in default_config.json, which is loaded into CONFIG_DB ``` -{ + "DEVICE_METADATA": { + "localhost": { + “global_db_address" : , + “start_global_db” : “1”, + } + } + +``` + +This indicates to the SSI that the Global DB instance is to be started. + +## 2.3.2 FSI CONFIG_DB Additions + +Two new attributes are added to the DEVICE_METADATA object in Config DB. These are used to convey to an FSI that a Global DB exists in the system. +``` "DEVICE_METADATA": { "localhost": { …. - “chassis_db_address" : "10.8.1.200", - “connect_chassis_db” : “1”, + “global_db_address" : "10.8.1.200", + “connect_to_global_db” : “1”, …. } } ``` -Two new attributes are added to the DEVICE_METADATA object in Config DB. These are used to convey to an FSI that a ChassisDB exists in the system. + +The `connect_to_global_db` flag is distinct from the `start_global_db` flag to signal which instance owns the DB and which instance is supposted to connect to it. + +### 2.3.4 DB Connectivity + +The platform implementation is responsible for providing IP connectivity to the redis_global.server throughout the chassis. For example, this IP address could be in a 127.1/16 subnet so that the traffic is limited to staying within the system. The exact mechanisms for this IP connectivity is considered implementation specific and outside the scope of this document. ## 2.4 Chip Management @@ -177,23 +219,6 @@ These are front panel interfaces that are directly attached to each FSI. They ar Every port on the system requires a global representation in addition to its existing local representation. This is known as a System Port (AKA sysport). Every system port is assigned an identifier that is globally unique called a system_port_id. In addition, every port is assigned a local port ID within a core called a “Core Port Id”. The scope of the Local Port Id is _within_ a core of a forwarding engine. -System Ports are modeled in ChassisDB in the SYSTEM_PORT table. - -``` -;Layer2 port representation across a distribute VoQ system -;instance_name is the globally unique name on the forwarding device on ;which the port is present -key = SYSTEM_PORT|asic_name|ifname ; -speed = 1*6DIGIT ; port line speed in Mbps -system_port_id = 1*6DIGIT ; globally unique port ID -switch_id = 1*2DIGIT ; global switch ID. -core_id = 1*2DIGIT ; core id within switch_id. -core_port_id = 1*6DIGIT ; chip specific port -``` - -The globally unique key in the SYSTEM_PORT_TABLE is the name of the ASIC instance and the front panel interface name. The ASIC name is chosen so that various agents like syncd can use this name as a filtering criterion to select the subset of entities that they need to operate on in order to manage a specific ASIC. - -The ifname is expected to be unique within a SONiC instance. As a result, the key "SYSTEM_PORT|asic_name|ifname" uniquely identifies a system port in the system. - ### 2.6.3 Inband Ports Inband ports are required to provide control plane connectivity between forwarding engines. They are connected to the forwarding device local CPU on one side and the internal fabric on the other. @@ -204,40 +229,16 @@ Every inband port is assigned a System Port ID just like front panel ports which The provisioning and management of Fabric ports is outside the scope of this document and will be documented as a separate proposal. -## 2.7 Orchestration Agent - -### 2.7.1 System Port Handling - -System port configuration is expected to be completely static and known at the start of the system. -Based on the state of ‘“connect_chassis_db” in the device metadata in ConfigDB, Orchagent connects to Chassis DB and subscribes to the SYSTEM_PORT table in CHASSIS_DB. It uses this list of system ports from the SYSTEM_PORT table to construct the switch attributes needed by the create_switch SAI API. In a later phase, the system ports could be directly created by making sairedis calls from orchagent. - -A system port can be used in lieu of a physical port in several SAI API calls as relevant. For example, a system port can be added as a vlan member or be a lag member. To account for these, portsorch will be updated to support sysports. - -Portsyncd does not have to support sysports because sysports do not have any associated kernel devices. +The details regarding the schemas, Orch agent logic changes and flows are described in more specific documents # 3 Testing Test coverage for the distributed VoQ architecture is achieved by extending the existing virtual switch based SWSS pytest infrastructure. -The distributed switching architecture is represented as multiple VS instances connected with each other and called as Virtual Chassis, where one of the instance plays the role of the SSI and the remaining instances as FSIs. - -## 3.1 Regression Testing - -Existing SWSS pytests can be executed against any of the instances in the virtual chassis to ensure that existing SONiC functionality is not affected while operating in a distributed environment. - -## 3.2 Distributed VoQ functionality - -Additional tests that specifically validate distributed VoQ forwarding functionality run only in the virtual chassis environment. +The distributed switching architecture is represented as multiple VS instances connected with each other and called as Virtual Chassis, where one of the instance plays the role of the SSI and the remaining instances as FSIs. Existing SWSS pytests can be executed against any of the instances in the virtual chassis to ensure that existing SONiC functionality is not affected while operating in a distributed environment. -### 3.2.3 test_virtual_chassis.py - -Is the top level test driver that executes testcases against the virtual chassis. - -Sysport handling is tested by test_chassis_sysport which validates that -* System ports can be populated in CHASSIS_DB -* All FSIs can connect to CHASSIS_DB and access sysport state -* Orchagent programs the correct SAI Redis ASIC_DB state to represent the configured sysport. +More detailed test cases are covered in other HLDs. # 4 Future Work @@ -252,14 +253,6 @@ Both these scenarios can be supported smoothly as long as the global system port Support for dynamic system ports requires SAI support for the `create_port` and `remove_port` calls. -### Overview of PortsOrch changes - - * Subscribe to the SYSTEM_PORT table in PortsOrch - * React to changes in the SYSTEM_PORT table - * Make the appropriate `create_port` and `remove_port` calls. - -In addition, forwarding features that are dependent on System Ports need to react to these changes and reprogram the related forwarding plane state such as routing nexthops, LAG membership etc. - ## 4.2 Dual Supervisor Support Dual supervisor modules are a common feature in chassis based systems where one supervisor acts as the active and the other as a standby. The presence of the standby supervisor allows the system diff --git a/images/chassis/architecture.png b/images/chassis/architecture.png index bafcb49a072429e641ebda77edce7e3ad71fa407..cdf9b75be51387db11fa60b95e12ec873737163b 100644 GIT binary patch literal 56364 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 AV*mgE literal 44202 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 z zUMTngFu{{ivsTJH0F)pxAhmn6!X}`lURZcn#soML;gfe3HlnZ2=*ov&2okM-?}^XE1zP* z@SD7Ogr`9{bVPc8;Sdl-^&3)dCU5FT+M-TuEwFvxB4yaH&!Dzsc8c1JRD1UWlE;E) z>SPjMrYk`d&n<)MsulY<88O?MTQzw<0ol1Np}1bYQdi@Dw4Vv=LnbeuZZf6Ql&eLB z$Gee40YA%i>tnS@K3l!aj9fn5^<`L;BJ;tsJBxN+2YQGH>uDAsmilP~hB|-#+mZ$V zP6V*A4~=L~)E`w()ZOyy5b?5qp+$iWTbrJGS?2}@9y(cv)eYC-A*%X$=1RBd$ zEW6{ALJQZbXD(Pnl6DixCs40IdFBqX(~sxBwkn93+741AI^N1OTH4|Mv>Gg5eIKU# zIXEHJ15CbaB#>Z>{o84-Bt~+sBFkvz6As##0l(}M37ZIrvmx4Iy{r9<<8smGlWiGg zGw4|hxYtdJUf@{bg_>ZH@Mf#^UDc31R5qtBct4;1XK923S<2*x{8rSp9kMTQfpt`XA*DdnQKw`XH$l4XMX zt9;ziD(q9QAH6wYo{)1QaVjZbB^Efz14X(qTKq`DF2LLlX9UOS-irxkWPZ~!S6%Hh ztKmD#8{E2j`UiEsBXOHznXHyv%HD};IdHZc%Mr5|#IbkFI}gg6ZIP1pNLoIBb&Pxo zMa{+N*sj%1`?}@}*mr!AY@g@GARM+XaA0yZ#Z-Jv`i^XPf&<2f+e9DQUl6k^1PxXsjb!yQa zC$227{uFXod?2S0Es%vop$PN+Oqcs_Hi}0EbdWHHp9=Z?KCRM~qBuF}O}%{2X;L(i z9I(7zA41w$c~(*=ZcaZsp>_mbvepl?mY2tTVUvP(q;P9g6@?1&=!^c;NdRJh()fHJ zOH?{hV1vEX<-I5l?Sk~9lGV&C(RI>a`5QR?QNhR7#zQ~|R-i|1Qz zVcjs!cgM`Tkxp{BSRNt*EbE@5KeUn9|I9=GP&{Ct<&^Sxcmk+@3cEjF))39-7OGtE zW{LxL*}(#dI%8<@B=ef5y$25(UUkDVT1X5B0pFw zA!Qn9Qj>#E4^qi_;v>{fDCeSDyNP<#2G_1 zhJ-a0uJzz3@m+BKoqx0{lnlZ*!%5Z^kakE73%}#q3<=YYlwi_6Y5p_OKfdWp(gy~k=T})l}MWh z?89)gb`DK5+5RVS-}lb;Q>k!iF)E>WOOf_OWw<)Lwk_+VWQ8TTiV<8r_+-U~tl*{+ zYQ@%srOPo(23`1v39?#DkIBVv%;>JFnkI5#EF*}Ec*J$!X_@5G`>-67>QItRIsKj< z<#9qf4nbh~CLR<}WitOSmKQu95!>lZiM#-{j4Sq8M9$_klyaT?TV2M`x?|X+UQHi4 zv)z5@$vL&4MadN5XI}6PxCmL$LNpj%P~*vZl|Ct5oYK!Xl-R}c;K2i3rsip+ZZC5=jaMjjSWkmHk+1k@xNp#luduq&vm)rWGOA z!)WJF;jDptacuq(vDx@Me1C|jMXpK<8ES;VXX*c;-ublJM7%@i=DL^WXtk;`JG^tr zUyp<>KK%&+wRmCIVWGiFS||c!)Mgn^8{(dy1NTOdBJJl-)}5$?Mf#W>NB4sDOQaRa z%Bpa4(%}FL)S&Wk=Qf4iczS}44yOShoAZGQ)k1UK3)ki6Zu!#BV*Z_(WiU+-?(xJ) zt^RXl^#_P7Il=V`qq{>R9#!|RA75usId8-~+Qq#|Zp-v~J5|VV zD$H`>pT|R!s_1Sc9PBHT8+XRP`$jdhz^A$h?q=rQK~} z0TI~o*tGGnUg94ut3+{@KGL-gVP(X>(_cYIpz<H=o_fDLI8Y?Vw&)p{sEew34cvDe!VIbU&00+#*0Jh3z;gi^ZPk6~_=)d+7n=Dc^ zmkCB`);nQjxwbY#51Wg})vf22o92#m=LB@zIvXq&RXmqV0~m+bcbAVaOw56Deah<_ zqX~yL0&+GNZ@h6c=q$oA! z2sR2h;=N{-X)W%)BLAPV!^ra&+cQntox#??IgD{*@QK*9l^GWOH}+diicN1{t{Eq+ z>^bV6Mg9#+OOLPKyQQ z5>p$T8gC5}x;9djhL=)bioFzL>FA12g{X!k#Jbv#ry z&dP2}$D2l__{GL&Gq0^(>ox`8njA>BT1LD}`90IDAk7UkHdE7+QP5tH+!cwYXq58x z$o7|X_yO9UZY>@$+f}#q0m1x`E zDPs_Zb}8)a`%q`RDul1s8WN>PSxx<_9K8~V8&?nU;)!u{*b!Vz!ezP_i4glJuj0z# zxkI7U3jBmz#zn$Bj&#BEiOqA{?UvDrB5MObxUI2K<0CyclZ&a3A@>#U!SiK0ILteO z^n=^IKFd~JUF{Dajkcl=7UHev7jLews)iC6Y_e65^@(E4uqSfIsR-ecRp|KUz#A@@ zE&WR*NqWnA1}zgQ)Hfw9k1v>voBk7GGbL#;v(Y$`fPsanVRw+lRbsH`_l3%j+SRKG z-P*IQVwu5$I)k)o#V3m8`AtAhbrGA%OXfJ-7mGeH*i6KjT6K6g*X*=n{wUQJrhsJDsb`o>cYh1i}IG3a{!e~W|V>48(v2zrm(w67} z_&_K|3wS=IjM09Rhj+67pRo&y?*os(3bAUy#*OmTN| z#&#*q!?Or6YMk`mO)Jy_aN2s_^uLsLdtUK6B4RMlK*UcCx%YVtX%kldOLluAKg9b+ zvhxQZcFhDfH^Y*@kxJ>#U)xFH%;Ac4hnr%KR^cZHLdpcf@{zKOgr>S8ct)*aPr3Dc zxLr|}Xa*JQ3AEgGT|Y$s9kDH6$W8)RKNIS z1P#kl9!g5)&o1_-scqF?(EE zw~tQd1IvwDkzu`P~$c^ zO=>MuhXqRgQC?i7r#XvC1S+Yu=-fj$;ZW&X2k7b!*>+hPWJSsBIIN8<(1$qVCg`Kh zZr`;c3DjnmkzgQ?s)_w!W?`g)N2h!K$_(oGKK#d;*3ONLOlKK7!STwAB0@m}-LUfK zy&B;Vg-?%TNUSdGxze}|v~KB-KA1EgIjsUN)L)kXv)DG#3j`}eQ%W7KW;LrK8$RIb0uFuT+skm;02cUI3i-BAcTru$WB zk`ug=yGW=iE1S3!;QsVtgW;BgXxf=WxNMdq6=4~_pc9MwGectS*5*C7P}5E`-MDC= z@u#tVK8X&41j;f-3bjEdQbqjv$ok~kKW<9X(Jh~>){9uQLKe0^p~N?cuH>r;c zHlI&Q^`}KaP&7zYF(}6ryO3i9xO-wWyD=5d-d#CM(Dt*H_LKhhci>( zX}@fhAS_pCUK4oj=J3M$#?b_$)()1o5SGgtyl$15Xi>(JdF?M+yi4j!AW>?0+~|Zx z_K%LdKO#!SJUCo_cQf4l@+?hem1(~1xawef{ab|l_E*%c|F1tGjV7wnO(r_E!Q(Ay z9lK?~4iYf(Q_|B2Gmo9fa7U^OL_Nie(Ne=@ft5f<4R2H5eT?kSJT8iQCU+YgG;IQv zsv5l))_v3Hh18s~;CaKZLvxQ8#-YX$jc^_I7oUBCXyJ{i!yr78@e6Eg#fa~+$mD5U z@*1}{yT;^%btDBT=q)3`ET3L%PZW)PvE(2=N;mGcwL~YpUez?k>e6Qb0@Jn@uZZ!y2wMqI%i0{e1l#?x{WWI;sGrdwm1}R;= z(w)slV7m-^g3m@GNTHao^GH)18P!K<0BIV?D`C_hl z$xvL{S6%M`msFBZxVbCr9c1hEqI9L@e1K*B@lq0Z6;k)h1mV5jchYOe)VB( z5=;HxSp1Qn+fxPEoNuW3ry>e;lrj!H8xelor0_3zwC{d@xW>Ob;J-04R-{&|58?5G zZ8fbc#ROdISdwN+8*sBQ$eVb=VVcL9}BxlYZLZg98a$^zem&Qqy7=j;o% zNig2L4w4cd^DYDaru8(wsuPqUaDUVNC}!B-#`rg(dP-?01S$mis8rS)|j z)xRfvq4v>SZRudrD|D8q^h3X~VOa z(m+kOo-^IGkoAG_|9!8wLfOER@6*_`lNfjjI`HOOm5~PxUuAk$ zZ(n|<7M8BitX$G~O}uJn8$)u78a$pY(cYZg2@al5cOK@!>mr4wqv4czA!Zcr!zE z^}*}k&?_Jw`*G1ZJeEFub*`!s_{W^di&Z6cE>@KgW31;rtI|j`)N!TWHmTNh45@O) zJAH)SZPH;Ppc+`*J68YHYl#iEIh2-d(yITtb7f@YI|V)9Hf7X0Onf@$A@N=2@*ssC zhr6Ih@~|f)_`=8E)kUcZe9CU*d(}y_PEP)SPe%u5i3vuu;%okL`ThI+!%myv`FrwV zULSk*3lU@~F0|z5k;+UGYw?zPHrJXiq0P!wIsPe~SnDE*L8_(=({vDn7S9M=^PrdO z=>PZyWcbBpVjh6oUx!W+Dew(SVGgS#78~j87URcy*xA5=8Hv$}AOJoX!3CncS1jl`FtXY7J&}c~gO}#4>@Ce3QhpPsNY;*M_i!Ka z_>n7~GKAh|-E9&!ihmuit_CH&Vr}Fbb`Cy7Ad}57qgi6}s{oDf#txyVBu8UO8AUR7 zS#+(_s562;CNafbtAaO;ro1o!(!b6#hXJ99q+V`Wq!uR({dkK1kR~ov>m*eDj9BQ= z<7tZ@WQ$CJ1D@}Bu^-3hGaU9hKheSKAzE$mP zP2)L(;Kt3xEZUwdGT{a z3TrNX);Ui_P4`O7Ki)ZtsC*XLSZ$7-D4KJ>pL0*Z=d+Q{r`h}RfKt9E|AwmMt&a^A zuLjOi>0A6LAwW~WDVkigt~O>;Afnbwa7erR-(XW-8Q}6*deLxG*@U~4hRXN-y>6lz zc6EGlyz?7=`U%k<@aJV%u=+n^u`|9UU$>f_aE4t?sy-Zy*DJT_o+vzeXK9PY3uDNW zX%u~{{Ba$>E;{H?PTxY`t~=~odS5+oIMvF_&HcVhgWJ2y|gLs!dWG3&dB#`kNn9m z-yq}~FHa75Sv~^(T^ zlZRjuDo${gz#98a`&i5VD`V=KrR5F^5zy~5Q1ThEef~+v`za0%?qWVx*3&(ES~j+S z_QH7mZND7N9ax;!{p=YY$XGCJuf{WR4^`4HR;}55@0YaF%WJT#-C&%Tp+heSpgh zYo`16B511(%mvC?J?XhfMQk@a`nQ&&6CTep>Ys6G9p8su(|*TAP5;#E^u_~cP9;h>9`2}tGXK=RtnDT~sS*SOSmz4uLCWwK(;E2*$aBSo9-UzBMjm-dLnntfXM zheu5R?#gdQLwP(^$BSgd_C7I9G%1&K1JWT(f$2+&Vyx%LJ+H?|ei;I<5k`|lR?}xr zS1Vs{pQ+M}*^)v{S!0h2euK`vA3}L^K)kAZIJ9rrH1|S}H-eDYNPB@i3e?wq%@;%x z|B0Q`dTj4ryB3mBkCuUT7?(Y+0G=N4POh=-A1^-&gOk(+2MiTMMGQ`xjEb3{) zYe+q&ToPmjYwVS@=jB|cQk3GBm)( z#pnEb^Dl^`gnh`EVdiH5cy0>+!b7i#%`I;$DfI54{l!%7G*%#bJ&_#Ez5k;@g^EX0 z{-#d;ea|}gV}dt)nnZW{_FpY)_<#QKQjQ27-VymfjZ43NhgAQAgaK1vt&KNHq+j;` zKeJRe?^Io<&sO{YlVSq=JszX_cmI1x$CNxew*UaH|EuPe5Y#1xcxnIpy|lb#)xC}f zF#9I=3>+=3iAE1=oC^Iocy#>eyTP|V9Q-!t?KvO*Gh6r@?)j!qev|1%WblV(!AAZ* zKN#;3$?&wYYowp+SEc`Ka$(|wBKKYl8J8~E3zK(pVDVm+{X zoWqH6aJD@;QLj!nFW^YBIfV8pfsUJ(-anc|2~hrb3#=@WHIEYzGfQVc6ahSnb1$F{Fx1qnWFc zbqCvW05Zb<>x)-0D|1CYCr0J--Z!c24r*bg$jJ z53j$*nWzA8mZwYK4-aeESaa`Q^Y{3AY6`QTKXQB^6LLb0F%rY0lF4yw_t59}dFUBa z#QyD*yFApL?MCeyjtV>fGXda^{A5DNgw}2{J6&9%t}d+S z9&zx0Ql2g*h4yc+w6~tbL?^B#CA}H!j@)d%Egw!Vot0gumBNZ|br_-iC$V@3CF&vV z)U(-R>XLJgT0bGg*kG#t@!l^({u%JktA@Kqoqcn(+hoIlB;f`z*WF3pebf+{7?dsI z7(W@DaTlX3Z5HPxJ9bBv@6EqWV%gkZMYTDG8Ozwdp>~U-gKDa?vl^lL*Mt*WPqrtg zcdO|ZXVl->NQsz9I3YlaWt%sm*`hjsvsQQh6$Qq@_nKJkCiS3Zk4+uioG1)Jd11H) zLrf#~%!-)TgIa@!S^O^?2*X|l%1vON9DF|O_4-+5T%1RKo z`Sx+zIzXXhplD4%@Wpc^$%l_#Hq$_U&ZB!{(b3U~VZ-lVQFskOZ2}ohJc3e|fdALj zS;j@xgl$}xkOl#fSW>~IOLS3zhmw?%r9)cDrCAVgB}GX|K@_A@IwY1(>5xWhX#^Cc z-&vmL_r5QmmM`bbnKNhZd#>w$&v<}iNu6-((c_&M2sRO82Gg#(UQ_1$zHY zO{(T0yJZbAbcr;w#F#XtFp7bIVnWiF@65X{{=YH&hzsf8=&OIPNG+zrLP7cWFPQ%C zR<|1WUA?r(n^IOO4@^u>ZUa^5;N(xA*eB}hdxZ~`yJ9#qwR5#%O4eSfT)vKew5*4H z&pQTN7_Dqh5jC7n_}|$%lGMoj)bh_Ve(q$QN3I+>3!CrB?|8x42gW&zKlP%@rc*DD z7T?;kYS3!B1xA`k70vc^1sJ~NL#p%p8n9GfTrGje$j@)T_jdpI@Gu;r>xPz{q9iL! zRafg{H~zPKHRnTf@wa=b`tt;{GHQ0m9CXzsvMa3${JS|J*^#U)EL;j65{p`BpN(mD z_adA71+W;5*=o7WQ5ZE;+wgHXl-EZ@1aU%TJzu9VKWk8L;GjU*r&H@f1J^F3dpr-n zc4-s`dTGy>t1=KMs4xd>?f&hcEFHZ^=E>m`%&u$SVPRSQ${7Zn+E4W;0$K5uvEx(-NIJz zLDpfU3x3z#pO$GrvcAqDpqT0)XW;lL;hn>A&4MW!nyvPk=KZiiKEtvjwwgbKD zG1A>^df-T1>B=mwe2329dT%$Z)BYR2Dua18WBP`X69(*Oaz?7$CGwacZ24byphzL2 zeFLVYA<+&#`Je~`HyMaJyzL?Ow*iV*Yl~h z8}sj9KwYV1&m4A)n$z;_vXtvL9$g*N&DPVpfed0?N>E4ccIY&Bp!s4VJ-k3ksWJa} z&_vAAj9|NB@tf-nc&`-5JEN2W-lZ{$NugzTWq>)t<3lKvKu(<<`L@RS2kX?Ylp@$D zBs)Yyb0RO_@Y2XjL7#{}G%Qj};^-gG&;I-K_Y3Qs%gk?@xby`Ma7e27(*Ma-1#aaZii$EbQ!Q)2?$Zd&{Eqd5sQBDI>P>2Cxq9*)^bU*Q*mAlQz1W+@$NhJ!f?@7 zHYa$F(sKLl%s1}qmw|QribOjH;5xD?W=QxP`}E#i6$z|_cDA!GW-hDt#7Lk;b<)=P zQcFliQ!y`u1K&+pUl}ZZq8laCE94eN#{ri-7)InI3WoGD$x-ntEZsq_%4X{(!IW8n z9JWIO%~Khqkh{NIVeC!nAm=8Z#}GyjVi}mSl1m*E7c0&6KXk+oy@mr1eukI4@Dbbd zW0ViXrkFCtu`W3oW3@Gxu`SzfA7aOD*Ex_@BN*(s>kVbyk-twe=DY013YVz+kbq$b z@tL?*P5ZKpF<};iG_fHkdYY%zRb;1}HvgNug(K6XMQza`WzLnvuFR z5c0uWx^2sgtkQal*q=R(2wG`;4#8!<5QR_<;G}-oKL9B_>Ln+k6C_DgF(vhVh?%~w zpocnIG!kQ$iC-T}r^p~B8G_+w6n)J9CFn$tLZv6wnFt~1B4slIbDt7@WYl-(4hZOJ znCJzyX^ZzC1)Qv}!<~YFG!F@p3A$SE(_;ws*#)uL-;Vy{2iqI)PNw*Fk)r4i$r!U- ze!h;;I~+1xluRI#0s;2pKU^l_f3iMkM6y^WYBYNJg{gkLt6;A1Bnpj(Y}(*2H1zyB zwC;I&hUZE}PjBwqSM4w7mGPi&kq(`74;2BDc!Q63EcUNfbYJOn@<16zRrhl4J-$qj zD?8^UeGA_9e|ovsHOKRXf6w}1U>+yGAiBkaKd5v4GS@-9Qz@>?wT*sn5B%l+WX%VaBtu|(o$#jEc=IEGA6x#3MRFueiV+=N8gNR zPk(2BJNOP9F+k8@&D^JJy6mhLdQsG8e=Xf-bsQcT%&O$1>z66;HIJ)z-IAj=f1|_H zz~_{kUzyil*Y{!n-v+xtc84G#HFi|@eGO>=DF)s*Exd}qDUeL}cV~%ma1=uT8#$|l z$s3y6>jM+{F=w+0HOh&1#4ir8F7r#AN;7`{tlTb)%~|cpe6c_0M`5|o=FtfV=`jk1 z_FDJ#9>5gUY(g(*%KB~wTQXO{r1(tt6E9pS z5v05_uV2HEl59xWvjIqmIYHm$7;%RrR0_zhk2$bKs)y;yrnM>k*u$fKX#U$PcZbWl zo0OLC8O5iEeWO_jpQF8Y29kvLsGVj~>ahwYg1&3`j?DvUc~Ms-W;Nt(4TB7*&^-p_ ziht0e%IvsL$|zdofv-1ttaQs`pRH3dr=KHnlo>vHtZ$gbW;qd`BJQq-GtzEV?sN7j z$DoEgG;32-kGqdV?2bXo$w~z;KO@>1Y?-{~=x1-AhQ)+4{+b$cfwM%Y;2N%bJL}1Z zTV+`OFQ0F`iWXiBtLu9%EnVTXpT)ln)~t@qT23>iadp)`5^X(7r>BE+!t8fK%WVLFDTs^!Ojg zo9kRrGkR$XImMeXDM$X?B#)#mD|b8!?foPi(UL2_^wG6nWuGhDs-*qCt=n*zqV3VOD9G#A zQH~#5w7EuU8i5dsi%>8m7fm(e=vn5Ijv^7Oz6En#2Lla(nPZ*w#Vp0hS-cGE@GDh? z&S7Sb0t}B~$c8u0Ubv+-L0>L5u$q(4NPtqzHcv<8pJ79i(|!zbN4l5?J9?u z8+rMp$G~PbEZm7WmB(loOk`k$+(x#Kl6+N`Zporl84qnJHD6R47Te-ibT#c{EPc;! zQ1Skbu7frM{H!kDUpH}wj!|p;*8c2efV&)0vJe|f(=h_Eanilly~9z7a85Tp{}KDr zV6xlZbJ9OJzNB+jdq{9P0we$XAFTWGjxxf((zaLx8B2LdBH~tn;(W+T*T%1bV~JhF zd(RJ3wM5x8$g5;LgvxWqrNyjs>aPE;8Qw^f>EqxCfr%I1faZxrQ0Ww4Ud7SxJ&flC z?b;8naiab2f-qzdUG=mj5ijktJ}B3L>?WIg6uYA4iGZ01Qm!C|gU=&!lkPUv>%aoK zVAxxOyH^LBo!KJc0&>*YCLy6d(k3}Bat5(FL5aJMyqn1?SWDjp#i{9@6}dIu@AJ7_ zv*M;(H?(M}$G!lAs9y{q6WLD6Oc3Vozekxw#LSAwpis_$^k9|E>Rja%Zv~1NM>C1# zXpfJvm%B1T0%S6zzqGIWVFio}r;tnr*+ntMm0J&$rYg5Gd`~EbGG2(r5d=p4gy)b1 z6|}WJiEoI;vzm`e6M6JNCq_r&3;xdEASMyNZnCy_;`_@3Ybx^RNyfY19-uZku=QZU zzDsZFG@0SYN=pa^H6i4h*~XNhmeL>&$~)1OJeF3P`L#OevNX-K-Z0xB;*d;6e^;(( z=3KL$c7qR$OzClsuE+^GG9S2wMMSRXYsWc zLv6{P4m&g1kq<%u`pUSHuD{b%e+LH5&?7d=X_Q*-Qt`6-Df42yS~v*pm5V{_ouDDu zM`#t3GHI*I-xi@myPHfRs1>MwsZ0H&b*ykGo!qb5jaIy~jbm$iEa+ralVS@AoTbtUvxBDgxdy_x?AJo;{FA6<@ zIWQ8uT{U#RPQ`Kdwn@l9FXaAV*D{csISAQX?oC(43ERtB3*2*j-2w^eP2Lr^9Nn}U z0E%LS-L&8CS+O?ZPA?OyR}kg}3iu>J>C$1D7%Lp~I9t#Cf6yZ>;lf7q@KOc36CDN}=l-#mHdlh2{2!f$|OSLhy)pPicJ+rDwVp3h( zP`G6mSn`qem{WY*1$-GaB3vBRiD8CEZ)u_f%F~{isXyi-2%xq5UyN~6UGcLj>eboq z?ohd-@zKI^0yk-^4?&UjlM6B4_)N`tquWS>+C3ULt?)AwL$hFw-Q#AWl-USnZJ%P# z5X{G}S`I)OWY}Sabdsq_Qo>us3U$>V8=Mz52>DdLO!=T(<07oTztS}zV4PvMG3Ije z`$ZUJ*AZPN_Z#e%axRN@jlitYaa2e0JPjS1uwzwvxxlfZkvSW&K**1*z0!OgJ>|2R zk_VL+#;^SH5BOI$iy}#KYAdQ|l*zLiF)w5kwo=zwn^`<3pUXyDZ4~@e_)d{-w%USe zMc!ZCTn_YTKFv)kMk+Sh=9Xp5WCbn$f+*ysMzP~rqsDy7EhG$vsT1j>50=yX{Avpv z8lpKAxA)sRZZ`}N#>9z0Bz6QWB0kl`11KxDNyE+rlHGq5-C`uZ=t0(GPV{GKW9Q+M zc_C=n%D02~RvC*~AW|tUKK^d?MEL>JZ)%*%N~<-$ookRe>EHxy*c*M^0DJrj%FYy$ z>Hy%`q_r(?ljOdfHQymm)=Fg^gZ6W1$LNj1>c~9JPPR(vhRuqrgB(OrDA}ffEsqpD z1{oV#VWX}F0JkKIq4dB$R%{BNr0(P(+ZnSo1JV(d#_V)zvh$ynC1)lELRT8s#F4c;h+>qjeP@0Z19ouYVZ3ww$Z6%b z%dGdhOz2yJK58o--Mqbm?M*TT)uB<>@LC1V|{8^PU(a#m^ioFZ7;qkEen70R05 zZDS=ZDB;>w=I2Z%Z!IPq725JjG+zI=E)GTEZ>Q$P<*S7;((XHvq}TyHjG#tl-vo>- zDQj zbB)jVgnyG?6aHE6UcElJ&|8!9Vxv;2qwnKwwgFQx0pBN(W=9Xz_}o-7C@&rG#Rp;t z)iAM9rgB`fq2%-mE9kmc!3{LooSgvCE%cpbLwe6VwU=!%mIyrF{P~`THv}841Qx1D zu<9WpUzNDe&pudmdX$d&_{c*Oq%4**F%x@Taf_FzaWD=wwtfQTe8M#5sT{DF9WTL8 zS!KsHr7p#P$B|ixykl{NwNsbn9j5z*=dHfKKQ}3gd(5@oh0!$*#FtxADG8I*B zIwl=GD)YY&WU~dirCaMBnBJ_ua$&I7lU+J<^0Xr$A|bkWg(%5Kv)lcUiBme- zXwd_o0IEsH4u|9ImaN2oFA{)3!Lp`}q=eR}&BE#LjGuojjps`(|O~D|Yo6UW)mOC<*e(sMQ-c-*r?N zziArv-NL1gj3Z8}ps_cY(7gKTa;L9%7cbfbX=Fmbz1f~RG(Ak<5$pU(s{GDGW`$Iq9Q19z(=hNF;<#AMiF{2$VmI>NveBhsI z3JavFLihTMNi`Ppjeqtbb!*GhEzUHpuO*iZXSj}yl|;O%`4DbAp_AMCh*}mI7Sc0VVvW$}ceczFt+~Y>l?Vu=#xe4*$^` zuJUKqudz^yxNJv|9rkZ2X6EU3(=`i&`!DwPLCoEI8$`9>(g1i905vwoavRsWrU@D` zPq}y5Yd5a>i{4`u`iQyOxkgj=KEtnttCY>EKE?mUl_VMcR97l0FsLU}t)8&d{7BUC zYz6=mw~)gtPkNuub6h)kdg3TqsmAi@kwJ5F^T@t69X!x9Q#pU??u$KL>jhvtEw#|x z$&h}&Dkyz^PAuPm1i(%M0)!N)7o(*!7d3gNDcR%Wa`zl(>z0Rdlt|YY2X%Gqr?~}9 zFEaF$r&JQ=5;8aLsU$}jFaK1SRCd`Lc3JGscD(p_*^KKFEz1L=%rzv?fnp`8(#H~? zO1G4TNmKe-5xIK1Awe`;r`^qjGNGb1b^eX5k&J)rz{}Xli{%~PV6kbRKfiTc@%*^+ zW}#t4!p+o&4m@a4m%sB2Ng`sJT`C_#7`rdC{iMd?56`%S++MD3A~@}%H3zA+zNMCL z4aiel^T*S42%vr+YUrU`9+elICC6&lyPgwNY#of!xa`gA9G#!(jxGXay^zIXmhqs; zx7VU&!^6qIYKC$i1tpzwhSr|})!J$dwCaCcUQSjGOhKQRC0S+v%%iLS`FF@2ESGX*9KdCgbP@Y@NTb*<2 z)C)Cwr_UAIiFbP$JGbo9se&3G$+fAtS4$LuNRLwW<%DU=>D z)k-L;EXS(xFcS(#DQQ))My>6~E6XiWab}~X(}pApBB{q_`mJjn{E`7`|H82@FeIew zx03TZ9mM0$h^z8#w&(5d7y|9Bw9;!YyfzgXSj6;Z)QuZ7wmgqo8=(DvwuYy8JOOo| zi^cKSeT%B-hwt6nwryTZhQHVl+5V8Qu8My9hAAyrNwYfY6Q*#cUR5G;%KSExj4uHm|Bt8Yo9HPWDxNCv&mOS6dWnO>^k`Bw3tK4Y~jB&R=;{wAOG;&TKZs@0i2 z2Hu~N5w~7PrAmh8_(G`EG9V=9pgOIsq%^@6LYcDL`SrQu51RO95~wAQLz}s~6sn0& z|NSHNbH9_)$p!#nBlf_?hWXoeXdl6cPXP`8WF{nq!HNoa3gFN@c&V%sbbIl~4<|cY zmuLbbR)d;n3Q%ar!@@*BQ8n1|WyBXsdT1(9`}7UtLCdcfnpgmI zE!+X6Y@h<0xa3qcraSI5HfKq`rgV9eCdv|4E7({pv>dNLc9u|>L74NDan%%!eZ&(T9) z3Ea}t<_RXPELHs^ z;EW!Vg=qza)z~E#(}{V#LiDnEL=j6AZ+$PjR{wb39&5a!a~r?Ju=IJw4*^fCJ-THv zCpsWQcPABxgyK+7=v9ctk)q{DD17*$fc` z>>HW5-)k2JD#pQ4DGuv=&`VqwVFYY8HZuS|qint2nG;$NlDFj5dq2)OLV6pTKtfP1 zwLh-5lswoV6mRvV6--3TYb0t!kxdsR+|To+iOJHhN@FIjlwN}2K3-|GC_g>R@QqMu z>9o?J@A<6Nq+|p#vwQ1z^ytyDE98)CngP$#5~X_*HOJiIZ2cf1l1|zR*jggNo=kbt^0C#XqCZ%Q!id>KNS@cU@&(qyIy$wSNOSa4_qxEuhUYw+EscK&680T7@in;juAzHE<{ zy^(wW4Y2bd9nXa5C0R%F#{Qa;B>M`z3$yC3d$E?^Tu$0Vt%(xLaj(Du#PD$vqaczS z7u~#kU|3bd_-?NFYmDs`skLc6t*My)b>PA7wSy|$Q38onjSQ%!Qv%@wTh}Z?PZs=^ zvJGb7)=)7V_Sl-&R z4cu6JO`ttMr!#v+BplBt1Z2@;{7L+8i1))zQIw1i^yr)t9o9DuheMK;rHik_AbB^a z_Q;CA;^IpB^YMehn_9XKnJG7rUPKH65w^$= z=9ranl2RvV_L7w3N&i2v_X;2u7&BHY!>^GWyP7vr^sF&_=i&$HNm?3KA~KvzcQ z7*-T39j2sh|Bjbyw9t-_6mT*>kmO-VrlegLWe~ng$1lg>6=WquPc|-pro%sVk*uWy z7b*{A@9A1xWZo`Y*<^o8ww6`cGrtqyMUKeRKIw9C;BM*R#SHL=p6iyg)VR=#TUAZEPi3<~>hJ(8dkBr`p9P z`*5z-eU(nJXQ_P5 zh3b#3*iieH>dgDxzMb2TQiKe>!`1L ziMy`N7nSh!^Ep>{LK#I9qnFDo{-A_T8f?UdwR#Wwu8s{HoDd$Z-_M;yw#s=bZq`M_yu_ zsI&glW{yBT!{A5v*7jpKRkpF5F}NGt=b1J=J|FLBS38d|H43D48dyCUjF^!s@0{8{ z{AxvndkBB7?S>O&C;z3N_e{&aqN5fJzy3N&sUoPmje7*Awm{oa+m}6bw*qMeMJQ9x zI(EXnPxeJRLEkhm7KfW05IDwKmqPNUM zyB~vAbp@t=6?-_aoRuw0S5DL5h%Z`&gFXpUf5zVmj-`p6F-ntZ6J)w?dvG>A zp>lEGeN<=SeKfaCX_3Yz(eC`qN>G}e=l|ADYsjj7q}3EGdtW{+GCG<{q&7RMnu<;k z0&RH4_EnODNB60n&S8I^=B@b;rptMsbn})DWi!L#F4TyeC2sKQ95bDNN9^VwD}~#N v3F@Cqu#`M9aX6}Cuwze5;071@%6dU*Z?KQhR|&pz1^g+=tH~9~JbV2=2jvox From 90c1289eaf89a70939e7c81e042e261947c6a850 Mon Sep 17 00:00:00 2001 From: Kartik Chandran Date: Fri, 7 Aug 2020 18:31:59 -0700 Subject: [PATCH 5/8] More edits after community review - Clarification of terminology - Renamed Chassis DB to Global DB - Revised the Global DB configuration structure - Added a failure handling section --- doc/chassis/architecture.md | 132 ++++++++++++++++++------------------ 1 file changed, 65 insertions(+), 67 deletions(-) diff --git a/doc/chassis/architecture.md b/doc/chassis/architecture.md index 6542ba0aeed..b37b70ccbf5 100644 --- a/doc/chassis/architecture.md +++ b/doc/chassis/architecture.md @@ -56,11 +56,11 @@ However, this architecture makes no hard assumptions about operating within a ch | | | | |------|--------------------|--------------------------------| -| FSI | Forwarding SONiC Instance | SONiC instance on a packet forwarding module like a linecard. -| SSI | Supervisor SONiC Instance | SONiC instance on a central supervisor module that controls a cluster of forwarding instances and the interconnection fabric. -| Forwarding Device | A unit of hardware that runs SONiC and is responsible for packet forwarding | | ASIC | Application Specific Integrated Circuit | Refers to the forwarding engine on a device that is responsible for packet forwarding. -| NPU | Network Processing Unit | An alternate term for ASIC often used in SONiC vocabulary +| NPU | Network Processing Unit | An alternate term for ASIC often used in SONiC vocabulary +| Forwarding Module | A unit of hardware that runs one instance of the SONiC OS and is responsible for packet forwarding | +| FSI | Forwarding SONiC Instance | SONiC OS instance on a forwarding module like a linecard. An FSI controls one more ASICs that are present on the forwarding module +| SSI | Supervisor SONiC Instance | SONiC OS instance on a central supervisor module that controls a cluster of forwarding instances and the interconnection fabric. # 1 Requirements @@ -69,10 +69,10 @@ However, this architecture makes no hard assumptions about operating within a ch ## 1.1.1 Distributed Operation -Each forwarding device must run an independent SONiC instance (called the Forwarding SONiC Instance or FSI) which controls the operation of one or more ASICs on the device, including the front panel and internal fabric ports conn ected to the ASICs. +Each forwarding module must run an independent SONiC OS instance (called the Forwarding SONiC Instance or FSI) which controls the operation of one or more ASICs on the module, including the front panel and internal fabric ports connected to the ASICs. -* A Forwarding device must act as a fully functional router that can run routing protocols and other networking services just like single box SONiC devices. -* The system of forwarding devices should be managed by a single central Supervisor SONiC instance (SSI) that also manages the internal fabric that interconnects the forwarding devices. +* A forwarding module must act as a fully functional router that can run routing protocols and other networking services just like single box SONiC devices. +* The system of forwarding modules should be managed by a single central Supervisor SONiC instance (SSI) that also manages the internal fabric that interconnects the forwarding modules. ## 1.1.2 Intra-System Control Plane @@ -89,10 +89,10 @@ Every FSI must have a management interface over which it can reach the superviso * Each SONiC instance must be independently configurable and manageable through standard SONiC management interfaces. * The physical configuration of the entire system is fixed at startup. This includes - * The Hardware SKU that is used for each forwarding device + * The Hardware SKU that is used for each forwarding module * The Physical port organization of the entire system -* Live replacement of forwarding devices or pluggable modules like transceivers must be supported as long as the part being replaced is an identical SKU. +* Live replacement of forwarding modules or pluggable modules like transceivers must be supported as long as the part being replaced is an identical SKU. # 2 Design @@ -110,67 +110,47 @@ Support for VOQ based forwarding in SONiC is dependent on the [SAI VOQ API](http All state of global interest to the entire system is stored in the SSI in a new Redis instance with a database called “Global DB”. This instance is accessible over the internal management network. FSIs connect to this instance in addition to their own local Redis instance to access and act on this global state. - ## 2.3.1 Global DB Organization -The Global DB runs in a new container known as ‘docker-database-global’ as a separate Redis instance. This ensures both that the Global state is isolated from the rest of the databases in the instance and can also be conditionally started only on the SSI. +The Global DB is hosted in a new redis instance called `redis_global`. This new redis instance runs in a new container known as `docker-database-global`. This ensures both that the global state is isolated from the rest of the databases in the instance and can also be conditionally started only on the SSI. + +### 2.3.1.1 Starting redis_global in the SSI + +To detect if the `docker-database-global` container needs to be started, a new configuration file called `globaldb.conf` is introduced at `/usr/share/sonic/device//globaldb.conf`. +The contents of this file will be -Multiple databases can be instantiated inside the Global DB analogous to the existing CONFIG_DB, STATE_DB structure in SONiC Today. However, at this time the expectation is that _all_ static configuration including globally applicable conifguration is stored in the FSI CONFIG_DB and only operational application state that needs to be shared between FSIs is stored in the Global DB instance. Accordingly, there is a single DB within the Global DB instance called "GLOBAL_APP_DB" to clearly mark the difference between this DB and the local APP_DB which is accessed by OrchAgent. +``` +start_global_db=1 +global_db_address= +``` -A new systemd service `config-globaldb` starts the docker-database-global container in the SSI. In the FSI, the config-globaldb service reads the contents of default_config.json and populate /etc/hosts with the IP address for the “redis_chassis.server” host. +Since this is a per-platform file, the IP address to host the redis instance can be platform specific and the platform implementation is expected to provide connectivity to this IP address for all the sonic instances running within the system. +A new systemd service `config-globaldb` starts the docker-database-global container in the SSI by inspecting the contents of the `globaldb.conf` file. -The server name “redis_chassis.server” is used in database_config.json to describe the reachability of the redis_chassis redis instance. +### 2.3.1.2 Connecting to redis_global from FSI +In the FSI, the contents of `/usr/share/sonic/device//globaldb.conf` are -**database_config.json** ``` +global_db_address= +``` + +The `docker-database-global` container does not have to start in the FSI. However, the FSIs do need to connect to the `redis_global` redis instance that is running in the SSI. To achieve this, the `config-globaldb` service in the FSI read the contents of `globaldb.conf` and populate `/etc/hosts` with the IP address for the `redis_global.server` host. The per-ASIC database_config.json includes the redis_global instance information so that orchagent in FSI can connect to the global DB. The server name `redis_global.server` is used here to describe the reachability of the redis_global redis instance. +``` +database_config.json: "redis_global":{ "hostname" : "redis_global.server", "port": 6385, - "unix_socket_path": "/var/run/redis-chassis/redis_global.sock", + "unix_socket_path": "/var/run/redis-global/redis_global.sock", "unix_socket_perm" : 777 } - + "GLOBAL_APP_DB" : { "id" : 8, - "separator": "|", + "separator": ":", "instance" : "redis_global" } ``` - -The following information is present in default_config.json, which is loaded into CONFIG_DB - -``` - "DEVICE_METADATA": { - "localhost": { - “global_db_address" : , - “start_global_db” : “1”, - } - } - -``` - -This indicates to the SSI that the Global DB instance is to be started. - -## 2.3.2 FSI CONFIG_DB Additions - -Two new attributes are added to the DEVICE_METADATA object in Config DB. These are used to convey to an FSI that a Global DB exists in the system. -``` - "DEVICE_METADATA": { - "localhost": { - …. - “global_db_address" : "10.8.1.200", - “connect_to_global_db” : “1”, - …. - } - } -``` - -The `connect_to_global_db` flag is distinct from the `start_global_db` flag to signal which instance owns the DB and which instance is supposted to connect to it. - -### 2.3.4 DB Connectivity - -The platform implementation is responsible for providing IP connectivity to the redis_global.server throughout the chassis. For example, this IP address could be in a 127.1/16 subnet so that the traffic is limited to staying within the system. The exact mechanisms for this IP connectivity is considered implementation specific and outside the scope of this document. - +As described earlier, the platform implementation is responsible for providing IP connectivity to the redis_global.server throughout the system. For example, this IP address could be in a 127.1/16 subnet so that the traffic is limited to staying within the system. The exact mechanisms for this IP connectivity is outside the scope of this document. ## 2.4 Chip Management There are two kinds of chips that are of interest @@ -201,11 +181,13 @@ Please see the SAI VoQ spec for more detailed examples. ### Forwarding SONiC Instance -Each FSI has a globally unique name that represents that SONiC instance. In a modular chassis, the name would conventionally be "Linecard-N", where N is the slot in which the linecard is inserted. +Each FSI has a globally unique name that represents that SONiC OS instance. In a modular chassis, the name would conventionally be "Linecard-N", where N is the slot in which the linecard is inserted. ### ASIC Name -In addition, each ASIC has a globally unique name which would conventionally be "Linecard-N.K", where K is a slot local identifier of the ASIC. +In addition, each ASIC has an ASIC Name. The ASIC Name is no different from that used to identify an ASIC in any multi-chip SONiC device, except that it is globally unique across all forwarding modules in the entire system. When applied to a chassis the name is conventionally chosen as "Linecard-N.K", where K is an ASIC number within the linecard. + +The ASIC Name is used as a qualifier in global database keys to create a system wide unique key. It is also used as an identifier the group of software components that are instantiated to manage each ASIC on the system (containers like syncd, OrchAgent etc.) ## 2.6 Port Management @@ -221,9 +203,9 @@ Every port on the system requires a global representation in addition to its exi ### 2.6.3 Inband Ports -Inband ports are required to provide control plane connectivity between forwarding engines. They are connected to the forwarding device local CPU on one side and the internal fabric on the other. +Inband ports are required to provide control plane connectivity between forwarding engines. They are connected to the forwarding module local CPU on one side and the internal fabric on the other. -Every inband port is assigned a System Port ID just like front panel ports which is known to all the forwarding devices. Thus, every inband port is reachable from every forwarding engine. +Every inband port is assigned a System Port ID just like front panel ports which is known to all the forwarding modules. Thus, every inband port is reachable from every forwarding engine. ### 2.6.4 Fabric Ports @@ -232,6 +214,23 @@ The provisioning and management of Fabric ports is outside the scope of this doc The details regarding the schemas, Orch agent logic changes and flows are described in more specific documents +## 2.7 Failure Scenarios + +## 2.7.1 FSI Failures + +If an FSI fails due to an OS issue or if the hardware is removed from service, then the expected behavior outcome is + +- The Global DB connection is torn down +- Internal control plane connectivity to that LSI is broken which triggers topology recovergence to avoid use of any forwarding paths through that LSI. + +## 2.7.2 Loss of connectivity from working FSI to Global DB + +Loss of connectivity to the Global DB can prevent forwarding state from other FSIs from being propagated. To avoid traffic impact, The FSI must take defensive action to disconnect from the outside world (for example by ceasing protocol sessions) with neighbors to avoid any traffic flows through the FSI. + +## 2.7.3 SSI Device or OS failure + +Failure of the SSI at the very least results in loss of connectivity to the Global DB and the actions described in 2.7.2 take place on all FSIs leading to the entire system being disconnected from the outside world. + # 3 Testing Test coverage for the distributed VoQ architecture is achieved by extending the existing virtual switch based SWSS pytest infrastructure. @@ -246,8 +245,8 @@ More detailed test cases are covered in other HLDs. Dynamic system port support is required to support the following forwarding scenarios -* Addition of a new forwarding device into an existing running system -* Replacing a forwarding device with another device of a different hardware SKU (such as replacing a linecard with a new linecard of a different SKU in a chassis slot). +* Addition of a new forwarding module into an existing running system +* Replacing a forwarding module with another module of a different hardware SKU (such as replacing a linecard with a new linecard of a different SKU in a chassis slot). Both these scenarios can be supported smoothly as long as the global system port numbering scheme is maintained and the modifications to system ports can be performed without impacting the System Port IDs of the running system. @@ -269,19 +268,18 @@ In this mode, the standby supervisor has booted into the OS and is waiting to ta Warm standby can be supported in SWSS as follows - Gracefully handle the loss of connectivity to the SSI and terminate OrchAgent, syncd and all related containers -- Process device configuration and populate standby Chassis DB with static information -- Modify the ChassisDB address in DEVICE_META -- Start all the containers which will now connect to the standby Chassis DB and continue operation. +- Modify the Redis database address that the FSI needs to connect to +- Start all the containers which will now connect to the standby Global DB and continue operation. ### Hot Standby -In the hot standby mode, the standby supervisor has the control plane running in standby mode, such that it can take over with minimal (or no) disruption to forwarding device. +In the hot standby mode, the standby supervisor has the control plane running in standby mode, such that it can take over with minimal (or no) disruption to the forwarding module At a high level, hot standby mode requires -- Starting Chassis DB on standby SSI in standby mode where it mirrors the Chassis DB. -- Live sync of Chassis DB state between active and standby Chassis DB. +- Starting the Global DB on standby SSI in standby mode where it mirrors the active Global DB. +- Live sync of Global DB state between active and standby Global DB. - Graceful handling in OrchAgent of loss of connectivity to SSI and continuing to operate autonomously. -- Reconnecting to Chassis DB when Standby SSI is ready. -- Reconciling relevant Chassis DB state with SAI Asic DB state and modifying SAI state as appropriate to be in sync with Chassis DB. +- Reconnecting to Global DB when Standby SSI is ready. +- Reconciling relevant Global DB state with SAI Asic DB state and modifying SAI state as appropriate to be in sync with Global DB. From fcf7e0c7c0317c26e6764acf2cdad3403c91db30 Mon Sep 17 00:00:00 2001 From: Kartik Chandran Date: Tue, 8 Sep 2020 15:55:06 -0700 Subject: [PATCH 6/8] Moving VOQ arch documents to voq directory instead of chassis as per agreement in SONiC community --- doc/{chassis => voq}/architecture.md | 0 images/{chassis => voq}/architecture.png | Bin 2 files changed, 0 insertions(+), 0 deletions(-) rename doc/{chassis => voq}/architecture.md (100%) rename images/{chassis => voq}/architecture.png (100%) diff --git a/doc/chassis/architecture.md b/doc/voq/architecture.md similarity index 100% rename from doc/chassis/architecture.md rename to doc/voq/architecture.md diff --git a/images/chassis/architecture.png b/images/voq/architecture.png similarity index 100% rename from images/chassis/architecture.png rename to images/voq/architecture.png From 2190c9a5f6ff2b7843d45eed95ebd52fdd5e59e8 Mon Sep 17 00:00:00 2001 From: Kartik Chandran Date: Mon, 21 Sep 2020 18:01:44 -0700 Subject: [PATCH 7/8] Renaming Global DB to chassis db and misc cleanups --- doc/voq/architecture.md | 37 ++++++++++++++++++------------------ images/voq/architecture.png | Bin 56364 -> 56986 bytes 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/doc/voq/architecture.md b/doc/voq/architecture.md index b37b70ccbf5..96299f95ef0 100644 --- a/doc/voq/architecture.md +++ b/doc/voq/architecture.md @@ -1,7 +1,7 @@ # Distributed Forwarding in a Virtual Output Queue (VOQ) Architecture # High Level Design Document -#### Rev 2.0 +#### Rev 2.1 # Table of Contents * [List of Tables](#list-of-tables) @@ -9,16 +9,16 @@ * [Revision](#revision) * [About this Manual](#about-this-manual) * [Scope](#scope) -* [Definitions/Abbreviation](#definitionsabbreviation) * [1 Requirements](#1-requirements) * [2 Design](#2-design) * [3 Testing](#3-testing) +* [4 Future Work](#4-future-work) # List of Tables -* [Table 1: Abbreviations](#definitionsabbreviation) +* [Table 1: Abbreviations](#definitions-and-abbreviations) # List of Figures -* [Figure 1: VoQ Distributed Forwarding Architecture](#41-general-flow) +* [Figure 1: VoQ Distributed Forwarding Architecture](#23-state-sharing) ###### Revision | Rev | Date | Author | Change Description | @@ -27,6 +27,7 @@ | 0.2 | June-22 2020 | Kartik Chandran (Arista Networks) | First set of review comments from public review | | 1.0 | June-26 2020 | Kartik Chandran (Arista Networks) | Final set of review comments from public review | | 2.0 | Aug-5 2020 | Kartik Chandran (Arista Networks) | Revisions after further community review including description of global DB structure, removing sections on system ports, testing and future work to be covered in other documents | +| 2.1 | Sep-17 2020 | Kartik Chandran (Arista Networks) | Rename Global DB to Chassis DB | # About this Manual @@ -52,7 +53,7 @@ The initial target for this work is a VOQ chassis system in which linecards runn However, this architecture makes no hard assumptions about operating within a chassis and can be extended to other form factors with the same VOQ architecture. -# Definitions/Abbreviations +# Definitions and Abbreviations | | | | |------|--------------------|--------------------------------| @@ -106,13 +107,13 @@ Support for VOQ based forwarding in SONiC is dependent on the [SAI VOQ API](http ## 2.3 State Sharing -![](../../images/chassis/architecture.png) +![](../../images/voq/architecture.png) -All state of global interest to the entire system is stored in the SSI in a new Redis instance with a database called “Global DB”. This instance is accessible over the internal management network. FSIs connect to this instance in addition to their own local Redis instance to access and act on this global state. +All state of global interest to the entire system is stored in the SSI in a new Redis instance with a database called "Chassis DB". This instance is accessible over the internal management network. FSIs connect to this instance in addition to their own local Redis instance to access and act on this global state. -## 2.3.1 Global DB Organization +## 2.3.1 Chassis DB Organization -The Global DB is hosted in a new redis instance called `redis_global`. This new redis instance runs in a new container known as `docker-database-global`. This ensures both that the global state is isolated from the rest of the databases in the instance and can also be conditionally started only on the SSI. +The Chassis DB is hosted in a new redis instance called `redis_chassis`. This new redis instance runs in a new container known as `docker-database-chassis`. This ensures both that the global state is isolated from the rest of the databases in the instance and can also be conditionally started only on the SSI. ### 2.3.1.1 Starting redis_global in the SSI @@ -220,16 +221,16 @@ The details regarding the schemas, Orch agent logic changes and flows are descri If an FSI fails due to an OS issue or if the hardware is removed from service, then the expected behavior outcome is -- The Global DB connection is torn down +- The Chassis DB connection is torn down - Internal control plane connectivity to that LSI is broken which triggers topology recovergence to avoid use of any forwarding paths through that LSI. -## 2.7.2 Loss of connectivity from working FSI to Global DB +## 2.7.2 Loss of connectivity from working FSI to Chassis DB -Loss of connectivity to the Global DB can prevent forwarding state from other FSIs from being propagated. To avoid traffic impact, The FSI must take defensive action to disconnect from the outside world (for example by ceasing protocol sessions) with neighbors to avoid any traffic flows through the FSI. +Loss of connectivity to the Chassis DB can prevent forwarding state from other FSIs from being propagated. To avoid traffic impact, The FSI must take defensive action to disconnect from the outside world (for example by ceasing protocol sessions) with neighbors to avoid any traffic flows through the FSI. ## 2.7.3 SSI Device or OS failure -Failure of the SSI at the very least results in loss of connectivity to the Global DB and the actions described in 2.7.2 take place on all FSIs leading to the entire system being disconnected from the outside world. +Failure of the SSI at the very least results in loss of connectivity to the Chassis DB and the actions described in 2.7.2 take place on all FSIs leading to the entire system being disconnected from the outside world. # 3 Testing @@ -269,7 +270,7 @@ Warm standby can be supported in SWSS as follows - Gracefully handle the loss of connectivity to the SSI and terminate OrchAgent, syncd and all related containers - Modify the Redis database address that the FSI needs to connect to -- Start all the containers which will now connect to the standby Global DB and continue operation. +- Start all the containers which will now connect to the standby Chassis DB and continue operation. ### Hot Standby @@ -277,9 +278,9 @@ In the hot standby mode, the standby supervisor has the control plane running in At a high level, hot standby mode requires -- Starting the Global DB on standby SSI in standby mode where it mirrors the active Global DB. -- Live sync of Global DB state between active and standby Global DB. +- Starting the Chassis DB on standby SSI in standby mode where it mirrors the active Chassis DB. +- Live sync of Chassis DB state between active and standby Chassis DB. - Graceful handling in OrchAgent of loss of connectivity to SSI and continuing to operate autonomously. -- Reconnecting to Global DB when Standby SSI is ready. -- Reconciling relevant Global DB state with SAI Asic DB state and modifying SAI state as appropriate to be in sync with Global DB. +- Reconnecting to Chassis DB when Standby SSI is ready. +- Reconciling relevant Chassis DB state with SAI Asic DB state and modifying SAI state as appropriate to be in sync with Chassis DB. diff --git a/images/voq/architecture.png b/images/voq/architecture.png index cdf9b75be51387db11fa60b95e12ec873737163b..45e14de31c618485906de47da700f2f1758d7bc2 100644 GIT binary patch literal 56986 zcmce;^Bi${Cln96ll1g`Xs5l_q(nAi- zJLvO$&-n|^eE4Z%@3q!md&RY`o2aMi%ESb>2mk;eR#j2d0sw3%0ALwF@G$SZ^$KbQ)xp7xjH*WIgq}^I1Jhyjxzyb5 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 literal 56364 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 AV*mgE From e7169072edd19a93130f51817fe82ef7a13d6533 Mon Sep 17 00:00:00 2001 From: Kartik Chandran Date: Sun, 27 Sep 2020 18:11:16 -0700 Subject: [PATCH 8/8] Complete all the renaming of global to chassis --- doc/voq/architecture.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/doc/voq/architecture.md b/doc/voq/architecture.md index 96299f95ef0..38c81c21f95 100644 --- a/doc/voq/architecture.md +++ b/doc/voq/architecture.md @@ -115,43 +115,43 @@ All state of global interest to the entire system is stored in the SSI in a new The Chassis DB is hosted in a new redis instance called `redis_chassis`. This new redis instance runs in a new container known as `docker-database-chassis`. This ensures both that the global state is isolated from the rest of the databases in the instance and can also be conditionally started only on the SSI. -### 2.3.1.1 Starting redis_global in the SSI +### 2.3.1.1 Starting redis_chassis in the SSI -To detect if the `docker-database-global` container needs to be started, a new configuration file called `globaldb.conf` is introduced at `/usr/share/sonic/device//globaldb.conf`. +To detect if the `docker-database-chassis` container needs to be started, a new configuration file called `chassisdb.conf` is introduced at `/usr/share/sonic/device//chassis.conf`. The contents of this file will be ``` -start_global_db=1 -global_db_address= +start_chassis_db=1 +chassis_db_address= ``` Since this is a per-platform file, the IP address to host the redis instance can be platform specific and the platform implementation is expected to provide connectivity to this IP address for all the sonic instances running within the system. -A new systemd service `config-globaldb` starts the docker-database-global container in the SSI by inspecting the contents of the `globaldb.conf` file. +A new systemd service `config-chassisdb` starts the docker-database-chassis container in the SSI by inspecting the contents of the `chassisdb.conf` file. -### 2.3.1.2 Connecting to redis_global from FSI -In the FSI, the contents of `/usr/share/sonic/device//globaldb.conf` are +### 2.3.1.2 Connecting to redis_chassis from FSI +In the FSI, the contents of `/usr/share/sonic/device//chassisdb.conf` are ``` -global_db_address= +chassis_db_address= ``` -The `docker-database-global` container does not have to start in the FSI. However, the FSIs do need to connect to the `redis_global` redis instance that is running in the SSI. To achieve this, the `config-globaldb` service in the FSI read the contents of `globaldb.conf` and populate `/etc/hosts` with the IP address for the `redis_global.server` host. The per-ASIC database_config.json includes the redis_global instance information so that orchagent in FSI can connect to the global DB. The server name `redis_global.server` is used here to describe the reachability of the redis_global redis instance. +The `docker-database-chassis` container does not have to start in the FSI. However, the FSIs do need to connect to the `redis_chassis` redis instance that is running in the SSI. To achieve this, the `config-chassisdb` service in the FSI read the contents of `chassisdb.conf` and populate `/etc/hosts` with the IP address for the `redis_chassis.server` host. The per-ASIC database_config.json includes the redis_chassis instance information so that orchagent in FSI can connect to the chassis DB. The server name `redis_chassis.server` is used here to describe the reachability of the redis_chassis redis instance. ``` database_config.json: - "redis_global":{ - "hostname" : "redis_global.server", + "redis_chassis":{ + "hostname" : "redis_chassis.server", "port": 6385, - "unix_socket_path": "/var/run/redis-global/redis_global.sock", + "unix_socket_path": "/var/run/redis-chassis/redis_chassis.sock", "unix_socket_perm" : 777 } - "GLOBAL_APP_DB" : { + "CHASSIS_APP_DB" : { "id" : 8, "separator": ":", - "instance" : "redis_global" + "instance" : "redis_chassis" } ``` -As described earlier, the platform implementation is responsible for providing IP connectivity to the redis_global.server throughout the system. For example, this IP address could be in a 127.1/16 subnet so that the traffic is limited to staying within the system. The exact mechanisms for this IP connectivity is outside the scope of this document. +As described earlier, the platform implementation is responsible for providing IP connectivity to the redis_chassis.server throughout the system. For example, this IP address could be in a 127.1/16 subnet so that the traffic is limited to staying within the system. The exact mechanisms for this IP connectivity is outside the scope of this document. ## 2.4 Chip Management There are two kinds of chips that are of interest