Using the Digital Sandbox - integrated with the Fabric Services System GUI

With this use case, a user can create some elements on the system GUI and deploy these to the Digital Sandbox. For the simulation session to fully work, some configuration (for example, endpoints) must be performed in the Digital Sandbox.

When using the Fabric Services System GUI, only one region/Digital Sandbox deployment can be created, and the information flow is unidirectional from the GUI to the Digital Sandbox. This means that if an intent is updated in the Digital Sandbox, the corresponding changes will not flow back to the Fabric Services System. Also, if a region or intent deployed in the Digital Sandbox is removed from the GUI, it will also be removed from the Digital Sandbox.

Working with intents

The Fabric Services System integrates with the Digital Sandbox using intents.

When a region, or fabric/workload intent is created in the Fabric Services System GUI, and the user indicates it should be deployed to the Digital Sandbox, a corresponding digital construct (underlay/workload) is automatically created in the Digital Sandbox.

Digital Sandbox intents that map to the Fabric Services System include:

  • underlay intents: Corresponds to the Fabric Services System underlay of a fabric (Leaf-Spine/Back-Bone).

  • workload intents: Corresponds to the Fabric Services System workloads that can span multiple fabrics. These define what kind of services that run on the servers in the rack and how they connect.

GUI and digital sandbox equivalents defines the Fabric Services System generated contexts, their Digital Sandbox equivalents, and the equivalent Digital Sandbox CLI used to perform the task.

Table 1. GUI and digital sandbox equivalents

Task performed on the Fabric Services System

Digital Sandbox construct created

Equivalent Digital Sandbox CLI command

Create Region for deployment in the Digital Sandbox

Digital Sandbox Intent

dsctl intent

Create fabric for deployment in the Digital Sandbox

Digital Sandbox underlay

dsctl intent createunderlay

Create workload for deployment in the Digital Sandbox

Digital Sandbox workload

dsctl intent createworkload

The Digital Sandbox also has two unique workload types:

  • active-workload: For every workload that is made active (via an update), the Digital Sandbox automatically generates an active-workload. This specifies the endpoint server and the interface(s) used to simulate the endpoint connected via the workload subnet subinterface.

  • fully-qualified-workload intents: Allows the user to specify the IP address configuration of the endpoint interfaces. A workload created on the Fabric Services System does not contain this information, and it must be created in the Digital Sandbox.

For additional information on using the Fabric Services System GUI for intent management, see the Fabric Services System User Guide.

Creating an intent/region

A single region can be created in the Fabric Services System GUI and be deployed to the Digital Sandbox. If this region is created, updated, or removed in the GUI, the same action is performed in the Digital Sandbox. See the Fabric Services System User Guide for details on creating regions in the GUI.

The following CLI command can also be used to create an intent. An intent is the equivalent of a creating region in the Fabric Services System GUI. Creation of a Digital Sandbox intent triggers the creation of the Digital Sandbox deployment. Intents created in the Digital Sandbox will not appear in the Fabric Services System GUI.

dsctl intent create -i <name>

Creating an underlay (fabric) intent

Fabric intents can be created in the Fabric Services System GUI and be deployed to the Digital Sandbox. In the Digital Sandbox, a fabric intent is referred to as an underlay. If any fabric intent is created, updated, or removed in the GUI, the same action is performed in the Digital Sandbox. See the Fabric Services System User Guide for details on creating fabric intents in the GUI.

The following CLI command can also be used to create an underlay. An underlay is the equivalent of a creating a fabric intent in the Fabric Services System GUI. Note that if an underlay is created in the Digital Sandbox, it will not be created in the GUI.

dsctl intent create underlay -i <name> -n <underlay-name> -f <file>

Example:

The following will create an underlay intent in the Digital Sandbox. In this example, the underlay is associated with the DNS-compatible intent ID named ‛star’, and will be named ‛u1’. Data from the file /tmp/u1 is used to configure the underlay:

dsctl intent create underlay -i star -n u1 -f /tmp/u1

