Traffic Distribution Requirement v1.3 (Updated 18.02.2019)

Traffic Distribution E2E Sequence Diagrams with Description v1.1 (Updated 28.01.2019)

Presentation covers whole scope of work that is planned for Dublin but it also shows long term plan for functionality that we plan to develop in Dublin and El Alto.

More information is available here: Change Management Dublin Extensions


API Extensions

SO - OOF

The following are the key parameters that needs to be sent in from SO to OOF:


AFFINITY POLICY:

AfFINITY POLICY
{
    "service": "affinityPolicy",
    "policyName": "OSDF_DUBLIN.Affinity_vFW_TD",
    "description": "Affinity policy for vPGN Anchor and vFW destination point",
    "templateVersion": "OpenSource.version.1",
    "version": "oofDublin",
    "priority": "3",
    "riskType": "test",
    "riskLevel": "2",
    "guard": "False",
    "content": {
        "identity": "affinity_vFW_TD",
        "policyScope": [
            "TD",
            "vFW-SINK",
            "vPGN"
        ],
        "affinityProperty": {
            "qualifier": "same",
            "category": "region"
        },
        "policyType": "zone",
        "resources": [
            "vFW-SINK",
            "vPGN"
        ]
    }
}

VFW VNF POLICY:

VFW VNF POLICY
{
    "service": "vnfPolicy",
    "policyName": "OSDF_DUBLIN.vnfPolicy_vFW_TD",
    "description": "vnfPolicy",
    "templateVersion": "OpenSource.version.1",
    "version": "oofDublin",
    "priority": "6",
    "riskType": "test",
    "riskLevel": "3",
    "guard": "False",
    "content": {
        "identity": "vnf_vFW_TD",
        "policyScope": ["TD", "vFW-SINK"],
        "policyType": "vnfPolicy",
        "resources": ["vFW-SINK"],
        "applicableResources": "any",
        "vnfProperties": [{
            "inventoryProvider": "aai",
            "serviceType": "",
            "inventoryType": "vfmodule",
            "customerId": {
            	"get_param": "chosen_customer_id"
            },
            "equipmentRole": "",
            "attributes": {
                "orchestrationStatus": ["active"],
                "provStatus": "ACTIVE",
                "cloudRegionId": {
                    "get_param": "chosen_region"
                },
                "service_instance_id": {
                    "get_param": "service_id"
                }
            }
        }]
    }
}


VPGN VNF POLICY:

VPGN VNF POLICY
{
    "service": "vnfPolicy",
    "policyName": "OSDF_DUBLIN.vnfPolicy_vPGN_TD",
    "description": "vnfPolicy",
    "templateVersion": "OpenSource.version.1",
    "version": "oofDublin",
    "priority": "6",
    "riskType": "test",
    "riskLevel": "3",
    "guard": "False",
    "content": {
        "identity": "vnf_vPGN_TD",
        "policyScope": ["TD", "vPGN"],
        "policyType": "vnfPolicy",
        "resources": ["vPGN"],
        "applicableResources": "any",
        "vnfProperties": [{
            "inventoryProvider": "aai",
            "serviceType": "",
            "inventoryType": "vfmodule",
            "customerId": {
            	"get_param": "chosen_customer_id"
            },
            "equipmentRole": "",
            "attributes": {
                "orchestrationStatus": ["active"],
                "provStatus": "ACTIVE",
                "cloudRegionId": {
                    "get_param": "chosen_region"
                },
                "service_instance_id": {
                    "get_param": "service_id"
                }
            }
        }]
    }
}


QUERY POLICY:

QUERY POLICY
{
  "service": "queryPolicy",
  "policyName": "OSDF_DUBLIN.QueryPolicy_vFW_TD",
  "description": "Query policy for vFW TD",
  "templateVersion": "OpenSource.version.1",
  "version": "oofDublin",
  "priority": "3",
  "riskType": "test",
  "riskLevel": "2",
  "guard": "False",
  "content": {
    "queryProperties": [
      {"attribute":"customerLatitude", "attribute_location": "customerLatitude", "value": 1.1},
      {"attribute":"customerLongitude", "attribute_location": "customerLongitude", "value": 2.2},
      {"attribute":"chosen_region", "attribute_location": "chosenRegion"},
      {"attribute":"chosen_customer_id", "attribute_location": "chosenCustomerId"}
    ],
    "policyScope": [
            "TD",
            "vFW-SINK",
            "vPGN"
    ],
    "policyType": "request_param_query",
    "serviceName": "vFW_TD",
    "identity": "vFW_TD_Query_Policy",
    "resources": [
            "vFW-SINK",
            "vPGN"
    ]
  }
}


OSDF - HAS:

