KR102304699B1 - 통신 네트워크들 내의 에러 검출 - Google Patents
통신 네트워크들 내의 에러 검출 Download PDFInfo
- Publication number
- KR102304699B1 KR102304699B1 KR1020170122582A KR20170122582A KR102304699B1 KR 102304699 B1 KR102304699 B1 KR 102304699B1 KR 1020170122582 A KR1020170122582 A KR 1020170122582A KR 20170122582 A KR20170122582 A KR 20170122582A KR 102304699 B1 KR102304699 B1 KR 102304699B1
- Authority
- KR
- South Korea
- Prior art keywords
- message
- node
- indicator
- communication module
- network
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0852—Delays
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L7/00—Arrangements for synchronising receiver with transmitter
- H04L7/0016—Arrangements for synchronising receiver with transmitter correction of synchronization errors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0823—Errors, e.g. transmission errors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
- H04L43/0811—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking connectivity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
- H04L43/103—Active monitoring, e.g. heartbeat, ping or trace-route with adaptive polling, i.e. dynamically adapting the polling rate
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/12—Network monitoring probes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/16—Threshold monitoring
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/143—Termination or inactivation of sessions, e.g. event-controlled end of session
- H04L67/145—Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/28—Timers or timing mechanisms used in protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W56/00—Synchronisation arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W84/00—Network topologies
- H04W84/18—Self-organising networks, e.g. ad-hoc networks or sensor networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/0635—Clock or time synchronisation in a network
- H04J3/0638—Clock or time synchronisation among nodes; Internode synchronisation
- H04J3/0658—Clock or time synchronisation among packet nodes
- H04J3/0661—Clock or time synchronisation among packet nodes using timestamps
- H04J3/0664—Clock or time synchronisation among packet nodes using timestamps unidirectional timestamps
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/04—Processing captured monitoring data, e.g. for logfile generation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
- H04L43/0817—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/22—Traffic shaping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/28—Flow control; Congestion control in relation to timing considerations
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Computer Security & Cryptography (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
광범위하게 말하면, 본 기술들의 실시예들은 복수의 노드들로 형성되는 네트워크에서 통신 에러들을 식별하고 정정하는 장치 및 방법들을 제공한다. 특히, 장치 및 방법들은 네트워크를 통해 메시지들의 지연된 전파를 야기하는 네트워크 내의 동기화 에러들을 식별한다.
Description
본 기술들은 일반적으로 통신 네트워크들에서 에러들을 검출하는 장치 및 방법들에 관한 것이다.
디바이스들이 다른 처리 디바이스들 및 클라우드 서비스들과 상호작용하는 것을 허용하는 처리 및 통신 능력들을 갖는, 집, 사무실 빌딩들 또는 실외 환경 내에서 계속 증가하는 수들의 그러한 디바이스들이 있다. 일상 용품들 및 비교적 소규모 처리 디바이스들은 서로 연결되고 "사물 인터넷"(Internet of Things)(IoT)의 일부로서 중앙 플랫폼들에 연결될 수 있다. 예를 들어, 집 내의 난방 시스템은 다양한 온도 센서들로부터 정보를 수집하고 수집된 정보에 기초하여 난방기들의 활성화를 제어할 수 있고; 공장 오염 감시 센서는 다양한 화학 센서들로부터 정보를 수집하고 수집된 정보에 기초하여 유지관리를 처리할 수 있는 한편; 헬스케어 제공자는 환자들이 집에 있는 동안 환자들의 건강을 추적하기 위해 심박수 모니터와 같은 무선 센서들을 사용할 수 있다. 상기 설명된 경우들에서, 데이터는 머신 투 머신(machine-to-machine)(M2M) 통신 기술들을 사용하여, 인터넷 상의 클라우드 서비스에 일반적으로 전송된다.
IoT에서, 또는 전형적인 M2M 통신 네트워크에서, 디바이스들(또는 노드들)은 임의의 적절한 토폴로지, 예컨대 메시 토폴로지(각각의 노드가 하나보다 많은 다른 노드에 연결됨), 또는 라인 토폴로지(노드들이 라인으로 배열되고 각각의 노드가 그것의 우측에 위치되는 노드에 연결됨)로 배열될 수 있다. 전형적으로, 통신 네트워크에서, 적어도 하나의 '리더' 디바이스 또는 '코디네이터' 디바이스는 메시지들을 네트워크 내의 노드들에 전파하기 위해 사용된다. 하나 이상의 노드들은 (네트워크의 토폴로지에 따라) 리더 디바이스로부터 메시지를 직접 수신하고, 그 다음에 각각의 노드는 메시지가 네트워크 도처에 빠르게 전파되도록 메시지를 그것의 이웃 노드(들)에 전송한다. 이것은 대형 통신 네트워크에 걸쳐 메시지들을 송신하는 효율적인 방식일 수 있다. 메시지들은 예를 들어 네트워크 내의 노드들에 의해 구현되는 새로운 코드를 포함할 수 있다. 토폴로지가 노드들을 배열하기 위해 사용될지라도, 노드들의 수가 증가함에 따라, 네트워크의 에지 상에 위치되는 노드들과 리더 디바이스 사이의 홉 카운트는 일반적으로 증가한다. 이것은 노드들 중 어느 것이 작업을 정확히 정지시키거나 메시지들을 송신하기에 느리면, 리더 디바이스로부터 멀리 떨어져 위치되는 노드들이 새로운 메시지들을 수신하지 않을 수 있거나, 또는 메시지들이 리더 디바이스에 의해 최초 송신되고 장시간 후에 메시지들을 수신할 수 있는 것을 의미한다.
통신 네트워크에서 에러들의 검출을 가능하게 하는 기술들이 본원에 설명된다.
본 기술들의 제1 양태에 따르면, 통신 네트워크 내의 장치가 제공되며, 장치는 메시지 송신을 위한 시간 프레임을 시작하고; 장치에서 메시지들을 수신하는 것 사이의 시간 지연을 결정하는 타이머; 및 제1 메시지를 수신하고 - 제1 메시지는 제1 표시자를 가짐 -; 제2 메시지를 수신하고 - 제2 메시지는 제2 표시자를 가짐 -; 제1 표시자와 제2 표시자가 상이한지를 결정하고, 만일 그렇다면, 타이머로부터, 제1 메시지 및 제2 메시지를 수신하는 것 사이의 시간 지연을 획득하고; 시간 지연이 시간 프레임의 지속시간을 초과하는지를 결정하고; 시간 지연 결정에 응답하여, 언제 메시지가 송신될지를 조정하는 통신 모듈을 포함한다.
본 기술들의 제2 양태에 따르면, 통신 네트워크에서 메시지 전파 지연들을 식별하는 방법이 제공되며, 방법은 제1 표시자를 갖는 제1 메시지를 수신하는 단계; 제2 표시자를 갖는 제2 메시지를 수신하는 단계; 제1 표시자와 제2 표시자가 상이한지를 결정하고, 만일 그렇다면, 제1 메시지를 수신하는 것과 제2 메시지를 수신하는 것 사이의 시간 지연을 결정하는 단계; 시간 지연이 메시지 송신을 위한 시간 프레임의 지속시간을 초과하는지를 결정하는 단계; 및 시간 지연 결정에 응답하여, 언제 메시지가 송신될지를 조정하는 단계를 포함한다.
본 기술들의 제3 양태에 따르면, 프로세서 상에 구현될 때, 프로세서로 하여금 본원에 설명되는 방법들을 수행하게 하는 코드를 기억하고 있는 비일시적 데이터 캐리어가 제공된다.
본 기술분야의 통상의 기술자에 의해 이해되는 바와 같이, 본 기술들은 시스템, 방법 또는 컴퓨터 프로그램 제품으로 구체화될 수 있다. 따라서, 본 기술들은 전적으로 하드웨어 실시예, 전적으로 소프트웨어 실시예, 또는 소프트웨어 및 하드웨어 양태들을 조합하는 일 실시예의 형태를 취할 수 있다.
더욱이, 본 기술들은 컴퓨터 판독가능 프로그램 코드가 구체화되는 컴퓨터 판독가능 매체에 구체화되는 컴퓨터 프로그램 제품의 형태를 취할 수 있다. 컴퓨터 판독가능 매체는 컴퓨터 판독가능 신호 매체 또는 컴퓨터 판독가능 저장 매체일 수 있다. 컴퓨터 판독가능 매체는 예를 들어 전자, 자기, 광, 전자기, 적외선, 또는 반도체 시스템, 장치, 또는 디바이스, 또는 상술한 것의 임의의 적절한 조합일 수 있지만, 이들에 제한되지 않는다.
본 기술들의 동작들을 수행하는 컴퓨터 프로그램 코드는 객체 지향 프로그래밍 언어들 및 종래의 절차적 프로그래밍 언어들을 포함하는, 하나 이상의 프로그래밍 언어들의 임의의 조합으로 기입될 수 있다. 코드 구성요소들은 절차들, 방법들 등으로 구체화될 수 있고, 고유 명령어 세트의 다이렉트 머신 명령어들로부터 하이 레벨 컴파일 또는 해석 언어 구성소들까지, 추상화의 레벨들 중 어느 것에서 명령어들 또는 명령어들의 시퀀스들의 형태를 취할 수 있는 서브구성요소들을 포함할 수 있다.
기술들은 예로서, 첨부 도면들에 도해적으로 예시된다.
도 1의 a는 메시 토폴로지를 갖는 통신 네트워크의 개략도이고, 도 1의 b는 라인 토폴로지를 갖는 통신 네트워크의 개략도이다.
도 1의 c는 장치(또는 노드 디바이스)의 블록도를 도시한다.
도 2의 a는 다수의 노드 디바이스들을 포함하는 통신 네트워크에서 일방향 동기화 에러들이 발생할 수 있는 것을 예시하는 개략도이다.
도 2의 b는 동기 송신(좌측) 및 비동기 송신(우측)을 예시하는 개략도이다.
도 3은 다수의 노드 디바이스들을 포함하는 통신 네트워크에서 동기화 에러들이 발생할 수 있는 추가 방식을 예시하는 개략도이다.
도 4는 통신 네트워크에서 통신 에러를 검출하고 에러를 정정하는 예시적 단계들의 흐름도이다.
도 5는 노드가 메시지를 송신하는 예시적 시간 프레임들, 및 언제 메시지가 송신될지를 변경하도록 노드를 트리거할 수 있는 임계 시간 지연들을 나타내는 테이블이다.
도 6은 리더 디바이스와 노드 사이의 홉 카운트가 증가함에 따라 통신 에러들(장애들)의 확률이 어떻게 증가하는지를 예시하는 그래프이다.
도 1의 a는 메시 토폴로지를 갖는 통신 네트워크의 개략도이고, 도 1의 b는 라인 토폴로지를 갖는 통신 네트워크의 개략도이다.
도 1의 c는 장치(또는 노드 디바이스)의 블록도를 도시한다.
도 2의 a는 다수의 노드 디바이스들을 포함하는 통신 네트워크에서 일방향 동기화 에러들이 발생할 수 있는 것을 예시하는 개략도이다.
도 2의 b는 동기 송신(좌측) 및 비동기 송신(우측)을 예시하는 개략도이다.
도 3은 다수의 노드 디바이스들을 포함하는 통신 네트워크에서 동기화 에러들이 발생할 수 있는 추가 방식을 예시하는 개략도이다.
도 4는 통신 네트워크에서 통신 에러를 검출하고 에러를 정정하는 예시적 단계들의 흐름도이다.
도 5는 노드가 메시지를 송신하는 예시적 시간 프레임들, 및 언제 메시지가 송신될지를 변경하도록 노드를 트리거할 수 있는 임계 시간 지연들을 나타내는 테이블이다.
도 6은 리더 디바이스와 노드 사이의 홉 카운트가 증가함에 따라 통신 에러들(장애들)의 확률이 어떻게 증가하는지를 예시하는 그래프이다.
대체적으로, 본 기술들의 실시예들은 복수의 노드들로 형성되는 네트워크에서 통신 에러들을 식별하고 정정하는 장치 및 방법들을 제공한다. 특히, 장치 및 방법들은 네트워크를 통해 메시지들의 지연된 전파를 야기할 수 있고, 및/또는 노드들이 네트워크에 대한 연결성(또는 네트워크 내의 코디네이터 디바이스와의 동기화)을 상실하게 할 수 있는 네트워크 내의 동기화 에러들을 식별한다. 본 기술들은 또한 네트워크 연결성 상실(또는 동기화 상실)의 위험을 감소시키는 방법을 제공한다.
용어 "메시지"는 통신 네트워크 내의 노드 디바이스들 사이에 송신되는 임의의 타입의 전자 통신을 의미하기 위해 본원에서 사용되고, 본원에서 용어들 "코드", "하트비트", "하트비트 메시지", "광고", "데이터" 및 "데이터 패킷"과 교환가능하게 사용된다.
용어 "장치"는 본원에서 용어들 "라우터", "노드", "노드 디바이스", "제약적 노드", 및 "비제약적 노드"와 교환가능하게 사용된다. 본원에 사용되는 용어 "통신 네트워크"는 일반적으로 다수의 컴퓨팅 디바이스들(예를 들어, 노드들)로 형성되는 컴퓨터 네트워크 또는 데이터 네트워크를 의미하며 데이터는 디바이스들 사이에서 교환된다. 통신 네트워크는 메시 네트워크, 무선 메시 네트워크, 또는 제약적/저전력 무선 네트워크일 수 있다. 통신 네트워크 내의 노드들은 메시 토폴로지, 라인 토폴로지, 또는 임의의 다른 적절한 토폴로지로 배열될 수 있다.
디바이스들(예컨대 노드들)의 네트워크들은 임의의 적절한 토폴로지로 배열될 수 있다. 일부 네트워크 토폴로지들은 노드들을 다수의 다른 노드들에 연결하지만, 다른 네트워크 토폴로지들은 직렬 형상 연결인 노드들을 이웃 노드들에 연결한다. 메시 토폴로지를 갖는 통신 네트워크(100)의 개략도는 도 1의 a에 도시된다. 통신 네트워크(100)는 각각의 노드(10)가 하나보다 많은 다른 노드(10)에 연결되도록 메시 토폴로지로 배열되는 복수의 노드들(10)을 포함한다. (노드들 사이의 라인들은 연결들을 표현한다). 각각의 노드(10)는 메시지들/데이터를 네트워크 내의 코디네이터 디바이스(22) 및/또는 다른 노드들로 그리고 이들로부터 릴레이할 수 있는 라우터의 기능을 할 수 있다. 통신 네트워크(100)는 '리더' 디바이스(22)(또는 코디네이터 디바이스(22))를 포함한다. 코디네이터 디바이스(22)는 네트워크(100)을 최초에 설정하는 디바이스이다. 이상적으로, 네트워크(100)마다 단일 코디네이터 디바이스(22)만이 있다. 코디네이터 디바이스(22)는 네트워크를 통해 메시지 전파를 개시할 수 있고(예를 들어, 코디네이터 디바이스(22)는 하트비트 메시지들을 송신할 수 있음), 더 일반적으로, 네트워크(100) 내의 노드들(10)이 네트워크(100) 내의 다른 디바이스들/노드들에 연결되는지를 결정할 수 있는 정보를 제공한다.
메시 네트워크에서, 각각의 노드(10)는 메시지들을 이웃 노드들에 송신하기 위해 브로드캐스팅 또는 멀티캐스팅 통신 기술들을 사용하도록 구성될 수 있다. 이것은 많은 수의 노드들/디바이스들을 포함하는 네트워크들에서 메시지들을 전파하는 특히 효율적인 방식일 수 있다. 메시 네트워크 내의 노드가 고장나면, 메시지들은 각각의 노드가 다수의 노드들에 결합되거나, 다수의 노드들과 직접 통신할 수 있으므로 네트워크를 통해 여전히 전파가능하게 될 수 있다. 각각의 노드는 그것이 수신하는 모든 메시지를 자동적으로 전송할 수 있거나, 예를 들어, 메시지가 인근 노드에 의해 수신되지 않았다는 표시를 그것이 수신하는 경우에만 메시지를 전송할 수 있다.
도 1의 b는 라인 토폴로지를 갖는 통신 네트워크(100')의 개략도이다. 라인 토폴로지(또는 링 토폴로지)에서, 각각의 노드(10)는 인근 노드에 직렬 형상 연결로 연결될 수 있다. 각각의 노드는 메시지가 목적지에 도달할 때까지 특정 노드를 위해 의도되는 메시지를 전송할 수 있다. 따라서, 노드는 메시지들을 전송하기 위해 유니캐스팅을 사용할 수 있다.
도 1의 a에 도시된 바와 같이, 메시 네트워크는 라인 네트워크/라인 토폴로지를 자체 포함할 수 있다. 예를 들어, 도 1의 a의 파선 화살표는 노드(10)와 코디네이터(22) 사이의 선형 연결을 표시한다. 예시된 메시 네트워크(100) 내에 다른 그러한 라인 토폴로지들이 있다. 따라서, 라인 토폴로지들에서 발생하는 통신 문제들은 또한 메시 네트워크들에서 발생할 수 있지만, 연결성 또는 통신 장애를 야기하는 이러한 문제들의 확률은 메시 네트워크 내의 각각의 노드가 네트워크 내의 다른 노드로부터 정보(예를 들어, 메시지들)를 획득할 수 있기 때문에 순수 라인 토폴로지보다 더 낮다.
메시 네트워크(100) 또는 라인 네트워크(100')에서, 임의의 적절한 네트워킹 프로토콜은 노드들(10)과 디바이스들(22) 사이의 통신을 가능하게 하기 위해 사용될 수 있다. 하나의 예시적 프로토콜은 사물 인터넷 디바이스들(즉, 낮은 처리 능력 및/또는 낮은 메모리 디바이스들)에 특히 적절한 스레드 네트워크 프로토콜(http://threadgroup.org/)이다. 스레드 프로토콜뿐만 아니라, 다른 네트워킹 프로토콜들은 네트워크가 정확히/정상으로 동작하고 있는지를 발견하기 위해, 및/또는 네트워크 내의 노드들을 동기화하기 위해 하트비트 메시지들 또는 유사한 광고들을 송신할 수 있다.
본 기술들에서, 하트비트 메시지는 노드들(10)이 리더 디바이스/코디네이터 디바이스에 연결을 유지하는 것을 결정할 수 있기 위해 통상 규칙적 간격들로(예를 들어, 몇 초마다, 분 마다 등), 네트워크 내의 노드들(10)에 송신되는 메시지이다. 하트비트 메시지는 실시예들에서, 아래에 더 상세히 설명되는 바와 같이, 불규칙적 간격들로 송신될 수 있다. 하트비트 메시지는 네트워크 내의 코디네이터 디바이스(22)에 의해 주기적으로 송신되고, 네트워크에 걸친 노드들(10)에 의해 전송될 수 있다. 하트비트 메시지가 일부 시간 동안 노드(10)에 의해 수신되지 않으면, 노드(10)는 (가능하다면 하나 이상의 노드들이 고장났기 때문에) 그것이 코디네이터 디바이스(22)에 대한 연결을 상실했던 것을 가정한다. 일부 경우들에서, 하트비트 메시지는 새로운 하트비트 메시지가 코디네이터 디바이스(22)에 의해 송신될 때마다 값이 증가되는(또는 다른 방법으로 값이 변화되는) 표시자(예를 들어, 수치 또는 영숫자 표시자 또는 인덱스, 또는 시간스탬프)를 포함할 수 있다. 노드(10)가 하트비트 메시지들을 수신하지만 메시지들의 수치 표시자 값의 변화를 인식하지 못하면, 노드(10)는 그것이 코디네이터 디바이스(22)에 대한 연결을 상실했던 것을 가정할 수 있다.
하트비트 메시지는 임의의 적절한 형태를 취할 수 있다. 예를 들어, 하트비트 메시지는 스레드 프로토콜 하에 송신되는 주기적 광고일 수 있다. 하트비트 메시지는 임의의 주기적 메시지 또는 광고일 수 있고, 예를 들어 스레드, 또는 웹소켓 프로토콜(IETF RFC 6455), 또는 프록시 모바일 IPv6 프로토콜(IETF RFC 5847)과 같은 임의의 적절한 통신 프로토콜 하에 송신될 수 있다. (여기에 열거되는 프로토콜들은 예시적일 뿐이고 비제한적이다).
하트비트 메시지들을 송신하는 하나의 방식은 네트워크를 통해 메시지들을 빠르게 전파하기 위해 트리클 알고리즘(IETF RFC 6206)을 사용하는 것이다. 트리클 알고리즘은 송신될 필요가 있는 메시지들의 수를 감소시키는 것에 의해 메시지들을 네트워크에서 플러딩(flooding)하는 위험을 감소시키면서, 노드들이 데이터를 빠르게 교환할 수 있게 한다. 따라서, 트리클 알고리즘은 알고리즘이 메시지 전파를 효율적인 방식으로 가능하게 하므로, 규칙적으로 송신될 필요가 있고 네트워크 내의 모든 노드들에 빠르게 도달할 필요가 있는 하트비트 메시지들을 송신하는데 적절할 수 있다. 트리클 알고리즘은 노드 자체 메시지가 중복되는 것을 제안하는 소수의 다른 송신들을 노드가 히어링하지 않는 한 노드가 메시지들을 인근 노드들에 송신하는 것을 특정한다. 트리클 알고리즘 하에, 노드는 노드가 이미 인식하는 것과 동일한 네트워크 내의 다른 노드들/디바이스들로부터 메시지를 수회 히어링하면, 노드는 메시지를 송신하지 않으므로, 그것은 불필요한 메시지들을 네트워크에서 플러딩하는 것을 회피한다.
트리클 알고리즘은 시간이 특정한 미리 결정된 길이의 간격들로 분할되는 것을 특정한다. 예를 들어, 간격은 60초 길이일 수 있다. 트리클 알고리즘을 따르는 각각의 노드는 메시지를 간격당 한 번(많아도) 송신하도록 구성된다. 트리클 알고리즘을 따르는 노드는 네트워크에서 플러딩하는 것을 회피하기 위해, 노드가 동일한 간격에서 다른 노드들로부터 메시지를 수회 히어링했으면 간격에서 메시지를 송신하지 않는 것을 결정할 수 있다. 노드는 각각의 간격의 전부 또는 일부에 대해, 네트워크 내의 다른 노드들/디바이스들로부터 메시지들을 리스닝하고 있을 수 있다. 예를 들어, 노드는 새로운 하트비트 메시지를 리스닝하고 있을 수 있다. 그러나, 노드가 간격 동안 메시지를 송신하면, 그것은 (트리클 알고리즘 하에) 동일한 간격에서 다른 메시지를 송신할 수 없지만, 노드는 송신을 따르는 갱신된/더 새로운 메시지를 히어링했었다. 하트비트 메시지들의 맥락에서, 노드는 가장 새로운/가장 최신의 하트비트 메시지를 표현하는, 가장 높은 인덱스 또는 가장 높은 수치 표시자 값을 갖는 하트비트 메시지를 송신하도록 구성될 수 있다. 트리클 알고리즘은 노드가 각각의 간격 동안의 랜덤 시간에 메시지를 송신하는 것을 특정한다. 예를 들어, 길이 30초의 간격 동안, 송신은 이러한 간격 내의 랜덤하게 선택된 포인트에서, 예를 들어 16번째 초와 30번째 초 사이에서 발생할 수 있다. 노드는 간격 동안의 임의의 랜덤하게 선택된 포인트에서 메시지를 송신한다. 이것은 네트워크 내의 모든 노드들이 정확히 동시에 메시지들을 송신하는 것을 회피하여, 그것은 네트워크에서 플러딩할 수 있다.
일반적으로 말하면, 트리클 알고리즘은 네트워크에서 메시지들의 송신 속도를 동적으로 조절할 수 있다. 길이(τ)의 디폴트 간격은 통신 네트워크에 대해, 예를 들어 코디네이터 디바이스에 의해 정의될 수 있다. 노드들에 의해 히어링되는 송신들이 '일치될' 때, 노드들은 메시지들을 덜 빈번히 송신하고, 간격은 τ_low(즉, 더 긴 간격)로 스위칭될 수 있다. '일치' 송신을 구성하는 것은 프로토콜 의존적이다. 예를 들어, 일치 송신은 노드에 의해 저장/인식되는 하트비트 메시지와 동일한 표시자 값을 갖는 하트비트 메시지일 수 있다. 이것은 다른 노드들이 동일한 하트비트 메시지를 히어링했던 것을 표시할 것이다. 노드들에 의해 히어링되는 송신이 '불일치될' 때(예를 들어, 노드가 더 새로운 하트비트 메시지를 히어링하면), 간격은 새로운 메시지가 네트워크 주위에 빠르게 전파될 수 있게 하기 위해 τ_high(즉, 더 짧은 간격)로 스위칭될 수 있다. 일부 시간 후에, 간격은 다시 τ로 스위칭된다. 따라서, 트리클 알고리즘은 노드가 '일치' 및 '불일치' 이벤트들에 응답하여 간격의 길이(즉, 통신들의 주파수, 또는 통신 속도)를 변경해야 하는 것을 특정한다.
그러나, 트리클 알고리즘은 네트워크에서 송신의 속도를 동적으로 조절가능할 수 있지만, 트리클 알고리즘은 네트워크에서 장애들 또는 통신 에러들을 발견할 수 없거나, 통신 에러들을 교정할 수 없다. 예를 들어, 트리클 알고리즘은 노드가 인근 노드들로부터 '일치' 또는 '불일치' 송신을 히어링하면 노드가 액션을 취하게 하지만, 알고리즘(및 따라서 노드)은 송신들이 최신이거나 코디네이터 디바이스와 동기되는지를 결정하는 법을 인식하지 못한다.
따라서, 노드들이 네트워크(특히, 코디네이터 디바이스)에 대한 연결성을 상실시키게 할 수 있는 통신 에러들을 식별하는 장치 및 방법들은 네트워크 연결성 상실의 위험을 감소시키는 방법과 함께, 아래에 설명된다. 본원에 설명되는 기술들은 새로운 통신 알고리즘/프리미티브를 형성할 수 있거나, 기존 통신 알고리즘(예컨대 트리클 알고리즘)을 수정하기 위해 사용될 수 있다. 본원에 설명되는 기술들은 하트비트 메시지들만을 송신하기 위해 사용될 수 있는 반면에, 다른 알고리즘들(예를 들어, 트리클 알고리즘)은 네트워크 내의 다른 타입들의 메시지들을 송신하기 위해 사용될 수 있다. 부가적으로 또는 대안적으로, 본원에 설명되는 기술들은 임의의 타입의 메시지를 송신하기 위해 사용될 수 있다.
실시예들에서, 노드에 의해 수행되는 각각의 송신 사이의 간격의 디폴트 길이는 모든 메시지 타입들에 대해, 트리클 알고리즘에 의해 정의될 수 있다. 본 기술들은 하나 이상의 노드들이 코디네이터 디바이스에 대한 연결성을 상실하게 할 수 있는 통신 에러를 식별하면, 본 기술들은 네트워크 연결성 상실의 위험을 감소시키기 위해 하트비트 메시지 송신들 사이의 갭(즉, 간격)을 수정하는데 사용될 수 있다. 에러가 해결되었다면, 하트비트 메시지 송신들을 위한 간격은 트리클 알고리즘에 의해 특정되는 디폴트 길이로 재설정될 수 있다. (본 기술들은 언제 하트비트 메시지들이 송신될지를 수정하기 위해 사용될 수 있다. 다른 타입들의 메시지의 송신 사이의 간격은 본 기술들이 네트워크 연결성 상실의 위험을 감소시키면, 이때 다른 타입들의 메시지들이 예상된 바와 같이 송신되고 수신될 더 좋은 가능성이 있기 때문에, 본 기술들에 의해 수정되지 않을 수 있다).
도 1의 c를 참조하면, 이것은 본 기술들의 실시예들에 따른 노드(10)(또한 본원에서 장치로 언급됨)의 블록도를 도시한다. 노드(10)는 코디네이터 디바이스(22)를 포함하는 통신 네트워크 내에 제공되거나, 통신 네트워크의 일부로 제공된다. 통신 네트워크는 메시 토폴로지로 배열되는 복수의 노드들(10)을 포함할 수 있다. 상기 또는 각각의 노드(10)는 노드가 코디네이터 디바이스(22)와 덜 동기화되고 있는지(또는 이 디바이스에 대한 연결성을 상실하는 것에 가까운지)의 여부를 결정가능하게 할 수 있고, 다른 인근 노드들이 네트워크(및 코디네이터 디바이스(22))에 대한 연결성을 상실하는 위험을 감소시키는 액션을 취하는 것이 가능할 수 있다.
장치(10)는 노드가 위치되는 통신 네트워크(예컨대 통신 네트워크(100)) 내의 다른 노드들/디바이스들에 메시지들을 송신하고 다른 노드들/디바이스들로부터 메시지들을 수신하기 위해 통신 모듈(12)을 포함한다. 통신 모듈(12)은 메시지들을 송신하고 수신하는데 적절한 임의의 통신 모듈일 수 있거나, 메시지들을 송신하고 수신하도록 구성되는(또는 적응되는) 통신 모듈일 수 있다. 통신 모듈은 메시지들을 통신 네트워크 내의 하나 이상의 노드들/디바이스들에 전송하기 위해 멀리캐스팅, 브로드캐스팅, 또는 유니캐스팅을 사용하도록 구성될 수 있다. 장치(10)의 통신 모듈에 의해 사용되는 통신 프로토콜/기술은 상기 언급된 바와 같이, 통신 네트워크의 토폴로지에 의존할 수 있다. 통신 모듈(12)은 다른 타입들의 메시지들/데이터에 더하여, 하트비트 메시지들을 수신하고 송신할 수 있다. 통신 모듈(12)은 예를 들어 하트비트 메시지를 주기적으로 송신할 수 있다. 장치(10)는 시간을 간격들로 분할함으로써, 그리고 각각의 간격 동안 메시지들을 다른 노드들에 송신하고 및/또는 다른 노드들로부터 메시지들을 수신함으로써 통신 네트워크 내의 다른 노드들/디바이스들과 통신할 수 있다. 각각의 간격은 디폴트에 의해, 동일한 길이(τ)일 수 있고, 실시예들에서, 길이(τ)는 네트워크에 대한 코디네이터 디바이스(22)에 의해 결정되거나, 특정되거나 제어될 수 있다. 실시예들에서, 각각의 간격의 길이(τ)는 본원에 설명되는 방법들 및 기술들을 구현하는 통신 프로토콜 또는 알고리즘에 의해 특정될 수 있다. 실시예들에서, (적어도 하트비트 메시지들 사이의) 각각의 간격의 디폴트 길이(τ)는 트리클 알고리즘을 사용하여 결정될 수 있다.
각각의 노드(10)의 통신 모듈(12)은 각각의 간격에서 다른 노드들/디바이스들로부터 메시지들을 연속적으로 리스닝할 수 있다. 실시예들에서, 통신 모듈(12)은 각각의 간격에서 메시지를 통신 네트워크 내의 다른 노드들/디바이스들에 한 번 송신할 수 있다. 실시예들에서, 통신 모듈(12)은 네트워크 내의 일부 노드들이 노드(10)로부터 메시지들만을 수신하는 경우, 그것이 다른 노드들로부터 동일한 메시지를 이미 히어링했을지라도 메시지를 송신할 수 있다. 이것은 메시지가 가장 최신의 메시지이든 아니든, 모든 노드들이 각각의 간격에서 적어도 하나의 메시지를 히어링하는 것을 보장할 수 있다.
장치(10)는 데이터 저장소(14)를 포함할 수 있다. 데이터 저장소(14)는 예를 들어 일시적 메모리로서의 사용을 위한, 랜덤 액세스 메모리(random access memory)(RAM)와 같은 휘발성 메모리, 및/또는 데이터, 프로그램들, 또는 명령어들을 저장하는, 플래시, 판독 전용 메모리(read only memory)(ROM), 또는 전기적 소거가능 프로그램가능 ROM(electrically erasable programmable ROM)(EEPROM)과 같은 비휘발성 메모리를 포함할 수 있다. 데이터 저장소(14)는 통신 모듈(12)에 의해 통신 네트워크 내의 다른 노드들/디바이스들로부터 수신되는 메시지들을 (일시적으로 및/또는 영구적으로) 저장할 수 있다. 예를 들어, 데이터 저장소(14)는 다른 노드로부터 수신되는 가장 최신의 코드를 저장할 수 있거나, 통신 모듈(12)이 네트워크 내의 다른 노드 또는 디바이스로부터 히어링했던 가장 최신의 하트비트 메시지를 저장할 수 있다. 가장 최신의 코드는 가장 높은 버전 번호를 갖거나, 그것이 가장 새로운 코드인 것을 표시하는 일부 다른 표시자(예를 들어, 영숫자 표시자, 또는 시간 또는 날짜 스탬프)를 갖는 코드일 수 있다. 유사하게, 가장 최신의 하트비트 메시지는 노드(10)가 이전에 인식되었던 것에 비해, 가장 높은 인덱스, 또는 가장 높은 영숫자 표시자 값, 또는 가장 최신의 시간/날짜 스탬프를 갖는 메시지일 수 있다. 데이터 저장소(14)는 통신 모듈(12)에 의해 수신되는 가장 최신의 하트비트 메시지를 저장할 수 있다. 실시예들에서, 하트비트 메시지의 표시자 또는 인덱스가 시간스탬프가 아니면, 데이터 저장소(14)는 또한 하트비트 메시지가 통신 모듈(12)에 의해 수신된 때 시간(및 가능하게는 날짜)을 저장할 수 있다. 이러한 시간 정보는 노드(10)가 새로운 하트비트 메시지들(즉, 새로운 표시자를 갖는 하트비트 메시지들)을 수신하는 것 사이의 지연을 결정가능하게 할 수 있으며, 이 메시지들은 노드(10)가 코디네이터 디바이스(22)에 대한 연결성을 상실하고 있는지를 결정가능하게 할 수 있다. 데이터 저장소(14)는 가장 최신의 하트비트 메시지가 수신되고 저장된 후에, 저장되는 임의의 더 오래된(덜 최신의) 하트비트 메시지들을 삭제/소거할 수 있다. 이것은 (예를 들어, 저장된 메시지 및 수신된 메시지의 인덱스 또는 표시자 값을 비교함으로써) 그것이 수신하는 다음 하트비트 메시지가 가장 최신의 하트비트 메시지인지를 노드(10)가 결정가능하게 할 수 있다.
노드(10)는 노드(10)가 네트워크의 코디네이터 디바이스(22)에 연결을 유지하고 (잠재적으로 다른 노드들을 통해) 이 디바이스와의 동기를 유지하는지, 또는 노드가 코디네이터 디바이스(22)에 대한 연결(또는 이 디바이스와의 동기화)을 상실하는 것에 가까워지는지를 결정하기 위해 메시지의 표시자를 사용할 수 있다. 노드(10)는 새로운 메시지를 코디네이터 디바이스(22)로부터 (잠재적으로 다른 노드들을 통해), 특정 주파수에서 또는 특정 간격들에서 수신하는 것을 예상할 수 있다. 예를 들어, 노드(10)는 각각의 간격에서, 또는 특정 시간 프레임 내의 불규칙 포인트들에서 새로운 메시지(예를 들어, 새로운 하트비트 메시지)를 한 번 수신하는 것을 예상할 수 있다. 예를 들어, 노드(10)는 노드(10)가 새로운 메시지를 코디네이터 디바이스(22)로부터 (잠재적으로 다른 노드들을 통해) 수신하는 것을 예상하는 시간 프레임 내에 새로운 메시지를 수신하면, 노드(10)는 코디네이터 디바이스(22)에 대한 연결을 잘 유지하거나, 이 디바이스와의 동기화를 유지하는 것을 가정할 수 있다. (여기서, 새로운 메시지는 새로운 메시지를 포함하는 메시지로 정의된다. 하트비트 메시지들의 경우에, 새로운 하트비트 메시지는 이전에 수신된 하트비트 메시지에 상이한 표시자 값 또는 인덱스 또는 시간스탬프를 갖는 것이다). 유사하게, 노드(10)는 노드(10)가 새로운 메시지를 코디네이터 디바이스(22)로부터 (직접적으로, 또는 다른 노드들을 통해 간접적으로) 수신하는 것을 예상하는 시간 프레임의 밖에 새로운 메시지를 수신하면, 노드(10)는 코디네이터 디바이스에 여전히 연결되지만 코디네이터 디바이스(22)에 대한 연결을 상실할 수 있는 것(또는 이 디바이스와 덜 동기화되는 것)을 가정할 수 있다. 실시예들에서, 노드는 그것이 코디네이터 디바이스(22)에 대한 연결을 상실하고 있는 것(또는 이 디바이스와 덜 동기화되고 있는 것)을 결정하기 위해 표시자를 사용하면, 노드(10)는 그것이 새로운 메시지를 네트워크 내의 다른 노드들에 송신하는 포인트를 변경할 수 있다. 이러한 프로세스는 아래에 더 상세히 설명되는 바와 같이, 통신 에러들이 네트워크를 통해 전파되는 것을 방지할 수 있다.
본 기술들의 실시예들에서, 메시지의 표시자는 수치 표시자, 알파벳 표시자, 또는 영숫자 표시자일 수 있다. (이들은 예시적 타입들의 표시자일 뿐이고, 비제한적인 점이 이해될 것이다). 표시자는 순차적으로 증가할 수 있고, 이러한 경우에, 수신된 메시지가 가장 최신의 메시지인지를 결정하는 것은 저장된(또는 마지막 수신된) 메시지의 표시자 값을 새롭게 히어링된/수신된 메시지와 비교하는 것을 간단히 포함할 수 있다. 각각의 메시지가 노드(10)에 의해 수신되는 시간은 또한 데이터 저장소(14)에 저장될 수 있으므로, 이것은 새로운 메시지들을 수신하는 것 사이의 지연이 매우 커지고 있는지를 노드(10)가 결정가능하게 할 수 있다(그것은 잠재적 네트워크 연결성 상실을 나타낼 수 있음).
부가적으로 또는 대안적으로, 메시지의 표시자는 시간스탬프, 예를 들어 메시지가 발신 디바이스(예를 들어, 코디네이터 디바이스(22))에 의해 송신되는 시간 및/또는 날짜일 수 있다. 표시자(즉, 시간스탬프)는 시간순으로 증가할 수 있다. 시간스탬프 기반 표시자들을 갖는 메시지들은 주기적으로/규칙적으로 송신될 수 있거나, 랜덤 간격들에서 그리고 종종 필요에 따라 송신될 수 있다. 이러한 실시예에서, 수신된 메시지가 가장 최신의 메시지인지를 결정하는 단계는 저장된(또는 마지막 수신된) 메시지 및 새롭게 히어링된 메시지의 시간스탬프들을 비교하는 단계를 간단히 포함할 수 있다. 노드(10)는 새롭게 히어링된 메시지의 시간스탬프를 현재 시간(예를 들어 노드(10)의 클록(21)에 의해 측정되는 바와 같음)과 비교함으로써 노드가 코디네이터 디바이스(22)와 어떻게 '동기'되는지를 결정가능할 수 있다.
부가적으로 또는 대안적으로, 메시지의 표시자는 랜덤 수 또는 랜덤 순서의 문자들(예를 들어, 글자들, 숫자들, 특수 문자들 등)일 수 있다. 이러한 경우에, 수신된 메시지가 가장 최신의 메시지인지를 결정하는 것은 수신된 메시지가 (저장된 메시지 또는 마지막 수신된 메시지에 비해) 새로운지를 결정하고, 만일 그렇다면, 노드(10)가 코디네이터 디바이스(22)로부터 새로운 메시지를 수신하는 것을 예상하는 시간 프레임 내에 메시지가 수신되었는지를 결정하기 위해 표시자들을 비교하는 것을 포함할 수 있다. 각각의 메시지가 노드(10)에 의해 수신되는 시간은 또한 데이터 저장소(14)에 저장될 수 있으므로, 이것은 새로운 메시지들을 수신하는 것 사이의 지연이 매우 커지고 있는지를 노드(10)가 결정가능하게 할 수 있다(그것은 잠재적 네트워크 연결성 상실을 나타낼 수 있음).
부가적으로 또는 대안적으로, 메시지의 표시자는 문자들의 세트(또는 문자들의 시퀀스의 세트) 중 하나일 수 있으며, 코디네이터 디바이스(22)는 문자들의 세트를 순환시킨다. 예를 들어, 세트는 숫자들 1, 2, 3 및 4를 포함할 수 있고, 코디네이터 디바이스(22)는 각각의 새로운 메시지에 대한 표시자를 획득하기 위해 숫자들을 순환시킬 수 있다. (즉, 제1 메시지는 표시자 값 1을 갖고, 제2 메시지는 표시자 값 2를 갖고, 제5 메시지는 표시자 값 1을 갖는 등등이다) 이러한 실시예에서, 수신된 메시지가 가장 최신의 메시지인지를 결정하는 것은 수신된 메시지가 (저장된 메시지 또는 마지막 수신된 메시지에 비해) 새로운지를 결정하고, 만일 그렇다면, 노드(10)가 코디네이터 디바이스(22)로부터 새로운 메시지를 수신하는 것을 예상하는 시간 프레임 내에 메시지가 수신되었는지를 결정하기 위해 표시자들을 비교하는 것을 포함할 수 있다. 각각의 메시지가 노드(10)에 의해 수신되는 시간은 또한 데이터 저장소(14)에 저장될 수 있으므로, 이것은 새로운 메시지들을 수신하는 것 사이의 지연이 매우 커지고 있는지를 노드(10)가 결정가능하게 할 수 있다(그것은 잠재적 네트워크 연결성 상실을 나타낼 수 있음).
장치(10)는 프로세서(18)를 포함할 수 있으며, 프로세서는 (장치(10)의 다른 구성요소들에 더하여) 통신 모듈(12) 및 데이터 저장소(14)에 결합될 수 있다. 프로세서(18)는 데이터(예를 들어, 통신 네트워크 내의 다른 디바이스들로부터 수신되는 메시지들)를 처리하고, 처리에 응답하여 출력 데이터를 발생시키기 위해 처리 로직을 포함할 수 있다. 프로세서(18)는 마이크로프로세서, 마이크로컨트롤러, 및 집적 회로 중 하나 이상을 포함할 수 있다. 예를 들어, 프로세서(18)는 노드(10)가 가장 최신의/가장 새로운 메시지를 수신했는지를 결정하고, 가장 새로운 메시지가 예상된 시간 프레임에서 수신되었는지를 결정하도록 구성될 수 있다. 실시예들에서, 통신 모듈(12)은 그러한 결정들을 이루도록 구성되는 전용 프로세서(18)를 포함할 수 있다.
상기 언급된 바와 같이, 장치(10)는 각각의 시간 간격('I')에서 적어도 한 번 다른 노드들과 통신할 수 있다. 시간 간격은 미리 결정된 길이(τ)을 가질 수 있으며, 이 길이는 본원에 설명되는 기술들을 구현하는 프로토콜에 의해 특정되거나, 그러한 프로토콜에 적합하도록 선택될 수 있다. 예를 들어, 간격은 30초 길이, 60초 길이 등일 수 있다. 실시예들에서, 간격들('I')은, 언제 각각의 새로운 간격('I')이 시작될지를 코디네이터 디바이스(22)가 규정하도록 네트워크 내의 코디네이터 디바이스(22)에 의해 정의(또는 클로킹)될 수 있다. 네트워크 내의 각각의 장치(10)는 노드가 코디네이터 디바이스(22)와 동일한 시간 포인트들에서 각각의 간격('I')의 시작 및 종료 포인트를 표시하도록 코디네이터 디바이스(22)와 동기화될 수 있다. (이것은 도 2의 a에 도시된다). 대안적으로, 각각의 장치(10)는 장치(10)가 네트워크 내의 다른 디바이스들과 반드시 동기화되는 것은 아니도록 각각의 간격 자체를 시작하고 종료할 수 있다. (이것은 도 3에 도시된다). 실시예들에서, 각각의 장치(10)는 코디네이터 디바이스(22) 및/또는 다른 노드들과 반드시 동기화되는 것은 아니다. 각각의 간격의 길이는 통신 네트워크 내의 각각의 디바이스/노드에 대해 동일할 수 있고, 간격 길이(τ)는 특정 알고리즘(예를 들어, 트리클 알고리즘)에 의해 정의될 수 있다. 그러나, 각각의 간격의 시작은 모든 노드들/디바이스들에 걸쳐 동기화되지 않을 수 있으며, 즉 위상이 다를 수 있다. (이것은 네트워크 내의 수백 또는 수천 개의 디바이스들을 동기화하는 것이 어렵기 때문이고, 및/또는 노드들 내의 클록들이 정확하지 않고 시간에 따라 드리프트될 수 있기 때문일 수 있어, 간격들로 하여금 위상이 달라지게 한다).
각각의 노드/디바이스의 간격들이 위상이 같든지 위상이 다르든지, 네트워크 내의 각각의 노드(10)는 코디네이터 디바이스(22)와 동일한 통신 프로토콜 및 알고리즘을 구현하고, 따라서 간격들('I')이 얼마나 긴지를 인식한다. 장치(10)는 언제 각각의 간격이 시작되고 종료되는지를 장치(10)가 인식하도록 각각의 간격('I')의 길이를 추적하는 타이머(20)를 포함할 수 있다. 부가적으로 또는 대안적으로, 장치(10)는 간격들('I')을 추적하기 위해 클록(21)(또는 네트워크 내의 각각의 노드 및 디바이스에 의해 액세스가능한 외부 클록)을 사용할 수 있으며, 간격들은 각각의 장치(10)가 코디네이터 디바이스(22)와 더 잘 동기화가능하게 할 수 있다. 타이머(20) 또는 클록(21)은 통신 모듈(12)이 각각의 간격에서 언제 메시지를 송신할지를 결정할 수 있도록 각각의 간격('I')의 시작 및 종료를 추적할 수 있다.
통신 모듈(12)은 각각의 간격('I')에서 메시지를 한 번 송신할 수 있고 송신을 이루기 위해 간격 내의 랜덤 포인트를 선택할 수 있다. 예를 들어, 각각의 간격의 길이가 τ이면, 이때 통신 모듈(12)은 각각의 간격 내의 특정 시간 프레임 동안의 랜덤 포인트에서, 예를 들어 각각의 간격 내의 τ/2와 τ 사이, 또는 τ/4 및 ¾τ 사이에서 메시지를 송신하도록 구성될 수 있다. (이들은 메시지가 송신될 수 있을 때의 예시적 예들일 뿐이고, 비제한적인 점이 이해될 것이다). 노드(10)는 네트워크 내의 모든 노드들이 정확히 동시에 메시지들을 송신하는 것을 회피하기 위해 간격 내의 랜덤 포인트에서 메시지를 송신하여, 그것은 네트워크에서 플러딩할 수 있다. 타이머(20)(또는 클록(21))는 통신 모듈(12)이 각각의 간격 내에서 언제 메시지를 송신할지를 결정가능하게 할 수 있다.
타이머(20)는 또한 새로운 메시지들을 수신하는 것 사이의 시간 지연을 추적하기 위해 사용될 수 있다. 예를 들어, 노드(10)가 메시지 'A'를 수신하면, 그리고 노드(10)가 이때 메시지 'B'를 수신하면, 타이머(20)는 메시지 A 및 메시지 B를 수신하는 것 사이의 시간 지연을 결정하기 위해 사용될 수 있다. 대안적으로, 데이터 저장소(14)는 메시지 A가 수신되는 시간 및 메시지 B가 수신되는 시간을 저장하면, 타이머(20) 또는 프로세서(18)는 2개의 메시지들 사이의 시간 지연을 결정가능할 수 있다. 2개의 메시지들 사이의 시간 지연(또는 시간 갭)은 노드(10)가 코디네이터 디바이스와 동기화되는지(또는 노드(10)가 어떻게 비동기되는지)를 표시할 수 있다. 예를 들어, 시간 갭이 제1 임계(T1) 값 위에 있으면, 노드(10)는 노드(10)가 메시지를 다음에 송신하는 시간을 가속하도록 구성될 수 있다. 시간 갭이 제2 임계(T2) 값에 근사해지고 있거나, 이 값에 도달하면, 노드(10)는 메시지를 즉시 송신하도록 구성될 수 있다. 이것은 아래에 더 상세히 설명된다.
임의로, 장치(10)는 특정 메시지가 간격('I')에서 통신 모듈(12)에 의해 몇 번 수신되는지를 카운팅하기 위해 카운터(16)를 포함할 수 있다. 통신 모듈(12)은 이러한 실시예에서, 통신 모듈(12)이 다른 노드들로부터 동일한 메시지를 이미 히어링하지 않았던 경우에만 메시지를 송신하도록 구성될 수 있다. 그러나, 상기 언급된 바와 같이, 장치(10)는 각각의 간격에서 메시지를 송신하도록 구성될 수 있지만, 장치(10)는 일부 노드들이 새로운 메시지들을 위해 장치(10)에 의존할 수 있기 때문에, 다른 노드들로부터 메시지를 수회 히어링한다. 따라서, 메시지(심지어 이전의 또는 오래된 메시지)가 네트워크 내의 모든 노드들에 의해 히어링되는 것을 보장하기 위해, 각각의 장치(10)는 그것이 각각의 간격에서 그 자체를 히어링했던 가장 최신의 메시지를 송신할 수 있다(하지만 이러한 메시지는 오래되어 있거나, 오래됨).
도 2의 a는 통신 에러들(또는 동기화 에러들)이 다수의 노드들을 포함하는 통신 네트워크에서 어떻게 발생할 수 있는지를 예시하는 개략도이다. 에러들은 각각의 노드/디바이스 내에서 프로세스들을 송신하고 수신할 시에 어떠한 문제들이 없을지라도, 그리고 통신 네트워크가 예상된 바와 같이 다른 방법으로 동작하고 있을지라도 발생할 수 있다. 예시된 예에서, 네트워크는 네트워크를 통해 메시지 전파를 개시할 수 있는 코디네이터 디바이스(22), 및 도 1의 c에 도시된 타입의 노드들인 적어도 3개의 노드들(10a, 10b 및 10c)을 포함한다. 코디네이터 디바이스(22)는 예를 들어 하트비트 메시지들을 발생시키고 송신할 수 있으며, 각각의 하트비트 메시지는 표시자를 포함한다. 노드들(10a-)은 네트워크를 통해 하트비트 메시지들을 전파한다.
노드들(10a 내지 10c) 및 코디네이터 디바이스(22)는 각각의 간격('I')에서 메시지들을 한 번 각각 송신할 수 있다. 각각의 간격('I')은 길이 또는 지속시간(τ)을 갖는다. 이러한 예에서, 각각의 노드(10a 내지 10c) 및 코디네이터 디바이스(22)의 간격들은 각각의 간격이 각각의 노드/디바이스 내의 동일한 시간 포인트에서 시작하도록 서로 위상이 같다. 간격들이 위상이 같지 않은 대안 버전은 도 3에 도시된다. 도 2의 a에 도시된 바와 같이, 노드(10a)는 코디네이터 디바이스에 가장 가까우며, 즉 1 홉 떨어져 있는 반면에, 노드(10c)는 코디네이터 디바이스(22)에서 가장 멀리 떨어져 있으며, 즉 3 홉 떨어져 있다. 노드들(10a 내지 10c)은 임의의 토폴로지, 예를 들어 메시 또는 라인 토폴로지로 배열될 수 있다. 각각의 간격('I') 동안, 각각의 노드(10a 내지 10c)는 인근 노드들로부터 및/또는 코디네이터 디바이스(22)로부터 메시지들을 리스닝한다. 실시예들에서, 각각의 노드는 간격('I')의 전체 지속시간(τ) 동안 리스닝하고 있을 수 있고, 네트워크 내의 다른 노드들 또는 디바이스들로부터 임의의 수의 메시지들을 수신/히어링가능할 수 있다. 그러나, 노드는 노드가 간격에서 메시지를 송신한 후에 갱신된 메시지를 수신할지라도, 노드가 동일한 간격 동안 제2 갱신된 메시지를 송신할 수 없도록 각각의 간격('I')에서 메시지를 한 번만 송신하도록 구성될 수 있다. 따라서, 송신 후에, 노드는 다른 노드들/디바이스들로부터 메시지들을 계속해서 리스닝할 수 있다.
따라서, 도 2의 a에 도시된 바와 같이, 각각의 간격은 랜덤하게 선택된 송신 포인트, 즉 노드 또는 코디네이터 디바이스(22)가 메시지를 송신하는 간격 동안의 포인트를 포함하는 것으로 간주될 수 있다. 이것은 도 2의 a에서 검은 원 및 상방 화살표에 의해 표현된다. 간격('I')에 남아 있는 시간은 노드가 추가 송신을 송신할 수 없는(하지만 메시지들을 계속해서 리스닝할 수 있는) 시간을 표현하기 위해 파선으로 표시된다. 이것은 '리스닝 전용 시간'인 것으로 간주될 수 있다. 노드(10a 내지 10c)가 간격 내에서 메시지를 송신할 수 있는 시간은 (초기에 설명된 바와 같이) 랜덤이므로, 검은 원은 각각의 간격 내의 동일한 위치에 정확히 있지 않을 수 있다. 새로운 메시지는 송신이 이루어지기 전의 시간(도 2의 a에서 실선으로 표시됨) 동안 노드(10)에 의해 히어링되면, 노드(10)는 간격에서 새로운 메시지를 송신한다. 새로운 메시지가 '리스닝 전용 시간' 동안 노드(10)에 의해 히어링되면, 즉 송신이 이미 이루어진 후에, 노드(10)는 간격 내에서 구식의 또는 이전의 정보를 송신했을 것이다.
도 2의 a에 도시된 바와 같이, 제1 간격(I1)에서, 코디네이터 디바이스(22)는 새로운 메시지를 송신한다. 이것은 임의의 메시지, 예를 들어 새로운 코드, 새로운 명령어들, 또는 새로운 하트비트 메시지일 수 있다. 단순화를 위해, 도 2의 a는 하트비트 메시지들은 언급함으로써 설명되지만, 이것은 비제한적 예인 점이 이해될 것이다. 코디네이터 디바이스(22)에 의해 송신되는 하트비트 메시지는 도시된 바와 같이, 30의 표시자 값을 갖는다. 하트비트 메시지(30)는 동일한 간격 내에서 인근 노드들에 의해 히어링될 수 있다. 이상적으로, 하트비트 메시지(30)는 노드(10a)가 송신을 이루었기 전에 간격(I1)에서 노드(10a)에 의해 히어링된다. 그러나, 이러한 경우에, 노드(10a)는 그것이 코디네이터 디바이스(22)로부터 가장 최신의 메시지(하트비트 메시지(30))를 히어링하기 전에, 간격(I1) 내에서 송신을 이미 이루었다. 노드(10b)는 노드(10a)로부터 간격(I1) 내의 오래된 메시지(하트비트 메시지(29))를 히어링하고 따라서 구식의 메시지를 노드(10c)에 송신한다. 따라서, 일부 경우들에서, 하트비트 메시지는 하트비트 메시지가 코디네이터 디바이스(22)에 의해 송신되었으므로 동일한 간격 내에서 인근 노드들에 의해 히어링되지 않을 수 있다. 유사하게, 일부 경우들에서, 하트비트 메시지는 인근 노드가 동일한 간격에서 새로운 하트비트 메시지를 송신할 수 없도록, 단지 인근 노드가 그러한 간격 내에서 메시지를 이미 송신한 후에만, 동일한 간격 내에서 인근 노드들에 의해 히어링될 수 있다. 도 2의 a에 도시된 바와 같이, 노드(10a)는 동일한 간격 내의 간격(I1)에서 코디네이터 디바이스(22)에 의해 송신되는 하트비트 메시지(30)를 히어링하지 않는다. 이것은 간격(I1) 동안, 노드(10a)는 그것이 수신했던 가장 최신의 메시지를 송신하는 것을 의미하며, 이 메시지는 도 2의 a에서 코디네이터 디바이스(22)에 대한 이전의 또는 구식의 메시지(즉, 하트비트 메시지(29))이다. 따라서, 도시된 바와 같이, 각각의 노드(10a 내지 10c)는 노드가 간격(I1)에서 수신 또는 저장했던 가장 최신의 메시지를 송신한다.
제2 간격(I2) 동안, 코디네이터 디바이스(22)는 31의 표시자 값을 갖는 새로운 하트비트 메시지를 송신한다. 그러나, 제2 간격(I2) 동안, 노드(10a)는 그것이 송신을 이루었기 전에 새로운 하트비트 메시지(31)를 히어링하지 않는다. 따라서, 간격(I2)에서, 노드(10a)는 그것이 수신했던 가장 최신의 하트비트 메시지(즉, 하트비트 메시지(30))를 송신하고, 노드(10a)가 구식의 메시지를 송신한 후에 하트비트 메시지(31)만을 히어링한다. 따라서, 간격(I2)에서, 노드(10a)는 하트비트 메시지(30)를 인근 노드들에 송신한다. 노드(10a)는 이제 코디네이터보다 하나의 메시지만큼 뒤처지고, 구식의 메시지(30)를 네트워크 내의 다른 노드들에 전송하고 있다. 이러한 통신 에러는 네트워크를 통해 전파된다. 예를 들어, 간격(I2)에서, 노드들(10b 및 10c)는 하트비트 메시지(29)를 송신하는데, 왜냐하면 이것은 노드들이 히어링했던 가장 최신의 메시지이기 때문이다.
제3 간격(I3)에서, 노드(10b)는 그것이 노드(10a)로부터 가장 최신의 메시지(하트비트 메시지(31))를 히어링했기 전에 메시지(하트비트 메시지(29))를 송신한다. 따라서, 노드는 그것이 인근 노드로부터 가장 새로운 메시지(또는 임의의 메시지)를 히어링했기 전에 메시지를 송신하면, 노드는 구식의(이전의) 메시지를 송신한다. 따라서, 구식의(이전의) 메시지들은 하나 이상의 노드들이 갱신을 수신하기 전에 메시지를 송신하기 때문에 네트워크를 통해 전파될 수 있다. 이것은 하나 이상의 노드들이 코디네이터 디바이스(22)와 덜 동기화되고 있으면 발생할 수 있다. 문제는 노드들이 각각의 간격 내의 랜덤 시간에 메시지들을 송신하도록 구성되면 일부 경우들에서 발생할 수 있다. 예를 들어, 노드가 간격의 시작 근방에, 또는 간격의 송신 부분의 시작 근방에 메시지를 랜덤하게 송신하면, 노드는 갱신들/새로운 메시지들에 대한 충분히 긴 리스닝을 소비하지 않았을 수 있고 따라서 송신을 수행하기 전에 가장 최신의 메시지를 히어링하지 않았을 수 있다. 도 2의 a에 도시된 바와 같이, 노드(10b)는 그것이 노드(10a)로부터 갱신을 수신했기 전에 메시지를 송신했기 때문에 간격(I3)에서 구식의 하트비트 메시지(29)를 송신한다. 간격(I3)에서, 노드(10a)는 가장 새로운 하트비트 메시지(31)를 송신하고, 이것은 노드(10b)가 다음 송신을 이루기 전에(즉, 간격(I4)에서) 노드(10b)에 의해 수신되므로, 노드(10b)는 간격(I4)에서 가장 새로운 하트비트 메시지(31)를 송신한다.
도 2의 a는 노드(10c)가 4개의 간격들의 과정에 걸쳐 임의의 갱신된 메시지들을 수신하지 않았던 것을 도시한다. 이것은 간격들(I1 내지 I3)에서, 노드(10c)가 노드(10b)로부터 구식의 데이터를 수신하기 때문이고, 간격(I4)에서, 노드(10c)가 노드(10b)로부터 가장 새로운 메시지(하트비트 메시지(31))를 히어링했기 전에 메시지(하트비트 메시지(29))를 송신하기 때문이다. 따라서, 노드(10c)는 긴 시간 기간 동안, 하트비트 메시지 인덱스(또는 메시지 내의 일부 다른 표시자, 예를 들어 버전 번호 또는 시간스탬프)의 변화를 인식하지 못한다. 노드(10c)는 그것이 코디네이터 디바이스(22)에 대한 연결을 마찬가지로 분실했던 것을 결정한다. 따라서, 도 2의 a는 노드들/디바이스들이 송신 및 수신 에러들을 경험하지 않을지라도, 또는 네트워크 자체에 어떠한 통신 문제들이 없을지라도, 노드들이 네트워크의 코디네이터 디바이스(22) 및/또는 다른 부분들과 어떻게 비동기될 수 있는지를 도시한다.
도 2의 b는 동기 송신(좌측) 및 비동기 송신(우측)을 예시하는 개략도이다. 동기 송신은 노드(노드(10b))가 송신을 이루기 전에 간격 내에서 새로운 메시지(예를 들어, 새로운 하트비트 메시지)를 히어링하고, 그 다음에 동일한 간격 내에서 새로운 메시지를 송신할 때 발생한다. 노드(10b)는 메시지가 노드(10)에 의해 송신되는 동일한 간격에서 새로운 메시지를 히어링한다. 비동기 송신은 노드가 더 새로운 메시지를 히어링했기 전에 메시지를 송신하면 발생한다. 즉, 노드(10b)는 그것이 노드(10a)로부터 더 새로운 메시지(30)를 히어링했기 전에 메시지(29)를 송신한다. 그 결과, 노드(10b)는 다른 노드들이 비동기가 될 수 있도록 다른 노드들이 구식의 메시지를 히어링하게 한다.
에러는 하트비트 메시지들이 특정 통신 알고리즘들 또는 프로토콜들 하에 송신되는 방식 때문에 발생할 수 있다. 예를 들어, 상기 설명된 바와 같이, 메시지는 각각의 간격 동안의 특정 시간 프레임 내의 랜덤 포인트에서, 예를 들어 τ/2와 τ 사이, 또는 τ/4와 ¾τ 사이 등에서 송신될 수 있다. 그러나, 특정 노드가 간격 동안 충분히 길게 리스닝하지 않으면, 노드는 그것이 다른 노드로부터 새로운 메시지를 히어링했기 전에 메시지를 송신할 수 있다. 예를 들어, 제1 노드는 간격 내의 ¾τ에서 송신하는 것을 결정할 수 있는 반면에, 제2 노드는 동일한 간격 내의 τ/2에서 송신하는 것을 결정할 수 있다. 그 결과, 제2 노드는 제1 노드로부터 새로운 메시지를 히어링하기 전에 송신을 이미 이루었을 수 있다. 도 2의 a에 도시된 바와 같이, 이것은 (예를 들어, 노드(10b)가 간격(I2)에서 수행함에 따라) 노드가 다음 간격에서 최신의 메시지를 따라잡고 송신해야 하기 때문에 코디네이터 디바이스(22)와의 동기화의 상실을 야기하지 않을 수 있다. 이상적으로, 각각의 노드는 코디네이터 디바이스(22)와 동기화되거나, 그것이 최신의 메시지를 수신했으면 메시지만을 송신하도록 구성될 것이지만, 이것은 대규모 네트워크들에서 달성하기 어렵고 전파에서 플러딩 또는 상당한 지연들을 야기할 수 있다. 예를 들어, 각각의 노드가 송신을 이루기 전에 더 최신의 메시지를 대기하면, 노드들은 노드들이 어떤 것을 히어링했기 전에 간격이 만료되었기 때문에 간격에서 메시지를 잠재적으로 송신할 수 없었다. 특히, 각각의 노드가 송신을 이루기 전에 최신의 메시지를 대기하면, 코디네이터 디바이스(22)에서 더 멀리 떨어진 노드들은 코디네이터 디바이스(22)와 훨씬 더 비동기될 수 있다. 일부 시간 기간 동안 새로운 하트비트 메시지를 수신하지 않는 코디네이터 디바이스(22)에서 멀리 떨어진 노드들은 그들이 코디네이터 디바이스(22)와의 연결성을 상실했던 것을 가정할 수 있다. 이러한 노드들은 코디네이터 디바이스(22)를 재연결하거나, 이 디바이스와 재동기화하는 액션을 취할 필요가 있을 수 있다.
상기 언급된 바와 같이, 도 2의 a에서, 간격들('I')은 각각의 새로운 간격('I')이 시작될 때 코디네이터 디바이스(22)가 규정하도록 네트워크 내의 코디네이터 디바이스(22)에 의해 정의(또는 클로킹)될 수 있다. 코디네이터 디바이스(22)는 트리클 알고리즘을 구현할 수 있으며, 이 알고리즘은 각각의 간격('I')의 길이를 특정한다. 이러한 예에서, 각각의 노드(10a 내지 10c)는 노드(10a 내지 10c)가 코디네이터 디바이스(22)와 동일한 시간 포인트들에서 각각의 간격('I')의 시작 및 종료 포인트를 표시하도록 코디네이터 디바이스(22)와 동기화된다. 이것은 각각의 노드 및 디바이스의 클록(21)을 동기화함으로써, 또는 공통 클록(예를 들어, 네트워크 내의 모든 노드들 및 디바이스들에 의해 액세스가능한 클록)을 참조하기 위해 각각의 노드 및 디바이스를 구성함으로써 달성될 수 있다. 그 다음, 코디네이터 디바이스(22)는 언제 제1 간격을 시작할지를 각각의 노드에 표시할 수 있다. 그러나, 이것은 네트워크 내의 디바이스들 및 노드들을 동기화하기에 비효율적인 방식일 수 있다.
도 3은 통신 에러들(또는 동기화 에러들)이 다수의 노드들을 포함하는 통신 네트워크에서 어떻게 발생할 수 있는지를 예시하는 개략도이다. 도 2의 a와 비교하여, 도 3에서, 코디네이터 디바이스(22) 및 각각의 노드(10a 내지 10c)는 노드들 및 코디네이터 디바이스가 서로 반드시 동기화되는(또는 위상이 같은) 것은 아닐 수 있도록 각각의 간격 자체를 시작하고 종료할 수 있다. 모든 노드들 및 디바이스들이 동일한 통신 프로토콜 및 알고리즘을 따르므로, 각각의 노드 및 디바이스는 간격이 특정 길이(τ)를 갖는 것을 인식하고, 그들이 송신을 이룰 수 있는 각각의 간격에서 시간 프레임을 인식한다. 도 3에 도시된 바와 같이, 이것은 노드가 이웃 노드들에 대해 상이한 시간들에서 간격을 시작하고 종료할 수 있는 것을 의미한다. 따라서, 이러한 배열은 동일한 클록을 사용하기 위해 각각의 디바이스 및 노드에 대한 요구를 제거할 수 있지만, 이러한 배열은 동기화 에러들 및 이전의 메시지들이 네트워크를 통해 전파될 가능성을 증가시킬 수 있다.
동기화 에러들, 및 코디네이터 디바이스(22)에 대한 연결을 상실하는 확률은 전적으로, 도 2의 a 및 도 3에 도시된 배열들 중 어느 것이 사용되는지에 관계없이), 노드(10)와 코디네이터 디바이스(22) 사이의 거리 또는 홉 카운트가 증가함에 따라 가능성이 더 많아질 수 있다. 도 6은 코디네이터 디바이스와 노드 사이의 홉 카운트가 증가함에 따라 동기화 에러들(장애들)의 확률이 어떻게 증가할 수 있는지를 예시하는 그래프이다. 그래프는 다수의 노드들을 포함하고 스레드 통신 프로토콜을 사용하는 네트워크 내의 네트워크 장애의 모델에 기초한다. 그래프는 코디네이터 디바이스로부터의 홉 카운트의 함수로서, 네트워크 장애의 확률, 즉 노드가 4개의 간격들에 대한 새로운 하트비트 메시지를 히어링하지 않고 네트워크의 나머지로부터 단절될 가능성을 도시한다. (이것은 스레드 프로토콜에 기초하는 특정 모델이며, 여기서 4개 이상의 간격들에 대한 갱신의 부족은 노드가 네트워크 및 코디네이터 디바이스로부터 단절되게 하고, 그 자체의 서브 네트워크(또는 네트워크 분할)를 형성하게 한다. 그러나, 문제는 다른 프로토콜들을 구현하는 통신 네트워크들에서 관찰되었다. 어떠한 장애들도 4 홉인 노드가 코디네이터 디바이스에서 떨어져 있을 때까지 발생하지만, 이때 홉 카운트가 증가함에 따라, 네트워크 장애의 확률이 신속히 증가한다.
다른 수들의 최대 홉 카운트들을 갖는 네트워크들의 시뮬레이션들이 또한 수행되었다. (간격 길이와 같은 네트워크의 모든 다른 파라미터들은 각각의 시뮬레이션에서 동일하게 유지되었다. 네트워크 노드 카운트만은 라인 토폴로지 ― 홉 카운트 ― 가 변화되었음에 따라 시뮬레이션들 사이에서 변화되었다). 스레드 프로토콜은 4 홉이 코디네이터 디바이스와 노드 사이에서 허용되는 최대 수의 홉인 것을 규정한다. 스레드 프로토콜을 구현하는 4 홉 네트워크는 예를 들어 도 2의 a 및 도 3에 도시되고, 상기 설명된 타입의 임의의 통신 에러들에 직면하는 것 없이 적어도 3시간 동안 실행될 수 있다. 스레드 프로토콜은 16 홉이 코디네이터 디바이스와 노드 사이에서 허용되는 최대 수의 홉인 것을 규정하지만, 그러한 네트워크는 네트워크가 완전히 형성되기 전에 코히어런스(즉, 코디네이터 디바이스와의 동기화)를 상실할 수 있다. 스레드 프로토콜을 구현하는 9 홉 네트워크는 최소 및 최대 홉 카운트들 사이에 있다 ― 그러한 네트워크는 완전히 형성되지만 10분 내에 장애를 시작하는 것으로 관찰되었다. 이러한 타입의 장애들이 연결된 디바이스들의 네트워크에 대해 치명적일 수 있는 이유들 중 하나는 노드가 인근 노드들로부터 히어링하고 있는 메시지의 임의의 변화를 인식하지 못할 때(예를 들어, 하트비트 인덱스의 어떠한 변화를 인식하지 못할 때), 노드가 코디네이터 디바이스에 대한 연결성을 상실했던 것을 실현할 수 있기 때문이다. 이러한 연결성의 상실은 고정하기 더 어렵고 노드들이 코디네이터 디바이스에 대한 연결성을 상실할 가능성을 감소시키는 것이 더 간단할 수 있다.
따라서, 본 기술들은 네트워크를 통해 메시지들의 지연된 전파를 야기할 수 있고, 노드들이 네트워크에 대한 연결성을 상실하게 할 수 있는 네트워크 내의 상기 설명된 동기화 에러들을 식별하고 감소시키는 방법을 제공한다. 본 기술들의 실시예들은 상기 설명된 타입의 동기화 에러들을 식별하고 노드가 간격 내에서 메시지를 송신할 때, 즉 얼마나 빠르게 송신할지를 수정함으로써 에러들을 교정한다.
본 기술들은 예시적 예를 참조하여 설명된다. 이러한 예에서, 제1 시간 간격에서, 노드(10)는 인근 노드(또는 코디네이터 디바이스(22))로부터 제1 메시지를 수신하고, 데이터 저장소(14)에 메시지를 저장하고, 통신 모듈(12)을 사용하여 제1 메시지를 인근 노드들에 송신한다. 제1 메시지는 초기에 설명된 바와 같이, 메시지가 얼마나 '새롭거나' 또는 '최신인'지를 식별하기 위해 사용될 수 있는 표시자(예를 들어, 시간스탬프, 인덱스, 버전 번호 또는 다른 표시자)를 포함한다. 일부 나중의 시간에, 노드(10)는 표시자를 갖는 제2 메시지를 수신한다. 노드(10)는 (예를 들어, 프로세서(18)를 사용하여) 제1 메시지의 표시자와 제2 메시지의 표시자 사이에 차이가 있는지를 결정한다. 이것은 표시자들이 수치 값들 또는 인덱스들이면 간단한 감산일 수 있거나, 표시자들이 시간스탬프들이면 비교일 수 있다. 표시자들 사이의 차이를 결정하는 다른 기술들은 상기 설명되어 있다.
이러한 예에서, 노드(10)는 제1 및 제2 메시지들의 표시자들 사이의 차이(메시지들이 상이한 것을 의미함)가 있는 것을 결정하면, 이때 노드(10)는 2개의 메시지들을 수신하는 것 사이의 시간 지연(또는 시간 갭)을 결정한다. 이것은 각각의 메시지의 수신과 연관되는 시간이 데이터 저장소(14) 내에 저장되었으면, 또는 메시지 자체들이 시간스탬프를 포함하면 결정될 수 있다. 2개의 메시지들을 수신하는 것 사이의 시간 지연이 예상된 시간 프레임 내에 있으면, 노드(10)는 노드가 코디네이터 디바이스(22)와 여전히 잘 동기화되는 것을 결정한다. 그러나, 2개의 메시지들을 수신하는 것 사이의 시간 지연이 예상된 시간 프레임의 범위 밖에 있으면, 노드(10)는 노드가 코디네이터 디바이스(22)와 덜 동기화되는 것을 시작하고 있는 것을 결정한다(그것은 연결성 상실을 야기할 수 있음). 시간 지연이 얼마나 큰지에 따라, 노드(10)는 그것이 송신을 송신하는 시간을 변경한다. 비교적 작은 시간 지연은 (시간 지연이 상당한 동기화 에러들을 야기하기에 충분히 큰 것으로 간주되지 않기 때문에) 노드(10)가 다음 송신을 재촉하게 할 수 있는 반면에, 더 큰 시간 지연은 (시간 지연이 상당한 동기화 에러들 및 잠재적으로 연결성 장애를 야기할 수 있기 때문에) 노드가 다음 송신을 즉시 이루게 할 수 있다.
제1 메시지를 수신하는 것과 제2 메시지를 수신하는 것 사이의 시간 지연의 크기는 연결성 또는 통신 문제가 있는지(예를 들어, 노드(10)가 네트워크 내의 코디네이터 디바이스(22)와 덜 잘 동기화되고 있거나 비동기화되고 있는지)를 노드(10)가 결정할 수 있게 한다. 문제를 해결하기 위해, 또는 동기화 상실로부터 네트워크 장애의 위험을 감소시키기 위해, 노드(10)는 언제 다음 메시지가 노드(10)에 의해 송신될지를 조정한다. 초기에 설명된 바와 같이, 각각의 노드(10)는 메시지 송신을 위한 시간 프레임 내의 랜덤 포인트에서 메시지를 송신할 수 있다. 그러나, 노드(10)가 네트워크 장애에 대한 잠재적인 동기화 문제 및 잠재성을 식별하면, 노드(10)는 송신 포인트의 랜덤 선택이 무시되도록 언제 메시지가 송신될지를 조정한다. 예를 들어, 노드(10)는 네트워크를 통해 메시지를 전파할 시에 추가 지연들을 방지하기 위해 메시지 송신을 위한 현재 또는 후속 시간 프레임에서 메시지를 가능한 한 빠르게 송신할 수 있다. 다시 말하면, 노드(10)는 그것이 코디네이터 디바이스(22)와 덜 잘 동기화되고 있는 것을 실현하자마자, 노드(10)는 인근 노드들을 빠르게 갱신하려고 시도하기 위해, 노드가 각각의 시간 프레임 내의 랜덤 시간에 메시지들을 송신하고 있었던 경우보다 그것이 더 빠르게 수신했던 가장 최신의 메시지를 송신한다.
따라서, 실시예들에서, 통신 네트워크 내의 장치(10)가 제공되며, 장치는 메시지 송신을 위한 시간 프레임을 시작하고; 장치에서 메시지들을 수신하는 것 사이의 시간 지연을 타이밍하는 타이머(20); 및 제1 메시지를 수신하고 - 제1 메시지는 제1 표시자를 가짐 -; 제2 메시지를 수신하고 - 제2 메시지는 제2 표시자를 가짐 -; 제1 표시자와 제2 표시자가 상이한지를 결정하고, 만일 그렇다면, 타이머로부터, 제1 메시지 및 제2 메시지를 수신하는 것 사이의 시간 지연을 획득하고; 시간 지연이 시간 프레임의 지속시간을 초과하는지를 결정하고; 시간 지연 결정에 응답하여, 언제 메시지가 송신될지를 조정하는 통신 모듈(12)을 포함한다.
실시예들에서, 통신 모듈(12)은 시간 지연이 시간 프레임의 지속시간을 초과하지 않으면 메시지 송신을 위한 시간 프레임 내의 랜덤하게 선택된 포인트에서 메시지를 송신할 수 있다. 다시 말하면, 제2 메시지는 메시지들을 수신하는 예상된 시간(메시지 송신을 위한 시간 프레임의 길이와 같을 수 있음) 내에 통신 모듈(12)에 의해 수신되면, 통신 모듈(12)은 그것이 코디네이터 디바이스(22)에 여전히 잘 연결되거나, 이 디바이스와 잘 동기화되는 것을 결정하고, 그 결과, 언제 다음 송신이 발생할지를 조정할 필요가 없다.
그러나, 제1 및 제2 메시지들을 수신하는 것 사이의 시간 지연이 메시지 송신을 위한 시간 프레임의 지속시간보다 더 크면, 노드(10)는 메시지가 송신되는 특정 포인트를 규정하기 위해 통신 모듈을 사용함으로써 언제 메시지가 송신될지를 조정한다. 특정 포인트는 (여전히 실행중이면) 메시지 송신을 위한 현재 시간 프레임, 메시지 송신을 위한 후속 시간 프레임 내에 있거나, (예를 들어, 즉시) 다른 시간 포인트에 있을 수 있다. 다시 말하면, 노드(10)가 긴 시간 후에 갱신(즉, 새로운 메시지)를 수신하면, 노드(10)는 다른 노드들이 갱신을 가능한 한 빠르게 수신하는 것을 보장하기 위해 갱신을 빠르게 송신할 수 있다.
통신 모듈(12)은 시간 지연이 제1 및 제2 메시지들을 수신하는 것 사이에서 얼마나 큰지에 기초하여 메시지가 송신될 때 시간을 조정하는 법을 결정할 수 있다. 도 5는 메시지 송신을 위한 예시적 시간 프레임들, 및 언제 메시지가 송신될지를 조정하도록 노드를 트리거할 수 있는 임계 시간 지연들을 나타내는 테이블이다. 예를 들어, 일 실시예에서, 통신 모듈(12)은 메시지를 2초와 10초 사이의 시간 프레임 내에 한 번 송신할 수 있다. 이러한 실시예에서, 통신 모듈(12)은 모든 2초와 10초 사이에 새로운 메시지를 수신하는 것을 예상할 수 있다. 새로운 메시지가 이러한 시간 기간 내에 수신되면, 통신 모듈(12)은 노드(10)가 네트워크의 코디네이터 디바이스(22)에 잘 연결되거나, 이 디바이스와 잘 동기화되는 것을 가정할 수 있다. 이러한 경우에, 통신 모듈(12)은 언제 메시지가 송신될지를 조정하지 않을 수 있다. 그러나, 제1 및 제2 메시지들을 수신하는 것 사이의 시간 지연은 이러한 시간 기간의 범위 밖에 있지만, 제1 임계 시간(T1)(14초) 아래에 있으면, 통신 모듈(12)은 노드(10)가 코디네이터 디바이스(22)에 대한 연결을 상실하고 있거나, 이 디바이스와 덜 동기화되고 있을 수 있는 것을 결정하기 때문에 다음 메시지 송신을 재촉할 수 있다. 유사하게, 시간 지연은 새로운 메시지가 예상되는 시간 기간의 범위 밖에 있지만, 제2 임계 시간(T2)(35초)과 같거나, 이 시간에 가까우면, 통신 모듈(12)은 노드(10)(및/또는 다른 인근 노드들)가 코디네이터 디바이스(22)에 대한 연결을 상실하는 것에 가까운 것을 그것이 결정하기 때문에, 다음 메시지를 즉시 송신할 수 있다. 이러한 액션은 동기화 에러가 네트워크를 통해 전파되는 것을 방해할 수 있다. 그러나, 제1 및 제2 메시지들 사이의 시간 지연이 단절 시간(이러한 예에서 40초) 이상이면, 통신 모듈(12)은 그것이 코디네이터 디바이스(22)에 대한 연결을 상실했고, 따라서 통신 네트워크에 대한 연결을 상실했던 것을 가정한다. 이러한 단계에서, 노드(10)는 통신 네트워크에 재연결하고 코디네이터 디바이스(22)와 재동기화하는 액션을 취할 필요가 있다.
장치는 코디네이터 디바이스(22)가 고장났기 때문에, 또는 다른 노드 디바이스들(장치와 코디네이터 디바이스 사이에 위치됨)가 코디네이터 디바이스(22)에 대한 연결성을 상실하는 것으로 인해 네트워크가 분할되거나 분열되었기 때문에 코디네이터 디바이스(22)로부터 단절되었을 수 있다. 어떤 단절의 원인이든, 장치(10)는 원래의 코디네이터 디바이스(22)를 검색함으로써 통신 네트워크에 재연결하는 액션 및 원래의 코디네이터 디바이스(22)가 위치되는 네트워크 분할에 연결하는 시도를 취할 수 있다. 대안적으로, 장치(10)는 연결할 수 있는 임의의 네트워크 분할을 검색하는 액션을 취할 수 있다. 예를 들어, 다른 장치는 코디네이터 디바이스(22)에 대한 연결성을 상실하는 결과로서 새로운 네트워크 분할을 형성했을 수 있고, 장치(10)는 이러한 새로운 분할을 연결하도록 시도할 수 있다. 장치(10)는 새로운 네트워크 분할이 연결되는 것을 발견할 수 없으면, 장치(10)는 그 자체의 네트워크 분할을 형성하고 그러한 분할의 코디네이터의 역할을 하는 것을 시작할 수 있다.
다른 노드들/장치는 코디네이터 디바이스(22)에 대한 그들의 연결을 상실했을 수 있고, 따라서 장치(10)와 동일한 액션들을 취하는 것을 시작할 수 있다. 이것은 다수의 작은 분할들이 원래의 대형 네트워크 대신에 형성하는 상황을 야기할 수 있다. 그러나, 노드들/장치는 더 작은 네트워크 분할들을 병합하는 것을 시작할 수 있다. 각각의 네트워크 분할은 또한 분할이 얼마나 많은 노드들/장치를 포함하는지를 표시하는 분할 식별자를 포함할 수 있다. 디폴트에 의해, 장치(10)(및 모든 다른 노드들)는 단일 코디네이터 디바이스(22)를 갖는 단일 네트워크가 재형성되도록 가장 큰 분할을 연결한다. 개선된 네트워크 내의 코디네이터 디바이스는 원래의 코디네이터 디바이스와 동일하지 않을 수 있다. 이러한 네트워크 분할 및 네트워크 재형성의 프로세스는 장애 있는 네트워크들이 정상 동작을 빠르게 재형성하고 재개할 수 있도록 대단히 빠른 동작이다.
도 5는 메시지 송신을 위한 다른 예시적 시간 프레임들, 및 그들의 대응하는 임계 시간들(T1 및 T2) 및 단절 시간들을 도시한다. 이들은 예시적 예들일 뿐이고, 비제한적인 점이 이해될 것이다. 정확한 시간 프레임들, 임계 시간들 및 단절 시간들은 통신 프로토콜 의존적일 수 있다.
따라서, 실시예들에서, 제1 메시지 및 제2 메시지를 수신하는 것 사이의 시간 지연이 시간 프레임의 지속시간을 초과하면, 통신 모듈(12)은 시간 지연이 제1 임계 시간 지연(T1) 이하인지를 결정할 수 있고, 만일 그렇다면, 메시지가 메시지 송신을 위한 후속 시간 프레임의 시작에서 송신되는 것을 규정할 수 있다.
실시예들에서, 시간 지연이 시간 프레임의 지속시간을 초과하면, 통신 모듈(12)은 시간 지연이 제1 임계 시간 지연(T1)보다 더 크고, 제2 임계 시간 지연(T2)과 같거나 근사해지는지를 결정하고, 만일 그렇다면, 메시지를 즉시 송신한다.
실시예들에서, 시간 지연이 제2 임계 시간 지연(T2)을 초과하고 단절 시간 이상이면, 통신 모듈(12)은 상기 개략적으로 설명된 바와 같이, 장치가 통신 네트워크에 대한 연결성을 상실했던 것을 결정하고; 통신 네트워크에 재연결하는 액션을 취한다.
장치(10)에 의해 송신되는 메시지는 제1 메시지가 제2 메시지보다 더 새롭고 더 최신인지에 의존할 수 있거나, 역도 또한 같다. 즉, 통신 모듈(12)은 일반적으로 그것이 송신을 이룰 때마다 수신했던 가장 새로운 메시지(즉, 가장 최신의 메시지)를 송신하도록 구성된다. 송신들이 통신 네트워크 내에 이루어지는 방식으로 인해, 노드(10)는 메시지들이 코디네이터 디바이스에 의해 송신된 시간적 순서로 메시지들을 반드시 수신하는 것은 아닐 수 있다. 따라서, 제2 메시지는 반드시 더 새로운 메시지인 것은 아닐 수 있다. 따라서, 통신 모듈(12)은 더 새로운 메시지를 송신하기 위해 제1 및 제2 메시지 중 어느 것이 더 새로운 메시지인지를 결정할 필요가 있을 수 있다. 초기에 언급된 바와 같이, 이러한 결정은 제1 및 제2 메시지들에 사용되는 표시자의 타입에 의존할 수 있다.
따라서, 일반적으로 말하면, 통신 모듈(12)은 제1 메시지의 제1 표시자 및 제2 메시지의 제2 표시자를 비교하고, 비교에 응답하여, 제2 메시지가 제1 메시지보다 더 새로운지를 결정하고, 제2 메시지가 더 새로우면 수신된 제2 메시지를 송신함으로써 은 메시지가 송신될지를 결정할 수 있다. 다른 한편, 제1 메시지가 더 새로운 메시지인 것으로 결정되면, 통신 모듈(12)은 제1 메시지를 송신할 것이다. 통신 모듈(12)은 제1 표시자 및 제2 표시자가 동일하고/동등한 것을 결정하면, 통신 모듈(12)은 제1 및 제2 메시지가 동일한 것인 것을 가정하고, 그들이 통신 모듈(12)에 의해 수신되는 가장 새로운 메시지들이면 메시지들 중 어느 하나를 송신할 수 있다.
실시예들에서, 제1 표시자 및 제2 표시자는 둘 다 수치 표시자들이다. 코디네이터 디바이스(22)는 더 높은 수치 표시자 값이 더 새로운 메시지를 표시하도록 그것이 새로운 메시지를 송신할 때마다 표시자의 수치 값을 증가시킬 수 있다. 이러한 경우에, 통신 모듈은 제2 수치 표시자가 제1 수치 표시자보다 더 크면(즉, 더 큰 수이면) 제2 메시지가 제1 메시지보다 더 새로운지를 결정할 수 있다.
실시예들에서, 제1 표시자 및 제2 표시자는 둘 다 영숫자 표시자들이다. 코디네이터 디바이스(22)는 더 높은 영숫자 표시자 값이 더 새로운 메시지를 표시하도록 그것이 새로운 메시지를 사전 정의된 방식으로 송신할 때마다 표시자의 영숫자 값을 증가시킬 수 있다. 예를 들어, 영숫자 표시자들은 예를 들어 A0에서 시작되고, 다시 A0에서 시작되거나, AA0까지 계속되기 전에, A9까지, 그 다음 B0, B1 등에서 Z9까지 증분적으로 증가될 수 있다. 이러한 경우에, 통신 모듈은 제2 영숫자 표시자가 제1 영숫자 표시자보다 더 크면 제2 메시지가 제1 메시지보다 더 새로운지를 결정할 수 있다.
실시예들에서, 제1 표시자 및 제2 표시자는 둘 다 시간스탬프들이다. 이러한 경우에, 통신 모듈(12)은 제1 시간스탬프와 제2 시간스탬프의 시간적 순서를 결정함으로써 제2 메시지가 제1 메시지보다 더 새로운지를 결정할 수 있다.
실시예들에서, 제1 표시자 및 제2 표시자는 랜덤 순서들의 문자들(예를 들어, 숫자들, 글자들, 특수 문자들)이다. 표시자는 새로운 메시지가 디바이스에 의해 송신될 때 코디네이터 디바이스(22)에 의해 랜덤하게 발생될 수 있다. 이러한 경우에, 제1 및 제2 표시자들은 제1 및 제2 메시지들 중 어느 것이 더 새로운 메시지인지를 통신 모듈(12)이 단독으로 결정가능하지 않을 수 있다. 따라서, 이러한 경우에, 통신 모듈은 새로운 메시지가 예상되는 시간 기간 내에 제2 메시지가 수신되었는지를 결정함으로써 제2 메시지가 제1 메시지보다 더 새로운지를 결정할 수 있다. 즉, 통신 모듈(12)은 제1 표시자와 제2 표시자가 상이한 것을 결정하면, 통신 모듈(12)은 새로운 메시지가 수신되는 것으로 예상되는 시간 기간 내에 제2 메시지가 수신되었으면, 이때 제2 메시지가 더 새로운 메시지인 것을 간단히 가정할 수 있다.
통신 모듈(12)은 데이터 저장소(14)를 포함할 수 있다. 데이터 저장소(14)는 메시지들이 통신 모듈(12)에 의해 수신될 때 메시지들을 저장하도록 구성될 수 있다. 따라서, 데이터 저장소(14)는 제1 메시지가 통신 모듈(12)에 의해 수신될 때 제1 메시지를 저장할 수 있다. 제2 메시지를 수신한 후에, 통신 모듈(12)은 제2 메시지가 제1 메시지보다 더 새로운 것(즉, 더 최신인 것)을 결정하면, 이때 장치는 저장된 제1 메시지를 제거할 수 있고 데이터 저장소(14)에 수신된 제2 메시지를 저장할 수 있다.
따라서, 본원에 설명되는 바와 같이, 장치(10)는 그것이 네트워크 내의 코디네이터 디바이스(22)와 비동기되는 것을 시작하고 있는 것을 결정하면, 장치(10)는 다른 노드들이 새로운 메시지를 더 빠르게 수신할 수 있게 하기 위해 새로운 메시지를 더 빠르게 또는 가능한 한 빠르게 송신함으로써 문제를 완화하려고 시도한다. 이러한 방식으로, 노드(10)는 코디네이터 디바이스(22)를 '따라잡고' 동기화 에러들이 네트워크를 통해 전파되는 것을 방지하려고 시도한다.
상기 설명되고 도 5에 도시된 바와 같이, 메시지가 송신되는 포인트에 이루어지는 조정은 일시적일 수 있고, 메시지들을 수신하는 것 사이의 시간 지연의 크기에 따라 변화될 수 있다.
실시예들에서, 통신 네트워크는 메시 토폴로지로 배열되는 복수의 노드들을 포함할 수 있고, 각각의 노드(10)의 통신 모듈(12)은 메시지를 복수의 노드들 중 적어도 하나의 노드에 브로드캐스팅함으로써 메시지를 송신하도록 구성될 수 있다. 부가적으로 또는 대안적으로, 통신 네트워크는 라인 토폴로지로 배열되는 복수의 노드들을 포함할 수 있고, 각각의 노드(10)의 통신 모듈(12)은 메시지를 라인 토폴로지 내의 이웃 노드에 유니캐스팅함으로써(또는 다른 방법으로) 메시지를 송신하도록 구성될 수 있다.
이제 도 4를 참조하면, 이것은 통신 네트워크에서 통신/동기화 에러를 검출하고 통신 네트워크의 나머지에 동기화 에러의 효과를 완화시키는 단계들을 취하는 예시적 단계들의 흐름도를 도시한다. 프로세스는 개시 단계(S20)에서 시작되고 단계(S22)에서, 노드(10)는 인근 노드 또는 코디네이터 디바이스(22)로부터 제1 메시지를 수신한다. 제1 메시지는 제1 표시자, 예를 들어 하트비트 메시지에 대한 인덱스 값, 메시지에 포함되는 코드에 대한 버전 번호, 언제 메시지가 발생되었는지를 표시하는 시간스탬프 등을 포함한다. 노드(10)는 데이터 저장소(14)에 제1 메시지를 임의로 저장할 수 있고(S24), 메시지를 인근 노드들에 송신할 수 있다.
나중의 일부 시간에(파선 화살표에 의해 표시되는 바와 같이), 노드(10)는 제2 표시자를 갖는(바람직하게는 제1 표시자의 것과 동일한 타입의) 제2 메시지를 수신한다(단계(S26)). 제1 메시지를 수신하는 것과 제2 메시지를 수신하는 것 사이의 시간 지연이 있다: 이러한 시간 지연은 노드(10)의 타이머(20)에 의해 감시/추적되거나 다른 방법으로 결정될 수 있다. 단계(S28)에서, 노드(10)는 메시지들이 상이한지를 결정하기 위해 제1 메시지의 제1 표시자와, 제2 메시지의 제2 표시자 사이의 차이를 산출한다. 메시지들이 상이한 것으로 결정되지 않으면(즉, 제1 표시자와 제2 표시자가 동일하기 때문에), 노드(10)의 통신 모듈은 송신을 위한 디폴트 시간 프레임(프로토콜 의존적일 수 있음)에서 메시지를 송신한다(단계(S32)). 통신 모듈(12)에 의해 송신되는 메시지는 제1 또는 제2 메시지일 수 있거나, 이것이 제1 또는 제2 메시지보다 더 새로운 것으로 결정되면 다른 메시지일 수 있다.
단계(S30)에서, 메시지들이 상이한 것으로 결정되면(제1 표시자와 제2 표시자가 상이하기 때문에), 노드(10)의 통신 모듈은 제1 메시지와 제2 메시지를 수신하는 것 사이의 시간 지연을 결정한다. 구체적으로, 통신 모듈은 시간 지연이 제1 임계 T1 아래에 있는지를 결정한다(단계(S34)). 시간 지연이 제1 임계 T1 아래에 있을 때, 통신 모듈은 그것이 코디네이터 디바이스(22)와 여전히 잘 연결되거나, 이 디바이스와 잘 동기화되는 것을 가정한다. 이러한 경우에, 통신 모듈은 상기 설명된 바와 같이, 메시지 송신을 위한 시간 프레임 내의 랜덤 포인트에서 메시지를 송신한다(단계(S32)).
시간 지연이 제1 임계 T1보다 작지 않으면, 통신 모듈은 시간 지연이 제1 임계 T1과 같거나, 제1 임계 T1보다 더 크지만 제1 임계 T1에 가까운지를 결정한다. 이러한 경우에, 노드(10)는 그것이 코디네이터 디바이스(22)와 덜 동기화되는 것을 시작하고 있는 것을 결정하고, 따라서 언제 다음 메시지가 송신될지를 조정한다. 구체적으로, 노드(10)는 덜 동기화되는 다른 노드들의 위험을 감소시키기 위해 메시지 송신을 재촉한다(단계(S38)).
시간 지연이 제1 임계 T1보다 더 크고 제2 임계 T2에 가깝거나, 제2 임계 T2와 같으면, 통신 모듈은 그것이 코디네이터 디바이스(22)에 대한 연결 및 이 디바이스와의 동기화를 상실하는 것에 가까운 것을 결정한다. 이러한 경우에, 통신 모듈은 다음 메시지 송신을 즉시 수행한다(단계(S42)).
시간 지연이 제2 임계 T2보다 더 크고 단절 시간 위에 있으면(예를 들어 도 5 참조), 통신 모듈은 노드(10)가 코디네이터 디바이스(22)에 대한 연결을 상실했고, 따라서 통신 네트워크에 대한 연결을 상실했던 것을 가정한다. 이러한 경우에, 노드(10)는 상기 설명된 바와 같이, 네트워크 및 코디네이터 디바이스(22)에 재연결하기 위해 단절에 응답하여 액션을 취한다. 그러나, 단계들(S34, S36 및 S40)에서 이루어지는 결정들에 응답하여 통신 노드에 의해 수행되는 액션들은 단절되는 노드(10)의 확률을 감소시켜야 한다. 그 다음, 프로세스는 단계(S48)에서 종료된다.
따라서, 실시예들에서, 통신 네트워크에서 메시지 전파 지연들을 식별하는 방법이 제공되며, 방법은 제1 표시자를 갖는 제1 메시지를 수신하는 단계; 제2 표시자를 갖는 제2 메시지를 수신하는 단계; 제1 표시자와 제2 표시자가 상이한지를 결정하고, 만일 그렇다면, 제1 메시지를 수신하는 것과 제2 메시지를 수신하는 것 사이의 시간 지연을 결정하는 단계; 시간 지연이 메시지 송신을 위한 시간 프레임의 지속시간을 초과하는지를 결정하는 단계; 및 시간 지연 결정에 응답하여, 언제 메시지가 송신될지를 조정하는 단계를 포함한다.
본 기술들의 실시예들은 또한 프로세서 상에 구현될 때, 프로세서가 본원에 설명되는 방법들을 수행하게 하는 코드를 기억하고 있는 비일시적 데이터 캐리어를 제공한다.
기술들은 상기 설명된 방법들을 예를 들어 일반 목적 컴퓨터 시스템 또는 디지털 신호 프로세서(digital signal processor)(DSP) 상에 구현하기 위해 프로세서 제어 코드를 더 제공한다. 기술들은 또한 실행중일 때, 상기 방법들 중 어느 것을, 특히 비일시적 데이터 캐리어 ― 예컨대 디스크, 마이크로프로세서, CD- 또는 DVD-ROM, 프로그래밍된 메모리 예컨대 판독 전용 메모리(펌웨어) 상에, 또는 데이터 캐리어 예컨대 광 또는 전기 신호 캐리어 상에 구현하기 위해 프로세서 제어 코드를 기억하고 있는 캐리어를 제공한다. 코드는 캐리어 예컨대 디스크, 마이크로프로세서, CD- 또는 DVD-ROM, 프로그래밍된 메모리 예컨대 비휘발성 메모리(예를 들어, 플래시) 또는 판독 전용 메모리(펌웨어) 상에 제공될 수 있다. 기술들의 실시예들을 구현하는 코드(및/또는 데이터)는 종래의 프로그래밍 언어(해석되거나 컴파일된) 예컨대 C인 소스, 객체 또는 실행가능 코드, 또는 어셈블리 코드, 주문형 집적 회로(Application Specific Integrated Circuit)(ASIC) 또는 필드 프로그램가능 게이트 어레이(Field Programmable Gate Array)(FPGA)를 셋업하거나 제어하는 코드, 또는 하드웨어 기술 언어 예컨대 VerilogTM 또는 초고속 집적 회로 하드웨어 기술 언어)(Very high speed integrated circuit Hardware Description Language)(VHDL)에 대한 코드를 포함할 수 있다. 통상의 기술자가 이해하는 바와 같이, 그러한 코드 및/또는 데이터는 다른 통신하는 복수의 결합된 구성요소들 사이에 분산될 수 있다. 기술들은 시스템의 구성요소들 중 하나 이상에 결합되는 마이크로프로세서, 작업 메모리 및 프로그램 메모리를 포함하는 컨트롤러를 포함할 수 있다.
상기 설명된 기술들에 대한 동작들을 수행하는 컴퓨터 프로그램 코드는 객체 지향 프로그래밍 언어들 및 종래의 절차적 프로그래밍 언어들을 포함하는, 하나 이상의 프로그래밍 언어들의 임의의 조합으로 기입될 수 있다. 코드 구성요소들은 절차들, 방법들 등으로 구체화될 수 있고, 고유 명령어 세트의 다이렉트 머신 명령어들로부터 하이 레벨 컴파일 또는 해석 언어 구성소들까지, 추상화의 레벨들 중 어느 것에서 명령어들 또는 명령어들의 시퀀스들의 형태를 취할 수 있는 서브구성요소들을 포함할 수 있다.
또한 본 기술들의 바람직한 실시예들에 따른 논리 방법의 전부 또는 일부는 상기 설명된 방법들의 단계들을 수행하기 위해 로직 소자들을 포함하는 로직 장치에서 적절히 구체화될 수 있다는 점, 및 그러한 로직 소자들이 예를 들어 프로그램가능 로직 어레이 또는 주문형 집적 회로에서 로직 게이트들과 같은 구성요소들을 포함할 수 있다는 점이 본 기술분야의 통상의 기술자에게 분명할 것이다. 그러한 로직 배열은 예를 들어 고정 또는 송신가능 캐리어 매체들을 사용하여 저장되고 송신될 수 있는 가상 하드웨어 기술자 언어를 사용하여 그러한 어레이 또는 회로에서 로직 구조들을 일시적으로 또는 영구적으로 설정하는 인에이블링 요소들에서 더 구체화될 수 있다.
일 실시예에서, 본 기술들은 기능 데이터를 갖는 데이터 캐리어의 형태로 실현될 수 있으며, 상기 기능 데이터는 컴퓨터 시스템 또는 네트워크로 로딩되고 그것에 의해 동작될 때, 상기 컴퓨터 시스템이 상기 설명된 방법의 모든 단계들을 수행할 수 있게 하기 위해 기능 컴퓨터 데이터 구조들을 포함한다.
본 기술분야의 통상의 기술자들은 상술한 것이 최상의 모드인 것으로 간주되는 것을 설명하는 동안 그리고 본 기술들을 수행하는 적절한 다른 모드들의 경우, 본 기술들이 바람직한 실시예의 이러한 설명에 개시되는 특정 구성들 및 방법들에 제한되지 않아야 하는 것을 이해할 것이다. 본 기술분야의 통상의 기술자들은 본 기술들이 광범위한 응용들을 갖는 것, 및 실시예들이 첨부된 청구항들에 정의된 바와 같이 임의의 발명 개념으로부터 벗어나는 것 없이 광범위한 수정들을 취할 수 있는 것을 인식할 것이다.
Claims (17)
- 통신 네트워크 내의 장치로서,
메시지 송신을 위한 시간 프레임을 시작하고;
상기 장치에서 메시지들을 수신하는 것 사이의 시간 지연을 결정하는
타이머; 및
제1 메시지를 수신하고 - 상기 제1 메시지는 제1 표시자를 가짐 -;
제2 메시지를 수신하고 - 상기 제2 메시지는 제2 표시자를 가짐 -;
상기 제1 표시자와 상기 제2 표시자가 상이한지를 결정하고, 만일 그렇다면,
상기 타이머로부터, 상기 제1 메시지 및 상기 제2 메시지를 수신하는 것 사이의 시간 지연을 획득하고;
상기 시간 지연이 상기 시간 프레임의 지속시간을 초과하는지를 결정하고;
상기 시간 지연 결정에 응답하여, 언제 메시지가 송신될지를 조정하는
통신 모듈
을 포함하는 장치. - 제1항에 있어서, 상기 통신 모듈은 상기 시간 지연이 상기 시간 프레임의 지속시간을 초과하지 않으면, 메시지 송신을 위한 시간 프레임 내의 랜덤하게 선택된 포인트에서 메시지를 송신하는 장치.
- 제1항 또는 제2항에 있어서, 언제 메시지가 송신될지를 조정하는 것은,
메시지가 송신될 특정 포인트를 규정하기 위해 상기 통신 모듈을 사용하는 것을 포함하는 장치. - 제1항 또는 제2항에 있어서, 상기 시간 지연이 상기 시간 프레임의 지속시간을 초과하면, 상기 통신 모듈은,
상기 시간 지연이 제1 임계 시간 지연(T1) 이하인지를 결정하고, 만일 그렇다면,
메시지가 메시지 송신을 위한 후속 시간 프레임의 시작시에 송신될 것을 규정하는 장치. - 제4항에 있어서, 상기 시간 지연이 상기 시간 프레임의 지속시간을 초과하면, 상기 통신 모듈은,
상기 시간 지연이 상기 제1 임계 시간 지연(T1)보다 더 크고, 제2 임계 시간 지연(T2)과 같거나 근사해지고 있는지를 결정하고, 만일 그렇다면,
메시지를 즉시 송신하는 장치. - 제5항에 있어서, 상기 시간 지연이 상기 제2 임계 시간 지연(T2)을 초과하고 단절 시간 이상이면, 상기 통신 모듈은,
상기 장치가 상기 통신 네트워크에 대한 연결성을 상실했다고 결정하고;
상기 통신 네트워크에 재연결하는 액션을 취하는 장치. - 제1항 또는 제2항에 있어서, 상기 통신 모듈은,
상기 제1 메시지의 제1 표시자 및 상기 제2 메시지의 제2 표시자를 비교하고,
상기 비교에 응답하여, 상기 제2 메시지가 상기 제1 메시지보다 더 새로운지를 결정하고,
상기 제2 메시지가 더 새로우면, 상기 수신된 제2 메시지를 송신함으로써
어느 메시지가 송신될지를 결정하는 장치. - 제7항에 있어서, 상기 제1 표시자 및 상기 제2 표시자는 둘 다 수치 표시자들이고, 상기 통신 모듈은 상기 제2 수치 표시자가 상기 제1 수치 표시자보다 더 크면, 상기 제2 메시지가 상기 제1 메시지보다 더 새로운지를 결정하는 장치.
- 제7항에 있어서, 상기 제1 표시자 및 상기 제2 표시자는 둘 다 영숫자 표시자들이고, 상기 통신 모듈은 제2 영숫자 표시자가 상기 제1 영숫자 표시자보다 더 크면, 상기 제2 메시지가 상기 제1 메시지보다 더 새로운지를 결정하는 장치.
- 제7항에 있어서, 상기 제1 표시자 및 상기 제2 표시자는 둘 다 시간스탬프들이고, 상기 통신 모듈은 제1 시간스탬프와 제2 시간스탬프의 시간적 순서를 결정함으로써 상기 제2 메시지가 상기 제1 메시지보다 더 새로운지를 결정하는 장치.
- 제7항에 있어서, 상기 제1 표시자 및 상기 제2 표시자는 랜덤 순서들의 문자들이고, 상기 통신 모듈은 새로운 메시지가 예상되는 시간 기간 내에 상기 제2 메시지가 수신되었는지를 결정함으로써 상기 제2 메시지가 상기 제1 메시지보다 더 새로운지를 결정하는 장치.
- 제1항 또는 제2항에 있어서, 상기 제1 메시지가 상기 통신 모듈에 의해 수신될 때 상기 제1 메시지를 저장하기 위한 데이터 저장소를 더 포함하는 장치.
- 제12항에 있어서, 상기 장치는 상기 제2 메시지가 상기 제1 메시지보다 더 새로우면, 상기 저장된 제1 메시지를 제거하고 상기 수신된 제2 메시지를 상기 데이터 저장소에 저장하는 장치.
- 제1항 또는 제2항에 있어서, 상기 통신 네트워크는 메시 토폴로지로 배열되는 복수의 노드들을 포함하고, 상기 통신 모듈은 메시지를 브로드캐스팅함으로써 메시지를 송신하도록 구성되는 장치.
- 제1항 또는 제2항에 있어서, 상기 통신 네트워크는 라인 토폴로지로 배열되는 복수의 노드들을 포함하고, 상기 통신 모듈은 상기 메시지를 상기 라인 토폴로지 내의 이웃 노드에 유니캐스팅함으로써 메시지를 송신하도록 구성되는 장치.
- 통신 네트워크에서 메시지 전파 지연들을 식별하는 방법으로서,
제1 표시자를 갖는 제1 메시지를 수신하는 단계;
제2 표시자를 갖는 제2 메시지를 수신하는 단계;
상기 제1 표시자와 상기 제2 표시자가 상이한지를 결정하고, 만일 그렇다면,
상기 제1 메시지를 수신하는 것과 상기 제2 메시지를 수신하는 것 사이의 시간 지연을 결정하는 단계;
상기 시간 지연이 메시지 송신을 위한 시간 프레임의 지속시간을 초과하는지를 결정하는 단계; 및
상기 시간 지연 결정에 응답하여, 언제 메시지가 송신될지를 조정하는 단계
를 포함하는 방법. - 비일시적 데이터 캐리어로서,
프로세서 상에 구현될 때, 상기 프로세서로 하여금 임의의 제16항에 기재된 방법을 수행하게 하는 코드를 실어나르는 비일시적 데이터 캐리어.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1616417.0 | 2016-09-28 | ||
GB1616417.0A GB2554638B (en) | 2016-09-28 | 2016-09-28 | Error detection in communication networks |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180035145A KR20180035145A (ko) | 2018-04-05 |
KR102304699B1 true KR102304699B1 (ko) | 2021-09-27 |
Family
ID=57539819
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170122582A KR102304699B1 (ko) | 2016-09-28 | 2017-09-22 | 통신 네트워크들 내의 에러 검출 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11012335B2 (ko) |
EP (1) | EP3301873B1 (ko) |
KR (1) | KR102304699B1 (ko) |
CN (1) | CN107872362A (ko) |
GB (1) | GB2554638B (ko) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8677256B2 (en) * | 2011-12-29 | 2014-03-18 | Jacob J. Dayan | Graphic-based electronic signature management system and method |
US10095372B2 (en) * | 2016-03-14 | 2018-10-09 | Motorola Mobility Llc | Devices and methods for modifying temporally dependent content elements of electronic communications |
US10397821B2 (en) * | 2017-03-07 | 2019-08-27 | Itron Networked Solutions, Inc. | Reduced latency operating modes for wireless mesh networks |
US10416974B2 (en) | 2017-10-06 | 2019-09-17 | Chicago Mercantile Exchange Inc. | Dynamic tracer message logging based on bottleneck detection |
US10587477B2 (en) * | 2018-01-08 | 2020-03-10 | Electronics And Telecommunications Research Institute | Self-organizing network method of internet of things and apparatus performing the method |
US10841201B2 (en) * | 2018-02-07 | 2020-11-17 | Gooee Limited | System and method for managing and controlling a dynamic tunneling protocol in a mesh network |
US10917254B2 (en) | 2018-02-07 | 2021-02-09 | Gooee Limited | System and method of utilizing an interference mitigating protocol in mesh networks |
US11038715B2 (en) | 2018-02-07 | 2021-06-15 | Gooee Limited | System and method for identifying specific/best path in a mesh network |
US10715422B2 (en) * | 2018-07-03 | 2020-07-14 | Cisco Technology, Inc. | Proactive reform of directed acyclic graph by accelerating parent advertisements |
US10965569B2 (en) * | 2018-11-30 | 2021-03-30 | Sap Se | IoT monitoring |
US11556407B2 (en) * | 2019-09-15 | 2023-01-17 | Oracle International Corporation | Fast node death detection |
DE112019007998T5 (de) * | 2019-12-25 | 2022-12-15 | Mitsubishi Electric Corporation | Fernbedienungsvorrichtung und Fernbedienungsverfahren |
CN111935309B (zh) * | 2020-09-17 | 2020-12-29 | 武汉中科通达高新技术股份有限公司 | 一种循环任务管理方法及装置 |
WO2024173205A1 (en) * | 2023-02-15 | 2024-08-22 | Zoom Video Communications, Inc. | Liveness protocol with clock-drift correction for an encrypted videoconference |
CN116527617B (zh) * | 2023-06-29 | 2023-10-03 | 北京华龙通科技有限公司 | 用于容迟容断网络的即时通信方法、系统、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010005361A1 (en) | 1999-12-22 | 2001-06-28 | Lipsanen Mikko Antero | Telecommunication network synchronisation |
US20120057479A1 (en) | 2010-09-06 | 2012-03-08 | Tatsuya Maruyama | Communication control unit and communication control system |
US20130191486A1 (en) | 2012-01-24 | 2013-07-25 | Sony Corporation | Time control apparatus, time control method, and program |
US20160132934A1 (en) | 2014-11-12 | 2016-05-12 | Kahuna, Inc. | Effective Mobile Marketing |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6356555B1 (en) * | 1995-08-25 | 2002-03-12 | Terayon Communications Systems, Inc. | Apparatus and method for digital data transmission using orthogonal codes |
US6118769A (en) * | 1997-05-01 | 2000-09-12 | Itt Manufacturing Enterprises, Inc. | Method and apparatus for voice intranet repeater and range extension |
US6611495B1 (en) * | 1999-02-22 | 2003-08-26 | Telefonaktiebolaget Lm Ericsson (Publ) | System and method for improved data transfer in packet-switched communication networks |
US6928076B2 (en) * | 2000-09-22 | 2005-08-09 | Intel Corporation | System and method for controlling signal processing in a voice over packet (VoP) environment |
US7304948B1 (en) * | 2000-12-29 | 2007-12-04 | Nortel Networks Limited | Congestion control for signalling transport protocols |
WO2004102887A1 (ja) * | 2003-05-16 | 2004-11-25 | Sony Corporation | 無線通信システム、無線通信装置及び無線通信方法、並びにコンピュータ・プログラム |
FR2871006B1 (fr) * | 2004-05-28 | 2008-09-12 | Thales Sa | Procede et systeme de synchronisation distribuee |
EP1705620A1 (de) * | 2005-03-24 | 2006-09-27 | ista Shared Services GmbH | Verfahren zur Synchronisation von Netzknoten und zugehöriges Netzwerk |
WO2007144412A1 (de) * | 2006-06-14 | 2007-12-21 | Continental Teves Ag & Co. Ohg | Verfahren zum übertragen von messdaten und sensoreinrichtung |
KR100819037B1 (ko) * | 2006-09-29 | 2008-04-02 | 한국전자통신연구원 | 무선 센서 네트워크의 시간 동기화 방법 및 센서 노드 |
US20100034191A1 (en) * | 2006-10-12 | 2010-02-11 | Koninklijke Philips Electronics N. V. | Method and system for time synchronization in a sensor network |
WO2008101394A1 (fr) * | 2007-02-13 | 2008-08-28 | Shan Dong University | Procédé synchrone en temps réel et réseau synchrone reposant sur le standard ethernet |
JP4760978B2 (ja) * | 2007-03-28 | 2011-08-31 | 株式会社安川電機 | 通信装置、同期通信システムおよび同期通信方法 |
US9516116B2 (en) * | 2008-06-06 | 2016-12-06 | Apple Inc. | Managing notification service connections |
KR101114702B1 (ko) * | 2008-12-18 | 2012-02-29 | 삼성전자주식회사 | 무선 통신 시스템에서 노드들간의 시간 동기화 방법 및 시스템 |
US8824449B2 (en) * | 2009-03-05 | 2014-09-02 | Chess Et International Bv | Synchronization of broadcast-only wireless networks |
US20110016232A1 (en) * | 2009-07-15 | 2011-01-20 | Electronics And Telecommunications Research Institute | Time stamping apparatus and method for network timing synchronization |
US8644352B1 (en) * | 2010-03-12 | 2014-02-04 | Marvell International Ltd. | System and method for accurate time sampling in presence of output delay |
CN102934379B (zh) * | 2010-06-11 | 2017-05-24 | 网络洞察力知识产权公司 | 用于同步网络的节点和系统 |
JP6075585B2 (ja) * | 2012-12-31 | 2017-02-08 | ▲ホア▼▲ウェイ▼技術有限公司Huawei Technologies Co.,Ltd. | デバイス対デバイス通信方法、装置、及びシステム |
US9936470B2 (en) * | 2013-02-07 | 2018-04-03 | Commscope Technologies Llc | Radio access networks |
US9723580B2 (en) * | 2014-02-21 | 2017-08-01 | Summit Semiconductor Llc | Synchronization of audio channel timing |
JP6481807B2 (ja) * | 2014-03-07 | 2019-03-13 | 日本電気株式会社 | 時刻同期方法、ネットワークシステム、cpu、中継機器、およびユーザ機器 |
US9936009B2 (en) * | 2014-05-22 | 2018-04-03 | Qualcomm Incorporated | Systems and methods of operating a device of a data path group network |
US9559999B1 (en) * | 2014-05-30 | 2017-01-31 | EMC IP Holding Company LLC | Method and system for processing large scale emails and limiting resource consumption and interruption therefrom |
US9992088B1 (en) * | 2014-11-07 | 2018-06-05 | Speedy Packets, Inc. | Packet coding based network communication |
US9671822B2 (en) * | 2014-12-11 | 2017-06-06 | Khalifa University Of Science, Technology And Research | Method and devices for time transfer using end-to-end transparent clocks |
CN105792346A (zh) * | 2016-03-04 | 2016-07-20 | 海能达通信股份有限公司 | 同步方法、节点装置及无线mesh网络系统 |
KR102060943B1 (ko) * | 2016-08-29 | 2019-12-31 | 미쓰비시덴키 가부시키가이샤 | 통신 장치, 통신 방법 및 기억 매체에 저장된 통신 프로그램 |
US10812434B2 (en) * | 2017-03-23 | 2020-10-20 | Blackberry Limited | Apparatus and method for maintaining message databases in eventual consistency distributed database systems |
-
2016
- 2016-09-28 GB GB1616417.0A patent/GB2554638B/en not_active Expired - Fee Related
-
2017
- 2017-09-13 US US15/703,192 patent/US11012335B2/en active Active
- 2017-09-20 EP EP17192171.1A patent/EP3301873B1/en not_active Not-in-force
- 2017-09-22 KR KR1020170122582A patent/KR102304699B1/ko active IP Right Grant
- 2017-09-27 CN CN201710885369.9A patent/CN107872362A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010005361A1 (en) | 1999-12-22 | 2001-06-28 | Lipsanen Mikko Antero | Telecommunication network synchronisation |
US20120057479A1 (en) | 2010-09-06 | 2012-03-08 | Tatsuya Maruyama | Communication control unit and communication control system |
US20130191486A1 (en) | 2012-01-24 | 2013-07-25 | Sony Corporation | Time control apparatus, time control method, and program |
US20160132934A1 (en) | 2014-11-12 | 2016-05-12 | Kahuna, Inc. | Effective Mobile Marketing |
Also Published As
Publication number | Publication date |
---|---|
US20180091407A1 (en) | 2018-03-29 |
CN107872362A (zh) | 2018-04-03 |
KR20180035145A (ko) | 2018-04-05 |
GB201616417D0 (en) | 2016-11-09 |
GB2554638B (en) | 2019-12-04 |
EP3301873B1 (en) | 2018-11-21 |
EP3301873A1 (en) | 2018-04-04 |
GB2554638A (en) | 2018-04-11 |
US11012335B2 (en) | 2021-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102304699B1 (ko) | 통신 네트워크들 내의 에러 검출 | |
CN106537988B (zh) | 用于降低无线网状网络中的分组风暴的长度的方法和装置 | |
US9788257B2 (en) | Method and system for dynamically forming service aware bluetooth low energy (BLE) mesh network | |
JP2004186877A (ja) | 無線アクセスネットワークシステム、無線通信方法、同期サーバ及びノード装置 | |
US10763992B2 (en) | Techniques for maintaining network connectivity in wireless mesh networks | |
CN105281884A (zh) | 一种无中心网络中的节点时间同步方法 | |
WO2013174025A1 (zh) | 基于ptp协议的透明时钟被动端口选举方法及装置 | |
CN111511013B (zh) | 用于使控制信号同步的方法、电子设备和计算机存储介质 | |
EP3749027B1 (en) | Anchor master am management method and node | |
AU2019295486B2 (en) | Coordinating communications between nodes having asynchronous time slot schedules | |
US9479441B2 (en) | Data rate adaptation based on time-based events | |
US20240040493A1 (en) | Time-multiplexing of multiple listening schedules and physical layer modes in a mesh network | |
US10959199B2 (en) | Fast sync recovery in a wireless time-slotted low power and lossy network based on localized search using successively-shifted guard time | |
CN105099646A (zh) | 同步链路确定方法及装置 | |
JP6676202B2 (ja) | アンカーマスターam管理方法およびノード | |
Breza et al. | Polite broadcast gossip for IOT configuration management | |
CN115550419B (zh) | 一种信息传输方法、装置、设备及存储介质 | |
US10932195B1 (en) | Parent device shadow execution for a sleeping low power and lossy network child network device | |
Chen et al. | Synchronization considerations for real-time wireless sensor and actuator networks | |
Zhang et al. | HEARTBEAT MECHANISM FOR SYNCHRONIZATION IN LOW-POWER AND LOSSY NETWORKS | |
KR101470889B1 (ko) | 모바일 장치, 이를 이용하는 네트워킹 방법 및 이를 포함하는 네트워크 시스템 | |
CN103441928A (zh) | 一种快速切换邻居逻辑链路的方法和设备 | |
CN116634550A (zh) | 组网同步方法、组网系统及节点设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |