Accessing the Grid

If you are a Drexel user, use your Drexel username and password to log on to the grid. An account will automatically be created for you the first time you log in, but an administrator must enable your account before you can use it.

Required Software

To fully utilize the grid, you will need an SSH client and an X Windows client. If you are using Linux, you already have everything you need. For other platforms, we recommend the following software:

  • Mac
    • XQuartz for X Windows support.
    • The built-in ssh command-line client.
  • Windows
    • MobaXterm for SSH and X Windows support. Choose the Home Edition and make sure you download the “Installer Edition.” Do not use the portable version, as it will delete your SSH keys every time it exits.
    • VcXsrv and Cygwin/X are possible alternatives, but we do not have experience using them ourselves.
    • PuTTY is not recommended.

Adding an SSH key

Access to the Grid itself is done using SSH keys—you will only use a password to log in to the web interface. You may add and remove SSH keys in the SSH key profile pane. The steps below walk through creating a new SSH key and uploading it to the Grid. For more details on using SSH keys, see GitHub’s documentation.

  1. Open a terminal on your personal computer (either the built-in terminal in Linux/MacOS or through MobaXterm for Windows).
  2. Execute the following command: ssh-keygen -t ed25519 -C “USERNAME@drexel.edu”, replacing USERNAME with your Drexel username. This creates a new ssh key with an associated comment (via -C) consisting of your Drexel email.
  3. When you are prompted to Enter a file in which to save the key, press Enter to accept the default file location in the ~/.ssh directory. Recall that ~ is shorthand for your home directory, so ~/.ssh is the directory named .ssh that is in your home directory.
  4. When asked, specify a password for your key at the prompt. Remember this password. You may also leave the password blank. If you specify a password, you will need to enter it every time you use the key unless you use ssh-agent.
  5. After your key pair is generated, navigate to ~/.ssh (use cd) and execute the command cat id_ed25519.pub to output the contents of the file id_ed25519.pub to the terminal. This is your public key.
  6. Go to the SSH key profile pane on the Grid web interface, copy your public key from the terminal, and paste it into the “Key” field. After you paste the public key and give it an optional title in the “Title” field, press “Add key” to upload your key. Be sure to add your public key to your account—if you try to add your private key, you will receive an error.

Logging in with SSH on Linux/macOS

On a UNIX-based machine, connect to the grid at the terminal by executing the following command. Be sure to replace USERNAME with your Grid username. If you are a Drexel student, your Grid username is the same as your Drexel username.

  1. Run ssh -i id_ed25519 USERNAME@dwslgrid.ece.drexel.edu in your terminal.

If you need X11 forwarding, add the -X option to the command line above (the X is capitalized).

Logging in with SSH on Windows (MobaXterm)

  1. Install MobaXterm.
  2. Open MobaXterm and click “Start Local Terminal.”
  3. Follow step 1 in the Linux/Mac OS section above.

Using gridcli to control reservations

Once you have connected to the Grid, the gridcli command-line client will allow you to launch and stop reservation and snapshot nodes. You can type gridcli -h to see a description of available options. The first time you use gridcli, it will ask you for your username and password. You should provide the same username and password that you use to access the Grid web interface. Subsequent invocations will not require authentication. Some gridcli operations, like stopping a reservation, can also be performed using the web interface.

Listing available nodes

When you launch a Grid reservation, you will need to specify which nodes to use. You may only specify nodes that are not already in use. Node status is shown on the Grid home page. You can also see a list of nodes and their statuses with the gridcli nodes command.

Listing reservations

A list of your reservations is available at the Reservations link. The command gridcli reservations will also list reservations, displaying each reservation’s name and unique identifier (in parentheses). You can use the unique identifier to manage the reservation using gridcli.

Launching a reservation

To launch a reservation, you must specify an image to run and a set of one or more nodes on which to run it. You can do this using the command gridcli reservation schedule IMAGE NODE [NODE …], where IMAGE, e.g., dragonradio-class is an image name and each NODE is a node name, e.g., grid01. You can see a list of available images by clicking the Images link on the Grid web page after logging in. If you do not know which image you want to use, try the dragonradio-class image, which has GNU Radio 3.8 and Dragon Radio both pre-installed in an Ubuntu 22.04 image. The gridcli command to launch a reservation will return immediately, but the reservation may take several minutes to start, especially if it must flash firmware. Once you have launched a reservation, you can see its status in the web interface at the Reservations link. When the status of the reservation changes to “Running,” you may connect to any of the nodes that are part of the reservation using SSH.

Specifying reservation start time and duration

By default, a reservation will start immediately and last for 4 hours. You may schedule an explicit start time using the --start flag when scheduling a reservation via gridcli. The argument to --start is a human-readable time specification, e.g., “10:30” or “1:30 pm”. The duration of the reservation can be specified using the --duration flag, whose argument is also human-readable, e.g., “1 hour” or “30 minutes”. A reservation’s initial duration may not be greater than 4 hours, although it may be extended.

