diff --git a/ofdpa/accton_util.py b/ofdpa/accton_util.py
index e6b2adc..e5a7e41 100755
--- a/ofdpa/accton_util.py
+++ b/ofdpa/accton_util.py
@@ -388,7 +388,29 @@
     logging.info("Add port table, match port %lx" % 0x10000)
     ctrl.message_send(request)
     
-    
+def pop_vlan_flow(ctrl, ports, vlan_id=1):
+    msgs=[]
+    for of_port in ports:
+            match = ofp.match()
+            match.oxm_list.append(ofp.oxm.in_port(of_port))
+            match.oxm_list.append(ofp.oxm.vlan_vid(0x1000+vlan_id))
+            request = ofp.message.flow_add(
+                table_id=10,
+                cookie=42,
+                match=match,
+                instructions=[
+                  ofp.instruction.apply_actions(
+                    actions=[
+                      ofp.action.pop_vlan()
+                    ]
+                  ),
+                  ofp.instruction.goto_table(11)
+                ],
+                priority=0)
+            logging.info("Add vlan %d tagged packets on port %d and go to table 20" %( vlan_id, of_port))
+            ctrl.message_send(request)
+
+    return msgs    
 
 def add_vlan_table_flow(ctrl, ports, vlan_id=1, flag=VLAN_TABLE_FLAG_ONLY_BOTH, send_barrier=False):
     # table 10: vlan
@@ -1226,4 +1248,4 @@
         print "idle_timeout", obj.idle_timeout
         print "hard_timeout", obj.hard_timeout
         #obj.actions
-        print "packet count: %lx"%obj.packet_count
\ No newline at end of file
+        print "packet count: %lx"%obj.packet_count
