How is it made? Modify input routines to tag received packets Change lookup functions to respect tags Fight with ARP and interface code to store and lookup L2 information in tables specified by the tag Make pf(4) understand and modify routing domains Rinse and repeat until bug free