1Current OpenSM Routing 27/9/07 3 4OpenSM offers five routing engines: 5 61. Min Hop Algorithm - based on the minimum hops to each node where the 7path length is optimized. 8 92. UPDN Unicast routing algorithm - also based on the minimum hops to each 10node, but it is constrained to ranking rules. This algorithm should be chosen 11if the subnet is not a pure Fat Tree, and deadlock may occur due to a 12loop in the subnet. 13 143. Fat-tree Unicast routing algorithm - this algorithm optimizes routing 15of fat-trees for congestion-free "shift" communication pattern. 16It should be chosen if a subnet is a symmetrical fat-tree. 17Similar to UPDN routing, Fat-tree routing is credit-loop-free. 18 194. LASH unicast routing algorithm - uses Infiniband virtual layers 20(SL) to provide deadlock-free shortest-path routing while also 21distributing the paths between layers. LASH is an alternative 22deadlock-free topology-agnostic routing algorithm to the non-minimal 23UPDN algorithm avoiding the use of a potentially congested root node. 24 255. DOR Unicast routing algorithm - based on the Min Hop algorithm, but 26avoids port equalization except for redundant links between the same 27two switches. This provides deadlock free routes for hypercubes when 28the fabric is cabled as a hypercube and for meshes when cabled as a 29mesh (see details below). 30 31OpenSM provides an optional unicast routing cache (enabled by -A or 32--ucast_cache options). When enabled, unicast routing cache prevents 33routing recalculation (which is a heavy task in a large cluster) when 34there was no topology change detected during the heavy sweep, or when 35the topology change does not require new routing calculation, e.g. when 36one or more CAs/RTRs/leaf switches going down, or one or more of these 37nodes coming back after being down. 38A very common case that is handled by the unicast routing cache is host 39reboot, which otherwise would cause two full routing recalculations: one 40when the host goes down, and the other when the host comes back online. 41 42OpenSM also supports a file method which can load routes from a table. See 43modular-routing.txt for more information on this. 44 45The basic routing algorithm is comprised of two stages: 461. MinHop matrix calculation 47 How many hops are required to get from each port to each LID ? 48 The algorithm to fill these tables is different if you run standard 49(min hop) or Up/Down. 50 For standard routing, a "relaxation" algorithm is used to propagate 51min hop from every destination LID through neighbor switches 52 For Up/Down routing, a BFS from every target is used. The BFS tracks link 53direction (up or down) and avoid steps that will perform up after a down 54step was used. 55 562. Once MinHop matrices exist, each switch is visited and for each target LID, 57a decision is made as to what port should be used to get to that LID. 58 This step is common to standard and Up/Down routing. Each port has a 59counter counting the number of target LIDs going through it. 60 When there are multiple alternative ports with same MinHop to a LID, 61the one with less previously assigned ports is selected. 62 If LMC > 0, more checks are added: Within each group of LIDs assigned to 63same target port, 64 a. use only ports which have same MinHop 65 b. first prefer the ones that go to different systemImageGuid (then 66the previous LID of the same LMC group) 67 c. if none - prefer those which go through another NodeGuid 68 d. fall back to the number of paths method (if all go to same node). 69 70 71Effect of Topology Changes 72 73OpenSM will preserve existing routing in any case where there is no change in 74the fabric switches unless the -r (--reassign_lids) option is specified. 75 76-r 77--reassign_lids 78 This option causes OpenSM to reassign LIDs to all 79 end nodes. Specifying -r on a running subnet 80 may disrupt subnet traffic. 81 Without -r, OpenSM attempts to preserve existing 82 LID assignments resolving multiple use of same LID. 83 84If a link is added or removed, OpenSM does not recalculate 85the routes that do not have to change. A route has to change 86if the port is no longer UP or no longer the MinHop. When routing changes 87are performed, the same algorithm for balancing the routes is invoked. 88 89In the case of using the file based routing, any topology changes are 90currently ignored The 'file' routing engine just loads the LFTs from the file 91specified, with no reaction to real topology. Obviously, this will not be able 92to recheck LIDs (by GUID) for disconnected nodes, and LFTs for non-existent 93switches will be skipped. Multicast is not affected by 'file' routing engine 94(this uses min hop tables). 95 96 97Min Hop Algorithm 98----------------- 99 100The Min Hop algorithm is invoked by default if no routing algorithm is 101specified. It can also be invoked by specifying '-R minhop'. 102 103The Min Hop algorithm is divided into two stages: computation of 104min-hop tables on every switch and LFT output port assignment. Link 105subscription is also equalized with the ability to override based on 106port GUID. The latter is supplied by: 107 108-i <equalize-ignore-guids-file> 109-ignore-guids <equalize-ignore-guids-file> 110 This option provides the means to define a set of ports 111 (by guids) that will be ignored by the link load 112 equalization algorithm. 113 114LMC awareness routes based on (remote) system or switch basis. 115 116 117UPDN Routing Algorithm 118---------------------- 119 120Purpose of UPDN Algorithm 121 122The UPDN algorithm is designed to prevent deadlocks from occurring in loops 123of the subnet. A loop-deadlock is a situation in which it is no longer 124possible to send data between any two hosts connected through the loop. As 125such, the UPDN routing algorithm should be used if the subnet is not a pure 126Fat Tree, and one of its loops may experience a deadlock (due, for example, 127to high pressure). 128 129The UPDN algorithm is based on the following main stages: 130 1311. Auto-detect root nodes - based on the CA hop length from any switch in 132the subnet, a statistical histogram is built for each switch (hop num vs 133number of occurrences). If the histogram reflects a specific column (higher 134than others) for a certain node, then it is marked as a root node. Since 135the algorithm is statistical, it may not find any root nodes. The list of 136the root nodes found by this auto-detect stage is used by the ranking 137process stage. 138 139 Note 1: The user can override the node list manually. 140 Note 2: If this stage cannot find any root nodes, and the user did not 141 specify a guid list file, OpenSM defaults back to the Min Hop 142 routing algorithm. 143 1442. Ranking process - All root switch nodes (found in stage 1) are assigned 145a rank of 0. Using the BFS algorithm, the rest of the switch nodes in the 146subnet are ranked incrementally. This ranking aids in the process of enforcing 147rules that ensure loop-free paths. 148 1493. Min Hop Table setting - after ranking is done, a BFS algorithm is run from 150each (CA or switch) node in the subnet. During the BFS process, the FDB table 151of each switch node traversed by BFS is updated, in reference to the starting 152node, based on the ranking rules and guid values. 153 154At the end of the process, the updated FDB tables ensure loop-free paths 155through the subnet. 156 157Note: Up/Down routing does not allow LID routing communication between 158switches that are located inside spine "switch systems". 159The reason is that there is no way to allow a LID route between them 160that does not break the Up/Down rule. 161One ramification of this is that you cannot run SM on switches other 162than the leaf switches of the fabric. 163 164 165UPDN Algorithm Usage 166 167Activation through OpenSM 168 169Use '-R updn' option (instead of old '-u') to activate the UPDN algorithm. 170Use `-a <guid_list_file>' for adding an UPDN guid file that contains the 171root nodes for ranking. 172If the `-a' option is not used, OpenSM uses its auto-detect root nodes 173algorithm. 174 175Notes on the guid list file: 1761. A valid guid file specifies one guid in each line. Lines with an invalid 177format will be discarded. 1782. The user should specify the root switch guids. However, it is also 179possible to specify CA guids; OpenSM will use the guid of the switch (if 180it exists) that connects the CA to the subnet as a root node. 181 182 183To learn more about deadlock-free routing, see the article 184"Deadlock Free Message Routing in Multiprocessor Interconnection Networks" 185by William J Dally and Charles L Seitz (1985). 186 187 188Fat-tree Routing Algorithm 189-------------------------- 190 191Purpose: 192 193The fat-tree algorithm optimizes routing for "shift" communication pattern. 194It should be chosen if a subnet is a symmetrical or almost symmetrical 195fat-tree of various types. 196It supports not just K-ary-N-Trees, by handling for non-constant K, 197cases where not all leafs (CAs) are present, any Constant 198Bisectional Ratio (CBB) ratio. As in UPDN, fat-tree also prevents 199credit-loop-deadlocks. 200 201If the root guid file is not provided ('-a' or '--root_guid_file' options), 202the topology has to be pure fat-tree that complies with the following rules: 203 - Tree rank should be between two and eight (inclusively) 204 - Switches of the same rank should have the same number 205 of UP-going port groups*, unless they are root switches, 206 in which case the shouldn't have UP-going ports at all. 207 - Switches of the same rank should have the same number 208 of DOWN-going port groups, unless they are leaf switches. 209 - Switches of the same rank should have the same number 210 of ports in each UP-going port group. 211 - Switches of the same rank should have the same number 212 of ports in each DOWN-going port group. 213 - All the CAs have to be at the same tree level (rank). 214 215If the root guid file is provided, the topology doesn't have to be pure 216fat-tree, and it should only comply with the following rules: 217 - Tree rank should be between two and eight (inclusively) 218 - All the Compute Nodes** have to be at the same tree level (rank). 219 Note that non-compute node CAs are allowed here to be at different 220 tree ranks. 221 222* ports that are connected to the same remote switch are referenced as 223'port group'. 224** list of compute nodes (CNs) can be specified by '-u' or '--cn_guid_file' 225OpenSM options. 226 227Note that although fat-tree algorithm supports trees with non-integer CBB 228ratio, the routing will not be as balanced as in case of integer CBB ratio. 229In addition to this, although the algorithm allows leaf switches to have any 230number of CAs, the closer the tree is to be fully populated, the more effective 231the "shift" communication pattern will be. 232In general, even if the root list is provided, the closer the topology to a 233pure and symmetrical fat-tree, the more optimal the routing will be. 234 235The algorithm also dumps compute node ordering file (opensm-ftree-ca-order.dump) 236in the same directory where the OpenSM log resides. This ordering file provides 237the CN order that may be used to create efficient communication pattern, that 238will match the routing tables. 239 240 241Usage: 242 243Activation through OpenSM 244 245Use '-R ftree' option to activate the fat-tree algorithm. 246 247Note: LMC > 0 is not supported by fat-tree routing. If this is 248specified, the default routing algorithm is invoked instead. 249 250 251LASH Routing Algorithm 252---------------------- 253 254LASH is an acronym for LAyered SHortest Path Routing. It is a 255deterministic shortest path routing algorithm that enables topology 256agnostic deadlock-free routing within communication networks. 257 258When computing the routing function, LASH analyzes the network 259topology for the shortest-path routes between all pairs of sources / 260destinations and groups these paths into virtual layers in such a way 261as to avoid deadlock. 262 263Note LASH analyzes routes and ensures deadlock freedom between switch 264pairs. The link from HCA between and switch does not need virtual 265layers as deadlock will not arise between switch and HCA. 266 267In more detail, the algorithm works as follows: 268 2691) LASH determines the shortest-path between all pairs of source / 270destination switches. Note, LASH ensures the same SL is used for all 271SRC/DST - DST/SRC pairs and there is no guarantee that the return 272path for a given DST/SRC will be the reverse of the route SRC/DST. 273 2742) LASH then begins an SL assignment process where a route is assigned 275to a layer (SL) if the addition of that route does not cause deadlock 276within that layer. This is achieved by maintaining and analysing a 277channel dependency graph for each layer. Once the potential addition 278of a path could lead to deadlock, LASH opens a new layer and continues 279the process. 280 2813) Once this stage has been completed, it is highly likely that the 282first layers processed will contain more paths than the latter ones. 283To better balance the use of layers, LASH moves paths from one layer 284to another so that the number of paths in each layer averages out. 285 286Note, the implementation of LASH in opensm attempts to use as few layers 287as possible. This number can be less than the number of actual layers 288available. 289 290In general LASH is a very flexible algorithm. It can, for example, 291reduce to Dimension Order Routing in certain topologies, it is topology 292agnostic and fares well in the face of faults. 293 294It has been shown that for both regular and irregular topologies, LASH 295outperforms Up/Down. The reason for this is that LASH distributes the 296traffic more evenly through a network, avoiding the bottleneck issues 297related to a root node and always routes shortest-path. 298 299The algorithm was developed by Simula Research Laboratory. 300 301To learn more about LASH and the flexibility behind it, the requirement 302for layers, performance comparisons to other algorithms, see the 303following articles: 304 305"Layered Routing in Irregular Networks", Lysne et al, IEEE 306Transactions on Parallel and Distributed Systems, VOL.16, No12, 307December 2005. 308 309"Routing for the ASI Fabric Manager", Solheim et al. IEEE 310Communications Magazine, Vol.44, No.7, July 2006. 311 312"Layered Shortest Path (LASH) Routing in Irregular System Area 313Networks", Skeie et al. IEEE Computer Society Communication 314Architecture for Clusters 2002. 315 316 317Use '-R lash -Q ' option to activate the LASH algorithm. 318 319Note: QoS support has to be turned on in order that SL/VL mappings are 320used. 321 322Note: LMC > 0 is not supported by the LASH routing. If this is 323specified, the default routing algorithm is invoked instead. 324 325 326DOR Routing Algorithm 327--------------------- 328 329The Dimension Order Routing algorithm is based on the Min Hop 330algorithm and so uses shortest paths. Instead of spreading traffic 331out across different paths with the same shortest distance, it chooses 332among the available shortest paths based on an ordering of dimensions. 333Each port must be consistently cabled to represent a hypercube 334dimension or a mesh dimension. Paths are grown from a destination 335back to a source using the lowest dimension (port) of available paths 336at each step. This provides the ordering necessary to avoid deadlock. 337When there are multiple links between any two switches, they still 338represent only one dimension and traffic is balanced across them 339unless port equalization is turned off. In the case of hypercubes, 340the same port must be used throughout the fabric to represent the 341hypercube dimension and match on both ends of the cable. In the case 342of meshes, the dimension should consistently use the same pair of 343ports, one port on one end of the cable, and the other port on the 344other end, continuing along the mesh dimension. 345 346Use '-R dor' option to activate the DOR algorithm. 347