KR101412422B1 - 감소된 네트워크 오버헤드로 일대다 데이터 송신들을 용이하게 하기 위한 방법 및 시스템 - Google Patents
감소된 네트워크 오버헤드로 일대다 데이터 송신들을 용이하게 하기 위한 방법 및 시스템 Download PDFInfo
- Publication number
- KR101412422B1 KR101412422B1 KR1020127012491A KR20127012491A KR101412422B1 KR 101412422 B1 KR101412422 B1 KR 101412422B1 KR 1020127012491 A KR1020127012491 A KR 1020127012491A KR 20127012491 A KR20127012491 A KR 20127012491A KR 101412422 B1 KR101412422 B1 KR 101412422B1
- Authority
- KR
- South Korea
- Prior art keywords
- data blocks
- list
- computing device
- round
- lost data
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W88/00—Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
- H04W88/02—Terminal devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/08—Arrangements for detecting or preventing errors in the information received by repeating transmission, e.g. Verdan system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/1607—Details of the supervisory signal
- H04L1/1628—List acknowledgements, i.e. the acknowledgement message consisting of a list of identifiers, e.g. of sequence numbers
-
- 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/26—Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W28/00—Network traffic management; Network resource management
- H04W28/02—Traffic management, e.g. flow control or congestion control
- H04W28/04—Error control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L2001/0092—Error control systems characterised by the topology of the transmission link
- H04L2001/0093—Point-to-multipoint
-
- 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/15—Flow control; Congestion control in relation to multipoint traffic
-
- 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
-
- 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/29—Flow control; Congestion control using a combination of thresholds
-
- 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/34—Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
- Mobile Radio Communication Systems (AREA)
- Information Transfer Between Computers (AREA)
Abstract
감소된 네트워크 오버헤드로 일대다 데이터 송신들을 용이하게 하기 위한 방법 및 시스템은 소스 컴퓨팅 디바이스로부터 복수의 컴퓨팅 디바이스들로의 데이터 송신들의 라운드를 실행하는 단계를 포함한다. 싱크 컴퓨팅 디바이스들 각각은 데이터 송신들의 라운드 동안 손실된 데이터 블록들의 버킷 리스트를 생성하고 버킷 리스트를 소스 컴퓨팅 디바이스에 송신한다. 소스 컴퓨팅 디바이스는 버킷 리스트들에 기초하여 데이터 송신들의 다음 라운드를 실행한다. 각각의 싱크 컴퓨팅 디바이스의 버킷 리스트가 빌 때까지, 하나의 또는 그 이상의 추가 다음 라운드들이 실행될 수 있다.
Description
공동 컴퓨팅 환경들은 종종 한 소스 컴퓨팅 디바이스로부터 다수의 행선 또는 싱크 컴퓨팅 디바이스들로의 데이터 전송에 좌우된다. 예를 들면, 교육 환경들에서, "교실 공동 작업(classroom collaboration)"은 선생님의 컴퓨팅 디바이스로부터 각각의 학생의 컴퓨팅 디바이스로의 파일들, 비디오, 및 다른 데이터의 전송에 좌우된다. 또한, 싱크 컴퓨팅 디바이스들(예를 들면, 학생의 컴퓨팅 디바이스들)의 관리는 갱신들, 새로운 애플리케이션들, 또는 다른 관리 소프트웨어 또는 서비스들이 각각의 행선 또는 싱크 컴퓨팅 디바이스에 송신될 것을 요구할 수 있다. 통상, 멀티캐스트, 브로드캐스트, 또는 다른 일대다 데이터 송신들이 다수의 싱크 컴퓨팅 디바이스들로의 이러한 데이터의 전송을 달성하는데 사용된다.
멀티캐스트 및 브로드캐스트 등의 전형적인 일대다 데이터 송신 기술들은 행선 또는 싱크 컴퓨팅 디바이스들 각각으로부터의 확인응답(acknowledgement) 피드백에 좌우된다. 이러한 확인응답들은 손상 없이 데이터 패킷 또는 블록이 수신되었음을 소스 컴퓨팅 디바이스에 알려주기 위해 각각의 싱크 컴퓨팅 디바이스로부터 소스 컴퓨팅 디바이스로 송신된 유니캐스트 데이터 송신들로서 종종 구현된다. 이와 같이 하여, 다수의 행선 또는 싱크 컴퓨팅 디바이스들을 포함하는 네트워크들에서(예를 들면, 교실 공동 작업 환경들이 60명의 또는 그 이상의 학생들을 포함할 수 있음), 다수의 확인응답 송신들이 생성될 수 있다. 행선 컴퓨팅 디바이스들이 확인응답들을 거의 동시에 송신하고자 하는 경우, 다수의 개별 유니캐스트 확인응답 송신들은 네트워크 "폭주(implosion)"를 야기할 수 있다. 일부 네트워크들이 네트워크 폭주를 방지하거나 감소시키기 위해 "백-오프(back-off)" 메커니즘을 포함할 수 있지만, 이러한 메커니즘들은 네트워크에서 다른 통신 지연을 추가할 수 있다. 또한, 행선 컴퓨터들에 의해 사용되는 유니캐스트 통신 기술(예를 들면, 사용자 데이터그램 프로토콜(UDP) 또는 송신 제어 프로토콜(TCP))은 소스 컴퓨팅 디바이스로부터의 추가의 링크 층 확인응답을 요구할 수 있다. 이러한 여기저기의 확인응답들 및 네트워크 지연들은 네트워크에서 서로 동시에 발생할 수 있으며, 이는 네트워크의 오버헤드를 증가시키는 경향이 있다.
본 명세서에 기술된 시스템들, 디바이스들, 및 방법들은 첨부 도면들에서 한정이 아니라 일례로서 도시된 것이다. 도면의 간결성 및 명료성을 위해, 도면들에도시된 요소들은 반드시 일정한 비율로 그려진 것은 아니다. 예를 들면, 명료성을 위해 일부 요소들의 치수들은 다른 요소들에 비해 과장될 수 있다. 또한, 적절하다고 생각되는 경우, 대응 또는 유사한 요소들을 나타내기 위해 도면들에서 참조 부호들이 반복되었다.
도 1은 감소된 네트워크 오버헤드로 하나의 또는 그 이상의 컴퓨팅 디바이스들로의 데이터 송신들을 용이하게 하기 위한 시스템의 일 실시예의 간소화된 블록도이다.
도 2는 도 1의 시스템의 컴퓨팅 디바이스의 일 실시예의 간소화된 블록도이다.
도 3은 도 1의 시스템의 소스 컴퓨팅 디바이스에 의해 실행되는 복수의 컴퓨팅 디바이스들로 데이터를 송신하는 방법의 일 실시예의 간소화된 흐름도이다.
도 4는 도 1의 시스템의 복수의 컴퓨팅 디바이스들에 의해 실행되는 소스 컴퓨팅 디바이스로부터 데이터를 수신하는 방법의 일 실시예의 간소화된 흐름도이다.
도 5는 소스 컴퓨팅 디바이스에 버킷 리스트를 송신하는 방법의 일 실시예의 간소화된 흐름도이다.
도 6은 소스 컴퓨팅 디바이스에 버킷 리스트를 송신하는 방법의 다른 실시예의 간소화된 흐름도이다.
도 7은 도 5의 방법 중에 복수의 컴퓨팅 디바이스들로의 데이터 송신의 제1 라운드를 도시한 간소화된 도면이다.
도 8은 도 7에 도시된 데이터 송신 후의 복수의 컴퓨팅 디바이스들의 버킷 리스트를 도시한 간소화된 도면이다.
도 9는 도 5의 방법 중에 복수의 컴퓨팅 디바이스들로의 데이터 송신의 제2 라운드를 도시한 간소화된 도면이다.
도 1은 감소된 네트워크 오버헤드로 하나의 또는 그 이상의 컴퓨팅 디바이스들로의 데이터 송신들을 용이하게 하기 위한 시스템의 일 실시예의 간소화된 블록도이다.
도 2는 도 1의 시스템의 컴퓨팅 디바이스의 일 실시예의 간소화된 블록도이다.
도 3은 도 1의 시스템의 소스 컴퓨팅 디바이스에 의해 실행되는 복수의 컴퓨팅 디바이스들로 데이터를 송신하는 방법의 일 실시예의 간소화된 흐름도이다.
도 4는 도 1의 시스템의 복수의 컴퓨팅 디바이스들에 의해 실행되는 소스 컴퓨팅 디바이스로부터 데이터를 수신하는 방법의 일 실시예의 간소화된 흐름도이다.
도 5는 소스 컴퓨팅 디바이스에 버킷 리스트를 송신하는 방법의 일 실시예의 간소화된 흐름도이다.
도 6은 소스 컴퓨팅 디바이스에 버킷 리스트를 송신하는 방법의 다른 실시예의 간소화된 흐름도이다.
도 7은 도 5의 방법 중에 복수의 컴퓨팅 디바이스들로의 데이터 송신의 제1 라운드를 도시한 간소화된 도면이다.
도 8은 도 7에 도시된 데이터 송신 후의 복수의 컴퓨팅 디바이스들의 버킷 리스트를 도시한 간소화된 도면이다.
도 9는 도 5의 방법 중에 복수의 컴퓨팅 디바이스들로의 데이터 송신의 제2 라운드를 도시한 간소화된 도면이다.
본 발명의 개념들이 각종 변경들 및 대안의 형태들을 허용할 수 있지만, 그 특정 일례의 실시예들은 도면들에 일례로서 도시되었으며, 본 명세서에서 상세히 기술될 것이다. 그러나, 본 발명의 개념들을 기술된 특정 형태들로 한정하려는 의도는 아니며, 그 반대로, 첨부된 청구항들에 의해 정의된 본 발명의 원리 및 범위 내에 속한 모든 변경들, 동등물들, 및 대안물들을 포함하는 것으로 의도됨을 이해해야만 한다.
이하의 설명에서, 논리 구현들, 연산 코드들 등의 다수의 특정 세부 사항들은, 피연산자들, 리소스 분할/공유/복제 구현들, 시스템 컴포넌트들의 타입들 및 상호 관계들을 의미하며, 논리 분할/통합 선택들은 본 발명의 더 철저한 이해를 제공하기 위해 기재될 수 있다. 그러나, 본 발명의 실시예들이 이러한 특정 세부 사항들 없이 구현될 수 있음을 당업자는 알 것이다. 다른 실례들에서, 제어 구조들, 게이트 레벨 회로들 및 총 소프트웨어 명령 시퀀스들은 본 설명을 모호하게 하지 않기 위해 상세히 도시되지 않았을 수도 있다. 포함된 설명들과 함께, 당업자는 과도한 실험 없이 적합한 기능을 구현할 수 있을 것이다.
본 명세서에서 "일 실시예(one embodiment, an embodiment)", "일례의 실시예(an example embodiment)" 등의 언급은, 기술된 실시예가 특정 피처, 구조, 또는 특징을 포함할 수 있지만, 모든 실시예가 반드시 특정 피처, 구조, 또는 특징을 포함하지는 안하도 된다는 것을 나타낸다. 게다가, 이러한 구절들은 반드시 동일한 실시예를 언급하는 것이 아니다. 또한, 특정 피처, 구조, 또는 특징이 일 실시예와 관련해서 기술될 때, 명백히 기술되던 되지 않던 간에 다른 실시예들과 함께 이러한 피처, 구조, 또는 특징을 달성하는 것이 당업자의 지식 내에 있다고 진술된다.
본 발명의 일부 실시예들은 하드웨어, 펌웨어, 소프트웨어, 또는 그 임의의 조합물로 구현될 수 있다. 컴퓨터 시스템에서 구현된 본 발명의 실시예들은 컴포넌트들 간의 하나의 또는 그 이상의 버스-기반 인터커넥트들 및/또는 컴포넌트들 간의 하나의 또는 그 이상의 지점간 인터커넥트들을 포함할 수 있다. 본 발명의 실시예들은, 또한, 하나의 또는 그 이상의 프로세서들에 의해 판독 및 실행될 수 있는, 기계 판독 가능 유형 매체에 저장된 명령들로서 구현될 수 있다. 기계 판독 가능 유형 매체는 기계(예를 들면, 컴퓨팅 디바이스)에 의해 판독 가능한 형태로 정보를 저장 또는 송신하기 위한 임의의 유형 메카니즘을 포함할 수 있다. 예를 들면, 기계 판독 가능 유형 매체는 판독 전용 메모리(ROM); 랜덤 액세스 메모리(RAM); 자기 디스크 기억 매체; 광 기억 매체; 플래시 메모리 디바이스들; 및 다른 유형 매체들을 포함할 수 있다.
이제 도 1을 참조하면, 감소된 네트워크 오버헤드를 가진 복수의 컴퓨팅 디바이스들로의 데이터 송신들을 용이하게 하기 위한 시스템(100)은 소스 또는 서버 컴퓨팅 디바이스(102) 및 수신 또는 클라이언트 컴퓨팅 디바이스 그룹(104)을 포함한다. 컴퓨팅 디바이스들(102, 104)은 액세스 포인트(108)를 통해 네트워크(106)를 통해 서로 통신 가능하게 연결된다. 소스 컴퓨팅 디바이스(102)는 본 명세서에 기술된 기능들을 실행할 수 있는 임의의 타입의 컴퓨팅 디바이스로서 구현될 수 있다. 예를 들면, 일부 실시예들에서, 소스 컴퓨팅 디바이스(102)는 데스크탑 컴퓨터, 랩탑 컴퓨터, 이동 인터넷 디바이스(MID), 또는 다른 네트워크-인에이블 컴퓨팅 디바이스로서 구현될 수 있다.
컴퓨팅 디바이스 그룹(104)은 하나의 또는 그 이상의 행선 또는 싱크 컴퓨팅 디바이스들(110)을 포함한다. 소스 컴퓨팅 디바이스(102)와 유사하게, 싱크 컴퓨팅 디바이스들(110) 각각은 본 명세서에 기술된 기능들을 실행할 수 있는 임의의 타입의 컴퓨팅 디바이스로서 구현될 수 있다. 예를 들면, 싱크 컴퓨팅 디바이스들(110) 각각은 데스크탑 컴퓨터, 랩탑 컴퓨터, 이동 인터넷 디바이스(MID), 또는 다른 네트워크-인에이블 컴퓨팅 디바이스로서 구현될 수 있다.
액세스 포인트(108)는 컴퓨팅 디바이스들(102, 110) 간의 통신을 용이하게 한다. 액세스 포인트(108)는 컴퓨팅 디바이스들(102, 110)을 통신 가능하게 연결할 수 있는 유선 또는 무선 라우터, 스위치, 허브, 또는 다른 네트워크 통신 디바이스 등의 임의의 타입의 유선 또는 무선 네트워크 통신 라우팅 디바이스들로서 구현될 수 있다. 일부 실시예들에서, 액세스 포인트(108)는 통신 링크(124)를 통해 외부 네트워크(130)에 또한 통신 가능하게 연결된다. 네트워크(130)는 근거리 통신망, 광역 통신망, 공개적으로 사용될 수 있는 글로벌 네트워크(예를 들면, 인터넷), 또는 다른 네트워크 등의 임의의 타입의 유선 및/또는 무선 네트워크로서 구현될 수 있다. 유사하게, 통신 링크(124)는, 예를 들면, 임의의 수의 무선 또는 물리적 커넥션들, 유선들, 케이블들, 및/또는 다른 상호 연결 링크들 또는 경로들 등의 액세스 포인트(108) 및 외부 네트워크(130) 간의 통신을 용이하게 할 수 있는 임의의 타입의 유선 또는 무선 통신 링크로서 구현될 수 있다. 또한, 네트워크(130)는 컴퓨팅 디바이스들(102, 110) 및 원격 컴퓨팅 디바이스들 간의 통신을 용이하게 하기 위해 라우터들, 스위치들, 중간 컴퓨터들 등의 임의의 수의 추가 디바이스들을 포함할 수 있다.
일부 실시예들에서, 소스 컴퓨팅 디바이스(102) 및 컴퓨팅 디바이스 그룹(104)은 싱글룸에 위치하거나 또는 서로 가깝게 위치한다. 예를 들면, 일 특정 실시예에서, 시스템(100)은 한 교실에 포함된다. 이러한 실시예들에서, 소스 컴퓨팅 디바이스(102)는 선생님 또는 강사의 컴퓨팅 디바이스로서 구현될 수 있으며, 싱크 컴퓨팅 디바이스들(110)은 학생 컴퓨팅 디바이스들로서 구현될 수 있다. 물론, 시스템(100)은 일대다 데이터 송신들이 요구되는 다른 환경들 또는 구현들에서도 또한 사용될 수 있다.
사용시, 소스 컴퓨팅 디바이스(102)는 복수의 데이터 블록들이 싱크 컴퓨팅 디바이스들(110)로 송신되는 데이터 송신들의 다수의 라운드들을 실행함으로써 싱크 컴퓨팅 디바이스들(110) 각각에 파일들, 비디오, 이미지들, 텍스트, 및/또는 다른 데이터 등의 데이터를 송신하도록 구성된다. 데이터 송신들의 각각의 라운드 중에, 싱크 컴퓨팅 디바이스들(110)은 수신되지 않았거나 또는 손상된 상태로 수신된 데이터 블록들을 손실된 데이터 블록들의 버킷 리스트로서 기록한다. 데이터 송신들의 각각의 라운드를 완료한 후에, 싱크 컴퓨팅 디바이스들(110)은 소스 컴퓨팅 디바이스(102)에 개별 버킷 리스트를 송신한다. 일부 실시예들에서, 더 상세히 후술되는 바와 같이, 싱크 컴퓨팅 디바이스들(110)은 각자의 버킷 리스트의 크기(즉, 버킷 리스트의 데이터 블록들의 수) 또는 지연 기간 등의 일부 기준들에 기초하여 그들의 버킷 리스트들을 송신할 수 있다. 소스 컴퓨팅 디바이스(102)는 각각의 싱크 컴퓨팅 디바이스(110)로부터 수신된 버킷 리스트들을 종합하고, 종합 버킷 리스트 내의 식별된 데이터 블록들이 싱크 컴퓨팅 디바이스들(110)에 재송신되는 데이터 송신들의 다음 라운드를 실행한다. 하나의 또는 그 이상의 다음 라운드들은, 각각의 싱크 컴퓨팅 디바이스(110)의 버킷 리스트가 빌 때까지, 싱크 컴퓨팅 디바이스들(110)이 계속해서 임의의 손실된 데이터 블록들을 소스 컴퓨팅 디바이스(102)에 보고하는 방식으로 실행될 수 있다.
일 특정 실시예에서, 싱크 컴퓨팅 디바이스들(110)은 소스 컴퓨팅 디바이스(102)로부터 데이터 블록을 수신한 후에 어떠한 확인응답 송신도 송신하지 않도록 구성된다. 이러한 실시예들에서, 마찬가지로 소스 컴퓨팅 디바이스(102)는 데이터 블록들의 송신들 간에 컴퓨팅 디바이스들(110)로부터의 그러한 확인응답 송신들을 기다리지 않도록 구성된다. 이러한 방법으로, 증가된 네트워크 트래픽으로 인해 야기되는 전체 네트워크 트래픽, 및 손상들 및 지연들의 양이 감소될 수 있다.
이제 도 2를 참조하면, 일 실시예에서, 컴퓨팅 디바이스들(102, 110) 각각은 프로세서(200), 칩셋(204), 및 메모리(202)를 포함한다. 컴퓨팅 디바이스들(102, 110)은 본 명세서에 기술된 각자의 기능들을 실행할 수 있는 임의의 타입의 컴퓨팅 디바이스들로서 구현될 수 있다. 예를 들면, 상술된 바와 같이, 컴퓨팅 디바이스들(102, 110)은 데스크탑 컴퓨터들, 랩탑 컴퓨터들, 이동 인터넷 디바이스들(MID), 또는 다른 네트워크-인에이블 컴퓨팅 디바이스들로서 구현될 수 있다.
프로세서(200)는 실례로서 프로세서 코어(206)를 가진 싱글 코어 프로세서로서 구현된다. 그러나, 다른 실시예들에서, 프로세서(200)는 다수의 프로세서 코어들(206)을 가진 멀티-코어 프로세서로서 구현될 수 있다. 또한, 컴퓨팅 디바이스들(102, 110)은 하나의 또는 그 이상의 프로세서 코어들(206)을 가진 추가의 프로세서들(200)을 포함할 수 있다. 프로세서(200)는 다수의 신호 경로들(208)을 통해 칩셋(204)에 통신 가능하게 연결된다. 신호 경로들(208)은 프로세서(200) 및 칩셋(204) 간의 통신을 용이하게 할 수 있는 임의의 타입의 신호 경로들로서 구현될 수 있다. 예를 들면, 신호 경로들(208)은 임의의 수의 버스 경로들, 인쇄 회로 기판 트레이스들, 유선들, 바이어스들, 중간 디바이스들, 및/또는 다른 인터커넥트들로서 구현될 수 있다.
메모리(202)는, 예를 들면, 동적 랜덤 액세스 메모리 디바이스들(DRAM), 동기 동적 랜덤 액세스 메모리디바이스들(SDRAM), 더블 데이터 레이트 동적 랜덤 액세스 메모리 디바이스(DDR SDRAM), 및/또는 다른 휘발성 메모리 디바이스들을 포함하는 하나의 또는 그 이상의 메모리 디바이스들 또는 데이터 기억 로케이션들로서 구현될 수 있다. 또한, 오직 하나의 싱글 메모리 디바이스(202)가 도 2에 도시되어 있지만, 다른 실시예들에서, 컴퓨팅 디바이스들(102, 110)은 추가의 메모리 디바이스들을 포함할 수 있다.
칩셋(204)은 메모리 컨트롤러 허브(MCH) 또는 노스브리지, 입력/출력 컨트롤러 허브(ICH) 또는 사우스브리지, 및 펌웨어 디바이스를 포함할 수 있다. 이러한 실시예들에서, 펌웨어 디바이스는 기본 입출력 시스템(BIOS) 데이터 및/또는 명령들 및/또는 다른 정보를 저장하기 위한 메모리 기억 장치로서 구현될 수 있다. 칩셋(204)은 다수의 신호 경로들(210)을 통해 메모리(202)에 통신 가능하게 연결된다. 신호 경로들(208)과 유사하게, 신호 경로들(210)은, 예를 들면, 임의의 수의 버스 경로들, 인쇄 회로 기판 트레이스들, 유선들, 바이어스들, 중간 디바이스들, 및/또는 다른 인터커넥트들 등의, 칩셋(204) 및 메모리 디바이스(202) 간의 통신을 용이하게 할 수 있는 임의의 타입의 신호 경로들로서 구현될 수 있다.
다른 실시예들에서, 칩셋(204)은 플랫폼 컨트롤러 허브(PCH)로서 구현될 수 있다. 이러한 실시예들에서, 메모리 컨트롤러 허브(MCH)는 프로세서(200) 내에 포함되거나 또는 달리 프로세서(200)와 연관될 수 있다. 또한, 이러한 실시예들에서, 메모리 디바이스(202)는, 다수의 신호 경로들(212)을 통해, 칩셋(204)(즉, 플랫폼 컨트롤러 허브)이 아닌, 프로세서(200)에 통신 가능하게 연결될 수 있다. 신호 경로들(208)과 유사하게, 신호 경로들(212)은, 예를 들면, 임의의 수의 버스 경로들, 인쇄 회로 기판 트레이스들, 유선들, 바이어스들, 중간 디바이스들, 및/또는 다른 인터커넥트들 등의, 메모리 디바이스(202) 및 프로세서(200) 간의 통신을 용이하게 할 수 있는 임의의 타입의 신호 경로들로서 구현될 수 있다.
컴퓨팅 디바이스들(102, 110)은 또한 네트워크(106)를 통해 서로 통신하기 위한 통신 회로(220)를 포함한다. 통신 회로(220)는 컴퓨팅 디바이스들(102, 110) 간의 통신을 가능케 하기 위한 임의의 수의 디바이스들 및 회로로서 구현될 수 있다. 예를 들면, 통신 회로(220)는 액세스 포인트(108)를 통해 다른 컴퓨팅 디바이스들(102, 110)과 통신하기 위한 하나의 또는 그 이상의 유선 또는 무선 네트워크 인터페이스 카드들(NICs) 또는 다른 네트워크 통신 카드들, 모듈들, 또는 회로들로서 구현될 수 있다.
컴퓨팅 디바이스들(102, 110)은 또한 데이터 저장소(222), 디스플레이 디바이스(224), 및 다른 주변 장치들(226) 등의 추가의 주변 장치들을 포함할 수 있다. 통신 회로(220), 데이터 저장소(222), 디스플레이 디바이스(224), 및 다른 주변 장치들(226) 각각은 신호 경로들(230)을 통해 칩셋(204)에 통신 가능하게 연결된다. 또한, 신호 경로들(208)과 유사하게, 신호 경로들(230)은 예를 들면, 임의의 수의 버스 경로들, 인쇄 회로 기판 트레이스들, 유선들, 바이어스들, 중간 디바이스들, 및/또는 다른 인터커넥트들 등의, 칩셋(204) 및 통신 회로(220), 데이터 저장소(222), 디스플레이 디바이스(224), 및 다른 주변 장치들(226) 간의 통신을 용이하게 할 수 있는 임의의 타입의 신호 경로들로서 구현될 수 있다.
데이터 저장소 디바이스(들)(222)는, 예를 들면, 메모리 디바이스들 및 회로들, 메모리 카드들, 하드 디스크 드라이브들, 고체 상태 드라이브들, 또는 다른 데이터 저장소들 등의 단기 또는 장기 기억 데이터를 위해 구성된 임의의 타입의 디바이스로서 구현될 수 있다. 디스플레이 디바이스(224)는, 예를 들면, 액정 디스플레이(LCD), 음극선관(CRT) 디스플레이, 발광 다이오드(LCD) 디스플레이, 또는 다른 디스플레이 디바이스들 등의, 컴퓨팅 디바이스들(102, 110)의 사용자에게 데이터를 디스플레이하기 위한 임의의 타입의 디스플레이 디바이스로서 구현될 수 있다. 예를 들어, 주변 장치들(226)은 입력 디바이스들, 출력 디바이스들, 및 다른 인터페이스 디바이스들을 포함하는 임의의 수의 추가 주변 장치들을 포함할 수 있다. 주변 장치들(226)은 컴퓨팅 디바이스(102, 110)에 입력을 제공하기 위한 키보드 및/또는 마우스를 포함할 수 있다. 주변 장치들(226)에 포함되는 디바이스들의 특정 수 및 타입은, 예를 들면, 컴퓨팅 디바이스(102, 110)의 의도된 용도에 좌우될 수 있다.
이제 도 3을 참조하면, 복수의 컴퓨팅 디바이스들(110)에 데이터를 송신하기 위한 방법(300)은 소스 컴퓨팅 디바이스(102)가 데이터 송신들의 한 세션을 초기화하는 블록(302)으로 시작한다. 블록(302) 중에, 소스 컴퓨팅 디바이스(102)는 임의의 수의 교정 및 초기화 프로시져들을 실행할 수 있다. 또한, 일부 실시예들에서, 소스 컴퓨팅 디바이스(102)는 블록(304)에서 싱크 컴퓨팅 디바이스들(110) 각각과 핸드셰이크한다. 이러한 핸드셰이킹은 싱크 컴퓨팅 디바이스들(110)에 데이터를 송신 및/또는 싱크 컴퓨팅 디바이스들(110)이 데이터 송신들을 수신하도록 준비시키기 위한 다른 정보 또는 데이터를 송신하는데 사용될 통신 프로토콜들을 설정할 수 있다. 예를 들면, 일 실시예에서, 소스 컴퓨팅 디바이스(102)는 디바이스들(110)에 송신될 데이터 파일에 대해 싱크 컴퓨팅 디바이스들(110)에게 알려준다. 이러한 정보(예를 들면, 싱크 컴퓨팅 디바이스들(110)이 수신할 것으로 예상하는 데이터 블록들의 수)는 싱크 컴퓨팅 디바이스들(110)이 손실된 데이터 블록들(즉, 수신되지 않았거나 또는 손상된 상태로 수신된 데이터 블록들)을 결정하는데 사용될 수 있다.
상술된 바와 같이, 소스 컴퓨팅 디바이스(102)는 데이터 송신들의 하나의 또는 그 이상의 라운드들을 사용해서 싱크 컴퓨팅 디바이스들(110)에 데이터 파일 또는 다른 데이터를 송신하도록 구성된다. 제1 라운드 다음의 데이터 송신 라운드들은 싱크 컴퓨팅 디바이스들(110)로부터의 피드백에 기초한다. 소스 컴퓨팅 디바이스(102)는 싱크 컴퓨팅 디바이스들(110)에 데이터 파일 또는 다른 데이터를 성공적으로 전송하는데 필요한 수만큼의 데이터 송신 라운드들을 실행할 수 있다. 따라서, 블록(306)에서, 소스 컴퓨팅 디바이스는 데이터 송신들의 다음 라운드를 개시한다. 예를 들면, 방법(300)의 제1 반복 중에, 소스 컴퓨팅 디바이스(102)는 싱크 컴퓨팅 디바이스들(110)로의 데이터 송신들의 제1 라운드(즉, X = 1)를 개시한다. 블록(306)에서, 소스 컴퓨팅 디바이스(102)는, 예를 들면, 데이터 송신들의 현재 라운드가 시작하고 있다는 통지를 싱크 컴퓨팅 디바이스들(110)에 송신할 수 있다. 일부 실시예들에서, 디바이스들(110)이 어느 데이터 블록들이 손실되었는 지를 결정할 수 있도록, 소스 컴퓨팅 디바이스(102)는 싱크 컴퓨팅 디바이스들(110)에, 예상 데이터 블록들의 수 등의, 데이터 송신들의 특정 라운드에 관한 데이터를 송신할 수 있다.
소스 컴퓨팅 디바이스(102)가 데이터 송신들의 현재 라운드를 개시한 후에, 소스 컴퓨팅 디바이스(102)는 블록(308)에서 싱크 컴퓨팅 디바이스들(110)에 데이터 송신의 현재 라운드 동안 데이터 블록들을 송신한다. 데이터 송신의 제1 라운드에서, 싱크 컴퓨팅 디바이스들(110)에 송신될 데이터 파일 또는 다른 데이터를 포함하는 모든 데이터 블록은 디바이스들(110)에 송신된다. 그러나, 더 상세히 후술되는 바와 같이, 하나의 또는 그 이상의 싱크 컴퓨팅 디바이스들에 의해 손실된 것으로 식별된 데이터 블록들만이 데이터 송신의 다음 라운드들에서 송신된다. 이와 같이 하여, 임의의 수의 데이터 블록들이 블록(308)에서 예를 들면, 송신될 데이터 파일의 크기, 데이터 송신들의 이전 라운드들, 더 상세히 후술되는 싱크 컴퓨팅 디바이스들(110)로부터의 피드백, 및/또는 다른 기준들에 따라 송신될 수 있다.
소스 컴퓨팅 디바이스(102)는 임의의 적합한 네트워크 통신 기술을 사용해서 싱크 컴퓨팅 디바이스들(110)에 데이터 블록들을 전송할 수 있다. 예를 들면, 일부 실시예들에서, 소스 컴퓨팅 디바이스(102)는 멀티캐스트 데이터 송신들 또는 브로드캐스트 데이터 송신들을 사용해서 싱크 컴퓨팅 디바이스들(110)에 데이터 블록들을 전송할 수 있다. 대안으로, 일 특정 실시예에서, 소스 컴퓨팅 디바이스(102)는 2009년 12월 XX일에 출원된, 져스틴 립맨(Justin Lipman)에 의한 "복수의 컴퓨팅 디바이스들로의 일대다 데이터 송신을 용이하게 하기 위한 방법 및 시스템(METHOD AND SYSTEM FOR FACILITATING ONE-TO-MANY DATA TRANSMISSION TO A PLURALITY OF COMPUTING DEVICES)"라는 제목의, 미국 특허 출원 제XX/XXXXXX호에 기술된 일대다 데이터 송신을 사용하도록 구성된다. 이러한 실시예들에서, 소스 컴퓨팅 디바이스(102)는 컴퓨팅 디바이스들(110) 중 하나를 "싱크" 컴퓨팅 디바이스로서 선택하도록 구성된다. 나머지 컴퓨팅 디바이스들(110)은 잡다한 통신 모드로 구성된다. 소스 컴퓨팅 디바이스(102)는 선택된 싱크 컴퓨팅 디바이스(110)에 유니캐스트 데이터 송신을 송신함으로써 선택된 싱크 컴퓨팅 디바이스(110)에 데이터 블록들을 전송한다. 그러나, 유니캐스트 데이터 송신이 선택된 싱크 컴퓨팅 디바이스(110)에 어드레싱되더라도, 유니캐스트 데이터 송신은 또한 선택되지 않은 다른 컴퓨팅 디바이스들(110) 각각에 의해서도 수신된다. 선택되지 않은 컴퓨팅 디바이스들(110)이 잡다한 통신 모드로 구성되기 때문에, 선택되지 않은 컴퓨팅 디바이스들(110)은 또한 유니캐스트 데이터 송신을 필터링 및 처리한다. 이러한 방법으로, 일대다 데이터 송신은 유니캐스트 데이터 송신을 사용해서 달성된다.
소스 컴퓨팅 디바이스(102)가 데이터 송신들의 현재 라운드 동안 데이터 블록들을 전송한 후에, 소스 컴퓨팅 디바이스(102)는 데이터 송신들의 현재 라운드가 완료했음을 디바이스들(110)에게 알려주는 통지를 각각의 싱크 컴퓨팅 디바이스(110)에 송신한다(블록(310)). 다음으로, 블록(312)에서, 소스 컴퓨팅 디바이스(102)는 싱크 컴퓨팅 디바이스들(110)에 의해 송신된 임의의 버킷 리스트들을 수신한다. 더 상세히 후술되는 바와 같이, 버킷 리스트들은 각각의 보고 싱크 컴퓨팅 디바이스(110)에 의해 손실된 데이터 블록들을 현재 라운드로부터 식별한다.
블록(312)에서 특정 싱크 컴퓨팅 디바이스(110)가 소스 컴퓨팅 디바이스(102)에 버킷 리스트를 송신하는 지의 여부는 하나의 또는 그 이상의 기준에 기초하여 결정된다. 예를 들면, 일 실시예에서, 각각의 버킷 리스트들에서 적어도 하나의 손실된 데이터 블록을 가진 모든 싱크 컴퓨팅 디바이스(110)는 현재 라운드가 종료했다는 통지를 수신할 때 또는 수신한 후에 블록(312)에서 소스 컴퓨팅 디바이스에 버킷 리스트를 송신한다. 그러나, 다른 실시예들에서, 싱크 컴퓨팅 디바이스들(110)은 현재 라운드가 종료했다는 통지를 수신한 후의 지연 기간에 기초하여 그들 각자의 버킷 리스트들을 송신하도록 구성될 수 있다. 이러한 실시예들에서, 소스 컴퓨팅 디바이스(102)는 블록(314)에서 각각의 싱크 컴퓨팅 디바이스들(110)에 디폴트 지연 값을 송신하도록 구성된다. 싱크 컴퓨팅 디바이스들(110)은 더 상세히 후술되는 바와 같이 디폴트 지연 값에 기초하여 라운드 종료 통지 후의 그들 각자의 지연 기간을 결정한다. 대안으로, 또는 추가로, 다른 실시예들에서, 싱크 컴퓨팅 디바이스들(110)은 그들 각자의 버킷 리스트들의 크기에 기초하여 그들의 버킷 리스트들을 송신하도록 구성될 수 있다. 이러한 실시예들에서, 소스 컴퓨팅 디바이스(102)는 블록(316)에서 각각의 싱크 컴퓨팅 디바이스(110)에 미리 결정된 버킷 리스트 크기 임계값을 송신하도록 구성된다. 싱크 컴퓨팅 디바이스들(110)은 더 상세히 후술되는 바와 같이 임계값에 기초하여 그들의 버킷 리스트를 송신할 지의 여부를 결정한다.
소스 컴퓨팅 디바이스(102)가 싱크 컴퓨팅 디바이스들(110)로부터 현재 라운드 동안 버킷 리스트들을 수신한 후에, 소스 컴퓨팅 디바이스(102)는 블록(318)에서 버킷 리스트들을 종합해서 마스터 버킷 리스트를 생성한다. 마스터 버킷 리스트는 데이터 송신의 해당 라운드 동안 손실된 것으로 하나의 또는 그 이상의 싱크 컴퓨팅 디바이스들(110)에 의해 보고된 각각의 데이터 블록의 표시 또는 식별을 포함한다. 마스터 버킷 리스트가 블록(320)에서 빈 것으로 결정되면(즉, 적어도 하나의 데이터 블록을 가진 버킷 리스트를 송신한 싱크 컴퓨팅 디바이스(110)가 없으면), 소스 컴퓨팅 디바이스(102)는 블록(322)에서 데이터 송신 세션이 완료했다는 통지를 각각의 싱크 컴퓨팅 디바이스(110)에 송신한다.
그러나, 소스 컴퓨팅 디바이스(102)가 블록(316)에서 싱크 컴퓨팅 디바이스들(110)에 버킷 리스트 크기 임계값을 송신하는 실시예들에서, 버킷 리스트가 싱크 컴퓨팅 디바이스들(110)로부터 수신되지 않은 경우, 소스 컴퓨팅 디바이스(102)는 임계값을 미리 결정된 양만큼 감소하여 상기 임계값을 싱크 컴퓨팅 디바이스들(110)에 재송신하도록 구성될 수 있음을 알아야만 한다. 이러한 방법으로, 소스 컴퓨팅 디바이스(102)는 임계값이 0과 동일할 때까지 각각의 라운드마다 임계값을 계속해서 감소시킬 수 있다.
다시 블록(320)를 참조하면, 마스터 버킷 리스트가 비어 있지 않으면, 방법(300)은 데이터 송신들의 다음 라운드가 개시되는 블록(306)으로 다시 돌아간다. 다음 라운드에서, 마스터 버킷 리스트 내의 식별된 데이터 블록들은 상술된 바와 같이 싱크 컴퓨팅 디바이스들(110)에 재송신된다. 이러한 방법으로, 소스 컴퓨팅 디바이스(102)는 싱크 컴퓨팅 디바이스들(110)에 데이터 파일 또는 다른 데이터를 송신하기 위해 데이터 송신들의 하나의 또는 그 이상의 라운드들을 실행한다. 일반적으로, 데이터 송신의 각각의 연속 라운드는 소스 컴퓨팅 디바이스(102)에 의해 재송신될 더 적은 수의 데이터 블록들을 포함할 것이다.
이제 도 4를 참조하면, 소스 컴퓨팅 디바이스(102)로부터 데이터를 수신하기 위한 방법은, 각각의 싱크 컴퓨팅 디바이스(110)가 소스 컴퓨팅 디바이스(102)와 핸드셰이크하는 블록(402)으로 시작한다. 블록(402)에서, 상술된 바와 같이, 컴퓨팅 디바이스들(102, 110)은 싱크 컴퓨팅 디바이스들(110)에 데이터를 송신 및/또는 싱크 컴퓨팅 디바이스들(110)이 데이터 송신들을 수신하도록 준비시키기 위한 다른 정보 또는 데이터를 송신하는데 사용될 통신 프로토콜들을 설정할 수 있다. 예를 들면, 일부 실시예들에서, 싱크 컴퓨팅 디바이스들(110)은, 예를 들면, 각각의 싱크 컴퓨팅 디바이스(110)에 의해 수신되어야 할 데이터 블록들의 수 등의, 소스 컴퓨팅 디바이스(102)에 의해 송신될 데이터 파일에 대한 정보를 수신할 수 있다.
블록(404)에서, 싱크 컴퓨팅 디바이스는 데이터 송신들의 현재 라운드가 시작되었는 지를 결정한다. 방법(300)과 관련해서 상술된 바와 같이, 소스 컴퓨팅 디바이스(102)는 데이터 송신들의 한 라운드의 시작을 나타내는 통지 및/또는 다른 데이터, 및 일부 실시예들에서, 예를 들면, 해당 라운드에서 송신될 데이터 블록들의 수 등의 데이터 송신들의 현재 라운드에 관한 데이터를 싱크 컴퓨터들(110)에 송신할 수 있다.
복수의 싱크 컴퓨팅 디바이스들(110)은 블록(406)에서 소스 컴퓨팅 디바이스(102)에 의해 송신된 데이터 블록들을 수신하고, 블록(408)에서 손실된 데이터 블록들의 각각의 버킷 리스트들을 갱신한다. 각각의 싱크 컴퓨팅 디바이스(110)는 현재 라운드 동안 소스 컴퓨팅 디바이스(102)에 의해 송신되었지만 싱크 컴퓨팅 디바이스(110)에 의해 수신되지 않았거나 또는 손상된 상태로 수신된 데이터 블록들의 리스트, 또는 그 표시를 생성 및/또는 갱신하여, 싱크 컴퓨팅 디바이스(110)에 재송신되어야만 하도록 구성된다. 싱크 컴퓨팅 디바이스들(110)은 그들 각자의 메모리(202) 및/또는 데이터 저장소(222)에 버킷 리스트를 저장할 수 있다. 개별 버킷 리스트들은 서로 다양할 수 있으며, 데이터 송신들의 현재 라운드에 기초하여 데이터 블록을 전혀 포함하지 않거나, 또는 하나의 또는 그 이상의 데이터 블록들을 포함할 수 있다. 손실된 데이터 블록들을 나타내기 위해 데이터 블록들에 저장된 특정 데이터는 특정 실시예 및 구현에 따라 변할 수 있다. 예를 들면, 일 실시예에서, 싱크 컴퓨팅 디바이스들(110)은 현재 라운드 동안 손실된 것으로 결정된 각각의 데이터 블록의 패킷 식별 번호를 저장하도록 구성된다.
블록(410)에서, 싱크 컴퓨팅 디바이스들(110)은 라운드가 완료되었는 지를 결정한다. 완료되지 않았으면, 방법(400)은 각각의 싱크 컴퓨팅 디바이스(110)가 소스 컴퓨팅 디바이스(102)로부터 데이터 블록들을 계속해서 수신하거나 또는 달리 수신을 기다리고, 손실된 데이터 블록들의 버킷 리스트를 그에 따라 갱신하는 블록들(406 및 408)로 다시 돌아간다. 그러나, 싱크 컴퓨팅 디바이스들(110)이 소스 컴퓨팅 디바이스(102)로부터 라운드 종료 통지를 수신하면, 방법(400)은 블록(412)으로 진행해서, 각각의 싱크 컴퓨팅 디바이스들(110)은 그의 버킷 리스트가 비어 있는 지를(즉, 현재 데이터 송신 세션 동안 모든 데이터 블록을 수신했는 지를) 결정한다. 그렇다면, 특정 싱크 컴퓨팅 디바이스(110)는 블록(414)에서 소스 컴퓨팅 디바이스(102)로부터의 세션 종료 통지를 기다린다. 그러나, 싱크 컴퓨팅 디바이스(110)가 손실된 데이터 블록들의 버킷 리스트 내의 식별된 적어도 하나의 손실된 데이터 블록을 가지면, 방법(400)은 블록(416)으로 진행하여, 싱크 컴퓨팅 디바이스(110)는 특정 기준들에 기초하여 소스 컴퓨팅 디바이스에 손실된 데이터 블록들의 버킷 리스트를 송신하도록 구성된다.
상술된 바와 같이, 일부 실시예들에서, 싱크 컴퓨팅 디바이스(110)는 소스 컴퓨팅 디바이스(102)로부터 라운드 종료 통지를 수신할 때, 또는 수신한 후에 버킷 리스트를 송신하도록 구성될 수 있다. 그러나, 다른 실시예들에서, 싱크 컴퓨팅 디바이스(110)는 블록(418)에서 디폴트 지연 값에 기초하여 손실된 데이터 블록들의 버킷 리스트를 송신하도록 구성될 수 있다. 이를 위해, 싱크 컴퓨팅 디바이스(110)는 도 5에 도시된 바와 같이 버킷 리스트를 송신하기 위한 방법(500)을 실행할 수 있다. 방법(500)은 싱크 컴퓨팅 디바이스(110)가 소스 컴퓨팅 디바이스(102)로부터 디폴트 지연 값을 수신하는 블록(502)으로 시작한다. 디폴트 지연 값은 싱크 컴퓨팅 디바이스(110)가 그들 각자의 버킷 리스트를 송신한 후에 현재 라운드의 완료 후(예를 들면, 라운드 종료 통지를 수신한 후)의 디폴트 시간 기간을 정의한다. 디폴트 지연 값은 다수의 마이크로초들, 초들, 분들, 또는 다른 시간 측정값으로서 구현될 수 있다. 블록(504)에서, 싱크 컴퓨팅 디바이스(110)는 그것의 특정 버킷 리스트의 크기에 기초하여 그것의 특정 지연 기간을 결정한다. 예를 들면, 일 특정 실시예에서, 각각의 싱크 컴퓨팅 디바이스(110)에 대한 지연 기간이 각자의 버킷 리스트의 크기(예를 들면, 버킷 리스트 내의 식별된 데이터 블록들의 수)로 디폴트 지연 값을 나눔으로써 계산된다. 다음으로, 싱크 컴퓨팅 디바이스(110)는 계산된 지연 기간이 만료할 때 또는 만료한 후에 각자의 버킷 리스트를 송신한다. 이러한 방법으로, 더 큰 버킷 리스트들을 가진 싱크 컴퓨팅 디바이스들이 더 적은 버킷 리스트들을 가진 싱크 컴퓨팅 디바이스들 보다 먼저 그들의 버킷 리스트들을 송신한다. 또한, 싱크 컴퓨팅 디바이스들(110)의 송신 기간들을 분산함으로써, 네트워크 "폭주" 가능성 및 총 지연이 감소될 수 있다.
다시 방법(400)의 블록(416)를 참조하면, 다른 실시예들에서, 싱크 컴퓨팅 디바이스는 블록(420)에서 버킷 리스트의 크기에 기초하여 그의 특정 버킷 리스트를 송신하도록 구성될 수 있다. 이를 위해, 싱크 컴퓨팅 디바이스(110)는 도 6에 도시된 바와 같이 버킷 리스트를 송신하기 위한 방법(600)을 실행할 수 있다. 방법(600)은 싱크 컴퓨팅 디바이스(110)가 미리 결정된 버킷 리스트 크기 임계값을 수신하는 블록(602)으로 시작한다. 상술된 바와 같이, 미리 결정된 임계값은 데이터 블록들의 최소수를 정의할 수 있다. 블록(604)에서, 싱크 컴퓨팅 디바이스(110)는 그의 특정 버킷 리스트가 임계값에 대해 미리 결정된 관계를 가지는 지를 결정한다. 예를 들면, 도 6의 일례의 실시예에서, 싱크 컴퓨팅 디바이스(110)는 그의 특정 버킷 리스트가 임계값 보다 더 큰 지를 결정한다. 그러나, 다른 실시예들에서, 싱크 컴퓨팅 디바이스(110)는 블록(604)에서 그의 특정 버킷 리스트가 임계값과 동일한지 또는 임계값 보다 더 작은 지를 결정하도록 구성될 수 있다. 일례의 실시예에서, 싱크 컴퓨팅 디바이스(110)의 버킷 리스트 크기가 임계값 보다 더 크면, 싱크 컴퓨팅 디바이스(110)는 블록(606)에서 소스 컴퓨팅 디바이스(102)에 그의 버킷 리스트를 송신한다. 그러나, 싱크 컴퓨팅 디바이스(110)의 버킷 리스트가 임계값 보다 더 크지 않으면, 싱크 컴퓨팅 디바이스(110)는 현재 라운드 동안 그의 버킷 리스트를 송신하지 않는다. 오히려, 싱크 컴퓨팅 디바이스(110)는 식별된 손실된 데이터 블록들을 그의 버킷 리스트에 보유하고 데이터 송신들의 다음 라운드 동안 그것을 갱신한다. 이러한 방법으로, 임계값 보다 더 큰 버킷 리스트들을 가진 싱크 컴퓨팅 디바이스들(110)만이 그들 각자의 버킷 리스트들을 송신한다. 따라서, 싱크 컴퓨팅 디바이스들(110)에 의한 버킷 리스트들의 송신은 분산되거나 또는 각각의 라운드마다 감소되어서, 네트워크 "폭주 가능성 및 총 지연이 감소될 수 있다.
이제 도 7-9를 참조하면, 소스 컴퓨팅 디바이스(102)로부터 4개의 싱크 컴퓨팅 디바이스들(110)로의 데이터 송신들의 일례의 제1 및 제2 라운드가 도시된다. 도 7에서, 소스 컴퓨팅 디바이스(102)는 복수의 데이터 블록들, B1 내지 Bn으로 구체화된 싱크 컴퓨팅 디바이스(110)에 데이터 파일을 송신한다. 데이터 송신들의 제1 라운드 동안, 제1 싱크 컴퓨팅 디바이스(110)는 데이터 블록들 B1 및 B2를 수신했지만, 데이터 블록들 B3, B4, 및 B5는 수신하지 않았거나 또는 손상된 상태로 수신했다. 이 블록들은 도 7에서 각각 데이터 블록들 X3, X4, 및 X5로 도시되어서, 이들이 제1 싱크 컴퓨팅 디바이스(110)에 대해 손실된 데이터 블록들임을 나타낸다. 제2 싱크 컴퓨팅 디바이스(110)는 데이터 블록들 B1, B2, B4, 및 B5를 수신했지만, 데이터 블록 B3은 손실되었다. 제3 싱크 컴퓨팅 디바이스(110)는 데이터 블록들 B2, B3, 및 B5를 수신했지만, 데이터 블록들 B1 및 B4가 손실되었다. 또한, 제4 싱크 컴퓨팅 디바이스(110)는 데이터 송신들의 제1 라운드 동안 모든 데이터 블록들을 수신했다.
데이터 송신들의 제1 라운드 후의 싱크 컴퓨팅 디바이스들(110) 각각에 대한 각자의 버킷 리스트들이 도 8에 도시되어 있다. 제1 컴퓨팅 디바이스(110)의 버킷 리스트(801)는, 데이터 송신들의 제1 라운드 중에 손실된 것으로 제1 컴퓨팅 디바이스(110)가 결정한, 데이터 블록들 B3 (X3), B4 (X4), B5 (X5), 및 임의의 추가 데이터 블록들, Xn의 표시 또는 식별을 포함한다. 유사하게, 제2 컴퓨팅 디바이스의 버킷 리스트(802)는 제2 싱크 컴퓨팅 디바이스(110)에 의해 손실된 것으로 결정된 데이터 블록 B3 및 임의의 추가 데이터 블록들의 표시 또는 식별을 포함한다. 제3 싱크 컴퓨팅 디바이스(110)의 버킷 리스트(803)는 제3 싱크 컴퓨팅 디바이스(110)에 의해 손실된 것으로 결정된 데이터 블록들 B1 및 B4 및 임의의 추가 데이터 블록들의 표시 또는 식별을 포함한다. 제4 컴퓨팅 디바이스(110)의 버킷 리스트(804)는 비어 있다. 비어 있지 않은 버킷 리스트를 가진 각각의 컴퓨팅 디바이스(110)는 상술된 하나의 또는 그 이상의 기준들(예를 들면, 라운드 종료 통지의 수신, 디폴트 지연 값, 버킷 리스트의 크기 등)에 기초하여 소스 컴퓨팅 디바이스(102)에 각자의 버킷 리스트를 송신한다.
다음으로, 도 9에 도시된 바와 같이, 소스 컴퓨팅 디바이스(102)는 컴퓨팅 디바이스들(110)로부터 수신된 버킷 리스트들을 종합해서 데이터 송신들의 제2 라운드를 개시한다. 데이터 송신들의 제2 라운드는 종합 버킷 리스트들에 기초한다. 예를 들면, 일례의 실시예에서, 소스 컴퓨팅 디바이스(102)는 데이터 블록들 B1, B3, B4, B5 등을 재송신한다. 이와 같이 하여, 소스 컴퓨팅 디바이스(102)는 보고 싱크 컴퓨팅 디바이스들(110) 중 하나 또는 그 이상에 의해 손실된 것으로 식별된 데이터 블록들만을 재송신한다. 재송신된 데이터 블록들은 싱크 컴퓨팅 디바이스들(110)에 의해 수신되고, 싱크 컴퓨팅 디바이스들(110)은 특정 데이터 블록들을 수신했는지 또는 수신하지 않았는 지에 기초하여 그들 각자의 버킷 리스트들을 갱신한다. 각각의 싱크 컴퓨팅 디바이스(110)가 데이터 파일이 싱크 컴퓨팅 디바이스들(110) 각각에 성공적으로 송신되었음을 나타내는 유효 데이터 블록들의 전체 집합을 가질 때까지, 소스 컴퓨팅 디바이스(102)는 데이터 송신의 연속 라운드들을 실행할 수 있다.
본 발명이 도면들 및 상술된 설명에서 상세히 도시 및 기술되었지만, 이러한 도시 및 기술은 특징상 한정이 아닌 예시적인 것으로 생각되어야 하며, 오직 일례의 실시예들만이 도시 및 기술되었고 본 발명의 원리 내에 속한 모든 변화들 및 변경들이 보호되는 것이 바람직함을 알 것이다. 예를 들면, 시스템(100)이 일반적으로 "일대다" 데이터 통신에서 사용되기 위한 것으로 상술되었지만, 상술된 시스템, 디바이스들, 및 방법들은 "일대일 데이터" 통신들에도 동일하게 적용될 수 있음을 알아야만 한다. 이러한 실시예들에서, 컴퓨팅 디바이스 그룹(104)은 본 명세서에 기술된 방법들 및 디바이스들을 사용해서 소스 컴퓨팅 디바이스(102)로부터 "일대일" 데이터 통신들을 수신하는, 단일 싱크 컴퓨팅 디바이스(110)를 포함할 수 있다.
Claims (25)
- 소스 컴퓨팅 디바이스로부터 복수의 싱크(sink) 컴퓨팅 디바이스들로의 데이터 송신들의 제1 라운드를 개시해서, 복수의 데이터 블록들을 상기 싱크 컴퓨팅 디바이스들에 송신하는 단계;
각각의 싱크 컴퓨팅 디바이스에서, 각각의 싱크 컴퓨팅 디바이스에 대한 상기 복수의 데이터 블록들 중 손실된 데이터 블록들의 리스트를 생성하는 단계;
상기 데이터 송신들의 제1 라운드의 완료 후에 상기 손실된 데이터 블록들의 리스트를 각각의 싱크 컴퓨팅 디바이스로부터 상기 소스 컴퓨팅 디바이스에 송신하는 단계 - 상기 손실된 데이터 블록들의 리스트를 송신하는 단계는, 손실된 데이터 블록들의 더 작은 리스트를 갖는 제2 싱크 컴퓨팅 디바이스로부터의 손실된 데이터 블록들의 리스트를 송신하기 전에 먼저 손실된 데이터 블록들의 더 큰 리스트를 갖는 제1 싱크 컴퓨팅 디바이스로부터의 손실된 데이터 블록들의 리스트를 송신하는 단계를 포함함 -; 및
상기 소스 컴퓨팅 디바이스로부터 상기 복수의 싱크 컴퓨팅 디바이스들로의 데이터 송신들의 제2 라운드를 개시해서, 상기 싱크 컴퓨팅 디바이스들로부터 수신된 상기 손실된 데이터 블록들의 리스트에 의해 식별된 데이터 블록들을 재송신하는 단계
를 포함하는 방법. - 제1항에 있어서,
상기 손실된 데이터 블록들의 리스트를 생성하는 단계는 상기 복수의 데이터 블록들 중 상기 각각의 싱크 컴퓨팅 디바이스에 의해 수신되지 않았거나 또는 상기 각각의 싱크 컴퓨팅 디바이스에 의해 손상된 상태로 수신된 데이터 블록들의 식별의 표시를 포함하는 리스트를 생성하는 단계를 포함하는 방법. - 제1항에 있어서,
상기 손실된 데이터 블록들의 리스트를 송신하는 단계는 상기 손실된 데이터 블록들의 리스트가 비어 있지 않은 경우에만 상기 손실된 데이터 블록들의 리스트를 송신하는 단계를 포함하는 방법. - 제1항에 있어서,
상기 손실된 데이터 블록들의 리스트를 송신하는 단계는 데이터 송신들의 한 라운드의 완료 후의 지연 기간에 기초하여 상기 손실된 데이터 블록들의 리스트를 송신하는 단계를 포함하는 방법. - 제4항에 있어서,
상기 소스 컴퓨팅 디바이스로부터 각각의 싱크 컴퓨팅 디바이스에 디폴트 지연 값을 송신하는 단계를 더 포함하는 방법. - 소스 컴퓨팅 디바이스로부터 복수의 싱크(sink) 컴퓨팅 디바이스들로의 데이터 송신들의 제1 라운드를 개시해서, 복수의 데이터 블록들을 상기 싱크 컴퓨팅 디바이스들에 송신하는 단계;
각각의 싱크 컴퓨팅 디바이스에서, 각각의 싱크 컴퓨팅 디바이스에 대한 상기 복수의 데이터 블록들 중 손실된 데이터 블록들의 리스트를 생성하는 단계;
상기 소스 컴퓨팅 디바이스로부터 각각의 싱크 컴퓨팅 디바이스에 디폴트 지연 값을 송신하는 단계;
각각의 싱크 컴퓨팅 디바이스에서, 상기 디폴트 지연 값에 기초하여 상기 각각의 싱크 컴퓨팅 디바이스에 대한 지연 기간을 결정하는 단계;
상기 데이터 송신들의 제1 라운드의 완료 후의 상기 지연 기간에 기초하여 상기 손실된 데이터 블록들의 리스트를 각각의 싱크 컴퓨팅 디바이스로부터 상기 소스 컴퓨팅 디바이스에 송신하는 단계; 및
상기 소스 컴퓨팅 디바이스로부터 상기 복수의 싱크 컴퓨팅 디바이스들로의 데이터 송신들의 제2 라운드를 개시해서, 상기 싱크 컴퓨팅 디바이스들로부터 수신된 상기 손실된 데이터 블록들의 리스트에 의해 식별된 데이터 블록들을 재송신하는 단계
를 포함하는 방법. - 제6항에 있어서,
상기 지연 기간은 상기 각각의 싱크 컴퓨팅 디바이스의 상기 손실된 데이터 블록들의 리스트 내의 데이터 블록들의 수에 의해 나누어진 디폴트 지연 값과 동일한 방법. - 제1항에 있어서,
상기 손실된 데이터 블록들의 리스트를 송신하는 단계는 상기 각각의 싱크 컴퓨팅 디바이스의 상기 손실된 데이터 블록들의 리스트 내의 식별된 데이터 블록들의 수에 기초하여 상기 손실된 데이터 블록들의 리스트를 송신하는 단계를 포함하는 방법. - 제8항에 있어서,
상기 소스 컴퓨팅 디바이스로부터 각각의 싱크 컴퓨팅 디바이스에 임계값을 송신하는 단계를 더 포함하고, 상기 임계값은 미리 결정된 최소 리스트 크기를 정의하는 방법. - 제9항에 있어서,
상기 손실된 데이터 블록들의 리스트를 송신하는 단계는 상기 각각의 리스트내의 식별된 데이터 블록들의 수가 상기 임계값보다 더 큰 경우에만 각각의 싱크 컴퓨팅 디바이스로부터의 상기 손실된 데이터 블록들의 리스트를 송신하는 단계를 포함하는 방법. - 제1항에 있어서,
상기 데이터 송신들의 제1 라운드의 완료시에 상기 소스 컴퓨팅 디바이스로부터 각각의 싱크 컴퓨팅 디바이스에 라운드 종료 통지를 송신하는 단계를 더 포함하는 방법. - 제1항에 있어서,
상기 복수의 싱크 컴퓨팅 디바이스들 중 제1 싱크 컴퓨팅 디바이스를 이용하여 상기 복수의 데이터 블록들 중 적어도 하나의 데이터 블록을 수신하는 단계를 더 포함하고,
상기 손실된 데이터 블록들의 리스트를 생성하는 단계는, 상기 제1 싱크 컴퓨팅 디바이스에서, 상기 적어도 하나의 데이터 블록에 기초하여 상기 손실된 데이터 블록들의 리스트를 갱신하는 단계를 포함하는 방법. - 제1항에 있어서,
상기 소스 컴퓨팅 디바이스에서, 상기 싱크 컴퓨팅 디바이스들로부터 수신된 상기 손실된 데이터 블록들의 리스트들을 종합함으로써 손실된 데이터 블록들의 주 리스트(master list)를 생성하는 단계를 더 포함하는 방법. - 제1항에 있어서,
각각의 싱크 컴퓨팅 디바이스에 대한 상기 손실된 데이터 블록들의 리스트가 빌(empty) 때까지
상기 싱크 컴퓨팅 디바이스들에서, 상기 각각의 싱크 컴퓨팅 디바이스에 대한 상기 복수의 데이터 블록들 중 손실된 데이터 블록들의 새로운 리스트를 생성하는 단계;
각각의 새로운 리스트가 비어 있지 않은 경우 상기 싱크 컴퓨팅 디바이스들로부터의 손실된 데이터 블록들의 각각의 새로운 리스트를 송신하는 단계; 및
상기 소스 컴퓨팅 디바이스로부터 상기 복수의 싱크 컴퓨팅 디바이스로의 데이터 송신들의 새로운 라운드를 개시해서 상기 손실된 데이터 블록들의 새로운 리스트에 의해 식별된 데이터 블록들을 재송신하는 단계
를 반복하는 단계를 더 포함하는 방법. - 컴퓨팅 디바이스로서,
프로세서; 및
상기 프로세서에 의해 실행될 때, 상기 프로세서가
소스 컴퓨팅 디바이스로부터의 데이터 송신들의 제1 라운드의 통지를 수신하고;
상기 데이터 송신들의 제1 라운드에 기초하여 손실된 데이터 블록들의 리스트를 생성하며 - 상기 손실된 데이터 블록들의 리스트는 상기 데이터 송신들의 제1 라운드 중에 상기 컴퓨팅 디바이스에 의해 수신되지 않았거나 또는 손상된 상태로 수신된, 상기 소스 컴퓨팅 디바이스에 의해 송신된 데이터 블록들을 식별함 - ;
상기 데이터 송신들의 제1 라운드가 완료했다는 통지의 수신에 응답해서 상기 소스 컴퓨팅 디바이스에 상기 손실된 데이터 블록들의 리스트를 송신하고 - 상기 손실된 데이터 블록들의 리스트를 송신하는 것은, 손실된 데이터 블록들의 더 작은 리스트를 갖는 다른 컴퓨팅 디바이스보다 먼저 상기 컴퓨팅 디바이스가 상기 손실된 데이터 블록들의 리스트를 송신하도록, 상기 손실된 데이터 블록들의 리스트의 크기에 기초하여 상기 손실된 데이터 블록들의 리스트를 송신하는 것을 포함함 -;
상기 소스 컴퓨팅 디바이스로부터의 데이터 송신의 제2 라운드의 통지를 수신하게 - 상기 데이터 송신들의 제2 라운드는 상기 손실된 데이터 블록들의 리스트에 기초함 -
하는 복수의 명령들을 저장한 메모리 디바이스
를 포함하는 컴퓨팅 디바이스. - 제15항에 있어서,
상기 복수의 명령들은 또한 상기 프로세서가
상기 데이터 송신들의 제1 라운드 중에 송신된 제1 데이터 블록을 수신하고;
상기 제1 데이터 블록의 수신에 응답해서 상기 소스 컴퓨팅 디바이스에 확인응답 송신을 보내지 않고 상기 데이터 송신들의 제1 라운드 중에 송신된 제2 데이터 블록을 수신하게
하는 컴퓨팅 디바이스. - 제15항에 있어서,
상기 손실된 데이터 블록들의 리스트의 송신은 상기 데이터 송신들의 제1 라운드가 완료했다는 통지의 수신 후에 개시된 지연 기간의 만료 후의 상기 손실된 데이터 블록들의 리스트의 송신을 포함하는 컴퓨팅 디바이스. - 컴퓨팅 디바이스로서,
프로세서; 및
상기 프로세서에 의해 실행될 때, 상기 프로세서가
소스 컴퓨팅 디바이스로부터의 데이터 송신들의 제1 라운드의 통지를 수신하고;
상기 소스 컴퓨팅 디바이스로부터 디폴트 지연 값을 수신하고;
상기 데이터 송신들의 제1 라운드에 기초하여 손실된 데이터 블록들의 리스트를 생성하며 - 상기 손실된 데이터 블록들의 리스트는 상기 데이터 송신들의 제1 라운드 중에 상기 컴퓨팅 디바이스에 의해 수신되지 않았거나 또는 손상된 상태로 수신된, 상기 소스 컴퓨팅 디바이스에 의해 송신된 데이터 블록들을 식별함 - ;
상기 손실된 데이터 블록들의 리스트 내의 데이터 블록들의 수로 상기 디폴트 지연 값을 나눔으로써 지연 기간을 계산하고;
상기 데이터 송신들의 제1 라운드가 완료했다는 통지의 수신에 응답해서, 그리고 상기 데이터 송신들의 제1 라운드가 완료했다는 통지를 수신한 후에 개시된 상기 지연 기간의 만료 후에, 상기 소스 컴퓨팅 디바이스에 상기 손실된 데이터 블록들의 리스트를 송신하고;
상기 소스 컴퓨팅 디바이스로부터의 데이터 송신의 제2 라운드의 통지를 수신하게 - 상기 데이터 송신들의 제2 라운드는 상기 손실된 데이터 블록들의 리스트에 기초함 -
하는 복수의 명령들을 저장한 메모리 디바이스
를 포함하는 컴퓨팅 디바이스. - 제15항에 있어서,
상기 손실된 데이터 블록들의 리스트의 송신은 상기 데이터 블록들의 리스트 내의 데이터 블록들의 수에 기초한 상기 손실된 데이터 블록들의 리스트의 송신을 포함하는 컴퓨팅 디바이스. - 제19항에 있어서,
상기 복수의 명령들은 또한 상기 프로세서가
상기 소스 컴퓨팅 디바이스로부터 임계값을 수신하게 하고, 상기 임계값은 데이터 블록들의 최소 수를 정의하며;
상기 손실된 데이터 블록들의 리스트의 송신은 상기 손실된 데이터 블록들의 리스트 내의 데이터 블록들의 수가 상기 임계값과 미리 결정된 관계를 가지는 경우에만 상기 손실된 데이터 블록들의 리스트를 송신하는 것을 포함하는 컴퓨팅 디바이스. - 복수의 명령들을 포함하는 기계 판독 가능 유형 매체로서,
상기 복수의 명령들은, 실행에 응답해서, 컴퓨팅 디바이스가
소스 컴퓨팅 디바이스에 확인응답 송신을 보내지 않고 상기 소스 컴퓨팅 디바이스로부터의 데이터 송신들의 제1 라운드에 기초하여 손실된 데이터 블록들의 리스트를 생성하고 - 상기 손실된 데이터 블록들의 리스트는 상기 컴퓨팅 디바이스에 의해 수신되지 않았거나 또는 손상된 상태로 수신된 데이터 송신들의 라운드 중에 상기 소스 컴퓨팅 디바이스에 의해 송신된 데이터 블록들을 식별함 - ;
상기 데이터 송신의 라운드의 완료 후에 상기 소스 컴퓨팅 디바이스에 상기 손실된 데이터 블록들의 리스트를 송신해서, 상기 소스 컴퓨팅 디바이스가 상기 손실된 데이터 블록들의 리스트 내의 식별된 데이터 블록들을 재송신하게
하는 기계 판독 가능 유형 매체. - 제21항에 있어서,
상기 손실된 데이터 블록들의 리스트의 송신은 상기 데이터 송신의 라운드의 완료 후의 계산된 지연 기간에 기초한 상기 손실된 데이터 블록들의 리스트의 송신을 포함하는 기계 판독 가능 유형 매체. - 제21항에 있어서,
상기 손실된 데이터 블록들의 리스트의 송신은 미리 결정된 최소 임계값 보다 더 큰 상기 손실된 데이터 블록들의 리스트 내의 데이터 블록들의 수에 응답해서 상기 손실된 데이터 블록들의 리스트를 송신하는 것을 포함하는 기계 판독 가능 유형 매체. - 싱크 컴퓨팅 디바이스에서, 소스 컴퓨팅 디바이스로부터의 데이터 송신들의 제1 라운드를 수신하는 단계 - 상기 데이터 송신들의 제1 라운드는 복수의 데이터 블록들을 포함함 - ;
상기 싱크 컴퓨팅 디바이스에서, 상기 복수의 데이터 블록들에 기초하여 손실된 데이터 블록들의 리스트를 생성하는 단계;
상기 데이터 송신들의 제1 라운드의 완료 후에 상기 소스 컴퓨팅 디바이스에 상기 손실된 데이터 블록들의 리스트를 송신하는 단계 - 상기 손실된 데이터 블록들의 리스트를 송신하는 단계는, 손실된 데이터 블록들의 더 작은 리스트를 갖는 다른 컴퓨팅 디바이스보다 먼저 상기 컴퓨팅 디바이스가 상기 손실된 데이터 블록들의 리스트를 송신하도록, 상기 손실된 데이터 블록들의 리스트의 크기에 기초하여 상기 손실된 데이터 블록들의 리스트를 상기 소스 컴퓨팅 디바이스에 송신하는 단계를 포함함 -; 및
상기 싱크 컴퓨팅 디바이스에서, 상기 소스 컴퓨팅 디바이스로부터의 데이터 송신들의 제2 라운드를 수신하는 단계 - 상기 데이터 송신들의 제2 라운드는 상기 손실된 데이터 블록들의 리스트에 적어도 부분적으로 기초함 -
를 포함하는 방법. - 제24항에 있어서,
상기 손실된 데이터 블록들의 리스트를 송신하는 단계는 상기 데이터 블록들의 리스트 내의 식별된 데이터 블록들의 수에 기초하여 상기 손실된 데이터 블록들의 리스트를 송신하는 단계를 포함하는 방법.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2009/001479 WO2011072422A1 (en) | 2009-12-17 | 2009-12-17 | Method and system for facilitating one-to-many data transmissions with reduced network overhead |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120083457A KR20120083457A (ko) | 2012-07-25 |
KR101412422B1 true KR101412422B1 (ko) | 2014-06-25 |
Family
ID=44166706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020127012491A KR101412422B1 (ko) | 2009-12-17 | 2009-12-17 | 감소된 네트워크 오버헤드로 일대다 데이터 송신들을 용이하게 하기 위한 방법 및 시스템 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8977772B2 (ko) |
EP (2) | EP3096496B1 (ko) |
JP (1) | JP5709320B2 (ko) |
KR (1) | KR101412422B1 (ko) |
CN (1) | CN102652411A (ko) |
WO (1) | WO2011072422A1 (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160234031A1 (en) * | 2015-02-05 | 2016-08-11 | Qualcomm Incorporated | Centralized Application Level Multicasting with Peer-Assisted Application Level Feedback for Scalable Multimedia Data Distribution in WiFi Miracast |
CN105045224B (zh) * | 2015-05-29 | 2017-10-03 | 珠海格力电器股份有限公司 | 数据传输的方法和装置 |
US9823984B2 (en) * | 2015-06-25 | 2017-11-21 | Intel Corporation | Remapping of memory in memory control architectures |
WO2018045512A1 (zh) * | 2016-09-07 | 2018-03-15 | 海能达通信股份有限公司 | 一种数据组呼方法、装置及系统 |
TWI635396B (zh) * | 2016-12-23 | 2018-09-11 | 英業達股份有限公司 | 使用兩階記憶體處理封包資料之資料傳輸系統、資料接收方法、及資料傳送方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060120248A (ko) * | 2004-02-13 | 2006-11-24 | 노키아 코포레이션 | 손실 부분들의 식별 및 재전송 |
KR20070010037A (ko) * | 2004-03-29 | 2007-01-19 | 노키아 코포레이션 | 멀티캐스트/브로드캐스트 데이터 배포를 위한 데이터 복구강화 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3831202B2 (ja) | 2000-06-05 | 2006-10-11 | 三菱電機株式会社 | 無線通信システム、無線基地局、無線端末、および無線マルチキャスト通信制御方法 |
JP2002124992A (ja) * | 2000-08-10 | 2002-04-26 | Kddi Corp | マルチキャストによるデータファイル配信方法 |
US7047309B2 (en) * | 2000-08-23 | 2006-05-16 | International Business Machines Corporation | Load balancing and dynamic control of multiple data streams in a network |
US20020099838A1 (en) | 2001-01-22 | 2002-07-25 | Donia Sebastian | Method for allocating receive buffers to accommodate retransmission scheme in wireless computer networks |
US6807578B2 (en) * | 2001-03-14 | 2004-10-19 | International Business Machines Corporation | Nack suppression for multicast protocols in mostly one-way networks |
US20040165596A1 (en) * | 2001-08-01 | 2004-08-26 | Garcia Javier Romero | Apparatus and method for flow scheduling based on priorities in a mobile network |
US7100078B1 (en) * | 2001-11-15 | 2006-08-29 | Network Appliance, Inc. | Method and apparatus for restoration of lost blocks in a multicast data transmission |
US7546380B2 (en) | 2002-10-28 | 2009-06-09 | Cisco Technology, Inc. | RPF multi-party reliable transport |
CN100417251C (zh) | 2002-11-08 | 2008-09-03 | 中兴通讯股份有限公司 | 基于随路控制命令的数据下载方法 |
US20070115814A1 (en) * | 2003-03-29 | 2007-05-24 | Regents Of The University Of California, The | Method and apparatus for improved data transmission |
CN1277374C (zh) | 2003-09-29 | 2006-09-27 | 中兴通讯股份有限公司 | 通信系统中基站与服务器数据库实时同步方法 |
US20050249231A1 (en) | 2003-11-25 | 2005-11-10 | Asif Khan | Methods and systems for reliable distribution of media over a network |
US7296205B2 (en) * | 2004-02-18 | 2007-11-13 | Nokia Corporation | Data repair |
US7536622B2 (en) * | 2004-03-29 | 2009-05-19 | Nokia Corporation | Data repair enhancements for multicast/broadcast data distribution |
JP2006060408A (ja) * | 2004-08-18 | 2006-03-02 | Nippon Telegr & Teleph Corp <Ntt> | 無線パケット通信方法および無線局 |
US20060146822A1 (en) * | 2004-12-30 | 2006-07-06 | Mikolaj Kolakowski | System, protocol and associated methods for wireless multimedia distribution |
MX2007013829A (es) * | 2005-05-03 | 2008-02-05 | Nokia Corp | Retroalimentacion de planeacion de cliente durante sesiones de transferencia de flujo. |
JP2009515401A (ja) * | 2005-11-04 | 2009-04-09 | ノキア コーポレイション | マルチキャスト及び/又は同報肯定応答機構 |
US7636767B2 (en) * | 2005-11-29 | 2009-12-22 | Cisco Technology, Inc. | Method and apparatus for reducing network traffic over low bandwidth links |
CN1937553B (zh) | 2006-05-11 | 2010-05-12 | 蓝汛网络科技(北京)有限公司 | 基于流媒体数据帧的对等网络数据调度方法 |
WO2008029793A1 (fr) | 2006-09-05 | 2008-03-13 | Nec Corporation | Procédé de récupération de paquets, système de communication, dispositif de traitement d'informations et programme |
US20080056263A1 (en) * | 2006-09-06 | 2008-03-06 | Vinit Jain | Efficient transport layer processing of incoming packets |
JP4859987B2 (ja) * | 2007-03-06 | 2012-01-25 | トムソン ライセンシング | 適応的でスケーラブルなパケット誤り訂正装置及び方法 |
US8018933B2 (en) * | 2007-06-27 | 2011-09-13 | Microsoft Corporation | Reliable multicast with automatic session startup and client backfil support |
CN101127702A (zh) | 2007-08-02 | 2008-02-20 | 北京航空航天大学 | 用于平面结构网络的多对多可靠组播错误恢复方法 |
FR2921529B1 (fr) * | 2007-09-21 | 2009-11-13 | Alcatel Lucent | Procede de transmission de donnees depuis une infrastructure d'un reseau de radiocommunication vers des equipements utilisateur, et equipements pour la mise en oeuvre du procede |
JP4936469B2 (ja) * | 2008-01-24 | 2012-05-23 | パナソニック株式会社 | 通信システム |
EP2484040B1 (en) * | 2009-10-02 | 2018-03-07 | Telefonaktiebolaget LM Ericsson (publ) | Method for retransmission using checksums for identifying lost data packets |
US9461835B2 (en) * | 2011-04-08 | 2016-10-04 | International Business Machines Corporation | Multicast bulk transfer system |
-
2009
- 2009-12-17 KR KR1020127012491A patent/KR101412422B1/ko active IP Right Grant
- 2009-12-17 CN CN2009801629658A patent/CN102652411A/zh active Pending
- 2009-12-17 JP JP2012541294A patent/JP5709320B2/ja active Active
- 2009-12-17 EP EP16179026.6A patent/EP3096496B1/en active Active
- 2009-12-17 US US13/061,419 patent/US8977772B2/en active Active
- 2009-12-17 WO PCT/CN2009/001479 patent/WO2011072422A1/en active Application Filing
- 2009-12-17 EP EP09852160.2A patent/EP2514144B1/en active Active
-
2014
- 2014-12-08 US US14/563,323 patent/US10503599B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060120248A (ko) * | 2004-02-13 | 2006-11-24 | 노키아 코포레이션 | 손실 부분들의 식별 및 재전송 |
KR20070010037A (ko) * | 2004-03-29 | 2007-01-19 | 노키아 코포레이션 | 멀티캐스트/브로드캐스트 데이터 배포를 위한 데이터 복구강화 |
Also Published As
Publication number | Publication date |
---|---|
CN102652411A (zh) | 2012-08-29 |
EP3096496A1 (en) | 2016-11-23 |
US20120210016A1 (en) | 2012-08-16 |
US8977772B2 (en) | 2015-03-10 |
EP2514144B1 (en) | 2018-06-27 |
WO2011072422A1 (en) | 2011-06-23 |
JP2013512628A (ja) | 2013-04-11 |
JP5709320B2 (ja) | 2015-04-30 |
EP3096496B1 (en) | 2018-03-14 |
EP2514144A4 (en) | 2014-09-24 |
KR20120083457A (ko) | 2012-07-25 |
US10503599B2 (en) | 2019-12-10 |
US20150220399A1 (en) | 2015-08-06 |
EP2514144A1 (en) | 2012-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11934340B2 (en) | Multi-path RDMA transmission | |
US10891253B2 (en) | Multicast apparatuses and methods for distributing data to multiple receivers in high-performance computing and cloud-based networks | |
US20200358857A1 (en) | Data transmission method, system and proxy server | |
US10503599B2 (en) | Method and system for facilitating one-to-many data transmissions with reduced network overhead | |
US20090113082A1 (en) | Device, System, and Method of Speculative Packet Transmission | |
JP5357339B2 (ja) | アクセス・ポイントの輻輳検出及び低減のための方法及びシステム | |
JP5331898B2 (ja) | 並列計算用の通信方法、情報処理装置およびプログラム | |
US20190173960A1 (en) | Method, device and computer program product for protocol selection | |
CN104247322A (zh) | 减少存在通信错误时的总线争用的可变确认率 | |
CN103763217A (zh) | 多路径tcp的分组调度方法和装置 | |
JP4644253B2 (ja) | モバイルスケーラブルリンク(msl)アーキテクチャのための転送肯定応答 | |
US8630837B2 (en) | Multicast emulation | |
CN109586931B (zh) | 组播方法及终端设备 | |
TWI667902B (zh) | 傳輸資源的指示方法、裝置及存儲媒介 | |
CN106130699B (zh) | 有助于具有降低网络开销的一对多数据传输的方法和系统 | |
CN109831485A (zh) | 一种激光雷达的数据通信与解析方法 | |
WO2024120344A1 (zh) | 一种有线串行总线数据传输方法、系统及相关装置 | |
JP5775123B2 (ja) | アクセス・ポイントの輻輳検出及び低減のための記憶媒体及びシステム | |
WO2024032599A1 (zh) | 会话绑定方法及功能、存储介质及电子设备 | |
KR950013138B1 (ko) | 교실망에서의 프로그램 전송방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20170601 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20180529 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20190530 Year of fee payment: 6 |