Interval Tree Clocks A Logical Clock for Dynamic Systems Paulo S´ ergio Almeida, Carlos Baquero, and Victor Fonte DI/CCTC, Universidade do Minho Largo do Pac ¸o, 4709 Braga Codex, Portugal {psa,cbm,vff}@di.uminho.pt Abstract. Causality tracking mechanisms, such as vector clocks and version vectors, rely on mappings from globally unique identifiers to integer counters. In a system with a well known set of entities these ids can be preconfigured and given distinct positions in a vector or distinct names in a mapping. Id management is more problematic in dynamic systems, with large and highly variable number of entities, being worsened when network partitions occur. Present solutions for causality tracking are not appropriate to these increasingly common scenarios. In this paper we introduce Interval Tree Clocks, a novel causality tracking mecha- nism that can be used in scenarios with a dynamic number of entities, allowing a completely decentralized creation of processes/replicas without need for global identifiers or global coordination. The mechanism has a variable size represen- tation that adapts automatically to the number of existing entities, growing or shrinking appropriately. The representation is so compact that the mechanism can even be considered for scenarios with a fixed number of entities, which makes it a general substitute for vector clocks and version vectors. Key words: Causality, logical clock, version vectors, vector clocks, dynamic systems. 1 Introduction Ever since causality was introduced in distributed systems [12], it has played an impor- tant role in the modeling of distributed computations. In the absence of global clocks, causality remains as a means to reason about the order of distributed events. In order to be useful, causality is implemented by concrete mechanisms, such as Vector Clocks [7, 16] and Version Vectors [18], where a compressed representation of the sets of events observed by processes or replicas is kept. These mechanisms are based on a mapping from a globally unique identifier to an integer counter, so that each entity (i.e. process or replica) keeps track of how many events it knows from each other entity. A special and common case is when the number of entities is known: here ids can be integers, and a vector of counters can be used. Nowadays, distributed systems are much less static and predictable than those tra- ditionally considered when the basic causality tracking mechanisms were created. In dynamic distributed systems [17], the number of active entities varies during the sys- tem execution and in some settings, such as in peer-to-peer deployments, the level of change, due to churn, can be extremely high.