Introduction/Background:
As part of Core NF Simulators setup, here is the link which gives the design time insights of Core NF Simulators. (Ref: Core-NF-Simulator).
Prerequisites:
- Core NF Simulator uses VES-evelJavaLibrary to send FileReady notification event to VES-Collector. VES-agent communicates to the collector by HTTP only, So in your ONAP environment, one has to enable HTTP connection for VES-collector by running the mentioned as below(reference link https://docs.onap.org/projects/onap-dcaegen2/en/frankfurt/sections/services/ves-http/installation.html):-
- Execute into Bootstrap POD using kubectl command, then VES blueprint is available under /blueprints directory
k8s-ves.yaml
. A corresponding input file is also pre-loaded into the bootstrap pod under /inputs/k8s-ves-inputs.yaml - Deploy blueprint
- $ >> cfy install -b ves-http -d ves-http -i /inputs/k8s-ves-inputs.yaml /blueprints/k8s-ves.yaml
- Execute into Bootstrap POD using kubectl command, then VES blueprint is available under /blueprints directory
Deployment Options:
Core NF Simulators (AMF/SMF/UPF) can be deployed in two ways,
- By using the same 5GC instantiation process (5GC Instantiation and Modify Config flow through CDS) by modifying some minimal parameters in those Simulator Helm Charts related to Docker images and adding config info about the DCAE Collector IP and port.
- Creating the Core NF Simulators as CNF instance with the updated CBA package (i.e. 5GC Instantiation CBA is updated with required slice profile information for PM data simulating)
Note:- No much difference in both the ways when once comes to the simulator implementation, basically, the 5GC instances (5GC Instantiation and Modify Config flow through CDS ) don't contain the slice profile information in the CBA package and some config information about DCAE. In the second approach, you had an updated CBA with slice-profile information and required DCAE config data for simulators in the second way of deployment.
Deployment Steps for Option1:
- Download this Helm Package for core simulators deployments instead of helm charts provided in this 5GC Instantiation and Modify Config flow through CDS instantiation. (Updated the helm charts with simulator docker images: lttscoresimulators/amf_simulator:v1.5, lttscoresimulators/smf_simulator:v1.5, lttscoresimulators/upf_simulator:v1.5) . After downloading Helm charts, update your DCAE-VES Collector IP, Port & required granularity_period (granularity period value should be in seconds) under values.yaml in all the helm charts of AMF, SMF & UPF.
- Use the same CBA package provided in the 5GC instantiation flow and continue the design and deployment steps for core-simulators instantiations as CNF's.
- AMF/SMF/UPF Simulators will start simulating the PM Data for all the active S-NSSAI's and sends the fileReady notification to VES-Collector based on the granularity period.
- PM files of respective simulators are saved under the SFTP user directory. (i.e. /data/admin/pm_directory/ )
Deployment Steps for Option2:
- TBD: Here with the above helm charts, we will provide you a modified CBA package which has the slice profile information also as part of it, based on that slice profile information simulators will generate the PM data.
Configurations/Troubleshooting:
- Can update the DCAE Collector IP, Port & granularity period any time by logging into the respective CNF simulator pods under /etc/config/ directory
- If the simulators pods are still going into Crashedloop means, the required config files are not updated (i.e. supportedNssai.json, dcae_collector_ip.txt, dcae_collector_port.txt, granularity_period.txt ) properly. So one can test those things by changing the image tag name from v1.5 to test, So that you can enter into the pod and can check the config files. If your config files are proper the simulator application runs without any Crashedloop issue.
Attached Sample Files for AMF/SMF/UPF PM Data:
- AMF Sample PM File: <B20210301.1810+00:00-1811+00:00_AMFJob9_S-NSSAI.xml>
<?xml version='1.0' encoding='UTF-8'?>
<measCollecFile xmlns="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec">
<fileHeader dnPrefix="www.google.com" vendorName="LTTS" fileFormatVersion="32.435 V10.0">
<fileSender senderName="some sender name" senderType="some send Type"/>
<measCollec beginTime="2021-01-03T18:10:06Z"/>
</fileHeader>
<measData>
<managedElement swVersion="r0.1" localDn="AMFMeasurement"/>
<measInfo measInfoId="AMFFunction0">
<job jobId="AMFJob9"/>
<granPeriod endTime="2021-01-03T18:11:06Z" duration="PT60S"/>
<repPeriod duration="PT60S"/>
<measType p="1">RM.RegisteredSubNbrMean.003-100003</measType>
<measValue measObjLdn="some measObjLdn">
<r p="1">1794</r>
<suspect>false</suspect>
</measValue>
</measInfo>
</measData>
<fileFooter>
<measCollec endTime="2021-01-03T18:11:06Z"/>
</fileFooter>
</measCollecFile>
- SMF SAMPLE PM FILE: <B20210301.1813+00:00-1815+00:00_SMFJob8_S-NSSAI.xml>
<?xml version='1.0' encoding='UTF-8'?>
<measCollecFile xmlns="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec">
<fileHeader dnPrefix="www.google.com" vendorName="LTTS" fileFormatVersion="32.435 V10.0">
<fileSender senderName="some sender name" senderType="some send Type"/>
<measCollec beginTime="2021-01-03T18:14:42Z"/>
</fileHeader>
<measData>
<managedElement swVersion="r0.1" localDn="SMFMeasurement"/>
<measInfo measInfoId="SMFFunction0">
<job jobId="SMFJob8"/>
<granPeriod endTime="2021-01-03T18:15:42Z" duration="PT60S"/>
<repPeriod duration="PT60S"/>
<measType p="1">SM.SessionNbrMean.003-100003</measType>
<measValue measObjLdn="some measObjLdn">
<r p="1">4621</r>
<suspect>false</suspect>
</measValue>
</measInfo>
</measData>
<fileFooter>
<measCollec endTime="2021-01-03T18:15:42Z"/>
</fileFooter>
</measCollecFile>
- UPF Sample PM File: <B20210301.1820+00:00-1821+00:00_UPFJob10_S-NSSAI.xml>
<?xml version='1.0' encoding='UTF-8'?>
<measCollecFile xmlns="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec">
<fileHeader dnPrefix="www.google.com" vendorName="LTTS" fileFormatVersion="32.435 V10.0">
<fileSender senderName="some sender name" senderType="some send Type"/>
<measCollec beginTime="2021-01-03T18:20:34Z"/>
</fileHeader>
<measData>
<managedElement swVersion="r0.1" localDn="UPFMeasurement"/>
<measInfo measInfoId="UPFFunction0">
<job jobId="UPFJob10"/>
<granPeriod endTime="2021-01-03T18:21:34Z" duration="PT60S"/>
<repPeriod duration="PT60S"/>
<measType p="1">GTP.InDataOctN3UPF.003-100003</measType>
<measType p="2">GTP.OutDataOctN3UPF.003-100003</measType>
<measType p="3">GTP.InDataOctN3UPFperTimePeriod.003-100003</measType>
<measType p="4">GTP.OutDataOctN3UPFperTimePeriod.003-100003</measType>
<measValue measObjLdn="some measObjLdn">
<r p="1">222</r>
<r p="2">857</r>
<r p="3">222</r>
<r p="4">857</r>
<suspect>false</suspect>
</measValue>
</measInfo>
</measData>
<fileFooter>
<measCollec endTime="2021-01-03T18:21:34Z"/>
</fileFooter>
</measCollecFile>