• Julien Muchembled's avatar
    routing: detect when stuck with old HMAC keys · 8a3c2f9f
    Julien Muchembled authored
    When network parameters are updated, their version is broadcasted
    throughout the whole graph of nodes starting from the node running
    the registry. This is of course not enough, at least because some
    nodes may be stopped at that time.
    
    A second mechanism already exists for late nodes: when 2 nodes starts
    communicating between each other, they check their versions of the
    network parameters. But it supposes that routing works well enough
    between them.
    
    Then comes HMAC, which can prevent 2 nodes from even handshaking and
    group of nodes may remain stuck out of the network: this is the issue
    that is addressed by this commit. 2 scenarios:
    - no route to the registry node;
    - there's a route to the registry node but not from it, which can only
      happen during the first phase of a HMAC change, i.e. when signing
      with the old key and accepting the new one:  because a node can't
      detect this case by itself, a new 'valid_until' network parameter
      to tell nodes that something is likely wrong after this date.
    On either condition, a node checks for new HMAC keys from time to time.
    
    This commit also drops a check for an old kernel bug.
    
    See merge request !53
    8a3c2f9f