Skip to content

PIONIER L2 Circuit Orchestration and Automation Platform

PIONIER, the Polish R&E network, strategically selected Maat as the network single source of truth for its service orchestration solution. Maat's flexible data model and robust API capabilities were instrumental in meeting PIONIER's specific requirements. By centralizing network configuration data in Maat, PIONIER can ensure data consistency, facilitate integration with various network components, and provide a reliable source of information for the orchestration system.

Take a look at the following video to see how Maat is one of the key components in PIONIER's service orchestration use-case:

Maat's ability to represent complex network topologies, devices, and services in a structured and standardized format is crucial for the success of the orchestration solution. The data model defined in Maat allowed for seamless data exchange between different components of the system, enabling efficient and automated provisioning and management of network services.

Example data model for a L2 circuit service

Schematic representation of a L2 circuit data model

The schematic representation of a L2 circuit is given in the image above. The relationships between the instances are used to describe the service components and logical and physical resources on which these components reside. Each object has a list of attributes that are kept in the characteristics data structure.

Click here to take a look at the data model schema used in the PIONIER use-case

The L2 circuit service is represented using a list of service characteristics specific for the L2 circuit such as virtual_circuit_id or mtu. In addition, the service instance has a service relationship to its two Service Access Points (SAPs). An example service object is provided in the code below.

Example L2 service instance in JSON format:

{
    "category": "l2.circuit",
    "description": "short description of the demo circuit",
    "name": "Demo L2 circuit",
    "serviceCharacteristic": [
        {
            "name": "virtual_circuit_id",
            "value": "85010026"
        },
        {
            "name": "no_control_word",
            "value": true
        },
        {
            "name": "ignore_encapsulation_mismatch",
            "value": true
        },
        {
            "name": "ignore_mtu_mismatch",
            "value": false
        },
        {
            "name": "pseudowire_status_tlv",
            "value": true
        },
        {
            "name": "community",
            "value": "textcom"
        },
        {
            "name": "mtu",
            "value": 100
        },
        {
            "name": "bandwidth",
            "value": "1g"
        }
    ],
    "@schemaLocation": "https://bitbucket.software.geant.org/projects/OSSBSS/repos/maat-schema/raw/TMF638-ServiceInventory-v4-pionier.json",
    "@type": "Service",
    "serviceRelationship": [
        {
            "relationshipType": "ref:l2.circuit.sap",
            "service": {
                "id": "a9d6cb4c-6345-444d-a06d-8d8e81d9b62c",
                "href": "https://10.20.30.40:80/serviceInventoryManagement/v4.0.0/service/a9d6cb4c-6345-444d-a06d-8d8e81d9b62c"
            },
        },
        {
            "relationshipType": "ref:l2.circuit.sap",
            "service": {
                "id": "8a73f20b-7f51-4cbb-98ad-9e1859e3f368",
                "href": "https://10.20.30.40:80/serviceInventoryManagement/v4.0.0/service/8a73f20b-7f51-4cbb-98ad-9e1859e3f368"
            },
        }
    ],
    "resourceRelationship": [],
    "lastUpdateDate": "2024-08-23T10:32:15Z",
    "href": "https://10.20.30.40:80/serviceInventoryManagement/v4.0.0/service/e0dc4b36-07ec-4ccd-a827-bce827016313",
    "serviceDate": "2024-06-05T08:39:46Z",
    "state": "active",
    "id": "e0dc4b36-07ec-4ccd-a827-bce827016313"
}

Each of the SAPs further defines the service details. As presented in the example here with SAP1 and SAP2, each point has a relationship to the interface of the device where it is residing.

SAP1 for the example L2 circuit instance in JSON format:

{
    "category": "l2.circuit.sap",
    "description": "Demo L2 circuit VID 23",
    "name": "SAP1.Demo L2 circuit",
    "serviceCharacteristic": [
        {
            "name": "vlan_id",
            "value": "23"
        }
    ],
    "@schemaLocation": "https://bitbucket.software.geant.org/projects/OSSBSS/repos/maat-schema/raw//TMF638-ServiceInventory-v4-pionier.json",
    "@type": "Service",
    "serviceRelationship": [
        {
            "relationshipType": "bref:l2.circuit",
            "service": {
                "id": "e0dc4b36-07ec-4ccd-a827-bce827016313",
                "href": "https://10.20.30.40:80/serviceInventoryManagement/v4.0.0/service/e0dc4b36-07ec-4ccd-a827-bce827016313"
            }
        }
    ],
    "resourceRelationship": [
        {
            "relationshipType": "bref:interface",
            "resource": {
                "id": "4743a84e-486d-4bb8-b717-6427d9f17e52",
                "href": "https://10.20.30.40:80/resourceInventoryManagement/v4.0.0/resource/4743a84e-486d-4bb8-b717-6427d9f17e52"
            }
        }
    ],
    "lastUpdateDate": "2024-06-05T08:39:46Z",
    "href": "https://10.20.30.40:80/serviceInventoryManagement/v4.0.0/service/a9d6cb4c-6345-444d-a06d-8d8e81d9b62c",
    "serviceDate": "2024-06-05T08:39:46Z",
    "id": "a9d6cb4c-6345-444d-a06d-8d8e81d9b62c"
}

