KR20100127790A - 비동기 분산 시스템에서의 클록의 동기화 - Google Patents

비동기 분산 시스템에서의 클록의 동기화 Download PDF

Info

Publication number
KR20100127790A
KR20100127790A KR1020107021213A KR20107021213A KR20100127790A KR 20100127790 A KR20100127790 A KR 20100127790A KR 1020107021213 A KR1020107021213 A KR 1020107021213A KR 20107021213 A KR20107021213 A KR 20107021213A KR 20100127790 A KR20100127790 A KR 20100127790A
Authority
KR
South Korea
Prior art keywords
computer system
time
clock
observed
message
Prior art date
Application number
KR1020107021213A
Other languages
English (en)
Other versions
KR101566570B1 (ko
Inventor
마이클 제이. 마루첵크
리차드 엘. 하샤
만수르 모신
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20100127790A publication Critical patent/KR20100127790A/ko
Application granted granted Critical
Publication of KR101566570B1 publication Critical patent/KR101566570B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/14Time supervision arrangements, e.g. real time clock
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/12Synchronisation of different clock signals provided by a plurality of clock generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • G06F21/725Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits operating on a secure reference time value
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/0635Clock or time synchronisation in a network
    • H04J3/0638Clock or time synchronisation among nodes; Internode synchronisation
    • H04J3/0658Clock or time synchronisation among packet nodes
    • H04J3/0661Clock or time synchronisation among packet nodes using timestamps
    • H04J3/0664Clock or time synchronisation among packet nodes using timestamps unidirectional timestamps
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/0635Clock or time synchronisation in a network
    • H04J3/0638Clock or time synchronisation among nodes; Internode synchronisation
    • H04J3/0658Clock or time synchronisation among packet nodes
    • H04J3/0661Clock or time synchronisation among packet nodes using timestamps
    • H04J3/0667Bidirectional timestamps, e.g. NTP or PTP for compensation of clock drift and for compensation of propagation delays

Abstract

본 발명은 비동기 분산 시스템에서 클록을 동기화하는 방법, 시스템 및 컴퓨터 프로그램 제품에까지 이른다. 본 발명의 실시예는 예를 들어, 공용 비동기 (분산) 시스템 내의 구성원과 같은 피어 노드(관찰자) 집합의 전체에 걸쳐 신뢰할 수 있고 실제적인 공용 시간(time of day) 참조의 작성을 용이하게 한다. 의사 동기 시스템의 클래스는 공용 마스터에 관계없이, 노드(관찰자) 쌍 사이의 최악의 경우의 상대론적 시간 왜곡을 추적하고 누적함으로써 만들어질 수 있다. 이와 같이, 노드들의 협동은 다른 노드 상에서의 관찰 값이 제공되면, 한 노드가 관찰할 시간에 관한 하한값을 기본적으로 보증할 수 있다. 따라서, 본 발명의 실시예는 일반적인 외부 시간 클록 엔티티가 사용되지 않고, 이러한 비동기 시스템의 전체에 걸쳐 최악의 경우(즉, 최대 편차)의 현재 시간의 일관성 있는(기본적으로 안전한) 뷰를 제공하는데 적용될 수 있다.

Description

비동기 분산 시스템에서의 클록의 동기화{SYNCHRONIZING CLOCKS IN AN ASYNCHRONOUS DISTRIBUTED SYSTEM}
컴퓨터 시스템 및 관련 기술은 사회의 여러 측면에 영향을 끼친다. 실제로, 컴퓨터 시스템의 정보 처리 능력은 우리가 생활하고 일하는 방식을 변화시켰다. 컴퓨터 시스템은 이제, 컴퓨터 시스템의 출현 이전에 수동으로 수행되었던 많은 작업(예를 들어, 워드 프로세싱, 일정 계획, 회계 등)을 통상적으로 수행한다. 더욱 최근에, 컴퓨터 시스템은 서로 결합되고 그외 다른 전자 장치에 결합되어 유선 및무선 컴퓨터 네트워크를 형성했으며, 이러한 네트워크를 통해, 컴퓨터 시스템 및 그외 다른 전자 장치는 전자 데이터를 전송할 수 있다. 따라서, 많은 컴퓨팅 작업의 수행은 다수의 상이한 컴퓨터 시스템 및/또는 다수의 상이한 컴퓨팅 환경에 걸쳐 분산된다.
네트워크는 단순 네트워크-사용 가능 컴퓨팅 시스템이 흔히 "인터넷"이라고 하는 네트워크 집합체를 통해 지구 전체에 퍼져 있는 수백만의 다른 컴퓨팅 시스템 중의 어느 하나와 통신할 수 있을 만큼 사실상 풍부해졌다. 이러한 컴퓨팅 시스템은 데스크톱, 랩톱 또는 태블릿 퍼스널 컴퓨터; PDA(Personal Digital Assistants); 전화기; 또는 디지털 네트워크를 통해 통신할 수 있는 임의의 다른 컴퓨터 또는 장치를 포함할 수 있다.
네트워크를 통해 통신하기 위해, 한 컴퓨팅 시스템(여기에서 "송신 컴퓨팅 시스템"이라 함)은 전자 메시지를 구성하거나 그 밖에 달리 액세스하여, 네트워크를 통해 다른 컴퓨팅 시스템(여기에서 "수신 컴퓨팅 시스템"이라 함)에 전자 메시지를 전송한다. 전자 메시지는 전자 메일 또는 인스턴트 메시지일 때 사람인 사용자에 의해 읽혀질 수 있고, 또는 그 대신에, 수신 컴퓨팅 시스템에서 실행되는 응용 프로그램에 의해 읽혀질 수 있다. 전자 메시지는 사람인 사용자의 가능한 지원으로 송신 컴퓨팅 시스템에서 실행되는 응용 프로그램에 의해 구성될 수 있다.
분산 컴퓨팅 환경에서, 다수의 상이한 노드는 원하는 컴퓨팅 작업을 수행하기 위해 상호 작용할 수 있다. 컴퓨팅 작업의 적절한 수행은 다양한 상이한 노드가 서로 간의 시간에 대한 몇 가지 공통된 이해를 하는데 달려 있을 수 있다. 다수의 시스템은 모든 노드에 통상적으로 배포되는 절대 시간을 얻기 위해 노드들이 참조할 수 있는 "마스터" 클록을 이용한다. 그러나, 클록을 절대 시간에 동기화하는 데는 동기화 프로토콜 및 높은 연결성이 필요하다. 마스터 클록에 대한 참조를 통한 클록 동기화는 또한 잠재적인 초크(choke) 지점 및 실패의 중심 지점을 초래한다. 예를 들어, 인터넷과 같은 일부 네트워크상에서, 높은 연결성은 컴퓨터 시스템이 빈번히 네트워크에 연결하고 네트워크로부터 연결을 끊기 때문에 사실상 불가능하다.
일부 피어 투 피어 시스템은 의사 동기 동작을 달성하기 위해 공용 시간 클록 소스와의 주기적인 동기화를 사용한다. 그러므로, 이들 시스템은 또한 신뢰할 수 있고 안전한 시스템을 얻기 위해 특정 순간에(예를 들어, 새로운 구성원 가입시에) 존재해야 하고 사용 가능해야 하는 공통된 시간 마스터를 갖는다.
본 발명은 비동기 분산 시스템에서 클록을 동기화하는 방법, 시스템 및 컴퓨터 프로그램 제품에까지 이른다. 몇몇 실시예에서, 관찰하는 컴퓨터 시스템이 상이한 관찰된 컴퓨터 시스템에서의 시간이라고 하는 것과 관찰된 컴퓨터 시스템에서의 실제 (로컬) 시간 사이의 편차가 결정된다. 관찰하는 컴퓨터 시스템은 관찰된 컴퓨터 시스템과의 하나 이상의 메시지 교환에 참여한다.
메시지 교환은 메시지가 송신될 때 관찰하는 컴퓨터 시스템에서의 클록의 송신 시간을 관찰하는 컴퓨터 시스템이 기록하는 것을 포함한다. 메시지 교환은 관찰하는 컴퓨터 시스템이 관찰된 컴퓨터 시스템에 하나 이상의 메시지를 송신하는 것을 포함한다. 메시지 교환은 관찰하는 컴퓨터 시스템이 관찰된 컴퓨터 시스템으로부터 메시지에 응답하는 상관성 메시지를 차후에 수신하는 것을 포함한다. 상관성 메시지는 관찰된 컴퓨터 시스템으로부터의 시간-자체의 로컬 시간을 포함한다. 메시지 교환은 상관성 메시지가 수신될 때 관찰하는 컴퓨터 시스템에서의 (로컬) 클록의 수신된 시간을 관찰하는 컴퓨터 시스템이 기록하는 것을 포함한다. 메시지 교환은 상관성 메시지가 수신될 때 관찰된 컴퓨터 시스템의 로컬 시간을 관찰하는 컴퓨터 시스템이 기록하는 것을 포함한다.
관찰하는 컴퓨터 시스템은 메시지를 송신하기 위해 기록된 그 로컬 시간과 상관성 메시지에 포함된 관찰된 컴퓨터 시스템으로부터의 시간 사이의 차이, 클록 퀀텀(quantum) 제약조건 및 클록 드리프트(drift) 제약조건에 기초하여, 관찰하는 컴퓨터 시스템의 로컬 시간에 관한 관찰된 컴퓨터 시스템에서의 시간에 대해 하한값을 계산한다. 관찰하는 컴퓨터 시스템은 상관성 메시지를 수신하기 위해 기록된 로컬 시간과 상관성 메시지에 포함된 관찰된 컴퓨터 시스템으로부터의 시간 사이의 차이, 클록 퀀텀 제약조건 및 클록 드리프트 제약조건에 기초하여, 관찰하는 컴퓨터 시스템의 시간에 관한 관찰된 컴퓨터 시스템에서의 시간에 대해 상한값을 계산한다.
관찰하는 컴퓨터 시스템은 상한값과 하한값 사이의 차이를 계산한다. 관찰하는 컴퓨터 시스템은 계산된 차이를 평균 계수로 나눔으로써, 이를테면, 예를 들어 계산된 차이를 절반으로 나눔으로써, 관찰하는 컴퓨터 시스템이 관찰된 컴퓨터 시스템에서의 시간이라고 하는 것과 관찰된 컴퓨터 시스템에서의 실제 시간 사이의 최대 편차를 계산한다. 후속 메시지 교환은 하한값과 상한값을 더욱 구체화하기 위해 이용될 수 있다. 관찰하는 컴퓨터 시스템은 하한값과 상한값에 기초하여 관찰된 컴퓨터 시스템에서 이벤트가 발생했을 때를 나타내는 시간 범위를 계산할 수 있다.
그외 다른 실시예에서, 다수의 컴퓨터 시스템을 포함하는 비동기 분산 시스템의 상이한 컴퓨터 시스템에서의 클록들 사이의 최대 편차가 계산된다. 컴퓨터 시스템은 클록 퀀텀 제약조건을 액세스한다. 클록 퀀텀 제약조건은 비동기 분산 시스템의 컴퓨터 시스템들 사이에서의 클록 양자화 사이의 최대 차이를 나타낸다. 컴퓨터 시스템은 드리프트 비율 제약조건을 액세스한다. 드리프트 비율 제약조건은 비동기 분산 시스템의 각 컴퓨터 시스템에 대한 지정된 기간 내의 최대 클록 드리프트를 나타낸다.
컴퓨터 시스템은 최대 왕복 제약조건을 액세스한다. 최대 왕복 제약조건은 비동기 분산 시스템의 임의의 2개의 컴퓨터 시스템 사이에서 발생하는 요청/회신 메시지 교환을 위한 최대 시간 양을 나타낸다. 컴퓨터 시스템은 클록 퀀텀 제약조건, 드리프트 비율 제약조건 및 최대 왕복 제약조건에 기초하여 비동기 시스템의 상이한 컴퓨터 시스템에서의 클록들 사이의 최대 편차를 계산한다.
이 요약은 아래의 상세한 설명에서 더욱 설명되는 개념들의 선택된 개념을 단순화된 형태로 소개하기 위해 제공된다. 이 요약은 청구된 주제의 핵심적인 기능이나 중요한 기능을 식별하고자 하는 것도 아니고, 청구된 주제의 범위를 결정하는데 보조로 사용되고자 하는 것도 아니다.
본 발명의 추가 기능 및 장점은 다음의 상세한 설명에서 설명될 것이고, 부분적으로 상세한 설명으로부터 명백해질 것이며, 또는 본 발명의 실시에 의해 알게 될 수 있다. 본 발명의 기능 및 장점은 첨부된 청구범위에서 특별히 지적된 기기 및 조합에 의해 실현되고 얻어질 수 있다. 본 발명의 이들 및 그외 다른 기능은 다음의 상세한 설명 및 첨부된 청구범위로부터 더욱 충분히 명백해질 것이고, 또는 이후 설명되는 본 발명의 실시에 의해 알게 될 수 있다.
본 발명의 상기 및 그외 다른 장점 및 기능이 얻어질 수 있는 방식을 설명하기 위해, 위에서 간략하게 설명된 본 발명의 더욱 상세한 설명은 첨부된 도면에 도시된 특정 실시예를 참조하여 제공될 것이다. 이들 도면은 단지 본 발명의 일반적인 실시예를 도시한 것일 뿐이므로, 본 발명의 범위를 제한하는 것으로 생각해서는 안 된다는 것을 이해하고, 본 발명은 첨부 도면을 사용하여 추가적인 특정 내용 및 세부 내용이 기술되고 설명될 것이다.
도 1은 비동기 분산 시스템에서의 클록의 동기화를 용이하게 하는 예시적인 비동기 분산 시스템을 도시한 도면.
도 2는 관찰하는 컴퓨터 시스템이 관찰된 컴퓨터 시스템에서의 시간이라고 하는 것과 관찰된 컴퓨터 시스템에서의 실제 시간 사이의 편차를 결정하는 예시적인 방법의 순서도.
도 3은 관찰된 컴퓨터 시스템에서 이벤트가 발생한 시간을 나타내는 예시적인 방법의 순서도.
도 4는 다수의 컴퓨터 시스템을 포함하는 비동기 분산 시스템의 상이한 컴퓨터 시스템에서의 클록들 사이의 최대 편차를 계산하는 예시적인 방법의 순서도.
도 5는 다수의 컴퓨터 시스템을 포함하는 비동기 분산 시스템의 상이한 컴퓨터 시스템에서의 클록들 사이의 최대 편차의 계산을 용이하게 하는 예시적인 컴퓨터 아키텍처를 도시한 도면.
본 발명은 비동기 분산 시스템에서 클록을 동기화하는 방법, 시스템 및 컴퓨터 프로그램 제품에까지 이른다. 몇몇 실시예에서, 관찰하는 컴퓨터 시스템이 상이한 관찰된 컴퓨터 시스템에서의 시간이라고 하는 것과 관찰된 컴퓨터 시스템에서의 실제 (로컬) 시간 사이의 편차가 결정된다. 관찰하는 컴퓨터 시스템은 관찰된 컴퓨터 시스템과의 하나 이상의 메시지 교환에 참여한다.
메시지 교환은 메시지가 송신될 때 관찰하는 컴퓨터 시스템에서의 클록의 송신 시간을 관찰하는 컴퓨터 시스템이 기록하는 것을 포함한다. 메시지 교환은 관찰하는 컴퓨터 시스템이 관찰된 컴퓨터 시스템에 하나 이상의 메시지를 송신하는 것을 포함한다. 메시지 교환은 관찰하는 컴퓨터 시스템이 관찰된 컴퓨터 시스템으로부터 메시지에 응답하는 상관성 메시지를 차후에 수신하는 것을 포함한다. 상관성 메시지는 관찰된 컴퓨터 시스템으로부터의 시간-자체의 로컬 시간을 포함한다. 메시지 교환은 상관성 메시지가 수신될 때 관찰하는 컴퓨터 시스템에서의 (로컬) 클록의 수신된 시간을 관찰하는 컴퓨터 시스템이 기록하는 것을 포함한다. 메시지 교환은 상관성 메시지가 수신될 때 관찰된 컴퓨터 시스템의 로컬 시간을 관찰하는 컴퓨터 시스템이 기록하는 것을 포함한다.
관찰하는 컴퓨터 시스템은 메시지를 송신하기 위해 기록된 그 로컬 시간과 상관성 메시지에 포함된 관찰된 컴퓨터 시스템으로부터의 시간 사이의 차이, 클록 퀀텀 제약조건 및 클록 드리프트 제약조건에 기초하여, 관찰하는 컴퓨터 시스템의 로컬 시간에 관한 관찰된 컴퓨터 시스템에서의 시간에 대해 하한값을 계산한다. 관찰하는 컴퓨터 시스템은 상관성 메시지를 수신하기 위해 기록된 로컬 시간과 상관성 메시지에 포함된 관찰된 컴퓨터 시스템으로부터의 시간 사이의 차이, 클록 퀀텀 제약조건 및 클록 드리프트 제약조건에 기초하여, 관찰하는 컴퓨터 시스템의 시간에 관한 관찰된 컴퓨터 시스템에서의 시간에 대해 상한값을 계산한다.
관찰하는 컴퓨터 시스템은 상한값과 하한값 사이의 차이를 계산한다. 관찰하는 컴퓨터 시스템은 계산된 차이를 평균 계수로 나눔으로써, 이를테면, 예를 들어 계산된 차이를 절반으로 나눔으로써, 관찰하는 컴퓨터 시스템이 관찰된 컴퓨터 시스템에서의 시간이라고 하는 것과 관찰된 컴퓨터 시스템에서의 실제 시간 사이의 최대 편차를 계산한다. 후속 메시지 교환은 하한값과 상한값을 더욱 구체화하기 위해 이용될 수 있다. 관찰하는 컴퓨터 시스템은 하한값과 상한값에 기초하여 관찰된 컴퓨터 시스템에서 이벤트가 발생했을 때를 나타내는 시간 범위를 계산할 수 있다.
그외 다른 실시예에서, 다수의 컴퓨터 시스템을 포함하는 비동기 분산 시스템의 상이한 컴퓨터 시스템에서의 클록들 사이의 최대 편차가 계산된다. 컴퓨터 시스템은 클록 퀀텀 제약조건을 액세스한다. 클록 퀀텀 제약조건은 비동기 분산 시스템의 컴퓨터 시스템들 사이에서의 클록 양자화 사이의 최대 차이를 나타낸다. 컴퓨터 시스템은 드리프트 비율 제약조건을 액세스한다. 드리프트 비율 제약조건은 비동기 분산 시스템의 각각의 컴퓨터 시스템에 대한 지정된 기간 내의 최대 클록 드리프트를 나타낸다.
컴퓨터 시스템은 최대 왕복 제약조건을 액세스한다. 최대 왕복 제약조건은 비동기 분산 시스템의 임의의 2개의 컴퓨터 시스템 사이에서 발생하는 요청/회신 메시지 교환을 위한 최대 시간 양을 나타낸다. 컴퓨터 시스템은 클록 퀀텀 제약조건, 드리프트 비율 제약조건 및 최대 왕복 제약조건에 기초하여 비동기 시스템의 상이한 컴퓨터 시스템에서의 클록들 사이의 최대 편차를 계산한다.
본 발명의 실시예는 아래에 더욱 상세하게 설명되는 바와 같이, 컴퓨터 하드웨어를 포함하는 특수 목적 및 범용 컴퓨터를 포함하거나 이용할 수 있다. 본 발명의 범위 내의 실시예는 또한 컴퓨터 실행가능 명령어 및/또는 데이터 구조를 전달하거나 저장하는 물리적 및 그외 다른 컴퓨터 판독가능 매체를 포함한다. 이러한 컴퓨터 판독가능 매체는 범용 또는 특수 목적 컴퓨터 시스템에 의해 액세스될 수 있는 임의의 사용 가능한 매체일 수 있다. 컴퓨터 실행가능 명령어를 저장하는 컴퓨터 판독가능 매체는 물리적 저장 매체이다. 컴퓨터 실행가능 명령어를 전달하는 컴퓨터 판독가능 매체는 전송 매체이다. 그러므로, 예시적이고 비제한적으로, 본 발명의 실시예는 최소한 2개의 별도의 상이한 종류의 컴퓨터 판독가능 매체: 물리적 저장 매체와 전송 매체를 포함할 수 있다.
물리적 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 기타 광 디스크 저장장치, 자기 디스크 저장 장치 또는 기타 자기 저장 장치를 포함하고, 또는 컴퓨터 실행가능 명령어 또는 데이터 구조의 형태로 원하는 프로그램 코드 수단을 저장하기 위해 사용될 수 있고 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함한다.
"네트워크"는 컴퓨터 시스템 및/또는 모듈 및/또는 기타 전자 장치 사이에서 전자 데이터의 전송을 가능하게 하는 하나 이상의 데이터 링크로 정의된다. 정보가 네트워크 또는 다른 통신 연결(유선, 무선, 또는 유선과 무선의 조합)을 통해 컴퓨터에 전송되거나 제공될 때, 컴퓨터는 적절하게 이러한 연결을 전송 매체로 본다. 전송 매체는 컴퓨터 실행가능 명령어 또는 데이터 구조의 형태로 원하는 프로그램 코드 수단을 전달하기 위해 사용될 수 있고, 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 네트워크 및/또는 데이터 링크를 포함할 수 있다. 위의 조합은 또한 컴퓨터 판독가능 매체의 범위에 포함되어야 한다.
더욱이, 다양한 컴퓨터 시스템 구성요소에 도달하면, 컴퓨터 실행가능 명령어 또는 데이터 구조 형태의 프로그램 코드 수단은 전송 매체에서 물리적 저장 매체로(또는 이와 반대로) 자동으로 전송될 수 있다. 예를 들어, 네트워크 또는 데이터 링크를 통해 수신된 컴퓨터 실행가능 명령어 또는 데이터 구조는 네트워크 인터페이스 모듈(예를 들어, "NIC") 내의 RAM에 버퍼링된 다음에, 최종적으로 컴퓨터 시스템 RAM 및/또는 컴퓨터 시스템에 있는 덜 휘발성인 물리적 저장 매체에 전송될 수 있다. 그러므로, 물리적 저장 매체는, 또한 (또는 심지어는 주로) 전송 매체를 이용하는 컴퓨터 시스템 구성요소에 포함될 수 있다는 것을 이해할 수 있을 것이다.
컴퓨터 실행가능 명령어는 예를 들어, 범용 컴퓨터, 특수 목적 컴퓨터 또는 특수 목적 처리 장치가 특정 기능 또는 기능 그룹을 실행하게 하는 명령어 및 데이터를 포함한다. 컴퓨터 실행가능 명령어는 예를 들어, 바이너리, 어셈블리 언어와 같은 중간 포맷 명령어, 또는 심지어 소스 코드일 수 있다. 주제가 구조적 기능 및/또는 방법적 동작에 특정된 언어로 설명되었지만, 첨부된 청구범위에 정의된 주제는 반드시 위에서 설명된 기능 또는 동작에 제한되는 것은 아니라는 것을 이해할 것이다. 오히려, 설명된 기능 및 동작은 청구범위를 구현하는 예시적인 형태로 개시된다.
본 분야에 숙련된 기술자들은 본 발명이 개인용 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터, 메시지 프로세서, 핸드헬드 장치, 멀티 프로세서 시스템, 마이크로프로세서 기반 또는 프로그램가능 소비자 전자제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 모바일 전화, PDA, 페이저, 라우터, 스위치 등을 포함하는 여러 유형의 컴퓨터 시스템 구성을 갖는 네트워크 컴퓨팅 환경에서 실시될 수 있다는 것을 알 수 있을 것이다. 본 발명은 또한, 네트워크를 통해 (유선 데이터 링크, 무선 데이터 링크, 또는 유선과 무선 링크의 조합에 의해) 연결되는 로컬 및 원격 컴퓨터 시스템 둘 다가 작업을 수행하는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 시스템 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 장치 둘 다에 위치할 수 있다.
이 설명 및 다음의 청구범위에서, 양자화된다는 것은 연속적이지 않는 것, 즉 특정 기간(예를 들어, 1초) 동안 값을 유지한 다음에 새로운 값으로 변경되는 것으로 정의된다.
이 설명 및 다음의 청구범위에서, 드리프트는 한 클록이 다른 클록에 비해 정확한 속도로 실행되지 않는 것으로 정의된다. 그러므로, 약간의 시간 후, 한 클록은 다른 클록과 "별도로 드리프트"할 수 있다. 클록은 상이한 방향으로(예를 들어, 다른 클록에 비해 뒤처지거나 앞서서) 드리프트할 수 있고, 상이한 속도로 드리프트할 수 있다. 개별 클록의 드리프트는 또한, 예를 들어 주위 온도 변화, 배터리 전원 등과 같은 환경적 변화에 응답하여 상이한 시간에 서로 다를 수 있다.
일반적으로, 비동기 시스템 내의 클록은 하나 이상의 제약조건에 따를 수 있다. 예를 들어, 실제 컴퓨터 클록은 부득이하게 (그들의 로컬 클록 값의 전진에 의해 측정된 것과) 동일한 속도에 매우 가깝게 시간이 흐를 수 있다. 그러므로, 클록 기술의 (비교적 작고, 잠재적으로 별로 중요하지 않은) 부정확성은 최악의 경우의 방식으로 보상될 수 있다. 따라서, 본 발명의 실시예는 (주체 관찰자가 그외 다른 클록을 직접 관찰할 수 없더라도) 주체 관찰자의 관점에서 제공된 시간에 그외 다른 관찰자의 클록 값에 관한 비교적 강한 경계값을 설정하기 위해 주체 관찰자가 그외 다른 관찰자와 협력할 수 있도록 그러한 제약조건을 고려한 알고리즘을 이용한다.
따라서, 본 발명의 실시예는 일반적인 외부 시간 클록 엔티티가 사용되지 않고, 비동기 시스템의 전체에 걸쳐 최악의 경우(예를 들어, 최대 편차)의 현재 시간의 비교적 일관성 있는(안전한) 뷰를 제공하도록 구현될 수 있다. 비동기 분산 시스템 내의 컴퓨터 시스템들은 공통된 시간 마스터에 관한 종속성이 없으므로, 사실상 "마스터가 없다".
몇몇 실시예에서, 주체 관찰자(예를 들어, 노드)는 단일 클록(자체의 클록)의 값을 관찰할 수 있고, (우리의 주체 관찰자의 동일한 형태의) 피어 관찰자 집합이 비동기 비순시 메시지를 그외 다른 관찰자에게 보내서, 관찰자간 통신 경로를 통해 불명확한 지연을 끌어들일 수 있다는 것을 관찰할 수 있다.
본 발명의 몇 가지 예의 설명은 다음 표기법에 기초하여 제공된다.
1. t0, t1, t2,...는 공통 타임 라인 내의 특정 이벤트 표시이다.
2. (t1 - t0)은 2개의 이벤트(t1과 t0) 사이의 정확한 기간을 나타낸다.
3. 이벤트 t0이 다른 이벤트 t1보다 앞에 발생하면, t0 < t1 이다.
4. X(t0)은 이벤트 t0이 발생할 때 관찰되는 클록 X의 값이다.
3. (X(t1) - X(t0))은 클록 X에 의해 측정된, 2개의 이벤트(t1과 t0) 사이의 기간 값(시간 범위)이다.
5. OX는 클록 X의 관찰자를 정의한다.
6. OX.send(OY, {contents})는 OX가 지정된 콘텐츠를 갖는 OY에 (예를 들어, 요청) 메시지를 송신하는 이벤트를 나타낸다.
7. OX.receive(OY, {contents})는 OX가 지정된 콘텐츠를 갖는 OY로부터 (예를 들어, 회신) 메시지를 수신하는 이벤트를 나타낸다.
그러므로, 다음 비동기 분산 시스템 제약 조건에 있어서:
A. 클록의 값은 단조 증가한다:
t0 < t1이면, X(t0) <= X(t1)
B. 임의의 클록 X에 대해,
t0 + Q < t1이면, X(t0) < X(t1)
이 되도록, 클록 퀀텀 Q에 관한 상한값이 있다.
C. 임의의 클록 X 및 이벤트 t0 < t1에 대해,
t0 < t1이면, (1 - D) * (X(t1) - X(t0)) <= (t1 - t0) + Q
이 되도록, 클록 드리프트 D에 관한 상한값이 있다.
D. 그리고,
t0 < t1이면, (t1 - t0) <= ((1 + D) * (X(t1) - X(t0)) + Q
이다.
설명된 표기법을 이용하면, 설명된 제약조건을 갖는 비동기 분산 시스템에서, 다음과 같은 메시지 교환 시퀀스가 발생할 수 있다:
Figure pct00001
Figure pct00002
메시지 교환 시퀀스는 OX가 OY에게 OY의 현재 로컬 클록 값을 물어보고, 요청했을 때의 시간(t0)과 다시 회신을 얻었을 때의 시간(t6)을 기록하는 요청/회신 작업에 대한 것이다. OX는 X의 로컬 클록이 값 X(t0)을 가졌을 때와 X의 로컬 클록이 값 X(t6)을 가졌을 때 사이의 어떤 시점에서 Y가 값 Y(t3)를 갖는다는 것을 이제 알고 있다. 메시지의 조합이 전체 순서를 나타내기 위해 사용될 수 있긴 하지만, OX와 OY의 각각은 자체의 독립된 타임 라인에 따라 작동할 수 있다.
드리프트가 없는 완벽한 로컬 클록의 경우에, OX는 t6 후의 임의의 시간에 클록 Y의 값에 관해 다음과 같은 경계값을 설정할 수 있다:
Figure pct00003
양자화를 고려하면, OX는 t6 후의 임의의 시간에 클록 Y의 값에 관해 다음과 같은 경계값을 설정할 수 있다:
Figure pct00004
Q항은 클록이 양자화됨을 나타낸다. 양자화가 2개의 Q항을 각각의 경계값에 추가하는 것을 살펴보기 위해, X(t0)=0, Y(t3)=1 및 X(t6)=2가 되도록 관찰이 이루어졌다고 가정해보자. 이것은 클록이 2의 불확실성과 일치하고 있음을 제안할 것이다. 실제 불확실성을 찾기 위해, 이러한 관찰을 가져왔을 수 있는 3개의 클록의 각각에 대한 경계 사례가 고려될 수 있다:
Figure pct00005
처음의 3열은 클록이 제공된 값으로 변경될 때의 시간에 관한 관찰 시간을 나타낸다. 예를 들어, 제2 열에서, "2-Δ"는 값이 1에서 2로 변하는 Y의 이벤트보다 먼저 일어나는 이벤트의 시간을 나타낸다. 제4 열은 열 1과 2 사이의 차이이고, 제5 열은 열 2와 3 사이의 차이이다.
마지막 2개의 열로부터의 최대 값을 취하고, Δ을 0에 가깝게 하면, 우리는 최대 불확실성이 어느 방향으로든 2라는 것을 알 수 있다. 이것을 관찰된 불확실성과 비교하여, 양자화는 2개의 퀀텀의 가능한 오차를 도입했다. 이것은 이들 값에 대한 변화가 관찰 결과 및 가능한 경계 사례 둘 다에 동일하게 영향을 미친다는 것을 관찰함으로써 임의의 X(t0), Y(t3) 및 X(t6)으로 일반화될 수 있다. 그러므로, 양자화는 2Q와 같은 오차 항을 도입한다.
양자화 및 클록 드리프트를 고려하면, OX는 t6 후의 임의의 시간에 클록 Y의 값에 관해 다음과 같은 경계값을 설정할 수 있다:
Figure pct00006
이러한 값들 사이의 차이는 다음과 같다:
Figure pct00007
이것은 다음과 같은 최대 오차를 암시한다:
Figure pct00008
이 식에서, (X(t6) - X(t0))은 OX에서 OY로 그리고 반대로 요청-회신 상호작용에 걸리는 시간이다. Q는 클록의 값이 업데이트되는 횟수에 의존한다. 마지막 항인 2D(X(t) - (X(t6)+X(t0))/2 + 2Q)는 경계값이 잠재적인 클록 드리프트로 인해 시간이 흐름에 따라 어떻게 약해지는지(즉, 감소하는지) 나타낸다.
메시지 교환 시퀀스 쿼리는 여러 번 반복될 수 있고, OX는 임의의 쿼리로부터 가장 좁은 상한값을 선택할 수 있고, 임의의 쿼리로부터 가장 좁은 하한값을 선택할 수 있다. 선택시에, 가장 좁은 상한값 및 가장 좁은 하한값은 동일한 쿼리로부터의 것일 필요는 없다. 메시지 교환 시퀀스 쿼리를 주기적으로 반복함으로써, 관찰자(이 예에서는 OX)는 임의의 시간 T에, 최근의 측정이 있었을 것이기 때문에, 제3항을 최소화할 수 있다.
도 1은 비동기 분산 시스템(100)에서의 클록 동기화를 용이하게 하는 비동기 분산 시스템(100)을 도시한 것이다. 도 1을 참조하면, 컴퓨터 아키텍처(100)는 컴퓨터 시스템(101, 151) 및 그외 다른 컴퓨터 시스템(191)을 포함한다. 도시된 컴퓨터 시스템 및 그 대응하는 구성요소의 각각은 예를 들어, LAN(Local Area Network), WAN(Wide Area Network), USB(Universal Serial Bus) 및 심지어 인터넷과 같은 통신 경로를 통해 서로 접속될 수 있다(또는 그러한 통신 경로의 일부일 수 있다). 따라서, 임의의 다른 접속된 구성요소뿐만 아니라 도시된 구성요소의 각각은 네트워크를 통해 메시지 관련 데이터 및 교환 메시지 관련 데이터(예를 들어, 인터넷 프로토콜(IP) 데이터그램, 및 IP 데이터그램을 이용하는 그외 다른 더 높은 계층의 프로토콜, 이를테면 TCP(Transmission Control Protocol), HTTP(Hypertext Transfer Protocol), SMTP(Simple Mail Transfer Protocol) 등)를 만들 수 있다.
비동기 분산 시스템(100)은 사실상 임의의 유형의 비동기 시스템, 이를테면, 예를 들어 피어 투 피어 시스템일 수 있다.
도시된 바와 같이, 컴퓨터 시스템(101)은 클록 관리 모듈(102) 및 클록(103)을 포함한다. 일반적으로, 컴퓨터 시스템(101)은 그외 다른 컴퓨터 시스템과의 요청/회신 메시지 교환 시퀀스에 참여하고, 요청/회신 메시지 교환 시퀀스와 관련된 시간 데이터에 기초하여, 관찰된 컴퓨터 시스템에서의 시간으로 알려져 있는 시간을 유지하도록 구성된다.
클록 관리 모듈(102)은 컴퓨터 시스템(101)과 비동기 분산 시스템(100)의 그외 다른 컴퓨터 시스템 사이의 통신과 관련된 시간 데이터(예를 들어, 시간 데이터(194))를 기록하고 유지하도록 구성된다. 클록 관리 모듈(102)은 메시지가 컴퓨터 시스템(101)으로부터 송신될 때와 컴퓨터 시스템(101)에서 수신될 때, 클록(103)에서 시간을 기록할 수 있다. 클록 관리 모듈(102)은 또한 요청/회신 메시지 교환 시퀀스의 일부로서 수신된 회신 메시지에 포함되는 관찰된 컴퓨터 시스템(예를 들어, 컴퓨터 시스템(151))으로부터의 수신된 시간을 저장할 수 있다. 기록되고 수신된 시간으로부터, 클록 관리 모듈(102)은 지정된 범위 내에서 관찰된 컴퓨터 시스템에서의 이벤트 발생 시간을 나타낼 수 있다.
도시된 바와 같이, 컴퓨터 시스템(151)은 클록 관리 모듈(152) 및 클록(153)을 포함한다. 일반적으로, 컴퓨터 시스템(151)은 그외 다른 컴퓨터 시스템과의 요청/회신 메시지 교환 시퀀스에 참여하고, 요청/회신 메시지 교환 시퀀스와 관련된 시간 데이터에 기초하여 관찰된 컴퓨터 시스템에서의 시간으로 알려져 있는 시간을 유지하도록 구성된다.
클록 관리 모듈(152)은 컴퓨터 시스템(151)과 비동기 분산 시스템(100)의 그외 다른 컴퓨터 시스템 사이의 통신과 관련된 시간 데이터를 기록하고 유지하도록 구성된다. 클록 관리 모듈(152)은 메시지가 컴퓨터 시스템(151)으로부터 송신될 때와 컴퓨터 시스템(151)에서 수신될 때, 클록(153)에서 시간을 기록할 수 있다. 클록 관리 모듈(152)은 또한 요청/회신 메시지 교환 시퀀스의 일부로서 수신된 회신 메시지에 포함되는 관찰된 컴퓨터 시스템(예를 들어, 컴퓨터 시스템(101))으로부터의 수신된 시간을 저장할 수 있다. 기록되고 수신된 시간으로부터, 클록 관리 모듈(152)은 지정된 범위 내에서 관찰된 컴퓨터 시스템에서의 이벤트 발생 시간을 나타낼 수 있다.
본 발명의 실시예는 자체의 클록을 관찰하고, 그외 다른 클록에 대한 값의 범위를 추론하는 컴퓨터 시스템을 포함한다. 예를 들어, 컴퓨터 시스템(101)은 클록(103)을 관찰할 수 있고, (그외 다른 컴퓨터 시스템(191)에서의 클록뿐만 아니라) 클록(153)에 대한 값의 범위를 추론할 수 있다. 이와 유시하게, 컴퓨터 시스템(151)은 클록(153)을 관찰할 수 있고, (그외 다른 컴퓨터 시스템(191)에서의 클록뿐만 아니라) 클록(103)에 대한 값의 범위를 추론할 수 있다. 그외 다른 컴퓨터 시스템(191)은 또한 자체의 클록을 관찰할 수 있고, 클록(103) 및 클록(153)의 각각에 대한 값의 범위를 추론할 수 있다.
클록 관리 모듈은 또한 비동기 분산 시스템(100) 내의 클록들 사이의 최대 양자화 차이 Q(예를 들어, 양자화(192)) 및 비동기 분산 시스템(100) 내의 기간 D 당 최대 클록 드리프트(예를 들어, 드리프트(193))로 구성될 수 있다.
따라서, 본 발명의 몇몇 실시예는 관찰하는 컴퓨터 시스템이 관찰된 컴퓨터 시스템에서의 시간이라고 하는 것과 관찰된 컴퓨터 시스템에서의 실제 시간 차이의 편차를 결정하기 위해 요청/회신 메시지 교환을 이용하는 것을 포함한다. 요청/회신 메시지 교환은 요청 메시지 및 대응하는 회신 메시지를 포함할 수 있다. 예를 들어, 메시지 교환(184)은 요청(181) 및 회신(182)을 포함한다. 결정된 편차로부터, 관찰하는 컴퓨터 시스템은 예를 들어, 관찰된 컴퓨터 시스템에서의 클록에 대한 값의 범위를 추론할 수 있다. 그러나, (예를 들어, 명시된 요청/회신보다) 느슨한 상관관계를 갖는 메시지가 또한 사용될 수 있다.
그러므로, 본 발명의 그외 다른 실시예는 관찰하는 컴퓨터 시스템이 관찰된 컴퓨터 시스템에서의 시간이라고 하는 것과 관찰된 컴퓨터 시스템에서의 실제 시간 사이의 편차를 결정하기 위해 송신된 메시지와 수신된 메시지 사이의 느슨한 상관관계를 갖는 메시지 교환을 이용한다. 예를 들어, 한 컴퓨터는 다수의 요청을 송신하고, (예를 들어, 그외 다른 메시지 교환(185)에 의해 표시된) 적은 수의 또는 단 하나의 대응하는 응답을 돌려받을 수 있다. 더욱이, 한 컴퓨터로부터의 회신은 또한 한 컴퓨터에서 다시 다른 컴퓨터로의 요청을 나타낼 수 있다. 그러므로, 메시지는 요청 및 회신 둘 다를 나타낼 수 있다. 게다가, 종종, 수신된 요청에 대한 회신이 반환될 때를 지시하는 요구사항이 없다. 그러므로, 요청/회신 쌍 사이에 강한 상관관계가 있을 때라도, 회신이 반환되는 때에 관한 제약조건이 없을 수 있다. 예를 들어, 요청/회신(184) 내에서, 요청(181)의 수신에 응답하여 회신(182)이 반환되는 때를 지시하는 시간 제약조건이 없을 수 있다.
도 2는 관찰하는 컴퓨터 시스템이 관찰된 컴퓨터 시스템에서의 시간이라고 하는 것과 관찰된 컴퓨터 시스템에서의 실제 시간의 사이의 편차를 결정하기 위한 예시적인 방법(200)의 순서도이다. 방법(200)은 비동기 분산 시스템(100)에서의 구성요소 및 데이터와 관련하여 설명될 것이다.
방법(200)은 관찰된 컴퓨터 시스템과의 하나 이상의 메시지 교환에 참여하는 동작을 포함한다(동작(201)). 예를 들어, 컴퓨터 시스템(101)은 컴퓨터 시스템(151)과의 메시지 교환(184)에 참여할 수 있다. 대안적으로, 컴퓨터 시스템(101)은 하나 이상의 추가 메시지 교환(185)에 참여할 수 있다. 메시지 교환은 메시지 교환(184)보다, 요청과 회신 사이의 느슨한 결합 관계를 가질 수 있다. 그외 다른 실시예에서, 컴퓨터 시스템(101)은 추가 메시지 교환(185)에는 참여하지만, 메시지 교환(184)에는 참여하지 않는다. 그러므로, 컴퓨터 시스템(101)은 임의의 요청/회신 메시지 교환의 상관된 메시지를 포함하지 않는 느슨한 결합 메시지 교환에 참여할 수 있다.
관찰된 컴퓨터 시스템과의 하나 이상의 메시지 교환에의 참여는 메시지가 송신될 때 관찰하는 컴퓨터 시스템에서의 클록 시간을 기록하는 동작을 포함할 수 있다(동작(202)). 예를 들어, 클록 관리 모듈(102)은 시간 데이터(194) 내에 시간 입력(171)을 기록할 수 있다. 시간 입력(171)은 컴퓨터 시스템(101)이 요청(181)을 보낼 때의 클록(103)에서의 시간을, 예를 들어 hh:mm:ss.ms 포맷으로 기록한다. 그러므로, 시간 입력(181)은 클록(103)이 8시를 나타냈을 때 요청(181)이 송신되었음을 나타낸다. 대안적으로 또는 조합하여, 시간 입력은 또한 그외 다른 요청(예를 들어, 추가 메시지 교환(185)에 포함될 요청)에 대해 추가될 수 있다. 관찰된 컴퓨터 시스템과의 하나 이상의 메시지 교환에의 참여는 메시지를 관찰된 컴퓨터 시스템에 송신하는 동작을 포함할 수 있는데, 메시지는 기록된 송신 시간을 포함한다(동작(203)). 예를 들어, 컴퓨터 시스템(101)은 요청(181)을 컴퓨터 시스템(151)에 송신할 수 있다. 요청(181)은 시간 입력(171)으로부터의 정보를 포함할 수 있다. 대안적으로 또는 조합하여, (예를 들어, 추가 메시지 교환(185)의 일부로서의) 하나 이상의 다른 요청이 또한 컴퓨터 시스템(101)에서 컴퓨터 시스템(151)으로 송신될 수 있다.
관찰된 컴퓨터 시스템과의 하나 이상의 메시지 교환에의 참여는 관찰된 컴퓨터 시스템으로부터 메시지에 응답하는 상관성 메시지를 차후에 수신하는 동작을 포함할 수 있는데, 상관성 메시지는 관찰된 컴퓨터 시스템으로부터의 시간을 포함한다(동작(204)). 예를 들어, 컴퓨터 시스템(101)은 컴퓨터 시스템(151)으로부터 회신(182)을 수신할 수 있다. 회신(182)은 시간(183)을 포함한다. 시간(183)은 클록(153)에서의 관찰된 시간(예를 들어, 회신(182)이 송신된 때, 요청(181)이 처리된 때 등등)을 나타낸다. 대안적으로 또는 조합하여, 하나 이상의 다른 회신이 또한 컴퓨터 시스템(151)으로부터 수신될 수 있다(예를 들어, 추가 메시지 교환(185)에 포함된 회신). 그러므로, 하나 이상의 회신은 클록(153)에서의 관찰된 시간을 나타내는 시간을 포함할 수 있다.
관찰된 컴퓨터 시스템과의 하나 이상의 메시지 교환에의 참여는 상관성 메시지가 수신될 때 관찰하는 컴퓨터 시스템에서의 클록의 수신 시간을 기록하는 동작을 포함할 수 있다(동작(205)). 예를 들어, 클록 관리 모듈(102)은 시간 데이터(194) 내에 시간 입력(172)을 기록할 수 있다. 시간 입력(172)은 컴퓨터 시스템(101)이 회신(182)을 수신했을 때의 클록(103)에서의 시간을 기록한다. 그러므로, 시간 입력(172)은 클록(103)이 8시 64 ms를 나타냈을 때 회신(182)이 수신되었음을 나타낸다. 대안적으로 또는 조합하여, 클록 관리 모듈(102)은 또한 추가 메시지 교환(185)에 포함된 그외 다른 회신이 수신되었을 때를 나타내는 시간 입력을 (시간 데이터(194) 내에) 기록할 수 있다.
관찰된 컴퓨터 시스템과의 하나 이상의 메시지 교환에의 참여는 관찰된 컴퓨터 시스템으로부터의 시간을 기록하는 동작을 포함할 수 있다(동작(206)). 예를 들어, 클록 관리 모듈(102)은 시간 데이터(194) 내에 시간 입력(173)을 기록할 수 있다. 시간 입력(173)은 컴퓨터 시스템(151)이 클록(153)에서 관찰한 시간(예를 들어, 요청(181)의 수신 시간, 요청(181) 처리 동안의 시간 등등)을 기록한다. 시간 입력(173)은 요청/회신 교환 시퀀스(184) 동안에 클록(153)의 시간이 8시 43 ms에 관찰되었음을 나타낸다. 대안적으로 또는 조합하여, 클록 관리 모듈(102)은 또한 추가 메시지 교환(185)에 포함된 그외 다른 회신에 포함된 시간에 대한 시간 입력을 (시간 데이터(194) 내에) 기록할 수 있다.
방법(200)은 메시지를 송신하기 위해 기록된 시간과 상관성 메시지 내에 포함된 관찰된 컴퓨터 시스템으로부터의 시간 사이의 차이에 기초하여 관찰하는 컴퓨터 시스템의 시간에 관한 관찰된 컴퓨터 시스템에서의 시간에 대해 하한값을 계산하는 동작을 포함한다(동작(207)). 예를 들어, 클록 관리 모듈(102)은 클록(153)에 관한 클록(103)의 시간에 대해 하한값(161)을 계산할 수 있다. 클록 관리 모듈(102)은 클록(153)에 관한 하한값(161)을 계산하기 위해 이전에 설명된 수식을 구현할 수 있다. 그러므로, 회신(182)이 수신되고, 클록(103)이 관찰되어 8:00:00.064로 읽혀질 때, 하한값(161)은 다음과 같이 계산될 수 있다:
Figure pct00009
대안적으로 또는 조합하여, 클록 관리 모듈(102)은 또한 추가 메시지 교환(185)에서의 그외 다른 요청 및 그외 다른 회신에 관련된 시간 입력으로부터 하한값(161)을 계산할 수 있다.
방법(200)은 상관성 메시지를 수신하기 위해 기록된 시간과 상관성 메시지 내에 포함된 관찰된 컴퓨터 시스템으로부터의 시간 사이의 차이에 기초하여 관찰하는 컴퓨터 시스템의 시간에 관한 관찰된 컴퓨터 시스템에서의 시간에 대해 상한값을 계산하는 동작을 포함한다(동작(208)). 예를 들어, 클록 관리 모듈(102)은 클록(153)에 관한 클록(103)의 시간에 대해 상한값(162)을 계산할 수 있다. 클록 관리 모듈(102)은 클록(153)에 관한 상한값(162)을 계산하기 위해 이전에 설명된 수식을 구현할 수 있다. 그러므로, 회신(182)이 수신되고, 클록(103)이 관찰되어 8:00:00.064으로 읽혀질 때, 상한값(162)은 다음과 같이 계산될 수 있다:
Figure pct00010
대안적으로 또는 조합하여, 클록 관리 모듈(102)은 또한 추가 메시지 교환(185)에서의 그외 다른 요청 및 그외 다른 회신에 관련된 시간 입력으로부터 상한값(162)을 계산할 수 있다.
방법(200)은 상한값과 하한값 사이의 차이를 계산하는 동작을 포함한다(동작(209)). 예를 들어, 클록 관리 모듈(102)은 상한값(162)과 하한값(161) 사이의 차이를 계산할 수 있다. 회신(182)이 수신되는 시간에, 양자화(192)를 고려하면, 상한값(162)과 하한값(161) 사이의 차이는 대략 123 ms - 27 ms, 또는 96 ms와 같다.
방법(200)은 계산된 차이를 평균 계수로 나눔으로써, 관찰하는 컴퓨터 시스템이 관찰된 컴퓨터 시스템에서의 시간이라고 하는 것과 관찰된 컴퓨터 시스템에서의 실제 시간 차이의 최대 편차를 계산하는 동작을 포함한다(동작(210)). 예를 들어, 클록 관리 모듈(102)은 96 ms를 2로 나누어 48 ms를 계산할 수 있다. 클록(103과 153) 사이의 오프셋의 중간점은 ((8:00:00.027 + 8:00:00.123)/2) - 8:00:00.064인데, 이것은 클록(153)이 클록(103)보다 대략 12 ms 앞서 있다는 것을 나타낸다.
앞에서 설명된 바와 같이, 대안적으로 또는 메시지 교환(184)과 조합하여, 컴퓨터 시스템(101)은 컴퓨터 시스템(151)과의 추가 메시지 교환(185)에 참여할 수 있다. 그러므로, 추론된 시간 범위에 대한 하한값 및/또는 상한값은 이들 추가 메시지 교환에 기초하여 구체화될 수 있다. 그러므로, 하한값(161)은 임의의 후속 송신 시간 - 관찰된 시간이 -43 ms보다 크거나 작을 때에 구체화될 수 있다. 예를 들어, 송신 시간이 8:01:27.53이고, 관찰된 시간이 8:01:27.69인 경우에, 하한값(161)은 -(16 ms + 20 ms + 클록 드리프트 성분)으로 구체화될 수 있다. 이와 유사하게, 상한값(162)은 임의의 후속 수신 시간 - 관찰된 시간이 21 ms보다 아주 작을 때 구체화될 수 있다. 예를 들어, 수신 시간이 8:03:52.07이고, 관찰된 시간이 8:03:51.92인 경우에, 상한값(162)은 (15 ms + 20 ms + 클록 드리프트 성분)으로 구체화될 수 있다.
하한값과 상한값은 관찰하는 컴퓨터 시스템 클록이 관찰된 클록에 뒤처지는 약간의 시간 양을 나타낼 수 있다. 예를 들어, 하한값은 -47 ms일 수 있고, 상한값은 -12 ms일 수 있다. 이러한 하한값과 상한값의 조합은 컴퓨터 시스템 클록이 관찰된 클록에 최소한 12 ms만큼 지연되고, 관찰된 클록에 최대한 47 ms만큼 지연되는 것을 나타낼 수 있다.
이와 유사하게, 하한값과 상한값은 관찰하는 컴퓨터 시스템 클록이 관찰된 클록보다 앞서 있는 약간의 시간 양을 나타낼 수 있다. 예를 들어, 하한값은 17 ms일 수 있고, 상한값은 82 ms일 수 있다. 이러한 하한값과 상한값의 조합은 컴퓨터 시스템 클록이 관찰된 클록보다 최소한 17 ms만큼 앞서 있고, 관찰된 클록보다 최대한 82 ms만큼 앞서 있다는 것을 나타낼 수 있다.
몇몇 실시예에서, 클록 관리 모듈은 요청/회신 메시지 교환 또는 그외 다른 메시지 교환을 최소한 미리 정의된 간격으로, 이를테면, 예를 들어 매 분마다, 2분마다 등등으로 시작하도록 구성된다. 메시지 교환은 비동기 분산 시스템 내의 컴퓨터 시스템들 사이에서 교환된 그외 다른(예를 들어, 애플리케이션) 메시지에 편승될 수 있다. 클록 동기화를 위한 요청/회신 또는 그외 다른 메시지 교환은 또한 예를 들어, 드리프트 한도의 교차와 같은 그외 다른 정책에 따라 시작될 수 있다.
관찰된 컴퓨터 시스템에서의 시간의 추론에 계속하여, 관찰하는 컴퓨터 시스템은 관찰된 컴퓨터 시스템에서 이벤트가 발생했을 때 또는 발생할 것 같을 때(또는 발생하게 될 때)로부터의 시간 경계값을 계산하기 위해 추론 시간을 사용할 수 있다.
따라서, 본 발명의 실시예는 2개의 컴퓨터 시스템 사이의 시간에 대한 일반적인 이해, 또는 그러한 시간 경과의 안전한 뷰를 용이하게 한다. 예를 들어, 최대 편차 또는 시간 범위로부터, 관찰하는 컴퓨터 시스템은 관찰된 컴퓨터 시스템에서의 시간 경과의 안전한 뷰를 만들 수 있다. 안전한 뷰로부터, 관찰하는 컴퓨터 시스템은 관찰된 컴퓨터 시스템에서 지난 이벤트가 발생했을 때를 (계산된 범위 내에서) 추정할 수 있다. 예를 들어, 컴퓨터 시스템(101)은 이벤트(196)가 컴퓨터 시스템(151)에서 발생했을 때를 추정할 수 있다. 또한, 안전한 뷰로부터, 2개의 컴퓨터 시스템은 향후에 이벤트가 발생하게 될 때에 대해 동의에 이르게 될 수 있다. 결과적으로, 한 컴퓨터 시스템은 그외 다른 시스템에서 이벤트가 발생할 때를 (계산된 범위 내에서) 추정할 수 있다.
도 3은 관찰된 컴퓨터 시스템에서 이벤트가 발생한 시간을 나타내는 예시적인 방법의 순서도이다.
방법(300)은 관찰된 컴퓨터 시스템과의 하나 이상의 메시지 교환에 참여하는 동작을 포함한다(동작(301)). 각각의 메시지 교환은 요청 메시지가 송신될 때 관찰하는 컴퓨터 시스템에서의 클록의 시간을 기록하는 동작을 포함한다(동작(302)). 각각의 메시지 교환은 하나 이상의 요청 메시지를 관찰된 컴퓨터 시스템에 송신하는 동작을 포함하는데, 각각의 요청 메시지는 대응하는 기록된 송신 시간을 포함한다(동작(303)). 각각의 메시지 교환은 관찰된 컴퓨터 시스템으로부터 요청 메시지에 응답하는 하나 이상의 회신 메시지를 차후에 수신하는 동작을 포함하는데, 회신 메시지는 관찰된 컴퓨터 시스템으로부터의 시간을 포함한다(동작(304)). 각각의 메시지 교환은 회신 메시지가 수신될 때 관찰하는 컴퓨터 시스템에서의 클록의 시간을 기록하는 동작을 포함한다(동작(305)).
예를 들어, 컴퓨터 시스템(101)은 메시지 교환(184) 및 추가 메시지 교환(185)에 참여할 수 있다. 각각의 메시지 교환은 하나 이상의 요청의 송신(예를 들어, 181), 각 요청이 송신된 시간의 기록(예를 들어, 171), 하나 이상의 회신의 수신(예를 들어, 182), 각 회신이 수신된 시간의 기록(예를 들어, 172), 및 관찰자 컴퓨터 시스템으로부터의 회신에 포함된 시간(예를 들어, 183)의 기록(예를 들어, 173)을 포함할 수 있다.
방법(300)은 하나 이상의 메시지 교환에 기초하여 관찰하는 컴퓨터 시스템의 시간에 관한 관찰된 컴퓨터 시스템의 시간 경계값을 계산하는 단계를 포함하는데, 시간 경계값은 하나 이상의 메시지 교환 다음에, 관찰된 컴퓨터 시스템에서의 지정된 시간 범위로 하기 위해, 관찰하는 컴퓨터 시스템에서의 시간에 적용되도록 구성된다(동작(306)). 시간 경계값은 계산된 시간 경계값의 아래쪽을 나타내는 시간 하한값 및 계산된 시간 경계값의 위쪽을 나타내는 시간 상한값을 포함한다. 예를 들어, 컴퓨터 시스템(101)은 하한값(161) 및 상한값(162)을 계산하고 구체화할 수 있다.
방법(300)은 관찰하는 컴퓨터 시스템이 표시를 수신하는 동작을 포함하는데, 표시는 a) 관찰된 컴퓨터 시스템에서의 지난 이벤트 발생의 표시 및 b) 하나 이상의 메시지 교환 다음에 관찰된 컴퓨터 시스템에서 이벤트가 발생하게 될 때의 표시 중에서 선택된다(동작(307)). 예를 들어, 컴퓨터 시스템(101)은 이벤트(196)를 검출할 수 있다. 이벤트(196)를 수신하면, 클록 관리 모듈은 시간 데이터(194) 내에 시간 입력(174)을 기록할 수 있다. 시간 입력(194)은 이벤트(196)가 8:00:28.016에 검출되었음을 나타낸다. 대안적으로, 컴퓨터 시스템(101)은 이벤트가 컴퓨터 시스템(151)에서 발생하게 될 때의 표시를 수신하고, 이벤트가 발생하게 될 때에 대한 시간 입력을 기록할 수 있다.
방법(300)은 관찰하는 컴퓨터 시스템이 관찰된 컴퓨터 시스템에 대한 시간 범위를 계산하는 동작을 포함하는데, 시간 범위는 a) 지난 이벤트가 발생했을 때 또는 b) 관찰된 컴퓨터 시스템에서 이벤트가 발생하게 될 때를 나타내고, 시간 범위는 표시가 수신되었을 때의 관찰하는 컴퓨터 시스템에서의 시간에 기초하고, 계산된 시간 경계값의 하한값과 상한값에 기초하여 계산된다(동작(308)). 예를 들어, 시간 입력(174)으로부터, 클록 관리 모듈(102)은 이벤트(196)가 컴퓨터 시스템(151)에서 발생했을 때를 나타내는 시간 범위를 계산할 수 있다. 이와 같이, 새로운 하한값은 다음과 같이 계산될 수 있다:
Figure pct00011
그리고, 새로운 상한값은 다음과 같이 계산될 수 있다:
Figure pct00012
그러므로, 이벤트(196)가 검출될 때에, 양자화(192)를 고려하면, 상이한 상합값(162) 및 하한값(161)은 대략 161ms-(-11ms), 또는 172 ms와 같다. 클록 관리 모듈(102)은 172 ms를 2로 나누어, 최대 편차로서 86 ms를 계산할 수 있다. 이 새로운 편차는 이벤트(196)가 컴퓨터 시스템(151)에서 발생한 (최대 편차 내의) 추론 시간인 시간(186)을 계산하기 위해 사용될 수 있다. 클록(103과 153) 사이의 오프셋의 중간점은 다음과 같다:
((8:00:27.970 + 8:00:28.102)/2) - 8:00:28.016
8:00:28.066 - 8:00:28.016 = 50 ms, 이것은 클록(153)이 클록(103)보다 50 ms 앞서 있음을 나타낸다.
대안적으로, 하한값 및 상한값은 이벤트가 발생하게 될 때에 대해 계산될 수 있다.
방법(300)은 표시 및 계산된 시간 범위를 포함하는 이벤트 메시지를 하나 이상의 다른 컴퓨터 시스템에 송신하는 동작을 포함한다(동작(309)). 예를 들어, 컴퓨터 시스템(100)은 이벤트(196)(또는 이벤트(196)가 발생하게 될 때의 표시) 및 시간(186)을 포함하는 이벤트 메시지(197)를 그외 다른 컴퓨터 시스템(191)에 송신할 수 있다. 이벤트 메시지(197)를 수신하는 컴퓨터 시스템은 이벤트 메시지(197)에 기초하여 컴퓨터 시스템(151)의 상태에 관련된 결정을 할 수 있다. 예를 들어, 컴퓨터 시스템은 컴퓨터 시스템(151)이 8:00:15.13에 온라인 상태였다는 표시를 컴퓨터 시스템(151)으로부터 수신할 수 있다. 컴퓨터 시스템은 컴퓨터 시스템(151)이 오프라인임을 나타내는 이벤트 메시지(197)를 차후에 수신할 수 있다. 8:00:28.016 ± 86ms가 8:00:15.13 후이기 때문에, 컴퓨터 시스템은 컴퓨터 시스템(151)에 대한 자신의 상태를 조정할 수 있다.
최대 편차가 이전에 수신된 시간과의 겹침을 야기하여, 어느 이벤트가 더 일찍 발생했는지에 관해 잠재적으로 충돌을 초래할 수 있다. 예를 들어, 시간(184)이 8:00:15.47 ± 90.22ms인 경우에, 편차는 이벤트(196)가 실제로 8:00:15.13 이전에 발생했을 어떤 가능성이 있을 수 있게 한다. 이러한 경우에, 이벤트 메시지를 수신하는 컴퓨터 시스템은 충돌을 해결하기 위해 미리 정의된 규칙(예를 들어, 서비스 수준 계약)을 참조할 수 있다.
시간이 흐름에 따라, 컴퓨터 시스템은 요청/회신(또는 그외 다른 메시지) 교환이 완료하는데 걸리는 평균 시간을 계산할 수 있다. 이 평균 및 미리 정의된 간격을 사용하여, 컴퓨터 시스템은 시간 차이에 대한 최악의 경우의 오류 범위를 예상할 수 있다. 예를 들어, 도 1을 참조하면, 요청/회신 메시지 교환을 완료하기 위한 평균 시간이 40 ms이고, 미리 정의된 간격이 30초인 경우에, 최악의 경우의 오류 범위는 ±[(40ms/2) + 20ms + 2*((.5min/24)*60min)*(60sec.)] = 81.5ms로 계산될 수 있다.
클록 퀀텀 제약조건, 드리프트 비율 제약조건 및 최대 왕복 제약조건에 대한 (최소한 예상된) 값은 이를테면, 예를 들어 평균으로부터 또는 심지어 하드웨어 사양으로부터, 시스템에 알려져 있다고 할 수 있다. 최대 오차 수식은 관찰하는 컴퓨터 시스템이 관찰된 컴퓨터 시스템에서의 시간이라고 하는 것과 관찰된 컴퓨터에서의 실제 시간이라는 것에 있어서의 (비동기 분산 시스템 내의 컴퓨터 시스템들 사이의) 최대 편차를 계산하기 위해 사용될 수 있다.
도 5는 다수의 컴퓨터 시스템을 포함하는 비동기 분산 시스템의 상이한 컴퓨터 시스템에서의 클록들 사이의 최대 편차의 계산을 용이하게 하는 예시적인 컴퓨터 아키텍처(500)를 도시한 것이다. 도 4는 다수의 컴퓨터 시스템을 포함하는 비동기 분산 시스템의 상이한 컴퓨터 시스템에서의 클록들 사이의 최대 편차를 계산하는 예시적인 방법(400)의 순서도이다. 방법(400)은 컴퓨터 아키텍처(500) 내의 구성요소 및 데이터와 관련하여 설명될 것이다.
방법(400)은 비동기 분산 시스템의 컴퓨터 시스템들 사이에서의 클록 양자화들 사이의 최대 차이를 나타내는 클록 퀀텀 제약 조건을 액세스하는 동작을 포함한다(동작(401)). 예를 들어, 컴퓨터 시스템(501)은 예를 들어, Q=15 ms인 하드웨어 사양과 같은 클록 퀀텀 제약조건(511)을 액세스할 수 있다.
방법(400)은 비동기 분산 시스템의 각 컴퓨터 시스템에 대한 지정된 기간 내의 최대 클록 드리프트를 나타내는 드리프트 비율 제약조건을 액세스하는 동작을 포함한다(동작(402)). 관찰자는 지정된 피관찰자의 최악의 클록 드리프트를 알아볼 수 있고 또는 그러한 드리프트를 위해 구성될 수 있다. 대안적으로, 관찰자는 임의의 피관찰자에 대한 최악의 경우의 드리프트를 추정하도록 구성될 수 있다. 예를 들어, 컴퓨터 시스템(501)은 예를 들어, D < 하루에 1분의 드리프트와 같은 클록 드리프트 비율 제약조건(512)을 액세스할 수 있다. 그러므로, 클록 드리프트 비율 제약조건(512)은 특정 피관찰자 또는 임의의 피관찰자에게 적용할 수 있다.
방법(400)은 비동기 분산 시스템의 임의의 2개의 컴퓨터 시스템 사이에서 발생하는 요청/회신 메시지 교환을 위한 최대 시간 양을 나타내는 최대 왕복 제약조건을 액세스하는 동작을 포함한다(동작(403)). 예를 들어, 컴퓨터 시스템(501)은 최대 왕복 제약조건(513)을 액세스할 수 있다. 왕복 제약조건(513)은 예를 들어, 1분에 한번 컴퓨터 시스템(151)에 문의하는 컴퓨터 시스템(101) 및 50 ms 미만인 왕복 시간으로부터 얻어질 수 있다.
방법(400)은 클록 퀀텀 제약조건, 드리프트 비율 제약조건 및 최대 왕복 제약조건에 기초하여 비동기 시스템의 상이한 컴퓨터 시스템에서의 클록들 사이의 최대 편차를 계산하는 동작을 포함한다. 예를 들어, 컴퓨터 시스템(501)은 클록 퀀텀 제약조건(511), 클록 드리프트 비율 제약조건(512) 및 왕복 제약조건(513)에 기초하여 최대 클록 편차(514)를 계산할 수 있다.
최대 클록 편차는 관찰하는 컴퓨터 시스템이 계산된 범위 내에서 언제든지 관찰된 컴퓨터 시스템에서의 시간을 용이하게 알 수 있게 한다. 몇몇 실시예에서, 다음과 같은 최대 편차 수식이 사용될 수 있다:
((수신 시간 - 송신 시간)/2) + Q + (2D*(T-AVG(송신 시간, 수신 시간) +
Q))
또는, 미리 결정되거나 지정된 값의 경우:
(R/2) + Q + (2*D*미리 정의된 요청/회신 메시지 교환 간격)
그러므로, 방법(400)과 관련하여 설명된 제약조건에 따라, 최대 편차는 관찰하는 컴퓨터 시스템이 (50ms/2) + 15ms + (2*(1min/24*60min)*(60sec)), 즉 25ms + 15ms + 83 ms = 123ms 내에서 언제든지 관찰된 컴퓨터 시스템에서의 시간을 용이하게 알 수 있게 한다. 더욱이, 메시지 교환 시퀀스 쿼리 직후에, 최대 오차에 미치는 클록 드리프트 비율 제약조건 D 성분의 영향은 0에 가깝다. 즉, (2*(~0/24*60min)*(60sec)) = 0이다. 그러므로, 메시지 교환 시퀀스 쿼리 직후에, 관찰하는 컴퓨터 시스템은 대략 25ms + 15ms + 0ms = 40ms 내에 관찰된 컴퓨터 시스템에서의 시간을 알 수 있다.
그러므로, 본 발명의 실시예는 예를 들어, 공용 비동기 (분산) 시스템 내의 구성원과 같은 피어 노드(관찰자) 집합의 전체에 걸쳐 신뢰할 수 있고 실제적인 공용 시간(time of day) 참조의 작성을 용이하게 한다. 의사 동기 시스템의 클래스는 공용 마스터에 관계없이, 노드(관찰자) 쌍 사이의 최악의 경우의 상대론적 시간 왜곡을 추적하고 누적함으로써 만들어질 수 있다. 직접 및 간접 인과 관계는 노드 쌍들 사이의 순서화된 상호작용에 기초하여 형성될 수 있다. 이와 같이, 노드들의 협동은 다른 노드 상에서의 관찰 값이 제공되면, 한 노드가 관찰할 시간에 관한 하한값을 기본적으로 보증할 수 있다. 따라서, 본 발명의 실시예는 일반적인 외부 시간 클록 엔티티가 사용되지 않고, 이러한 비동기 시스템의 전체에 걸쳐 최악의 경우(즉, 최대 편차)의 현재 시간의 일관성 있는(기본적으로 안전한) 뷰를 제공하는데 적용될 수 있다.
본 발명은 본 발명의 정신 또는 필수 특성을 벗어나지 않고서 그외 다른 특정 형태로 실시될 수 있다. 설명된 실시예는 모든 면에서 단지 예시적인 것일 뿐이고 비제한적인 것으로 생각되어야 한다. 그러므로, 본 발명의 범위는 상기 설명보다는 첨부된 청구범위에 의해 나타내진다. 청구범위와 등가의 의미 및 범위에 속하는 모든 변경은 청구 범위 내에 포함될 수 있다.

