Bandwidth Reservation Sharing between Primary and Backup Paths within the NPP Framework Definitions: node j B:FTL I M uv : Total bandwidth reserved on link (u, v) for backup paths that belong to the activation set of node j. It is maintained at node j. f i; j g B:FTL I M uv : Total bandwidth reserved on (u, v) for backup paths that belong to the activation set of link {i, j}. It is maintained at node i and at node j. node j B:L TFI M uv : Total bandwidth required on (u, v) for backup paths that belong to the activation set of node j. It is maintained on node u. f i; j g B:L TFI M uv : Total bandwidth required on (u, v) for backup paths that belong to the activation set of link {i, j}. It is maintained on node u node j P:FTL I M uv : Total bandwidth reserved on (u, v) for primary paths that originate or terminates at node j. It is maintained on node j node j P:L TFI M uv : Total bandwidth reserved on (u, v) for primary paths that originate or terminates at node j. It is maintained on node u F*ij: Total bandwidth on (i, j) reserved for primary paths (Some backup paths may also use this bandwidth) G*ij: Total bandwidth on (i, j) reserved exclusively for backup paths (Some backup paths may be using bandwidth other than G*ij). bold: Old backup path protecting the facility whose backup to be recomputed bnew = b + bold } : New backup path to be made for the protection of the facility in question. We preserve the equality: Cij = Rij + F*ij + G*ij Guide Lines (used for writing this document) Computation Define } (and what it protects) Define that when } gets activated Relevant data used for } computation o Where above data structure is store? When to prune links? Cost used in computing } using not pruned links. Any relevant updates in the data used for } computation Signaling Define } What information is advertised? What are the local states? How that information advertised is used to update local states? NPP without improvements } Computation Case 1: } is an NHOP path that span link (i, j) o } gets activated if link f i ; j g fails o B.FTLIM is maintained on node i as well as on link j . o Question: What is the reason of maintaining same B.FTLIM on both nodes, when FBC draft says that if the links are bidirectional then it should be maintained by node with lowest (or highest) id? Answer: It is only because we provide element protection. In other case FBC draft proposal works but not in case of element protection. Node j computes the route for } o Prune Link (u, v): o Node j f i ;j g Ruv < bnew à ( Guv à B:FTL I M uv computes using cost: Node j increment the entries corresponding to (u, v) in B.FTLIM by an old I new uv bnew à I uv bold And corresponding same updates are made on node i B.FTLIM during signaling. amount Max (0; bnew à ( Guv à o route using f i ;j g B:FTL I M uv old I uv bold)) pruned links f i ;j g node j o Let bã = o Prune Link (u, v): o Node j computes route using not pruned links using cost: o Node j increment the entries corresponding to (u, v) by an amount } Signaling + not Case 2: } is an NNHOP path that span link (i, j) and link (j, k) o } gets activated if either link f i ; j g or node j fails o Relevant B.FTLIM is maintained on node j , for each link (u, v) which is part of o Node j computes the route for } Max ( B:FTL I M uv ; B:FTL I M uv B:FTL I M uv } ) Ruv < bnew à (Guv à bã + I old uv bold) nodej as well as in + I old uv bold) M ax(0; bnew à (Guv à bã + I old uv bold)) old I new uv bnew à I uv bold in f i ;j g f i ;j g B:FTL I M uv . During signaling node i also updates B:FTL I M uv . For each link (u, v) of } , corresponding LTFIM is maintained on node u If } is an NNHOP path that span link (i, j) and (j, k) then we advertise f node j ; f i ; j g; bnewg else if } is an NHOP path that span link (i, j) then we advertise f f i; j g; bnewg When a reservation request arrives at node u (for link (u, v)) the entries corresponding to facilities advertised are located in LTFIM. Let bf aci li ty is the maximum in those entries then Guv is set to old Max (Guv; bf aci li ty + bnew à I uv bold) . (Unresolved Problem: We yet have to decide a solution about bold??) Now LTFIM corresponding to the facility advertised (or two facilities in case of NNHOP path) is incremented by bnew à I old uv bold NPP WITH IMPROVEMENTS Case 1: } is an NHOP path that span link (i, j) We cannot have any improvement in this case, so primary path computation is same as in original NPP. It is because, when link {i, j} fails then no primary path get effected (stop functioning). Case 2: } is an NNHOP path that span link (i, j) and link (j, k) } Computation Let } is an NNHOP path that span link (i, j) and link (j, k) Activate if either link {i, j} or node j fails Node j will now maintain P.FTLIM besides maintaining B.FTLIM. Prune Link (u, v): R uv < bnew à ( P:FTL I M juv + Guv à bã + I old uv bold)) Node j computes route using not pruned links. Cost of using a link: M ax(0; bnew à (P:FTL I M j uv d + Guv à bã + I ol uv bol d)) Node j increment the B.FTLIM entries corresponding to (u, v) by an amount old I new uv bnew à I uv bold } Signaling For each link (u, v) in path } , corresponding B.LTFIM and P.LTFIM are maintained on node u As } is an NNHOP path that span link (i, j) and (j, k), we advertise f node j ; f i ; j g; bnewg Now each When a reservation request arrives at node u (for link (u, v)) the entries corresponding to facilities node j B:L TFI M uv and f i ;j g B:L TFI M uv are incremented by node j advertised are located in LTFIM (i.e. old bnew à I uv bold f i ;j g B:L TFI M uv , B:L TFI M uv ). Let bf aci li ty is node j f i ;j g j M ax ( B:L TFI M uv , B:L TFI M uv ) then Guv is set to Max (8j (bf aci li ty j à P:L TFI M uv)) Primary Path signaling and computation Primary path computation is same as was in normal NPP Let í is the primary path with (src, dst, demand) = (s, t, d), then its signaling is described below: í Signaling Note 1: During signaling of the primary path, P.FTLIM and P.LTFIM are updated. They are never updated during computation or signaling of backup paths. o Note 2: P.FTLIM and P.LTFIM contains aggregated information about a link i.e. in worse case a node can have one entry corresponding to a link in a P.FTLIM and P.LTFIM. P.FTLIM is maintained on node s and node t, whereas P.LTFIM is maintained on each intermediate node of the primary path. s During signaling node s increments its P:FTL I M node for each link (u, v) in the primary path by d uv Each intermediate nodes (u, v) increments its Finally destination node t increments its Optimization during Signaling: During signaling, after updating local data-structures (as explained above), each intermediate node u recalculates Guv. That is, Guv is set to j . During step-4, two of the P.LTFIMs have been increased hence it is Max (8j (bf aci li ty j à P:L TFI M uv)) probable that node s P:L TFI M uv node t P:FTL I M uv and node t P:L TFI M uv by d for each link (u, v) in the primary path by d Guv drops and it results in increasing of Ruv . Coding Blog Version 1.4.1 =================================================================== ==== IMPORTANT: The changes in this version are based on the short comments available in model.SharingWithPrimary.Comments and what has been written above ----------------ByPassLoadBalancer ------------------Add a Todo **** Change main from accomodateallbandwidthonpath... -----------Router.java -----------I have introduce a new function named workAfterPlacingPrimaryPath so that its subclass can overwrite this function --PFTLIM has been added and it is a private variable with key same as for FBC set and get functions are provided for this. --Change toString() function So that it does not print links details information -----------JPRouter.java -----------Change Save information functions so that they do not save against link in case of node protection only (no element protection) ---Write tostring() so that it prints FTLIM (kiniLocalinformation) beside printing what Router.java has to print ---------Link.java ---------In this version I have done changes in Link class. Basically I have added function named checkValueLessThanZero and made use of it --PLTFIM has been added and it is a private variable with key same as for kinilocalinformation set and get functions are provided for this --Made kinilocalinfromation a private variable and have written 4 new functions to manipulate this private variable Have to change in many classes that was accessing old public variable -----------------------------NoPoolCSPFFacilityNodeBkAlgo.java ---------------------------------Change makereservation and removereservation information functions so that they do not save for against link in case of node protection only (no element protection) ---Made three function non-static. That is getMineReservedInCaseofLink, getMineReservedInCaseofNode and getMineReserved The reason to do so was that static method have difficulty in overriding in the subclasses. Also I have made them public. --- I have to made changes in DynamicCostNPPBkAlgo and CSPFFacilityNodeBKAlgo as these classes were calling them statically. --Also Add new functions named getNNHOP_LTFIM and getNHOP_LTFIM. These function take code away from getMineReservedInCaseofNode so that it is easy to override --incDecKiniValueForPf is made public --Add a new function updateLinkGuv and call it from makeReservationOnLink and removeReservationOnLink so that it can be override in subclasses --Add a new function caclulateNewGuv and call it from makeReservationOnLink and removeReservationOnLink so that it can be override in subclasses --------------------------------New Package (SharingWithPrimary) --------------------------------Added classes named SWPRouter and V1BackupAlgorithm -------------------------------View.gui.MainFrame -------------------------------Make changes in the front end view so that it can generate configuration file