Lecture 2 Recapitulation • Algorithm complexity analysis • Point to point routing algorithms – Dijkstra – Bellman-Ford Questions? Todays Class • Flloyd Warshalls algorthm – Instance of dynamic programming • Johnsons algorithm – Sparse graphs • Throughput Optimum routing and scheduling – wireless – Wireline • Term project ideas Next Class • Quality of service routing Dynamic Programming • Break the main problem in sub-problems • Express the optimum solution of the main problem in terms of those of the subproblems • Solve the sub-problems recursively • Combine the solutions of the subproblems to solve the main problem Principle of Optimality • The global problem is solved optimally only if all sub-problems are solved optimally • Holds for shortest path problem – Any segment of a shortest path is a shortest path between the corresponding source and destination • May not always hold Counter-Example • For a different criterion for ``shortest path’’, every segment of a shortest path may not be a shortest path • Weight of a path is the maximum weight of a link in the Path 1 path Source 1 1.5 0.5 2.5 Path 2 Weight of path 1 = 1.5 Destination Weight of a path is the minimum bandwidth available in the path – Select a path with maximum bandwidth 1 1 5 u 1 3 p1 p2 v w Another counter example • Optimize x1 + x2 + x3 Subject to: x1 + x2 <= 1 x1 + x3 <= 1 Will not be able to solve by solving subproblems Back to shortest paths • Order the vertices as 1,…..,k k • d ij is the shortest path weight between i and j under the condition that the intermediate vertices are 1,….,k d d d k ij 0 ij wij k 1 k 1 k 1 min( d ij , d ik d kj ) |V | ij and j is the shortest path weight between vertices i Flloyd-Warshalls Algorithm • Finds shortest paths between all pairs of vertices (if there are no negative weight cycles) – O(|V|3) • Shortest paths between all pairs by other algorithms – Dijkstra O(V. (Vlog V + E)) (better for sparse graphs) – Bellman-ford O(V.VE) Pseudo-Code for FlloydWarshall For i = 1 to V For j = 1 to V d 0 ij wij For k = 1 to V For i = 1 to V For j = 1 to V d k ij k 1 k 1 k 1 min( d ij , d ik d kj ) Complexity analysis • 3 nested loops • Each loop is executed V times • Hence, O(V3) Johnsons Algorithm • Let the graph be sparse • It is a better idea to run Dijkstras algorithm V times • However, Dijkstras algorithm operates only for edges with nonnegative weights • Can we change the edge weights to make them nonnegative? • But under reweighing shortest paths might change • So we need to reweigh such that the shortest paths remain the same with the new weights – Shortest path weights may change though Reweighing scheme Let h(u) be a real number associated with vertex u (we will discuss later how to choose them) wnew(u,v) = w(u,v) + h(u) – h(v) Let us compute the weight of any path p under this new scheme p = (v0, v1,…..vk-1, vk) wnew(p) = w(v0 ,v1) + h(v0) – h(v1) + w(v1 ,v2) + h(v1) – h(v2)+… + w(vk-2 ,vk-1) + h(vk-2) – h(vk-1) + w(vk_1 ,vk) + h(vk-1) – h(vk) wnew(p) = w(v0 ,v1) + w(v1 ,v2) +… + w(vk-2 ,vk-1) + w(vk_1 ,vk) + h(v0) – h(vk) wnew(p) = w(p) + h(v0) – h(vk) Under the new weighting scheme, weight of every path between v0 and vk is incremented by constant amount (decremented if the constant is negeative). So shortest paths remain the same under the new weights. Still need to ensure that weight of every edge is nonnegative wnew(u,v) = w(u,v) + h(u) – h(v) >= 0 Will choose h(u)s appropriately Will add a node s to the existing network, and add an edge from s to every node . •Weight of new edges are 0 p(s,u) is the shortest path weight between s and u under the old weights. h(u) =p(s,u) (Is p(s,u) always 0?) wnew(u,v) = w(u,v) + p(s, u) – p(s,v) >= 0 p(s,v) <= p(s,u) + w(u,v) Johnsons Algorithm • Start with the original graph • Add the new vertex s and the new edges with 0 weight to all other vertices • Run Bellman-ford with source s, and original weights to compute shortest path weights p(s,v) to every vertex v. – Can we run Dijkstra instead? • Compute the new weights for the original edges: – wnew(u,v) = w(u,v) + p(s, u) – p(s,v) – Can get rid of the new vertex and edges at this point • Run Dijkstra to compute the shortest paths Complexity Analysis • Adding new vertex and edges takes O(V) • Bellman-ford takes O((V+1)(V + E)) or O(V(V + E)) • Computing the new weights takes O(E) • Dijkstras algorithm takes O(V(VlogV + E)) • O(V + V(V + E) + V(VlogV + E)) – O(V(VlogV + E)) Why choose shortest paths at all? • • • Minimize cost Maximize ``system performance’’ However, there is no guarantee that choosing shortest paths would maximize system performance – – – – • Suppose path weights are propagation delays All connections would follow the minimum weight path Overload and congestion in minimum weight paths Increase in overall delay • So our target should be paths which optimize system performance • System performance – Delay – Throughput (traffic carried by the network) • Also, system performance would increase if sessions are allowed to split traffic between several paths Path 1 Source Destination 1 1.5 0.5 2.5 Path 2 Capacity of path 1 = 1 Mb/s Capacity of path 2 = 0.5 Mb/s If only one path can be used by the session, traffic served at the rate 1 Mb/s If both paths can be used, traffic served at the rate 1.5 Mb/s • Earlier we were choosing the shortest path among all given paths • But some paths may not be inherently good – Unreliable (packet loss, security hazard) – Expensive • So now we impose the condition that a session needs to transmit its traffic through a few preselected paths, but it can split its traffic through all of them • The set of pre-selected paths may be different for different sessions Path 1 Source Destination Path 2 3 session s between this source destination pair Session 1 likes both paths, and splits traffic between them Session 2 likes path 1 only Session 3 likes path 2 only • Preselected paths are given to the sessions • Routing decision needed for splitting traffic – which packet to send along which path • Scheduling decision needed to decide service order of packets • Objective is to maximize system performance – throughput Throughput • Throughput for a particular session is the rate at which traffic is served out of the session destination Path 1 Source 2 Source 1 Destination 1 Path 2 Destination 2 • So throughput is a vector – There are multiple sessions using the network • What does throughput maximization mean? maximize sum of the throughputs? • We will rather try to attain any ``attainable’’ throughput Attainable Throughput • Links have bandwidth limitation • This means any throughput vector can not be attained • A throughput vector (a1, a2,….aN) is attainable if every session i generates traffic at rate ai and the network is not overloaded. • A throughput vector is attainable if the session traffics can be routed so that link bandwidths are not exceeded Path 1 Source Destination 1 1.5 0.5 2.5 Path 2 Capacity of path 1 = 1 Mb/s Capacity of path 2 = 0.5 Mb/s If only one path can be used by the session, maximum session 1 throughput is 1 Mb/s If both paths can be used, maximum session 1 throughput is 1.5 Mb/s N sessions: Session n has Mn paths If throughput vector (a1, a2,….aN) is attainable The traffic an of nth session can be split to the Mn paths that may carry session n traffic in proportion m a an a 1 a n m n m, n: mth tree of nth session crosses link e n a n ..... a nM n 2 Ce for all edges e (capacity condition) D2 a S1 a1 2 1 a2 e 1 a 1 1 1 1 2 a a a1 a2 a2 1 1 1 1 2 a + a < 1 S2 D1 Let Bu(t) be the queue length at node u at time t. It can be shown that if the arrival rates do not satisfy the attainability conditions, and the arrival process is Markov or Stationary Ergodic Then uBu(t) as t almost surely, independent of the routing and scheduling decisions. (``almost surely’’ means probability of this taking place is 1) Intuitively, if throughput is not attainable, then system can not deliver the throughput. Is the converse true? Is it possible to devise a routing and scheduling strategy which will deliver any attainable throughput? Suppose session n generates traffic at rate an and (a1, a2,….aN) constitutes some attainable throughput. Can my routing and scheduling policy guarantee that the output is this attainable throughput? ``A framework for routing and congestion control in multicast networks’’, S. Sarkar and L. Tassiulas, INFOCOM’ 1999 Answer is ``Yes’’ Next, we will present a routing and scheduling policy which does that. Routing Policy • When a packet comes, route it along the least congested path. • Congestion in a path depends upon the number of packets waiting for service along Path 1 the nodes Source Destination Path 2 For routing decision we will consider the number of packets waiting at the source node only (queue lengths at the source node). Intuitive or CounterIntuitive? B1(t) S1 D1 B2(t) When a packet comes, decide which path it will be routed to B1(t) is the number of packets routed to the blue tree, and waiting at the source node B2(t) is the number of packets routed to the green tree, and waiting at the source node A packet arriving at time t is routed to the blue tree if B1(t) <= B2(t) , else it is routed to the green tree • How about if we make the queue lengths at the source node reflective of the congestion in the entire path? • We will use scheduling to do so – – – – – Service order for packets More than one session may traverse a tree At one slot, link can serve only one packet Which session does the link serve? Which packet of the session should be served? Difference of Backlog Based Scheduling Biu(t) is the number of packets of session i waiting at node u at time t (node u backlog) (Biu(t) =0 if u is destination of session i) Consider a link e with source node u and destination node v u v For every session i traversing e, evaluate the difference in the source and destination backlogs (Biu(t) - Biv(t)) at any slot t Select the session which has the maximum value of this quantity Serve this session if the difference in backlog is positive for this session, else idle the link for the current slot Example session 1 u v session 2 B1u(t)=2, B2u(t)=3, B1v(t)=1, B2v(t)=1 Session 2 scheduled session 1 u session 2 B1u(t)=1, B2u(t)=1, B1v(t)=3, B2v(t)=2 v No session scheduled session 1 u session 2 v Session 1 scheduled B1u(t)=3, B2u(t)=2, B1v(t)=1, B2v(t)=1 Intuition D2 S1 e S2 D1 A buildup for a path in a node causes a similar buildup at the preceding node and so on As a result, a congested path has a huge buildup at the source, and is not selected for sometime till the congestion eases During scheduling different paths of the same session are treated like different sessions even when they share edges. Features of This Policy • Throughput optimal Suppose session n generates traffic at rate an and (a1, a2,….aN) is also the output under some routing and scheduling policy (traffic rate vector satisfies attainability conditions) Then the optimal routing and scheduling policy should also guarantee that the output is (a1, a2,….aN) The queue lengths at the buffers have finite. • Routing and scheduling decisions can be taken at per packet/per slot basis or in intervals • Computationally simple • • • • Local information based Asynchronous Adaptive Implicit feedback • What are the links? – wireline – wireless • What are the distinctions between wireline and wireless transmission? • Transmission is over radio spectrum • Scarce resources – Bandwidth – Power • Mobility • Unreliable links • Interference u v w x • In wireline, contention is between sessions sharing a link • In wireless, contention is between all sessions in a neighborhood • Normally, there is one radio per mobile terminal – At most a limited number of radios • A node can either receive or transmit at a time, but not both u e1 v e2 x e3 y In wireline, all 3 links can transmit at the same time In wireless, at any time, either links e1 and e2 link e3 can be active On account of interference and radio limitations, Certain links can not be activated simultaneously (e1 and e2) Only certain subsets of links can be activated simultaneously. These are called ``activation sets’’ Activation sets: {e1} , {e2 }, {e3 },{e1 , e3} For wireline, every subset of the set of links is an activation set. Assumptions • • • • Ignore mobility Ignore power constraints Ignore packet losses Consider constraints due to interference and radio limitations • Study the same problem as for the wireline case – Preselected paths are given to the sessions – Routing decision needed for splitting traffic • which packet to send along which path – Objective is to maximize system throughput • Can we get a routing and scheduling policy which attains any ``attainable’’ throughput? • ``Stability Properties of Constrained Queueing Systems and Scheduling Policies for Maximum Throughput in Multihop Radio Networks’’,L. Tassiulas and A. Ephremides, IEEE Transactions in Automatic Control, 1992 • Charecterization of ``attainable’’ throughput – Little messy Throughput Optimal Routing and Scheduling Suppose session n generates traffic at rate an and (a1, a2,….aN) is also the output under some routing and scheduling policy. Then the optimal routing and scheduling policy should also guarantee that the output is (a1, a2,….aN) Problem Under Study • Preselected paths are given to the sessions • Routing decision needed for splitting traffic – which packet to send along which path • Scheduling decision needed to decide service order of packets • Objective is to maximize system throughput Routing • Same as for wireline case • Select the path which has minimum queue length at the source node B1(t) S1 B2(t) D1 Scheduling: Wireline Case Constraints in wireline case: Only one session can be served in a link at a time Any combination of links allowed In every link we choose the session which has the maximum difference in backlog, if this quantity is positive, Otherwise we do not choose any session in the link Let the difference in backlog of a link be the maximum difference in backlog of any session traversing the link So, we actually choose the combination which has the maximum value for the total difference in backlog Scheduling: Wireless case Let the difference in backlog of a link be the maximum difference in backlog of any session traversing the link Total difference in backlog of an activation set is the sum of the difference in backlogs of the links in the set. We choose the activation set which has the maximum value for the total difference in backlog Schedule every link in the activation set For any activated link, serve the session which has the maximum difference in backlog for the link. Example Session 1 u e1 v x e2 e3 Session 2 Activation sets: {e1} , {e2 }, {e3 },{e1 , e3} Backlog of e1 = 1 Backlog of e2 = 6 Backlog of e3 = 1 Activate link e2, session 2 y Verify that no link with negative value of the maximum difference in backlogs is activated No session is served in a link where the difference in backlog for the link is negative What is the complexity of the routing? What is the complexity of the scheduling? wireline wireless Complexity Analysis • Routing is O(MN) – N is the number of sessions – M is the maximum number of preselected routes for any sessions • Scheduling for wireline is O(EN) • Scheduling for wireless depends on the structure of the activation sets – Worst case exponential complexity –Special case like if there is no interference constraints, but only number of radio constraints (a node can either transmit or receive only) Every activation set is a matching Finding the activation set which is to be scheduled is equivalent to finding the maximum weighted matching O(V3) Overall complexity in this case is O(NE +V3) Features of This Policy • Throughput optimal Suppose session n generates traffic at rate an and (a1, a2,….aN) is also the output under some routing and scheduling policy (satisfies some attainability conditions). Then the optimal routing and scheduling policy should also guarantee that the output is (a1, a2,….aN) The queue lengths at the buffers have a probability distribution. • Routing and scheduling decisions can be taken at per packet/per slot basis or in intervals • Not Computationally simple • • • • • Not Local information based Asynchronous Adaptive Implicit feedback Contribution of this policy: – At least we now know, that there exists some optimal policy ( a policy which nobody can beat in terms of throughput) Characterize the Attainable Throughput Region • Activation Vector • For every subset of links, we can have an ``indicator vector’’ indicating which links belong to the subset • The indicator vector has E components, and every component is either 0 or 1. • A component is 1 only if the corresponding edge belongs to the subset. u e1 v e2 x e3 y Indicator vector will have 3 components The indicator vector for the subset {e1 , e2} is (1,1,0) Activation vector is an indicator vector for an activation set Consider an interval of T slots The subset of link schedule in any slot is an activation set So we should get average activation time for each link by summing up the activation vectors scheduled and dividing each component of the vector by T u e1 v e2 x e3 y First 2 slots schedule (e1, e3). Activation vector (1,0,1) Third slot schedule e2 Activation vector (0,1,0) Repeat this cycle Average activation times are (2/3, 1/3, 2/3) If you sum up (1,0,1), (1,0,1), (0,1,0), (1,0,1), (1,0,1), (0,1,0), …. All through T slots, and divide each component by T, will get close to (2/3, 1/3, 2/3) Average time a link is used must be component-wise less than or equal to a convex combination of activation vectors For wireline case, the only constraint on the average time is that it is less than or equal to 1 Average load a link can tolerate is the product of its link capacity and the average time it is active (reminds of Littles law?) Average load of a link depends on how we split the session traffic into the preselected paths. Assume that all link capacities are 1. Thus average load equals average time in every link. Intuitively, a throughput vector is sustainable, if we can somehow split the input traffic of different sessions into corresponding paths, such that the vector of average load of a link is component-wise less than or equal to the convex combination of some activation vectors Intuitively, a throughput vector is sustainable, if we can somehow split the input traffic of different sessions into corresponding paths, such that the vector of average load of a link normalized by the link capacity is component-wise less than or equal to the convex combination of some activation vectors N sessions: Session n has Mn paths If throughput vector (a1, a2,….aN) is attainable, then the following must hold: the traffic an of nth session can be split to the Mn paths that may carry session n traffic in proportion m such that an a a 1 n a n Mn ..... an n 2 and for some convex combination x of activation vectors, (1/Ce) a m n m, n: mth tree of nth session crosses link e xe for all edges e (capacity condition) It can be shown that if the arrival rates do not satisfy the attainability conditions, and the arrival process is Markov or Stationary Ergodic Then uBu(t) as t almost surely, independent of the routing and scheduling decisions. • The routing and scheduling policy just presented achieves any throughput vector which satisfies the attainability property. Given a throughput vector, how do we know whether it is attainable or not? Generate traffic at the rates in the vector, and see whether the buffers blow up or not. Possible, but need to wait a long time before any conclusion can be drawn For wireline case, this can be verified using the attainability conditions, and a linear program in polynomial complexity For wireless case, we need to find a convex combination of the activation vectors which satisfies the mentioned conditions. We can do so using a linear program, but there are exponential number of activation vectors. So linear program will take exponential complexity! However, there is a polynomial complexity solution, if the constraints are only because of number of radio limitations: Sasaki and Hajek, ``Link scheduling in polynomial complexity’’, IEEE Transactions of Info. Theory, 1988 For more general constraints, this is an NP-hard problem!