diff --git a/README.md b/README.md
index 36e7dc0..51de507 100644
--- a/README.md
+++ b/README.md
@@ -37,7 +37,7 @@
 | flavor_ram | 1536 | To define RAM allocation for specific flavor, MB |
 | flavor_vcpus | 1 | To define a count of vCPU for flavor |
 | flavor_disk | 5 | To define a count of disks on flavor, GB |
-| image_name | Ubuntu-18.04 | Cloud Ubuntu image to create VMs |
+| image_name | cvp.ubuntu.2004 | Cloud Ubuntu image to create VMs. Use 20.04 image in case internet_at_vms=false since the offline packages are set for Ubuntu 20.04. You can use any other Ubuntu image in case internet_at_vms=true. |
 | CMP_HOSTS | "" | Pair of compute hosts to create VMs at different hosts. By default, some random pair from nova compute list will be selected. To set some pair, set _CMP_HOSTS: ["cmp001", "cmp002"]_ in _global_config.yaml_ file, or export CMP_HOSTS="cmp001,cmp002". | 
 | skipped_nodes | "" | Skip some compute hosts, so they are not selected at CMP_HOSTS pair. To set some nodes to skip, set _skipped_nodes: ["cmp003"]_ in _global_config.yaml_ file, or export skipped_nodes="cmp003".|
 | nova_timeout | 300 | Timeout to VM to be ACTIVE, seconds. |
diff --git a/fixtures/base.py b/fixtures/base.py
index 2ecfc21..630e69f 100644
--- a/fixtures/base.py
+++ b/fixtures/base.py
@@ -37,7 +37,7 @@
     os_actions = os_client.OSCliActions(openstack_clients)
     os_resource = {}
     config = utils.get_configuration()
-    image_name = config.get('image_name', 'Ubuntu-18.04')
+    image_name = config.get('image_name', 'cvp.ubuntu.2004')
     flavor_name = config.get('flavor_name', 'spt-test')
     flavor_ram = config.get('flavor_ram', 1536)
     flavor_vcpus = config.get('flavor_vcpus', 1)
diff --git a/global_config.yaml b/global_config.yaml
index 025bd60..5bdb6f0 100644
--- a/global_config.yaml
+++ b/global_config.yaml
@@ -4,7 +4,7 @@
 
 # parameters for vm2vm test
 CMP_HOSTS: []
-image_name: "Ubuntu-18.04"
+image_name: "cvp.ubuntu.2004" # Use Ubuntu 20.04 LTS image
 flavor_name: 'spt-test'
 flavor_ram: 1536
 flavor_vcpus: 1
@@ -16,5 +16,6 @@
 internet_at_vms: 'true' # whether Internet is present at OpenStack VMs and iperf can be installed with apt
 iperf_deb_package_dir_path: '/opt/packages/'
 iperf_time: 60 # time in seconds to transmit for (iperf -t option)
+multiple_threads_number: 10
 ssh_timeout: 500
 skipped_nodes: []
diff --git a/tests/test_vm2vm.py b/tests/test_vm2vm.py
index 4367ee8..9c6d107 100644
--- a/tests/test_vm2vm.py
+++ b/tests/test_vm2vm.py
@@ -21,7 +21,8 @@
     3. Connect to each VM via SSH and install iperf3
     4. Measure VM to VM on same node via Private IP, 1 thread
     5. Measure VM to VM on different HW nodes via Private IP, 1 thread
-    6. Measure VM to VM on different HW nodes via Private IP, 10 threads
+    6. Measure VM to VM on different HW nodes via Private IP, multiple threads
+       (10 by default)
     7. Measure VM to VM on different HW nodes via Floating IP, 1 thread
     8. Measure VM to VM on different HW nodes, each VM is in separate network,
        the networks are connected using Router via Private IP, 1 thread
@@ -33,7 +34,8 @@
     iperf_time = int(config.get('iperf_time', 60))
     private_key = os_resources['keypair'].private_key
     ssh_timeout = int(config.get('ssh_timeout', 500))