Specifying UHD firmware

When launching an image on a node with an X310, the UHD firmware version can be specified with the –uhd option to gridcli node launch. Currently 3.9.5, 3.9.7, 3.15.LTS, 4.0.0.0, and 4.2.0.0 are supported. By default, X310’s are re-flashed with UHD 3.9.5 firmware on launch. N210’s cannot be automatically flashed; all N210 nodes run UHD 3.9.5 firmware.

Extending a reservation

If a reservation has less than an hour left, it may be extended an additional hour by clicking the icon in the web interface. You may also use the command gridcli reservation ID extend DURATION, where ID is the reservation’s unique identified, to extend the reservation by DURATION. You can see the unique identifier for your reservations at the Reservations link on the web interface (the identifier is in parentheses) or by running the command gridcli reservations

Stopping a reservation

A reservation can be stopped before its scheduled end time by clicking the icon in the web interface’s list of reservations or by executing the command gridcli reservation stop ID, where ID is the reservation’s unique identifier.

Logging in to a Grid node

Once you have launched a reservation and its status is “Running,” you may connect to any of the nodes that are part of the reservation using SSH. You must connect using your Grid username and one of the SSH keys that you previously uploaded to the Grid. All nodes are on a private network that is only accessible via dwslgrid.ece.drexel.edu, so to connect to a node, you must first SSH to dwslgrid.ece.drexel.edu and then SSH from there to the node. The most straightforward way to accomplish this is to copy your private SSH key to dwslgrid.ece.drexel.edu and then use this key when connecting to a node. With a bit of extra effort, you can instead proxy your SSH connection through dwslgrid automatically, which eliminates the intermediate manual invocation of SSH.

Proxying SSH connections through dwslgrid

See the OpenSSH Cookbook entry on proxies and jump hosts for details on how to automatically proxy SSH connections to instances through dwslgrid.ece.drexel.edu. If you are connecting to the Grid from a Linux or Mac, adding a section to your ~/.ssh/config along the lines given below on your personal machine will allow you to connect easily to both dwslgrid and individual grid nodes. Be sure to replace USERNAME with your username and PRIVKEYFILE with the name of your private key. If you generated a key pair using the instructions above, PRIVKEYFILE should be id_ed25519.

Host dwslgrid dwslgrid.ece.drexel.edu
  HostName dwslgrid.ece.drexel.edu
  User USERNAME
  IdentityFile ~/.ssh/PRIVKEYFILE
  ForwardX11 yes
  ServerAliveInterval 60
  ServerAliveCountMax 2

Host grid??
  HostName %h
  StrictHostKeyChecking no
  UserKnownHostsFile /dev/null
  User USERNAME
  IdentityFile ~/.ssh/PRIVKEYFILE
  ForwardX11 yes
  ProxyJump dwslgrid

Working with images

You can see a list of available images by clicking the Images link on the Grid web page after logging in or by executing the command gridcli images.

You may also use any image from the following remote sources if you use the –remote-image command-line flag when launching an instance.

  1. The images: default remote. See here for a list.
  2. The ubuntu: default remote. See here for a list.
  3. The ubuntu-daily: default remote. See here for a list.

For example, you may specify ubuntu:22.04 to launch a bare Ubuntu 22.04 container. Image from these remote sources will not be listed by gridcli images.

Adding your own image

To use your own image, copy it to the images directory in your home directory. The image must be readable by all users. You can accomplish this by running chmod 0444 IMAGE at the terminal, where IMAGE is your image file. Although counter-intuitive, this will not allow other users to see or use your image. You can manage your images via the Images link in the web interface. Marking an image “public” will make it available to every Grid user.

Snapshotting a node

You can snapshot a running instance by typing gridcli node snapshot NODE SNAPSHOTNAME, where NODE is the node you wish to snapshot and SNAPSHOTNAME is the name of the snapshot you want to create. The snapshot will be written to the images directory in your home directory and will be named SNAPSHOTNAME.tar.gz. The node will be paused while a snapshot is taken, which can take several minutes depending on the size of the image.

If you receive the error The grid user does not have permission to write to /home/USER/images., where USER is your username, check that the permissions on your home directory allow the grid user to write to your images directory. Your home directory must have a+x permissions, which you can provide with the command chmod a+x ~. There must also be a directory images in your home directory that is owned by you, owned by the grid group, and has permissions 0770. If the images directory does not exist or has the wrong group, you will need to contact support to have it created.

REST API

The Grid provides a REST API (gridcli works exclusively via the REST API). Both Swagger documentation and ReDoc documentation are available. An OpenAPI schema is also available. You must be logged in to access the API.

You can obtain an API token that will allow you to authenticate to the API without using a username and password via the API profile pane.

Contact

If you need additional help, please contact support@dwslgrid.net.