A controller (C3, 108, 110, 112, 210, 708, 1002) adapted to configure a data center network (100, 300, 600, 700) having a plurality of network nodes (1-22, 710.1-710.n, 712, 1010, 1012), the controller (C3, 108, 110, 112, 210, 708, 1002) comprising: at least one memory storing program instructions; and at least one processor operative to execute the program instructions to cause the controller (C3, 108, 1 10, 112, 210, 708, 1002) to: receive information pertaining to an affinity topology, the affinity topology specifying affinity links (412, 414, 416, 418, 420, 422) having associated attributes that describe requirements for communications between a plurality of application components of the network; compute one or more of candidate forwarding paths, candidate forwarding trees or forwarding topologies based at least in part on the affinity topology, wherein the one or more forwarding topologies are defined by candidate forwarding paths or candidate forwarding trees, the one or more of candidate forwarding paths, candidate forwarding trees or forwarding topologies being computed based on costs produced by a predetermined cost function, wherein the predetermined cost function is a function of costs associated with the affinity link attributes of the affinity links (412, 414, 416, 418, 420, 422), each candidate forwarding path, candidate forwarding tree or forwarding topology identifying one or more network segments for configuring interconnections between the plurality of network nodes (1-22, 710.1-710.n, 712, 1010, 1012) for forwarding traffic through the network; and provide the one or more of candidate forwarding paths, candidate forwarding trees or forwarding topologies to the plurality of network nodes (1-22, 710.1-710.n, 712, 1010, 1012) for use by the plurality of network nodes (1-22, 710.1-710.n, 712, 1010, 1012) in selecting a consistent end-to-end forwarding configuration for the network. at least one memory storing program instructions; and at least one processor operative to execute the program instructions to cause the controller (C3, 108, 1 10, 112, 210, 708, 1002) to: receive information pertaining to an affinity topology, the affinity topology specifying affinity links (412, 414, 416, 418, 420, 422) having associated attributes that describe requirements for communications between a plurality of application components of the network; compute one or more of candidate forwarding paths, candidate forwarding trees or forwarding topologies based at least in part on the affinity topology, wherein the one or more forwarding topologies are defined by candidate forwarding paths or candidate forwarding trees, the one or more of candidate forwarding paths, candidate forwarding trees or forwarding topologies being computed based on costs produced by a predetermined cost function, wherein the predetermined cost function is a function of costs associated with the affinity link attributes of the affinity links (412, 414, 416, 418, 420, 422), each candidate forwarding path, candidate forwarding tree or forwarding topology identifying one or more network segments for configuring interconnections between the plurality of network nodes (1-22, 710.1-710.n, 712, 1010, 1012) for forwarding traffic through the network; and provide the one or more of candidate forwarding paths, candidate forwarding trees or forwarding topologies to the plurality of network nodes (1-22, 710.1-710.n, 712, 1010, 1012) for use by the plurality of network nodes (1-22, 710.1-710.n, 712, 1010, 1012) in selecting a consistent end-to-end forwarding configuration for the network. receive information pertaining to an affinity topology, the affinity topology specifying affinity links (412, 414, 416, 418, 420, 422) having associated attributes that describe requirements for communications between a plurality of application components of the network; compute one or more of candidate forwarding paths, candidate forwarding trees or forwarding topologies based at least in part on the affinity topology, wherein the one or more forwarding topologies are defined by candidate forwarding paths or candidate forwarding trees, the one or more of candidate forwarding paths, candidate forwarding trees or forwarding topologies being computed based on costs produced by a predetermined cost function, wherein the predetermined cost function is a function of costs associated with the affinity link attributes of the affinity links (412, 414, 416, 418, 420, 422), each candidate forwarding path, candidate forwarding tree or forwarding topology identifying one or more network segments for configuring interconnections between the plurality of network nodes (1-22, 710.1-710.n, 712, 1010, 1012) for forwarding traffic through the network; and provide the one or more of candidate forwarding paths, candidate forwarding trees or forwarding topologies to the plurality of network nodes (1-22, 710.1-710.n, 712, 1010, 1012) for use by the plurality of network nodes (1-22, 710.1-710.n, 712, 1010, 1012) in selecting a consistent end-to-end forwarding configuration for the network.