where the file /tmp/u1 contains the following:

meta:
  intent: fspi352854779224915968
  id: LagLs1_gatenet_fabric
  name: fspf352854958523023360
  version: 11
  uid: lxqiblwcmuajqp2m
nodes:
- name: ls1-leaf-1
  donotsimulate: false
  type: NokSrLinux
  hwdetails:
    chassis: "66"
    cpmtype: "177"
    cardtype: "177"
    mdatype: "194"
  interfaces:
  - mgmt0
  - ethernet-1/1
  ...
  - ethernet-1/34
  mac: ""
  uuid: "352854967851155456"
  overrides:
    tag: 0.0.0-27910
- name: ls1-spine-1
  donotsimulate: false
  type: NokSrLinux
  hwdetails:
    chassis: "42"
    cpmtype: "69"
    cardtype: "127"
    mdatype: "182"
  interfaces:
  - mgmt0
  - ethernet-1/1
  ...
  - ethernet-4/36
  mac: ""
  uuid: "352854969713426432"
  overrides:
    tag: 0.0.0-27910
- name: ls1-leaf-2
  donotsimulate: false
  type: NokSrLinux
  hwdetails:
    chassis: "66"
    cpmtype: "177"
    cardtype: "177"
    mdatype: "194"
  interfaces:
  - mgmt0
  - ethernet-1/1
  ...
  - ethernet-1/34
  mac: ""
  uuid: "352854967851220992"
  overrides:
    tag: 0.0.0-27910
links:
- endpoints:
  - node: ls1-leaf-1
    interface: ethernet-1/3
- endpoints:
  - node: ls1-leaf-1
    interface: ethernet-1/4
- endpoints:
  - node: ls1-leaf-1
    interface: ethernet-1/5
- endpoints:
  - node: ls1-leaf-1
    interface: ethernet-1/6
- endpoints:
  - node: ls1-leaf-1
    interface: ethernet-1/34
  - node: ls1-spine-1
    interface: ethernet-1/8
- endpoints:
  - node: ls1-leaf-2
    interface: ethernet-1/27
  - node: ls1-spine-1
    interface: ethernet-1/9
lags:
- endpoints:
  - endpoints:
    - node: ls1-leaf-1
      interface: ethernet-1/10
    - node: ls1-leaf-1
      interface: ethernet-1/11
  name: lag1e10e11
- endpoints:
  - endpoints:
    - node: ls1-leaf-1
      interface: ethernet-1/12
    - node: ls1-leaf-1
      interface: ethernet-1/13
  name: lag1e12e13
- endpoints:
  - endpoints:
    - node: ls1-leaf-2
      interface: ethernet-1/10
    - node: ls1-leaf-2
      interface: ethernet-1/11
  name: lag2e10e11
- endpoints:
  - endpoints:
    - node: ls1-leaf-2
      interface: ethernet-1/12
    - node: ls1-leaf-2
      interface: ethernet-1/13
  name: lag2e12e13

Creating a workload intent

Workload intents can be created in the Fabric Services System GUI and be deployed to the Digital Sandbox. In the Digital Sandbox, a workload intent is referred to by the same name; workload. If any workload intent is created, updated, or removed in the GUI, the same action is performed in the Digital Sandbox. See the Fabric Services System User Guide for details on creating workload intents in the GUI.

The following CLI command can also be used to create a workload. Note that if a workload is created in the Digital Sandbox, it will not be created in the GUI.

dsctl intent create workload -i <name> -n <workload-name> -f <file>

Example:

The following will create a workload intent. In this example, the workload is associated with the DNS-compatible intent ID named ‛star’, and will be named ‛w1’. Data from the file /tmp/w1 is used to configure the underlay:

dsctl intent create workload -i star -n w1 -f /tmp/w1

where the file /tmp/w1 contains the following:

meta:
  intent: fspi352854779224915968
  id: EvpnWl1
  name: fspw352859849752576000
  version: 1
  uid: 1sd7znoq5f818jul