SAP2 for the example L2 circuit instance in JSON format:

{
    "category": "l2.circuit.sap",
    "description": "Demo L2 circuit VID 24",
    "name": "SAP2.Demo L2 circuit",
    "serviceCharacteristic": [
        {
            "name": "vlan_id",
            "value": "24"
        }
    ],
    "@schemaLocation": "https://bitbucket.software.geant.org/projects/OSSBSS/repos/maat-schema/raw//TMF638-ServiceInventory-v4-pionier.json",
    "@type": "Service",
    "serviceRelationship": [
        {
            "relationshipType": "bref:l2.circuit",
            "service": {
                "id": "e0dc4b36-07ec-4ccd-a827-bce827016313",
                "href": "https://10.20.30.40:80/serviceInventoryManagement/v4.0.0/service/e0dc4b36-07ec-4ccd-a827-bce827016313"
            }
        }
    ],
    "resourceRelationship": [
        {
            "relationshipType": "bref:interface",
            "resource": {
                "id": "56b2f3d4-2052-4184-a5fa-ee306d10cff6",
                "href": "https://10.20.30.40:80/resourceInventoryManagement/v4.0.0/resource/56b2f3d4-2052-4184-a5fa-ee306d10cff6"
            }
        }
    ],
    "lastUpdateDate": "2024-06-05T08:39:46Z",
    "href": "https://10.20.30.40:80/serviceInventoryManagement/v4.0.0/service/8a73f20b-7f51-4cbb-98ad-9e1859e3f368",
    "serviceDate": "2024-06-05T08:39:46Z",
    "id": "8a73f20b-7f51-4cbb-98ad-9e1859e3f368"
}

In this example, the resources are also stored in Maat as logical network resources. Each of the interfaces is defined with a set of characteristics and a relationship to the resource on which it is located. Of course, there is also the information that the resource is used in the example service instance.

Interface where SAP1 resides in the example L2 circuit instance in JSON format:

{
    "category": "interface",
    "description": " Python API generated et-0/0/10",
    "name": "et-0/0/10",
    "resourceCharacteristic": [
        {
            "name": "speed",
            "value": "400G"
        }
    ],
    "@schemaLocation": "https://bitbucket.software.geant.org/projects/OSSBSS/repos/maat-schema/raw/TMF639-ResourceInventory-v4-pionier.json",
    "@type": "PhysicalResource",
    "usageState": "active",
    "resourceRelationship": [
        {
            "relationshipType": "bref:device.router",
            "resource": {
                "id": "fc204a94-31e2-443a-8156-ddd746152e12",
                "href": "https://10.20.30.40:80/resourceInventoryManagement/v4.0.0/resource/fc204a94-31e2-443a-8156-ddd746152e12",
                "name": "ptx-poz-1"
            }
        }
    ],
    "serviceRelationship": [
        {
            "relationshipType": "ref:l2.circuit.sap",
            "service": {
                "id": "a9d6cb4c-6345-444d-a06d-8d8e81d9b62c",
                "href": "https://10.20.30.40:80/serviceInventoryManagement/v4.0.0/service/a9d6cb4c-6345-444d-a06d-8d8e81d9b62c"
            },
        }

    ],
    "startOperatingDate": "2024-05-21T19:09:13Z",
    "lastUpdateDate": "2024-06-10T11:58:45Z",
    "href": "https://10.20.30.40:80/resourceInventoryManagement/v4.0.0/resource/4743a84e-486d-4bb8-b717-6427d9f17e52",
    "id": "4743a84e-486d-4bb8-b717-6427d9f17e52"
}

Interface where SAP2 resides in the example L2 circuit instance in JSON format:

{
    "category": "interface",
    "description": " Python API generated et-0/0/10",
    "name": "et-0/0/10",
    "resourceCharacteristic": [
        {
            "name": "speed",
            "value": "400G"
        }
    ],
    "@schemaLocation": "https://bitbucket.software.geant.org/projects/OSSBSS/repos/maat-schema/raw/TMF639-ResourceInventory-v4-pionier.json",
    "@type": "PhysicalResource",
    "usageState": "active",
    "resourceRelationship": [
        {
            "relationshipType": "bref:device.router",
            "resource": {
                "id": "6e164b2b-f9d3-43b2-a574-10ca97d75d85",
                "href": "https://10.20.30.40:80/resourceInventoryManagement/v4.0.0/resource/6e164b2b-f9d3-43b2-a574-10ca97d75d85",
                "name": "ptx-poz-2"
            }
        }
    ],
    "serviceRelationship": [

        {
            "relationshipType": "ref:l2.circuit.sap",
            "service": {
                "id": "8a73f20b-7f51-4cbb-98ad-9e1859e3f368",
                "href": "https://10.20.30.40:80/serviceInventoryManagement/v4.0.0/service/8a73f20b-7f51-4cbb-98ad-9e1859e3f368"
            },
        },
    ],
    "startOperatingDate": "2024-05-21T19:08:51Z",
    "lastUpdateDate": "2024-06-10T11:58:45Z",
    "href": "https://10.20.30.40:80/resourceInventoryManagement/v4.0.0/resource/56b2f3d4-2052-4184-a5fa-ee306d10cff6",
    "id": "56b2f3d4-2052-4184-a5fa-ee306d10cff6"
}