Claims (15)

  1. 다수의 컴퓨터 시스템(101, 151, 191)을 포함하는 비동기 분산 시스템(100) 내의 관찰하는 컴퓨터 시스템(101)에서 - 상기 관찰하는 컴퓨터 시스템(101)은 프로세서 및 시스템 메모리를 포함하고, 상기 비동기 분산 시스템(100)은 클록 퀀텀 제약조건(clock quantum constraint)(192) 및 드리프트 비율(drift rate) 제약 조건(193)을 가지며, 상기 클록 퀀텀 제약조건(192)은 상기 비동기 분산 시스템(100)의 컴퓨터 시스템들(101, 151, 191) 사이에서의 클록 양자화들 사이의 최대 차이를 나타내고, 상기 드리프트 비율 제약조건(193)은 상기 비동기 분산 시스템(100)의 각 컴퓨터 시스템에 대한 지정된 기간 내의 최대 클록 드리프트를 나타냄 - , 상기 관찰하는 컴퓨터 시스템(100)이 관찰된 컴퓨터 시스템(151)에서의 시간이라고 하는 것과 상기 관찰된 컴퓨터 시스템(151)에서의 실제 시간 사이의 편차(variance)를 결정하는 방법에 있어서,
    상기 관찰된 컴퓨터 시스템(151)과의 하나 이상의 메시지 교환(184, 185)에 참여하는 동작 - 상기 메시지 교환들은,
    메시지(181)가 송신될 때 상기 관찰하는 컴퓨터 시스템(101)에서의
    클록(103)의 송신 시간(171)을 기록하는 동작;
    상기 기록된 송신 시간(171)을 포함하는 메시지(181)를 상기 관찰된
    컴퓨터 시스템(151)에 송신하는 동작;
    상기 관찰된 컴퓨터 시스템(151)으로부터 상기 메시지(181)에
    응답하는 상관성 메시지(182)를 차후에 수신하는 동작 - 상기 상관성
    메시지(182)는 상기 관찰된 컴퓨터 시스템(151)으로부터의 시간(183)을
    포함함-;
    상기 상관성 메시지(182)가 수신될 때 상기 관찰하는 컴퓨터
    시스템(101)에서의 상기 클록(103)의 수신된 시간(172)을 기록하는 동작; 및
    상기 관찰된 컴퓨터 시스템(151)으로부터의 시간(173)을 기록하는
    동작을 포함함 - ;
    상기 메시지를 송신하기 위해 기록된 시간(181)과 상기 상관성 메시지에 포함된 상기 관찰된 컴퓨터 시스템으로부터의 시간(183) 사이의 차이, 상기 클록 퀀텀 제약조건(192) 및 상기 클록 드리프트 비율 제약조건(193)에 기초하여, 상기 관찰하는 컴퓨터 시스템의 시간에 관한 상기 관찰된 컴퓨터 시스템에서의 시간에 대해 하한값(161)을 계산하는 동작;
    상기 상관성 메시지를 수신하기 위해 기록된 시간(182)과 상기 상관성 메시지에 포함된 상기 관찰된 컴퓨터 시스템으로부터의 시간(183) 사이의 차이, 상기 클록 퀀텀 제약조건(192) 및 상기 클록 드리프트 비율 제약조건(193)에 기초하여, 상기 관찰하는 컴퓨터 시스템의 시간에 관한 상기 관찰된 컴퓨터 시스템에서의 시간에 대해 상한값(162)을 계산하는 동작;
    상기 상한값(162)과 상기 하한값(161) 사이의 차이를 계산하는 동작; 및
    상기 계산된 차이를 평균 계수로 나눔으로써, 상기 관찰하는 컴퓨터 시스템이 상기 관찰된 컴퓨터 시스템에서의 시간이라고 하는 것과 상기 관찰된 컴퓨터 시스템에서의 실제 시간 사이의 최대 편차를 상기 프로세서가 계산하는 동작
    을 포함하는 시간 편차 결정 방법.
  2. 제1항에 있어서, 상기 관찰하는 컴퓨터 시스템이 상기 관찰된 컴퓨터 시스템에서의 시간 경과의 안전한 뷰를 만들기 위해 상기 계산된 최대 편차를 사용하는 동작을 더 포함하는 시간 편차 결정 방법.
  3. 제1항에 있어서, 상기 관찰하는 컴퓨터 시스템과 상기 관찰된 컴퓨터 시스템이 이벤트가 발생하는 때에 대해 동의하는 동작을 더 포함하는 시간 편차 결정 방법.
  4. 제3항에 있어서, 상기 관찰하는 컴퓨터 시스템과 상기 관찰된 컴퓨터 시스템이 이벤트가 발생하는 때에 대해 동의하는 동작은 상기 관찰하는 컴퓨터 시스템이 상기 관찰된 컴퓨터 시스템에서의 지난 이벤트의 발생을 검출하는 동작을 포함하는 시간 편차 결정 방법.
  5. 제3항에 있어서, 상기 관찰하는 컴퓨터 시스템과 상기 관찰된 컴퓨터 시스템이 이벤트가 발생하는 때에 대해 동의하는 동작은 상기 관찰하는 컴퓨터 시스템과 상기 관찰된 컴퓨터 시스템이 향후에 이벤트가 발생하게 될 때에 대해 동의하는 동작을 포함하는 시간 편차 결정 방법.
  6. 제1항에 있어서,
    상기 관찰하는 컴퓨터 시스템이 상기 관찰된 컴퓨터 시스템과의 하나 이상의 추가 메시지 교환에 참여하는 동작; 및
    상기 관찰하는 컴퓨터 시스템이 상기 하나 이상의 추가 메시지 교환에 대응하는 기록된 시간들에 기초하여 상기 하한값과 상기 상한값 중의 하나 이상을 구체화하는 동작
    을 더 포함하는 시간 편차 결정 방법.
  7. 프로세서 및 시스템 메모리를 포함하는 관찰하는 컴퓨터 시스템(101)에서, 관찰된 컴퓨터 시스템(151)에서 이벤트가 발생한 시간을 나타내는 방법에 있어서,
    상기 관찰된 컴퓨터 시스템(151)과의 하나 이상의 메시지 교환(184, 185)에 참여하는 동작 - 각각의 메시지 교환은,
    요청 메시지(181)가 송신될 때 상기 관찰하는 컴퓨터
    시스템(101)에서의 클록(103)의 시간(171)을 기록하는 동작;
    하나 이상의 요청 메시지(181)를 상기 관찰된 컴퓨터 시스템(151)에
    송신하는 동작 - 각각의 요청 메시지는 대응하는 기록된 송신 시간을
    포함함-;
    상기 관찰된 컴퓨터 시스템(151)으로부터 상기 하나 이상의 요청
    메시지(181)에 응답하는 하나 이상의 회신 메시지(182)를 차후에 수신하는
    동작 - 각각의 회신 메시지는 상기 관찰된 컴퓨터 시스템으로부터의
    시간(183)을 포함함- ; 및
    회신 메시지(182)가 수신될 때 상기 관찰하는 컴퓨터 시스템(101)에서
    상기 클록(103)의 시간(172)을 기록하는 동작을 포함함 - ;
    상기 하나 이상의 메시지 교환(184, 185)에 기초하여 상기 관찰하는 컴퓨터 시스템(101)의 시간에 관한 상기 관찰된 컴퓨터 시스템(151)의 시간 경계 값(161, 162)을 계산하는 동작 - 상기 시간 경계 값(161, 162)은 상기 하나 이상의 메시지 교환(184, 185) 다음에, 상기 관찰된 컴퓨터 시스템(151)에서의 지정된 시간 범위로 하기 위해 상기 관찰하는 컴퓨터 시스템(101)에서의 시간에 적용되도록 구성되고, 상기 시간 경계값은,
    상기 계산된 시간 경계값의 아래쪽을 나타내는 시간 하한값(161), 및
    상기 계산된 시간 경계값의 위쪽을 나타내는 시간 상한값(162)을 포함 함 - ;
    상기 프로세서가 표시를 수신하는 동작 - 상기 표시는 a) 상기 관찰된 컴퓨터 시스템(151)에서의 지난 이벤트의 발생의 표시 및 b) 상기 하나 이상의 메시지 교환(184, 185) 다음에 상기 관찰된 컴퓨터 시스템(151)에서 이벤트가 발생하게 될 때의 표시 중에서 선택됨;
    상기 프로세서가 상기 관찰된 컴퓨터 시스템(151)에 대한 시간 범위를 계산하는 동작 - 상기 시간 범위는 a) 상기 이벤트가 발생했을 때 또는 b) 상기 관찰된 컴퓨터 시스템(151)에서 상기 이벤트가 발생하게 될 때를 나타내고, 상기 시간 범위는 상기 표시가 수신되었을 때의 상기 관찰하는 컴퓨터 시스템(101)에서의 시간에 기초하고, 상기 계산된 시간 경계 값의 하한값(161)과 상한값(162)에 기초하여 계산됨-; 및
    상기 표시 및 상기 계산된 시간 범위(186)를 포함하는 이벤트 메시지(197)를 하나 이상의 다른 컴퓨터 시스템(191)에 송신하는 동작
    을 포함하는 이벤트 발생 시간 표시 방법.
  8. 제7항에 있어서, 상기 하나 이상의 메시지에 기초하여 상기 관찰하는 컴퓨터 시스템의 시간에 관한 상기 관찰된 컴퓨터 시스템의 시간 경계 값을 계산하는 동작은 상기 하나 이상의 메시지 교환 중의 임의의 메시지 교환에 있어서, 요청 메시지를 송신하기 위해 기록된 시간과 대응하는 회신 메시지에 포함된 상기 관찰된 컴퓨터 시스템으로부터의 시간 사이의 최소 차이에 적어도 부분적으로 기초한 값으로 상기 하한값을 설정하는 동작을 포함하는 이벤트 발생 시간 표시 방법.
  9. 제8항에 있어서, 상기 하한값을 설정하는 동작은 상기 관찰하는 컴퓨터 시스템에서의 클록의 양자화와 상기 관찰된 컴퓨터 시스템에서의 클록의 양자화 사이의 차이의 표시에 적어도 부분적으로 기초한 값으로 상기 하한값을 설정하는 동작을 포함하는 이벤트 발생 시간 표시 방법.
  10. 제8항에 있어서, 상기 하한값을 설정하는 동작은 상기 관찰하는 컴퓨터 시스템에서의 클록의 클록 드리프트와 상기 관찰된 컴퓨터 시스템에서의 클록의 클록 드리프트에 적어도 부분적으로 기초한 값으로 상기 하한값을 설정하는 동작을 포함하는 이벤트 발생 시간 표시 방법.
  11. 제7항에 있어서, 상기 하나 이상의 요청/회신 메시지에 기초하여 상기 관찰하는 컴퓨터 시스템의 시간에 관한 상기 관찰된 컴퓨터 시스템의 시간 경계값을 계산하는 동작은 상기 하나 이상의 요청/회신 메시지 교환 중의 임의의 메시지 교환에 있어서, 회신 메시지를 수신하기 위해 기록된 시간과 상기 회신 메시지에 포함된 상기 관찰된 컴퓨터 시스템으로부터의 시간 사이의 최소 차이에 적어도 부분적으로 기초한 값으로 상기 상한값을 설정하는 동작을 포함하는 이벤트 발생 시간 표시 방법.
  12. 제11항에 있어서, 상기 상한값을 설정하는 동작은 상기 관찰하는 컴퓨터 시스템에서의 클록의 양자화와 상기 관찰된 컴퓨터 시스템에서의 클록의 양자화 사이의 차이의 표시에 적어도 부분적으로 기초한 값으로 상기 상한값을 설정하는 동작을 포함하는 이벤트 발생 시간 표시 방법.
  13. 제11항에 있어서, 상기 상한값을 설정하는 동작은 상기 관찰하는 컴퓨터 시스템에서의 클록의 클록 드리프트와 상기 관찰된 컴퓨터 시스템에서의 클록의 클록 드리프트에 적어도 부분적으로 기초한 값으로 상기 상한값을 설정하는 동작을 포함하는 이벤트 발생 시간 표시 방법.
  14. 제7항에 있어서, 상기 비동기 분산 시스템은 피어 투 피어 시스템인 이벤트 발생 시간 표시 방법.
  15. 프로세서 및 시스템 메모리를 포함하는 컴퓨터 시스템(501)에서, 다수의 컴퓨터 시스템을 포함하는 비동기 분산 시스템의 상이한 컴퓨터 시스템들에서의 클록들 사이의 최대 편차(514)를 계산하는 방법에 있어서,
    상기 비동기 분산 시스템의 컴퓨터 시스템들 사이에서의 클록 양자화들 사이의 최대 차이를 나타내는 클록 퀀텀 제약조건(511)을 액세스하는 동작;
    상기 비동기 분산 시스템의 각 컴퓨터 시스템에 대한 지정된 기간 내의 최대 클록 드리프트를 나타내는 드리프트 비율 제약조건(512)을 액세스하는 동작;
    상기 비동기 분산 시스템의 임의의 2개의 컴퓨터 시스템 사이에서 발생하는 요청/회신 메시지 교환을 위한 최대 시간 양을 나타내는 최대 왕복 제약조건(513)을 액세스하는 동작; 및
    상기 클록 퀀텀 제약조건, 상기 드리프트 비율 제약조건 및 상기 최대 왕복 제약조건에 기초하여 상기 비동기 시스템의 상이한 컴퓨터 시스템들에서의 클록들 사이의 최대 편차(514)를 상기 프로세서가 계산하는 동작
    을 포함하는 클록간 최대 편차 계산 방법.
