From ebf4d61336f5411f6ac1048f20ecbaeb150b7456 Mon Sep 17 00:00:00 2001 From: mint570 <70396898+mint570@users.noreply.github.com> Date: Thu, 16 May 2024 13:07:45 -0700 Subject: [PATCH] Initial version of PINS P4Orch HLD (#825) PINS P4Orch HLD * High Level Design document for PINS P4Orch. --- doc/pins/images/p4orch_hld_design.png | Bin 0 -> 18353 bytes .../images/p4orch_hld_manager_interface.png | Bin 0 -> 10984 bytes doc/pins/images/p4orch_hld_managers.png | Bin 0 -> 23324 bytes doc/pins/images/p4orch_hld_overview.png | Bin 0 -> 52099 bytes doc/pins/images/p4orch_hld_sai.png | Bin 0 -> 82060 bytes doc/pins/p4orch_hld.md | 239 ++++++++++++++++++ 6 files changed, 239 insertions(+) create mode 100644 doc/pins/images/p4orch_hld_design.png create mode 100644 doc/pins/images/p4orch_hld_manager_interface.png create mode 100644 doc/pins/images/p4orch_hld_managers.png create mode 100644 doc/pins/images/p4orch_hld_overview.png create mode 100644 doc/pins/images/p4orch_hld_sai.png create mode 100644 doc/pins/p4orch_hld.md diff --git a/doc/pins/images/p4orch_hld_design.png b/doc/pins/images/p4orch_hld_design.png new file mode 100644 index 0000000000000000000000000000000000000000..af66c4fba0320e5be5e0d847fb8b5ee7e391a3b6 GIT binary patch literal 18353 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 literal 0 HcmV?d00001 diff --git a/doc/pins/images/p4orch_hld_manager_interface.png b/doc/pins/images/p4orch_hld_manager_interface.png new file mode 100644 index 0000000000000000000000000000000000000000..a56b3393c1e26ab181d058ff1b24959e1f4db3c7 GIT binary patch literal 10984 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 literal 0 HcmV?d00001 diff --git a/doc/pins/images/p4orch_hld_overview.png b/doc/pins/images/p4orch_hld_overview.png new file mode 100644 index 0000000000000000000000000000000000000000..e5ac681edb7ffe03810ec8bf4580abfdd18e1537 GIT binary patch literal 52099 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ýO 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 U?}S6#9*JqDGbf)jaSHi=0FyVFZvX%Q literal 0 HcmV?d00001 diff --git a/doc/pins/p4orch_hld.md b/doc/pins/p4orch_hld.md new file mode 100644 index 00000000000..33028d1338f --- /dev/null +++ b/doc/pins/p4orch_hld.md @@ -0,0 +1,239 @@ +# P4 Orchagent + +## Table of Content + +* [Table of Content](#table-of-content) +* [Revision](#revision) +* [Scope](#scope) +* [Definitions/Abbreviations](#definitions-abbreviations) +* [Overview](#overview) +* [Requirements](#requirements) + + [Functional Requirements](#functional-requirements) +* [High-Level Design](#high-level-design) + + [P4RT Table](#p4rt-table) + + [P4Orch Managers](#p4orch-managers) + + [Centralized Mapper](#centralized-mapper) + + [KeyGenerator](#keygenerator) + + [P4Orch Interaction With Existing Orchagents](#p4orch-interaction-with-existing-orchagents) + + [P4Orch To Application Response Path](#p4orch-to-application-response-path) +* [SAI API](#sai-api) +* [Configuration and management](#configuration-and-management) +* [Warmboot and Fastboot Design Impact](#warmboot-and-fastboot-design-impact) +* [Restrictions/Limitations](#restrictions-limitations) +* [Testing Requirements/Design](#testing-requirements-design) + + [Unit Test](#unit-test) + + [Pytest](#pytest) +* [Open/Action items - if any](#open-action-items---if-any) + +## Revision + +Rev | Rev Date | Author(s) | Change Description +---- | --------- | ------------------------ | ------------------ +v0.1 | 6/21/2021 | Runming Wu, Stephen Wang | Initial version + +## Scope + +This document describes the high-level design of the p4 orchagent in PINS. Refer to other supplementary documents for further details on particular features such as P4RT table schema and application response path. + +## Definitions/Abbreviations + +**PINS**: P4 Integrated Network Stack (PINS) is a project that provides additional components and changes to SONiC and allows the stack to be remotely controlled using P4 and P4Runtime. + +**P4**: Programming Protocol-independent Packet Processors (P4) is a domain-specific language for network devices, specifying how data plane devices (switches, NICs, routers, filters, etc.) process packets + +**P4RT**: P4Runtime (P4RT) is a control plane specification for controlling the data plane elements of a device defined or described by a P4 program. + +## Overview + +The P4RT application and the p4 orchagent (P4Orch) are the new components that PINS introduces into SONiC to support programming the switch through P4 language. The P4RT server application receives the P4 requests from the P4 client and converts them into APPL_DB P4RT table entries. The P4Orch is a new orchagent which lives inside the OrchAgent process and picks up the entries to make the corresponding SAI API calls to write to ASIC DB. For more information on PINS architecture design, please refer to the [PINS HLD](pins_hld.md) document. + +![drawing](images/p4orch_hld_overview.png) + +This document is focused on the high level design of P4Orch. It behaves similar to other SONiC orchagents in the following ways: + +* It is part of the orchagent process in the swss container. +* It handles its own APPL DB tables: P4RT table. Which is a group of APPL_DB tables with a common prefix. +* It uses sairedis library to invoke SAI API calls. +* It implements the common Orch virtual class and the necessary methods. +* It interacts with other orchs (portsorch, vrforch etc) for dependency information and reference counting. + +However, to support the P4 & SDN requirements, there are some key differences between P4Orch and other SONiC Orchs: + +* P4RT table in APPL DB uses a sub-table schema. Refer to the [P4RT APPL DB Schema](P4RT_App_DB_Schema.md) document for more information. +* Any programming request is meant to be executed synchronously at the time it arrives + * All dependencies should have been satisfied by previous requests. Therefore retry is not required. + * Requires confirmation from the SAI layer that the operation is completed. + * The detailed result of the operation is returned to the application layer (P4RT application). + +## Requirements + +### Functional Requirements + +* Process the request in P4RT tables and write them into ASIC DB. \ +In SDN requirements, the controller must have full knowledge of the programming status in the SDN domain. PINS introduces P4 SDN support in SONiC with clear resource separation from the non-SDN domain: + * A new application: P4RT application. + * A new APPL DB table: P4RT table. + * A new orch in orchagent: P4Orch. + + With resource separation, it clearly defines the ownership of objects created by the SDN controller or the rest of SONiC applications. + +* Return the result of each request to the application. \ +The existing SONiC orchagent does not support application layer response. However, this is a critical requirement in P4 SDN that the response must match the hardware programming status. + +## High-Level Design + +![drawing](images/p4orch_hld_design.png) + +P4Orch is a new Orch class implementation added in the Orchagent process inside the SWSS container to handle the P4RT table entries. + +### P4RT Table + +This is a high level overview of the P4RT table. For more details, please refer to the [P4RT APPL DB Schema](P4RT_App_DB_Schema.md) document. + +The P4RT table defines the P4 programming requests. The current schema is modeled from the below fixed SAI routing pipeline for the 2021-11 release. + +![alt_text](images/p4orch_hld_sai.png "https://github.com/opencomputeproject/SAI/blob/master/doc/object-model/pipeline_object_model.pdf") + +The following are the sub-tables in P4RT table and their corresponding SAI object: + +P4RT sub table | SAI object +------------------------------------ | --------------------------------------- +FIXED_ROUTER_INTERFACE_TABLE | Router Interface +FIXED_NEIGHBOR_TABLE | Neighbor +FIXED_NEXTHOP_TABLE | Next Hop +FIXED_WCMP_GROUP_TABLE | Next Hop Group
Next Hop Group Member +FIXED_IPV4_TABLE
FIXED_IPV6_TABLE | Route + +The ACLs are modeled similarly to the existing AclOrch with a DEFINITION table that defines each ACL table and ACL_*ACL_TABLE_NAME* table to insert ACL rules to the tables. + +### P4Orch Managers + +To handle different sub-table in the P4RT table, the P4Orch is composed of multiple managers. Each P4Orch manager is responsible for handling one type of object. As they need to perform very similar actions, the ObjectManagerInterface virtual class is introduced to abstract the common functionalities. + +![drawing](images/p4orch_hld_manager_interface.png) + +The ObjectManagerInterface has the following methods: + +* enqueue() : Insert the request into a manager's internal queue. +* drain() : Process all the requests in the internal queue. + +During initialization, P4Orch creates a mapping between P4RT sub-tables and the managers. + +The managers have the same dependencies as the modeled SAI pipeline shown above. The following diagram shows the dependencies between the managers. + +![drawing](images/p4orch_hld_managers.png) + +The primary task of P4Orch upon receiving a batch of requests is to identify the object manager responsible for each request and call the manager's enqueue() method. At the end of the P4Orch::doTask() method, P4Orch will call each manager's drain() method in a fixed order to ensure appropriate dependency handling within the P4RT sub-tables. The following are the P4Orch managers planned for the 2021-11 release, ordered by the calling order(more managers might be added in the future): + +* RouterInterfaceManager +* NeighborManager +* NexthopManager +* WcmpManager +* RouteManager +* AclTableManager +* AclRuleManager + +The main request handling logic of each manager is in the drain() method. The general request processing paradigm is described below: + +* Classify operation type into SET or DEL +* Deserialize and validate APPL DB request +* Process deserialized request +* Perform SAI calls via SAI Redis to program request into ASIC DB + +Each manager locally maintains a map of the object information that is created/modified by the P4RT application. The map serves as an internal cache for all the successfully programmed entries. The keys of this map consist of the object ids used by P4RT application to identify the object and the corresponding entries represent the attributes of the object. The local map is used by each manager to take appropriate actions such as translating SET operation to create or modify operation while processing P4RT APPL DB requests. + +### Centralized Mapper + +The purpose of the centralized mapper is to store information that needs to be shared between various managers at a centralized location. This removes the need for managers to implement public methods that other managers can call and provides a consistent interface for sharing information between the managers. Therefore, the information stored by the centralized mapper is homogeneous. It stores the following information about all objects that are created by the P4RT application: + +* P4RT object id +* SAI object id +* Object reference count + +The above information is stored in a map with a key consisting of P4RT object id and entry consisting of SAI object id and object reference count for each object type. + +The centralized mapper is used for the following purposes by the managers: + +* Set/Get/Delete mapping between P4RT object id and SAI object id +* Validate whether a P4RT object id has been created by another manager +* Set/Get/Increment/Decrement reference count of a P4RT object id +* Get number of entries in the map for an object type + +### KeyGenerator + +The KeyGenerator is a common module to generate keys for all managers which are used in the managers’ local map and in the centralized mapper. The following are some example key formats: + +* RouterInterfaceManager: router_interface_id=<id> +* NeighborManager: router_interface_id=<id>,neighbor_id=<id> +* NextHopManager: next_hop_id=<id> +* RouteManager: vrf_id=<id>,ipv4_dst=<id> or vrf_id=<id>,ipv6_dst=<id> + +### P4Orch Interaction With Existing Orchagents + +When a P4Orch manager needs information about the existing SONiC objects, it will interact with the existing orchs. Most existing orchs provide public methods and global pointers for other orchs to access the SONiC objects that they manage. The P4Orch managers interact with other orchs in the following manner: + +* Query SONiC objects information, such as OID, existence etc. +* Increase the reference counting of a SONiC object when it is referenced in a P4RT object. +* Decrease the reference counting of a SONiC object when it is dereferenced from a P4RT object. +* Increase the resource counting in CrmOrch when a SAI object is created. +* Decrease the resource counting in CrmOrch when a SAI object is deleted. + +In the initial release, P4Orch managers will interact with the following SONiC orchs: + +* PortsOrch \ +PortsOrch provides port information and port reference counting. P4Orch managers that require port information will interact with PortsOrch. +* VrfOrch \ +VrfOrch provides VRF information and reference counting. Currently, only RouterInterfaceManager interacts with VrfOrch. +* CrmOrch \ +CrmOrch provides resource management counting information. Several managers interact with CrmOrch for resource counting reference when doing SAI object creation and deletion. + +Currently, public methods provided by P4Orch are limited. Existing SONiC orchs do not have full access to the P4RT objects. + +### P4Orch To Application Response Path + +As P4RT interface requires the response of each programming request to match the real hardware state, synchronous mode between orchagent and syncd are enabled so P4Orch can get the exact SAI API response. And P4Orch implements a notification channel to send the response further up to the P4RT application. For more details, please refer to the [APPL STATE DB & Response Path HLD](appl_state_db_response_path_hld.md) document. + +## SAI API + +N/A + +## Configuration and management + +N/A + +## Warmboot and Fastboot Design Impact + +Warmboot and fastboot support in P4Orch are being planned for the next phase (next SONiC release). In this phase, P4Orch does not support warmboot and fastboot features. There will be no impact on warmboot and fastboot of the existing orchs. + +## Restrictions/Limitations + +The P4Orch is designed to meet the SDN requirements. And hence there are some differences from the other SONiC orchagents: + +* P4Orch requires the dependencies of each request to be satisfied by the previous requests. Any request with unsatisfied dependencies will be rejected. +* The P4RT table entry key is used to uniquely identify a request, the producer (P4RT app) must not modify the same request if the previous add/modify is not completed yet. +* P4Orch does not provide public methods for accessing its internal objects. Other existing orchs cannot refer to the P4RT table objects. + +In the initial phase, warmboot and fastboot are not supported as mentioned previously. In case of warmboot, the behavior of P4Orch will be undefined. + +Restart of the orchagent is also not supported for P4RT tables in the initial phase. When orchagent restarts, the P4RT tables will not be re-programmed. + +## Testing Requirements/Design + +### Unit Test + +A set of unit tests, using Google Test framework, is written to test the P4Orch: + +* The unit tests take advantage of the mock and fake. They do not require DB dependency or other dependencies. They only test the functionalities of each P4Orch manager. +* The unit tests include sanitizer testing: + * AddressSanitizer + * ThreadSanitizer + * UndefinedBehaviorSanitizer +* The unit tests generate LCOV coverage reports. Reaching about 90% code coverage. + +### Pytest + +A set of pytest, using existing SONiC swss pytest framework, is written to test P4Orch at a more integrated level. The pytest runs in the sonic vs docker image that has DB and other sonic components. The pytest will generate requests in APPL DB and verify the entries written into ASIC DB. It also verifies the response channel and APPL STATE DB. + +## Open/Action items - if any + +N/A