diff --git a/TestON/tests/USECASE/SegmentRouting/INT/INT.params b/TestON/tests/USECASE/SegmentRouting/INT/INT.params
index 7f712f5..e6b4d49 100644
--- a/TestON/tests/USECASE/SegmentRouting/INT/INT.params
+++ b/TestON/tests/USECASE/SegmentRouting/INT/INT.params
@@ -10,37 +10,37 @@
                 <!-- A low-throughput flow to reset the queue report filter -->
                 <name>Low throughput flow</name>
                 <l1_bps>10000</l1_bps>
-                <trex_port>0</trex_port>
-                <packet>
-                    <pktlen>1400</pktlen>
-                    <ip_src>10.32.11.123</ip_src>
-                    <ip_dst>10.32.11.125</ip_dst>
-                    <eth_src>40:A6:B7:22:AB:40</eth_src>
-                    <eth_dst>40:A6:B7:22:AB:21</eth_dst>
-                </packet>
-            </RESET_QUEUE_REPORT_FILTER>
-            <FLOW1>
-                <name>Flow 1</name>
-                <l1_bps>25000000000</l1_bps> <!-- 25G -->
-                <trex_port>0</trex_port>
-                <packet>
-                    <pktlen>1400</pktlen>
-                    <ip_src>10.32.11.123</ip_src>
-                    <ip_dst>10.32.11.125</ip_dst>
-                    <eth_src>40:A6:B7:22:AB:40</eth_src>
-                    <eth_dst>40:A6:B7:22:AB:21</eth_dst>
-                </packet>
-            </FLOW1>
-            <FLOW2>
-                <name>Flow 2</name>
-                <l1_bps>25000000000</l1_bps> <!-- 25G -->
                 <trex_port>2</trex_port>
                 <packet>
                     <pktlen>1400</pktlen>
                     <ip_src>10.32.11.124</ip_src>
-                    <ip_dst>10.32.11.125</ip_dst>
+                    <ip_dst>10.32.11.122</ip_dst>
                     <eth_src>40:A6:B7:22:AB:20</eth_src>
-                    <eth_dst>40:A6:B7:22:AB:21</eth_dst>
+                    <eth_dst>3C:EC:EF:1C:F3:96</eth_dst>
+                </packet>
+            </RESET_QUEUE_REPORT_FILTER>
+            <FLOW1>
+                <name>Flow 1</name>
+                <l1_bps>1000000000</l1_bps> <!-- 1G -->
+                <trex_port>2</trex_port>
+                <packet>
+                    <pktlen>1400</pktlen>
+                    <ip_src>10.32.11.124</ip_src>
+                    <ip_dst>10.32.11.122</ip_dst>
+                    <eth_src>40:A6:B7:22:AB:20</eth_src>
+                    <eth_dst>3C:EC:EF:1C:F3:96</eth_dst>
+                </packet>
+            </FLOW1>
+            <FLOW2>
+                <name>Flow 2</name>
+                <l1_bps>1000000000</l1_bps> <!-- 1G -->
+                <trex_port>0</trex_port>
+                <packet>
+                    <pktlen>1400</pktlen>
+                    <ip_src>10.32.11.125</ip_src>
+                    <ip_dst>10.32.11.122</ip_dst>
+                    <eth_src>40:A6:B7:22:AB:40</eth_src>
+                    <eth_dst>3C:EC:EF:1C:F3:96</eth_dst>
                 </packet>
             </FLOW2>
         </flows>
diff --git a/TestON/tests/USECASE/SegmentRouting/INT/INT.py b/TestON/tests/USECASE/SegmentRouting/INT/INT.py
index 3da88d4..d307c9d 100644
--- a/TestON/tests/USECASE/SegmentRouting/INT/INT.py
+++ b/TestON/tests/USECASE/SegmentRouting/INT/INT.py
@@ -23,8 +23,8 @@
         dstIfaceName = main.h2.interfaces[0]["name"]
         srcMac = main.h1.getMac(srcIfaceName)
         dstMac = main.h2.getMac(dstIfaceName)
-        srcIp = main.h1.getIp(srcIfaceName)
-        dstIp = main.h2.getIp(dstIfaceName)
+        srcIp = main.h1.interfaces[0]['ips'][0]
+        dstIp = main.h2.interfaces[0]['ips'][0]
         srcPort = 2000
         dstPort = 8888
 
