1. RAN-Sim Controller
Steps to build the RAN-Sim Controller setup:
1. Clone and Checkout Ran-Sim Controller
git clone https://github.com/onap-oof-pci-poc/ran-sim.git
cd ran-sim/ransim/
2. Copy ‘m2_settings.xml’ from ‘<YOURFOLDER>/ransim/’ to <HOME>/.m2/ folder as settings.xml file after updating environment specific configurations.
If the file already exists in <HOME>/.m2/ folder, then merge this file content into the existing file appropriately.
Note: settings.xml entries are mandatory to include dependencies.
3. Open the terminal and navigate to the '<YOURFOLDER>/ransim/ransimctrlr'
4. The following capabilities can be modified in the 'ransim.properties' file based on user capabilities and configurations.
File directory:
<YOURFOLDER>/ransim/ransimctrlr/packages/base/src/files/install/servers/ransim/bin/ransim.properties
a) serverIdPrefix:
Netconf server comman prefix (use default value present in the file)
b) numberOfCellsPerNCServer:
Maximum number of cells that can be handled in a single netconf server(use default value present in the file).
c) numberOfProcessPerMc:
Maximum number of netconf servers that can run in a single machine(use default value present in the file, which is for a machine of 8 GB RAM)
(A single netconf server uses approximately 350MB).
d) numberOfMachines:
Maximum number of machines available(use default value present in the file).
e) GridSize:
The number of cells that can be accommodated along one side of the cluster for an auto-generated layout.
However, it has no relevance now, as the initial layout is generated from a file. So use default value as 1.
f) strictValidateRansimAgentsAvailability:
A boolean value to check if any RAN-Sim agents are running (use default value present in the file).
g) sdnrServerIp:
SDNR server IP address (change the value).
h) sdnrServerPort:
SDNR server port number (change the value).
i) sdnrServerUserid:
SDNR server user ID (change the value).
j) sdnrServerPassword:
SDNR server password (change the value).
k) maxPciValueAllowed:
maximum value of the physical cell Id. (Default is 503).
5. To form the cluster from dump file (random simulation) update the cell details in 'SIM_Ran_config.json'. A sample file is also included.
File directory:
<YOURFOLDER>/ransim/ransimctrlr/packages/base/src/files/install/servers/ransim/bin/SIM_Ran_config.json
6. Run the following command in the terminal
mvn clean install
7. Add an entry into /etc/hosts file for ransimsvr from wherever you are accessing the Ransim Web UI
<IP where ransim controller is running> ransimsvr
8. After successful build navigate to '<YOURFOLDER>/ransim/docker' directory.
9. Run the following three commands in the terminal:
'mvn prepare-package'
'docker build -t onap/ransim ransim-docker'
'docker-compose up'
Note: Use docker compose version 1.6.0 or above.
Once the ransim and mariadb containers are started, you can see logs similar to below image:
10. Access the GUI using the following url in the web browser:
‘http://<yourIP>:8081/ransimui/index.html’
11. Access the swagger ui using the following url:
‘http://<yourIP>:8081/ransim/api/swagger-ui.html’
12. Try the following url in Websocket client extension in the web browser to verify the connectivity:
‘ws://<yourIP>:8081/ransim/RansimAgent/hai’
Steps to check the RAN-Sim Controller logs
1. Open the console and enter the following command:
'docker ps'
2. Once the container details is displayed enter the following command:
docker exec -it <CONTAINER ID> bash
3. Navigate to '/opt/app/policy/servers/ransim/logs' using the cd command.
4. Execute the following command to check the logs:
'tail -f ransim-rest.log'
Steps to access the tables in mysql and check table contents
1. Enter the following command in console to access mysql:
'mysql --user=root --password=secret --host=127.0.0.1 --port=43306 ransim_db'
2. Type 'show tables;' to check the and access the tables.
Notify Cell Modification tested with Netconf-console
Pre-Requisites:
- ncclient must be present. If not, run pip install ncclient
- pip install netconf-console
Command to establish session with device:
netconf-console --host netconf-agent-ip --port netconf-agent-port --raw
eg., netconf-console --host 10.143.125.163 --port 50000 --raw
Session will be established with an interactive shell. Run the following command to create subscription:
create-subscription -x honeycomb
For testing,
- Select "Modify" menu by right clicking any cell in Ransim-GUI.
- Change the pcid value and click modify. Modified Successfully message displayed.
- Verify the notification received as below in netconf-console shell. Any issue check honeycomb log.
hc_50000/var/log/honeycomb/honeycomb.log
2. RAN-Sim: Netconf-server(s) (agents) - Extended Honeycomb
This has the following steps:
A. Cloning and building Honeycomb (base) repository
B. Cloning and building enodebsim repository
A. HoneyComb Repository
Clone using following URL:
git clone https://gerrit.fd.io/r/honeycomb
cd honeycomb/
Checkout using the following ChangeId which is part 08_10 version(current release):
git checkout e9d3785d0603bf6e024affafc735641ee312b675
Note: Other versions has installation issues related to dependencies download.
Then do,
mvn clean install
B. enodebsim Repository
This repository has the code we developed.
1. Clone and checkout the latest:
git clone https://github.com/onap-oof-pci-poc/ran-sim.git
git checkout master
cd hcsim-content/
2. Copy ‘m2_settings.xml’ from ‘<YOURFOLDER>/honeycombsim/’ to <HOME>/.m2/ folder as settings.xml file after updating environment specific configurations.
If the file already exists in <HOME>/.m2/ folder, then merge this file content into the existing file appropriately.
3. Copy the enodebsim folder to honeycomb folder mentioned in the previous step.
cp –r enodebsim/ <Your_Folder>/honeycomb/
4. Copy & paste below entry in honeycomb/pom.xml, under <modules>
<module>enodebsim</module>
5. Do the foll. next:
cd <Your_Folder>/honeycomb/
mvn -Dcheckstyle.skip clean install
Note: checkstyle skipped because its not accepting the proposed LICENSE text format in the java source file header comment.
Build should be successful for the following artifacts
enodebsim-api
enodebsim-impl
enodebsim-distribution
enodebsim-aggregator
6. Copy the below folder to a new location:
<Your_Folder>/honeycomb/enodebsim/enodebsim-distribution/target/enodebsim-distribution-1.18.10-hc/enodebsim-distribution-1.18.10
7. Rename it to hc_50001(any appropriate name)
cp –R <Your_Folder>/honeycomb/enodebsim/enodebsim-distribution/target/enodebsim-distribution-1.18.10-hc/enodebsim-distribution-1.18.10 <NewLocation>/hc_50001/
Example repository after executing steps (A) and (B):
1. Single instance of HoneyComb Simulator(configured with port 50000) created for our reference and committed in the below repository path.
git clone https://github.com/onap-oof-pci-poc/ran-sim/Netconf-Agents/
cd Netconf-Agents/hc_50000
it has few configuration files intended to be modified with current environment configuration settings (details given below).
2. Copy below folders from hc_50000, to this new simulator instance(50001):
modules/
config/
yang-mapping/
var/
cp <Your_Folder>/hc_50000/ransom.properties <Your_Folder>/hc_50001/
3. Modify below property file,
<Your_Folder>/hc_50001/ransim.properties,
based on the environment setup and port could be 50001 in this case(Run any number of simulators with different ports).
1. enodebsimIp
Simulator Ip Address, where the HoneyComb instance(hc_50001) is running. eg., 10.143.125.163
2. enodebsimPort
Port number in which Simulator instance to be started. eg., 50001
3. ransimCtrlrIp
Ran-Sim controller Ip Address, to communicate cell topology details. eg.,10.143.125.147
4. ransimCtrlrPort
Port number in which ran-sim controller is started. eg.,8081
4. Similarly, edit the port number(netconf-ssh-binding-port) in the following configuration file to be in sync with ransim properties file.
<Your_Folder>/hc_50001/config/ netconf.json
Start HoneyComb Simulator
cd <Your_Folder>/hc_50001/
./honeycomb
For multiple instance,
Copy the EnodebSimSetup.py, start.sh and stop.sh from <Your_Folder>/Netconf-Agents/ folder to the folder in which hc_50000 is copied,
- Run EnodebSimSetup.py with the number of instances required.
./EnodebSimSetup.py 24 (for 24 instances) - Then run start.sh, which will start all the honeycomb servers in the folder(in this case all 24 agents will be started)
- Use stop.sh, to stop all the netconf servers.
Use netstat command to verify all the honeycomb servers are started.
netstat -navp | grep 500
Check the honeycomb.log in the below folder
<Your_Folder>/hc_50001/var/log/honeycomb/
tail -f honeycomb.log
Successful start yield below log entries,
2018-10-16 14:02:19.975 IST [main] INFO i.f.h.i.d.i.InitializerRegistryAdapter - Honeycomb initialized
2018-10-16 14:02:19.975 IST [main] INFO io.fd.honeycomb.infra.distro.Main - Configuration initialized successfully
2018-10-16 14:02:19.975 IST [main] INFO io.fd.honeycomb.infra.distro.Main - Honeycomb started successfully!
And search for below keyword, to make sure the successful connectivity with Ransim Controller:
“Message received: SetConfigTopology:”
This line of log will print the configuration topology of RAN network pulled from Ransim Controller.
Connecting to device from console:
ssh admin@localhost -p 50001 -s netconf
password: admin
After capabilities listed, enter the following command input to connect to device.
<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<capabilities>
<capability>urn:ietf:params:netconf:base:1.0</capability>
<capability>urn:ietf:params:netconf:capability:candidate:1.0</capability>
</capabilities>
</hello>
]]>]]>
Netconf commands validation:
get:
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="102">
<get/>
</rpc>
]]>]]>
This should show the complete topology dumped or simulated from Ransim Controller.
get-config(with filter):
<rpc message-id="m-1" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-config>
<source>
<running/>
</source>
<filter xmlns:ns0="urn:ietf:params:xml:ns:netconf:base:1.0" ns0:type="subtree">
<radio-access xmlns="org:onap:ccsdk:features:sdnr:northbound:oofpcipoc">
<fap-service>
<alias>Chn0001</alias>
</fap-service>
</radio-access>
</filter>
</get-config>
</rpc>
]]>]]>
edit-config:
<rpc
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="101">
<edit-config>
<target>
<candidate/>
</target>
<config>
<radio-access
xmlns="urn:onf:otcc:wireless:yang:radio-access">
<fap-service>
<alias>60</alias>
<x-0005b9-lte>
<pnf-name>ncserver1001</pnf-name>
<phy-cell-id-in-use>40</phy-cell-id-in-use>
</x-0005b9-lte>
</fap-service>
<fap-service>
<alias>71</alias>
<x-0005b9-lte>
<pnf-name>ncserver1001</pnf-name>
<phy-cell-id-in-use>60</phy-cell-id-in-use>
</x-0005b9-lte>
</fap-service>
</radio-access>
</config>
<default-operation>merge</default-operation>
</edit-config>
</rpc>
]]>]]>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="101">
<commit>
<target>
<candidate/>
</target>
</commit>
</rpc>
]]>]]>
Successful execution of this command should update the pcid value to 60 and the same should be viewed from Ransim GUI.
Edit or delete operation on different cells in the topology of the agent will notify the Ransim Controller which will update GUI & DB to be in Sync.
Additional information
To run each instance of HoneyComb it requires ~353 MB of memory. Still we are working on optimizing the simulator configuration to run only required processes for ONAP setup.
3. PCI-Micro service
Cloning the chart repository
The kubernetes chart can be cloned from https://github.com/onap-oof-pci-poc/pcihms.git
git clone https://github.com/onap-oof-pci-poc/pcihms.git
Building the postgres-init docker image
Naviagate to postgres-scripts folder and run the following command to build the docker image
cd pcihms/postgres_scripts docker build -t postgres-init:1.0 .
Building the Microservice
Navigate to the project's source code (pcihms/pci-handler) and run the following commands
cd pcihms/pci-handler mvn clean install docker build -t pci-handler:1.0 .
Generate apikeys from DMaaP
4 apikey/secret pair should generated from DMaaP(one for management of topics, one for PCI-Microservice, one for Policy and one for SDNR). These apikeys must be set as configuration parameter in PCI-Microservice.
Setting Configuration parameters
The environment variables for the microservice must be set in configMap file in th charts. The following parameters must be set in the configMap.yaml before deploying the microservice. The config file can be found under pcihms/charts/pci-handler/templates/configMap.yaml.
Parameter | Description |
---|---|
DMAAPSERVER | DNS or cluster IP of message router service |
SDNRSERVICE | DNS or cluster IP of SDNR service |
POLICYSERVICE | DNS or cluster IP of pdp service |
OOFSERVICE | DNS or cluster IP of oof-osdf service |
MANAGERAPIKEY | api key/secret generated from DMaaP |
MANAGERSECRET | api key/secret generated from DMaaP |
PCIMSAPIKEY | api key/secret generated from DMaaP |
PCIMSSECRETKEY | api key/secret generated from DMaaP |
SDNRAPIKEY | api key/secret generated from DMaaP |
POLICYAPIKEY | api key/secret generated from DMaaP |
Note : The dns will be <service name>: <namespace>
Build the helm chart
Navigate to the cloned repository and run the following command
cd pcihms/charts make all
Deploying the microservice
DMaaP, Policy, OOF and SDNR must be running before starting the PCI-Microservice. To deploy the microservice, Run the following command
helm install pci-handler/ -n pci-handler --namespace onap