Skip to content

Product Block Instance Graph

A subscription for a specific customer for a product that is deployed on the network is stored in the Workflow Orchestrator database. The notion of subscription ownership allows for fine-grained control over which customer is allowed to change what attribute. By correctly adding references from one product block to another, a graph of product block instances is generated that accurately reflects the relations between the snippets of network node configuration that are deployed to the network. The graph is automatically added to when a new subscription is created, allowing easy and intuitive navigation through all configuration data. Once every network service is modelled and provisioned to the network through the Workflow Orchestrator, every line of network node configuration can be linked to the corresponding subscription that holds the configuration parameters.

The example below shows the product block instance graph for a L2 point-to-point and a L2 VPN service between three ports on three different nodes. The nodes are owned by the respective NREN’s Network Operations Centre (NOC). University A has ports on nodes on two different locations, and uses a L2 point-to-point service to connect these locations. Research Institute B has one port of its own, and uses a L2 VPN service for their collaboration with the university. The business rules that describe the (optional) authorisation logic for connecting subscriptions from different customers to each other are coded in the Workflow Orchestrator workflows related to these products.

Customers

flowchart
    direction LR
    cust1[Customer: NREN NOC]
    cust2[Customer: University A]
    cust3[Customer: Research Institute B]
    style cust1 rx:20,ry:20,fill:#b4c7e7,stroke-width:0px
    style cust2 rx:20,ry:20,fill:#c5e0b4,stroke-width:0px
    style cust3 rx:20,ry:20,fill:#ffe699,stroke-width:0px

Example Subscription Diagram

%%{init: {
    'flowchart': {
        'padding': 5,
        'nodeSpacing': 5
    }
}}%%
flowchart
    direction TB
    subgraph sg_node1[Node Subscription]
        node1[NodeBlock]
    end
    subgraph sg_node2[Node Subscription]
        node2[NodeBlock]
    end
    subgraph sg_node3[Node Subscription]
        node3[NodeBlock]
    end
    subgraph sg_port1[Port Subscription]
        port1[PortBlock]
    end
    subgraph sg_port2[Port Subscription]
        port2[PortBlock]
    end
    subgraph sg_port3[Port Subscription]
        port3[PortBlock]
    end
    node1 --- port1
    node2 --- port2
    port3 --- node3
    subgraph sg_l2ptp[L2PointToPoint subscription]
        direction LR
        l2ptp_sap1[SAPBlock]
        l2ptp_vc[VirtualCircuitBlock]
        l2ptp_sap2[SapBlock]
        l2ptp_sap1 --- l2ptp_vc
        l2ptp_vc --- l2ptp_sap2
    end
    port1 --- l2ptp_sap1
    l2ptp_sap2 --- port3
    subgraph sg_l2vpn[L2VPN subscription]
        l2vpn_sap1[SAPBlock]
        l2vpn_sap2[SAPBlock]
        l2vpn_sap3[SAPBlock]
        l2vpn_vc[VirtualCircuitBlock]
        l2vpn_sap1 --- l2vpn_vc
        l2vpn_sap2 --- l2vpn_vc
        l2vpn_vc --- l2vpn_sap3
    end
    port1 --- l2vpn_sap1
    port2 --- l2vpn_sap2
    l2vpn_sap3 --- port3


    style sg_node1 rx:20,ry:20,fill:#b4c7e7
    style sg_node2 rx:20,ry:20,fill:#b4c7e7
    style sg_node3 rx:20,ry:20,fill:#b4c7e7
    style sg_port1 rx:20,ry:20,fill:#c5e0b4
    style sg_port2 rx:20,ry:20,fill:#ffe699
    style sg_port3 rx:20,ry:20,fill:#c5e0b4
    style sg_l2vpn rx:20,ry:20,fill:#ffe699
    style sg_l2ptp rx:20,ry:20,fill:#c5e0b4

    classDef default rx:10,ry:10,fill:#ff9300,stroke:#333,stroke-width:1px