@@ -88,8 +88,8 @@
         dstIfaceName = main.h2.interfaces[0]["name"]
         srcMac = main.h1.getMac(srcIfaceName)
         dstMac = main.h2.getMac(dstIfaceName)
-        srcIp = main.h1.getIp(srcIfaceName)
-        dstIp = main.h2.getIp(dstIfaceName)
+        srcIp = main.h1.interfaces[0]['ips'][0]
+        dstIp = main.h2.interfaces[0]['ips'][0]
         srcPort = 2000
         dstPort = 8888
 
@@ -167,11 +167,10 @@
 
         main.step("Setting up hosts and variables")
         srcIfaceName = main.h1.interfaces[0]["name"]
-        dstIfaceName = main.h3.interfaces[0]["name"]
         srcMac = main.h1.getMac(srcIfaceName)
         dstMac = main.params.get("routerMac", "00:00:00:00:00:00")
-        srcIp = main.h1.getIp(srcIfaceName)
-        dstIp = main.h3.getIp(dstIfaceName)
+        srcIp = main.h1.interfaces[0]['ips'][0]
+        dstIp = main.h2.interfaces[0]['ips'][0]
         srcPort = 3000
         dstPort = 8888
 
@@ -277,7 +276,7 @@
         queueAnomalies = utilities.retry(
             f=getQueueAnomaly,
             retValue=[[]],
-            attempts=120,
+            attempts=30,
         )
 
         # We should get at least two congestion records
diff --git a/TestON/tests/USECASE/SegmentRouting/INT/INT.topo b/TestON/tests/USECASE/SegmentRouting/INT/INT.topo
index 1579fa1..f029d44 100644
--- a/TestON/tests/USECASE/SegmentRouting/INT/INT.topo
+++ b/TestON/tests/USECASE/SegmentRouting/INT/INT.topo
@@ -13,11 +13,11 @@
                 <mac></mac>
                 <inband>false</inband>
                 <dhcp>True</dhcp>
-                <ip>10.32.11.2</ip>
+                <ip>10.32.11.122</ip>
                 <shortName>h1</shortName>
                 <port1></port1>
                 <link1></link1>
-                <ifaceName>pairbond</ifaceName>
+                <ifaceName>eno3</ifaceName>
                 <routes>
                     <route1>
                         <network></network>
@@ -31,35 +31,6 @@
             </COMPONENTS>
         </Compute1>
 
-        <Compute2>
-            <host>10.76.28.72</host>
-            <user>jenkins</user>
-            <password></password>
-            <type>HostDriver</type>
-            <connect_order>7</connect_order>
-            <jump_host></jump_host>
-            <COMPONENTS>
-                <mac></mac>
-                <inband>false</inband>
-                <dhcp>True</dhcp>
-                <ip>10.32.11.3</ip>
-                <shortName>h2</shortName>
-                <port1></port1>
-                <link1></link1>
-                <ifaceName>pairbond</ifaceName>
-                <routes>
-                    <route1>
-                        <network></network>
-                        <netmask></netmask>
-                        <gw></gw>
-                        <interface></interface>
-                    </route1>
-                </routes>
-                <sudo_required>true</sudo_required>
-                <scapy_path>/usr/bin/scapy</scapy_path>
-            </COMPONENTS>
-        </Compute2>
-
         <Compute3>
             <host>10.76.28.68</host>
             <user>jenkins</user>
@@ -72,7 +43,7 @@
                 <inband>false</inband>
                 <dhcp>True</dhcp>
                 <ip>10.32.11.194</ip>
-                <shortName>h3</shortName>
+                <shortName>h2</shortName>
                 <port1></port1>
                 <link1></link1>
                 <ifaceName>eno2</ifaceName>
diff --git a/TestON/tests/USECASE/SegmentRouting/INT/dependencies/IntTest.py b/TestON/tests/USECASE/SegmentRouting/INT/dependencies/IntTest.py
index 2249ce2..7b6c0b4 100644
--- a/TestON/tests/USECASE/SegmentRouting/INT/dependencies/IntTest.py
+++ b/TestON/tests/USECASE/SegmentRouting/INT/dependencies/IntTest.py
@@ -9,7 +9,7 @@
 class IntTest:
 
     def __init__(self, scapy=False):
-        self.hosts = ["h1", "h2", "h3"]
+        self.hosts = ["h1", "h2"]
         self.scapy = scapy
 
     def setUpTest(self, main):