OSDF - HAS
{
    "name": "distribute_traffic_test",
    "files": {},
    "limit": 100,
	"num_solution": 100,
    "timeout": 1200,
    "template": {
        "homing_template_version": "2018-02-01",
        "demands": {
            "vFW-SINK": [{
                "inventory_provider": "aai",
                "inventory_type": "vfmodule",
                "region": "RegionOne",
                "placement_role": "destination",
                "attributes": {
                    "orchestration-status": "active",
                    "prov-status": "ACTIVE",
                    "service_instance_id": "b73bed51-63a4-4660-8a2d-b8d4625b2cc0",
                    "global-customer-id": "Demonstration",
                    "model-invariant-id": "7e12b0e6-de72-45ee-8811-cce6fc31f65d",
        			"model-version-id": "90ce273d-463d-4a54-90fa-db8e90a0f2e2"
                },
                "excluded_candidates": [{
                	"candidate_id": "e765d576-8755-4145-8536-0bb6d9b1dc9a",
                	"inventory_type": "vfmodule"
                }]
            }],
            "vPGN": [{
                "inventory_provider": "aai",
                "inventory_type": "vfmodule",
                "region": "RegionOne",
                "placement_role": "anchor",
                "attributes": {
                    "orchestration-status": "active",
                    "prov-status": "ACTIVE",
                    "service_instance_id": "b73bed51-63a4-4660-8a2d-b8d4625b2cc0",
                    "global-customer-id": "Demonstration",
                    "model-invariant-id": "1dc4fcc4-0895-4b76-8126-34ebfe875859",
        			"model-version-id": "b99f698c-130a-4141-82c9-dbabaed7581d"
                }
            }]
        },
        "constraints": {
        	"vf_module_affinity": {
          		"type": "zone",
			    "demands": ["vFW-SINK", "vPGN"],
			    "properties": {
					"qualifier": "same",
				     "category": "region"
			    }
          }
        }
    }
}

HAS - OSDF:

HAS - OSDF
{
    "plans": [{
                "status": "done",
                "name": "distribute_traffic_test",
                "links": [
                    [{
                        "href": "http://advnet:8091/v1/plans/f75253b2-5501-4d6b-a269-be65730feec4",
                        "rel": "self"
                    }]
                ],
                "recommendations": [{
                    "vPGN": {
                        "attributes": {
                            "nf-type": "vnf",
                            "nf-name": "vFW_PKG_F_CL_AD",
                            "vnf-type": "vFW_CL_AD/vFW PKG VSP CL AD 0",
                            "service_instance_id": "b73bed51-63a4-4660-8a2d-b8d4625b2cc0",
                            "physical-location-id": "clli1",
                            "nf-id": "94203b3a-2aa5-4526-b31a-5b8425e21573",
                            "aic_version": "1",
                            "ipv4-oam-address": "",
                            "host_id": "vFW_PKG_F_CL_AD",
                            "ipv6-oam-address": "",
                            "cloud_owner": "CloudOwner",
                            "vservers": [{
                                "vserver-name": "zdfw1fwl01pgn01",
                                "vserver-id": "9ec2105b-3910-4841-a7e8-2270f385e7dd",
                                "l-interfaces": [{
                                        "macaddr": "fa:16:3e:17:8c:fd",
                                        "interface-name": "vpkg-cl-module-1-vpg_0_unprotected_private_port_0-l2z5ofjvhjme",
                                        "ipv4-addresses": [
                                            "192.168.10.200"
                                        ],
                                        "interface-id": "5b42c4d4-0a69-48ef-b72c-1d305e7acdf8",
                                        "network-name": "",
                                        "network-id": "6ffc5a18-ef93-4fe6-a1eb-ea4f114a48f5",
                                        "ipv6-addresses": []
                                    },
                                    {
                                        "macaddr": "fa:16:3e:8d:d8:da",
                                        "interface-name": "vpkg-cl-module-1-vpg_0_onap_private_port_0-hqtjjcwi57vl",
                                        "ipv4-addresses": [
                                            "10.0.100.2"
                                        ],
                                        "interface-id": "983e876f-f3fa-48ed-976d-8d1c2ae4450b",
                                        "network-name": "",
                                        "network-id": "3f95c73f-dd4e-4344-8ca6-f78d8484c330",
                                        "ipv6-addresses": []
                                    }
                                ]
                            }]
                        },
                        "inventory_provider": "aai",
                        "service_resource_id": "",
                        "candidate": {
                            "is_rehome": "false",
                            "placement_role": "anchor",
                            "location_id": "RegionOne",
                            "inventory_type": "vfmodule",
                            "vim-id": "CloudOwner_RegionOne",
                            "candidate_id": "7039cca0-440a-4570-82bb-a4bc169f5eae",
                            "host_id": "vFW_PKG_F_CL_AD",
                            "cloud_owner": "CloudOwner",
                            "location_type": "att_aic"
                        }
                    },
                    "vFW-SINK": {
                        "attributes": {
                            "nf-type": "vnf",
                            "nf-name": "vFW_SNK_F_CL_AD",
                            "vnf-type": "vFW_CL_AD/vFW SNK VSP CL AD 0",
                            "service_instance_id": "b73bed51-63a4-4660-8a2d-b8d4625b2cc0",
                            "physical-location-id": "clli1",
                            "nf-id": "deecf762-c7b8-437c-930c-dd53b2d216c3",
                            "aic_version": "1",
                            "ipv4-oam-address": "",
                            "host_id": "vFW_SNK_F_CL_AD",
                            "ipv6-oam-address": "",
                            "cloud_owner": "CloudOwner",
                            "vservers": [{
                                    "vserver-name": "vfw-vsn-1-dt_cl",
                                    "vserver-id": "37a5f7cf-598d-4079-8944-55930f3c88b7",
                                    "l-interfaces": [{
                                            "macaddr": "fa:16:3e:f3:a3:de",
                                            "interface-name": "vfw-cl-module-1-vsn_0_int_protected_private_port_0-d4w4exacitlv",
                                            "ipv4-addresses": [
                                                "192.168.20.250"
                                            ],
                                            "interface-id": "234622c6-999d-4a36-a5ca-5811f07f7cad",
                                            "network-name": "",
                                            "network-id": "ba42a380-1e9d-4500-b6fa-ec3d1c6ab8fd",
                                            "ipv6-addresses": []
                                        },
                                        {
                                            "macaddr": "fa:16:3e:9b:44:32",
                                            "interface-name": "vfw-cl-module-1-vsn_0_onap_private_port_0-rq6r3zyempgg",
                                            "ipv4-addresses": [
                                                "10.0.100.3"
                                            ],
                                            "interface-id": "930df5d5-3069-4030-bc99-24c47c68211f",
                                            "network-name": "",
                                            "network-id": "3f95c73f-dd4e-4344-8ca6-f78d8484c330",
                                            "ipv6-addresses": []
                                        }
                                    ]
                                },
                                {
                                    "vserver-name": "vfw-vfw-1-dt_cl",
                                    "vserver-id": "e2db5188-2592-4326-9712-375e7c578e78",
                                    "l-interfaces": [{
                                            "macaddr": "fa:16:3e:ac:8d:cb",
                                            "interface-name": "vfw-cl-module-1-vfw_0_int_protected_private_port_0-m65ztjxw2ev5",
                                            "ipv4-addresses": [
                                                "192.168.20.100"
                                            ],
                                            "interface-id": "f51304b9-b925-4201-a641-d7ce922166f5",
                                            "network-name": "",
                                            "network-id": "ba42a380-1e9d-4500-b6fa-ec3d1c6ab8fd",
                                            "ipv6-addresses": []
                                        },
                                        {
                                            "macaddr": "fa:16:3e:08:b1:c6",
                                            "interface-name": "vfw-cl-module-1-vfw_0_onap_private_port_0-jl4g5tvettac",
                                            "ipv4-addresses": [
                                                "10.0.100.1"
                                            ],
                                            "interface-id": "bbe3979a-a17e-4155-8dc3-692618d48a35",
                                            "network-name": "",
                                            "network-id": "3f95c73f-dd4e-4344-8ca6-f78d8484c330",
                                            "ipv6-addresses": []
                                        },
                                        {
                                            "macaddr": "fa:16:3e:47:c0:d9",
                                            "interface-name": "vfw-cl-module-1-vfw_0_int_unprotected_private_port_0-7okssf24mgsl",
                                            "ipv4-addresses": [
                                                "192.168.10.100"
                                            ],
                                            "interface-id": "545adb7d-6cf0-41f5-8cb9-42fa64221da4",
                                            "network-name": "",
                                            "network-id": "6ffc5a18-ef93-4fe6-a1eb-ea4f114a48f5",
                                            "ipv6-addresses": []
                                        }
                                    ]
                                }
                            ]
                        },
                        "inventory_provider": "aai",
                        "service_resource_id": "",
                        "candidate": {
                            "is_rehome": "false",
                            "placement_role": "destination",
                            "location_id": "RegionOne",
                            "inventory_type": "vfmodule",
                            "vim-id": "CloudOwner_RegionOne",
                            "candidate_id": "e765d576-8755-4145-8536-0bb6d9b1dc9e",
                            "host_id": "vFW_SNK_F_CL_AD",
                            "cloud_owner": "CloudOwner",
                            "location_type": "att_aic"
                        }
                    }
                }]
            }
}

OOF - SO: 

OOF returns to SO structure with Anchor point and related with them destination points. Each candidate is vFModule with extra information required or for filtering or for traffic configuration. For each destination point there is only one anchor point - both have to be located in the same cloud region. OOF firstly selects destinationPoints base on vFModule model name and by belonging to the same virtual service instance.  Then such candidates are filtered on required or excluded candidate basis. Anchor candidates are filtered by the same criteria with such difference that for whole group of destination points that come from the same cloud region only one anchor point is selected - the response should refelct this relation and proposed response is a structure where under each anchor point candidate there are all selected destinations from the same region.

Level of lInterfaces, lagInterfaces and pInterfaces () as well as pnf support can be a stretch goal for Dublin release. Obligatory is VNF support with lInterfaces information under vServers what is required for vFW-DT Traffic Distribution use case. 

Below is the example for the data snapshot that can be found in vFW-DT-AAI.7z. The format of the response is a compilation of data from different data structures - it is explained in the comments for each parameter. For better understanding most of identifiers are kept in the body, however in the final response format they would be removed to keep only data meaningful from configuration point of view.

OOF -> SO
{
    "traffic-distribution-decisions": [
        {
            "anchor-point": {
                "nf-type": "vnf", //[pnf, vnf] - depends on the API used to tretrieve object -> A&AI generic-vnf or pnf
                "nf-id": "ffe99e79-5860-44d7-a56a-a5d21cfbdc21",//vnf-id or pnf-id -> A&AI generic-vnf or pnf
                "nf-name": "vfw-dt-pkg-0",//vnf-name or pnf-name  -> A&AI generic-vnf or pnf
                "ipv4-oam-address": "10.0.110.2",  // -> A&AI generic-vnf or pnf
                "ipv6-oam-address": "",  // -> A&AI generic-vnf or pnf
                "vnf-type": "vfw-dt-service/vFW-PKG-DT-VF 0", // -> A&AI generic-vnf 
                "vf-module-id": "a114e77b-709f-4a5f-a802-6f66bc620848", // -> A&AI generic-vnf/vf-module
                "vf-module-name": "vpkg-dt-module-1", // -> A&AI generic-vnf/vf-module 
                "vf-module-model-invariant-id": "344e26f1-ff29-4570-98fd-2f607b79e609", // -> A&AI generic-vnf/vf-module
                "vf-module-model-version-id": "a8ad1d21-5e9d-4a91-b155-19c5ce5fbe17", // -> A&AI generic-vnf/vf-module
                "vf-module-model-name": "VfwPkgDtVf..base_vpkg..module-0", // -> A&AI sdc model/vf-module
                "cloud-region": "RegionOne", // -> A&AI cloud-inf/v-servers
                "cloud-owner": "RegionOne", // -> A&AI cloud-inf/v-servers
                "vservers": [ // -> A&AI cloud-inf/v-server
                    {
                        "vserver-id": "7f237078-c830-4d98-b8e9-0efc8ca36427", // -> A&AI cloud-inf/v-server
                        "vserver-name": "vpg-vf", // -> A&AI cloud-inf/v-server
                        "l-interfaces": [ // -> A&AI cloud-inf/v-server l-interface
                            {
                                "interface-name": "vpkg-dt-module-1-vpg_private_2_port-xan5gtbmgd74", // -> A&AI cloud-inf/v-server l-interface
                                "macaddr": "fa:16:3e:53:a5:b2", // -> A&AI cloud-inf/v-server l-interface
                                "network-id": "828b9558-b107-4b5e-8272-20744dac6885", // -> A&AI cloud-inf/v-server l-interface
                                "ipv4-addresses": ["10.100.100.2"], // -> A&AI cloud-inf/v-server l-interface
                                "network-name": "onap_oam_ext", //A&AI network
                                "ipv6-addresses": [] // -> A&AI cloud-inf/v-server l-interface
                            },
                            {
                                "interface-name": "vpkg-dt-module-1-vpg_private_1_port-w6av354etjpj", // -> A&AI cloud-inf/v-server l-interface
                                "macaddr": "fa:16:3e:dc:60:d3", // -> A&AI cloud-inf/v-server l-interface
                                "network-id": "848e3e94-d6f8-46b1-bf72-c8477f9a42cb", // -> A&AI cloud-inf/v-server l-interface
                                "network-name": "oam_network_WVly",
                                "ipv4-addresses": ["10.0.110.2"], // -> A&AI cloud-inf/v-server l-interface
                                "ipv6-addresses": [] // -> A&AI cloud-inf/v-server l-interface
                            },
                            {
                                "interface-name": "vpkg-dt-module-1-vpg_private_0_port-fvlhoybxja7p", // -> A&AI cloud-inf/v-server l-interface
                                "macaddr": "fa:16:3e:96:59:0f", // -> A&AI cloud-inf/v-server l-interface
                                "network-id": "676a05c4-65ab-46c7-86a8-6d748e9089c1", // -> A&AI cloud-inf/v-server l-interface
                                "network-name": "unprotected_net_dt",
                                "ipv4-addresses": ["192.168.10.200"], // -> A&AI cloud-inf/v-server l-interface
                                "ipv6-addresses": [] // -> A&AI cloud-inf/v-server l-interface
                            }
                        ]
                    }
                ]
            },
            "destination-points": [
                {//format is the same like for anchorPoint
                    "nf-type": "vnf",
                    "nf-id": "7dad5e9c-7639-454f-8568-e68b52149127",
                    "nf-name": "vfw-dt-snk-1",
                    "ipv4-oam-address": "10.0.110.4",
                    "ipv6-oam-address": "",
                    "vnf-type": "vfw-dt-service/vFW-SNK-DT-VF 1",
                    "vf-module-id": "63ee489f-8e02-4b7b-a49a-8587445c1b1a",
                    "vf-module-name": "vfw-dt-module-2",
                    "vf-module-model-invariant-id": "b50a101d-dbe3-41b1-a04b-3c44b0ec9d94", // -> A&AI generic-vnf/vf-module
                    "vf-module-model-version-id": "d23ad900-9920-49da-94e3-78c76cbdf331", // -> A&AI generic-vnf/vf-module
                    "vf-module-model-name": "VfwSnkDtVf..base_vfw..module-0", // -> A&AI sdc model/vf-module
                    "cloud-region": "RegionOne", // -> A&AI cloud-inf/v-servers
                    "cloud-owner": "RegionOne", // -> A&AI cloud-inf/v-servers
                    "vServers": [
                        {
                            "vserver-id": "b1b43d9b-dd47-42b2-979a-9c6ce9ac431e",
                            "vserver-name": "vfw-vfw-2-dt",
                            "l-interfaces": [
                                {
                                    "interface-name": "vfw-dt-module-2-vfw_private_0_port-gn4ev6oxvvj6",
                                    "macaddr": "fa:16:3e:ec:39:c3",
                                    "network-id": "676a05c4-65ab-46c7-86a8-6d748e9089c1",
                                    "network-name": "unprotected_net_dt",
                                    "ipv4-addresses": ["192.168.10.110"],
                                    "ipv6-addresses": []
                                },
                                {
                                    "interface-name": "vfw-dt-module-2-vfw_private_3_port-cozwyppibrh2",
                                    "macaddr": "fa:16:3e:a1:18:84",
                                    "network-id": "828b9558-b107-4b5e-8272-20744dac6885",                                   
                                    "network-name": "onap_oam_ext",
                                    "ipv4-addresses": ["10.100.100.4"],
                                    "ipv6-addresses": []
                                },
                                {
                                    "interface-name": "vfw-dt-module-2-vfw_private_1_port-cu5rvzfeqsaq",
                                    "macaddr": "fa:16:3e:97:09:70",
                                    "network-id": "0fe48f60-1738-4fd3-941f-63a2c958b9ec",   
                                    "network-name": "protected_net_dt",                                 
                                    "ipv4-addresses": ["192.168.20.110"],
                                    "ipv6-addresses": []
                                },
                                {
                                    "interface-name": "vfw-dt-module-2-vfw_private_2_port-v4lpjnglwdbp",
                                    "macaddr": "fa:16:3e:25:a5:9d",
                                    "network-id": "848e3e94-d6f8-46b1-bf72-c8477f9a42cb",   
                                    "network-name": "oam_network_WVly",                             
                                    "ipv4-addresses": ["10.0.110.4"],
                                    "ipv6-addresses": []
                                }
                            ]
                        },
                        {
                            "vserver-id": "9a3c21ba-4bcd-42bc-a4da-882d9c2183d0",
                            "vserver-name": "vfw-vsn-2-dt",
                            "l-interfaces": [
                                {
                                    "interface-name": "vfw-dt-module-2-vsn_private_0_port-ctmh5td6ybkf",
                                    "macaddr": "fa:16:3e:76:31:07",
                                    "network-id": "0fe48f60-1738-4fd3-941f-63a2c958b9ec",   
                                    "network-name": "protected_net_dt",                                     
                                    "ipv4-addresses": ["192.168.20.240"],
                                    "ipv6-addresses": []
                                },
                                {
                                    "interface-name": "vfw-dt-module-2-vsn_private_1_port-nkosg44b6zn6",
                                    "macaddr": "fa:16:3e:67:b5:db",
                                    "network-id": "848e3e94-d6f8-46b1-bf72-c8477f9a42cb",   
                                    "network-name": "oam_network_WVly",                                     
                                    "ipv4-addresses": ["10.0.110.5"],
                                    "ipv6-addresses": []
                                },
                                {
                                    "interface-name": "vfw-dt-module-2-vsn_private_2_port-7svzynbtnh66",
                                    "macaddr": "fa:16:3e:10:20:82",
                                    "network-id": "0fe48f60-1738-4fd3-941f-63a2c958b9ec",
                                    "network-name": "onap_oam_ext",
                                    "ipv4-addresses": ["10.100.100.5"],
                                    "ipv6-addresses": []
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}




OOF -> SO [Extended Response - Deferred]
{
    "trafficDistributionDecisions": [
        {
			"anchorPoint": {
				"nfType": "vnf", //[pnf, vnf] - depends on the API used to tretrieve object -> A&AI generic-vnf or pnf
				"nfId": "ffe99e79-5860-44d7-a56a-a5d21cfbdc21",//vnf-id or pnf-id -> A&AI generic-vnf or pnf
				"nfName": "vfw-dt-pkg-0",//vnf-name or pnf-name  -> A&AI generic-vnf or pnf
				"ipv4OamAddress": "oam_network_WVly",  // -> A&AI generic-vnf or pnf
				"ipv6OamAddress": "",  // -> A&AI generic-vnf or pnf
				//"pnfIpv4Address": "",// -> A&AI pnf
				//"pnfIpv6Address": "",// -> A&AI  pnf
				"vnfType": "vfw-dt-service/vFW-PKG-DT-VF 0", // -> A&AI generic-vnf 
				"vfModuleId": "a114e77b-709f-4a5f-a802-6f66bc620848", // -> A&AI generic-vnf/vf-module
				"vfModuleName": "vpkg-dt-module-1", // -> A&AI generic-vnf/vf-module 
				"vfModuleModelInvariantId": "344e26f1-ff29-4570-98fd-2f607b79e609", // -> A&AI generic-vnf/vf-module
				"vfModuleModelVersion": "a8ad1d21-5e9d-4a91-b155-19c5ce5fbe17", // -> A&AI generic-vnf/vf-module
				"vfModuleModelName": "VfwPkgDtVf..base_vpkg..module-0", // -> A&AI sdc model/vf-module
				"vServers": [ // -> A&AI cloud-inf/v-server
					{
						"vServerId": "7f237078-c830-4d98-b8e9-0efc8ca36427", // -> A&AI cloud-inf/v-server
						"vServerName": "vpg-vf", // -> A&AI cloud-inf/v-server
						"cloudRegionId": "RegionOne", // -> A&AI cloud-inf/v-server
						"lInterfaces": [ // -> A&AI cloud-inf/v-server l-interface
							{
								"interfaceName": "vpkg-dt-module-1-vpg_private_2_port-xan5gtbmgd74", // -> A&AI cloud-inf/v-server l-interface
								"macAddr": "fa:16:3e:53:a5:b2", // -> A&AI cloud-inf/v-server l-interface
								"networkId": "828b9558-b107-4b5e-8272-20744dac6885", // -> A&AI cloud-inf/v-server l-interface
								"ipv4Addresses": ["10.100.100.2"], // -> A&AI cloud-inf/v-server l-interface
								"networkName": "onap_oam_ext", //A&AI network
								"ipv6Addresses": [], // -> A&AI cloud-inf/v-server l-interface
								"vlans": [] // -> A&AI cloud-inf/v-server l-interface/vlan
							},
							{
								"interfaceName": "vpkg-dt-module-1-vpg_private_1_port-w6av354etjpj", // -> A&AI cloud-inf/v-server l-interface
								"macAddr": "fa:16:3e:dc:60:d3", // -> A&AI cloud-inf/v-server l-interface
								"networkId": "848e3e94-d6f8-46b1-bf72-c8477f9a42cb", // -> A&AI cloud-inf/v-server l-interface
								"networkName": "oam_network_WVly",
								"ipv4Addresses": ["10.0.110.2"], // -> A&AI cloud-inf/v-server l-interface
								"ipv6Addresses": [], // -> A&AI cloud-inf/v-server l-interface
								"vlans": [] // -> A&AI cloud-inf/v-server l-interface/vlan
							},
							{
								"interfaceName": "vpkg-dt-module-1-vpg_private_0_port-fvlhoybxja7p", // -> A&AI cloud-inf/v-server l-interface
								"macAddr": "fa:16:3e:96:59:0f", // -> A&AI cloud-inf/v-server l-interface
								"networkId": "676a05c4-65ab-46c7-86a8-6d748e9089c1", // -> A&AI cloud-inf/v-server l-interface
								"networkName": "unprotected_net_dt",
								"ipv4Addresses": ["192.168.10.200"], // -> A&AI cloud-inf/v-server l-interface
								"ipv6Addresses": [], // -> A&AI cloud-inf/v-server l-interface
								"vlans": [] // -> A&AI cloud-inf/v-server l-interface/vlan
							}
						]
					}
				],
				"lInterfaces" : [], //-> A&AI generic-vnf/l-interface
				"lagInterfaces": [], //-> A&AI generic-vnf or pnf/l-interface
				"pInterfaces": [] //-> A&AI pnf/l-interface
			},
            "distributionPolicy": "equal", //-> OOF algorithm TBD in El Alto
            "destinationPoints": [
                {//format is the same like for anchorPoint
					"nfType": "vnf",
                    "nfId": "7dad5e9c-7639-454f-8568-e68b52149127",
					"nfName": "vfw-dt-snk-1",
					"vnfType": "vfw-dt-service/vFW-SNK-DT-VF 1",
                    "vfModuleId": "63ee489f-8e02-4b7b-a49a-8587445c1b1a",
					"vfModuleName": "vfw-dt-module-2",
					"vfModuleModelInvariantId": "b50a101d-dbe3-41b1-a04b-3c44b0ec9d94", // -> A&AI generic-vnf/vf-module
					"vfModuleModelVersion": "d23ad900-9920-49da-94e3-78c76cbdf331", // -> A&AI generic-vnf/vf-module
					"vfModuleModelName": "VfwSnkDtVf..base_vfw..module-0", // -> A&AI sdc model/vf-module
                    "vServers": [
                        {
                            "vServerId": "b1b43d9b-dd47-42b2-979a-9c6ce9ac431e",
                            "vServerName": "vfw-vfw-2-dt",
							"cloudRegionId": "RegionOne", // -> A&AI cloud-inf/v-server
                            "lInterfaces": [
                                {
                                    "interfaceName": "vfw-dt-module-2-vfw_private_0_port-gn4ev6oxvvj6",
									"macAddr": "fa:16:3e:ec:39:c3",
									"networkId": "676a05c4-65ab-46c7-86a8-6d748e9089c1",
									"networkName": "unprotected_net_dt",
                                    "ipv4Addresses": ["192.168.10.110"],
									"ipv6Addresses": [],
									"vlans": []
                                },
                                {
                                    "interfaceName": "vfw-dt-module-2-vfw_private_3_port-cozwyppibrh2",
									"macAddr": "fa:16:3e:a1:18:84",
									"networkId": "828b9558-b107-4b5e-8272-20744dac6885",									
									"networkName": "onap_oam_ext",
                                    "ipv4Addresses": ["10.100.100.4"],
									"ipv6Addresses": [],
									"vlans": []
                                },
                                {
                                    "interfaceName": "vfw-dt-module-2-vfw_private_1_port-cu5rvzfeqsaq",
									"macAddr": "fa:16:3e:97:09:70",
									"networkId": "0fe48f60-1738-4fd3-941f-63a2c958b9ec",	
									"networkName": "protected_net_dt",									
                                    "ipv4Addresses": ["192.168.20.110"],
									"ipv6Addresses": [],
									"vlans": []
                                },
                                {
                                    "interfaceName": "vfw-dt-module-2-vfw_private_2_port-v4lpjnglwdbp",
									"macAddr": "fa:16:3e:25:a5:9d",
									"networkId": "848e3e94-d6f8-46b1-bf72-c8477f9a42cb",	
									"networkName": "oam_network_WVly",								
                                    "ipv4Addresses": ["10.0.110.4"],
									"ipv6Addresses": [],
									"vlans": []
                                }
                            ]
                        },
                        {
                            "vServerId": "9a3c21ba-4bcd-42bc-a4da-882d9c2183d0",
                            "vServerName": "vfw-vsn-2-dt",
							"cloudRegionId": "RegionOne", // -> A&AI cloud-inf/v-server
                            "lInterfaces": [
                                {
                                    "interfaceName": "vfw-dt-module-2-vsn_private_0_port-ctmh5td6ybkf",
									"macAddr": "fa:16:3e:76:31:07",
									"networkId": "0fe48f60-1738-4fd3-941f-63a2c958b9ec",	
									"networkName": "protected_net_dt",										
                                    "ipv4Addresses": ["192.168.20.240"],
									"ipv6Addresses": [],
									"vlans": []
                                },
                                {
                                    "interfaceName": "vfw-dt-module-2-vsn_private_1_port-nkosg44b6zn6",
									"macAddr": "fa:16:3e:67:b5:db",
									"networkId": "848e3e94-d6f8-46b1-bf72-c8477f9a42cb",	
									"networkName": "oam_network_WVly",										
                                    "ipv4Addresses": ["10.0.110.5"],
									"ipv6Addresses": [],
									"vlans": []
                                },
                                {
                                    "interfaceName": "vfw-dt-module-2-vsn_private_2_port-7svzynbtnh66",
									"macAddr": "fa:16:3e:10:20:82",
									"networkId": "0fe48f60-1738-4fd3-941f-63a2c958b9ec",
									"networkName": "onap_oam_ext",
                                    "ipv4Addresses": ["10.100.100.5"],
									"ipv6Addresses": [],
									"vlans": []
                                }
                            ]
                        }
                    ],
					"lInterfaces" : [],
					"lagInterfaces": [],
					"pInterfaces": []
                }
            ]
        }
    ]
}

//vlan
{
	"interfaceName": "", //-> A&AI vlan
	"vlanIdInner": "", //-> A&AI vlan
	"vlanIdOuter": "", //-> A&AI vlan
	"vpnKey": "", //-> A&AI vlan
	"ipv4Addresses": [],
	"ipv6Addresses": [],
}

//p-interface
{
	"interfaceName": "", //-> A&AI p-interface
	"type": "", //-> A&AI p-interface
	"role": "", //-> A&AI p-interface
	"macAddr": "1C-A7-34-17-D1-44", //-> A&AI p-interface
	"lInterfaces" : [] //-> A&AI p-interface/l-interfaces
}

//lag-interface
{
	"interfaceName": "", //-> A&AI lag-interface
	"role": "", //-> A&AI lag-interface
	"lInterfaces" : [] //-> A&AI l-interface
}


NOTE: SO-OOF requirements from above needs to be integrated into the existing SO-OOF API: OOF/HAS API Specificationsoof-osdf-has-api.json 

OOF - AAI

AAI data snapshot with examplary data for vFW-DT Traffic Distribution use case (taken from Casablanca MR AAI version): dataSnapshot.graphSON.201903110745

AAI data can be restored with following procedure A&AI Data Restore for OOM - Casablanca

In this package all data (JSON responses from AAI) for vFW-DT Traffic Distribution use case can be found: vFW-DT-AAI.7z

The following REST calls to retrieve topology and VNF candidates from AAI: 

  • GET /aai/v14/network/generic-vnfs/
  • GET /aai/v14/network/generic-vnfs/generic-vnf/e529455a-e50f-4fe2-b170-ec498ba1f75c
  • GET /aai/v14/network/generic-vnfs/generic-vnf/e529455a-e50f-4fe2-b170-ec498ba1f75c/vf-modules
  • GET /aai/v14/network/generic-vnfs/generic-vnf/e529455a-e50f-4fe2-b170-ec498ba1f75c/vf-modules/vf-module/0c3e0afe-9af4-4d92-bf3f-a8e20f5c093a
  • GET /aai/v14/service-design-and-creation/models/model/d7b903e7-a4d5-4ed1-898f-6174a7a88762/model-vers/model-ver/7f9bd514-bb18-431e-9696-794f70c0b66d
  • GET /aai/v14/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/tenants/tenant/bc43d50ffcb84750bac0c1707a9a765b/vservers
  • GET /aai/v14/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/tenants/tenant/bc43d50ffcb84750bac0c1707a9a765b/vservers
  • GET /aai/v14/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/tenants/tenant/bc43d50ffcb84750bac0c1707a9a765b/vservers/vserver/bf5f089c-0632-48dd-814c-2dfa4095f2ac
  • GET /aai/v14/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/tenants/tenant/bc43d50ffcb84750bac0c1707a9a765b/vservers/vserver/bf5f089c-0632-48dd-814c-2dfa4095f2ac/l-interfaces/l-interface/Vfmodule_Demo_vFWSNK_7fa9e563-bf0f-4b4c-966c-0f2179105c1c-vsn_private_0_port-ovft6nu22dz4/l3-interface-ipv4-address-list
  • GET /aai/v14/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces

  • GET /aai/v14/network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}

  • GET /aai/v14/network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}

  • GET /aai/v14/network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}

  • GET /aai/v14/network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}

  • GET /aai/v14/network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}

  • GET /aai/v14/network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans

  • GET /aai/v14/network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}

  • GET /aai/v14/network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces

  • GET /aai/v14/network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}

  • GET /aai/v14/network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces

  • GET /aai/v14/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}

  • GET /aai/v14/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans

  • GET /aai/v14/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}

  • GET /aai/v14/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}

  • GET /aai/v14/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}

  • GET /aai/v14/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}

  • GET /aai/v14/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}

  • GET /aai/v14/network/pnfs
  • GET /aai/v14/network/pnfs/pnf/{pnf-name}
  • GET /aai/v14/network/pnfs/pnf/{pnf-name}/lag-interfaces
  • GET /aai/v14/network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}
  • GET /aai/v14/network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces
  • GET /aai/v14/network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}
  • GET /aai/v14/network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans
  • GET /aai/v14/network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}
  • GET /aai/v14/network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
  • GET /aai/v14/network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}
  • GET /aai/v14/network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
  • GET /aai/v14/network/pnfs/pnf/{pnf-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}
  • GET /aai/v14/network/pnfs/pnf/{pnf-name}/p-interfaces
  • GET /aai/v14/network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}
  • GET /aai/v14/network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces
  • GET /aai/v14/network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}
  • GET /aai/v14/network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
  • GET /aai/v14/network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}
  • GET /aai/v14/network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans
  • GET /aai/v14/network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}
  • GET /aai/v14/network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
  • GET /aai/v14/network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}


  • No labels