KR1020107021213A 2008-03-27 2009-03-27 비동기 분산 시스템에서의 클록의 동기화 KR101566570B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US4011808P 2008-03-27 2008-03-27
US60/040,118 2008-03-27
US12/410,677 2009-03-25
US12/410,677 US8073976B2 (en) 2008-03-27 2009-03-25 Synchronizing clocks in an asynchronous distributed system

Publications (2)

Publication Number Publication Date
KR20100127790A true KR20100127790A (ko) 2010-12-06
KR101566570B1 KR101566570B1 (ko) 2015-11-05

Family

ID=41114796

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107021213A KR101566570B1 (ko) 2008-03-27 2009-03-27 비동기 분산 시스템에서의 클록의 동기화

Country Status (9)

Country Link
US (1) US8073976B2 (ko)
EP (1) EP2255264B1 (ko)
JP (1) JP5161363B2 (ko)
KR (1) KR101566570B1 (ko)
CN (1) CN101981527B (ko)
AU (1) AU2009228059B2 (ko)
CA (1) CA2716494A1 (ko)
RU (1) RU2485570C2 (ko)
WO (1) WO2009121005A2 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8516293B2 (en) * 2009-11-05 2013-08-20 Novell, Inc. System and method for implementing a cloud computer
US8412663B2 (en) * 2010-06-03 2013-04-02 Drumright Group, Llc. System and method for temporal correlation of observables based on timing ranges associated with observations
WO2012150750A1 (ko) * 2011-05-01 2012-11-08 엘지전자 주식회사 무선통신 시스템에서 동기화 신호를 전송하는 방법 및 장치
EP2544387B1 (en) * 2011-07-04 2016-03-16 Mitsubishi Electric R&D Centre Europe B.V. Methods and devices for performing synchronization and compensating clock drift among communication devices
US9516615B2 (en) 2011-11-18 2016-12-06 Apple Inc. Selection of synchronization stations in a peer-to-peer network environment
US20130132500A1 (en) * 2011-11-18 2013-05-23 Apple Inc. Selection of a master in a peer-to-peer network environment
US10271293B2 (en) 2011-11-18 2019-04-23 Apple Inc. Group formation within a synchronized hierarchy of peer-to-peer devices
US9195516B2 (en) 2011-12-01 2015-11-24 International Business Machines Corporation Determining collective barrier operation skew in a parallel computer
US8924763B2 (en) 2011-12-15 2014-12-30 International Business Machines Corporation Synchronizing compute node time bases in a parallel computer
CN104981742B (zh) * 2013-06-12 2017-09-19 富士电机株式会社 分发装置、分发系统以及分发方法
WO2015062631A1 (en) * 2013-10-29 2015-05-07 Nec Europe Ltd. Method and system for recording a multiuser web session and replaying a multiuser web session
US9754002B2 (en) * 2014-10-07 2017-09-05 Excalibur Ip, Llc Method and system for providing a synchronization service
CN104935630B (zh) * 2015-04-23 2018-03-23 南京信息工程大学 基于http的毫秒级时钟校准方法
US10609137B2 (en) * 2015-08-24 2020-03-31 Microsoft Technology Licensing, Llc Global logical timestamp
US10423191B2 (en) * 2017-01-19 2019-09-24 International Business Machines Corporation Clock comparator sign control
US10514465B2 (en) * 2017-05-16 2019-12-24 General Motors Llc Updating vehicle clock
CN111066003A (zh) * 2017-10-10 2020-04-24 西门子股份公司 对流程行业中的设备进行状态监测的方法、装置及介质
CN115761885B (zh) * 2022-11-16 2023-08-29 之江实验室 一种共时与跨域异步融合驱动的行为识别方法

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE452231B (sv) * 1986-03-07 1987-11-16 Philips Norden Ab Forfarande for synkronisering av klockor ingaende i ett lokalt netverk av busstyp
US5041966A (en) * 1987-10-06 1991-08-20 Nec Corporation Partially distributed method for clock synchronization
JPH03296684A (ja) * 1990-04-16 1991-12-27 Toshiba Corp ネットワークステーションの時刻同期方式
US5311516A (en) * 1992-05-29 1994-05-10 Motorola, Inc. Paging system using message fragmentation to redistribute traffic
JPH0738606B2 (ja) * 1992-10-30 1995-04-26 日本電気株式会社 衛星通信方式
US5689688A (en) * 1993-11-16 1997-11-18 International Business Machines Corporation Probabilistic anonymous clock synchronization method and apparatus for synchronizing a local time scale with a reference time scale
US5566180A (en) * 1994-12-21 1996-10-15 Hewlett-Packard Company Method for recognizing events and synchronizing clocks
US5907685A (en) * 1995-08-04 1999-05-25 Microsoft Corporation System and method for synchronizing clocks in distributed computer nodes
US5790805A (en) * 1996-04-23 1998-08-04 Ncr Corporation Distributed timer synchronization
JP3339786B2 (ja) * 1996-12-02 2002-10-28 オークマ株式会社 環状通信路におけるタイマー同期化装置および初期化方法
US6128318A (en) * 1998-01-23 2000-10-03 Philips Electronics North America Corporation Method for synchronizing a cycle master node to a cycle slave node using synchronization information from an external network or sub-network which is supplied to the cycle slave node
US6199169B1 (en) * 1998-03-31 2001-03-06 Compaq Computer Corporation System and method for synchronizing time across a computer cluster
US6278710B1 (en) 1998-09-10 2001-08-21 Agilent Technologies, Inc. Enhancements to time synchronization in distributed systems
US6654356B1 (en) * 1998-10-29 2003-11-25 Agilent Technologies, Inc. Distributed control system architecture based on synchronized clocks
DE60041470D1 (de) * 1999-05-11 2009-03-19 Canon Kk Verfahren und Vorrichtung zur Synchronisierung zwischen zwei Netzwerken
US6502141B1 (en) * 1999-12-14 2002-12-31 International Business Machines Corporation Method and system for approximate, monotonic time synchronization for a multiple node NUMA system
US6922417B2 (en) * 2000-01-28 2005-07-26 Compuware Corporation Method and system to calculate network latency, and to display the same field of the invention
US6898642B2 (en) * 2000-04-17 2005-05-24 International Business Machines Corporation Synchronous collaboration based on peer-to-peer communication
US7062528B2 (en) * 2000-07-14 2006-06-13 Sony Corporation Method and system for identifying a time specific event
US7272720B2 (en) * 2000-09-27 2007-09-18 Fujitsu Limited Date-and-time management device and signature generation apparatus with date-and-time management function
EP1198085B1 (en) * 2000-10-10 2011-06-08 Sony Deutschland GmbH Cycle synchronization between interconnected sub-networks
US6957357B2 (en) * 2000-10-30 2005-10-18 International Business Machines Corporation Clock synchronization with removal of clock skews through network measurements in derivation of a convext hull
US6801876B2 (en) * 2000-12-08 2004-10-05 Caterpillar Inc Method and apparatus of managing time for a processing system
US20020078243A1 (en) 2000-12-15 2002-06-20 International Business Machines Corporation Method and apparatus for time synchronization in a network data processing system
US7023884B2 (en) * 2000-12-19 2006-04-04 Lucent Technologies Inc. Clock offset estimation with bias correction
US7047435B2 (en) * 2000-12-19 2006-05-16 Siemens Corporate Research, Inc. System and method for clock-synchronization in distributed systems
US7194556B2 (en) * 2001-03-30 2007-03-20 Intel Corporation Method and apparatus for high accuracy distributed time synchronization using processor tick counters
ATE427521T1 (de) 2001-07-26 2009-04-15 Freescale Semiconductor Inc Uhrensynchronisation in einem verteilten system
US7283568B2 (en) * 2001-09-11 2007-10-16 Netiq Corporation Methods, systems and computer program products for synchronizing clocks of nodes on a computer network
DE10147422A1 (de) * 2001-09-26 2003-04-24 Siemens Ag Kommunikationssystem und Verfahren zur Synchronisation eines Kommunikationszyklus
JP2003108539A (ja) * 2001-10-02 2003-04-11 Hitachi Kokusai Electric Inc サーバ及びクライアント間の時刻同期方法
US7020722B2 (en) * 2001-11-09 2006-03-28 Sun Microsystems, Inc. Synchronization of distributed simulation nodes by keeping timestep schedulers in lockstep
US7231338B2 (en) * 2001-11-09 2007-06-12 Sun Microsystems, Inc. Distributed simulation system having phases of a timestep
US7529653B2 (en) * 2001-11-09 2009-05-05 Sun Microsystems, Inc. Message packet logging in a distributed simulation system
US20030152110A1 (en) * 2002-02-08 2003-08-14 Johan Rune Synchronization of remote network nodes
US7111195B2 (en) * 2002-02-25 2006-09-19 General Electric Company Method and system for external clock to obtain multiple synchronized redundant computers
US7072432B2 (en) * 2002-07-05 2006-07-04 Meshnetworks, Inc. System and method for correcting the clock drift and maintaining the synchronization of low quality clocks in wireless networks
US7257133B2 (en) * 2002-09-30 2007-08-14 Lucent Technologies Inc. Method for estimating offset for clocks at network elements
US7085948B2 (en) 2003-04-24 2006-08-01 International Business Machines Corporation Method, apparatus, and computer program product for implementing time synchronization correction in computer systems
US7570669B2 (en) * 2003-08-08 2009-08-04 Opnet Technologies, Inc. Synchronizing packet traces
US7239581B2 (en) * 2004-08-24 2007-07-03 Symantec Operating Corporation Systems and methods for synchronizing the internal clocks of a plurality of processor modules
US7454521B2 (en) * 2003-10-23 2008-11-18 Microsoft Corporation Byzantine fault quantifying clock synchronization
US7356618B2 (en) 2003-12-31 2008-04-08 Intel Corporation Method and system for synchronizing platform clocks in a distributed wireless platform
US7768931B2 (en) 2004-10-07 2010-08-03 Westerngeco L.L.C. Hardware-based network packet timestamps: improved network clock synchronization
US20070058564A1 (en) * 2005-07-26 2007-03-15 University Of Maryland Method and device for managing data flow in a synchronous network
US7805763B2 (en) * 2005-09-29 2010-09-28 Motorola Mobility, Inc. Method for distributing values for networks with mobile nodes
CN1960242B (zh) * 2006-10-17 2011-09-07 中控科技集团有限公司 实现时钟同步的方法、装置、系统及分布式系统
US7787486B2 (en) * 2006-11-13 2010-08-31 Honeywell International Inc. Method and system for achieving low jitter in real-time switched networks
EP1936867B1 (en) * 2006-12-22 2013-02-20 Corvil Limited Delay measurements in network traffic

