<p>Welcome to the ETSI TeraFlowSDN (TFS) Controller wiki!</p>
<p>OpenCAPIF is an open source implementation of the CAPIF Core Function APIs plus the logic and additional services required to fulfill the 3GPP requirements and deliver the expected functionality.</p>
<p>This wiki provides a walkthrough on how to prepare your environment for executing and contributing to the <ahref="https://tfs.etsi.org/">ETSI TeraFlowSDN SDG</a>.
<p>CAPIF is the “Common API Framework” defined by 3GPP to manage the APIs exposed by 3GPP networks in their northbound interfaces.</p>
Besides, it describes how to run some example experiments.</p>
<p>3GPP specifications for CAPIF defines three types of entities:</p>
<p>The new release launched on April 24th, 2024 incorporates a number of new features, improvements, and bug resolutions. Try it by following the guides below, and feel free to give us your feedback.
See the <ahref="https://labs.etsi.org/rep/tfs/controller/-/releases/v3.0.0">Release Notes</a>.</p>
<h1id="requisites">Requisites</h1>
<p>The guides and walkthroughs below make some reasonable assumptions to simplify the deployment of the TFS controller, the execution of experiments and tests, and the development of new contributions.
In particular, we assume:</p>
<ul>
<ul>
<li>API Providers, which are the entities exposing APIs (e.g., NEF)</li>
<li>A physical server or virtual machine for running the TFS controller with the following minimum specifications (check section <ahref="./1.-Deployment-Guide/1.1.-Configure-your-Machine">Configure your Machine</a> for additional details):</li>
<li>API Invokers, which are the entities that consume APIs (e.g., Applications), and</li>
<li>4 cores / vCPUs</li>
<li>the CAPIF Core Function, which manages the relationships between the other two.</li>
<li>8 GB of RAM (10 GB of RAM if you want to develop)</li>
<li>60 GB of disk (100 GB of disk if you want to develop)</li>
<li>1 NIC card</li>
<li><ahref="https://code.visualstudio.com/">VSCode</a> with the <ahref="https://code.visualstudio.com/docs/remote/ssh">Remote SSH</a> extension</li>
<li>Working machine software:</li>
<li><ahref="https://releases.ubuntu.com/22.04/">Ubuntu Server 22.04.4 LTS</a> or <ahref="https://releases.ubuntu.com/20.04/">Ubuntu Server 20.04.6 LTS</a></li>
<li>Onboarding a new API Invoker and offboarding an API Invoker;</li>
<li>Storing policy configurations related to CAPIF and service APIs;</li>
<li>Support for accessing the logs for auditing (e.g., detecting abuse); and</li>
<li>Support for publishing and discovery of service APIs information among CAPIF Core Function (CAPIF interconnection).</li>
</ul>
</ul>
<p>The following diagram shows how API Invokers and API Providers interact with the CAPIF Core Function to Register in CAPIF, Publish APIs, Discover APIs and Consume APIs. It is important to highlight that the CAPIF Core Function is not a classical API Gateway. The API consumption takes place directly between the API Invoker and the API Provider. Therefore, CAPIF does not impact API performance in API consumption between API Invokers and API Providers.</p>
<h1id="tutorials-and-tfs-virtual-machine">Tutorials and TFS Virtual Machine</h1>
<p>This section provides access to the links and all the materials prepared for the tutorials and hackfests involving ETSI TeraFlowSDN.</p>
<p>If you want to know more about OpenCAPIF check <ahref="https://ocf.etsi.org/news/20240110_the_story_behind_opencapif/">The story behind openCAPIF</a></p>
<p>You can check the code at <ahref="https://labs.etsi.org/rep/ocf/capif"title="OpenCAPIF Repository">OpenCAPIF Repository</a></p>
<pre><code>CAPIF_API_Services
└───helm
└───monitoring
└───services
└───tests
└───tools
└───robot
└───open_api_script
</code></pre>
<ul>
<ul>
<li><strong>helm</strong>: This folder contains helm files to deploy capif under k8s environment.</li>
<li><ahref="https://labs.etsi.org/rep/groups/tfs/-/wikis/TFS-HACKFEST-3">TFS Hackfest #3 (Castelldefels, 16-17 October 2023)</a></li>
<li><strong>monitoring</strong>: This folder contains grafana helm files to deploy capif under k8s environment.</li>
<li>
<li><strong>services</strong>: Services developed following CAPIF API specifications. Also, other complementary services (e.g., NGINX and JWTauth services for the authentication of API consuming entities).</li>
<p>The link includes explanatory material on P4 for TeraFlowSDN, the set of guided walkthrough, and the details on the interactive sessions the participants addressed (and recordings), as well as a TFS Virtual Machine (Release 2.1).</p>
<li><strong>tools</strong>: Auxiliary tools. Robot Framework related code and OpenAPI scripts.</li>
</li>
<li><strong>test</strong>: Tests developed using Robot Framework.</li>
<li>
<p><ahref="https://labs.etsi.org/rep/groups/tfs/-/wikis/TFS-HACKFEST-2">TFS Hackfest #2 (Madrid, 20-21 June 2023)</a></p>
</li>
<li>
<p>The link includes explanatory material on gNMI and ContainerLab for TeraFlowSDN, the set of challenges the participants addressed (and recordings), as well as a TFS Virtual Machine (Pre-Release 2.1).</p>
</li>
<li>
<p><ahref="https://labs.etsi.org/rep/groups/tfs/-/wikis/OFC-SC472-2023">OFC SC472 (San Diego, 6 March 2023)</a></p>
</li>
<li>
<p>The link includes a tutorial-style slide deck, as well as a TFS Virtual Machine (Release 2).</p>
</li>
<li>
<p><ahref="https://labs.etsi.org/rep/groups/tfs/-/wikis/TFS-HACKFEST-1">TFS Hackfest #1 (Amsterdam, 20 October 2022)</a></p>
</li>
<li>The link includes a tutorial-style slide deck (and recordings), as well as a TFS Virtual Machine (Pre-Release 2).</li>
<p>This repository has the python-flask Mockup servers created with openapi-generator related with CAPIF APIS defined here:
<p>New versions of TeraFlowSDN are periodically released.
<ahref="https://forge.3gpp.org/rep/all/5G_APIs"title="Open API Descriptions of 3GPP 5G APIs">Open API Descriptions of 3GPP 5G APIs</a></p>
Each release is properly tagged and a branch is kept for its future bug fixing, if needed.</p>
<h1id="how-to-test-capif-apis">How to test CAPIF APIs</h1>
<ul>
<p>The above APIs can be tested either with POSTMAN tool or running the developed tests with Robot Framework.</p>
<li>The branch <em>master</em>, points always to the latest stable version of the TeraFlowSDN controller.</li>
<h1id="test-plan-documentation">Test Plan Documentation</h1>
<li>The branches <em>release/X.Y.Z</em>, point to the code for the different release versions indicated in branch name.</li>
<p>Complete documentation of tests is available here: <ahref="testing/testplan/"title="Test Plan Directory">Test Plan Directory</a></p>
<li>Code in these branches can be considered stable, and no new features are planned.</li>
<h1id="robot-framework">Robot Framework</h1>
<li>In case of bugs, point releases increasing revision number (Z) might be created.</li>
<p>In order to ensure that modifications over CAPIF services still fulfills the required functionality, the Robot Framework Test Suite must be successfully run.</p>
<li>The main development branch is named as <em>develop</em>.</li>
<p>The Robot Test Suite covers the requirements described in the test plan at <ahref="testing/testplan/"title="Test Plan Directory">Test Plan Directory</a> folder.</p>
<li><strong>Use with care! Might not be stable.</strong></li>
<p>Please check the <ahref="testing/robotframework/"title="Testing with Robot Framework">Testing with Robot Framework</a> Section</p>
<li>The latest developments and contributions are added to this branch for testing and validation before reaching a release. </li>
<h1id="using-postman">Using PostMan</h1>
</ul>
<p>You can also test the CAPIF flow using the Postman tool. To do this, we have created a collection with some examples of CAPIF requests with everything necessary to carry them out.</p>
<p>To choose the appropriate branch, follow the steps described in <ahref="/1.-Deployment-Guide/1.3.-Deploy-TeraFlowSDN#checkout-the-appropriate-git-branch">1.3. Deploy TeraFlowSDN > Checkout the Appropriate Git Branch</a></p>
<p>For more information on how to test the APIs with POSTMAN, go to this <ahref="testing/postman/"title="POSTMAN Section">POSTMAN Section</a>.</p>
<h1id="events">Events</h1>
<h1id="important-urls">Important urls:</h1>
<p>Find here after the list of past and future TFS Events:</p>
<h1id="mongo-capifs-db-dashboard">Mongo CAPIF's DB Dashboard</h1>
<ul>
<pre><code>http://localhost:8082/ (if accessed from localhost)