How i3 helps

i3 enables you to insert triggers which point to a stack of a ids. Let ID_S be the i3 of server S. Normally, we would have inserted a trigger (ID_S -> S) to point directly to the IP address of S. In order to impose the middlebox, we instead insert a trigger pointing to a stack of ids: (ID_S -> [ID_M, ID_S']). Here ID_M is the id of the middlebox. ID_S` is a secret id of S. We insert another trigger (ID_S' -> S) for the final hop.