Cloud Native Network Automation
18 | {{< blocks/link-down color="info" >}} 19 | 20 | {{< /blocks/cover >}} 21 | 22 | {{% blocks/lead color="primary" %}} 23 | [Nephio project's](https://nephio.org) mission is "to deliver carrier-grade, simple, open, Kubernetes-based cloud native intent automation and 24 | common automation templates that materially simplify the deployment and management of multi-vendor cloud infrastructure 25 | and network functions across large scale edge deployments." 26 | {{% /blocks/lead %}} 27 | 28 | {{% blocks/section type="row" %}} 29 | 30 | {{% blocks/feature icon="fas fa-rocket" title="R3" %}} 31 | Welcome to the Release 3 of Nephio. This release is under ongoing development together with its documentation. It is 32 | possible to experience some incompleteness ;) 33 | {{% /blocks/feature %}} 34 | 35 | {{% blocks/feature icon="fab fa-wikipedia-w" title="Wiki" %}} 36 | Mass amount of developer information is available in the [wiki](https://wiki.nephio.org/). 37 | {{% /blocks/feature %}} 38 | 39 | {{% blocks/feature icon="fas fa-balance-scale-right" title="Charter" %}} 40 | Technical charter of the project can be found [here](https://github.com/nephio-project/governance/blob/main/nephio-technical-charter-amended-2022-06-22.pdf). 41 | {{% /blocks/feature %}} 42 | 43 | {{% /blocks/section %}} 44 | -------------------------------------------------------------------------------- /content/en/docs/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: About Nephio 3 | linkTitle: Docs 4 | menu: {main: {weight: 20}} 5 | weight: 1 6 | --- 7 | 8 | Our mission is "to deliver carrier-grade, simple, open, Kubernetes-based 9 | cloud-native intent automation and common automation templates that materially 10 | simplify the deployment and management of multivendor cloud infrastructure and 11 | network functions across large-scale edge deployments." But what does that mean? 12 | With this release and the accompanying documentation, we hope to make that 13 | clear. 14 | 15 | Our mission outlines the basic goals. The [About Nephio 16 | page](https://nephio.org/about/) describes the high-level architecture of 17 | Nephio. It is important to understand that Nephio is about managing complex, 18 | interrelated workloads *at scale*. If we simply want to deploy a network 19 | function, then existing methods, such as Helm charts and scripts, are 20 | sufficient. Similarly, if we want to deploy some infrastructure, then using 21 | existing Infrastructure-as-Code tools can accomplish that. Configuring running 22 | network functions can already be done today with element managers. 23 | 24 | Why do we need Nephio? The problems Nephio aims to solve start only 25 | once we try to operate at scale. "Scale", in this case, does not simply mean 26 | "a large number of sites". "Scale" can encompass many different areas: the 27 | number of sites, services, and workloads, the size of each individual workload, 28 | the number of machines needed to operate the workloads, the complexity of the 29 | organization running the workloads, and other factors. The fact that our 30 | infrastructure, workloads, and workload configurations are all interconnected 31 | greatly increases the difficulty in managing these architectures at scale. 32 | 33 | To address these challenges, Nephio follows a [few basic 34 | principles](https://cloud.google.com/blog/topics/telecommunications/network-automation-csps-linus-nephio-cloud-native) 35 | that experience has shown to enable higher scaling with fewer management 36 | overheads. These principles are as follows: 37 | - It is *Intent-driven* to enable the user to specify what they want and 38 | let the system figure out how to make that happen. 39 | - It has *Distributed actuation* to increase reliability across widely 40 | distributed fleets. 41 | - It has *Uniformity in systems* to reduce redundant tooling and processes, 42 | and simplify operations. 43 | 44 | Nephio also leverages the "configuration as data" principle. This 45 | methodology means that the "intent" is captured in a machine-manageable format 46 | that we can treat as data, rather than code. In Nephio, we use the Kubernetes 47 | Resource Model (KRM) to capture the intent. As Kubernetes itself is already an 48 | intent-driven system, this model is well suited to our needs. 49 | 50 | To understand why we need to treat configuration as data, let us consider an 51 | example. In a given instance, a network function may have, for example, 100 52 | parameters that need to be decided upon. 100 such network functions, across 53 | 10,000 clusters, results in 100,000,000 inputs that need to be defined and 54 | managed. Handling such a large number of values, with their interdependencies 55 | and a need for consistency management between them, requires *data management* 56 | techniques, rather than *code* management techniques. This is why existing 57 | methodologies begin to break down at scale, particular at the edge-level scale. 58 | 59 | It should also be considered that no individual human will be able to understand 60 | all of these values. These values relate not only to the workloads, but also to 61 | the infrastructure that is required to support the workloads. They require 62 | different areas of expertise and different organizational boundaries of control. 63 | For example, you will need input from network planning (IP address, VLAN tags, 64 | ASNs, and so on), input from the compute infrastructure teams (types of hardware, 65 | or available VMs or OSs), the Kubernetes platform teams, the security teams, the 66 | network function experts, and many other individuals and teams. Each of these 67 | teams will have their own systems for tracking the values they control, as well 68 | as processes for allocating and distributing those values. This coordination 69 | between teams is a fundamental *organizational* problem with operating at scale. 70 | The existing tools and methods do not even attempt to address these parts of the 71 | problem. They *start* once all of the "input" decisions are made. 72 | 73 | The Nephio project believes that the organizational challenge of figuring out 74 | these values is one of the primary limiting factors to achieving the efficient 75 | management of large, complex systems at scale. This challenge becomes even 76 | greater when we understand the need to manage the changes to these values over 77 | time, and how changes to some values implies the need to change other values. 78 | This challenge is currently left to ad-hoc processes that differ across 79 | organizations. Nephio is working on how to structure the intent to make it 80 | manageable using data management techniques. 81 | 82 | This Nephio release focuses on the following: 83 | - Demonstrating the core Nephio principles, such as Configuration-as-Data and 84 | leveraging the intent-driven, active-reconciliation nature of Kubernetes. 85 | - Infrastructure orchestration/automation using controllers based on 86 | the Cluster API. Currently, only Kubernetes in Docker (KIND) cluster creation 87 | is supported. 88 | - Orchestration/automation of the deployment and management of 5G Core and RAN 89 | networks. 90 | 91 | While the current release uses Cluster API, KIND, and free5gc/OAI for 92 | demonstration purposes, the same principles and code can be used for managing 93 | other infrastructure and network functions. The *uniformity in systems* 94 | principle means that as long as something is manageable via the Kubernetes 95 | Resource Model, it is manageable via Nephio. 96 | 97 | -------------------------------------------------------------------------------- /content/en/docs/apis/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Models and APIs" 3 | type: docs 4 | weight: 5 5 | description: Reference for the Nephio models and APIs 6 | --- 7 | 8 | ## Overview 9 | 10 | Nephio APIs consist primarily of a collection of Go API objects, CRDs, and other KRM types, 11 | specified and maintained in the [Nephio API repository](https://github.com/nephio-project/api). 12 | This section aims to give a high-level overview of the objects that are available and their 13 | relationships, and is based on an 14 | [original document](https://docs.google.com/document/d/1-5nlpY4FbuhWtdKTvIqPOv4bWmA6zx6TdHoEfk9Jc_Q/edit) 15 | developed by Tal Liron. 16 | 17 | The aim is to keep the diagrams as simple as possible for now and only convey the important aspects 18 | of the modeled entities. 19 | As such, they are intended to give a high-level overview of the entities and relationships that can 20 | be accessed and modified via the Nephio API, and provide reference to detailed documentation, 21 | generated from the code, where available. 22 | 23 | ## Topology and network APIs 24 | 25 | This is a high-level overview of the Nephio models and their relationships, with links to the 26 | relevant API documentation where available, and to the source code where not. 27 | 28 | ```mermaid 29 | flowchart TD 30 | %% Topology constructs 31 | NFTopology-- 1 .. n -->NFInstance 32 | NFInstance -. refers .-> NFTemplate 33 | NFTemplate -- 1..n --> NFInterface 34 | NFInterface -. "refers (by name)" .-> NetworkInstance 35 | NFTemplate-.refers..->Capacity 36 | NFTemplate -. "refers (by name)" .-> NFClass 37 | NFClass -. refers .-> PackageRevisionReference 38 | style NFTopology fill:#00CC00 39 | click NFTopology "https://doc.crds.dev/github.com/nephio-project/api/topology.nephio.org/NFTopology/v1alpha1@v2.0.0" "NFTopology" 40 | style NFInstance fill:#00CC00 41 | click NFInstance "https://github.com/nephio-project/api/blob/main/nf_topology/v1alpha1/nf_topology_types.go#L59" "NFInstance" 42 | style NFTemplate fill:#00CC00 43 | click NFTemplate "https://github.com/nephio-project/api/blob/main/nf_topology/v1alpha1/nf_topology_types.go#L45" "NFTemplate" 44 | style NFInterface fill:#00CC00 45 | click NFInterface "https://github.com/nephio-project/api/blob/main/nf_topology/v1alpha1/nf_topology_types.go#L35" "NFInterface" 46 | style Capacity fill:#00CC00 47 | click Capacity "https://doc.crds.dev/github.com/nephio-project/api/req.nephio.org/Capacity/v1alpha1@v2.0.0" "Capacity" 48 | style NFClass fill:#00CC00 49 | click NFClass "https://doc.crds.dev/github.com/nephio-project/api/req.nephio.org/NFClass/v1alpha1@v2.0.0" "NFClass" 50 | style PackageRevisionReference fill:#00CC00 51 | click PackageRevisionReference "https://github.com/nephio-project/api/blob/main/nf_topology/v1alpha1/nf_class_types.go#L25" "PackageRevisionReference" 52 | 53 | %% Workload constructs 54 | 55 | DataNetwork -- 1..n --> Pool 56 | DataNetwork -. refers .-> NetworkInstance 57 | NFDeployment -. refers .-> Provider 58 | NFDeployment -. refers .-> Capacity 59 | NFDeployment -- 1..n --> InterfaceConfig 60 | NFDeployment -- 1..n --> NetworkInstance 61 | NFDeployment -. refers .-> ParametersRefs 62 | style DataNetwork fill:#CCCCFF 63 | click DataNetwork "https://doc.crds.dev/github.com/nephio-project/api/req.nephio.org/DataNetwork/v1alpha1@v2.0.0" "DataNetwork" 64 | style NetworkInstance fill:#CCCCFF 65 | click NetworkInstance "https://doc.crds.dev/github.com/nephio-project/api/req.nephio.org/NetworkInstance/v1alpha1@v2.0.0" "NetworkInstance" 66 | style Pool fill:#CCCCFF 67 | click Pool "https://github.com/nephio-project/api/blob/main/workload/v1alpha1/nf_deployment_types.go#L165" "Pool" 68 | 69 | ``` 70 | 71 | A detailed API description can be found [here](topology-and-networking/). 72 | 73 | ## Porch 74 | 75 | A detailed API description of Porch can be found [here](porch/). -------------------------------------------------------------------------------- /content/en/docs/apis/porch/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Package Orchestration API Specifications" 3 | type: docs 4 | weight: 5 5 | description: Reference for the Nephio Porch APIs 6 | --- 7 | {{< iframe src="https://doc.crds.dev/github.com/nephio-project/porch@v4.0.0" sub="https://doc.crds.dev/github.com/nephio-project/porch@v4.0.0">}} 8 | -------------------------------------------------------------------------------- /content/en/docs/apis/topology-and-networking/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Topology and Networking API Specifications" 3 | type: docs 4 | weight: 5 5 | description: Reference for the Nephio Topology and Networking APIs 6 | --- 7 | {{< iframe src="https://doc.crds.dev/github.com/nephio-project/api@v4.0.0" sub="https://doc.crds.dev/github.com/nephio-project/api@v4.0.0">}} -------------------------------------------------------------------------------- /content/en/docs/architecture.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Nephio Architecture" 3 | type: docs 4 | weight: 5 5 | description: Reference for the Nephio Architecture 6 | --- 7 | 8 | Some experiments on working with [C4 model](https://c4model.com/) to document Nephio. 9 | 10 | ## Prerequisites 11 | 1. [Graphviz](https://graphviz.org/download/) is required to render some of the diagrams in this document. 12 | 13 | ## System Context View 14 | 15 | 16 |  17 | 18 | The system context view gives a high level perspective of the Nephio software system and the external entities that it interacts with. There are no deployment considerations in this view - the main purpose of the picture is to depict what is the responsibility and scope of Nephio, and the key interfaces and capabilities it exposes to deliver on that responsibility. 19 | 20 | ## System Landscape View 21 | 22 |  23 | 24 | Nephio is an amalgamation of software systems, so a system landscape provides a high-level view of how those software systems operate together. 25 | 26 | ## Component Views 27 | 28 | ### Nephio Core 29 | 30 |  31 | 32 | Nephio core is a collection of operators and functions that perform the fundamental aspects of Nephio use cases, independent of the specifics of vendor implementations. 33 | 34 | The controllers for OAI and Free5GC are represented here. Although they are vendor extensions to Nephio, they are for now part of the Nephio system. 35 | 36 | 37 | ### Porch 38 | 39 |  40 | -------------------------------------------------------------------------------- /content/en/docs/guides/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Guides 3 | description: A collection of Nephio guides. 4 | weight: 2 5 | --- 6 | 7 | 8 | The Nephio documentation provides a comprehensive collection of step-by-step guides. These guides 9 | are complete worked examples made up of multiple tasks that guide the user through a relatively 10 | simple but realistic scenario: building an application that uses some of your project’s features, 11 | for example. If you have already created some examples for your project, you can base tutorials on 12 | them. This section is optional. However, remember that, although you may not need this section at 13 | first, having tutorials can be useful to help your users engage with your example code, especially 14 | if there are aspects that need more explanation than you can easily provide in code comments. 15 | 16 | The Guides fall into three categories: install guides, user guides, and contributor guides. -------------------------------------------------------------------------------- /content/en/docs/guides/contributor-guides/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Nephio contributor guides 3 | description: > 4 | Nephio contributor guides 5 | weight: 3 6 | --- 7 | 8 | This developer guide is for people who want to write code for the Nephio project. This document is written as an extension of the [Kubernetes Developer Guides](https://github.com/kubernetes/community/tree/master/contributors/devel#the-process-of-developing-and-contributing-code-to-the-kubernetes-project) 9 | and therefore covers topics specific to Nephio development that are not already covered there. 10 | -------------------------------------------------------------------------------- /content/en/docs/guides/contributor-guides/documentation.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Documentation 3 | description: > 4 | Contributors guide for the Nephio documentation 5 | weight: 5 6 | --- 7 | 8 | ## Framework 9 | 10 | The Nephio documentation is built with the .md / Hugo / Docsy / Netlify framework. 11 | 12 | * **.md:** The documentation itself is written in Markdown (,md) with some Hugo and Docsy related extensions. The .md 13 | files are stored and managed in a Git repository in [nephio-project/docs](https://github.com/nephio-project/docs). 14 | * **Hugo:** [Hugo](https://gohugo.io/) is used to render the documentation fo static html pages. 15 | * **Docsy:** [Docsy](https://www.docsy.dev/) is a theme for Hugo what we use to provide the basic structure and look 16 | and feel of the documentation. 17 | * **Netlify:** [Netlify](https://www.netlify.com/) is a service to host documentation. We are hosting the Nephio 18 | documentation from here. 19 | 20 | ## Creating issues 21 | 22 | Documentation issues are handled in the nephio-project/nephio repository's [issue handler](https://github.com/nephio-project/nephio/issues). 23 | Add the *area/docs* and the *documentation* labels to the issues created for the documentation. 24 | 25 | ## Style guide 26 | 27 | * Use US English in the documentation 28 | * Do not add manually a table of contents to the documents. Hugo and Docsy takes care of this. 29 | * Do not use H1 (#) headers in the documents. Docsy generates a H1 header to every document consistent with the title 30 | of the document. Start the headings with H2 (##) 31 | * Use the built in alerts for notes and alerts 32 | 33 | ```go-html-template 34 | {{%/* alert title="Warning" color="primary" */%}} 35 | This is a note. 36 | {{%/* /alert */%}} 37 | ``` 38 | 39 | ```go-html-template 40 | {{%/* alert title="Warning" color="warning" */%}} 41 | This is a warning. 42 | {{%/* /alert */%}} 43 | ``` 44 | * Colors to be used when creating figures are [here](https://color.adobe.com/Nephio-secondary-colors-color-theme-0bbcdea2-0533-4ab3-812f-f752f30b5b40/) 45 | * If you add any commands to the content inline surround the comand with backticks (\` \`), like \`ls -la\` 46 | * Do not surround IP addresses, domain names or any other identifyers with backticks. Use italics (\* \*) to mark any 47 | inline IP address, domain name, file name, file location or similar. 48 | * Whenever possible define the type of code for your code blocks 49 | * \```bash for all shell blocks 50 | * \```golang for all Go blocks 51 | * \```yaml for all YAML blocks 52 | * \``` yang for all YANG blocks 53 | * a full list of language identifyers is available [here](https://gohugo.io/content-management/syntax-highlighting/#list-of-chroma-highlighting-languages) 54 | * Do not add any TBDs to the documentation. If something is missing create an [issue](https://github.com/nephio-project/nephio/issues) for it 55 | 56 | ## How to contribute 57 | 58 | Follow the Nephio contribution process, based on GitHub pull requests and Prow. Contributions to the Nephio 59 | documentation require the [Nephio CLA](https://docs.linuxfoundation.org/lfx/easycla/v2-current/contributors/corporate-contributor#github). 60 | 61 | ### Build your environment 62 | 63 | Following the description [here](https://github.com/nephio-project/docs?tab=readme-ov-file#setting-up-the-environment). 64 | 65 | ### Tests before submitting a pull request 66 | 67 | * Build and deploy the documentation locally 68 | * run `hugo serve` 69 | * Build in a same way as Netlify is doing it 70 | * run `hugo --gc --minify` 71 | * Check links 72 | * Install and run [linkspector](https://github.com/UmbrellaDocs/linkspector) 73 | ```bash 74 | npm install -g @umbrelladocs/linkspector 75 | linkinspector check -c .linkspector.yml 76 | ``` 77 | 78 | ### Checks before submitting a pr 79 | 80 | ## FAQ 81 | 82 | 1. How do I check the documentation links on the documentation before I check in my changes? 83 | 84 | Install and run *linkspector* 85 | ``` 86 | npm install -g @umbrelladocs/linkspector 87 | linkinspector check -c .linkspector.yml 88 | ``` 89 | -------------------------------------------------------------------------------- /content/en/docs/guides/contributor-guides/minimal-environment.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Minimal Environment install for development 3 | description: > 4 | How to set up a minimal environment for development in the Nephio project. 5 | weight: 5 6 | --- 7 | 8 | The following environment install works on a MacBook Pro M1 or via SSH to Ubuntu 22.04 to get the nephio-operators 9 | running in VS Code talking to a local kind cluster running in Docker. Note that depending on what part of Nephio you are 10 | working on, you may wish to install less or more of the components below. It should work on other environments with 11 | appropriate tweaking. 12 | 13 | ## Install Docker, kind, and kpt packages 14 | 15 | This script automates steps 3 to 9 below. 16 | 17 | ```bash 18 | #!/usr/bin/env bash 19 | 20 | cat <