The last piece of the puzzle for this example data modeling use case for Maat is the network device, router, where the interfaces are located. Each of the routers in this scenario is defined with its own set of resource characteristics and it refers via relationships to other resources that it is related to and to the services that it is part of.

Router where the interface with SAP1 resides in the example L2 circuit instance in JSON format:

{
    "category": "device.router",
    "description": "Python API generated ptx-poz-1",
    "name": "ptx-poz-1",
    "resourceCharacteristic": [
        {
            "name": "routerID",
            "value": "1.2.3.5"
        },
        {
            "name": "mgmt",
            "value": "{\"default\": \"10.255.248.254\", \"inet\": {\"re0\": \"10.255.247.106/28\"}}"
        },
        {
            "name": "chassis",
            "value": "{\"aggregated_devices\": {\"ethernet\": {\"device_count\": \"6\"}}}"
        }
    ],
    "@schemaLocation": "https://bitbucket.software.geant.org/projects/OSSBSS/repos/maat-schema/raw/TMF639-ResourceInventory-v4-pionier.json",
    "@type": "PhysicalResource",
    "serialNumber": "HGW674",
    "resourceRelationship": [
        {
            "relationshipType": "bref:model",
            "resource": {
                "id": "cf526857-57d4-467d-8518-c6c3e03fdfb7",
                "href": "https://10.20.30.40:80/resourceInventoryManagement/v4.0.0/resource/cf526857-57d4-467d-8518-c6c3e03fdfb7",
                "name": "PTX10001-36MR"
            }
        },
        {
            "relationshipType": "ref:interface",
            "resource": {
                "id": "4743a84e-486d-4bb8-b717-6427d9f17e52",
                "href": "https://10.20.30.40:80/resourceInventoryManagement/v4.0.0/resource/4743a84e-486d-4bb8-b717-6427d9f17e52",
            },
        },
    ],
    "serviceRelationship": [],
    "startOperatingDate": "2024-05-21T19:09:10Z",
    "lastUpdateDate": "2024-05-21T19:09:24Z",
    "href": "https://10.20.30.40:80/resourceInventoryManagement/v4.0.0/resource/fc204a94-31e2-443a-8156-ddd746152e12",
    "id": "fc204a94-31e2-443a-8156-ddd746152e12"
}

Router where the interface with SAP2 resides in the example L2 circuit instance in JSON format:

{
    "category": "device.router",
    "description": "Python API generated ptx-poz-2",
    "name": "ptx-poz-2",
    "resourceCharacteristic": [
        {
            "name": "routerID",
            "value": "1.2.5.4"
        },
        {
            "name": "mgmt",
            "value": "{\"default\": \"10.255.248.190\", \"inet\": {\"re0\": \"10.255.248.186/28\"}}"
        },
        {
            "name": "chassis",
            "value": "{\"aggregated_devices\": {\"ethernet\": {\"device_count\": \"6\"}}}"
        }
    ],
    "@schemaLocation": "https://bitbucket.software.geant.org/projects/OSSBSS/repos/maat-schema/raw/TMF639-ResourceInventory-v4-pionier.json",
    "@type": "PhysicalResource",
    "serialNumber": "HGW843",
    "resourceRelationship": [
        {
            "relationshipType": "bref:model",
            "resource": {
                "id": "cf526857-57d4-467d-8518-c6c3e03fdfb7",
                "href": "https://10.20.30.40:80/resourceInventoryManagement/v4.0.0/resource/cf526857-57d4-467d-8518-c6c3e03fdfb7",
                "name": "PTX10001-36MR"
            }
        },
        {
            "relationshipType": "ref:interface",
            "resource": {
                "id": "56b2f3d4-2052-4184-a5fa-ee306d10cff6",
                "href": "https://10.20.30.40:80/resourceInventoryManagement/v4.0.0/resource/56b2f3d4-2052-4184-a5fa-ee306d10cff6",
            },
        }
    ],
    "serviceRelationship": [],
    "startOperatingDate": "2024-05-21T19:08:47Z",
    "lastUpdateDate": "2024-05-21T19:09:02Z",
    "href": "https://10.20.30.40:80/resourceInventoryManagement/v4.0.0/resource/6e164b2b-f9d3-43b2-a574-10ca97d75d85",
    "id": "6e164b2b-f9d3-43b2-a574-10ca97d75d85"
}

More information about the implementation of the orchestration for this use case can be found in the GP4L labs documentation.