Testing the ACME Topology

Now that we have created our acme.topology MC, we can test it to see it if works as expected. First, we can try executing it without launching any VMs. This helps us find any syntax errors or issues with the MANIFEST file.

To do so, we can run:

$ firewheel experiment acme.topology

You should see the following output:

$ firewheel experiment acme.topology

Do you want to execute /tmp/acme/topology/INSTALL [y/n/v/vc/q]: y
Starting to install acme.topology!
The acme.topology INSTALL file currently doesn't do anything!
Installed acme.topology!
Adding vyos-1.1.8.qc2.xz to cache. This may take a while. \ 0:00:12


            Model Components Executed
┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┓
┃ Model Component Name    Result        Timing     ┃
┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━┩
│ misc.blank_graph              OK   0.001 seconds │
│ base_objects                  OK   0.010 seconds │
│ generic_vm_objects            OK   0.002 seconds │
│ linux.base_objects            OK   0.020 seconds │
│ linux.ubuntu                  OK   0.018 seconds │
│ linux.ubuntu2204              OK   0.028 seconds │
│ vyos                          OK   0.030 seconds │
│ vyos.helium118                OK  12.123 seconds │
│ acme.topology                 OK   0.010 seconds │
├──────────────────────┼────────────┼────────────────┤
│                       Total Time  16.283 seconds │
└──────────────────────┴────────────┴────────────────┘
    Dependency resolution took 0.812 seconds

Note

We can answer y to the question "Do you want to execute /tmp/acme/topology/INSTALL" as this file does not perform any meaningful actions and then we will not be asked to install the MC again.

Note

If this is the first time you are running an experiment, you may see output which indicates that various image files are being cached: e.g. Adding vyos-1.1.8.qc2.xz to cache. This may take a while.. The images are being cached for quicker access in future experiments.

If any errors are found, fix them before moving on to the next step.

Launching the Topology

Now we are ready to launch the topology. We can instantiate it with minimega by using the minimega.launch_mc MC:

$ firewheel experiment acme.topology minimega.launch

You should see the following output:

$ firewheel experiment acme.topology minimega.launch


                    Model Components Executed
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓
┃      Model Component Name          Result        Timing      ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩
│ misc.blank_graph                         OK    0.001 seconds │
│ base_objects                             OK    0.011 seconds │
│ linux.base_objects                       OK    0.022 seconds │
│ generic_vm_objects                       OK    0.001 seconds │
│ vyos                                     OK    0.018 seconds │
│ vyos.helium118                           OK    0.016 seconds │
│ linux.ubuntu                             OK    0.020 seconds │
│ linux.ubuntu2204                         OK    0.045 seconds │
│ acme.topology                            OK    0.011 seconds │
│ minimega.emulated_entities               OK    0.007 seconds │
│ minimega.testbed_available               OK    0.026 seconds │
│ linux.ubuntu1604                         OK  103.180 seconds │
│ minimega.create_mac_addresses            OK    0.004 seconds │
│ minimega.resolve_vm_images               OK    0.025 seconds │
│ minimega.configure_ips                   OK    0.002 seconds │
│ minimega.send_miniweb_arp                OK    0.001 seconds │
│ minimega.schedules_ready                 OK    0.000 seconds │
│ vm_resource.schedule                     OK    0.054 seconds │
│ vm_resource.validate                     OK    0.015 seconds │
│ minimega.parse_experiment_graph          OK    5.089 seconds │
│ minimega.launch                          OK    0.000 seconds │
├─────────────────────────────────┼────────────┼─────────────────┤
│                                  Total Time  111.348 seconds │
└─────────────────────────────────┴────────────┴─────────────────┘
            Dependency resolution took 2.556 seconds

Once the topology is up and running you can use the vm mix command to check the state of the environment:

$ firewheel vm mix
                                    VM Mix
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━┓
┃ VM Image                          Power State  VM Resource State  Count ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━┩
│ ubuntu-22.04-server-amd64.qcow2   RUNNING      configured         3     │
├──────────────────────────────────┼─────────────┼───────────────────┼───────┤
│ vyos-1.1.8.qc2                    RUNNING      configured         5     │
├──────────────────────────────────┼─────────────┼───────────────────┼───────┤
│ ubuntu-22.04-desktop-amd64.qcow2  RUNNING      configuring        6     │
├──────────────────────────────────┼─────────────┼───────────────────┼───────┤
│                                                Total Scheduled    14    │
└──────────────────────────────────┴─────────────┴───────────────────┴───────┘

Checking Connectivity

Once all of the nodes have been configured we can verify that the graph is connected as expected. For this tutorial, we will use miniweb to connect to the VMs. Please see Using miniweb for details on connecting to miniweb.

Once you are connected to miniweb, you can log into several of the VMs and verify connectivity manually via ping.

Note

We recommend that your VMs initially use simple default user names/passwords for ease of use. For example, VMs that are Ubuntu-based might have a default username of ubuntu and a default password of ubuntu, while VMs that are VyOS-based might have a default username of vyos and a default password of vyos. Once users are familiar with FIREWHEEL, you might choose alternate passwords for your VMs for more security.

For our experiment we at least want to verify that a VM located in Building 1 can access the data center servers prior to installation of the new access control rules. In miniweb, you can search for building1-host-0.acme.com and then click the connect button to join the VNC session.

Hint
  1. Find the IP address of one of the data center servers. (i.e., log into a server and run ifconfig.)

  2. Now, log into building1-host-0.acme.com

  3. Attempt to ping the data center IP address from our Building 1 host.

  4. If the ping is successful, the topology has launched correctly