You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

Problem Description:

In a nutshell, How can we provide the physical_netwrok information (which is required by OpenStack when to use SR-IOV) in TOSCA VNFD? 

In OpenStack, when to use SR-IOV, physical_network is needed both by the administrator and the users.

First the administrator need to do some configurations for SR-IOV for various openstack services, e.g.

nova configurations (i.e. nova.conf):

pci_passthrough_whitelist={"address":"0000:08:00.0", "physical_network":"physnetNFV"}

scheduler_default_filters = <defaultlist>, PciPassthroughFilter

neutron ml2 configurations: (ml2.conf)

[ml2_sriov]
supported_pci_vendor_devs = 8086:10fb
agent_required = False
[sriov_nic]
physical_device_mappings = physnetNFV:eth1

To use SR-IOV, users first need to create a network using the appropriate physical_network according the the administrator's configuration, then create a port and launch a VM by that port, e.g.

openstack network create --provider-network-type flat --provider-physical-network physnetNFV sriov-net

... ...

openstack port create --vnic-type direct --network sriov-net ... sriov-port

openstack server create ... ... --nic --port-id=<uuid of port sriov-port created above> ...


In Heat, we could provide the physical_network information in the template as:

  sriov_net:
    type: OS::Neutron::Net
    properties:
      name: sriov_network
      network_type: flat
      physical_network: physnetNFV
  /** Subnet details are not provided for brevity**/
  sriov_port:
     type: OS::Neutron::Port
     properties:
       name: sriov_port
       network_id : { get_resource: sriov_network}
       binding:vnic_type: direct
  virtual_firewall_appliance:
     type: OS::Nova::Server
     image: ....
     networks:
        - port: {get_resource: sriov_port}

Now the question is how about the TOSCA VNFD.

Proposals:

Here we came up with 3 proposals about how to provide such physical_netwrok information in tosca VNFD.


1. Using  physicalNetwork property specific in ONAP R2 DM

In ONAP R2 DM, we have the physicalNetwork property in virtual link profile data type, and we can use that.
   VL_mux_gw_private_net:
      type: tosca.nodes.nfv.VnfVirtualLink
      properties:
        connectivity_type:
          layer_protocol: ipv4
        vl_profile:
          ... ...
          networkName: sriov_net
          cidr: ......
          dhcpEnabled: false
          physicalNetwork: physnetNFV

Pros:

  • no need to change the tosca work flow within ONAP for policy/oof

Cons:

  • VNF provider should NOT know the underlying cloud configuration information, such as physical_network information(Yes, heat template has the same problem), before they create their own VNFD.
  • The physicalNetwork property above is not in IFA011 or SOL001, so it might be removed in the future.
  • SR-IOV requirement is specified as HPA features in CP node in tosca VNFD, ONAP policy generator needs to back reference from CP to corresponding VL to get the relevant information.

2.  Put the information in SRIOV specific HPA feature

Since physical_network information is for SR-IOV only in our case, we could add this information into the HPA feature's configurationValue, in the format of <interface_type>:<physical_network>


  Cp_SRIOV:
      type: tosca.nodes.nfv.VduCp
      properties:
        ... ...
        virtual_network_interface_requirements:
          - name: sriov
            support_mandatory: true
            network_interface_requirements:
              interfaceType: '{"schemaVersion": "0","schemaSelector": "","hardwarePlatform": "generic","mandatory": "true", "configurationValue": "SR-IOV:physnetNFV"}'
            nic_io_requirements:
              pciVendorId: '{"schemaVersion": "0","schemaSelector": "","hardwarePlatform": "generic","mandatory": "true", "configurationValue": "8086"}'
              pciDeviceId: '{"schemaVersion": "0","schemaSelector": "","hardwarePlatform": "generic","mandatory": "true", "configurationValue": "10fb"}'

Pros:

  • no need to change the tosca work flow within ONAP for policy/oof
  • No inconsistency to IFA011 or SOL001. 
  • policy generator can just parse the VNFD Cp definition and generate the corresponding rules for OOF.

Cons:

  • VNF provider should NOT know the underlying cloud configuration information, such as physical_network information(Yes, heat template has the same problem), before they create their own VNFD.


3.  Put the information as a runtime property/input in HPA feature

Ideally, the VNF provider should NOT know the underlying cloud configuration information when he/she create the onboarding VNFD. So we can put the physical_network information as a runtime property/input by using tosca function.


inputs:
    sriov_physical_net :
      type: string
      description: physical network for sriov
   ......
node_templates:
    Cp_SRIOV:
      type: tosca.nodes.nfv.VduCp
      properties:
        ... ...
        virtual_network_interface_requirements:
          - name: sriov
            support_mandatory: true
            network_interface_requirements:
              interfaceType: { concat : [ '{"schemaVersion": "0","schemaSelector": "","hardwarePlatform": "generic","mandatory": "true", "configurationValue": ',
                                          '"SR-IOV:', { get_input: sriov_physical_net }, '"}'
                                        ]
            nic_io_requirements:
              pciVendorId: '{"schemaVersion": "0","schemaSelector": "","hardwarePlatform": "generic","mandatory": "true", "configurationValue": "8086"}'
              pciDeviceId: '{"schemaVersion": "0","schemaSelector": "","hardwarePlatform": "generic","mandatory": "true", "configurationValue": "10fb"}'



Pros:


  • VNF provider doesn't need to know  the underlying cloud configuration information
  • No inconsistency to IFA011 or SOL001. 

Cons:

  • Need to change the ONAP internal work flow. Policy can not generate the corresponding policy rules for OOF until SDNC has finished its operations and provide the tosca input, or unless the service designer can provide the default value of the input parameter.



  • No labels