diff --git a/ofdpa/flows.py b/ofdpa/flows.py
index 0033468..2413d81 100755
--- a/ofdpa/flows.py
+++ b/ofdpa/flows.py
@@ -1164,12 +1164,15 @@
         # Assigns unique hardcoded test_id to make sure tests don't overlap when writing rules
         ports = config["port_map"].keys()
         for port in ports:
+            # Shift MPLS label and VLAN ID by 16 to avoid reserved values
+            vlan_id = port + 16
+            mpls_label = port + 16
+
             # add l2 interface group
             id = port
-            vlan_id = id
             l2_gid, l2_msg = add_one_l2_interface_group(self.controller, port,
                                                         vlan_id, True, False)
-            dst_mac[5] = vlan_id
+            dst_mac[5] = port
             # add L3 Unicast  group
             l3_msg = add_l3_unicast_group(self.controller, port, vlanid=vlan_id,
                                           id=id, src_mac=intf_src_mac,
@@ -1182,7 +1185,7 @@
             # add termination flow
             add_termination_flow(self.controller, port, 0x8847, intf_src_mac,
                                  vlan_id, goto_table=24)
-            add_mpls_flow(self.controller, ecmp_msg.group_id, port)
+            add_mpls_flow(self.controller, ecmp_msg.group_id, mpls_label)
             Groups._put(l2_gid)
             Groups._put(l3_msg.group_id)
             Groups._put(ecmp_msg.group_id)
@@ -1194,11 +1197,16 @@
             for out_port in ports:
                 if in_port == out_port:
                     continue
-                ip_dst = '192.168.%02d.1' % (out_port)
 
-                label = (out_port, 0, 1, 32)
+                # Shift MPLS label and VLAN ID by 16 to avoid reserved values
+                out_mpls_label = out_port + 16
+                in_vlan_vid = in_port + 16
+                out_vlan_vid = out_port + 16
+
+                ip_dst = '192.168.%02d.1' % (out_port)
+                label = (out_mpls_label, 0, 1, 32)
                 parsed_pkt = mpls_packet(pktlen=104, dl_vlan_enable=True,
-                                         vlan_vid=(in_port), ip_src=ip_src,
+                                         vlan_vid=(in_vlan_vid), ip_src=ip_src,
                                          ip_dst=ip_dst, eth_dst=switch_mac,
                                          label=[label])
                 pkt = str(parsed_pkt)
@@ -1207,7 +1215,7 @@
                 # build expect packet
                 mac_dst = '00:00:00:22:22:%02X' % (out_port)
                 exp_pkt = simple_tcp_packet(pktlen=100, dl_vlan_enable=True,
-                                            vlan_vid=(out_port),
+                                            vlan_vid=(out_vlan_vid),
                                             eth_dst=mac_dst, eth_src=switch_mac,
                                             ip_ttl=31, ip_src=ip_src,
                                             ip_dst=ip_dst)
