diff --git a/.gitignore b/.gitignore
index ff89877..a5dd45e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,3 +8,6 @@
 # python distribution related
 dist
 *.egg-info
+
+# ide workspace
+.idea
diff --git a/pyvoltha/common/openflow/utils.py b/pyvoltha/common/openflow/utils.py
index 27b99b5..d2a9677 100644
--- a/pyvoltha/common/openflow/utils.py
+++ b/pyvoltha/common/openflow/utils.py
@@ -309,7 +309,7 @@
 
 
 def tunnel_id(_tunnel_id):
-    return ofb_field(type=TUNNEL_ID, arp_tha=_tunnel_id)
+    return ofb_field(type=TUNNEL_ID, tunnel_id=_tunnel_id)
 
 
 def ipv6_exthdr(_ipv6_exthdr):
@@ -358,6 +358,13 @@
     return None
 
 
+def get_tunnelid(flow):
+    for field in get_ofb_fields(flow):
+        if field.type == TUNNEL_ID:
+            return field.tunnel_id
+    return None
+
+
 def get_metadata(flow):
     ''' legacy get method (only want lower 32 bits '''
     for field in get_ofb_fields(flow):
@@ -415,6 +422,20 @@
     return (md >> 32) & 0xffffffff
 
 
+def get_child_port_from_tunnelid(flow):
+    """
+    Extract the child device port from a flow that contains the parent device peer port.  Typically the UNI port of an
+    ONU child device.  Per TST agreement this will be the lower 32 bits of tunnel id reserving upper 32 bits for later
+    use
+    """
+    tid = get_tunnelid(flow)
+
+    if tid is None:
+        return None
+
+    return int(tid & 0xffffffff)
+
+
 # test and extract next table and group information
 def has_next_table(flow):
     return get_goto_table_id(flow) is not None
