Examples from OSM Hackfests
From OSM Public Wiki
Examples from the 3rd OSM Hackfest
Work material
Examples
Basic VNF and NS
- VNF package: hackfest1-vnf
- NS package: hackfest1-ns
- Image: ubuntu1604
- Reference material: Presentation: creating a basic VNF and NS
VNF diagram
VNF descriptor
vnfd:vnfd-catalog: vnfd: - id: hackfest1-vnf name: hackfest1-vnf short-name: hackfest1-vnf version: '1.0' description: A simple VNF descriptor w/ one VDU logo: osm.png connection-point: - name: vnf-cp0 type: VPORT vdu: - id: hackfest1VM name: hackfest1VM image: ubuntu1604 count: '1' vm-flavor: vcpu-count: '1' memory-mb: '1024' storage-gb: '10' interface: - name: vdu-eth0 type: EXTERNAL virtual-interface: type: VIRTIO external-connection-point-ref: vnf-cp0 mgmt-interface: cp: vnf-cp0
NS diagram
NS descriptor
nsd:nsd-catalog: nsd: - id: hackfest1-ns name: hackfest1-ns short-name: hackfest1-ns description: Simple NS with a single VNF and a single VL version: '1.0' logo: osm.png constituent-vnfd: - vnfd-id-ref: hackfest1-vnf member-vnf-index: '1' vld: - id: mgmtnet name: mgmtnet short-name: mgmtnet type: ELAN mgmt-network: 'true' vnfd-connection-point-ref: - vnfd-id-ref: hackfest1-vnf member-vnf-index-ref: '1' vnfd-connection-point-ref: vnf-cp0
Testing with OSM client
- Onboard VNF packages
osm vnfd-create hackfest1_vnfd.tar.gz osm vnfd-list osm vnfd-show hackfest1-vnf
- Onboard NS packages
osm nsd-create hackfest1_nsd.tar.gz osm nsd-list osm nsd-show hackfest1-ns
- Instantiate
osm ns-create --ns_name hf1 --nsd_name hackfest1-ns \ --vim_account <VIM_ACCOUNT_NAME>|<VIM_ACCOUNT_ID> \ --ssh_keys <KEY1_PUBKEY_FILE> \ --config '{vld: [ {name: mgmtnet, vim-network-name: <VIM_MGMT_NAME>} ] }'
- Check NS status
osm ns-list osm ns-show hf1
- Check VNF instances to see the instance and get the mgmt IP address of the VNF
osm vnf-list osm vnf-show <VNF ID>
- Connect to the VNF
ssh -i <priv_key> ubuntu@<IP>
Testing with OSM UI
- Onboard VNF package
Go to VNF packages Drag and drop the VNF package to the ...
- Onboard NS package
Drag and drop the NS package to the ...
- Instantiate NS
Go to NS packages In hackfest1-ns, click in “Actions: Instantiate NS” Complete the form: -Add a name to the NS instance -Select the Datacenter where the NS will be deployed -Specify in the config section a default VIM network name to map “mgmtnet”: -Paste your public SSH key to get access to the VNF (VMs need to have cloud-init enabled, in this case the hackfest1 example has cloud-init)
- Connect to the VNF:
ssh -i <priv_key> ubuntu@<IP>
Multi-VDU VNF
- VNF package: hackfest2-vnf
- NS package: hackfest2-ns
- Image: ubuntu1604
- Reference material: Presentation: Modeling multi-VDU VNF
VNF diagram
VNF descriptor
vnfd:vnfd-catalog: vnfd: - id: hackfest2-vnf name: hackfest2-vnf short-name: hackfest2-vnf version: '1.0' description: A VNF consisting of 2 VDUs connected to an internal VL logo: osm.png connection-point: - id: vnf-mgmt name: vnf-mgmt short-name: vnf-mgmt type: VPORT - id: vnf-data name: vnf-data short-name: vnf-data type: VPORT mgmt-interface: cp: vnf-mgmt internal-vld: - id: internal name: internal short-name: internal type: ELAN internal-connection-point: - id-ref: mgmtVM-internal - id-ref: dataVM-internal vdu: - id: mgmtVM name: mgmtVM image: US1604 count: '1' vm-flavor: vcpu-count: '1' memory-mb: '1024' storage-gb: '10' interface: - name: mgmtVM-eth0 position: '1' type: EXTERNAL virtual-interface: type: VIRTIO external-connection-point-ref: vnf-mgmt - name: mgmtVM-eth1 position: '2' type: INTERNAL virtual-interface: type: VIRTIO internal-connection-point-ref: mgmtVM-internal internal-connection-point: - id: mgmtVM-internal name: mgmtVM-internal short-name: mgmtVM-internal type: VPORT - id: dataVM name: dataVM image: US1604 count: '1' vm-flavor: vcpu-count: '1' memory-mb: '1024' storage-gb: '10' interface: - name: dataVM-eth0 position: '1' type: INTERNAL virtual-interface: type: VIRTIO internal-connection-point-ref: dataVM-internal - name: dataVM-xe0 position: '2' type: EXTERNAL virtual-interface: type: VIRTIO external-connection-point-ref: vnf-data internal-connection-point: - id: dataVM-internal name: dataVM-internal short-name: dataVM-internal type: VPORT
NS diagram
NS descriptor
nsd:nsd-catalog: nsd: - id: hackfest2-ns name: hackfest2-ns short-name: hackfest2-ns description: NS with 2 VNFs connected by datanet and mgmtnet VLs version: '1.0' logo: osm.png constituent-vnfd: - vnfd-id-ref: hackfest2-vnf member-vnf-index: '1' - vnfd-id-ref: hackfest2-vnf member-vnf-index: '2' vld: - id: mgmtnet name: mgmtnet short-name: mgmtnet type: ELAN mgmt-network: 'true' vim-network-name: mgmt vnfd-connection-point-ref: - vnfd-id-ref: hackfest2-vnf member-vnf-index-ref: '1' vnfd-connection-point-ref: vnf-mgmt - vnfd-id-ref: hackfest2-vnf member-vnf-index-ref: '2' vnfd-connection-point-ref: vnf-mgmt - id: datanet name: datanet short-name: datanet type: ELAN vnfd-connection-point-ref: - vnfd-id-ref: hackfest2-vnf member-vnf-index-ref: '1' vnfd-connection-point-ref: vnf-data - vnfd-id-ref: hackfest2-vnf member-vnf-index-ref: '2' vnfd-connection-point-ref: vnf-data
Testing with OSM client
- Onboard VNF packages
osm vnfd-create hackfest2_vnfd.tar.gz osm vnfd-list osm vnfd-show hackfest2-vnf
- Onboard NS packages
osm nsd-create hackfest2_nsd.tar.gz osm nsd-list osm nsd-show hackfest2-ns
- Instantiate
osm ns-create --ns_name hf2 --nsd_name hackfest2-ns \ --vim_account <VIM_ACCOUNT_NAME>|<VIM_ACCOUNT_ID>
- Check NS status
osm ns-list osm ns-show hf2
- Check VNF instances to see the instance and get the mgmt IP address of the VNF
osm vnf-list osm vnf-show <VNF ID>
- Connect to the VNF
ssh osm@<IP> (pwd:osm4u)
Testing with OSM UI
- Onboard VNF package
Go to VNF packages Drag and drop the VNF package to the ...
- Onboard NS package
Drag and drop the NS package to the ...
- Instantiate NS
Go to NS packages In hackfest2-ns, click in “Actions: Instantiate NS” -Complete the form -Add a name to the NS instance -Select the Datacenter where the NS will be deployed -Specify in the config section a default VIM network name to map “MGMTNET”: -Click the info button to see the mgmt IP address
- Connect to each VNF:
ssh osm@<IP> (pwd:osm4u)
VNF with Day-0 configuration
- VNF package: hackfest3-vnf
- NS package: hackfest3-ns
- Image hackfest3-mgmt: hackfest3-mgmt
- Reference material: Adding day-0 configuration to VNFs
VNF diagram
VNF descriptor
vnfd:vnfd-catalog: vnfd: - id: hackfest3-vnf name: hackfest3-vnf short-name: hackfest3-vnf version: '1.0' description: A VNF consisting of 2 VDUs connected to an internal VL, and one VDU with cloud-init logo: osm.png connection-point: - id: vnf-mgmt name: vnf-mgmt short-name: vnf-mgmt type: VPORT - id: vnf-data name: vnf-data short-name: vnf-data type: VPORT mgmt-interface: cp: vnf-mgmt internal-vld: - id: internal name: internal short-name: internal type: ELAN internal-connection-point: - id-ref: mgmtVM-internal - id-ref: dataVM-internal vdu: - id: mgmtVM name: mgmtVM image: hackfest3-mgmt count: '1' vm-flavor: vcpu-count: '1' memory-mb: '1024' storage-gb: '10' interface: - name: mgmtVM-eth0 position: '1' type: EXTERNAL virtual-interface: type: VIRTIO external-connection-point-ref: vnf-mgmt - name: mgmtVM-eth1 position: '2' type: INTERNAL virtual-interface: type: VIRTIO internal-connection-point-ref: mgmtVM-internal internal-connection-point: - id: mgmtVM-internal name: mgmtVM-internal short-name: mgmtVM-internal type: VPORT cloud-init-file: cloud-config.txt - id: dataVM name: dataVM image: hackfest3-mgmt count: '1' vm-flavor: vcpu-count: '1' memory-mb: '1024' storage-gb: '10' interface: - name: dataVM-eth0 position: '1' type: INTERNAL virtual-interface: type: VIRTIO internal-connection-point-ref: dataVM-internal - name: dataVM-xe0 position: '2' type: EXTERNAL virtual-interface: type: VIRTIO external-connection-point-ref: vnf-data internal-connection-point: - id: dataVM-internal name: dataVM-internal short-name: dataVM-internal type: VPORT
NS diagram
NS descriptor
nsd:nsd-catalog: nsd: - id: hackfest3-ns name: hackfest3-ns short-name: hackfest3-ns description: NS with 2 VNFs hackfest3-vnf connected by datanet and mgmtnet VLs version: '1.0' logo: osm.png constituent-vnfd: - vnfd-id-ref: hackfest3-vnf member-vnf-index: '1' - vnfd-id-ref: hackfest3-vnf member-vnf-index: '2' vld: - id: mgmtnet name: mgmtnet short-name: mgmtnet type: ELAN mgmt-network: 'true' vim-network-name: mgmt vnfd-connection-point-ref: - vnfd-id-ref: hackfest3-vnf member-vnf-index-ref: '1' vnfd-connection-point-ref: vnf-mgmt - vnfd-id-ref: hackfest3-vnf member-vnf-index-ref: '2' vnfd-connection-point-ref: vnf-mgmt - id: datanet name: datanet short-name: datanet type: ELAN vnfd-connection-point-ref: - vnfd-id-ref: hackfest3-vnf member-vnf-index-ref: '1' vnfd-connection-point-ref: vnf-data - vnfd-id-ref: hackfest3-vnf member-vnf-index-ref: '2' vnfd-connection-point-ref: vnf-data
Testing with OSM client
- Onboard VNF packages
osm vnfd-create hackfest3_vnfd.tar.gz osm vnfd-list osm vnfd-show hackfest3-vnf
- Onboard NS packages
osm nsd-create hackfest3_nsd.tar.gz osm nsd-list osm nsd-show hackfest3-ns
- Instantiate
osm ns-create --ns_name hf3 --nsd_name hackfest3-ns \ --vim_account <VIM_ACCOUNT_NAME>|<VIM_ACCOUNT_ID>
- Check NS status
osm ns-list osm ns-show hf3
- Check VNF instances to see the instance and get the mgmt IP address of the VNF
osm vnf-list osm vnf-show <VNF ID>
- Connect to the VNF
ssh osm@<IP> (pwd:osm4u) #The password to the default user was injected via cloud-init Check that Cloud init worked: sudo ls /root/helloworld.txt sudo cat /root/helloworld.txt
Testing with OSM UI
- Onboard VNF package
Go to VNF packages Drag and drop the VNF package to the ...
- Onboard NS package
Drag and drop the NS package to the ...
- Instantiate NS
Go to NS packages In hackfest3-ns, click in “Actions: Instantiate NS” -Complete the form -Add a name to the NS instance -Select the Datacenter where the NS will be deployed -Specify in the config section a default VIM network name to map “MGMTNET”: -Click the info button to see the mgmt IP address
- Connect to the VNF
ssh osm@<IP> (pwd:osm4u) #The password to the default user was injected via cloud-init Check that Cloud init worked: sudo ls /root/helloworld.txt sudo cat /root/helloworld.txt
VNF with EPA requirements
- VNF package: hackfest4-vnf
- NS package: hackfest4-ns
- Image : hackfest-pktgen
- Reference material: Modeling EPA capabilities in your VNF descriptor
VNF diagram
VNF descriptor
vnfd:vnfd-catalog: vnfd: - id: hackfest4-vnf name: hackfest4-vnf short-name: hackfest4-vnf version: '1.0' description: A VNF consisting of 2 VDUs with EPA capabilities connected to an internal VL, mgmtVM VDU with cloud-init logo: osm.png connection-point: - id: vnf-mgmt name: vnf-mgmt short-name: vnf-mgmt type: VPORT - id: vnf-data name: vnf-data short-name: vnf-data type: VPORT mgmt-interface: cp: vnf-mgmt internal-vld: - id: internal name: internal short-name: internal type: ELAN internal-connection-point: - id-ref: mgmtVM-internal - id-ref: dataVM-internal vdu: - id: mgmtVM name: mgmtVM image: hackfest3-mgmt count: '1' vm-flavor: vcpu-count: '1' memory-mb: '1024' storage-gb: '10' guest-epa: cpu-pinning-policy: DEDICATED cpu-thread-pinning-policy: PREFER mempage-size: LARGE numa-node-policy: mem-policy: STRICT node-cnt: '1' node: - id: '1' interface: - name: mgmtVM-eth0 position: '1' type: EXTERNAL virtual-interface: type: VIRTIO external-connection-point-ref: vnf-mgmt - name: mgmtVM-eth1 position: '2' type: INTERNAL virtual-interface: type: VIRTIO internal-connection-point-ref: mgmtVM-internal internal-connection-point: - id: mgmtVM-internal name: mgmtVM-internal short-name: mgmtVM-internal type: VPORT cloud-init-file: cloud-config.txt - id: dataVM name: dataVM image: hackfest-pktgen count: '1' vm-flavor: vcpu-count: '8' memory-mb: '4096' storage-gb: '10' guest-epa: cpu-pinning-policy: DEDICATED cpu-thread-pinning-policy: PREFER mempage-size: LARGE numa-node-policy: mem-policy: STRICT node-cnt: '1' node: - id: '1' interface: - name: eth0 position: '1' type: INTERNAL virtual-interface: type: VIRTIO internal-connection-point-ref: dataVM-internal - name: xe0 position: '2' type: EXTERNAL virtual-interface: type: SR-IOV external-connection-point-ref: vnf-data internal-connection-point: - id: dataVM-internal name: dataVM-internal short-name: dataVM-internal type: VPORT
NS diagram
NS descriptor
nsd:nsd-catalog: nsd: - id: hackfest4-ns name: hackfest4-ns short-name: hackfest4-ns description: NS with 2 VNFs hackfest4-vnf connected by datanet and mgmtnet VLs version: '1.0' logo: osm.png constituent-vnfd: - vnfd-id-ref: hackfest4-vnf member-vnf-index: '1' - vnfd-id-ref: hackfest4-vnf member-vnf-index: '2' vld: - id: mgmtnet name: mgmtnet short-name: mgmtnet type: ELAN mgmt-network: 'true' vim-network-name: mgmt vnfd-connection-point-ref: - vnfd-id-ref: hackfest4-vnf member-vnf-index-ref: '1' vnfd-connection-point-ref: vnf-mgmt - vnfd-id-ref: hackfest4-vnf member-vnf-index-ref: '2' vnfd-connection-point-ref: vnf-mgmt - id: datanet name: datanet short-name: datanet type: ELAN vnfd-connection-point-ref: - vnfd-id-ref: hackfest4-vnf member-vnf-index-ref: '1' vnfd-connection-point-ref: vnf-data - vnfd-id-ref: hackfest4-vnf member-vnf-index-ref: '2' vnfd-connection-point-ref: vnf-data
Testing with OSM client
- Onboard VNF packages
osm vnfd-create hackfest4_vnfd.tar.gz osm vnfd-list osm vnfd-show hackfest4-vnf
- Onboard NS packages
osm nsd-create hackfest4_nsd.tar.gz osm nsd-list osm nsd-show hackfest4-ns
- Instantiate
osm ns-create --ns_name hf4 --nsd_name hackfest4-ns \ --vim_account <VIM_ACCOUNT_NAME>|<VIM_ACCOUNT_ID>
- Check NS status
osm ns-list osm ns-show hf4
- Check VNF instances to see the instance and get the mgmt IP address of the VNF
osm vnf-list osm vnf-show <VNF ID>
- Connect to the VNF (Do the same in both VNFs)
ssh ubuntu@<MGMT_IP> (pwd:osm4u) #The password to the default user was injected via cloud-init Check that EPA is working: ssh -i test4.pem ubuntu<IP_dataVM> Run pktgen
Testing with OSM UI
- Onboard VNF package
Go to VNF packages Drag and drop the VNF package to the ...
- Onboard NS package
Drag and drop the NS package to the ...
- Instantiate NS
Go to NS packages In hackfest4-ns, click in “Actions: Instantiate NS” -Complete the form -Add a name to the NS instance -Select the Datacenter where the NS will be deployed -Specify in the config section a default VIM network name to map “MGMTNET”: -Click the info button to see the mgmt IP address
- Connect to the VNF (Do the same in both VNFs)
ssh ubuntu@<MGMT_IP> (pwd:osm4u) #The password to the default user was injected via cloud-init Check that EPA is working: ssh -i test4.pem ubuntu<IP_dataVM> Run pktgen
VNF with Day-1/Day-2 configuration (adding a charm)
- VNF package: hackfest_simplecharm_vnf
- NS package: hackfest_simplecharm_ns
- Image : hackfest3-mgmt
- Reference material::
VNF diagram
VNF descriptor
vnfd:vnfd-catalog: vnfd: - id: hackfest-simplecharm-vnf name: hackfest-simplecharm-vnf short-name: hackfest-simplecharm-vnf version: '1.0' description: A VNF consisting of 2 VDUs connected to an internal VL, and one VDU with cloud-init logo: osm.png connection-point: - id: vnf-mgmt name: vnf-mgmt short-name: vnf-mgmt type: VPORT - id: vnf-data name: vnf-data short-name: vnf-data type: VPORT mgmt-interface: cp: vnf-mgmt internal-vld: - id: internal name: internal short-name: internal type: ELAN internal-connection-point: - id-ref: mgmtVM-internal - id-ref: dataVM-internal vdu: - id: mgmtVM name: mgmtVM image: hackfest3-mgmt count: '1' vm-flavor: vcpu-count: '1' memory-mb: '1024' storage-gb: '10' interface: - name: mgmtVM-eth0 position: '1' type: EXTERNAL virtual-interface: type: VIRTIO external-connection-point-ref: vnf-mgmt - name: mgmtVM-eth1 position: '2' type: INTERNAL virtual-interface: type: VIRTIO internal-connection-point-ref: mgmtVM-internal internal-connection-point: - id: mgmtVM-internal name: mgmtVM-internal short-name: mgmtVM-internal type: VPORT cloud-init-file: cloud-config.txt - id: dataVM name: dataVM image: hackfest3-mgmt count: '1' vm-flavor: vcpu-count: '1' memory-mb: '1024' storage-gb: '10' interface: - name: dataVM-eth0 position: '1' type: INTERNAL virtual-interface: type: VIRTIO internal-connection-point-ref: dataVM-internal - name: dataVM-xe0 position: '2' type: EXTERNAL virtual-interface: type: VIRTIO external-connection-point-ref: vnf-data internal-connection-point: - id: dataVM-internal name: dataVM-internal short-name: dataVM-internal type: VPORT vnf-configuration: juju: charm: simple initial-config-primitive: - seq: '1' name: config parameter: - name: ssh-hostname value: <rw_mgmt_ip> - name: ssh-username value: ubuntu - name: ssh-password value: osm4u - seq: '2' name: touch parameter: - name: filename value: '/home/ubuntu/first-touch' config-primitive: - name: touch parameter: - name: filename data-type: STRING default-value: '/home/ubuntu/touched'
NS diagram
NS descriptor
nsd:nsd-catalog: nsd: - id: hackfest-simplecharm-ns name: hackfest-simplecharm-ns short-name: hackfest-simplecharm-ns description: NS with 2 VNFs hackfest-simplecharm-vnf connected by datanet and mgmtnet VLs version: '1.0' logo: osm.png constituent-vnfd: - vnfd-id-ref: hackfest-simplecharm-vnf member-vnf-index: '1' - vnfd-id-ref: hackfest-simplecharm-vnf member-vnf-index: '2' vld: - id: mgmtnet name: mgmtnet short-name: mgmtnet type: ELAN mgmt-network: 'true' vim-network-name: mgmt vnfd-connection-point-ref: - vnfd-id-ref: hackfest-simplecharm-vnf member-vnf-index-ref: '1' vnfd-connection-point-ref: vnf-mgmt - vnfd-id-ref: hackfest-simplecharm-vnf member-vnf-index-ref: '2' vnfd-connection-point-ref: vnf-mgmt - id: datanet name: datanet short-name: datanet type: ELAN vnfd-connection-point-ref: - vnfd-id-ref: hackfest-simplecharm-vnf member-vnf-index-ref: '1' vnfd-connection-point-ref: vnf-data - vnfd-id-ref: hackfest-simplecharm-vnf member-vnf-index-ref: '2' vnfd-connection-point-ref: vnf-data
Testing with OSM client
- Onboard VNF packages
osm vnfd-create hackfest3_simplecharm_vnf.tar.gz osm vnfd-list osm vnfd-show hackfest3charmed-vnf
- Onboard NS packages
osm nsd-create hackfest_simplecharm_ns.tar.gz osm nsd-list osm nsd-show hackfest3charmed-ns
- Instantiate
osm ns-create --ns_name hackfest3charmed --nsd_name hackfest3charmed-ns \ --vim_account <VIM_ACCOUNT_NAME>|<VIM_ACCOUNT_ID>
- Check NS status
osm ns-list osm ns-show hackfest3charmed
- Check VNF instances to see the instance and get the mgmt IP address of the VNF
osm vnf-list osm vnf-show <VNF ID>
- Connect to the VNF (Do the same in both VNFs)
ssh ubuntu@<MGMT_IP> (pwd:osm4u) #The password to the default user was injected via cloud-init Check that file /home/ubuntu/first-touch exists (this file is created by the charm): ls /home/ubuntu/first-touch OSM ns-action osm ns-action hackfest3charmed --vnf_name 1 --action_name touch --params '{filename: /home/ubuntu/mytouch1}' (Returns an operation ID) osm ns-op-list hackfest3charmed osm ns-op-show OP_ID -Check that the file were created from the actions ssh ubuntu@<MGMT_IP> ls /home/ubuntu/mytouch1
Testing with OSM UI
- Onboard VNF package
Go to VNF packages Drag and drop the VNF package to the ...
- Onboard NS package
Drag and drop the NS package to the ...
- Instantiate NS
Go to NS packages In hackfest3-simplecharm-ns, click in “Actions: Instantiate NS” -Complete the form -Add a name to the NS instance -Select the Datacenter where the NS will be deployed -Specify in the config section a default VIM network name to map “MGMTNET”: -Click the info button to see the mgmt IP address
- Connect to the VNF (Do the same in both VNFs)
ssh ubuntu@<MGMT_IP> (pwd:osm4u) #The password to the default user was injected via cloud-init Check that file /home/ubuntu/first-touch exists (this file is created by the charm): ls /home/ubuntu/first-touch OSM ns-action osm ns-action hackfest3charmed --vnf_name 1 --action_name touch --params '{filename: /home/ubuntu/mytouch1}' (Returns an operation ID) osm ns-op-list hackfest3charmed osm ns-op-show OP_ID -Check that the file were created from the actions ssh ubuntu@<MGMT_IP> ls /home/ubuntu/mytouch1