相信在前兩天介紹的OSM部分,有觀看的大概了解了關於Network Slicing(NS)實例化所需的一個步驟了吧!我們來回顧一下吧。
建立VNF Package ->建立 NS Package ->實例化NS Package
那麼今天我要來介紹如何在kube5gnfvo中建立自己的NS,首先先講一點,由於kube5gnfvo屬於後端部分,因此本篇使用Postman做一個API測試,
首先我們先建立自己的VNF,此次我使用ubuntu做一個VNF的範例,有興趣的可以去kube5gnfvo的example查看,裡面有寫好的template,可以直接使用。
首先,VNF的資料結構如下:
├── Definitions
│ └── ubuntu.yaml
├── Files
│ ├── Artifacts
│ └── ChangeLog.txt
├── TOSCA-Metadata
│ └── TOSCA.meta
└── ubuntu-test.mf
主要部分為Definitions和Files
Definitions放置主要的描述檔案
Files則放置一些配置資料的檔案內容
tosca_definitions_version: tosca_simple_yaml_1_0
topology_template:
node_templates:
VNF1:
type: tosca.nodes.nfv.VNF
properties:
descriptor_id: 367f45fd-1dd2-11b2-8001-080027ubuntu
descriptor_version: 1.0
provider: imac
product_name: ubuntu
software_version: latest
VDU1:
type: tosca.nodes.nfv.Vdu.Compute
properties:
sw_image_data:
name: ubuntu
provider: free5gmano
version: laster
diskFormat: raw
capabilities:
virtual_compute:
properties:
virtual_memory:
virtual_mem_size: 512Mi
virtual_cpu:
num_virtual_cpu: 250m
artifacts:
sw_image:
type: tosca.artifacts.nfv.SwImage
file: ubuntu:20.04
attributes:
namespace: default
replicas: 1
command: [sh, -c, sleep 360d]
CP1:
type: tosca.nodes.nfv.Cpd
properties:
layer_protocol: ipv4
requirements:
virtual_binding: VDU1
virtual_link: VL1
VL1:
type: tosca.nodes.nfv.VnfVirtualLink
properties:
network_name: management
vl_profile:
virtual_link_protocol_data:
l3_protocol_data:
dhcp_enabled: False
CP2:
type: tosca.nodes.nfv.Cpd
properties:
type: ovs
layer_protocol: ipv4
requirements:
virtual_binding: VDU1
virtual_link: VL2
VL2:
type: tosca.nodes.nfv.VnfVirtualLink
properties:
network_name: ovs-net
vl_profile:
virtual_link_protocol_data:
l3_protocol_data:
cidr: 192.168.2.162/23
其中主要幾個欄位為VDU中的 artifacts 、attributes以及VNF的descriptor_id和CP、VL的內容
VDU
- artifacts: 這裡去設定image使用的內容部分,當然還有其他的欄位或功能部分,可以查看example內的其他template做參考
- attributes:一些額外的變數部分,我在此使用command而已,還有許多內容可以參考其他template
VNF
*descriptor_id:此欄位定義VNF的ID的部分,在NS描述中,會使用到此ID作為VNF綁定在NS上的一句
CP、VL:主要為連線部分的設定,也就是拿來設定VNF本身的介面內容的部分,此區有使用兩個CP和VL,也就是會有本身的介面和一個第二介面,此處第二介面使用的是ovs
其他的內容主要都是給其他使用者使用的欄位,主要都不是給MANO做佈署服務的部分,所以就不一一做解釋了。剩下的其他資料結構,主要是用來查詢檔案的位置以及給使用者解釋使用的欄位,這部分相信看到這裡的應該都有了基礎知識,我也不一一贅述了。
關於NS的資料結構的部分
├── Definitions
│ └── ns.yaml
├── Files
│ └── ChangeLog.txt
├── TOSCA-Metadata
│ └── TOSCA.meta
└── free5gc-ns.mf
ns.yaml
tosca_definitions_version: tosca_simple_yaml_1_2
topology_template:
node_templates:
NS1:
type: tosca.nodes.nfv.NS
properties:
descriptor_id: df931963-ebce-40e4-b810-9fe5c3450b80
designer: imac
version: 1.0
name: ubuntu-ns
invariant_id: 1111-2222-aaaa-bbbb
constituent_vnfd:
- vnfd_id: 367f45fd-1dd2-11b2-8001-080027ubuntu
主要介紹 descriptor_id、constituent_vnfd這兩個變數部分
descriptor_id:此為NS的欄位部分,主要給實例化時做搜尋使用的部分。
constituent_vnfd:這邊可以放多個vnf的ID,也就是剛剛介紹VNF與NS做綁定的欄位部分。
多VNF的ns.yaml
tosca_definitions_version: tosca_simple_yaml_1_2
topology_template:
node_templates:
NS1:
type: tosca.nodes.nfv.NS
properties:
descriptor_id: df931963-ebce-40e4-b810-9fe5c3450b80
designer: imac
version: 1.0
name: ubuntu-ns
invariant_id: 1111-2222-aaaa-bbbb
constituent_vnfd:
- vnfd_id: 367f45fd-1dd2-11b2-8001-080027ubuntu
- vnfd_id: 367f45fd-1dd2-11b2-8001-080028ubuntu
- vnfd_id: 367f45fd-1dd2-11b2-8001-080029ubuntu
...
NS的資料結構也主要是這部分,其他的也跟VNF的資料結構差不多,多是要來查詢資料的檔案位置以及讓使用者讀所使用的。
那麼今天主要介紹一下要如何修改template,只介紹主要會用到的欄位,其他的多是讓人看的,而不是用來佈署使用的。
那麼明天就是最後一天了,就讓我努力的水到最後吧!!