View file | ||||
---|---|---|---|---|
|
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:
...
View file | ||||
---|---|---|---|---|
|
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:
Elite soft json viewer | ||||
---|---|---|---|---|
| ||||
{ "requestInfo": { { "transactionId": "e576c75e-7536-4145-a1c0-d60b65bb1bb8", "resourceModuleNamerequestId": "vFWde4f04e3-0a65-470b-9d07-8ea6c2fb3e10", "serviceResourceIdcallbackUrl": "vFW-xx", http://0.0.0.0:9000/osdfCallback/", "tenantIdsourceId": "vFW-yySO", "resourceModelInforequestType": { "create", "modelInvariantIdnumSolutions": "vFW-modelInvariantId100", "optimizers": [ "modelVersionId": "vFW-versionId", "placement" ], "modelNametimeout": "vFW-model", 1200 }, "placementInfo": { "modelTyperequestParameters": "resource", { "modelVersionchosenRegion": "1.0RegionOne", "modelCustomizationNamechosenCustomerId": "vFW-customeModelName" DemoCust_8b908ab3-b9e6-41a9-a4e2-31cc9c5114a2" }, "requiredCandidates": [ "subscriberInfo": { { "globalSubscriberId": "dbc2c763-6383-42d6-880a-b7d5c5bc84d9", "identifierTypesubscriberName": "serviceInstanceIdoof-so-chm", }, "placementDemands": [ "cloudOwner": "", { "resourceModuleName": "vFW-SINK", "serviceResourceId": "vFW-SINK-XX", "resourceModelInfo": { "modelInvariantId": "fda3c1e8-7653-4acd-80ef-f5755c1d3859", "identifiersmodelVersionId": ["sourceVFWInstanceId-GUID"]"a6906768-1cae-4e78-acd1-d753ac61f3e8" }, ] } ] } } |
OOF - SO:
Elite soft json viewer |
---|
{
"anchors": [
{
"vnfId": "515e7c01-de6f-4cd5-8e2a-e11565ca6709",
"distributionPolicy": "equal",
"distributionPoints": [
{
"vnfId": "c360cd53-0ba8-4986-8f80-cf1257cf603b",
"vServers": [
{
"vServerId": "37f5c62d-2d6c-4bd4-b421-26331c6c6423",
"name": "vfw-dt-1",
"interfaces": [
{
"name": "eth1",
"ipv4": "192.168.10.100"
},
{
"name": "eth2",
"ipv4": "192.168.20.200"
}
]
},
{
"vServerId": "362d35e1-bb7e-4108-9d61-1bd6f9ab7c62",
"name": "vsink-dt-1",
"interfaces": [
{
"name": "eth1",
"ipv4": "192.168.10.101"
},
{
"name": "eth2",
"ipv4": "192.168.20.201"
}
]
}
]
}
]
}
]
} |
NOTE: SO-OOF requirements from above needs to be integrated into the existing SO-OOF API: OOF/HAS API Specifications, oof-osdf-has-api.json
OOF - AAI
The following REST calls to retrieve topology and VNF candidates from AAI:
...
"excludedCandidates": [
{
"identifierType": "vfmodule",
"identifiers": [
"4d944b8f-557a-4fe7-bcb3-aec65927a065"
]
}
]
},
{
"resourceModuleName": "vPGN",
"serviceResourceId": "vPGN-XX",
"unique": "false",
"resourceModelInfo": {
"modelInvariantId": "f2f88e29-d571-49ef-aea3-b8d13900c16f",
"modelVersionId": "3ccebc76-66e1-47c8-aee9-98f30d08db97"
}
}
]
},
"serviceInfo": {
"serviceInstanceId": "209fb01e-60ca-4325-b074-c5ad4e0499f8",
"serviceName": "vFW_TD",
"modelInfo": {
"modelInvariantId": "TD-invariantId",
"modelVersionId": "TD-versionId"
}
}
}
|
AFFINITY POLICY:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"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:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"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:
Code Block | ||||
---|---|---|---|---|
| ||||
{
"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:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"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:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"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:
Code Block | ||||
---|---|---|---|---|
| ||||
{
"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.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"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": []
}
]
}
]
}
]
}
]
}
|
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"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 Specifications, oof-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}