-    result_table = Texttable()
+    threads = int(config.get('multiple_threads_number', 10))
+    result_table = Texttable(max_width=120)
 
     try:
         zone1 = [service.zone for service in
@@ -115,7 +117,7 @@
         res1 = (b" ".join(result1.split()[-4:-2:])).decode('utf-8')
         logger.info("Result #1 is {}".format(res1))
         table_rows.append(['VM to VM in same tenant on same node via '
-                           'Private IP, 1 thread',
+                           'Private IP, 1 thread; iperf3',
                            "{}".format(pair[0]),
                            "{}".format(pair[0]),
                            "{}, {}".format(mtus[0], mtus[1]),
@@ -130,7 +132,7 @@
         res2 = (b" ".join(result2.split()[-4:-2:])).decode('utf-8')
         logger.info("Result #2 is {}".format(res2))
         table_rows.append(['VM to VM in same tenant on different HW nodes '
-                           'via Private IP, 1 thread',
+                           'via Private IP, 1 thread; iperf3',
                            "{}".format(pair[0]),
                            "{}".format(pair[1]),
                            "{}, {}".format(mtus[0], mtus[2]),
@@ -138,20 +140,21 @@
 
         # Do iperf3 measurement #3
         logger.info("Doing 'VM to VM in same tenant on different HW nodes "
-                    "via Private IP, 10 threads' measurement...")
+                    "via Private IP, {} threads' measurement..."
+                    "".format(threads))
         result3 = transport1.exec_command(
-            'iperf3 -c {} -P 10 -t {} | grep sender | tail -n 1'.format(
-                vm_info[2]['private_address'], iperf_time))
-        res3 = (b" ".join(result3.split()[-4:-2:])).decode('utf-8')
+            'iperf -c {} -P {} -t {} | tail -n 1'.format(
+                vm_info[2]['private_address'], threads, iperf_time))
+        res3 = (b" ".join(result3.split()[-2::])).decode('utf-8')
         logger.info("Result #3 is {}".format(res3))
         table_rows.append(['VM to VM in same tenant on different HW nodes '
-                           'via Private IP, 10 threads',
+                           'via Private IP, {} threads; iperf (v2)'.format(threads),
                            "{}".format(pair[0]),
                            "{}".format(pair[1]),
                            "{}, {}".format(mtus[0], mtus[2]),
                            "{}".format(res3)])
 
-        # Do iperf3 measurement #4
+        # Do iperf (v2) measurement #4
         logger.info("Doing 'VM to VM in same tenant via Floating IP and VMs "
                     "are on different nodes, 1 thread' measurement...")
         result4 = transport1.exec_command(
@@ -160,7 +163,7 @@
         res4 = (b" ".join(result4.split()[-4:-2:])).decode('utf-8')
         logger.info("Result #4 is {}".format(res4))
         table_rows.append(['VM to VM in same tenant via Floating IP and VMs '
-                           'are on different nodes, 1 thread',
+                           'are on different nodes, 1 thread; iperf3',
                            "{}".format(pair[0]),
                            "{}".format(pair[1]),
                            "{}, {}".format(mtus[0], mtus[2]),
@@ -178,7 +181,8 @@
         logger.info("Result #5 is {}".format(res5))
         table_rows.append(['VM to VM in same tenant, different HW nodes and '
                            'each VM is connected to separate network which are'
-                           ' connected using Router via Private IP, 1 thread',
+                           ' connected using Router via Private IP, 1 thread; '
+                           'iperf3',
                            "{}".format(pair[0]),
                            "{}".format(pair[1]),
                            "{}, {}".format(mtus[0], mtus[3]),
diff --git a/utils/os_client.py b/utils/os_client.py
index e22ce19..63f9151 100644
--- a/utils/os_client.py
+++ b/utils/os_client.py
@@ -310,6 +310,13 @@
                     'cidr': '0.0.0.0/0',
                 },
                 {
+                    # iperf
+                    'ip_protocol': 'tcp',
+                    'from_port': 5001,
+                    'to_port': 5001,
+                    'cidr': '0.0.0.0/0',
+                },
+                {
                     # ping
                     'ip_protocol': 'icmp',
                     'from_port': -1,
diff --git a/utils/ssh.py b/utils/ssh.py
index f6d61a2..fb684bb 100644
--- a/utils/ssh.py
+++ b/utils/ssh.py
@@ -126,14 +126,14 @@
 
     def put_iperf3_deb_packages_at_vms(self, source_directory,
                                        destination_directory):
-        required_packages = ['iperf3', 'libiperf0', 'libsctp1']
+        required_packages = ['iperf', 'iperf3', 'libiperf0', 'libsctp1']
         iperf_deb_files = [pack for pack in os.listdir(source_directory) if
                            any(req in pack for req in required_packages) if
                            pack.endswith('.deb')]
         if not iperf_deb_files:
             raise BaseException(
-                "iperf3 *.deb packages are not found locally at path {}. "
-                "Please recheck 'iperf_deb_package_dir_path' variable in "
+                "iperf3 or iperf *.deb packages are not found locally at path"
+                " {}. Please recheck 'iperf_deb_package_dir_path' variable in "
                 "global_config.yaml and check *.deb packages are manually "
                 "copied there.".format(source_directory))
         for f in iperf_deb_files:
@@ -186,6 +186,7 @@
         mtu = transport.exec_command('cat /sys/class/net/{}/mtu'.format(iface))
         return mtu.decode("utf-8")
 
+
 class prepare_iperf(object):
 
     def __init__(self, fip, user='ubuntu', password='password',
@@ -194,10 +195,10 @@
         transport = SSHTransport(fip, user, password, private_key)
         config = utils.get_configuration()
 
-        # Install iperf3 using apt or downloaded deb package
+        # Install iperf, iperf3 using apt or downloaded deb packages
         internet_at_vms = utils.get_configuration().get("internet_at_vms")
         if internet_at_vms.lower() == 'false':
-            logger.info("Copying offline iperf3 deb packages, installing...")
+            logger.info("Copying offline iperf* deb packages, installing...")
             path_to_iperf_deb = (config.get('iperf_deb_package_dir_path') or
                                  "/opt/packages/")
             home_ubuntu = "/home/ubuntu/"
@@ -205,15 +206,16 @@
                                                      home_ubuntu)
             transport.exec_command('sudo dpkg -i {}*.deb'.format(home_ubuntu))
         else:
-            logger.info("Installing iperf3 using apt")
+            logger.info("Installing iperf, iperf3 using apt")
             preparation_cmd = config.get('iperf_prep_string') or ['']
             transport.exec_command(preparation_cmd)
             transport.exec_command('sudo apt-get update;'
-                                   'sudo apt-get install -y iperf3')
+                                   'sudo apt-get install -y iperf3 iperf')
 
         # Log whether iperf is installed with version
-        check = transport.exec_command('dpkg -l | grep iperf3')
-        logger.debug(check.decode('utf-8'))
+        check = transport.exec_command('dpkg -l | grep iperf')
+        logger.info(check.decode('utf-8'))
 
         # Staring iperf server
         transport.exec_command('nohup iperf3 -s > file 2>&1 &')
+        transport.exec_command('nohup iperf -s > file 2>&1 &')