Also Published As

Publication number Publication date
WO2009121005A3 (en) 2009-12-23
CA2716494A1 (en) 2009-10-01
US20090248900A1 (en) 2009-10-01
WO2009121005A2 (en) 2009-10-01
AU2009228059B2 (en) 2014-01-23
KR101566570B1 (ko) 2015-11-05
US8073976B2 (en) 2011-12-06
AU2009228059A1 (en) 2009-10-01
EP2255264A4 (en) 2014-04-09
JP5161363B2 (ja) 2013-03-13
RU2010139412A (ru) 2012-03-27
CN101981527B (zh) 2012-12-26
CN101981527A (zh) 2011-02-23
RU2485570C2 (ru) 2013-06-20
EP2255264A2 (en) 2010-12-01
EP2255264B1 (en) 2015-07-22
JP2011529208A (ja) 2011-12-01

Similar Documents

Publication Publication Date Title
KR20100127790A (ko) 비동기 분산 시스템에서의 클록의 동기화
EP2169857B1 (en) Terminal device, time adjusting method of terminal device and communication system
US11758029B2 (en) Ensuring properly ordered events in a distributed computing environment
US9736049B2 (en) Method, a computer program product, and a carrier for indicating one-way latency in a data network
EP2378718B1 (en) Method, node and system for controlling version in distributed system
EP1239620A2 (en) Relative time synchronization between three or more systems
US7668207B2 (en) System, method, and article of manufacture for synchronizing time of day clocks on first and second computers
Harrison et al. TICSync: Knowing when things happened
Youn A comparison of clock synchronization in wireless sensor networks
JP6499018B2 (ja) 通信装置、通信システム、推定方法及びプログラム
CN109426911B (zh) 一种设备的软件运行环境质量的评估方法及装置
EP2315480B1 (en) Device and method for delay mean value computation in a trasmission path
JP2009116678A (ja) Webサーバ
Bezet et al. On-line and post-processing timestamp correspondence for free-running clock nodes, using a network clock
McCoy et al. Formalizing a framework for dynamic hybrid strategy models in distributed interactive applications

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right