Modern requirements go often beyond connectivity. For example, operators may want to ensure that packets traverse a given middlebox (e.g., a firewall) for security reasons, or a chain of middleboxes (e.g., encoder and decoder) for performance reasons; and/or they might like to enforce that paths comply with Service Level Agreements (e.g., in terms of delay).