1. Move all packets up/down
2. Process up/down triggers and store to "to be pushed" or drop immediately
3. Process push triggers from previous cycle and store to "to be pushed" or drop immediately
4. Push all packets in "to be pushed"
5. Pull and store to next cycle's "to be pushed"