1. A controller for provisioning one or more forwarding topologies in a network having a plurality of nodes the controller comprising: at least one memory storing program instructions; and at least one processor operative to execute the program instructions to: receive information pertaining to an affinity topology, the affinity topology specifying affinity link attributes that describe policies and attributes for communications between a plurality of application components of the network along affinity links, wherein an affinity link represents a logical link between at least two application components within the network; compute one or more end-to-end forwarding topologies based at least in part on the affinity topology, each end-to-end forwarding topology identifying one or more network segments for configuring interconnections between the plurality of nodes for forwarding traffic through the network, wherein each end-to-end forwarding topology is defined by at least one candidate forwarding path, and a forwarding path identifies at least one network segment for forwarding traffic through the network; compute, for each path of the at least one candidate forwarding path in the one or more end-to-end forwarding topologies, an associated cost based at least in part on whether the path satisfies affinity link attributes in the affinity topology, and provide the one or more end-to-end forwarding topologies to the plurality of nodes based at least in part on the associated costs, for use by the plurality of nodes in selecting an end-to-end forwarding configuration for the network.