5 Comments

  1. SO - OOF:

    The request sample given above should have the mandatory block for "serviceInfo".

    Please find attached the updated one as below:

    (tested locally with the latest code for osdf)

  2. POLICY - OOF :

    Please find below the updated policy (tested locally with the latest code for osdf) :

    {

        "service": "affinityPolicy",

        "policyName": "OSDF_CASABLANCA.Affinity_vCPE_1",

        "description": "Affinity policy for vPGN Anchor and destination point",

        "templateVersion": "OpenSource.version.1",

        "version": "oofDublin",

        "priority": "3",

        "riskType": "test",

        "riskLevel": "2",

        "guard": "False",

        "content": {

            "identity": "vf_module_affinity",

            "policyScope": [

                "TD",

                "US",

                "INTERNATIONAL",

                "ip",

                "vFW-SINK",

                "vPGN"

            ],

            "affinityProperty": {

                "qualifier": "same",

                "category": "region"

            },

            "policyType": "zone",

            "resources": [

                "vFW-SINK",

                "vPGN"

            ]

        }

    }


  3. POLICY - OOF :

    Please find below the two VNF policies that would be needed to generate the expected OSDF-HAS payload detailed above.

    (tested locally with the latest code for osdf)

    For demand "vFW-SINK":

    {

        "service": "vnfPolicy",

        "policyName": "OSDF_DUBLIN.vnfPolicy_vFW_sink",

        "description": "vnfPolicy",

        "templateVersion": "OpenSource.version.1",

        "version": "oofDublin",

        "priority": "6",

        "riskType": "test",

        "riskLevel": "3",

        "guard": "False",

        "content": {

            "identity": "vnf_vFW_sink",

            "policyScope": ["TD", "US", "INTERNATIONAL", "ip", "vFW-SINK"],

            "policyType": "vnfPolicy",

            "resources": ["vFW-SINK"],

            "applicableResources": "any",

            "vnfProperties": [

                {

                    "inventoryProvider": "aai",

                    "serviceType": "",

                    "inventoryType": "vfmodule",

                    "customerId": "Demonstration",

                    "equipmentRole": "",

                    "attributes": {

                        "orchestrationStatus": ["active"],

                        "modelInvariantId": "",

                        "modelVersionId": "",

                        "provStatus": "ACTIVE"

                    }

                }

            ]

        }

    }


    For demand "vPGN":


    {

        "service": "vnfPolicy",

        "policyName": "OSDF_DUBLIN.vnfPolicy_vPGN",

        "description": "vnfPolicy",

        "templateVersion": "OpenSource.version.1",

        "version": "oofDublin",

        "priority": "6",

        "riskType": "test",

        "riskLevel": "3",

        "guard": "False",

        "content": {

            "identity": "vnf_vPGN",

            "policyScope": ["TD", "US", "INTERNATIONAL", "ip", "vPGN"],

            "policyType": "vnfPolicy",

            "resources": ["vPGN"],

            "applicableResources": "any",

            "vnfProperties": [

                {

                    "inventoryProvider": "aai",

                    "serviceType": "",

                    "inventoryType": "vfmodule",

                    "customerId": "Demonstration",

                    "equipmentRole": "",

                    "attributes": {

                        "orchestrationStatus": ["active"],

                        "modelInvariantId": "",

                        "modelVersionId": "",

                        "provStatus": "ACTIVE"

                    }

                }

            ]

        }

    }



  4. Shankaranarayanan Puzhavakath Narayanan Lukasz Rajewski:

    Few thoughts about the OSDF-HAS payload:


    The below fields are not currently supported by osdf. So, it may require changes in both code and vnf policy model.

    "region": "RegionOne"

    "placement_role": "destination"

    "orchestration-status": "active"

    "prov-status": "ACTIVE"

    "service_instance_id": "b73bed51-63a4-4660-8a2d-b8d4625b2cc0"


    "orchestration-status": "active" - I think this should be "orchestration-status": ["active"]. HAS expects this field under attributes as a list.

    "service_instance_id": "b73bed51-63a4-4660-8a2d-b8d4625b2cc0" - Not sure if osdf is needed to send this field to HAS?

  5. Lukasz Rajewski : Please find a sample to use "get_param" through policy.

    "vnfProperties": [

                {

                    "inventoryProvider": "aai",

                    "serviceType": "",

                    "inventoryType": "vfmodule",

                    "customerId": "Demonstration",

                    "equipmentRole": "",

                    "attributes": {

                        "orchestrationStatus": ["active"],

                        "modelInvariantId": "",

                        "modelVersionId": "",

                        "provStatus": "ACTIVE",            

                        "cloudRegionId": {

                            "get_param": "CHOSEN_REGION"

                        }

                    }

                }

            ]