A computer-implemented method for virtually routing a new data stream (120, 560) from a source (102, 502) to a destination (108, 504) through a network including a plurality of forwarding devices (102, 104, 106, 108, 110, 112, 510, 512, 514, 516) interconnected with links (130, 520, 522, 524, 526), comprising: (a) receiving, at a control device (440, 506), a request to create a path through the plurality of interconnected forwarding devices (102, 104, 106, 108, 110, 112, 510, 512, 514, 516) for the new data stream (120, 560); (b) determining a type of the new data stream (120, 560), wherein the type is defined by at least one of a source and a destination of the new data stream; (c) determining, based on the determined type, historical usage characteristics of data streams (120, 560) having the determined type, the characteristics including time duration of data streams (120, 560) previously transmitted of the type and an amount of bandwidth utilized by data streams (120, 560) previously transmitted of the type; (d) determining which time slices (134, 550) the new data stream (120, 560) will occupy based on the time durations of data streams (120, 560) previously transmitted of the type, previous time slices (134, 550) during a plurality of previous time cycles, the time cycles representing periodic time intervals having a pattern of repeated utilization, the time slices representing sub-intervals in the periodic time intervals, (e) for each of a plurality of candidate paths connecting the source (102, 502) and destination (108, 504), determining a historical utilization of links (130, 520, 522, 524, 526)along the candidate path for the time slices (134, 550) determined in (d); (f) also for each of the plurality of candidate paths, determining, based on the determined utilization of the links (130, 520, 522, 524, 526) along the candidate path, an amount of available bandwidth on the path during the time slices (134, 550) determined in (d); (g) comparing the determined amount of available bandwidth for the plurality of candidate paths with the determined amount of bandwidth utilized by data streams (120, 560) previously transmitted of the type to select the path requested for the new data stream (120, 560), the requested path through the plurality of interconnected forwarding devices from the source (102, 502) to the destination (108, 504); (h) for respective forwarding devices along the path, determining a routing table indicating which port of the forwarding device to route data from the new data stream (120, 560) along the path determined in (g); and (i) for each of the respective forwarding devices (102, 104, 106, 108, 110, 112, 510, 512, 514, 516), transmitting the routing table determined in (h) to configure the forwarding device. (a) receiving, at a control device (440, 506), a request to create a path through the plurality of interconnected forwarding devices (102, 104, 106, 108, 110, 112, 510, 512, 514, 516) for the new data stream (120, 560); (b) determining a type of the new data stream (120, 560), wherein the type is defined by at least one of a source and a destination of the new data stream; (c) determining, based on the determined type, historical usage characteristics of data streams (120, 560) having the determined type, the characteristics including time duration of data streams (120, 560) previously transmitted of the type and an amount of bandwidth utilized by data streams (120, 560) previously transmitted of the type; (d) determining which time slices (134, 550) the new data stream (120, 560) will occupy based on the time durations of data streams (120, 560) previously transmitted of the type, previous time slices (134, 550) during a plurality of previous time cycles, the time cycles representing periodic time intervals having a pattern of repeated utilization, the time slices representing sub-intervals in the periodic time intervals, (e) for each of a plurality of candidate paths connecting the source (102, 502) and destination (108, 504), determining a historical utilization of links (130, 520, 522, 524, 526)along the candidate path for the time slices (134, 550) determined in (d); (f) also for each of the plurality of candidate paths, determining, based on the determined utilization of the links (130, 520, 522, 524, 526) along the candidate path, an amount of available bandwidth on the path during the time slices (134, 550) determined in (d); (g) comparing the determined amount of available bandwidth for the plurality of candidate paths with the determined amount of bandwidth utilized by data streams (120, 560) previously transmitted of the type to select the path requested for the new data stream (120, 560), the requested path through the plurality of interconnected forwarding devices from the source (102, 502) to the destination (108, 504); (h) for respective forwarding devices along the path, determining a routing table indicating which port of the forwarding device to route data from the new data stream (120, 560) along the path determined in (g); and (i) for each of the respective forwarding devices (102, 104, 106, 108, 110, 112, 510, 512, 514, 516), transmitting the routing table determined in (h) to configure the forwarding device.