config:
  type: 2
  subnets:
    Br1Gw:
      identifier:
        id: "352859919361245184"
        name: Br1Gw
      vrftype: 1
      interfaces:
        TestWorkloadwithLag.LagLs1.LagLs1_gatenet_fabric.ls1-leaf-1-7220 IXR-D3.lag1e12e13.2:
          config:
            name: TestWorkloadwithLag.LagLs1.LagLs1_gatenet_fabric.ls1-leaf-1-7220
              IXR-D3.lag1e12e13.2
            node: ls1-leaf-1
            interface: lag1e12e13
            index: 0
            encap:
              type: 1
              dot1q: 2
            ips:
            - 12.12.12.1/24
            - 12.12.22.1/24
        TestWorkloadwithLag.LagLs2.LagLs2_gatenet_fabric.ls2-leaf-2-7220 IXR-D3.lag2e12e13.2:
          config:
            name: TestWorkloadwithLag.LagLs2.LagLs2_gatenet_fabric.ls2-leaf-2-7220
              IXR-D3.lag2e12e13.2
            node: ls2-leaf-2
            interface: lag2e12e13
            index: 0
            encap:
              type: 1
              dot1q: 2
            ips:
            - 12.12.12.1/24
            - 12.12.22.1/24
    Rt1:
      identifier:
        id: "352859941238734848"
        name: Rt1
      vrftype: 2
      interfaces:
        TestWorkloadwithLag.LagLs2.LagLs2_gatenet_fabric.ls2-leaf-1-7220 IXR-D3.lag1e12e13.3:
          config:
            name: TestWorkloadwithLag.LagLs2.LagLs2_gatenet_fabric.ls2-leaf-1-7220
              IXR-D3.lag1e12e13.3
            node: ls2-leaf-1
            interface: lag1e12e13
            index: 0
            encap:
              type: 1
              dot1q: 3
            ips:
            - 14.14.14.1/24
    br1NoGw:
      identifier:
        id: "352859881830612992"
        name: br1NoGw
      vrftype: 1
      interfaces:
        TestWorkloadwithLag.LagLs1.LagLs1_gatenet_fabric.ls1-leaf-1-7220 IXR-D3.lag1e10e11.1:
          config:
            name: TestWorkloadwithLag.LagLs1.LagLs1_gatenet_fabric.ls1-leaf-1-7220
              IXR-D3.lag1e10e11.1
            node: ls1-leaf-1
            interface: lag1e10e11
            index: 0
            encap:
              type: 1
              dot1q: 1
            ips: []
        TestWorkloadwithLag.LagLs1.LagLs1_gatenet_fabric.ls1-leaf-2-7220 IXR-D3.lag2e10e11.1:
          config:
            name: TestWorkloadwithLag.LagLs1.LagLs1_gatenet_fabric.ls1-leaf-2-7220
              IXR-D3.lag2e10e11.1
            node: ls1-leaf-2
            interface: lag2e10e11
            index: 0
            encap:
              type: 1
              dot1q: 1
            ips: []

Configuring the network edge

Whether configured on the Fabric Services System GUI or Digital Sandbox, underlay and workload intents lack sufficient information about the network edge. This limits the number of routes within a simulation, impacts traffic injection, and traffic network traversal is not possible.

This information is partially obtained through details in the active workload and through user input using the fully-qualified workload intent.

Generating an active workload

For every workload that is made active (via an update), the Digital Sandbox automatically generates an active-workload. This specifies the endpoint server and the interfaces or interfaces used to simulate the endpoint connected via the workload subnet subinterface. There is no equivalent of an active workload on the Fabric Services System GUI.

If you view an active workload, you can see that a peer section is added to the workload by the Digital Sandbox. This section contains:

  • config: Specifies the endpoint node and interface, including potential encapsulation

  • state: Specifies the virtual-sim and actual interfaces assigned to the interface specified in the config section

  • protocols: Specifies the protocols running on the interface (not supported yet)

The following CLI command can be used to view an active workload:

