Using the Digital Sandbox - standalone

In this use case, all configuration is performed using CLI commands in the Digital Sandbox.

When the Digital Sandbox is used standalone, a number of deployment sessions can be created verses only one deployment session if you are using the Digital Sandbox integrated with the Fabric Services System GUI. The total number is variable based on the DhcpRange specified. In addition, no configuration details are passed back to the Fabric Services System GUI.

Using the Digital Sandbox standalone, you must specify the different Network Elements (NEs) within the topology, and the L2 network segments that exist between the NEs. All elements at the border must be fully specified also.

Creating a deployment

To create a deployment (simulation session) for a standalone Digital Sandbox session, the following command is used:

dsctl create deployment -i <name> -f <file> [-t <tar-file>]

Where:

  • <name> is the user-defined name of the deployment.

  • <file> is the file (path+filename) that contains the necessary specification. This is a YAML encoded file used to define the deployment configuration.

  • <tar-file> is a .tar file (path+filename) containing the configuration relevant to the NE defined in the 'file'. The .tar files contain a per-node directory that contain the config.json and state.json files of these nodes.

Using the dsctl create deployment command, there are two approaches to creating and updating a Digital Sandbox deployment:

  • The topology is specified by the user.

  • The topology is automatically derived using configuration/state files of networked SR Linux devices.

The sections that follow show an example of each and show how the .yaml file will differ for each method.

Creating a deployment (user specified topology)

This example shows the command and .yaml file content for an user specified topology.

In this example, the user specifies the different Network Elements (NEs) within the topology, and the L2 network segments that exist between those elements. All elements at the border are also fully specified.

Example:

dsctl create deployment -i star -f 7config.yaml -t 7config.tar

where the file 7config.yaml contains the following:

deriveTopology: false
createSimulators: false
nodes:
  as--sim-1:
    deviceType: Simulator
    interfaces: [simitf-0, simitf-1, simitf-2]
    overrides:
      deriveConfig: false
  dut2:
    deviceType: NokSrLinux
    interfaces: [mgmt0, ethernet-1/1, ethernet-1/2, ethernet-1/3, ethernet-1/4, ethernet-1/5]
    mac: "00:01:02:00:00:00"
    uuid: helper
    chassisID: 00:01:02:ff:00:00
  dut3:
    deviceType: NokSrLinux
    interfaces: [ethernet-1/1, ethernet-1/2, ethernet-1/3, ethernet-1/4, mgmt0, ethernet-1/5]
    mac: "00:01:03:00:00:00"
    chassisID: 00:01:03:ff:00:00
  dut4:
    deviceType: NokSrLinux
    interfaces: [ethernet-1/1, ethernet-1/2, ethernet-1/3, ethernet-1/4, mgmt0, ethernet-1/5]
    mac: "00:01:04:00:00:00"
    chassisID: 00:01:04:ff:00:00
  dut5:
    deviceType: NokSrLinux
    interfaces: [ethernet-1/1, ethernet-1/2, ethernet-1/3, ethernet-1/4, mgmt0, ethernet-1/5]
    mac: "00:01:05:00:00:00"
    chassisID: 00:01:05:ff:00:00
  as--sim-2:
    deviceType: ThirdParty
    template: bgp-simulator
    interfaces: [simitf-1, simitf-2]
    overrides:
      deriveConfig: false
  as--sim-3:
    deviceType: Simulator
    interfaces: [simitf-1, simitf-2]
    overrides:
      deriveConfig: false
links:
- link:
  - node: as--sim-1
    itf: simitf-1
  - node: dut2
    itf: mgmt0
  - node: dut3
    itf: mgmt0
  - node: dut4
    itf: mgmt0
  - node: dut5
    itf: mgmt0
  isMgmtSegment: true
- link:
  - node: as--sim-1
    itf: simitf-0
  - node: dut2
    itf: ethernet-1/1
  isP2PSegment: true
- link:
  - node: as--sim-1
    itf: simitf-2
  - node: dut3
    itf: ethernet-1/1
- link:
  - node: dut2
    itf: ethernet-1/2
  - node: dut3
    itf: ethernet-1/2
  isP2PSegment: true
- link:
  - node: dut2
    itf: ethernet-1/3
  - node: dut4
    itf: ethernet-1/1
- link:
  - node: dut2
    itf: ethernet-1/4
  - node: dut5
    itf: ethernet-1/1
- link:
  - node: dut3
    itf: ethernet-1/3
  - node: dut4
    itf: ethernet-1/2
- link:
  - node: dut3
    itf: ethernet-1/4
  - node: dut5
    itf: ethernet-1/2
- link:
  - node: dut4
    itf: ethernet-1/3
  - node: dut5
    itf: ethernet-1/3
- link:
  - node: dut4
    itf: ethernet-1/4
  - node: as--sim-2
    itf: simitf-1
- link:
  - node: dut4
    itf: ethernet-1/5
  - node: as--sim-3
    itf: simitf-1
- link:
  - node: dut5
    itf: ethernet-1/4
  - node: as--sim-2
    itf: simitf-2
- link:
  - node: dut5
    itf: ethernet-1/5
  - node: as--sim-3
    itf: simitf-2

Creating a deployment (auto-derived topology)

This example shows the command and .yaml file content for an auto-derived topology.

When the .yaml file below is given as input, the Digital Sandbox assumes four SR Linux devices are running on node 10.0.0.1 as docker containers. They make up the network that the user wants to replicate. If no .tar file is provided, the Digital Sandbox will login to the nodes, collect config and state files for the nodes, and auto-derive the topology and generate simulators at the edges of the network.

Example:

dsctl create deployment -i star -f 7live.yaml -t 7live.tar

where the file 7live.yaml contains the following:

deriveTopology: true
createSimulators: true
nodes:
  srlinux_home_jvandena_ws_srlinux4_dut2:
    deviceType: NokSrLinux
    remoteConnect:
      ip: 10.0.0.1
      login: mainuser
      password: pwd01
      connectType: docker
      connectNames: [srlinux_home_jvandena_ws_srlinux4_dut2]
  srlinux_home_jvandena_ws_srlinux4_dut3:
    deviceType: NokSrLinux
    remoteConnect:
      ip: 10.0.0.1
      login: mainuser
      password: pwd01
      connectType: docker
      connectNames: [srlinux_home_jvandena_ws_srlinux4_dut3]
  srlinux_home_jvandena_ws_srlinux4_dut4:
    deviceType: NokSrLinux
    remoteConnect:
      ip: 10.0.0.1
      login: mainuser
      password: pwd01
      connectType: docker
      connectNames: [srlinux_home_jvandena_ws_srlinux4_dut4]
  srlinux_home_jvandena_ws_srlinux4_dut5:
    deviceType: NokSrLinux
    remoteConnect:
      ip: 10.0.0.1
      login: mainuser
      password: pwd01
      connectType: docker
      connectNames: [srlinux_home_jvandena_ws_srlinux4_dut5]

Updating a deployment

When updating a deployment, the following command is used:

dsctl update deployment -i <name> -f <file> [-t <tar-file>]

Example:

dsctl update deployment -i star -f 7live.yaml -t 7live.tar

Assuming the 7live.yaml file content is different from what is currently configured, the Digital Sandbox would automatically determine which nodes are new, updated, or removed, and update the deployment as specified.