├── .gitignore ├── 404.html ├── LICENSE ├── OpenNESS_Logo.ai ├── README.md ├── _data └── navbars │ ├── applications-onboarding.yml │ ├── building-blocks.yml │ ├── cloud-adapters.yml │ ├── devkits.yml │ ├── edge-applications.yml │ ├── getting-started.yml │ ├── introduction.yml │ ├── reference-architectures.yml │ └── release-history.yml ├── _includes ├── breadcrumbs.html ├── footer.html ├── header.html ├── metainfo.html ├── reading-time.html └── sideNavigation.html ├── _layouts ├── pdf.html ├── smartedge-open.html └── smartedge-open_pdf.html ├── _plugins ├── breadcrumbs.rb └── drops │ └── breadcrumb_item.rb ├── css ├── custom.css └── instantsearch.min.css ├── doc ├── applications-onboard │ ├── cups-howto-images │ │ ├── edit.png │ │ ├── first_access.png │ │ ├── userplane5.png │ │ ├── userplane5_update.png │ │ ├── userplane5_update_thenlist.png │ │ ├── userplane_create.png │ │ ├── userplane_create_thenlist.png │ │ ├── userplane_delete.png │ │ ├── userplane_delete_thenlist.png │ │ └── wireshark_example.png │ ├── dns-images │ │ ├── DNS.png │ │ └── dns1.png │ ├── eaa-images │ │ ├── eaa-comp.png │ │ ├── eaa_notifications.svg │ │ ├── eaa_services.svg │ │ └── eaa_subscriptions.svg │ ├── index.html │ ├── network-edge-app-onboarding-images │ │ └── ovc-smartcity-setup.png │ ├── network-edge-applications-onboarding.md │ ├── smartedge-open-certsigner.md │ ├── smartedge-open-eaa.md │ ├── smartedge-open-edgedns.md │ ├── smartedge-open-interface-service.md │ ├── smartedge-open-network-edge-vm-support.md │ ├── using-smartedge-open-cnca-images │ │ ├── af_pfd_transaction_home.png │ │ ├── af_subscription_create.png │ │ ├── af_subscription_create_part1.png │ │ ├── af_subscription_create_part2.png │ │ ├── af_subscription_create_part3.png │ │ ├── af_subscription_delete.png │ │ ├── af_subscription_display.png │ │ ├── af_subscription_display_home.png │ │ ├── af_subscription_edit.png │ │ ├── af_subscription_patch.png │ │ ├── ngc_af_service_config_log.png │ │ ├── ngc_homepage.png │ │ ├── ngc_pods_list_output.png │ │ ├── ngc_services_list_output.png │ │ ├── oam_services_create.png │ │ ├── oam_services_delete.png │ │ ├── oam_services_display.png │ │ ├── oam_services_edit.png │ │ ├── oam_services_home.png │ │ ├── pfd_transaction_create.png │ │ ├── pfd_transaction_delete.png │ │ ├── pfd_transaction_delete_appID.png │ │ ├── pfd_transaction_display.png │ │ ├── pfd_transaction_edit.png │ │ └── pfd_transaction_edit_appID.png │ └── using-smartedge-open-cnca.md ├── applications │ ├── app-guide │ │ ├── smartedge-open_apps.png │ │ ├── smartedge-open_cloudadapter.png │ │ └── smartedge-open_openvinoexecflow.png │ ├── index.html │ ├── ovc-images │ │ ├── data-centric-design.png │ │ ├── ovc-pipeline.png │ │ ├── ovc-vm.png │ │ ├── scope.png │ │ ├── screenshot.gif │ │ ├── smart-city-app.png │ │ └── smart-city-architecture.png │ ├── service-mesh-images │ │ ├── bookinfo-landing-page.png │ │ ├── grafana-istio.png │ │ ├── grafana-telemetry-rule.png │ │ ├── kiali-book-info.png │ │ ├── kiali-canary-deployment.png │ │ ├── kiali-login.png │ │ ├── prometheus-istio.png │ │ └── video-analytics-service-mesh.png │ ├── smartedge-open_appguide.md │ ├── smartedge-open_openvino.md │ ├── smartedge-open_ovc.md │ ├── smartedge-open_service_mesh.md │ ├── smartedge-open_va_services.md │ └── va-service-images │ │ ├── va-services-deployment.png │ │ └── va-services-flow.png ├── arch-images │ ├── customers.png │ ├── locations.png │ ├── modular.png │ ├── multi-location-edge.png │ ├── resource.png │ ├── smartedge-open-arc.png │ ├── smartedge-open-emco.png │ ├── smartedge-open-flexran.png │ ├── smartedge-open-ovc.png │ ├── smartedge-open_overview.png │ └── start.png ├── architecture.md ├── building-blocks │ ├── dataplane │ │ ├── iap-images │ │ │ ├── iap1.png │ │ │ ├── iap2.png │ │ │ └── iap3.png │ │ ├── index.html │ │ ├── nts-images │ │ │ ├── nts1.png │ │ │ └── nts2.png │ │ ├── ovn_images │ │ │ ├── ovncni_cluster.png │ │ │ ├── smartedge-open_ovn.png │ │ │ └── smartedge-open_ovnovs.png │ │ ├── smartedge-open-interapp.md │ │ ├── smartedge-open-ovn.md │ │ └── smartedge-open-userspace-cni.md │ ├── emco │ │ ├── index.html │ │ ├── smartedge-open-emco-images │ │ │ ├── emco-dig-create.png │ │ │ ├── emco-dig-instantiate.png │ │ │ ├── emco-geo-distributed.png │ │ │ ├── emco-istio-arch.png │ │ │ ├── emco-istio-auth.png │ │ │ ├── emco-register-controllers.png │ │ │ ├── emco-status-monitoring.png │ │ │ ├── smartedge-open-emco-arch.png │ │ │ ├── smartedge-open-emco-lccl.png │ │ │ ├── smartedge-open-emco-smtc.png │ │ │ ├── smartedge-open-emco-smtcui.png │ │ │ └── smartedge-open-emco-topology.png │ │ └── smartedge-open-emco.md │ ├── enhanced-platform-awareness │ │ ├── acc100-images │ │ │ ├── acc100-diagram.png │ │ │ └── acc100-k8s.png │ │ ├── biosfw-images │ │ │ └── smartedge-open_biosfw.png │ │ ├── cmk-images │ │ │ ├── cmk1.png │ │ │ └── cmk2.png │ │ ├── fpga-images │ │ │ ├── smartedge-open-fpga1.png │ │ │ ├── smartedge-open-fpga2.png │ │ │ ├── smartedge-open-fpga3.png │ │ │ └── smartedge-open-fpga4.png │ │ ├── hddl-images │ │ │ ├── hddlservice.png │ │ │ ├── smartedge-open_HDDL.png │ │ │ └── smartedge-open_dynamic.png │ │ ├── index.html │ │ ├── multussriov-images │ │ │ ├── multus-pod-image.svg │ │ │ ├── sriov-cni.png │ │ │ └── sriov-dp.png │ │ ├── nfd-images │ │ │ ├── nfd0.png │ │ │ ├── nfd1.png │ │ │ └── nfd2.png │ │ ├── smartedge-open-acc100.md │ │ ├── smartedge-open-bios.md │ │ ├── smartedge-open-dedicated-core-cmk-deprecated.md │ │ ├── smartedge-open-dedicated-core.md │ │ ├── smartedge-open-fpga.md │ │ ├── smartedge-open-hugepage.md │ │ ├── smartedge-open-node-feature-discovery.md │ │ ├── smartedge-open-qat.md │ │ ├── smartedge-open-rmd.md │ │ ├── smartedge-open-sriov-multiple-interfaces.md │ │ ├── smartedge-open-telemetry.md │ │ ├── smartedge-open-topology-manager.md │ │ ├── smartedge-open-vcac-a.md │ │ ├── smartedge-open_hddl.md │ │ ├── telemetry-images │ │ │ ├── architecture.svg │ │ │ ├── cadvisor_metric.png │ │ │ ├── collectd_metric.png │ │ │ ├── grafana-add-panel.png │ │ │ ├── grafana-dash-setting.png │ │ │ ├── grafana-new-dash.png │ │ │ ├── grafana-panel-settings.png │ │ │ ├── grafana-panel.png │ │ │ ├── grafana-pcm-dashboard.png │ │ │ ├── grafana-save-dash.png │ │ │ ├── grafana-save.png │ │ │ ├── grafana-settings.png │ │ │ ├── grafana_login.png │ │ │ ├── node_exporter_metric.png │ │ │ ├── pcm-metrics.png │ │ │ ├── pcm-stats.png │ │ │ ├── prometheus_graph.png │ │ │ ├── prometheus_metrics.png │ │ │ └── prometheus_targets.png │ │ ├── tm-images │ │ │ ├── tm1.png │ │ │ └── tm2.png │ │ └── vcaca-images │ │ │ ├── smart-city-app-vcac-a.png │ │ │ ├── using-vcac-a-telemetry.png │ │ │ └── vcac-a-vpu-metrics.png │ └── index.html ├── cloud-adapters │ ├── awsgg-images │ │ ├── smartedge-open_cloudadapter.png │ │ └── smartedge-open_overview.png │ ├── baidu-cloudadapter-images │ │ ├── smartedge-open_baiduedge_end2end_demosetup.png │ │ └── smartedge-open_baiduedge_integration_arch.png │ ├── index.html │ ├── smartedge-open_awsgreengrass.md │ └── smartedge-open_baiducloud.md ├── devkits │ └── smartedge-open-azure-devkit.md ├── flavors.md ├── getting-started │ ├── converged-edge-experience-kits.md │ ├── harbor-registry.md │ ├── index.html │ ├── kubernetes-dashboard.md │ ├── non-root-user.md │ ├── smartedge-open-cluster-setup-images │ │ └── harbor_ui.png │ └── smartedge-open-cluster-setup.md ├── index.html ├── orchestration │ ├── index.html │ ├── smartedge-open-helm-images │ │ └── smartedge-open-helm-arch.png │ └── smartedge-open-helm.md ├── overview.md └── reference-architectures │ ├── core-network │ ├── epc-images │ │ ├── smartedge-open_epc1.png │ │ ├── smartedge-open_epc2.png │ │ ├── smartedge-open_epc3.png │ │ ├── smartedge-open_epc_cnca_1.png │ │ ├── smartedge-open_epcconfig.png │ │ ├── smartedge-open_epctest1.png │ │ ├── smartedge-open_epctest2.png │ │ ├── smartedge-open_epctest3.png │ │ ├── smartedge-open_epctest4.png │ │ ├── smartedge-open_epcupf_add.png │ │ ├── smartedge-open_epcupf_del.png │ │ ├── smartedge-open_epcupf_get.png │ │ └── smartedge-open_highlevel.png │ ├── index.html │ ├── ngc-images │ │ ├── 5g_edge_data_paths.png │ │ ├── 5g_edge_deployment_scenario1.png │ │ ├── 5g_edge_deployment_scenario2.png │ │ ├── 5g_edge_deployment_scenario3.png │ │ ├── 5g_openess_components.png │ │ ├── 5g_openess_microservices.png │ │ ├── 5g_system_architecture.png │ │ ├── OAuth2.png │ │ ├── PFD_Management_transaction_add.png │ │ ├── PFD_Management_transaction_del.png │ │ ├── PFD_Management_transaction_get.png │ │ ├── PFD_Management_transaction_update.png │ │ ├── e2e_edge_deployment_flows.png │ │ ├── oam_af_service_add.png │ │ ├── oam_af_service_del.png │ │ ├── oam_af_service_get.png │ │ ├── oam_af_service_update.png │ │ ├── traffic_subscription_add.png │ │ ├── traffic_subscription_del.png │ │ ├── traffic_subscription_get.png │ │ └── traffic_subscription_update.png │ ├── ngc_flows │ │ ├── AF_traffic_influence_add.uml │ │ ├── AF_traffic_influence_delete.uml │ │ ├── AF_traffic_influence_get.uml │ │ ├── AF_traffic_influence_update.uml │ │ ├── PFD_Management_transaction_delete.uml │ │ ├── PFD_Management_transaction_get.uml │ │ ├── PFD_Managment_transaction_add.uml │ │ ├── PFD_management_transaction_update.uml │ │ ├── e2e_config_flow_for_5g_edge.uml │ │ ├── ngcoam_af_service_add.uml │ │ ├── ngcoam_af_service_delete.uml │ │ ├── ngcoam_af_service_get.uml │ │ └── ngcoam_af_service_update.uml │ ├── smartedge-open-core.png │ ├── smartedge-open_epc.md │ ├── smartedge-open_ngc.md │ └── smartedge-open_upf.md │ └── index.html ├── index.html ├── js ├── custom.js └── instantsearch.min.js ├── schema ├── 5goam │ ├── 5goam.swagger.json │ └── 5goam.swagger.yaml ├── af │ ├── af.openapi.json │ ├── af.openapi.yaml │ ├── af_pfd.openapi.json │ └── af_pfd.openapi.yaml ├── auth │ └── auth.swagger.json ├── controller │ ├── README.md │ ├── api.swagger.json │ └── api.swagger.yml ├── cups │ ├── README.md │ └── cups.swagger.json ├── eaa │ ├── README.md │ └── eaa.swagger.json ├── ela │ └── README.md ├── eva │ └── README.md ├── kube-ovn │ └── README.md ├── nef │ ├── nef_pfd_management_openapi.json │ ├── nef_pfd_management_openapi.yaml │ ├── nef_traffic_influence_openapi.json │ └── nef_traffic_influence_openapi.yaml └── pb │ ├── auth.proto │ ├── cups.proto │ ├── eaa.proto │ ├── ela.proto │ ├── eva.proto │ └── kube-ovn.proto └── smartedge-open_releasenotes.md /.gitignore: -------------------------------------------------------------------------------- 1 | .jekyll-metadata 2 | Gemfile 3 | Gemfile.lock 4 | _config.yml 5 | _site/ 6 | *.pdf 7 | .history/doc/overview_20201212222334.md 8 | .history/doc/overview_20201212223809.md 9 | -------------------------------------------------------------------------------- /404.html: -------------------------------------------------------------------------------- 1 | 5 | 6 | --- 7 | layout: smartedge-open 8 | --- 9 | 32 |
Sorry, you may not be able to visit requested page because of following reasons:
36 |You are being redirected to the Smart Edge Open Docs.
12 | 15 | -------------------------------------------------------------------------------- /doc/applications-onboard/network-edge-app-onboarding-images/ovc-smartcity-setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/applications-onboard/network-edge-app-onboarding-images/ovc-smartcity-setup.png -------------------------------------------------------------------------------- /doc/applications-onboard/smartedge-open-eaa.md: -------------------------------------------------------------------------------- 1 | ```text 2 | SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2020 Intel Corporation 4 | ``` 5 | 6 | # Edge Application Agent (EAA) 7 | - [Edge Application APIs](#edge-application-apis) 8 | - [Edge Application Authentication](#edge-application-authentication) 9 | 10 | #### Edge Application API support 11 | 12 | There are two types of applications that can be deployed on the Edge Node: 13 | - **Producer Application**: The Smart Edge Open Producer application is an edge compute application that provides services to other applications running on the edge compute platform (location services, mapping services, transcoding services, etc.) 14 | - **Consumer Application**: The Smart Edge Open Consumer application is an edge compute application that serves end users traffic directly (CDN App, Augmented Reality App, VR Application, Infotainment Application, etc.). Pre-existing cloud applications that do not intend to call the EAA APIs but would like to serve the users (without any changes to the implementation) on the edge also fall into this category. 15 | 16 | API endpoint for edge applications is implemented in the EAA (Edge Application Agent) microservice and is implemented in Go lang. APIs are classified into: 17 | 18 | | Edge Application API | Description | Example | 19 | |------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------| 20 | | **Edge Service Activation/Deactivation** | This API endpoint enables a Producer App on the Edge Node to register and activate on the Edge Node\. After this API execution, the Producer App will be discoverable to Consumer Apps on the Edge Node\. | The Location Service Producer app will call this API first after being deployed from the controller\. | 21 | | **Edge Service Discovery** | This API Endpoint enables a Consumer application to discover all the active Producer Applications on the Edge Node\. | A CDN App can discover the Location Service Application on the Edge Node\. | 22 | | **Edge Service Subscription/Unsubscription** | This API Endpoint enables a Consumer application to subscribe to Producer application service and notification updates\. | A CDN application can subscribe to the Location Service application and Notification update from the service\. | 23 | | **Edge Service Notification update** | This is a Web socket connection that needs to be created by a Consumer Application which intends to subscribe to services from Producer Applications\. This WebSocket is used for a push\-notification when there is an update from the Producer Application\. | Location update is sent as a Push Notification update to the CDN Application\. | 24 | | **Edge Service data update** | This API endpoint enables a Producer Application to publish the data to the Edge Node when it has an update to its service\. | Location Service Producer App publishes the Location update of a user to the Edge Node\. | 25 | | **Edge Service list subscription** | This API endpoint allows a Consumer Application to get the list of Producer Application services it has been availed of\. | CDN Application can call this API to check if it has subscribed to Location and Transcoding services\. | 26 | 27 | ### Edge Application APIs 28 | Edge Application APIs are implemented by the EAA. Edge Application APIs are important APIs for Edge application developers. EAA APIs are implemented as HTTPS REST. There are two types of use cases: 29 | 1. **Porting an existing Public/Private Cloud application to the edge compute based on Smart Edge Open**: This is a scenario where a customer wants to run existing apps in the public cloud on Smart Edge Open edge without calling any APIs or changing code. In this case, the only requirement is for an Application image (VM/Container) should be uploaded to the controller and provisioned on the Edge Node using Smart Edge Open Controller. In this case, the Application cannot call any EAA APIs and consume services on the edge compute. It just services end-user traffic. 30 | 3. **Native Edge compute Application calling EAA APIs**: This is a scenario where a customer wants to develop Edge compute applications that take advantage of Edge compute services resulting in a more tactile application that responds to the changing user, network, or resource scenarios. 31 | 32 | Smart Edge Open supports the deployment of both types of applications mentioned above. The Edge Application Agent is a service that runs on the Edge Node and operates as a discovery service and basic message bus between applications via `pubsub`. The connectivity and discoverability of applications by one another is governed by an entitlement system and is controlled by policies set with the Smart Edge Open Controller. The entitlement system is still in development but currently allows all applications on the executing Edge Node to discover one another as well as publish and subscribe to all notifications. The Figure below provides the sequence diagram of the supported APIs for the application. 33 | 34 | More details about the APIs can be found here [Edge Application APIs](https://www.openness.org/api-documentation/?api=eaa) 35 | 36 |  37 | 38 | _Figure - Edge Application API Sequence Diagram_ 39 | 40 | ### Edge Application Authentication 41 | 42 | Connection to the EAA can be established after performing mutual TLS authentication. To achieve that the application needs to generate its certificate using Certificate Signer and should trust the CA certificate `root.pem` that is stored in `ca-certrequester` Kubernetes Secret. 43 | 44 | The details can be found on the [Certificate Signer page](smartedge-open-certsigner.md). 45 | -------------------------------------------------------------------------------- /doc/applications-onboard/smartedge-open-edgedns.md: -------------------------------------------------------------------------------- 1 | ```text 2 | SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2019 Intel Corporation 4 | ``` 5 | 6 | # Edge DNS 7 | - [Overview](#overview) 8 | - [Usage](#usage) 9 | - [Network edge usage](#network-edge-usage) 10 | 11 | ## Overview 12 | The edge platform must provide access to DNS. The edge platform receives the application DNS rules from the controller. This is specified in the ETSI Multi-access Edge Computing (MEC). From a 5G edge deployment perspective, the Primary DNS (priDns) and Secondary DNS (secDns) needs to be configured which is going to be consumed by the SMF. 13 | 14 | 15 | Smart Edge Open supports DNS microservice to address these DNS requirements and also DNS service for edge applications and network functions. 16 | 17 |  18 | 19 | _Figure - DNS support on Smart Edge Open overview_ 20 | 21 | >**NOTE**: Secondary DNS service is out of the scope of Smart Edge Open and is only used for DNS forwarding. 22 | 23 | EdgeDNS is a functionality to provide the Domain Name System (DNS) Server with a possibility to be controlled by its CLI. EdgeDNS Server listens for requests from a client's CLI. After receiving a CLI request, a function handling the request adds or removes the RULE inside of the EdgeDNS database. EdgeDNS supports only type A records for Set/Delete Fully Qualified Domain Names (FQDN) and the current forwarder is set to 8.8.8.8 (set in docker-compose.yml and smartedge-open.yaml). Network Edge mode provides EdgeDNS as a service, which is an application running in a K8s pod on each node of the Smart Edge Open K8s cluster. It allows users to add and remove DNS entries of the node directly from K8s control plane using kubectl plugin. 24 | 25 | ## Usage 26 | 27 | The EdgeDNS server can be controlled by its CLI. The CLI reads a json file containing HostRecordSet for set operation and RecordSet for del operation. The following is an example of JSON files that defines www.example.com to be 1.1.1.1;1.1.1.2;1.1.1.3;1.1.1.4 as `set.json` and `del.json` files: 28 | 29 | set.json 30 | ```json 31 | { 32 | "record_type":"A", 33 | "fqdn":"www.example.com", 34 | "addresses":["1.1.1.1", "1.1.1.2", "1.1.1.3", "1.1.1.4"] 35 | } 36 | ``` 37 | 38 | del.json 39 | ```json 40 | { 41 | "record_type":"A", 42 | "fqdn":"www.example.com" 43 | } 44 | ``` 45 | 46 | ### Network edge usage 47 | 48 | In Network Edge, the EdgeDNS CLI is used as a Kubernetes\* plugin. The following is an output of help of kubectl edgedns. 49 | 50 | ``` 51 | `kubectl edgedns --help` to learn about usage 52 | `kubectl edgedns setYou are being redirected to the Smart Edge Open Docs.
12 | 15 | -------------------------------------------------------------------------------- /doc/applications/ovc-images/data-centric-design.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/applications/ovc-images/data-centric-design.png -------------------------------------------------------------------------------- /doc/applications/ovc-images/ovc-pipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/applications/ovc-images/ovc-pipeline.png -------------------------------------------------------------------------------- /doc/applications/ovc-images/ovc-vm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/applications/ovc-images/ovc-vm.png -------------------------------------------------------------------------------- /doc/applications/ovc-images/scope.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/applications/ovc-images/scope.png -------------------------------------------------------------------------------- /doc/applications/ovc-images/screenshot.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/applications/ovc-images/screenshot.gif -------------------------------------------------------------------------------- /doc/applications/ovc-images/smart-city-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/applications/ovc-images/smart-city-app.png -------------------------------------------------------------------------------- /doc/applications/ovc-images/smart-city-architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/applications/ovc-images/smart-city-architecture.png -------------------------------------------------------------------------------- /doc/applications/service-mesh-images/bookinfo-landing-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/applications/service-mesh-images/bookinfo-landing-page.png -------------------------------------------------------------------------------- /doc/applications/service-mesh-images/grafana-istio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/applications/service-mesh-images/grafana-istio.png -------------------------------------------------------------------------------- /doc/applications/service-mesh-images/grafana-telemetry-rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/applications/service-mesh-images/grafana-telemetry-rule.png -------------------------------------------------------------------------------- /doc/applications/service-mesh-images/kiali-book-info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/applications/service-mesh-images/kiali-book-info.png -------------------------------------------------------------------------------- /doc/applications/service-mesh-images/kiali-canary-deployment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/applications/service-mesh-images/kiali-canary-deployment.png -------------------------------------------------------------------------------- /doc/applications/service-mesh-images/kiali-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/applications/service-mesh-images/kiali-login.png -------------------------------------------------------------------------------- /doc/applications/service-mesh-images/prometheus-istio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/applications/service-mesh-images/prometheus-istio.png -------------------------------------------------------------------------------- /doc/applications/service-mesh-images/video-analytics-service-mesh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/applications/service-mesh-images/video-analytics-service-mesh.png -------------------------------------------------------------------------------- /doc/applications/va-service-images/va-services-deployment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/applications/va-service-images/va-services-deployment.png -------------------------------------------------------------------------------- /doc/applications/va-service-images/va-services-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/applications/va-service-images/va-services-flow.png -------------------------------------------------------------------------------- /doc/arch-images/customers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/arch-images/customers.png -------------------------------------------------------------------------------- /doc/arch-images/locations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/arch-images/locations.png -------------------------------------------------------------------------------- /doc/arch-images/modular.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/arch-images/modular.png -------------------------------------------------------------------------------- /doc/arch-images/multi-location-edge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/arch-images/multi-location-edge.png -------------------------------------------------------------------------------- /doc/arch-images/resource.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/arch-images/resource.png -------------------------------------------------------------------------------- /doc/arch-images/smartedge-open-arc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/arch-images/smartedge-open-arc.png -------------------------------------------------------------------------------- /doc/arch-images/smartedge-open-emco.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/arch-images/smartedge-open-emco.png -------------------------------------------------------------------------------- /doc/arch-images/smartedge-open-flexran.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/arch-images/smartedge-open-flexran.png -------------------------------------------------------------------------------- /doc/arch-images/smartedge-open-ovc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/arch-images/smartedge-open-ovc.png -------------------------------------------------------------------------------- /doc/arch-images/smartedge-open_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/arch-images/smartedge-open_overview.png -------------------------------------------------------------------------------- /doc/arch-images/start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/arch-images/start.png -------------------------------------------------------------------------------- /doc/building-blocks/dataplane/iap-images/iap1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/dataplane/iap-images/iap1.png -------------------------------------------------------------------------------- /doc/building-blocks/dataplane/iap-images/iap2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/dataplane/iap-images/iap2.png -------------------------------------------------------------------------------- /doc/building-blocks/dataplane/iap-images/iap3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/dataplane/iap-images/iap3.png -------------------------------------------------------------------------------- /doc/building-blocks/dataplane/index.html: -------------------------------------------------------------------------------- 1 | 5 | 6 | --- 7 | title: Smart Edge Open Documentation 8 | description: Home 9 | layout: smartedge-open 10 | --- 11 |You are being redirected to the Smart Edge Open Docs.
12 | 15 | -------------------------------------------------------------------------------- /doc/building-blocks/dataplane/nts-images/nts1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/dataplane/nts-images/nts1.png -------------------------------------------------------------------------------- /doc/building-blocks/dataplane/nts-images/nts2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/dataplane/nts-images/nts2.png -------------------------------------------------------------------------------- /doc/building-blocks/dataplane/ovn_images/ovncni_cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/dataplane/ovn_images/ovncni_cluster.png -------------------------------------------------------------------------------- /doc/building-blocks/dataplane/ovn_images/smartedge-open_ovn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/dataplane/ovn_images/smartedge-open_ovn.png -------------------------------------------------------------------------------- /doc/building-blocks/dataplane/ovn_images/smartedge-open_ovnovs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/dataplane/ovn_images/smartedge-open_ovnovs.png -------------------------------------------------------------------------------- /doc/building-blocks/dataplane/smartedge-open-interapp.md: -------------------------------------------------------------------------------- 1 | ```text 2 | SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2019 Intel Corporation 4 | ``` 5 | 6 | # InterApp Communication Support in Smart Edge Open 7 | - [Overview](#overview) 8 | - [InterApp Communication support in Smart Edge Open Network Edge](#interapp-communication-support-in-smart-edge-open-network-edge) 9 | 10 | ## Overview 11 | 12 | Multi-core edge cloud platforms typically host multiple containers or virtual machines as PODs. These applications sometimes need to communicate with each other as part of a service or consuming services from another application instance. This means that an edge cloud platform should provide not just the data plane interface (to enable user data transfer to and from clients) but also the infrastructure to enable applications to communicate with each other whether they are on the same platform or spanning across multiple platforms. Smart Edge Open provides the infrastructure for both in the network edge mode. 13 | 14 | >**NOTE**: The InterApps Communication mentioned here is not just for applications but it is also applicable for Network functions (Core Network User plane, Base station, etc.). 15 | 16 | ## InterApp Communication support in Smart Edge Open Network Edge 17 | 18 | InterApp communication on the Smart Edge Open Network Edge is supported using Open Virtual Network for Open vSwitch [OVN/OVS](https://github.com/smart-edge-open/specs/blob/master/doc/building-blocks/dataplane/smartedge-open-ovn.md) as the infrastructure. OVN/OVS in the network edge is supported through the Kubernetes kube-OVN Container Network Interface (CNI). 19 | 20 | >**NOTE**: The InterApps Communication also works with Calico cni. Calico is supported as a default cni in Openness from 21.03 release. 21 | 22 | OVN/OVS is used as a default networking infrastructure for: 23 | - Data plane interface: User data transmission between User Equipment (UE) and edge applications 24 | - InterApp interface : Communication infrastructure for applications to communicate 25 | - Default interface: Interface for managing the application POD (e.g., SSH to application POD) 26 | - Cloud/Internet interface: Interface for edge applications to communicate with the cloud/Internet 27 | 28 |  29 | 30 | _Figure - Smart Edge Open Network Edge Interfaces_ 31 | -------------------------------------------------------------------------------- /doc/building-blocks/dataplane/smartedge-open-ovn.md: -------------------------------------------------------------------------------- 1 | ```text 2 | SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2019-2020 Intel Corporation 4 | ``` 5 | 6 | # Smart Edge Open Support for OVS as dataplane with OVN 7 | - [OVN Introduction](#ovn-introduction) 8 | - [OVN/OVS support in Smart Edge Open Network Edge](#ovnovs-support-in-smart-edge-open-network-edge) 9 | - [Summary](#summary) 10 | 11 | ## OVN Introduction 12 | Open Virtual Network (OVN) is an open-source solution based on the Open vSwitch-based (OVS) software-defined networking (SDN) solution for providing network services to instances. OVN adds to the capabilities of OVS to provide native support for virtual network abstractions, such as virtual L2 and L3 overlays and security groups. Further information about the OVN architecture can be found [here](http://www.openvswitch.org/support/dist-docs-2.5/ovn-architecture.7.html) 13 | 14 | ## OVN/OVS support in Smart Edge Open Network Edge 15 | The primary objective of supporting OVN/OVS in Smart Edge Open is to demonstrate the capability of using a standard dataplane such as OVS for an Edge Compute platform. Using OVN/OVS further provides standard SDN-based flow configuration for the edge Dataplane. 16 | 17 | The diagram below shows OVS as a dataplane and OVN overlay. This mode of deployment is recommended when the Edge node terminates IP traffic (Wireline, Wireless, LTE CUPS, SGi) 18 | 19 |  20 | 21 | [Kube-OVN](https://github.com/alauda/kube-ovn) can be chosen as the CNI implementation for OVN/OVS in Smart Edge Open. Additionally, in the following configuration, Smart Edge Open applications on Edge Nodes are deployed as DaemonSet Pods (in separate "openness" namespace) and exposed to client applications by k8s services. 22 | 23 | OVN/OVS is used as the default networking infrastructure for: 24 | - Dataplane Interface: UE's to edge applications 25 | - InterApp Interface: Communication infrastructure for applications to communicate 26 | - Default Interface: Interface for managing the Application POD (e.g., SSH to application POD) 27 | - Cloud/Internet Interface: Interface for Edge applications to communicate with the Cloud/Internet 28 | 29 | The platform supports OVS-DPDK as a dataplane. OVS-DPDK can be used for high-performance data transmission scenarios in the userspace. More about OVS-DPDK can be found [here](http://docs.openvswitch.org/en/latest/howto/dpdk/). 30 | 31 | ## Summary 32 | Smart Edge Open is built with a microservices architecture. Depending on the deployment, there may be a requirement to service pure IP traffic and configure the dataplane using standard SDN-based tools. Smart Edge Open demonstrates such a requirement by providing OVS as a dataplane in the place of NTS without changing the APIs from an end-user perspective. 33 | -------------------------------------------------------------------------------- /doc/building-blocks/dataplane/smartedge-open-userspace-cni.md: -------------------------------------------------------------------------------- 1 | ```text 2 | SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2019 Intel Corporation 4 | ``` 5 | 6 | # Userspace CNI 7 | - [Overview](#overview) 8 | - [Setup Userspace CNI](#setup-userspace-cni) 9 | - [HugePages configuration](#hugepages-configuration) 10 | - [Pod deployment](#pod-deployment) 11 | - [Virtual interface usage](#virtual-interface-usage) 12 | 13 | ## Overview 14 | 15 | Userspace CNI is a Container Network Interface (CNI) Kubernetes\* plugin that was designed to simplify the process of deployment of DPDK-based applications in Kubernetes pods. The plugin uses Kubernetes and Multus CNI CRDs to provide pods with a virtual DPDK-enabled Ethernet port. In this document, you can find details about how to install Smart Edge Open with Userspace CNI support and how to use its main features. 16 | 17 | ## Setup Userspace CNI 18 | 19 | Smart Edge Open for Network Edge has been integrated with Userspace CNI to allow users to easily run DPDK- based applications inside Kubernetes pods. To install Smart Edge Open Network Edge with Userspace CNI support, add the value `userspace` to variable `kubernetes_cnis` in `inventory/default/group_vars/all/10-default.yml` and set value of the variable `kubeovn_dpdk` in `inventory/default/group_vars/all/10-default.yml` to `true`: 20 | 21 | ```yaml 22 | # inventory/default/group_vars/all/10-default.yml 23 | kubernetes_cnis: 24 | - kubeovn 25 | - userspace 26 | ``` 27 | 28 | ```yaml 29 | # inventory/default/group_vars/all/10-default.yml 30 | kubeovn_dpdk: true 31 | ``` 32 | 33 | ## HugePages configuration 34 | 35 | DPDK apps require that a specific number of HugePages are enabled. By default, the Ansible\* scripts will enable 1024 of 2M HugePages on a system and then start OVS-DPDK with 1Gb of those HugePages. To change this setting to reflect your specific requirements, set the Ansible variables as defined in the example below. This example enables 4 of 1GB HugePages and appends 1 GB to OVS-DPDK, leaving 3 pages for DPDK applications that will be running in the pods. 36 | 37 | ```yaml 38 | # inventory/default/group_vars/controller_group/10-default.yml 39 | hugepage_size: "1G" 40 | hugepage_amount: "4" 41 | default_grub_params: "default_hugepagesz={{ hugepage_size }} hugepagesz={{ hugepage_size }} hugepages={{ hugepage_amount }} intel_iommu=on iommu=pt" 42 | ``` 43 | 44 | ```yaml 45 | # inventory/default/group_vars/edgenode_group/10-default.yml 46 | hugepage_size: "1G" 47 | hugepage_amount: "4" 48 | default_grub_params: "default_hugepagesz={{ hugepage_size }} hugepagesz={{ hugepage_size }} hugepages={{ hugepage_amount }} intel_iommu=on iommu=pt" 49 | ``` 50 | 51 | ```yaml 52 | # inventory/default/group_vars/all/10-default.yml 53 | # Hugepage size to be used with DPDK: 2Mi or 1Gi 54 | kubeovn_dpdk_hugepage_size: "1Gi" 55 | # Overall amount of hugepages available to DPDK 56 | kubeovn_dpdk_hugepages: "1Gi" 57 | ``` 58 | 59 | ## Pod deployment 60 | 61 | To deploy a pod with a DPDK interface, create a pod with `hugepages` mounted to `/dev/hugepages`, host directory `/var/run/openvswitch/` (with mandatory trailing slash character) mounted into the pod with the volume name `shared-dir` (the name `shared-dir` is mandatory), and `userspace-openness` network annotation. Find an example pod definition with two DPDK ports below: 62 | 63 | ```yaml 64 | apiVersion: v1 65 | kind: Pod 66 | metadata: 67 | name: userspace-example 68 | annotations: 69 | k8s.v1.cni.cncf.io/networks: userspace-openness, userspace-openness 70 | spec: 71 | containers: 72 | - name: userspace-example 73 | image: image-name 74 | imagePullPolicy: Never 75 | securityContext: 76 | privileged: true 77 | volumeMounts: 78 | - mountPath: /ovs 79 | name: shared-dir 80 | - mountPath: /dev/hugepages 81 | name: hugepages 82 | resources: 83 | requests: 84 | memory: 1Gi 85 | limits: 86 | hugepages-1Gi: 2Gi 87 | command: ["sleep", "infinity"] 88 | volumes: 89 | - name: shared-dir 90 | hostPath: 91 | path: /var/run/openvswitch/ 92 | - name: hugepages 93 | emptyDir: 94 | medium: HugePages 95 | ``` 96 | 97 | ## Virtual interface usage 98 | 99 | Socket files for virtual interfaces generated by Userspace CNI are created on the host machine in `/var/run/openvswitch` directory. This directory has to be mounted into your pod by volume with **obligatory name `shared-dir`** (in our [example pod definition](#pod-deployment) `/var/run/openvswitch` is mounted to pod as `/ovs`). You can then use the sockets available from your mount-point directory in your DPDK-enabled application deployed inside a pod. Find more examples in [Userspace CNI's documentation](https://github.com/intel/userspace-cni-network-plugin#testing-with-dpdk-testpmd-application). 100 | 101 | >**NOTE**: When 2MB HugePages are enabled for Userspace CNI there is a limitation to [how many memory regions can be used by Virtio](https://doc.dpdk.org/guides/howto/virtio_user_for_container_networking.html#limitations) - in an event where number of memory regions is exceeded by DPDK application, a flag '--single-file-segments' needs to be added to the applications starting command line. 102 | 103 | -------------------------------------------------------------------------------- /doc/building-blocks/emco/index.html: -------------------------------------------------------------------------------- 1 | 5 | 6 | --- 7 | title: Smart Edge Open Documentation 8 | description: Home 9 | layout: smartedge-open 10 | --- 11 |You are being redirected to the Smart Edge Open Docs.
12 | 15 | -------------------------------------------------------------------------------- /doc/building-blocks/emco/smartedge-open-emco-images/emco-dig-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/emco/smartedge-open-emco-images/emco-dig-create.png -------------------------------------------------------------------------------- /doc/building-blocks/emco/smartedge-open-emco-images/emco-dig-instantiate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/emco/smartedge-open-emco-images/emco-dig-instantiate.png -------------------------------------------------------------------------------- /doc/building-blocks/emco/smartedge-open-emco-images/emco-geo-distributed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/emco/smartedge-open-emco-images/emco-geo-distributed.png -------------------------------------------------------------------------------- /doc/building-blocks/emco/smartedge-open-emco-images/emco-istio-arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/emco/smartedge-open-emco-images/emco-istio-arch.png -------------------------------------------------------------------------------- /doc/building-blocks/emco/smartedge-open-emco-images/emco-istio-auth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/emco/smartedge-open-emco-images/emco-istio-auth.png -------------------------------------------------------------------------------- /doc/building-blocks/emco/smartedge-open-emco-images/emco-register-controllers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/emco/smartedge-open-emco-images/emco-register-controllers.png -------------------------------------------------------------------------------- /doc/building-blocks/emco/smartedge-open-emco-images/emco-status-monitoring.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/emco/smartedge-open-emco-images/emco-status-monitoring.png -------------------------------------------------------------------------------- /doc/building-blocks/emco/smartedge-open-emco-images/smartedge-open-emco-arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/emco/smartedge-open-emco-images/smartedge-open-emco-arch.png -------------------------------------------------------------------------------- /doc/building-blocks/emco/smartedge-open-emco-images/smartedge-open-emco-lccl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/emco/smartedge-open-emco-images/smartedge-open-emco-lccl.png -------------------------------------------------------------------------------- /doc/building-blocks/emco/smartedge-open-emco-images/smartedge-open-emco-smtc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/emco/smartedge-open-emco-images/smartedge-open-emco-smtc.png -------------------------------------------------------------------------------- /doc/building-blocks/emco/smartedge-open-emco-images/smartedge-open-emco-smtcui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/emco/smartedge-open-emco-images/smartedge-open-emco-smtcui.png -------------------------------------------------------------------------------- /doc/building-blocks/emco/smartedge-open-emco-images/smartedge-open-emco-topology.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/emco/smartedge-open-emco-images/smartedge-open-emco-topology.png -------------------------------------------------------------------------------- /doc/building-blocks/enhanced-platform-awareness/acc100-images/acc100-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/enhanced-platform-awareness/acc100-images/acc100-diagram.png -------------------------------------------------------------------------------- /doc/building-blocks/enhanced-platform-awareness/acc100-images/acc100-k8s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/enhanced-platform-awareness/acc100-images/acc100-k8s.png -------------------------------------------------------------------------------- /doc/building-blocks/enhanced-platform-awareness/biosfw-images/smartedge-open_biosfw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/enhanced-platform-awareness/biosfw-images/smartedge-open_biosfw.png -------------------------------------------------------------------------------- /doc/building-blocks/enhanced-platform-awareness/cmk-images/cmk1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/enhanced-platform-awareness/cmk-images/cmk1.png -------------------------------------------------------------------------------- /doc/building-blocks/enhanced-platform-awareness/cmk-images/cmk2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/enhanced-platform-awareness/cmk-images/cmk2.png -------------------------------------------------------------------------------- /doc/building-blocks/enhanced-platform-awareness/fpga-images/smartedge-open-fpga1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/enhanced-platform-awareness/fpga-images/smartedge-open-fpga1.png -------------------------------------------------------------------------------- /doc/building-blocks/enhanced-platform-awareness/fpga-images/smartedge-open-fpga2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/enhanced-platform-awareness/fpga-images/smartedge-open-fpga2.png -------------------------------------------------------------------------------- /doc/building-blocks/enhanced-platform-awareness/fpga-images/smartedge-open-fpga3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/enhanced-platform-awareness/fpga-images/smartedge-open-fpga3.png -------------------------------------------------------------------------------- /doc/building-blocks/enhanced-platform-awareness/fpga-images/smartedge-open-fpga4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/enhanced-platform-awareness/fpga-images/smartedge-open-fpga4.png -------------------------------------------------------------------------------- /doc/building-blocks/enhanced-platform-awareness/hddl-images/hddlservice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/enhanced-platform-awareness/hddl-images/hddlservice.png -------------------------------------------------------------------------------- /doc/building-blocks/enhanced-platform-awareness/hddl-images/smartedge-open_HDDL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/enhanced-platform-awareness/hddl-images/smartedge-open_HDDL.png -------------------------------------------------------------------------------- /doc/building-blocks/enhanced-platform-awareness/hddl-images/smartedge-open_dynamic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/enhanced-platform-awareness/hddl-images/smartedge-open_dynamic.png -------------------------------------------------------------------------------- /doc/building-blocks/enhanced-platform-awareness/index.html: -------------------------------------------------------------------------------- 1 | 5 | 6 | --- 7 | title: Smart Edge Open Documentation 8 | description: Home 9 | layout: smartedge-open 10 | --- 11 |You are being redirected to the Smart Edge Open Docs.
12 | 15 | -------------------------------------------------------------------------------- /doc/building-blocks/enhanced-platform-awareness/multussriov-images/sriov-cni.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/enhanced-platform-awareness/multussriov-images/sriov-cni.png -------------------------------------------------------------------------------- /doc/building-blocks/enhanced-platform-awareness/multussriov-images/sriov-dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/enhanced-platform-awareness/multussriov-images/sriov-dp.png -------------------------------------------------------------------------------- /doc/building-blocks/enhanced-platform-awareness/nfd-images/nfd0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/enhanced-platform-awareness/nfd-images/nfd0.png -------------------------------------------------------------------------------- /doc/building-blocks/enhanced-platform-awareness/nfd-images/nfd1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/enhanced-platform-awareness/nfd-images/nfd1.png -------------------------------------------------------------------------------- /doc/building-blocks/enhanced-platform-awareness/nfd-images/nfd2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/building-blocks/enhanced-platform-awareness/nfd-images/nfd2.png -------------------------------------------------------------------------------- /doc/building-blocks/enhanced-platform-awareness/smartedge-open-bios.md: -------------------------------------------------------------------------------- 1 | ```text 2 | SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2019 Intel Corporation 4 | ``` 5 | 6 | # BIOS and Firmware Configuration on the Smart Edge Open Platform 7 | - [Overview](#overview) 8 | - [Use case for edge](#use-case-for-edge) 9 | - [Details: BIOS and firmware configuration on Smart Edge Open Network Edge](#details-bios-and-firmware-configuration-on-smart-edge-open-network-edge) 10 | - [Setup](#setup) 11 | - [Usage](#usage) 12 | - [Reference](#reference) 13 | 14 | ## Overview 15 | 16 | BIOS and firmware are the fundamental platform configurations of a typical commercial, off-the-shelf platform. BIOS and firmware configurations are low-level configurations that can determine the environment available for network functions or applications. A typical BIOS configuration relevant for a network function or application may include several configurations (CPU, cache and memory, PCIe, power and performance, etc.). Some network functions and applications need certain BIOS and firmware settings to be configured in a specific way for optimal functionality and behavior. 17 | 18 | ## Use case for edge 19 | 20 | Example: an AI Inference application that uses an accelerator such as an FPGA. 21 | To get optimal performance, when this application is deployed by the Resource Orchestrator, it is recommended to place the application on the same node and CPU Socket to which the accelerator is attached. To ensure this, NUMA, PCIe memory-mapped IO, and cache configurations need to be optimally configured. Similarly, for a network function like a base station or core network instruction set, cache and hyperthreading play an important role in the performance and density. 22 | 23 | Smart Edge Open provides a reference implementation demonstrating how to configure low-level platform settings such as BIOS and firmware, and it provides the capability to check if they are configured as per a required profile. To implement this feature, Smart Edge Open uses the Intel® System Configuration Utility. The Intel® System Configuration Utility (Syscfg) is a command-line utility that can be used to save and restore BIOS and firmware settings to a file or to set and display individual settings. 24 | 25 | >**NOTE**: The Intel® System Configuration Utility is only supported on certain server platforms from Intel. Refer to the [Intel® System Configuration Utility user guide](https://www.intel.com/content/dam/support/us/en/documents/server-products/server-boards/intel-syscfg-userguide-v1-03.pdf) for the supported server products. 26 | 27 | >**NOTE**: The Intel® System Configuration Utility is not intended for and should not be used on any non-Intel server products. 28 | 29 | The Smart Edge Open Network Edge implementation goes a step further and provides an automated process using Kubernetes\* to save and restore BIOS and firmware settings. To do this, the Intel® System Configuration Utility is packaged as a pod and deployed as a Kubernetes job that uses ConfigMap. This ConfigMap provides a mount point that has the BIOS and firmware profile that needs to be used for the node. A platform reboot is required for the BIOS and firmware configuration to be applied. To enable this, the BIOS and firmware job is deployed as a privileged pod. 30 | 31 |  32 | 33 | _Figure - BIOS and Firmware configuration on Smart Edge Open_ 34 | 35 | ## Details: BIOS and firmware configuration on Smart Edge Open Network Edge 36 | 37 | BIOS and firmware configuration features are wrapped in a kubectl plugin. 38 | Knowledge of Intel SYSCFG utility is required for usage. 39 | Intel SYSCFG must be manually downloaded by the user after accepting the license. 40 | [Download the utility here](https://downloadcenter.intel.com/download/29693/Save-and-Restore-System-Configuration-Utility-SYSCFG). 41 | 42 | ### Setup 43 | To enable BIOSFW, perform the following steps: 44 | 1. The SYSCFG package must be downloaded and stored inside Converged Edge Experience Kits' `biosfw/` directory as a `syscfg_package.zip`: 45 | `converged-edge-experience-kits/biosfw/syscfg_package.zip` 46 | 2. Change the variable `ne_biosfw_enable` in `inventory/default/group_vars/all/10-default.yml` to “true”: 47 | ```yaml 48 | ne_biosfw_enable: true 49 | ``` 50 | 3. Converged Edge Experience Kits' NetworkEdge deployment for both controller and nodes can be started. 51 | 52 | ### Usage 53 | 54 | >**NOTE**: BIOSFW does not verify if the motherboard is compliant with the syscfg tool. It is assumed that syscfg verifies the motherboard and requirements. 55 | 56 | * Use `kubectl biosfw --help` to learn about usage. 57 | * Use `kubectl biosfw saveYou are being redirected to the Smart Edge Open Docs.
12 | 15 | -------------------------------------------------------------------------------- /doc/cloud-adapters/awsgg-images/smartedge-open_cloudadapter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/cloud-adapters/awsgg-images/smartedge-open_cloudadapter.png -------------------------------------------------------------------------------- /doc/cloud-adapters/awsgg-images/smartedge-open_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/cloud-adapters/awsgg-images/smartedge-open_overview.png -------------------------------------------------------------------------------- /doc/cloud-adapters/baidu-cloudadapter-images/smartedge-open_baiduedge_end2end_demosetup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/cloud-adapters/baidu-cloudadapter-images/smartedge-open_baiduedge_end2end_demosetup.png -------------------------------------------------------------------------------- /doc/cloud-adapters/baidu-cloudadapter-images/smartedge-open_baiduedge_integration_arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/cloud-adapters/baidu-cloudadapter-images/smartedge-open_baiduedge_integration_arch.png -------------------------------------------------------------------------------- /doc/cloud-adapters/index.html: -------------------------------------------------------------------------------- 1 | 5 | 6 | --- 7 | title: Smart Edge Open Documentation 8 | description: Home 9 | layout: smartedge-open 10 | --- 11 |You are being redirected to the Smart Edge Open Docs.
12 | 15 | -------------------------------------------------------------------------------- /doc/cloud-adapters/smartedge-open_awsgreengrass.md: -------------------------------------------------------------------------------- 1 | ```text 2 | SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2019 Intel Corporation 4 | ``` 5 | 6 | # Smart Edge Open Integration with AWS Greengrass 7 | - [Overview](#overview) 8 | - [Run Greengrass on Smart Edge Open](#run-greengrass-on-smart-edge-open) 9 | - [Running AWS IoT Greengrass in a Docker Container](#running-aws-iot-greengrass-in-a-docker-container) 10 | - [Download Dockerfile from AWS](#download-dockerfile-from-aws) 11 | - [AWS IoT Greengrass](#aws-iot-greengrass) 12 | - [Modify Dockerfile and docker-compose file](#modify-dockerfile-and-docker-compose-file) 13 | - [Build a docker container image with credentials](#build-a-docker-container-image-with-credentials) 14 | - [Greengrass Deployment on AWS IoT](#greengrass-deployment-on-aws-iot) 15 | 16 | ## Overview 17 | This application note will provide guidelines and examples on: 18 | - Creating an AWS Greengrass\* Docker\* container 19 | - Deploying an AWS Greengrass on the Smart Edge Open platform. 20 | 21 | Smart Edge Open is an open-source software platform that enables easy orchestration of edge services across diverse network platforms and access technologies in multi-cloud environments. It is inspired by the edge computing architecture defined by the ETSI Multi-access Edge Computing (MEC) standards (e.g., [ETSI_MEC 003]), as well as the 5G network architecture ([3GPP_23501]). Figure 1 depicts the high-level architecture of Smart Edge Open. 22 | 23 | Certain commercial cloud service providers (CSPs), such as Amazon\*, have the capability of running cloud applications on edge platforms external to their cloud. In the case of AWS, this capability is provided by the Greengrass product. In Greengrass, a cloud connector component called Greengrass Core is ported to the edge platform and interoperates with the AWS cloud to allow the cloud to deploy and provision cloud applications on the edge platform. 24 | 25 | The Smart Edge Open platform supports Amazon Greengrass. This application note describes how to deploy Greengrass on the Smart Edge Open platform. 26 | 27 |  28 | 29 | Figure 1 - Smart Edge Open Architecture 30 | ## Run Greengrass on Smart Edge Open 31 | 32 | Figure 2 shows a system consisting of AWS, AWS Greengrass, and an Smart Edge Open platform. In this architecture, the Greengrass Core runs as an edge application on the Smart Edge Open Edge Node. It is deployed as a Docker Container, and provides a network interface to the AWS Cloud. Greengrass Core uses edge node services to provision cloud applications, which run on the edge node as edge applications. 33 | 34 | For AWS Cloud, Greengrass Core and the applications appear to be components meeting the Greengrass specification and running on an external system. Greengrass Core can run Lambdas within Greengrass core as normal. Greengrass Core and the lambdas have ports from external devices to which traffic is steered by the Smart Edge Open data plane. 35 | 36 | For Smart Edge Open, Greengrass Core is an edge service managed by the edge platform. 37 | 38 |  39 | 40 | Figure 2 - Amazon AWS Greengrass Smart Edge Open integrated solution 41 | 42 | This section describes how to set up and run AWS Greengrass on Smart Edge Open in a Docker container. 43 | ### Running AWS IoT Greengrass in a Docker Container 44 | 45 | Smart Edge Open was tested with Docker v1.9.2 of the AWS IoT Greengrass Core software version. 46 | 47 | #### Download Dockerfile from AWS 48 | 49 | AWS provides a Dockerfile and Docker image to enable running AWS IoT Greengrass in a Docker container. 50 | The procedures for downloading and using it are in the [AWS IoT Greengrass Developer Guide](https://docs.aws.amazon.com/greengrass/latest/developerguide). 51 | 52 | In the Downloads section of [What is AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/latest/developerguide/what-is-gg.html#gg-docker-download), find and download the Docker package. 53 | 54 | #### AWS IoT Greengrass 55 | 56 | Go to the "Configure AWS IoT Greengrass on AWS IoT" section of [AWS IoT Greengrass Developer Guide](https://docs.aws.amazon.com/greengrass/latest/developerguide/gg-config.html) and follow it until you download and store your Core's security resources as a tar.gz. 57 | 58 | Unzip its content into the same directory where the Dockerfile is. 59 | 60 | #### Modify Dockerfile and docker-compose file 61 | 62 | Modify the `Dockerfile` and `docker-compose.yml` file before taking the next steps. 63 | 64 | Add the following section in the Dockerfile: 65 | 66 | ```docker 67 | 68 | # Copy certs files 69 | COPY "./certs/*" /greengrass/certs/ 70 | COPY "./config/*" /greengrass/config/ 71 | RUN chmod 444 /greengrass/config/config.json 72 | 73 | ``` 74 | 75 | In the `docker-compose.yml` file comment out `volumes` section with `#` sign: 76 | 77 | ```docker 78 | # volumes: 79 | # - ./certs:/greengrass/certs 80 | # - ./config:/greengrass/config 81 | # - ./deployment:/greengrass/ggc/deployment 82 | # - ./log:/greengrass/ggc/var/log 83 | 84 | ``` 85 | 86 | #### Build a docker container image with credentials 87 | 88 | Go to the folder with the Dockerfile and run the following command: 89 | 90 | ``` 91 | docker-compose up --build -d 92 | ``` 93 | 94 | Commit the changes to the image: 95 | 96 | ``` 97 | docker commit aws-iot-greengrass aws-iot-greengrass 98 | ``` 99 | 100 | Then save the modified container image into the file: 101 | 102 | ``` 103 | docker save aws-iot-greengrass > aws-iot-greengrass.tar.gz 104 | ``` 105 | 106 | Now deploy the `aws-iot-greengrass.tar.gz` file in Smart Edge Open according to the Controller User Guide. 107 | 108 | ### Greengrass Deployment on AWS IoT 109 | 110 | After the Greengrass container is run by the Smart Edge Open Controller, follow the Greengrass setup and deployment steps in the [AWS IoT Greengrass Developer Guide](https://docs.aws.amazon.com/greengrass/latest/developerguide). 111 | -------------------------------------------------------------------------------- /doc/devkits/smartedge-open-azure-devkit.md: -------------------------------------------------------------------------------- 1 | ```text 2 | SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2020 Intel Corporation 4 | ``` 5 | 6 | # Smart Edge Open Devkit for Azure 7 | 8 | ## Introduction 9 | 10 | This devkit supports the use of Smart Edge Open in cloud solutions. It leverages the Azure Stack for Smart Edge Open deployment. 11 | The devkit offers a quick and easy way to deploy Smart Edge Open on cloud for developers and businesses. It contains templates 12 | for automated depoyment, and supports deployment using Porter. It enables cloud solutions supported by Intel's processors. 13 | 14 | ## Getting Started 15 | 16 | Following document contains steps for quick deployment on Azure: 17 | * [converged-edge-experience-kits/cloud/README.md: Deployment and setup guide](https://github.com/smart-edge-open/converged-edge-experience-kits/blob/master/cloud/README.md) 18 | -------------------------------------------------------------------------------- /doc/getting-started/index.html: -------------------------------------------------------------------------------- 1 | 5 | 6 | --- 7 | title: Smart Edge Open Documentation 8 | description: Home 9 | layout: smartedge-open 10 | --- 11 |You are being redirected to the Smart Edge Open Docs.
12 | 15 | -------------------------------------------------------------------------------- /doc/getting-started/kubernetes-dashboard.md: -------------------------------------------------------------------------------- 1 | ```text 2 | SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2019 Intel Corporation 4 | ``` 5 | 6 | # Kubernetes Dashboard in Smart Edge Open 7 | - [Overview](#overview) 8 | - [Details - Kubernetes Dashboard support in Smart Edge Open](#details---kubernetes-dashboard-support-in-smart-edge-open) 9 | - [TLS encryption](#tls-encryption) 10 | - [Usage](#usage) 11 | - [Access rights](#access-rights) 12 | - [Reference](#reference) 13 | 14 | ## Overview 15 | 16 | Kubernetes Dashboard is a web user interface for Kubernetes. User can use Dashboard to check the state of deployed pods, get information about all kinds of deployments that are being run on cluster and be provided with lots of useful insights about cluster and running applications. In Smart Edge Open environment Kubernetes Dashboard will be deployed with read-only access to all information except Kubernetes' Secrets. User can modify this role to disable or enable accesses as explained in [Access rights](#access-rights) chapter of this document. 17 | 18 | ## Details - Kubernetes Dashboard support in Smart Edge Open 19 | 20 | Kubernetes Dashboard is disabled by default in Converged Edge Experience Kits. It can be enabled by setting variable `kubernetes_dashboard_enable` in `inventory/default/group_vars/all/10-default.yml` file to `true` value: 21 | 22 | ```yaml 23 | # Kubernetes Dashboard 24 | kubernetes_dashboard_enable: false # set to true to enable Kubernetes Dashboard 25 | ``` 26 | 27 | ### TLS encryption 28 | 29 | TLS for Kubernetes dashboard is enabled by default. User can disable TLS encryption using variable `disable_dashboard_tls` in `inventory/default/group_vars/all/10-default.yml`: 30 | 31 | ```yaml 32 | disable_dashboard_tls: false # set to true to disable TLS 33 | ``` 34 | 35 | ### Usage 36 | 37 | User can use Kubernetes Dashboard by browsing `https://You are being redirected to the Smart Edge Open Docs.
12 | 15 | -------------------------------------------------------------------------------- /doc/orchestration/index.html: -------------------------------------------------------------------------------- 1 | 5 | 6 | --- 7 | title: Smart Edge Open Documentation 8 | description: Home 9 | layout: smartedge-open 10 | --- 11 |You are being redirected to the Smart Edge Open Docs.
12 | 15 | -------------------------------------------------------------------------------- /doc/orchestration/smartedge-open-helm-images/smartedge-open-helm-arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/orchestration/smartedge-open-helm-images/smartedge-open-helm-arch.png -------------------------------------------------------------------------------- /doc/orchestration/smartedge-open-helm.md: -------------------------------------------------------------------------------- 1 | ```text 2 | SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2020 Intel Corporation 4 | ``` 5 | 6 | # Helm support in Smart Edge Open 7 | 8 | - [Introduction](#introduction) 9 | - [Architecture](#architecture) 10 | - [Helm Installation](#helm-installation) 11 | - [Helm Charts](#helm-charts) 12 | - [References](#references) 13 | 14 | ## Introduction 15 | Helm is a package manager for Kubernetes\*. It allows developers and operators to easily package, configure, and deploy applications and services onto Kubernetes clusters. For details refer to the [Helm Website](https://helm.sh). With Smart Edge Open, Helm is used to extend the [Converged Edge Experience Kits](https://github.com/smart-edge-open/converged-edge-experience-kits) Ansible\* playbooks to deploy Kubernetes packages. Helm adds considerable flexibility. It enables users to upgrade an existing installation without requiring a re-install. It provides the option to selectively deploy individual microservices if a full installation of Smart Edge Open is not needed. And it provides a standard process to deploy different applications or network functions. This document aims to familiarize the user with Helm and provide instructions on how to use the specific Helm charts available for Smart Edge Open. 16 | 17 | ## Architecture 18 | The below figure shows the architecture for the Smart Edge Open Helm in this document. 19 |  20 | 21 | _Figure - Helm Architecture in Smart Edge Open_ 22 | 23 | 24 | ## Helm Installation 25 | Helm 3 is used for Smart Edge Open. The installation is automatically conducted by the [Converged Edge Experience Kits](https://github.com/smart-edge-open/converged-edge-experience-kits) Ansible playbooks as below: 26 | ```yaml 27 | - role: kubernetes/helm 28 | ``` 29 | To check whether helm is installed successfully, run the following command on the Smart Edge Open controller: 30 | ```bash 31 | $ helm version 32 | version.BuildInfo{Version:"v3.1.2", GitCommit:"d878d4d45863e42fd5cff6743294a11d28a9abce", GitTreeState:"clean", GoVersion:"go1.13.8"} 33 | ``` 34 | ## Helm Charts 35 | Smart Edge Open provides the following helm charts: 36 | - EPA, Telemetry, and k8s plugins: 37 | - CMK, NFD, FPGA Config, SRIOV, VPU, and GPU Device Plugins 38 | - Prometheus\*, NodeExporter, Cadvisor, Collectd, Opentelemetry, PCM, and Grafana\* 39 | - CNI plugins including Multus\* and SRIOV CNI 40 | - Video analytics service 41 | - 5G control plane pods including AF, NEF, OAM, and CNTF 42 | > **NOTE**: NFD, CMK, Prometheus, NodeExporter, and Grafana leverage existing third-party helm charts: [Container Experience Kits](https://github.com/intel/container-experience-kits) and [Helm GitHub\* Repo](https://github.com/helm/charts). For other helm charts, [Converged Edge Experience Kits](https://github.com/smart-edge-open/converged-edge-experience-kits) Ansible playbooks perform automatic charts generation and deployment. 43 | 44 | - Sample applications, network functions, and services that can be deployed and verified on the Smart Edge Open platform: 45 | - Applications 46 | - [CDN Caching Application Helm Charts](https://github.com/smart-edge-open/edgeapps/tree/master/applications/cdn-caching) 47 | - [CDN Transcode Application Helm Charts](https://github.com/OpenVisualCloud/CDN-Transcode-Sample/tree/master/deployment/kubernetes/helm) (Leverage OpenVisualCloud) 48 | - [Smart City Application Helm Charts](https://github.com/OpenVisualCloud/Smart-City-Sample/tree/master/deployment/kubernetes/helm) (Leverage OpenVisualCloud) 49 | - [Telemetry Sample Application Helm Charts](https://github.com/smart-edge-open/edgeapps/tree/master/applications/telemetry-sample-app) 50 | - [EIS Sample Application Helm Charts](https://github.com/smart-edge-open/edgeapps/tree/master/applications/eis-experience-kit) 51 | - Network Functions 52 | - [FlexRAN Helm Charts](https://github.com/smart-edge-open/edgeapps/tree/master/network-functions/ran/charts/du-dev) 53 | - [xRAN Helm Charts](https://github.com/smart-edge-open/edgeapps/tree/master/network-functions/xran/helmcharts/xranchart) 54 | - [UPF Helm Charts](https://github.com/smart-edge-open/edgeapps/tree/master/network-functions/core-network/charts/upf) 55 | 56 | The EPA, Telemetry, and k8s plugins helm chart files will be saved in a specific directory on the Smart Edge Open controller. To modify the directory, change the following variable `ne_helm_charts_default_dir` in the `inventory/default/group_vars/all/10-default.yml` file: 57 | ```yaml 58 | ne_helm_charts_default_dir: /opt/openness/helm-charts/ 59 | ``` 60 | 61 | To check helm charts files, run the following command on the Smart Edge Open controller: 62 | ```bash 63 | $ ls /opt/openness/helm-charts/ 64 | vpu-plugin gpu-plugin node-feature-discovery prometheus 65 | ``` 66 | 67 | To check helm releases, run: 68 | ```bash 69 | $ helm list -A 70 | NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION 71 | nfd-release openness 1 2020-05-08 05:13:54.900713372 +0800 CST deployed node-feature-discovery-0.5.0 0.5.0 72 | prometheus telemetry 1 2020-05-08 05:12:09.346590474 +0800 CST deployed prometheus-11.1.6 2.16.0 73 | intel-gpu-plugin default 1 2020-05-08 03:10:05.464149345 +0800 CST deployed intel-gpu-plugin-0.1.0 0.17.0 74 | intel-vpu-plugin default 1 2020-05-08 03:23:44.595413394 +0800 CST deployed intel-vpu-plugin-0.1.0 0.17.0 75 | ``` 76 | > **NOTE**: Different Smart Edge Open flavors contain different platform features. This is just an example of the helm charts. 77 | 78 | To see the values that took effect for a specific release (for example, `nfd-release`), run: 79 | ```bash 80 | $ helm get values nfd-release -n openness 81 | USER-SUPPLIED VALUES: 82 | image: 83 | repository: 10.240.224.84:5000/node-feature-discovery 84 | tag: v0.5.0 85 | serviceAccount: 86 | name: nfd-master 87 | weavenet_cidr: 10.32.0.0/12 88 | weavenet_cidr_enabled: false 89 | ``` 90 | 91 | To customize values and upgrade, users can modify the `values.yaml` file for the helm charts and use `helm upgrade`. Refer to the [Helm CLI Commands List](https://helm.sh/docs/helm/) for details. 92 | 93 | 94 | ## References 95 | - [Helm Website](https://helm.sh) 96 | - [Container Experience Kits](https://github.com/intel/container-experience-kits) 97 | - [Helm Github Repo](https://github.com/helm/charts) 98 | -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/epc-images/smartedge-open_epc1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/epc-images/smartedge-open_epc1.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/epc-images/smartedge-open_epc2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/epc-images/smartedge-open_epc2.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/epc-images/smartedge-open_epc3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/epc-images/smartedge-open_epc3.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/epc-images/smartedge-open_epc_cnca_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/epc-images/smartedge-open_epc_cnca_1.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/epc-images/smartedge-open_epcconfig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/epc-images/smartedge-open_epcconfig.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/epc-images/smartedge-open_epctest1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/epc-images/smartedge-open_epctest1.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/epc-images/smartedge-open_epctest2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/epc-images/smartedge-open_epctest2.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/epc-images/smartedge-open_epctest3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/epc-images/smartedge-open_epctest3.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/epc-images/smartedge-open_epctest4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/epc-images/smartedge-open_epctest4.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/epc-images/smartedge-open_epcupf_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/epc-images/smartedge-open_epcupf_add.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/epc-images/smartedge-open_epcupf_del.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/epc-images/smartedge-open_epcupf_del.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/epc-images/smartedge-open_epcupf_get.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/epc-images/smartedge-open_epcupf_get.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/epc-images/smartedge-open_highlevel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/epc-images/smartedge-open_highlevel.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/index.html: -------------------------------------------------------------------------------- 1 | 5 | 6 | --- 7 | title: Smart Edge Open Documentation 8 | description: Home 9 | layout: smartedge-open 10 | --- 11 |You are being redirected to the Smart Edge Open Docs.
12 | 15 | -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc-images/5g_edge_data_paths.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/ngc-images/5g_edge_data_paths.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc-images/5g_edge_deployment_scenario1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/ngc-images/5g_edge_deployment_scenario1.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc-images/5g_edge_deployment_scenario2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/ngc-images/5g_edge_deployment_scenario2.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc-images/5g_edge_deployment_scenario3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/ngc-images/5g_edge_deployment_scenario3.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc-images/5g_openess_components.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/ngc-images/5g_openess_components.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc-images/5g_openess_microservices.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/ngc-images/5g_openess_microservices.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc-images/5g_system_architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/ngc-images/5g_system_architecture.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc-images/OAuth2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/ngc-images/OAuth2.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc-images/PFD_Management_transaction_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/ngc-images/PFD_Management_transaction_add.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc-images/PFD_Management_transaction_del.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/ngc-images/PFD_Management_transaction_del.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc-images/PFD_Management_transaction_get.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/ngc-images/PFD_Management_transaction_get.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc-images/PFD_Management_transaction_update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/ngc-images/PFD_Management_transaction_update.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc-images/e2e_edge_deployment_flows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/ngc-images/e2e_edge_deployment_flows.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc-images/oam_af_service_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/ngc-images/oam_af_service_add.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc-images/oam_af_service_del.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/ngc-images/oam_af_service_del.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc-images/oam_af_service_get.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/ngc-images/oam_af_service_get.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc-images/oam_af_service_update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/ngc-images/oam_af_service_update.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc-images/traffic_subscription_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/ngc-images/traffic_subscription_add.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc-images/traffic_subscription_del.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/ngc-images/traffic_subscription_del.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc-images/traffic_subscription_get.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/ngc-images/traffic_subscription_get.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc-images/traffic_subscription_update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/ngc-images/traffic_subscription_update.png -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc_flows/AF_traffic_influence_add.uml: -------------------------------------------------------------------------------- 1 | @startuml 2 | /' SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2020 Intel Corporation 4 | '/ 5 | skinparam monochrome false 6 | skinparam roundcorner 20 7 | skinparam defaultFontName "Intel Clear" 8 | skinparam defaultFontSize 20 9 | skinparam maxmessagesize 300 10 | skinparam sequenceArrowThickness 3 11 | 12 | header Intel Corporation 13 | footer Proprietary and Confidential 14 | title Traffic influencing flows between Smart Edge Open controller and 5G Core 15 | 16 | actor "User/Admin" as user 17 | box "Smart Edge Open Controller components" #LightBlue 18 | participant "UI/CLI" as cnca 19 | participant "AF Microservice" as af 20 | end box 21 | box "5G Core components" #LightGreen 22 | participant "NEF" as nef 23 | note over nef 24 | Smart Edge Open provided 25 | Core component with 26 | limited functionality 27 | end note 28 | participant "NGC\nCP Functions" as ngccp 29 | end box 30 | 31 | group Traffic influence submission flow 32 | user -> cnca : Traffic influencing request 33 | activate cnca 34 | cnca -> af : /af/v1/subscriptions: POST \n {3GPP TS 29.522v15.3 \n Sec. 5.4}* 35 | activate af 36 | af -> nef : /3gpp-traffic-Influence/v1/{afId}/subscriptions : POST \n {3GPP TS 29.522v15.3 \n Sec. 5.4} 37 | activate nef 38 | nef -> nef : NGC_STUB(PCF,UDR,BSF) 39 | nef -> ngccp : {Open: 3rd party NGC integration with Smart Edge Open(NEF)} 40 | ngccp --> nef : 41 | nef --> af : OK: {subscriptionId} \n ERROR: {400/500} 42 | deactivate nef 43 | af --> cnca : OK: {subscriptionId} \n ERROR: {400/500} 44 | deactivate af 45 | cnca --> user : Success: {subscriptionId} 46 | deactivate cnca 47 | end group 48 | 49 | @enduml 50 | 51 | -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc_flows/AF_traffic_influence_delete.uml: -------------------------------------------------------------------------------- 1 | @startuml 2 | /' SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2020 Intel Corporation 4 | '/ 5 | skinparam monochrome false 6 | skinparam roundcorner 20 7 | skinparam defaultFontName "Intel Clear" 8 | skinparam defaultFontSize 20 9 | skinparam maxmessagesize 300 10 | skinparam sequenceArrowThickness 3 11 | 12 | header Intel Corporation 13 | footer Proprietary and Confidential 14 | title Traffic influencing flows between Smart Edge Open controller and 5G Core 15 | 16 | actor "User/Admin" as user 17 | box "Smart Edge Open Controller components" #LightBlue 18 | participant "UI/CLI" as cnca 19 | participant "AF Microservice" as af 20 | end box 21 | box "5G Core components" #LightGreen 22 | participant "NEF" as nef 23 | note over nef 24 | Smart Edge Open provided 25 | Core component with 26 | limited functionality 27 | end note 28 | participant "NGC\nCP Functions" as ngccp 29 | end box 30 | 31 | 32 | group Delete a subscribed traffic influence by subscriptionId 33 | user -> cnca : Delete request by subscriptionId 34 | activate cnca 35 | cnca -> af : /af/v1/subscriptions/{subscriptionId} : DELETE 36 | activate af 37 | af -> nef : /3gpp-traffic-Influence/v1/{afId}/subscriptions/{subscriptionId} : DELETE 38 | activate nef 39 | nef -> nef : NGC_STUB(PCF,UDR,BSF) 40 | nef -> ngccp : {Open: 3rd party NGC integration with Smart Edge Open(NEF)} 41 | ngccp --> nef : 42 | nef --> af : OK : Delete success \n ERROR: {400/500} 43 | deactivate nef 44 | af --> cnca : OK : Delete success \n ERROR: {400/500} 45 | deactivate af 46 | cnca --> user : Success/Error 47 | deactivate cnca 48 | end group 49 | 50 | @enduml 51 | 52 | -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc_flows/AF_traffic_influence_get.uml: -------------------------------------------------------------------------------- 1 | @startuml 2 | /' SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2020 Intel Corporation 4 | '/ 5 | skinparam monochrome false 6 | skinparam roundcorner 20 7 | skinparam defaultFontName "Intel Clear" 8 | skinparam defaultFontSize 20 9 | skinparam maxmessagesize 300 10 | skinparam sequenceArrowThickness 3 11 | 12 | header Intel Corporation 13 | footer Proprietary and Confidential 14 | title Traffic influencing flows between Smart Edge Open controller and 5G Core 15 | 16 | actor "User/Admin" as user 17 | box "Smart Edge Open Controller components" #LightBlue 18 | participant "UI/CLI" as cnca 19 | participant "AF Microservice" as af 20 | end box 21 | box "5G Core components" #LightGreen 22 | participant "NEF" as nef 23 | note over nef 24 | Smart Edge Open provided 25 | Core component with 26 | limited functionality 27 | end note 28 | participant "NGC\nCP Functions" as ngccp 29 | end box 30 | 31 | group Get all subscribed traffic influence info 32 | user -> cnca : Request all traffic influence subscribed 33 | activate cnca 34 | cnca -> af : /af/v1/subscriptions : GET 35 | activate af 36 | af -> nef : /3gpp-traffic-Influence/v1/{afId}/subscriptions : GET 37 | activate nef 38 | nef -> nef : NGC_STUB(PCF,UDR,BSF) 39 | nef -> ngccp : {Open: 3rd party NGC integration with Smart Edge Open(NEF)} 40 | ngccp --> nef : 41 | nef --> af : OK: traffic influence info \n ERROR: {400/500} 42 | deactivate nef 43 | af --> cnca : OK: traffic influence info \n ERROR: {400/500} 44 | deactivate af 45 | cnca --> user : Traffic influence details 46 | deactivate cnca 47 | end group 48 | 49 | group Get subscribed traffic influence info by subscriptionId 50 | user -> cnca : Request traffic influence using subscriptionId 51 | activate cnca 52 | cnca -> af : /af/v1/subscriptions/{subscriptionId} : GET 53 | activate af 54 | af -> nef : /3gpp-traffic-Influence/v1/{afId}/subscriptions/{subscriptionId} : GET 55 | activate nef 56 | nef -> nef : NGC_STUB(PCF,UDR,BSF) 57 | nef -> ngccp : {Open: 3rd party NGC integration with Smart Edge Open(NEF)} 58 | ngccp --> nef : 59 | nef --> af : OK: traffic influence info \n ERROR: {400/500} 60 | deactivate nef 61 | af --> cnca : OK: traffic influence info \n ERROR: {400/500} 62 | deactivate af 63 | cnca --> user : Traffic influence details 64 | deactivate cnca 65 | end group 66 | 67 | @enduml 68 | 69 | -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc_flows/AF_traffic_influence_update.uml: -------------------------------------------------------------------------------- 1 | @startuml 2 | /' SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2020 Intel Corporation 4 | '/ 5 | skinparam monochrome false 6 | skinparam roundcorner 20 7 | skinparam defaultFontName "Intel Clear" 8 | skinparam defaultFontSize 20 9 | skinparam maxmessagesize 300 10 | skinparam sequenceArrowThickness 3 11 | 12 | header Intel Corporation 13 | footer Proprietary and Confidential 14 | title Traffic influencing flows between Smart Edge Open controller and 5G Core 15 | 16 | actor "User/Admin" as user 17 | box "Smart Edge Open Controller components" #LightBlue 18 | participant "UI/CLI" as cnca 19 | participant "AF Microservice" as af 20 | end box 21 | box "5G Core components" #LightGreen 22 | participant "NEF" as nef 23 | note over nef 24 | Smart Edge Open provided 25 | Core component with 26 | limited functionality 27 | end note 28 | participant "NGC\nCP Functions" as ngccp 29 | end box 30 | 31 | group Update a subscribed traffic influence by subscriptionId 32 | user -> cnca : Update request by subscriptionId 33 | activate cnca 34 | cnca -> af : /af/v1/subscriptions/{subscriptionId} : PUT 35 | activate af 36 | af -> nef : /3gpp-traffic-Influence/v1/{afId}/subscriptions/{subscriptionId} : PUT 37 | activate nef 38 | nef -> nef : NGC_STUB(PCF,UDR,BSF) 39 | nef -> ngccp : {Open: 3rd party NGC integration with Smart Edge Open(NEF)} 40 | ngccp --> nef : 41 | nef --> af : OK : Update success, traffic influence info \n ERROR: {400/500} 42 | deactivate nef 43 | af --> cnca : OK : Update success, traffic influence info \n ERROR: {400/500} 44 | deactivate af 45 | cnca --> user : Success/Error 46 | deactivate cnca 47 | end group 48 | 49 | @enduml 50 | 51 | -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc_flows/PFD_Management_transaction_delete.uml: -------------------------------------------------------------------------------- 1 | @startuml 2 | /' SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2020 Intel Corporation 4 | '/ 5 | skinparam monochrome false 6 | skinparam roundcorner 20 7 | skinparam defaultFontName "Intel Clear" 8 | skinparam defaultFontSize 20 9 | skinparam maxmessagesize 300 10 | skinparam sequenceArrowThickness 3 11 | 12 | header Intel Corporation 13 | footer Proprietary and Confidential 14 | 15 | title PFD flow between Openness and 5G core 16 | 17 | actor Admin as user 18 | participant "UI/CLI" as UI 19 | participant "Af Microservice" as AF 20 | participant "NEF" as NEF 21 | participant "NGC CP Function" as 5GC 22 | 23 | box "Smart Edge Open Controller Components" #LightBlue 24 | participant UI 25 | participant AF 26 | end box 27 | 28 | box "5G Core Components" #LightGreen 29 | participant NEF 30 | note over NEF 31 | Smart Edge Open provided 32 | Core component with 33 | limited functionality 34 | end note 35 | participant 5GC 36 | end box 37 | 38 | group Detete PFD transaction with transactionId 39 | user -> UI : Detete request by transactionId 40 | UI -> AF : af/v1/pfd/transactions/{transactionId} DELETE 41 | AF -> NEF : 3gpp-pfd-management/v1/{scsAsId}/transactions/{transactionId} DELETE 42 | NEF -> NEF : NGC_STUB (UDR SMF) 43 | 44 | NEF -> AF : OK \ ERROR 45 | AF -> UI : OK: \ ERROR 46 | UI -> user : Success \ ERROR 47 | end 48 | 49 | group Detete applicationId in PFD transaction 50 | user -> UI : Detete request by applicationId 51 | UI -> AF : af/v1/pfd/transactions/{transactionId}/{transactionId}/applications/{appId} DELETE 52 | AF -> NEF : 3gpp-pfd-management/v1/{scsAsId}/transactions/{transactionId}/{transactionId}/applications/{appId} DELETE 53 | NEF -> NEF : NGC_STUB (UDR SMF) 54 | 55 | NEF -> AF : OK \ ERROR 56 | AF -> UI : OK: \ ERROR 57 | UI -> user : Success \ ERROR 58 | end 59 | 60 | @enduml -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc_flows/PFD_Management_transaction_get.uml: -------------------------------------------------------------------------------- 1 | @startuml 2 | /' SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2020 Intel Corporation 4 | '/ 5 | skinparam monochrome false 6 | skinparam roundcorner 20 7 | skinparam defaultFontName "Intel Clear" 8 | skinparam defaultFontSize 20 9 | skinparam maxmessagesize 300 10 | skinparam sequenceArrowThickness 3 11 | 12 | header Intel Corporation 13 | footer Proprietary and Confidential 14 | 15 | title PFD flow between Openness and 5G core 16 | 17 | 18 | actor Admin as user 19 | participant "UI/CLI" as UI 20 | participant "Af Microservice" as AF 21 | participant "NEF" as NEF 22 | participant "NGC CP Function" as 5GC 23 | 24 | box "Smart Edge Open Controller Components" #LightBlue 25 | participant UI 26 | participant AF 27 | end box 28 | 29 | box "5G Core Components" #LightGreen 30 | participant NEF 31 | note over NEF 32 | Smart Edge Open provided 33 | Core component with 34 | limited functionality 35 | end note 36 | participant 5GC 37 | end box 38 | 39 | group Get all transactions with PFD 40 | user -> UI : Request all PFD transactions 41 | UI -> AF : af/v1/pfd/transaction GET 42 | AF -> NEF : 3gpp-pfd-management/v1/{scsAsId}/transactions/ GET 43 | NEF -> NEF : NGC_STUB (UDR SMF) 44 | 45 | NEF -> AF : OK: PFD information \ ERROR 46 | AF -> UI : OK: PFD information \ ERROR 47 | UI -> user : PFD details 48 | end 49 | 50 | group Get transactions with transactionId 51 | user -> UI : Request transaction with transactionId 52 | UI -> AF : af/v1/pfd/transactions/{transactionId} GET 53 | AF -> NEF : 3gpp-pfd-management/v1/{scsAsId}/transactions/{transactionId} GET 54 | NEF -> NEF : NGC_STUB (UDR SMF) 55 | 56 | NEF -> AF : OK: PFD information \ ERROR 57 | AF -> UI : OK: PFD information \ ERROR 58 | UI -> user : PFD details 59 | end 60 | 61 | group Get transactions with applicationId 62 | user -> UI : Request transactions with applicationId 63 | UI -> AF : af/v1/pfd/transactions/{transactionId}/applications/{appId} GET 64 | AF -> NEF : 3gpp-pfd-management/v1/{scsAsId}/transactions/{transactionId}/applications/{appId} GET 65 | NEF -> NEF : NGC_STUB (UDR SMF) 66 | 67 | NEF -> AF : OK: PFD information \ ERROR 68 | AF -> UI : OK: PFD information \ ERROR 69 | UI -> user : PFD details 70 | end 71 | 72 | @enduml -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc_flows/PFD_Managment_transaction_add.uml: -------------------------------------------------------------------------------- 1 | @startuml 2 | /' SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2020 Intel Corporation 4 | '/ 5 | skinparam monochrome false 6 | skinparam roundcorner 20 7 | skinparam defaultFontName "Intel Clear" 8 | skinparam defaultFontSize 20 9 | skinparam maxmessagesize 300 10 | skinparam sequenceArrowThickness 3 11 | 12 | header Intel Corporation 13 | footer Proprietary and Confidential 14 | 15 | title PFD flow between Openness and 5G core 16 | 17 | 18 | actor "User/Admin" as user 19 | participant "UI/CLI" as UI 20 | participant "Af Microservice" as AF 21 | participant "NEF" as NEF 22 | participant "NGC CP Function" as 5GC 23 | 24 | box "Smart Edge Open Controller Components" #LightBlue 25 | participant UI 26 | participant AF 27 | end box 28 | 29 | box "5G Core Components" #LightGreen 30 | participant NEF 31 | note over NEF 32 | Smart Edge Open provided 33 | Core component with 34 | limited functionality 35 | end note 36 | participant 5GC 37 | end box 38 | 39 | group PFD transaction creation flow 40 | user -> UI : PFD transaction create 41 | UI -> AF : /af/v1/pfd/transaction POST 42 | AF -> NEF : /3gpp-pfd-management/v1/{scsAsId}/transactions/ POST 43 | NEF -> NEF : NGC_STUB (UDR SMF) 44 | 45 | NEF -> AF : OK: transactionId \ ERROR 46 | AF -> UI : OK: transactionId \ ERROR 47 | UI -> user : Success: transactionId 48 | end 49 | @enduml -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc_flows/PFD_management_transaction_update.uml: -------------------------------------------------------------------------------- 1 | @startuml 2 | /' SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2020 Intel Corporation 4 | '/ 5 | skinparam monochrome false 6 | skinparam roundcorner 20 7 | skinparam defaultFontName "Intel Clear" 8 | skinparam defaultFontSize 20 9 | skinparam maxmessagesize 300 10 | skinparam sequenceArrowThickness 3 11 | 12 | header Intel Corporation 13 | footer Proprietary and Confidential 14 | 15 | title PFD flow between Openness and 5G core 16 | 17 | actor Admin as user 18 | participant "UI/CLI" as UI 19 | participant "Af Microservice" as AF 20 | participant "NEF" as NEF 21 | participant "NGC CP Function" as 5GC 22 | 23 | box "Smart Edge Open Controller Components" #LightBlue 24 | participant UI 25 | participant AF 26 | end box 27 | 28 | box "5G Core Components" #LightGreen 29 | participant NEF 30 | note over NEF 31 | Smart Edge Open provided 32 | Core component with 33 | limited functionality 34 | end note 35 | 36 | participant 5GC 37 | end box 38 | 39 | group Update PFD transaction with transactionId 40 | user -> UI : Update request by transactionId 41 | UI -> AF : af/v1/pfd/transactions/{transactionId} PUT 42 | AF -> NEF : 3gpp-pfd-management/v1/{scsAsId}/transactions/{transactionId} PUT 43 | NEF -> NEF : NGC_STUB (UDR SMF) 44 | 45 | NEF -> AF : OK: Updated PFD information \ ERROR 46 | AF -> UI : OK: Updated PFD information \ ERROR 47 | UI -> user : Updated PFD details \ ERROR 48 | end 49 | 50 | group Update applicationId PFD in a transaction 51 | user -> UI : Update request with applicationId 52 | UI -> AF : af/v1/pfd/transactions/{transactionId}/applications/{appId} PUT 53 | AF -> NEF : 3gpp-pfd-management/v1/{scsAsId}/transactions/{transactionId}/applications/{appId} PUT 54 | NEF -> NEF : NGC_STUB (UDR SMF) 55 | 56 | NEF -> AF : OK: Updated PFD information \ ERROR 57 | AF -> UI : OK: Updated PFD information \ ERROR 58 | UI -> user : PFD details updated \ERROR 59 | end 60 | @enduml -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc_flows/e2e_config_flow_for_5g_edge.uml: -------------------------------------------------------------------------------- 1 | @startuml 2 | /' SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2020 Intel Corporation 4 | '/ 5 | skinparam monochrome false 6 | skinparam roundcorner 20 7 | skinparam defaultFontName "Intel Clear" 8 | skinparam defaultFontSize 20 9 | skinparam maxmessagesize 400 10 | skinparam sequenceArrowThickness 3 11 | 12 | header "Intel Corporation" 13 | footer "Proprietary and Confidential" 14 | title "5G End to End Edge deployment flows" 15 | 16 | participant "UE" as ue 17 | 18 | box "5G Core NF components" #LightGreen 19 | participant "AMF" as amf 20 | participant "SMF" as smf 21 | participant "PCF/UDR" as pcf 22 | participant "NEF" as nef 23 | end box 24 | 25 | box "Edge components" #LightBlue 26 | participant "Smart Edge Open\nAF" as af 27 | participant "OSS" as oss 28 | end box 29 | 30 | box "Data path components" 31 | participant "UPF" as upf 32 | participant "Edge" as edge 33 | participant "Cloud" as cloud 34 | end box 35 | 36 | == 5G CN pre-established == 37 | 38 | group PFD Profile management in PCF/UDR by Operator or AF 39 | note over nef 40 | PFD profiles/rules can be created 41 | Network operator or can be pushed 42 | an external NF. 43 | end note 44 | af -> nef : Create PFD rules \n(as suggested in \n3GPP TS 29.502 Sec. 4.18) 45 | 46 | note over pcf 47 | CP components are updated 48 | with new UPF information. 49 | end note 50 | 51 | nef --> pcf : 52 | nef --> af : 53 | smf --> nef : Fetch the added/modified PFD's 54 | 55 | note over upf 56 | New UPF or UPF with new service 57 | is started to serve edge location. 58 | end note 59 | end 60 | 61 | group Traffic influence in UPF by AF 62 | oss -> af : or traffic influence create action\n can be initiated by external component 63 | af -> nef : Create traffic influence rule and \n Request for notification \n DNAI change \n (as suggested in \n3GPP TS 23.502 Sec. 4.3.6.2) 64 | nef --> pcf : configured to PCF or UDR \n based on traffic rule info. 65 | 66 | 67 | smf -> pcf : UE initiated PDU Session Modification Request \n (as suggested in TS 23.502 Sec. 4.3.3.2.1) 68 | pcf --> pcf : or Network iniated PDU Session Modification Request 69 | pcf --> smf : Updated PFD rules (as suggested by AF) 70 | smf --> upf 71 | smf -> nef : DNAI change notification \n (as suggested in TS 23.502 Sec. 4.3.6.3.1) 72 | end 73 | 74 | group Data traffic from UE 75 | ue -> upf : Edge traffic 76 | upf --> edge : Based on updated PFD rules by AF 77 | 78 | ue -> upf : Traffic towards Cloud (or all other traffic) 79 | upf --> cloud : 80 | end 81 | 82 | @enduml -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc_flows/ngcoam_af_service_add.uml: -------------------------------------------------------------------------------- 1 | @startuml 2 | /' SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2020 Intel Corporation 4 | '/ 5 | 6 | skinparam monochrome false 7 | skinparam roundcorner 20 8 | skinparam defaultFontName "Intel Clear" 9 | skinparam defaultFontSize 20 10 | skinparam maxmessagesize 400 11 | skinparam sequenceArrowThickness 3 12 | 13 | header "Intel Corporation" 14 | footer "Proprietary and Confidential" 15 | title "NGC OAM flows between Smart Edge Open Controller and NGC Core OAM Component" 16 | 17 | actor "Admin" as user 18 | box "Smart Edge Open Controller" #LightBlue 19 | participant "UI/CLI" as cnca 20 | end box 21 | box "NGC component" #LightGreen 22 | participant "OAM" as oam 23 | note over oam 24 | Smart Edge Open provided component 25 | with REST based HTTP interface 26 | (for reference) 27 | end note 28 | participant "NGC \n CP Functions" as ngccp 29 | end box 30 | 31 | == AF services operations with NGC Core through OAM Component == 32 | group AF services registration with 5G Core 33 | user -> cnca : Register AF services (UI): \n {dnn, dnai, snssai, tac, dns-ip, upf-ip} 34 | activate cnca 35 | cnca -> oam : /ngcoam/v1/af/services : POST \n {dnn, dnai, snssai, tac, dns-ip, upf-ip} 36 | activate oam 37 | oam -> oam : NGC_OAM_STUB() 38 | oam -> ngccp : {Open: 3rd Party NGC integration with Smart Edge Open(oam)} 39 | ngccp --> oam : 40 | oam --> cnca : OK : {afServiceId} \n ERROR: {400/500} 41 | deactivate oam 42 | cnca --> user : Success/Failure : {afServiceId} 43 | deactivate cnca 44 | end 45 | 46 | @enduml -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc_flows/ngcoam_af_service_delete.uml: -------------------------------------------------------------------------------- 1 | @startuml 2 | /' SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2020 Intel Corporation 4 | '/ 5 | 6 | skinparam monochrome false 7 | skinparam roundcorner 20 8 | skinparam defaultFontName "Intel Clear" 9 | skinparam defaultFontSize 20 10 | skinparam maxmessagesize 400 11 | skinparam sequenceArrowThickness 3 12 | 13 | header "Intel Corporation" 14 | footer "Proprietary and Confidential" 15 | title "NGC OAM flows between Smart Edge Open Controller and NGC Core OAM Component" 16 | 17 | actor "Admin" as user 18 | box "Smart Edge Open Controller" #LightBlue 19 | participant "UI/CLI" as cnca 20 | end box 21 | box "NGC component" #LightGreen 22 | participant "OAM" as oam 23 | note over oam 24 | Smart Edge Open provided component 25 | with REST based HTTP interface 26 | (for reference) 27 | end note 28 | participant "NGC \n CP Functions" as ngccp 29 | end box 30 | 31 | == AF services operations with NGC Core through OAM Component == 32 | 33 | group AF services deregistration with 5G Core 34 | user -> cnca : Deregister AF services from 5G Core (UI): \n {afServiceId} 35 | activate cnca 36 | cnca -> oam : /ngcoam/v1/af/services/{afServiceId}: DELETE 37 | activate oam 38 | oam -> oam : NGC_OAM_STUB() 39 | oam -> ngccp : {Open: 3rd Party NGC integration with Smart Edge Open(oam)} 40 | ngccp --> oam : 41 | oam --> cnca : OK \n ERROR: {400/500} 42 | deactivate oam 43 | cnca --> user : Success/Failure 44 | deactivate cnca 45 | end 46 | 47 | @enduml -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc_flows/ngcoam_af_service_get.uml: -------------------------------------------------------------------------------- 1 | @startuml 2 | /' SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2020 Intel Corporation 4 | '/ 5 | 6 | skinparam monochrome false 7 | skinparam roundcorner 20 8 | skinparam defaultFontName "Intel Clear" 9 | skinparam defaultFontSize 20 10 | skinparam maxmessagesize 400 11 | skinparam sequenceArrowThickness 3 12 | 13 | header "Intel Corporation" 14 | footer "Proprietary and Confidential" 15 | title "NGC OAM flows between Smart Edge Open Controller and NGC Core OAM Component" 16 | 17 | actor "Admin" as user 18 | box "Smart Edge Open Controller" #LightBlue 19 | participant "UI/CLI" as cnca 20 | end box 21 | box "NGC component" #LightGreen 22 | participant "OAM" as oam 23 | note over oam 24 | Smart Edge Open provided component 25 | with REST based HTTP interface 26 | (for reference) 27 | end note 28 | participant "NGC \n CP Functions" as ngccp 29 | end box 30 | 31 | 32 | group Get AF registered DNN services from NGC Core 33 | user -> cnca : Get AF registered DNN services info : {afServiceId} 34 | activate cnca 35 | cnca -> oam : /ngcoam/v1/af/services/{afServiceId}: GET 36 | activate oam 37 | oam -> oam : NGC_OAM_STUB() 38 | oam -> ngccp : {Open: 3rd Party NGC integration with Smart Edge Open(oam)} 39 | ngccp --> oam : 40 | oam --> cnca : OK : {dnn, dnai, snssai, tac, dnsIp, upfIp} \n ERROR: {400/500} 41 | deactivate oam 42 | cnca --> user : DNN services info associated with afServiceId 43 | deactivate cnca 44 | end 45 | 46 | @enduml -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/ngc_flows/ngcoam_af_service_update.uml: -------------------------------------------------------------------------------- 1 | @startuml 2 | /' SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2020 Intel Corporation 4 | '/ 5 | 6 | skinparam monochrome false 7 | skinparam roundcorner 20 8 | skinparam defaultFontName "Intel Clear" 9 | skinparam defaultFontSize 20 10 | skinparam maxmessagesize 400 11 | skinparam sequenceArrowThickness 3 12 | 13 | header "Intel Corporation" 14 | footer "Proprietary and Confidential" 15 | title "NGC OAM flows between Smart Edge Open Controller and NGC Core OAM Component" 16 | 17 | actor "Admin" as user 18 | box "Smart Edge Open Controller" #LightBlue 19 | participant "UI/CLI" as cnca 20 | end box 21 | box "NGC component" #LightGreen 22 | participant "OAM" as oam 23 | note over oam 24 | Smart Edge Open provided component 25 | with REST based HTTP interface 26 | (for reference) 27 | end note 28 | participant "NGC \n CP Functions" as ngccp 29 | end box 30 | 31 | == AF services operations with NGC Core through OAM Component == 32 | 33 | group Update DNS config values for DNN served by Edge DNN 34 | user -> cnca : Update DNS configuration of DNN (UI): \n {afServiceId, dnn, dnai, snssai, tac, dns-ip, upf-ip} 35 | activate cnca 36 | cnca -> oam : /ngcoam/v1/af/services/{afServiceId} : PATCH \n {dnn, dnai, snssai, tac, dns-ip, upf-ip} 37 | activate oam 38 | oam -> oam : NGC_OAM_STUB() 39 | oam -> ngccp : {Open: 3rd Party NGC integration with Smart Edge Open(oam)} 40 | ngccp --> oam : 41 | oam --> cnca : OK \n ERROR: {400/500} 42 | deactivate oam 43 | cnca --> user : Success/Failure 44 | deactivate cnca 45 | end 46 | 47 | @enduml -------------------------------------------------------------------------------- /doc/reference-architectures/core-network/smartedge-open-core.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smart-edge-open/specs/b8cbd91c31862079d691f3570cb5b72bbfcf170a/doc/reference-architectures/core-network/smartedge-open-core.png -------------------------------------------------------------------------------- /doc/reference-architectures/index.html: -------------------------------------------------------------------------------- 1 | 5 | 6 | --- 7 | title: Smart Edge Open Documentation 8 | description: Home 9 | layout: smartedge-open 10 | --- 11 |You are being redirected to the Smart Edge Open Docs.
12 | 15 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 5 | 6 | --- 7 | title: Smart Edge Open Documentation 8 | description: Home 9 | layout: smartedge-open 10 | --- 11 |You are being redirected to the Smart Edge Open Docs.
12 | 15 | -------------------------------------------------------------------------------- /js/custom.js: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: Apache-2.0 2 | * Copyright (c) 2020 Intel Corporation 3 | */ 4 | 5 | jQuery(document).ready(function(){ 6 | 7 | var url = jQuery(location).attr('href').split("/").reverse()[2]; 8 | if(typeof url != 'undefined' && url != ''){ 9 | jQuery('li.'+url).parent('ul.parent').siblings('i').addClass('fa-angle-down').removeClass('fa-angle-right'); 10 | jQuery('li.'+url).css('display','block'); 11 | jQuery('li.'+url).parent('ul.parent').addClass('visible'); 12 | //jQuery('.collaspeContent ul:not(.parent)').children('li').css('display','block'); 13 | } 14 | 15 | 16 | jQuery('.collaspeContent li').each(function(){ 17 | if(jQuery(this).find('ul').length <= 0){ 18 | jQuery(this).find('i').hide(); 19 | } 20 | }); 21 | 22 | jQuery('.collaspeHead').on('click', function(){ 23 | if(jQuery(this).next('.collaspeContent').is(':visible')){ 24 | jQuery(this).next('.collaspeContent').slideUp(); 25 | } 26 | else{ 27 | jQuery(this).children('ul').removeAttr('style'); 28 | jQuery('.collaspeContent').slideUp(); 29 | jQuery(this).next('.collaspeContent').slideDown(); 30 | } 31 | }); 32 | 33 | jQuery('.quickLinkBtn').on('click', function(){ 34 | jQuery('.collapseArea').slideToggle(); 35 | }); 36 | jQuery('.nav-mobile').on('click', function(){ 37 | jQuery('.smartedge-openmenu').slideToggle(); 38 | }); 39 | 40 | 41 | jQuery('.collaspeContent ul li a').click('on',function(e){ 42 | if(jQuery(this).parent('li').hasClass('with-section')){ 43 | if(jQuery(this).parent('li').children('ul').hasClass('visible')){ 44 | jQuery(this).siblings('ul').removeClass('visible'); 45 | jQuery(this).siblings('i').removeClass('fa-angle-down').addClass('fa-angle-right'); 46 | jQuery(this).siblings('ul').find('li').slideUp(); 47 | }else{ 48 | jQuery(this).siblings('ul').addClass('visible'); 49 | jQuery(this).siblings('i').removeClass('fa-angle-right').addClass('fa-angle-down'); 50 | jQuery(this).siblings('ul').find('li').slideDown(); 51 | } 52 | return false; 53 | } 54 | 55 | /*if(jQuery(this).children('a:first').attr('href') == 'javascript:void(0)'){ alert('3'); 56 | e.stopPropagation(); 57 | e.preventDefault(); 58 | e.stopImmediatePropagation(); 59 | }else{ alert('4'); 60 | // document.location.href=jQuery(this).children('a').attr('href'); 61 | return false; 62 | }*/ 63 | }); 64 | 65 | 66 | 67 | }); 68 | if(jQuery(window).width() <= 768 ){ 69 | jQuery(window).on("resize load",function(){ 70 | if (jQuery(window).width() <= 768 ){ 71 | jQuery('.social-down').remove(); 72 | jQuery('.parent').append(''); 73 | jQuery('.social-down').click(function(){ 74 | if(jQuery(this).parent().find(".nav-child").is(':visible')){ 75 | jQuery('.social-down').prev('.nav-child').slideUp(); 76 | } 77 | else{ 78 | jQuery('.social-down').prev('.nav-child').slideUp(); 79 | jQuery(this).parent().find(".nav-child").slideDown(500); 80 | } 81 | }); 82 | } 83 | }); 84 | }; -------------------------------------------------------------------------------- /schema/5goam/5goam.swagger.yaml: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | # Copyright © 2019 Intel Corporation 3 | 4 | swagger: '2.0' 5 | info: 6 | version: 1.0.2 7 | title: 5G OAM Northbound API 8 | contact: 9 | name: intel 10 | url: github.com/smart-edge-open/epcedge 11 | email: support@intel.com 12 | license: 13 | name: Apache 2.0 License 14 | url: 'http://www.apache.org/licenses/LICENSE-2.0.html' 15 | schemes: 16 | - https 17 | consumes: 18 | - application/json 19 | produces: 20 | - application/json 21 | paths: 22 | /ngcoam/v1/af/services: 23 | post: 24 | tags: 25 | - 5GOAM 26 | summary: Add to the registry of afServices 27 | description: >- 28 | Add an afService. One afInstance could have multiple afServices. For 29 | this release, one afService corresponds to one locationService 30 | operationId: Add 31 | parameters: 32 | - in: body 33 | name: body 34 | required: true 35 | schema: 36 | $ref: '#/definitions/locationService' 37 | responses: 38 | '201': 39 | description: Added a new afService. 40 | schema: 41 | $ref: '#/definitions/afServiceRsp' 42 | '400': 43 | description: Invalid properties provided 44 | schema: {} 45 | '403': 46 | description: Unauthorized 47 | schema: {} 48 | get: 49 | tags: 50 | - 5GOAM 51 | summary: GetAll list of afServices 52 | description: Retrieve all the afServices. 53 | operationId: GetAll 54 | parameters: [] 55 | responses: 56 | '200': 57 | description: All the afServices with corresponding afServiceId 58 | schema: 59 | $ref: '#/definitions/afServiceList' 60 | '403': 61 | description: Unauthorized 62 | schema: {} 63 | '/ngcoam/v1/af/services/{afServiceId}': 64 | get: 65 | tags: 66 | - 5GOAM 67 | summary: Get afService by ID 68 | description: 'Retrieves the af service by {afServiceId}' 69 | operationId: Get 70 | parameters: 71 | - name: afServiceId 72 | in: path 73 | required: true 74 | type: string 75 | responses: 76 | '200': 77 | description: The specified afService. 78 | schema: 79 | $ref: '#/definitions/locationService' 80 | '403': 81 | description: Unauthorized 82 | schema: {} 83 | '404': 84 | description: not found 85 | schema: {} 86 | delete: 87 | tags: 88 | - 5GOAM 89 | summary: Delete afService by ID 90 | description: 'Deletes the af service by {afServiceId}' 91 | operationId: Delete 92 | parameters: 93 | - name: afServiceId 94 | in: path 95 | required: true 96 | type: string 97 | responses: 98 | '200': 99 | description: A successful response. 100 | schema: {} 101 | '204': 102 | description: 'Deleted ' 103 | schema: {} 104 | '403': 105 | description: Unauthorized 106 | schema: {} 107 | '404': 108 | description: not found 109 | schema: {} 110 | patch: 111 | tags: 112 | - 5GOAM 113 | summary: Update afService by ID 114 | description: 'Update the af service by {afServiceId}' 115 | operationId: Update 116 | parameters: 117 | - name: afServiceId 118 | in: path 119 | description: The identifier of the af service (read-only) 120 | required: true 121 | type: string 122 | - in: body 123 | name: body 124 | required: true 125 | schema: 126 | $ref: '#/definitions/locationService' 127 | responses: 128 | '200': 129 | description: A successful response. 130 | schema: {} 131 | '204': 132 | description: 'Updated ' 133 | schema: {} 134 | '400': 135 | description: Invalid properties provided 136 | schema: {} 137 | '403': 138 | description: Unauthorized 139 | schema: {} 140 | '404': 141 | description: not found 142 | schema: {} 143 | definitions: 144 | afServiceId: 145 | type: string 146 | description: ID of a single AF Service. 32bit INT value 147 | example: '12345678' 148 | dnn: 149 | type: string 150 | description: data network name 151 | dnai: 152 | type: string 153 | description: dnai 154 | dns: 155 | type: string 156 | description: DNS IPv4 address 157 | upf-ip: 158 | type: string 159 | description: UPF IPv4 address 160 | tac: 161 | type: integer 162 | description: Decimal value of TAC 163 | snssai: 164 | type: string 165 | description: 'Single Network Slice Selection Assistance Information, ''st-sd'' format' 166 | locationService: 167 | type: object 168 | properties: 169 | dnai: 170 | $ref: '#/definitions/dnai' 171 | dnn: 172 | $ref: '#/definitions/dnn' 173 | tac: 174 | $ref: '#/definitions/tac' 175 | priDns: 176 | $ref: '#/definitions/dns' 177 | secDns: 178 | $ref: '#/definitions/dns' 179 | upfIp: 180 | $ref: '#/definitions/upf-ip' 181 | snssai: 182 | $ref: '#/definitions/snssai' 183 | description: Single location service info 184 | afServiceList: 185 | type: array 186 | items: 187 | type: object 188 | properties: 189 | afServiceId: 190 | $ref: '#/definitions/afServiceId' 191 | LocationService: 192 | $ref: '#/definitions/locationService' 193 | description: 'Multiple afServices info ' 194 | afServiceRsp: 195 | type: object 196 | properties: 197 | afServiceId: 198 | $ref: '#/definitions/afServiceId' 199 | description: The afService post response body info 200 | 201 | -------------------------------------------------------------------------------- /schema/auth/auth.swagger.json: -------------------------------------------------------------------------------- 1 | { 2 | "swagger": "2.0", 3 | "info": { 4 | "title": "Auth API", 5 | "version": "1.0.0", 6 | "contact": { 7 | "name": "Smart Edge", 8 | "url": "github.com/smartedgemec/auth", 9 | "email": "support@smart-edge.com" 10 | }, 11 | "license": { 12 | "name": "Apache 2.0 License", 13 | "url": "https://github.com/smartedgemec/schema/blob/master/LICENSE" 14 | } 15 | }, 16 | "schemes": [ 17 | "http" 18 | ], 19 | "consumes": [ 20 | "application/json" 21 | ], 22 | "produces": [ 23 | "application/json" 24 | ], 25 | "paths": { 26 | "/auth": { 27 | "post": { 28 | "description": "Request authentication credentials", 29 | "operationId": "RequestCredentials", 30 | "responses": { 31 | "200": { 32 | "description": "A successful response.", 33 | "schema": { 34 | "$ref": "#/definitions/authCredentials" 35 | } 36 | }, 37 | "201": { 38 | "description": "Authentication credentials created", 39 | "schema": {} 40 | }, 41 | "401": { 42 | "description": "Unauthorized", 43 | "schema": {} 44 | }, 45 | "404": { 46 | "description": "Requested identity not known/found", 47 | "schema": {} 48 | } 49 | }, 50 | "parameters": [ 51 | { 52 | "name": "body", 53 | "in": "body", 54 | "required": true, 55 | "schema": { 56 | "$ref": "#/definitions/authIdentity" 57 | } 58 | } 59 | ], 60 | "tags": [ 61 | "AuthService" 62 | ] 63 | } 64 | } 65 | }, 66 | "definitions": { 67 | "authCredentials": { 68 | "type": "object", 69 | "properties": { 70 | "id": { 71 | "type": "string", 72 | "title": "An identifier for the set of credentials" 73 | }, 74 | "certificate": { 75 | "type": "string", 76 | "title": "A PEM-encoded signed certificate for the CSR" 77 | }, 78 | "ca_chain": { 79 | "type": "array", 80 | "items": { 81 | "type": "string" 82 | }, 83 | "title": "A PEM-encoded certificate chain, starting with the issuing CA and\nending with the root CA (inclusive)" 84 | }, 85 | "ca_pool": { 86 | "type": "array", 87 | "items": { 88 | "type": "string" 89 | }, 90 | "title": "A PEM-encoded CAs to be added to the client's CA pool" 91 | } 92 | }, 93 | "description": "Credentials defines a response for a request to obtain authentication\ncredentials. These credentials may be used to further communicate with\nendpoint(s) that are protected by a form of authentication.\n\nAny strings that are annotated as \"PEM-encoded\" implies that encoding format\nis used, with any newlines indicated with `\\n` characters. Most languages\nprovide encoders that correctly marshal this out. For more information,\nsee the RFC here: https://tools.ietf.org/html/rfc7468" 94 | }, 95 | "authIdentity": { 96 | "type": "object", 97 | "properties": { 98 | "csr": { 99 | "type": "string", 100 | "title": "A PEM-encoded certificate signing request (CSR)" 101 | } 102 | }, 103 | "description": "Identity defines a request to obtain authentication credentials. These\ncredentials would be used to further communicate with endpoint(s) that are\nprotected by a form of authentication.\n\nAny strings that are annotated as \"PEM-encoded\" implies that encoding format\nis used, with any newlines indicated with `\\n` characters. Most languages\nprovide encoders that correctly marshal this out. For more information,\nsee the RFC here: https://tools.ietf.org/html/rfc7468" 104 | } 105 | } 106 | } 107 | -------------------------------------------------------------------------------- /schema/controller/README.md: -------------------------------------------------------------------------------- 1 | ```text 2 | SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2019 Intel Corporation 4 | ``` 5 | 6 | # Controller API 7 | ## Introduction 8 | Controller APIs are important APIs for those managing one or many edge nodes. These APIs allow centralize management of nodes. The API enables a developer to maintain a list of nodes, configure apps, manage policies and DNS, and more. The Controller API represents an abstraction layer for an operations administrator. While individual edge nodes may be managed singularly, the Controller API allows for management in a scalable way. Furthermore, it allows for secure communication to the many edge nodes. 9 | 10 | The Controller API is implemented using HTTP REST. 11 | 12 | ## Contributing 13 | If you wish to make contributions to this schema, please use the YAML version of the Swagger schema to do so. The JSON schema is only provided as a redundant reference and is **100% generated**. You **must** generate the JSON schema after making contributions to the YAML. In the future, this package may include tooling to do so automatically. For now, https://editor.swagger.io is a great tool which can generate the JSON for you from the YAML you've edited. Contributions that do not edit the YAML will not be considered. Contributions that do not have alignment between the YAML and JSON changes will also not be considered. 14 | -------------------------------------------------------------------------------- /schema/cups/README.md: -------------------------------------------------------------------------------- 1 | ```text 2 | SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2019 Intel Corporation 4 | ``` 5 | 6 | # 4G Control and User Plane Separation (CUPS) Management API 7 | 8 | The 4G CUPS Management API defines a common API to manage a 3GPP CUPS element. 9 | This allows a party to configure user planes through a centralized management 10 | interface. 11 | 12 | ## How to Generate OpenAPI 2.0 13 | 14 | First, install all prerequisites: 15 | 16 | * `go install github.com/ben-krieger/grpc-gateway/protoc-gen-swagger` 17 | 18 | Currently we are using a fork of grpc-gateway's library and protoc-gen-swagger 19 | plugin binary in order to support read-only attributes. 20 | 21 | Assuming that your directory structure looks like this 22 | 23 | ``` 24 | ├── code.smart-edge.com 25 | │ └── cups 26 | │ ├── pb 27 | ├── github.com 28 | └── ben-krieger 29 | │ └── grpc-gateway 30 | │ │ ├── protoc-gen-grpc-gateway 31 | │ │ │ ├── descriptor 32 | │ │ │ ├── generator 33 | │ │ │ ├── gengateway 34 | │ │ │ └── httprule 35 | │ │ └── protoc-gen-swagger 36 | │ │ ├── genswagger 37 | │ │ └── options 38 | │ └── grpc-ecosystem 39 | │ ├── grpc-gateway 40 | └── smartedgemec 41 | ├── controller-ce 42 | │ └── cmd 43 | ├── schema 44 | │ ├── cups 45 | │ ├── eaa 46 | │ ├── ela 47 | │ └── pb 48 | └── uml 49 | └── eaa 50 | ``` 51 | 52 | the commands to generate the schema and .pb.go will be 53 | 54 | ``` 55 | protoc -I./pb -I../../ben-krieger/grpc-gateway -I../../ben-krieger/grpc-gateway/third_party/googleapis --swagger_out=allow_repeated_fields_in_body=true,logtostderr=true:cups ./pb/cups.proto 56 | 57 | protoc -I./pb -I../../grpc-ecosystem/grpc-gateway -I../../grpc-ecosystem/grpc-gateway/third_party/googleapis --go_out=plugins=grpc:../../.. ./pb/cups.proto 58 | ``` 59 | -------------------------------------------------------------------------------- /schema/eaa/README.md: -------------------------------------------------------------------------------- 1 | ```text 2 | SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2019 Intel Corporation 4 | ``` 5 | 6 | # Edge Application Agent - EAA 7 | 8 | The Edge Application Agent is a service that runs on the appliance and operates 9 | as a discovery service and basic message bus between applications via pubsub. 10 | The connectivity and discoverability of applications by one another is governed 11 | by an entitlement system and is controlled by policies set with the MEC 12 | Platform Controller. 13 | 14 | The entitlement system is still in its infancy, however, and currently allows 15 | all applications to discover one another as well as publish and subscribe to 16 | all notifications. 17 | 18 | ## How to Generate OpenAPI 2.0 19 | 20 | First, install all prerequisites: 21 | 22 | * `go install github.com/ben-krieger/grpc-gateway/protoc-gen-swagger` 23 | 24 | Currently we are using a fork of grpc-gateway's library and protoc-gen-swagger 25 | plugin binary in order to support read-only attributes and 26 | 27 | Assuming that your directory structure looks like this 28 | 29 | ``` 30 | ├── ben-krieger 31 | │ └── grpc-gateway 32 | │ ├── protoc-gen-grpc-gateway 33 | │ │ ├── descriptor 34 | │ │ ├── generator 35 | │ │ ├── gengateway 36 | │ │ └── httprule 37 | │ └── protoc-gen-swagger 38 | │ ├── genswagger 39 | │ └── options 40 | └── smartedgemec 41 | ├── controller-ce 42 | │ └── cmd 43 | ├── schema 44 | │ ├── eaa 45 | │ └── pb 46 | └── uml 47 | └── eaa 48 | ``` 49 | 50 | the command to generate the schema will be 51 | 52 | ``` 53 | protoc -I./pb -I../../ben-krieger/grpc-gateway -I../../ben-krieger/grpc-gateway/third_party/googleapis --swagger_out=allow_repeated_fields_in_body=true,logtostderr=true:eaa ./pb/eaa.proto 54 | ``` 55 | 56 | ## Sequence Diagram 57 | 58 | @startuml 59 | title EAA 60 | skinparam BoxPadding 10 61 | skinparam ParticipantPadding 10 62 | 63 | box "Applications" #LightSkyBlue 64 | participant "Consumer App" as app1 65 | participant "Producer App" as app2 66 | end box 67 | box "Platform" #LightCoral 68 | participant "EAA" as eaa 69 | end box 70 | 71 | == Connection Establishment == 72 | app1 -> eaa: ""GET /notifications"" 73 | activate eaa 74 | return ""HTTP 101: Upgrade"" 75 | app1 <<-->> eaa: [WSS] Connected 76 | 77 | == Service Activation == 78 | note left of eaa: ""urn = {urn.namespace} + ':' + {urn.id}"" 79 | app2 -> eaa: ""POST /services""\n\ 80 | ""Auth: /CN={urn}""\n\ 81 | ""{ ""\n\ 82 | "" "description": "string"""\n\ 83 | "" "notifications": [""\n\ 84 | "" "name": "string" ""\n\ 85 | "" "version": "string" ""\n\ 86 | "" "description": "string" ""\n\ 87 | "" ]""\n\ 88 | ""} "" 89 | activate eaa 90 | return ""HTTP 200: OK"" 91 | 92 | == Service Discovery == 93 | app1 -> eaa: ""GET /services"" 94 | activate eaa 95 | return ""HTTP 200: application/json""\n\ 96 | ""[""\n\ 97 | "" { ""\n\ 98 | "" "urn": {""\n\ 99 | "" "id": "string"""\n\ 100 | "" "namespace": "string"""\n\ 101 | "" }""\n\ 102 | "" "description": "string" ""\n\ 103 | "" "endpoint_uri": "string" ""\n\ 104 | "" "status": "string" ""\n\ 105 | "" "notifications": [ ""\n\ 106 | "" { ""\n\ 107 | "" "name": "string" ""\n\ 108 | "" "version": "string" ""\n\ 109 | "" "description": "string" ""\n\ 110 | "" } ""\n\ 111 | "" ] ""\n\ 112 | "" } ""\n\ 113 | ""]"" 114 | 115 | == Service Subscription == 116 | app1 -> eaa: ""POST /subscriptions/{urn.namespace}/{urn.id}""\n\ 117 | ""[ ""\n\ 118 | "" "name": "string" ""\n\ 119 | "" "version": "string" ""\n\ 120 | ""] "" 121 | activate eaa 122 | return ""HTTP 201: Subscribed"" 123 | 124 | == Publish Update == 125 | app2 -> eaa: ""POST /notifications""\n\ 126 | ""{""\n\ 127 | "" "name": "string" ""\n\ 128 | "" "version": "string" ""\n\ 129 | "" "payload": "object" ""\n\ 130 | ""}"" 131 | activate eaa 132 | return ""HTTP 202: Accepted"" 133 | group to all subscribers 134 | eaa -->> app1: ""[WSS] DATA""\n\ 135 | ""{""\n\ 136 | "" "name": "string" ""\n\ 137 | "" "version": "string" ""\n\ 138 | "" "payload": "object" ""\n\ 139 | "" "urn": {""\n\ 140 | "" "id": "string"""\n\ 141 | "" "namespace": "string"""\n\ 142 | "" }""\n\ 143 | ""}"" 144 | end 145 | 146 | == List Subscriptions == 147 | app1 -> eaa: ""GET /subscriptions"" 148 | activate eaa 149 | return ""HTTP 200: application/json""\n\ 150 | ""[""\n\ 151 | "" { ""\n\ 152 | "" "urn": {""\n\ 153 | "" "id": "string"""\n\ 154 | "" "namespace": "string"""\n\ 155 | "" }""\n\ 156 | "" "notifications": [ ""\n\ 157 | "" { ""\n\ 158 | "" "name": "string" ""\n\ 159 | "" "version": "string" ""\n\ 160 | "" "description": "string" ""\n\ 161 | "" } ""\n\ 162 | "" ] ""\n\ 163 | "" } ""\n\ 164 | ""]"" 165 | 166 | == Service Unsubscription == 167 | app1 -> eaa: ""DELETE /subscriptions/{urn.namespace}/{urn.id}"" 168 | activate eaa 169 | return ""HTTP 204: Unsubscribed"" 170 | 171 | == Mass Unsubscription == 172 | app1 -> eaa: ""DELETE /subscriptions"" 173 | activate eaa 174 | return ""HTTP 204: Unsubscribed"" 175 | 176 | == Service Deactivation == 177 | app2 -> eaa: ""DELETE /services"" 178 | activate eaa 179 | return ""HTTP 204: Deactivated"" 180 | 181 | @enduml 182 | 183 | -------------------------------------------------------------------------------- /schema/ela/README.md: -------------------------------------------------------------------------------- 1 | ```text 2 | SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2019 Intel Corporation 4 | ``` 5 | 6 | # Edge Lifecycle Agent - ELA 7 | 8 | The Edge Lifecycle Agent is a service that runs on the appliance and operates 9 | as a deployment and lifecycle service for applications and VNFs (Virtual Network 10 | Functions). 11 | 12 | It also provides network interface, network zone, and application/interface policy 13 | services. 14 | 15 | ## Generate Code 16 | 17 | ``` 18 | protoc -I./pb -I../../grpc-ecosystem/grpc-gateway -I../../grpc-ecosystem/grpc-gateway/third_party/googleapis --go_out=plugins=grpc:../../.. ./pb/ela.proto 19 | ``` 20 | -------------------------------------------------------------------------------- /schema/eva/README.md: -------------------------------------------------------------------------------- 1 | ```text 2 | SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2019 Intel Corporation 4 | ``` 5 | 6 | # Edge Virtualization Agent - EVA 7 | 8 | The Edge Virtualization Agent is a service that runs on the appliance and operates 9 | as a mediator between the infrastructure that the apps run on and the other 10 | edge components. 11 | 12 | The EVA abstracts how applications were deployed, whether with native calls to 13 | the appliance or through an external orchestrator, such as Kubernetes for 14 | containerized apps. In order to achieve this, there is also a complementary EVA 15 | service running on the Controller that the appliance EVA service can call when 16 | the appliance was configured as a node/slave of an external orchestrator. 17 | 18 | As an example, an RPC to list the running containers on the node can take two 19 | paths: 20 | 21 | 1. If the node is unorchestrated, then it can call the Docker daemon to get its 22 | response data. 23 | 2. If the node is orchestrated, then it can call the Controller EVA service 24 | which in turn will query the orchestrator for a list of containers on the 25 | requesting appliance. 26 | 27 | ## Generate Code 28 | 29 | ``` 30 | protoc -I./pb -I../../grpc-ecosystem/grpc-gateway -I../../grpc-ecosystem/grpc-gateway/third_party/googleapis --go_out=plugins=grpc:../../.. ./pb/eva.proto 31 | ``` 32 | -------------------------------------------------------------------------------- /schema/kube-ovn/README.md: -------------------------------------------------------------------------------- 1 | ```text 2 | SPDX-License-Identifier: Apache-2.0 3 | Copyright (c) 2019 Intel Corporation 4 | ``` 5 | 6 | # Kube-ovn mode 7 | 8 | Kube-ovn is an extension to the Edge Lifecycle Agent's traffic policies services. 9 | It introduces support for traffic policies similar to Kubernetes' NetworkPolicy. 10 | 11 | ## Generate Code 12 | 13 | ``` 14 | protoc -I/usr/local/include -I./pb -I../../../grpc-ecosystem/grpc-gateway -I../../../grpc-ecosystem/grpc-gateway/third_party/googleapis --go_out=plugins=grpc:../../.. ./pb/kube-ovn.proto 15 | ``` 16 | -------------------------------------------------------------------------------- /schema/pb/auth.proto: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | // Copyright (c) 2019 Intel Corporation 3 | 4 | syntax = "proto3"; 5 | 6 | package openness.auth; 7 | option go_package = "github.com/smart-edge-open/schema;auth"; 8 | 9 | import "google/api/annotations.proto"; 10 | import "protoc-gen-swagger/options/annotations.proto"; 11 | 12 | option (grpc.gateway.protoc_gen_swagger.options.openapiv2_swagger) = { 13 | info: { 14 | title: "Auth API"; 15 | version: "1.0.0"; 16 | contact: { 17 | name: "Smart Edge"; 18 | url: "github.com/smartedgemec/auth"; 19 | email: "support@smart-edge.com"; 20 | }; 21 | license: { 22 | name: "Apache 2.0 License"; 23 | url: "https://github.com/smartedgemec/schema/blob/master/LICENSE"; 24 | }; 25 | }; 26 | schemes: HTTP; 27 | consumes: "application/json"; 28 | produces: "application/json"; 29 | responses: { 30 | key: "401"; 31 | value: { 32 | description: "Unauthorized"; 33 | } 34 | } 35 | }; 36 | 37 | // The AuthService defines endpoints for requesting credentials, which may be 38 | // used for authentication against other endpoints. 39 | // 40 | // This should be used for any services that require authentication as a means 41 | // for unauthenticated parties to gain credentialed access. 42 | service AuthService { 43 | rpc RequestCredentials (Identity) returns (Credentials) { 44 | option (google.api.http) = { 45 | post: "/auth" 46 | body: "*" 47 | }; 48 | option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = { 49 | description: "Request authentication credentials"; 50 | responses: { 51 | key: "201"; 52 | value: { 53 | description: "Authentication credentials created"; 54 | } 55 | } 56 | responses: { 57 | key: "404"; 58 | value: { 59 | description: "Requested identity not known/found"; 60 | } 61 | } 62 | }; 63 | } 64 | } 65 | 66 | // Identity defines a request to obtain authentication credentials. These 67 | // credentials would be used to further communicate with endpoint(s) that are 68 | // protected by a form of authentication. 69 | // 70 | // Any strings that are annotated as "PEM-encoded" implies that encoding format 71 | // is used, with any newlines indicated with `\n` characters. Most languages 72 | // provide encoders that correctly marshal this out. For more information, 73 | // see the RFC here: https://tools.ietf.org/html/rfc7468 74 | message Identity { 75 | // A PEM-encoded certificate signing request (CSR) 76 | string csr = 1; 77 | } 78 | 79 | // Credentials defines a response for a request to obtain authentication 80 | // credentials. These credentials may be used to further communicate with 81 | // endpoint(s) that are protected by a form of authentication. 82 | // 83 | // Any strings that are annotated as "PEM-encoded" implies that encoding format 84 | // is used, with any newlines indicated with `\n` characters. Most languages 85 | // provide encoders that correctly marshal this out. For more information, 86 | // see the RFC here: https://tools.ietf.org/html/rfc7468 87 | message Credentials { 88 | // An identifier for the set of credentials 89 | string id = 1; 90 | // A PEM-encoded signed certificate for the CSR 91 | string certificate = 2; 92 | // A PEM-encoded certificate chain, starting with the issuing CA and 93 | // ending with the root CA (inclusive) 94 | repeated string ca_chain = 3; 95 | // A PEM-encoded CAs to be added to the client's CA pool 96 | repeated string ca_pool = 4; 97 | } 98 | -------------------------------------------------------------------------------- /schema/pb/eva.proto: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | // Copyright (c) 2019 Intel Corporation 3 | 4 | syntax = "proto3"; 5 | 6 | package openness.eva; 7 | option go_package = "github.com/smart-edge-open/eva"; 8 | 9 | import "google/protobuf/empty.proto"; 10 | 11 | // The services below are for calls from the controller to an edge node and so 12 | // do not include the /devices/{id} prefix in the URL since the edge node is 13 | // already known. 14 | 15 | // ApplicationDeploymentService manages application deployments for an appliance. 16 | service ApplicationDeploymentService { 17 | rpc DeployContainer (Application) returns (google.protobuf.Empty) {} 18 | rpc DeployVM (Application) returns (google.protobuf.Empty) {} 19 | rpc Redeploy (Application) returns (google.protobuf.Empty) {} 20 | rpc Undeploy (ApplicationID) returns (google.protobuf.Empty) {} 21 | } 22 | 23 | // ApplicationLifecycleService manages application lifecycles for an appliance. 24 | service ApplicationLifecycleService { 25 | rpc Start (LifecycleCommand) returns (google.protobuf.Empty) {} 26 | rpc Stop (LifecycleCommand) returns (google.protobuf.Empty) {} 27 | rpc Restart (LifecycleCommand) returns (google.protobuf.Empty) {} 28 | rpc GetStatus (ApplicationID) returns (LifecycleStatus) {} 29 | } 30 | 31 | // Application message - contains information about the application we're about 32 | // to deploy (or one already deployed). 33 | // 34 | // Image sources will be added over time. For example, pulling from external 35 | // Docker registries may be supported with a source such as: 36 | // 37 | // // Image will be downloaded from a Harbor registry 38 | // message DockerRegistrySource { 39 | // string repo = 1; 40 | // string tag = 2; 41 | // 42 | // // authentication 43 | // string user = 3; 44 | // string token = 4; 45 | // } 46 | // 47 | // And then adding to the source field: 48 | // 49 | // oneof source { 50 | // ... 51 | // DockerRegistrySource docker_registry = 9 + N; 52 | // } 53 | message Application { 54 | string id = 1; // unique ID generated by Controller 55 | string name = 2; // name identifying the application 56 | string version = 3; // release version of the application 57 | string vendor = 4; // owner of the application 58 | string description = 5; // helpful description of the application 59 | int32 cores = 6; // cores to start the application with (ignored if externally orchestrated) 60 | int32 memory = 7; // memory (in MB) to reserve/allow the application (ignored if externally orchestrated) 61 | repeated PortProto ports = 8; // ports and protocols that the service listens on (for port exposing) 62 | 63 | LifecycleStatus.Status status = 9; // read only 64 | 65 | // Image will be downloaded from an HTTP GET endpoint 66 | message HTTPSource { 67 | // Location of VM image or container tarball. In the case of a 68 | // container, it will be imported with: 69 | // 70 | // docker import ${app.source.uri} ${app.id}:latest 71 | string http_uri = 1; 72 | } 73 | // Source to retrieve the container or VM from. It is expected that more 74 | // sources will be added over time. 75 | oneof source { 76 | HTTPSource http_uri = 10; 77 | } 78 | 79 | // This contains a specification of the EAC features that this application wants. 80 | // (Enhanced App Configuration). This is in Json format - but is at top level 81 | // an array of string key-value pairs. Specific keys are defined by their respective features. 82 | string EACJsonBlob = 11; 83 | 84 | // CNI configuration for the application 85 | CNIConfiguration cniConf = 12; 86 | } 87 | 88 | // CNIConfiguration stores CNI configuration data. 89 | // CNI specification is available at https://github.com/containernetworking/cni/blob/master/SPEC.md 90 | message CNIConfiguration { 91 | string cniConfig = 1; // CNI configuration in form of a JSON 92 | string interfaceName = 2; // Name of the interface 93 | string path = 3; // CNI's path 94 | string args = 4; // CNI's extra args passed as a CNI_ARGS env variable 95 | } 96 | 97 | message ApplicationID { 98 | string id = 1; 99 | } 100 | 101 | message Applications { 102 | repeated Application applications = 1; 103 | } 104 | 105 | // PortProto defines a port and protocol tuple (used for apps & VNFs) 106 | message PortProto { 107 | uint32 port = 1; 108 | string protocol = 2; 109 | } 110 | 111 | message LifecycleCommand { 112 | string id = 1; 113 | enum Command { 114 | START = 0; 115 | STOP = 1; 116 | RESTART = 2; 117 | } 118 | Command cmd = 2; 119 | } 120 | 121 | message LifecycleStatus { 122 | enum Status { 123 | UNKNOWN = 0; 124 | DEPLOYING = 1; 125 | READY = 2; 126 | STARTING = 3; 127 | RUNNING = 4; 128 | STOPPING = 5; 129 | STOPPED = 6; 130 | ERROR = 7; 131 | } 132 | Status status = 1; 133 | } 134 | 135 | // The services below are for calls from an edge node to the controller. 136 | 137 | // The Controller Virtualization Agent has endpoints for requesting information 138 | // on virtualized (VM/container) application state managed by an external 139 | // orchestrator. 140 | service ControllerVirtualizationAgent { 141 | // GetContainerByIP queries an external orchestrator (e.g. Kubernetes) for 142 | // an application running (not stopped) on the Node making the request with 143 | // a given (active) Pod IP address. The identity of the Node making the 144 | // request is determined by the TLS certificate it presents at transport 145 | // authentication time. 146 | rpc GetContainerByIP (ContainerIP) returns (ContainerInfo) {} 147 | } 148 | 149 | message ContainerIP { 150 | string ip = 1; 151 | } 152 | 153 | // ContainerInfo represents the state of a running application. 154 | message ContainerInfo { 155 | string id = 1; // the deployment ID of the application 156 | } 157 | -------------------------------------------------------------------------------- /schema/pb/kube-ovn.proto: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | // Copyright (c) 2019 Intel Corporation 3 | 4 | syntax = "proto3"; 5 | 6 | package openness.kubeovn; 7 | option go_package = "openness.org/kubeovn"; 8 | 9 | import "google/protobuf/empty.proto"; 10 | 11 | // ApplicationPolicyService manages application policies. 12 | service ApplicationPolicyService { 13 | rpc Set (TrafficPolicy) returns (google.protobuf.Empty) {} 14 | } 15 | 16 | // InterfacePolicyService manages interface policies. 17 | service InterfacePolicyService { 18 | rpc Set (TrafficPolicy) returns (google.protobuf.Empty) {} 19 | } 20 | 21 | // TrafficPolicy message contains set of ingress and egress rules 22 | // applied to specific application or interface. 23 | message TrafficPolicy { 24 | string id = 1; // ID of application or interface 25 | repeated IngressRule ingress = 2; // Ingress rules 26 | repeated EgressRule egress = 3; // Egress rules 27 | } 28 | 29 | // IngressRule message contains list of CIDRs and Ports 30 | // that are allowed ingress traffic into application/interface. 31 | message IngressRule { 32 | repeated IPBlock from = 1; 33 | repeated Port ports = 2; 34 | } 35 | 36 | // EgressRule message contains list of CIDRs and Ports 37 | // that are allowed egress traffic out of application/interface. 38 | message EgressRule { 39 | repeated IPBlock to = 1; 40 | repeated Port ports = 2; 41 | } 42 | 43 | // IPBlock message contains whitelisted CIDR and list of 44 | // exceptions to that CIDR. 45 | message IPBlock { 46 | string cidr = 1; 47 | repeated string except = 2; // Array of CIDRs 48 | } 49 | 50 | // Port message contains whitelisted pair of port and protocol. 51 | message Port { 52 | enum Protocol { 53 | TCP = 0; 54 | UDP = 1; 55 | SCTP = 2; 56 | } 57 | 58 | uint32 port = 1; 59 | Protocol protocol = 2; 60 | } 61 | --------------------------------------------------------------------------------