dsctl intent list active-workload -i <name> -n <active-workload-name>

Example:

dsctl intent list active-workload -i star -n aw1

{
  "meta": {
    "intent": "star",
    "id": "w1",
    "name": "w-1c3qxz79ccypf82f",
    "version": 1,
    "uid": "65oun6n1r0w90yum"
  },
  "source": {
    "workload": {
      "uid": "3ixz5smw6lxnnl3e",
      "version": 1
    }
  },
  "config": {
    "subnets": {
      "Rt1": {
        "identifier": {
          "id": "352859941238734848",
          "name": "Rt1"
        },
        "vrf_type": 2,
        "interfaces": {
          "TestWorkloadwithLag.LagLs2.LagLs2_gatenet_fabric.ls2-leaf-1-7220 IXR-D3.lag1e12e13.3": {
            "config": {
              "config": {
                "name": "TestWorkloadwithLag.LagLs2.LagLs2_gatenet_fabric.ls2-leaf-1-7220 IXR-D3.lag1e12e13.3",
                "node": "ls2-leaf-1",
                "interface": "lag1e12e13",
                "encap": {
                  "type": 1,
                  "dot1q": 3
                },
                "ips": [
                  "14.14.14.1/24"
                ]
              },
              "peer": {
                "config": {
                  "node": "sim-0",
                  "interface": "lag-lag1e12e13",
                  "encap": {
                    "type": 1,
                    "dot1q": 3
                  }
                },
                "state": {
                  "vsim": "vsim-14",
                  "interfaces": [
                    "itf-14",
                    "itf-18"
                  ]
                },
                "protocols": {}
              }
            }
          }
        }
      }
    },
    "type": 2
  }
}

Creating a fully-qualified workload intent

To complete a deployment on the Digital Sandbox, the IP configuration and protocol definition of the peer is needed. This can only be created in the Digital Sandbox using a fully-qualified workload intent. There is no equivalent in the Fabric Services System GUI.

The following CLI command is used to create a fully-qualified workload intent. A fully-qualified-workload has the same sections and subsections as the active-workload, but also includes the IP configuration and protocol definition of the peer.

dsctl intent create fully-qualified -i <name> -n <workload-name> -f <file>

Example:

The following will create a fully-qualified workload intent. In this example, note that an 'ips' section is now included in the peer subsection.

dsctl intent create fully-qualified-workload -i star -n fqw1 -f /tmp/fqw1

where the file /tmp/fqw1 contains the following:

{
  "meta": {
    "intent": "star",
    "id": "fqw1",
    "name": "w-1c3qxz79ccypf82f",
    "version": 1,
    "uid": "ujc2zn8i5e1kvh47"
  },
  "config": {
    "subnets": {
      "Rt1": {
        "identifier": {
          "id": "352859941238734848",
          "name": "Rt1"
        },
        "vrf_type": 2,
        "interfaces": {
          "TestWorkloadwithLag.LagLs2.LagLs2_gatenet_fabric.ls2-leaf-1-7220 IXR-D3.lag1e12e13.3": {
            "config": {
              "config": {
                "name": "TestWorkloadwithLag.LagLs2.LagLs2_gatenet_fabric.ls2-leaf-1-7220 IXR-D3.lag1e12e13.3",
                "node": "ls2-leaf-1",
                "interface": "lag1e12e13",
                "encap": {
                  "type": 1,
                  "dot1q": 3
                },
                "ips": [
                  "14.14.14.1/24"
                ]
              },
              "peer": {
                "config": {
                  "node": "sim-0",
                  "interface": "lag-lag1e12e13",
                  "encap": {
                    "type": 1,
                    "dot1q": 3
                  },
                  "ips": [
                    "14.14.14.76/24"
                  ]
                },
                "state": {
                  "vsim": "vsim-14",
                  "interfaces": [
                    "itf-14",
                    "itf-18"
                  ]
                },
                "protocols": {}
              }
            }
          }
        }
      }
    },
    "type": 2
  }
}