Notes: This OpenCDN release changes the routing algorithm, making it more distributed, and fixes some bugs.
Changes: * Bug fixed about empty FP in Surro global hash. It arose because RRDMlib::prune don't saves FP_by_node information for LH within the TR hash. On the contrary, nodes do return the LH node address as the last entry of the visited nodes list, because it is needed for the proper building of the %peers global hash. The solution has been to avoid populating %surro, if FP_by_node is missing. * Bug fixed about local FH pruning if wider TR exists, in Setup.xpl. When the FH list is checked against the TR one, and a FH is removed if it also is a TR with a wider FP, the comparison is now made by using as FP for the TR, the Origin-related FootPrint, because the client-related ones may not overlap. Thanks to 18.171.6.130 for having evidenced this problem by it's log record :-) * Major change in the routing algorithm, which is more distributed now. RRDM no more performs loop avoidance, i.e. in SetUp, it no more removes all the TR which are more specific than TR nodes which happens to be also LastHop. Instead, loop avoidance is performed by nodes themselves. In fact, when a lazy TR Node forwards the DoRealy to another TR: - checks that a LH, with a FP which is more specific than the FP of the next hop TR, do exist; if not, TR node becomes labour, and forwards the DoRelay directly to LH nodes - if next hop still is a TR, the forwarded LH list is pruned as well, by retaining only LH nodes whose FootPrint is more specific than the next hop TR one * After some test, another LastHop self-loop escape has been added to NodeLib::Transit. - When no TR do answer to the UDP poll, or when no LH more specific than selected TR in the list do exists, the node switch to labour behavior. But, the node itself can be present in the LH list, and in this case, self-polling would cause a deadlock. So, this condition is checked, sel-polling is avoided, the node itself auto-wins, and self-loop is detected later. This applyes also when Node is a labour TR, in which case the LH list will be checked for this condition, only if Node is not a LH itself.
Copyright © 2009 Geeknet, Inc. All rights reserved. Terms of Use