KR101153124B1 - 네트워크 코딩을 사용한 콘텐츠 분배 - Google Patents

네트워크 코딩을 사용한 콘텐츠 분배 Download PDF

Info

Publication number
KR101153124B1
KR101153124B1 KR1020050059240A KR20050059240A KR101153124B1 KR 101153124 B1 KR101153124 B1 KR 101153124B1 KR 1020050059240 A KR1020050059240 A KR 1020050059240A KR 20050059240 A KR20050059240 A KR 20050059240A KR 101153124 B1 KR101153124 B1 KR 101153124B1
Authority
KR
South Korea
Prior art keywords
node
block
blocks
encoded
coefficient vector
Prior art date
Application number
KR1020050059240A
Other languages
English (en)
Other versions
KR20060049764A (ko
Inventor
크리스토스 칸트시디스
파블오 로드리거즈 로드리거즈
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20060049764A publication Critical patent/KR20060049764A/ko
Application granted granted Critical
Publication of KR101153124B1 publication Critical patent/KR101153124B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0076Distributed coding, e.g. network coding, involving channel coding
    • H04L1/0077Cooperative coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1078Resource delivery mechanisms
    • H04L67/108Resource delivery mechanisms characterised by resources being split in blocks or fragments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0093Point-to-multipoint
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0097Relays

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Tourism & Hospitality (AREA)
  • Health & Medical Sciences (AREA)
  • Strategic Management (AREA)
  • Economics (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Information Transfer Between Computers (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

콘텐츠를 분배하기 위해 공동 작용하는 데스크탑 PC에 의존하는 콘텐츠 분배 메카니즘이 개시된다. 적어도 하나의 중간 네트워크 노드를 허용함으로써, 확실한 방법으로 콘텐츠를 분배하여 그 노드에서 사용 가능한 콘텐츠의 일부의 선형 조합을 포함하는 패킷들을 생성하고 전송한다. 그러한 선형 조합은, 인코딩되거나 인코딩되지 않은 형태의 원본 콘텐츠 파일의 적어도 일부를 사용하는 소스 및 클라이언트에 의해 생성될 수 있다. 클라이언트가 선형적으로 독립적인 패킷들의 조합을 충분히 받은 후에, 원본 콘텐츠는 재구성될 수 있다.
콘텐츠, 분배, 선형 조합

Description

네트워크 코딩을 사용한 콘텐츠 분배{CONTENT DISTRIBUTION USING NETWORK CODING}
도 1은 네트워크 코딩을 사용하는 콘텐츠 분배의 예가 구현될 수 있는 콘텐츠 분배 네트워크 환경을 도시하는 도면.
도 2는 네트워크 코딩을 사용하는 콘텐츠 분배의 예가 또한 구현될 수 있는 콘텐츠 분배 네트워크 환경을 도시하는 도면.
도 3은 수신자의 관점으로부터 네트워크 코딩을 사용하는 콘텐츠 분배를 위한 예시적인 처리 흐름을 도시하는 도면.
도 4는 송신자의 관점으로부터 네트워크 코딩을 사용하는 콘텐츠 분배를 위한 예시적인 흐름을 도시하는 도면.
도 5는 네트워크 코딩을 사용하는 콘텐츠 분배가 구현될 수 있는 예시적인 시스템을 도시하는 도면.
본건 출원은 2004. 7. 2.에 출원된 미국 가출원 번호 제60/585212에 기초한다.
오늘날의 네트워크 컴퓨팅 환경에서는, 네트워크 내의 노드들에 대용량의 콘텐츠 운반을 제공하는 것이 필요하거나 바람직하다. 대용량 콘텐츠 운반에 사용되는 하나의 메커니즘은 네트워크 코딩을 사용하는 콘텐츠 분배 시스템이다. 일반적으로, 콘텐츠 분배 시스템은 네트워크 코딩을 사용해 서로 연결되고 공동 작용하여서 소스로부터의 임의의 디지털 콘텐츠 유형을 하나 이상의 서로 연결되고 상호 작용하는 노드들에 분배하는 노드들의 네트워크이다. 전형적인 콘텐츠 분배 시스템은 먼저 효율적인 오버레이 토폴로지를 구성해야만 하고, 그 후, 모든 노드가 분배의 노력을 똑같이 분담하도록 토폴로지에 걸쳐 정보의 전송을 계획해야 한다.
몇몇 요소들이 전형적인 콘텐츠 분배 시스템의 효율에 영향을 미칠 수 있다. 첫째로, 전형적인 콘텐츠 분배 시스템의 효율은 오버레이 토폴로지의 노드 수가 증가함에 따라 감소할 수 있다. 둘째로, 전형적인 콘텐츠 분배 시스템의 효율은, 특히 각 개별 노드의 대역폭 수용량(bandwidth capabilities)에 관하여 네트워크가 더욱 이질화(heterogeneous)되면서 감소할 수 있다. 셋째로, 전형적인 콘텐츠 분배의 효율은, '기생' 노드들('leeching' nodes)을 방지하거나 최소화하도록 설계된 유인 메커니즘(incentive mechanisms)의 구현에 따라 감소할 수 있다. 기생 노드들은 네트워크 상에서 공동 작용하지 않는 노드들이고, 네트워크 상에서 수신자로서만 행동하도록 변형되어서, 다른 사용들의 업로드 용량을 줄인다.
본 발명은 첨부된 도면을 참조하여 다음의 상세한 설명으로부터 더욱 잘 이해될 수 있다.
이 요약은 간단한 형식으로, 아래의 상세한 설명에서 설명되는 하나 이상의 개념을 독자에게 일반적으로 소개하기 위해 제공된다. 이 설명은 청구하는 사항에 핵심적이면서/거나 필요한 특징을 식별하도록 의도된 것이 아니고, 또한 청구하는 사항의 범위를 결정하는데 도움이 되도록 의도된 것도 아니다.
콘텐츠 분배 네트워크 내에서 빠르고 확장 가능한 콘텐츠 분배를 제공하기 위한 다양한 기술이 여기에 개시된다.
여기에서 설명되는 일부 기술들에 의하면, 디지털 콘텐츠(예컨대, 파일)는 먼저 N 블럭의 콘텐츠로 분할될 수 있는데, 이는 인코딩될 수도 있고 되지 않을 수도 있다. 하나 이상의 N 블럭은 그 후 네트워크 상에서 공동 작용하는 노드들로 분배될 수 있다.
콘텐츠 분배 네트워크의 임의의 공동 작용하는 노드들에서 콘텐츠의 분배된 블럭들은 인코딩된 데이터 패킷들로 인코딩될 수 있다. 콘텐츠 분배 네트워크의 공동 작용하는 노드에서 인코딩된 데이터 패킷들은, 그 특정의 공동 작용하는 노드에서 수신된 콘텐츠의 분배된 블럭에 관한 정보를 포함할 수 있다. 나아가, 그 특정의 공동 작용에서 인코딩된 데이터 패킷들은 다른 인코딩된 데이터 패킷들에 관한 정보를 또한 포함할 수 있다. 따라서, 인코딩된 데이터 패킷은, 다운스트림 수신 노드에서 디지털 콘텐츠를 재구성할 때, 콘텐츠의 임의의 분배된 N 블럭의 장소에 사용될 수 있다.
즉, 적어도 N 블럭의 콘텐츠로 분할된 디지털 콘텐츠의 사본을 다운로드하고 자 하는 클라이언트는, 소스 노드 또는 네트워크 노드의 임의의 조합으로부터 콘텐츠의 N개의 원본 블럭의 각각을 찾아 다운로드할 것이 필요하지 않고, 콘텐츠 분배 네트워크의 공동 작용하는 노드들 중 임의의 것으로부터 N 블럭의 N개의 인코딩된 표현(representations)을 다운로드한다.
컴퓨터 네트워크에서 디지털 콘텐츠의 운반을 용이하게 하기 위한 다양한 기술이 여기에 설명된다.
여기에 설명되는 다양한 실시예에 따르면, 수신 노드들에서 분담되는 디지털 콘텐츠의 조각 또는 파일을 저장하는 소스 노드는, 네트워크 상의 관리 서비스와 소통하여 디지털 콘텐츠의 조각이나 파일이 사용 가능하다는 것을 알릴 수 있다. 디지털 컨텐츠의 조각이나 파일을 다운로드 또는 분배하기 전에, 파일의 소스 노드(또는, 일반적으로, 디지털 콘텐츠의 조각)는 파일(또는, 디지털 콘텐츠의 조각)을 소정 사이즈의 소정 수의 블럭으로 분할하고 그 정보를 네트워크 상의 어느 하나의 관리 서비스, 네트워크 상의 다른 서비스, 콘텐츠를 다운로드할 수 있는 네트워크 상의 수신 노드, 또는 달리 콘텐츠가 유용하다는 것을 검색할 수 있는 네트워크 상의 다른 임의의 노드에 제공할 수 있다.
일단 디지털 콘텐츠의 파일 또는 조각이 다운로드 또는 분배를 위해 사용 가능하다는 것을 소스 노드가 알리면, 네트워크 상의 수신 노드는 관리 서비스와 소통하고 다운로드를 위한 디지털 콘텐츠의 파일 또는 조각을 선택할 수 있다. 네트워크 코딩을 사용하는 적어도 하나의 콘텐츠 분배의 구현에서, 수신 노드가 다운로드할 디지털 콘텐츠의 파일 또는 조각을 선택할 때, 수신 노드는 네트워크 상의 관 리 서비스와 소통하여, 소스 노드로부터 분배된 디지털 콘텐츠의 파일 또는 조각의 적어도 일부를 수신하는 다른 수신 노드들을 알 수 있다.
소스 노드가 원본 디지털 콘텐츠의 파일 또는 조각을 소정 수의 블럭들로 분할한 때, 소스 노드는 그 후 블럭들을 인코딩하도록 선택된 수학 시스템에 따라 수학 수식자(modifier) 집합을 사용하여 블럭들을 인코딩할 수 있다. 이렇게 선택된 수학 시스템은 블럭, 파일, 또는 디지털 콘텐츠의 조각을 등식에서의 변수들로 처리할 수 있고, 인코딩된 블럭을 등식에 대한 해로서 더 처리할 수 있다. 인코딩되지 않은 블럭들은 또한 동일한 방식으로 사용될 수 있고, 인코딩된 블럭들과 수학 시스템에 동일하게 포함될 수 있다. 예를 들어, 인코딩되지 않은 블럭들은 원본 블럭만의 선형 조합으로 고려될 수 있다. 나아가, 소스 노드는 파일의 특정 영역들만을 인코딩하고 다른 영역들은 인코딩되지 않도록 놔두는 것을 선택할 수 있다.
따라서, 일단 수신 노드가 인코딩되거나 인코딩되지 않은 블럭들과 이들의 해당 수학 수식자들을 충분히 수신하면, 수신 노드는 등식들의 시스템을 풀어서 변수들(예컨데, 블럭들)의 값을 알 수 있다. 특징들을 가진 임의의 수학 시스템이 여기에 사용될 수 있고, 따라서 여기에 설명된 구현에 제한되지 않는다.
소스 노드가 원본 디지털 콘텐츠의 적어도 하나의 블럭을 인코딩한 때, 소스 노드는 하나 이상의 블럭들을 수신 노드들에게 분배할 수 있다. 네트워크 코딩을 사용한 적어도 하나의 콘텐츠 분배의 대체적인 구현에서, 수신 노드는 특정 블럭을 위한 요청을 보내는 것이 아니라, 수학 수식자들의 집합을 수신하기 위한 요청을 보낼 수 있다. 나아가, 일단 수신 노드가 요청된 수학 수식자들을 수신하면, 수신 노드는 그 후 수학 시스템에 따라 계산을 수행하여 수학 수식자들이 수학 시스템의 해결에 도움이 되는 부가 정보를 제공하는지 결정한다. 마지막으로, 수학 수식자들이 수학 시스템을 해결하는데 도움이 되는 정보를 포함하는지 결정되면, 수신 노드는 수학 수식자들 집합에 해당하는 인코딩된 블럭을 보내기 위한 요청을 소스 노드에 보낼 수 있다.
게다가, 네트워크 코딩을 사용하는 콘텐츠 분배의 적어도 하나의 다른 구현에서, 수신 노드(즉, R)가 임의의 수의 블럭을 수신하면, 수신 노드(R)는 그 후 다른 콘텐츠 분배 네트워크 내의 소스 노드와 유사하게 기능하는 송신 노드로 행동할 수 있다. 예를 들어, 다른 수신 노드(G)로부터 요청들을 수신하면, 수신 노드(R)는 소스 노드에 의해 사용되는 것과 유사한 방식으로 수신 노드(R)에서 블럭들을 재 인코딩함으로써 소스 노드로 동작하여 독자적으로 블럭들을 인코딩한다.
최소 수의 블럭들과 수학 수식자들을 수신하면, 수신 노드는 수학 시스템을 풀어서 수신된 블럭들을 디코딩할 수 있다. 수학 시스템의 해결은 인코딩되거나 인코딩되지 않은 블럭들의 임의의 혼합에 의해 시작될 수 있고, 블럭들의 전체 집합이 수신되기 전에 시작될 수 있다. 일단 블럭들이 디코딩되어 원본 블럭들이 복구되면, 수신 노드는 디코딩된 블럭들을 결합하여 디지털 콘텐츠의 원본 파일 또는 조각의 사본을 생성할 수 있다.
도 1은, 다수의 상호 연결된 네트워크 노드들을 포함하는 컴퓨터 네트워크(100)의 예를 도시하는데, 여기에 네트워크 코딩을 사용한 콘텐츠 분배의 하나 이상의 예가 구현될 수 있다.
여기에 사용되듯이, "노드"라는 용어는 네트워크(100)에서 유일하게 어드레스될 수 있거나 유일하게 식별될 수 있고, 네트워크(100) 상의 다른 노드들과 소통하도록 동작할 수 있는 임의의 컴퓨터 시스템, 장치, 또는 프로세스를 지칭할 수 있다. 예를 들어, 한정하는 것은 아니지만, 노드는 개인용 컴퓨터, 서버 컴퓨터, 핸드-헬드 또는 랩탑 장치, 타블렛 장치, 멀티프로세서 시스템, 마이크로프로세서-기반 시스템, 셋톱 박스, 소비자 가전 제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 임의의 위 시스템이나 장치를 포함하는 분배된 컴퓨팅 환경 등일 수 있다.
네트워크(100) 상의 노드가 컴퓨터 시스템이나 어떤 형태의 처리 장치를 포함하는 경우, 그 노드는 보통 프로세서, 하나 이상의 형태의 컴퓨터 판독가능 매체, 그리고 노드가 네트워크(100)에 동작적으로 연결되도록 하는 하나 이상의 통신 연결을 포함할 수 있다. 여기에 사용되듯이, 컴퓨터 판독가능 매체는, 컴퓨터에 의해 접근되고 해석될 수 있는 형태로 인코딩된 정보를 저장하거나 구체화할 수 있는 임의의 매체일 수 있다. 컴퓨터 판독가능 매체의 보통 형태는, 한정하는 것은 아니지만, 휘발성 및 비휘발성 메모리, 분리형 및/또는 비분리형 매체를 포함하는 데이터 저장 장치 및 통신 매체를 포함한다.
통신 매체는 컴퓨터 판독가능 정보를 반송파나 다른 전송 메커니즘과 같은 변조된 데이터 신호로 구체화할 수 있고, 임의의 정보 운반 매체를 포함할 수 있다. "변조된 데이터 신호"라는 용어는 하나 이상의 특징 집합을 가지는 신호를 지칭하거나 이 신호 내의 정보를 인코딩하는 방식으로 변형된 신호를 지칭할 수 있다. 예로서, 한정하는 것은 아니지만, 통신 매체는 유선 네트워크나 직접-유선 연 결과 같은 유선 매체 및 어쿠스틱, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다.
네트워크(100) 상의 특정 노드에 관해 여기에서 설명되는 기능은 노드 자체에 의해, 노드에 포함되거나 연관될 수 있는 하나 이상의 모듈들과 공동 작용하는 노드에 의해, 또는 다수의 서브-모듈에 의해 구현될 수 있다. 예를 들어, 네트워크 코딩을 사용한 콘텐츠 분배의 적어도 하나의 구현에서, 네트워크(100) 상의 노드나 모듈에 의해 수행되는 연산이 하나 이상의 컴퓨터 판독가능 매체에서 컴퓨터 실행가능 명령으로서 구현될 수 있다. 이러한 구현에서, 노드나 모듈의 연산은 모듈이 포함되거나 연관된 노드에서 프로세서나 프로세서들로서 실행될 수 있다. 다른 구현에서, 노드의 연산은 하드웨어, 펌웨어 또는 하드웨어, 펌웨어 및 소프트웨어의 일부 조합에 의해, 모듈이 포함되거나 연관되는 노드의 일부로서 또는 다른 방식으로 연관되도록 구현될 수 있다. 더욱이, 특정 노드에 대해 여기에서 설명되는 기능은 다수의 노드들에 의해 수행되거나 분배될 수 있다.
네트워크 코딩을 사용하는 콘텐츠 분배에 대해, 도 1을 참조하여, 소스(110)가 콘텐츠 A(180)를 네트워크(100)의 참가 노드들에게 분배하는 예시적인 구현을 고려함으로써 더 설명한다. 콘텐츠 A(180)는 임의의 타입 또는 사이즈를 가진 파일일 수 있지만, 본 예의 목적을 위해, 콘텐츠 A(180)는 이진 디지트 0과 이진 디지트 1을 포함하는 두 디지털 비트로만 구성된다는 것을 가정한다.
적어도 하나의 실시예에 따르면, 소스(110)는 콘텐츠 A(180)를 이진 디지트 0을 포함하는 블럭 B(190)와 이진 디지트 1을 포함하는 블럭 C(200)로 분할한다. 나아가, 소스(110)는 블럭 B(190)를 노드 1(120)로 보낼 수 있고, 블럭 C(200)를 노드 2(130)로 보낼 수 있다. 노드 1(120)은 블럭 B(190)를 노드 5(160) 뿐만 아니라 노드 3(140)으로 전달할 수 있다. 노드 2(130)는 블럭 C(200)를 노드 6(170)뿐만 아니라 노드 3(140)으로 전달할 수 있다.
블럭 B(190)와 블럭 C(200)를 수신하면, 노드 3(140)은 그 후 블럭 C(200)에 대해 노드 4(150)로 블럭 B(190)를 전달하는 효율을 측정할 수 있다. 이 효율 결정은 노드 3(140)이, 콘텐츠 A(180)를 재구성하기 위해, 노드 4(150)가 연결되는 임의의 다른 노드가 필요하다는 것을 모를 수 있다는 점을 고려할 수 있다.
상술한 효율 결정에 기인하는 시나리오 예는 블럭 B(190)를 노드 3(140)으로 전달하는 노드 3(140)을 생각해 볼 수 있다. 노드 4(150)는 그 후 유용한 정보를 노드 6(170)으로만 전달할 수 있고, 노드 5(160)는 콘텐츠 A(180)를 재구성하기 위해 블럭 B(190)의 수신을 대기해야만 할 수 있다. 다른 시나리오 예로는 블럭 C(200)를 노드 4(150)로 보내는 노드 3(140)을 생각해 볼 수 있다. 노드 4(150)는 그 후 유용한 정보를 노드 5(160)로만 전달할 수 있고, 노드 6(170)은 콘텐츠 A(180)를 재구성하기 위해 블럭 B(190)의 수신을 대기해야만 할 수 있다.
그러나, 네트워크 코딩을 사용하는 콘텐츠 분배의 적어도 하나의 구현은 블럭 B(190)와 블럭 C(200)를 인코딩하여 블럭 D(210)를 형성하는 노드 3(140)을 포함할 수 있는데, 블럭 D(210)는 그 후 노드 4(150)로 전달될 수 있다. 예를 들어, 노드 3(140)은 노드 3(140)에서 블럭 B(190)와 블럭 C(200)에 해당하는 정보의 배타적 OR 연산을 수행함으로써 블럭 D(210)를 생성할 수 있다. 결과로서, 블럭 D(210)는 이진 디지트 1을 포함할 수 있는데, 이는 [블럭 B(190)에 해당하는] 이진 디지트 0과 [블럭 C(200)에 해당하는] 이진 디지트 1의 배타적 OR이다.
노드 4(150)는 그 후 블럭 D(210)를 노드 5(160)와 노드 6(170)으로 전달한다. 나아가, 블럭 B(190)와 블럭 C(200) 모두에 해당하는 정보가 블럭 D(210)의 디코딩 기능을 수행함으로써 복구될 수 있기 때문에, 블럭 D(210)는 콘텐츠 A(180)를 재구성하기 위해 노드 5(160)와 노드 6(170) 모두에 동시에 유용할 수 있다.
즉, 노드 5(160)는 이미 노드 1(120)로부터 블럭 B(190)를 수신했을 수 있다. 그 후, 노드 4(150)로부터 블럭 D(210)를 수신하고 블럭 D(210)의 생성에 사용되는 인코딩 스킴을 알면, 노드 5(160)는 블럭 D(210) 상에서 디코딩 기능을 수행하여 블럭 C(200)를 실제로 수신하지 않고 블럭 C(200)에 해당하는 정보를 계산할 수 있다. 따라서, 노드 5(160)는 블럭 B(190)와 블럭 C(200)에 해당하는 정보를 활용하여 네트워크 코딩을 사용하는 콘텐츠 분배의 적어도 일 구현에 따라 콘텐츠 A(180)를 재구성할 수 있다.
비슷하게, 노드 6(170)은 이미 노드 2(130)로부터 블럭 C(200)를 수신했을 수 있다. 그 후, 노드 4(150)로부터 블럭 D(210)를 수신하고 블럭 D(210)를 생성하는데 사용되는 인코딩 스킴을 알면, 노드 6(170)은 블럭 D(210) 상에서 디코딩 기능을 수행하여 블럭 C(200)를 실제로 수신하지 않고 블럭 B(190)에 해당하는 정보를 계산할 수 있다. 따라서, 노드 6(170)은 블럭 B(190)와 블럭 C(200)에 해당하는 정보를 활용하여 네트워크 코딩을 사용하는 콘텐츠 분배의 적어도 일 구현에 따라 콘텐츠 A(180)를 재구성할 수 있다.
네트워크 코딩을 사용하는 하나 이상의 콘텐츠 분배 구현은 효율적으로 네트워크 자원을 활용하여 클라이언트 노드들에게 다수의 네트워크 경로로부터의 정보 블럭을 제공하는 첨단 시스템(end-system) 콘텐츠 분배 방안을 더 제공할 수 있다. 이러한 자원의 효율적인 활용은, 네트워크(100) 상의 하나 이상의 노드에, 네트워크(100) 상의 다른 노드들의 배열 및 위치의 진보한 지식뿐만 아니라 네트워크(100) 상의 어느 노드들이 원본 블럭들을 분배하고 어느 노드들이 인코딩된 블럭들을 분배하는지에 관한 진보한 지식을 제공하는 것을 포함할 수 있다. 따라서, 네트워크의 사이즈가 증가하고 네트워크 상의 노드들이 온라인과 오프라인을 오갈 때에도 네트워크 코딩을 사용하는 콘텐츠 분배는 관련될 수 있다.
예를 들어, 소스 노드가 블럭을 수신 노드에 전송할 때, 소스 노드는 소스 노드에서 사용 가능한 데이터의 선형 조합을 생성하고 전송할 수 있다. 선형 조합은 배타적 OR 연산을 포함할 수 있다. 따라서, 수신 노드가 충분한 블럭들의 선형적 독립 조합을 수신할 때, 수신 노드는 그 후 선형 등식의 시스템을 해결함으로써 원본 디지털 콘텐츠를 재구성하여 수신된 선형 조합들을 디코딩할 수 있다.
나아가, 낭비된 전송을 줄이기 위해, 네트워크(100) 상의 노드들은, 여기에서 설명되는 예들에 따른 콘텐츠 분배의 효과적인 구현에 이러한 욕구에 대한 절대적인 순응이 필요한 것은 아니지만, 혁신적인 정보(innovative information)를 가진 블럭들만을 네트워크(100) 상의 다른 노드들에게 전송하려고 시도할 수 있다. 그러한 효율적인 전송은 네트워크(100) 상의 각 노드들에서 국소적으로 저장된 블럭들에 관한 정보를 주기적으로 교환하는 네트워크(100) 상의 노드들에 의해 달성 될 수 있다. 네트워크(100) 상의 노드들 각각은, 다른 노드가 원본 디지털 콘텐츠의 적어도 일부를 재구성하는데 국소적으로 저장된 정보가 유용하다는 것을 결정하고, 이 때 정보의 주기적인 교환이 발생할 수 있다.
상술한 정보의 주기적인 교환은 네트워크(100) 상의 하나 이상의 중앙 서버에 정보를 저장함으로써 구현될 수 있다. 다양한 노드들이 그 후 하나 이상의 중앙 서버에 접근하여 네트워크(100) 상의 다른 어떤 노드들이 혁신적인 정보를 포함하는 블럭들을 저장하는지 결정한다. 대안으로서, 분산된 메커니즘이 네트워크(100) 상의 다른 노드들과 직접 소통하도록 사용되어 각 노드들에 저장된 블럭들에 관한 정보를 교환할 수 있다. 또 다른 대안으로서, 위에 논의된 접근 방식들의 전부 또는 일부의 임의의 조합이 구현될 수 있다.
따라서, 네트워크(100) 상의 특정 노드가 네트워크(100) 상의 다른 노드들에 저장된 블럭들에 포함된 정보를 알 때, 특정 노드는 다른 노드들에게 특정 노드가 현재 결여되었다는 정보(즉, 혁신적인 정보)만을 전송할 것을 요청할 수 있다. 대안으로서, 네트워크(100) 상의 특정 노드는, 특정 노드가 국소적으로 저장된 혁신적인 정보를 가지고 있는지 다른 노드들이 결정하는 것과 상관없이, 새로운 블럭들을 무작위로 생성하여 새로운 블럭들을 네트워크(100) 상의 다른 노드들로 밀어낼 수 있다. 응답으로서, 각 수신 노드들은 이들을 위한 혁신적인 정보를 포함하지 않는다고 결정될 수 있는 임의의 패킷을 버릴 수 있다.
도 2는 네트워크 코딩을 사용하는 콘텐츠 분배의 하나 이상의 예들이 구현되는 예시적인 컴퓨터 네트워크(200)를 보여준다. 컴퓨터 네트워크(200)는 도 1에서 와 유사한 방법으로 복수의 상호 접속된 노드들을 포함한다.
소스(210)가 네트워크(200)를 통해 6바이트(즉, 바이트 1-6)를 포함하는 원본 콘텐츠 파일을 분배하는 시나리오 예를 고려함으로써, 네트워크 코딩을 사용하는 콘텐츠 분배의 추가적인 구현예가 설명된다. 또한, 시나리오 예는 예시적인 값들을 가정한다: 바이트 1 = 70, 바이트 2 = 91, 바이트 3 = 5, 바이트 4 = 35, 바이트 5 = 22 및 바이트 6 = 15.
이 예에서, 소스(210)는 원본 콘텐츠 파일로부터 복수의 블럭을 생성할 수 있으며, 각 블럭은 원본 콘텐츠 파일로부터 두 개의 연속되는 바이트를 포함한다. 예를 들어, 소스(210)는 바이트 1 및 바이트 2를 포함하는 블럭 1; 바이트 3 및 4를 포함하는 블럭 2; 및 바이트 5 및 바이트 6을 포함하는 블럭 3을 생성할 수 있다.
그리고 소스(210)는, 블럭 1, 블럭 2 및 블럭 3을 하나의 인코딩된 블럭으로 인코딩하기 위해 계수 벡터들(coefficient vectors)의 집합을 사용하는 블럭 1, 블럭 2 및 블럭 3의 선형 조합을 생성한다. 계수 벡터들은 무작위로 선택되거나, 집합 스케줄에 따라 선택되거나, 네트워크 상의 그러한 정보의 중앙 리포지토리(repository)로부터 선택되거나, 또는 블럭 1, 블럭 2 및 블럭 3을 선형으로 인코딩하기 위해 소스(210)에 의해 사용될 수 있는 계수 벡터들의 집합을 생산하는 임의의 방법에 의해 선택될 수 있다.
본 예를 설명하기 위해, 소스(210)는 1과 256 사이의 숫자들의 집합으로부터 무작위로 계수 벡터들을 선택한다. 계수 벡터들이 선택되는 숫자들의 집합은, 예 를 들어 콘텐츠 분배 시스템 내에서 선형적으로 독립된 계수 벡터들의 가장 큰 숫자를 생산하는 숫자들의 집합과 같이, 숫자들의 임의의 집합일 수 있다. 인코딩된 블럭을 준비함에 있어서, 예를 들어 소스(210)는 6, 90, 52인 제1 계수 벡터를 선택할 수 있다. 인코딩된 블럭을 생성하기 위해, 소스(210)는 블럭 내의 개별적인 바이트들을 벡터로서 취급할 수 있다. 그러나, 소스(210)는 각각의 블럭 1, 블럭 2 및 블럭 3 내의 정보를 선형적으로 인코딩할 수 있는데, 원본 블럭 내에 저장된 정보의 선형 조합인 정보를 포함하는 새로운 블럭을 생산하는 것과 일치하는 임의의 방법으로 이루어질 수 있다. 본 예에서, e1이라고 불리는 제1 인코딩된 블럭은 벡터의 각 값을 계수 벡터들과 곱함으로써 생성된다.
예를 들어 제1 계수 벡터 [6, 90, 52] 및 바이트 1 = 70, 바이트 2 = 91, 바이트 3 = 5, 바이트 4 = 35, 바이트 5 = 22 및 바이트 6 = 15의 바이트 값을 사용하여, 소스(210)는
Figure 112005035864162-pat00001
을 생성할 수 있다. 곱하기를 실행하면
Figure 112005035864162-pat00002
이다. 더하기를 실행하면
Figure 112005035864162-pat00003
이다. 그리고 소스(210)는 새로이 인코딩된 블럭 e1 및 계수 벡터 [6, 90, 52]를 노드 1(220)로 전송한다.
그리고 소스(210)는 새로운 계수 벡터를 사용하여, e1을 생성하는데 이용된 연산을 반복함으로써 새로이 인코딩된 블럭 e2를 생성한다. 예를 들어, 다른 계수 벡터 [18, 2, 128] 및 바이트 1 = 70, 바이트 2 = 91, 바이트 3 = 5, 바이트 4 = 35, 바이트 5 = 22 및 바이트 6 = 15의 바이트 값을 사용하여, 소스(210)는 상술한 것과 같은 방법으로 인코딩된 블럭 e2를 생산한다. 본 예에서는,
Figure 112005035864162-pat00004
이다. 소스(210)는, 새로이 인코딩된 블럭 e2 및 계수 벡터 [18, 2, 128]를 노드 2(230)로 전송한다.
그리고 노드 1(220)은, 노드 1(220)이 사용할 수 있으며, 인코딩된 블럭들을 디코딩하고 원본 콘텐츠 파일을 복구하는 혁신적인 정보를 블럭들이 포함하는지에 대해 추가로 판정하기 위하여, 네트워크(200) 상의 다른 노드들을 보유하는 선형적으로 인코딩된 블럭의 선형적인 독립성을 학습한다. 따라서 노드 1(220)은, 노드 2(230)가 현재 보유하는 블럭들 내의 인코딩된 정보의 선형적인 독립성을 노드 1(220)이 판정한다는 정보를 노드 2가 송신하도록 요청하기 위해, 노드 2(230)에 질의(query)를 전송한다.
노드 2(230)는, 노드 1(220)이 인코딩된 블럭 내의 정보의 선형적인 독립성을 판정할 수 있도록 하는 정보를 생산하기 위한 임의의 방법을 사용할 수 있다. 예를 들어 노드 2(230)는, 마스터 계수 벡터를 생산하기 위해 노드 2(230)에서 개별적인 계수 벡터들의 선형 조합을 생성할 수 있다. 본 예에서, 계수 벡터 [18, 2, 128]을 갖는 인코딩된 블럭 e2는 현재 노드 2(230)에 있으며, 따라서 노드 2(230)는 앞서 언급한 선형 조합의 실행을 요하지 않는다. 따라서, 노드 2(230)는 계수 벡터 [18, 2, 128]를 노드 1(220)에 전송할 수 있다.
노드 1(220)은 노드 2(230)로부터 계수 벡터 [18, 2, 128]을 수신하고, 노드 1(220)이 현재 보유하는 블럭들의 계수 벡터들과 관련하여 수신된 계수 벡터의 선형적인 독립성의 판정을 모색한다. 노드 1(220)이 노드 2(230)로부터 수신된 계수 벡터들의 선형적인 독립성을 판정함에 있어서, 임의의 수학적인 연산이 사용될 수 있다.
예를 들어, 노드 1(220)은 노드 2(230)로부터 수신된 계수 벡터 [18, 2, 128]을 행렬 내에 위치시키고, 행렬의 행이 감소된 형식(row-reduced form of the matrix)을 생산할 수 있다. 그리고 노드 1(220)은, 행렬의 계수(rank)를 발견하기 위해 행렬의 행이 감소된 형식 내에서 0이 아닌 행의 수를 분석한다. 각각의 행렬들의 계수는 각각의 행렬들의 선형적으로 독립된 행들의 수를 나타낸다. 본 예에서는, 수신된 벡터 계수를 행렬에 더하여 행렬의 계수를 계산함으로써, 노드 1(220)은 노드 1(220)이 현재 보유하는 선형 방정식의 시스템에 대한 해답의 수를 판정한다.
예를 들어 노드 1(220)은, 노드 1(220)이 이미 보유하는 인코딩된 블럭들의 계수 벡터들의 집합을 사용하도록 형성된 행렬의 계수를 계산한다. 노드 1(220)은 행렬 상의 행 저감(row reduction)을 행함으로써 계수 1을 계산한다. 행렬의 계수를 계산하기 위한 행 저감은 공지된 수학적인 연산이다. 따라서, 노드 1(220)에서의 행렬의 계수의 계산은 어떤 특정한 방법에 제한되지 않는다.
따라서, 행렬
Figure 112005035864162-pat00005
의 행이 감소된 형식은
Figure 112005035864162-pat00006
이고, 행이 감소된 행렬 내에서 0이 아닌 행의 수는 1이며, 따라서 행렬의 계수는 1이다.
나아가, 노드 1(220)은 노드 1이 이미 보유하고 있는 블럭들의 계수 벡터 및 본 예에서
Figure 112005035864162-pat00007
인 노드 2(230)로부터 수신된 계수 벡터를 사용하여 새로운 행렬을 형성한다. 일단 노드 1(220)이 새로운 행렬을 형성하면, 노드 1(220)은 새로운 행렬의 계수를 계산한다.
따라서, 상기 행렬의 행이 감소된 형식은
Figure 112005035864162-pat00008
이고, 나아가 상기 행렬에서 0이 아닌 행의 수는 2이며, 따라서 상기 행렬의 계수는 2이다. 노드 1(220)은 예를 들어 제2 행렬의 계수(즉, 2) 및 제1 행렬의 계수(즉, 1)를 비교하고, 제2 행렬의 계수가 더 크다고 판정하며, 따라서 노드 2(230)가 보유하는 정보는 선형적으로 독립되어 있다. 노드 1(220)은, 노드 1(220)이 상술한 계산의 실행에 사용하고, 송신된 계수 벡터를 사용하여 생성된 블럭 또는 블럭들의 전송 요청을 노드 2(230)에 송신한다.
본 예에서, 노드 1(220)이 상기 계산을 수행하는 동안, 노드 2(230)는 소스210)로부터 인코딩된 블럭을 추가로 더 수신할 수 있다. 예를 들어, 소스(210)는
Figure 112005035864162-pat00009
인 새로운 블럭 e3를 인코딩하기 위해 다른 계수 벡터 [213, 91, 159]를 선택하고, 그리고 e3의 생성에 상용된 계수 벡터 및 블럭 e3를 노드 2(230)에 전송한 다.
노드 1(220)은, 노드 2(230)가 노드 1(220)이 현재 갖는 정보와 관련하여 선형적으로 독립된 임의의 정보를 가지는지 판정하기 위한 새로운 요청을 노드 2(230)에 전송한다. 노드 2(230)는 노드 2(230)가 각각 보유하는 [18, 2, 128] 및 [213, 91, 159]의 계수 벡터를 갖는 모든 인코딩된 블럭들(즉, e2 및 e3)의 계수 벡터들의 선형 조합으로부터 생성되는 마스터 계수 벡터를 다시 준비한다. 노드 2(230)는, 새로운 계수 벡터 [231, 93, 287]을 생산하기 위해 상술한 계수 벡터들의 선형 조합을 생산함으로써 마스터 계수 벡터를 준비하며, 그리고 노드 2(230)가 노드 1(220)로 전송한다.
노드 1(220)은 새로운 계수 벡터 [231, 93, 287]을 수신하고, 새로운 계수 벡터가 노드 1이 현재 보유하는 계수 벡터들과 관련하여 선형적으로 독립되어 있는지를 판정한다. 노드 1(220)은 블럭 e2 및 e3의 계수 벡터들을 사용하여 형성된 행렬의 계수(즉, 2)의 최근 계산의 결과를 저장한다. 노드 1(220)은 예를 들어 노드 2(230)로부터 수신된 새로운 계수 벡터를 조합하여 블럭 e2 및 e3의 계수 벡터들을 사용하는 새로운 행렬을 생산할 수 있으며, 그 결과는
Figure 112005035864162-pat00010
이다.
따라서, 상기 행렬의 행이 감소된 형식은
Figure 112005035864162-pat00011
이고, 상기 행렬에 있어 서 0이 아닌 행의 수는 3이므로, 상기 행렬의 계수는 3이다. 노드 1(220)은 상기 새로운 행렬의 계수(즉, 3)와 이전 행렬의 계수(즉, 2)를 비교하여 새로운 행렬의 계수가 이전 행렬의 계수보다 크다는 것을 판정한다. 그리고 노드 1(220)은, 노드 2(230)가 노드 1(220)이 보유하는 정보로부터 선형적으로 독립된 정보를 보유하고 있음을 판정한다. 그리고 노드 1(220)은, 노드 1(220)에 전송되었던 계수 벡터를 사용하여 노드 2가 생산한 인코딩된 블럭들을 재 인코딩하는 요청을 노드 2(230)에 전송한다.
노드 2(230)는 임의의 방법을 사용하여, 소스(210)로부터 수신된 인코딩된 원본 블럭들과 관련해 선형적으로 독립된 정보의 전송에 일치하는 새로 인코딩된 블럭을 생산할 수 있다. 예를 들어 노드 2(230)는, 새로 인코딩된 블럭 e4를 생산하기 위해 e2와 e3의 합을 생성하고, e4
Figure 112005035864162-pat00012
에 해당된다. 노드 2(230)는, 블럭 e4를 노드 1(220)로 전송하며, 계수 벡터는 계산의 실행을 위해 노드 1(220)로 전송되었기 때문에 블럭 e4의 생산에 사용된 계수 벡터는 추가로 전송될 필요가 없다.
예를 들어, 노드 1(220)이 노드 2(230)로부터 블럭 e4를 수신하면, 노드 1(220)은 인코딩된 블럭들의 디코딩을 개시하는 데에 충분한 인코딩된 블럭들이 수신되었는지 판정한다. 그리고 노드 1(220)은, 소스(210)에 의해 보유되는 인코딩되지 않은 원본 블럭들 내의 벡터들의 값을 판정하기 위해 노드 1(220)이 보유하는 인코딩된 블럭들에 의해 나타내어지는 선형 방정식의 시스템을 해결한다. 노드 1(220)은 인코딩되지 않은 원본 블럭들 내에 저장된 벡터들의 값을 판정하기 위해 선형 방정식의 시스템을 해결하는데 적절한, 노드 1(220)이 상기 계산을 실행함에 있어서 한정되지 않는 임의의 방법을 사용한다
예를 들어, e1은 계수 벡터 [6, 90, 52]를 갖는
Figure 112005035864162-pat00013
이다. e2는 계수 벡터 [18, 2, 128]을 갖는
Figure 112005035864162-pat00014
이다. e4는 계수 벡터 [231, 93, 287]을 갖는 이다. 원본 블럭들 내의 벡터들의 값들을 학습하는 선형 방정식의 시스템을 해결하기 위해, 노드 1(220)은 각각의 인코딩되지 않은 블럭들을 나타내는 변수를 지정한다. 예를 들어, 노드 1(220)은 제1 인코딩되지 않은 블럭을 나타내는 변수 x, 제2 인코딩되지 않은 블럭을 나타내는 변수 y 및 제3 인코딩되지 않은 블럭을 나타내는 변수 z를 지정한다. 따라서, 노드 1(220)은 선형 방정식 시스템 내의 제1 등식이 인코딩된 블럭 e1을 나타내는
Figure 112005035864162-pat00016
, 제2 등식이 인코딩된 블럭 e2를 나타내는
Figure 112005035864162-pat00017
, 제3 등식이 인코딩된 블럭 e4를 나타내는
Figure 112005035864162-pat00018
이 되도록 정한다.
그리고 노드 1(220)은, 임의의 방법을 사용하여 선형 방정식들의 시스템을 핵결하고, 상기 방정식들의 풀이에 있어서 x(즉, 인코딩되지 않은 블럭 1)는
Figure 112005035864162-pat00019
, y(즉, 인코딩되지 않은 블럭 2)는
Figure 112005035864162-pat00020
, z(즉, 인코딩되지 않은 블럭 3)는
Figure 112005035864162-pat00021
가 되도록 정한다. 노드 1(220)은 이들 벡터들을 해석하고, 원본 파일의 바이트 구조를 다시 생성한다. 노드 1(220)은 원본 파일을 다시 생성하는 본 실시예에 따라 이들 벡터들을 해석하기 위한 임의의 방법을 사용한다.
본 예가 확실한 간소화가 사용된 도 2와 관련하여 사용되었음에도, 명백히 다른 선택들이 다른 실행을 위해 행해질 수 있다. 예를 들어, 패킷들을 인코딩하는데 사용되는 계수들에 관한 정보 교환을 위한 다른 예들이, 재 인코딩된 블럭들이 새로운 정보를 포함하는지 또는 정보를 교환하는지를 미리 판정하지 않고 다시 인코딩된 블럭들을 전송하려 할 수 있다. 유사하게, 모든 수신된 정보들이 새로 인코딩된 블럭들의 생성에 사용되었음에도, 이들의 부분 집합들이 사용될 수 있다. 특정 애플리케이션에 종속되는 특정 인코딩 계획과 같은 다른 트레이드 오프 또는 선택들이 또한 행해질 수 있다.
또한, 도 2와 관련하여 사용된 예가 도시적인 목적을 위해 실수(real number) 시스템으로 실현되었음에도, 상기 예는 예를 들어 유한(finite) 또는 갈로와 필드(Galois field)와 같은 임의의 수학적인 수 시스템(mathematical number system)을 사용하여 실현될 수 있다.
도 3은 콘텐츠 분배 네트워크에 있어서 노드가 어떻게 수신자로 동작하는지를 도시하는 처리 흐름(300)을 보여준다.
동작(310)은, 노드가 네트워크 상에 존재하는 특정 블럭에 대한 정보를 얻는 것을 나타낸다. 도 2와 관련하여 도시한 예로 돌아가 참조하면, 블럭 정보는 블럭을 재 인코딩하기 위해 사용되는 계수들의 집합의 형태를 갖는다. 그러나, 블럭 정보는 또한 블럭의 콘텐츠에 대하여 지시를 부여하는 임의의 형태 또는 구조를 가질 수 있고, 블럭 정보는 네트워크의 성능, 네트워크 상의 노드 등에 일치하는 임의의 방법으로 얻어질 수 있다. 예를 들어, 블럭 정보는 네트워크 상의 다른 노드로부터 직접 얻어지거나 네트워크 상의 그러한 정보의 중앙 리포지토리(repository)로부터 얻어질 수 있으며, 상기 노드는 이미 블럭을 수신하거나 정보를 판정하기 위해 블럭을 조사할 수 있다.
결정(320)은, 블럭이 적어도 원본 콘텐츠의 일부를 재구성하는데 도움이 되는 혁신적인 정보를 블럭 정보가 포함하는지를 나타내는 여부에 관하여 노드에 의한 판정을 나타낸다. 노드에 혁신적인 정보는, 예를 들어 노드가 현재 보유하지 않는 전체 블럭 또는 블럭의 일부이다. 이 판정은, 예를 들어 블럭 정보를 사용하는 계산의 실행에 의해 임의의 형태를 가질 수 있다. 또한, 블럭 내의 정보가 혁신적인지에 대한 지시를 반환하는 블럭 정보를 사용하는 임의의 동작이 사용될 수 있다. 예를 들어, 도 2에 관한 예에 있어서, 판정은 행렬의 계수를 계산함으로써 행해질 수 있다.
긍정의 판정(320; positive decision)에 이어지는 동작(330)은, 물리적 메모 리, 하드 드라이브, 불휘발성 플래시 메모리 등을 포함하는 중간 블럭 스토리지에 전송되는 블럭을 참조할 수 있다. 일단 동작(330)이 완수되면, 절차 흐름은 결정 블럭(340)으로 계속된다.
부정의 판정(320; negative decision) 및 동작(330)에 이어지는 결정(340)은, 원본 파일 콘텐츠를 다시 모으기 위해 필요한 블럭들의 최소 수가 수신되었는지의 판정을 나타낸다. 원본 파일 콘텐츠를 다시 모으기 위해 필요한 블럭의 최소 수는 N이며, 이는 원본 파일 콘텐츠가 분할되는 블럭들의 수이다. 부정의 판정에 대응하여, 절차 흐름(300)은 추가적인 블럭들이 처리되도록 동작(310)으로 되돌아간다. 긍정의 판정(340)에 대응하여, 절차 흐름(300)은 동작(350)으로 진행한다.
동작(350)은 중간 블럭 스토리지 내에 저장되어 있는 다수의 인코딩된 블럭이 디코딩되는 동작을 참조하여, 파일을 포함하는 원본 블럭들의 집합 또는 부분 집합을 생산한다. 블럭들의 디코딩은, 디코딩 동작의 결과가 콘텐츠 분배 네트워크 내에서 파일의 소스에 의해 생성될 수 있었던 블럭의 원본 집합인 형태를 가질 수 있다. 그리고, 처리 흐름(300)은 동작(360)으로 진행한다.
동작(360)은, 동작(350) 내에서 결합되어 원본 콘텐츠 파일을 모으는 디코딩 동작에 의해 생산된 원본 블럭들의 집합을 나타낸다. 원본 콘텐츠를 형성하기 위해 원본 블럭들을 재구성하는 방법이 사용된다.
동작의 순서 및 타이밍이 도 3과 관련하여 단지 예로써 제공된다. 또 다른 실행에 있어서, 동작의 순서 또는 타이밍 중 하나 또는 둘 모두가 가변적일 수 있다. 예를 들어, 동작(350)은, 적어도 하나의 인코딩된 블럭에 대한 디코딩을 개시 하기 위해 충분한 인코딩된 블럭들이 수신되었다면, 동작(310) 후에 진행될 수 있다.
도 4는 콘텐츠 분배 시스템에 있어서, 노드가 어떻게 송신자(sender)로서 동작하는지를 도시하기 위한 예시적인 흐름(400)을 보여주고 있다.
동작(410)은, 콘텐츠 분배 시스템에 있어서 다른 노드 상의 블럭들의 집합 또는 다른 블럭을 디코딩하는데에 유용한 혁신적인 정보를 포함하는 복수의 블럭들을 송신자가 보유한다는 판정을 참조한다. 판정은 송신자, 네트워크 상의 다른 노드, 그러한 동작들에 책임이 있는 중앙 노드 또는 임의의 다른 적절한 위치 상에서 국소적으로 일어난다. 블럭이 혁신적인 정보를 포함하는지 여부에 대한 판정은, 콘텐츠 분배 네트워크 상에서 분배되는 송신 노드에서의 다른 정보와 혁신적인 정보의 선형 조합으로 귀결된다.
동작(420)은 새로 인코딩된 블럭을 생산하기 위해 하나 이상의 국소 블럭을 재 인코딩하는 송신자를 참조한다. 재 인코딩은 콘텐츠 분배 네트워크 상에서 다른 노드에 의해 사용되는 새로운 블럭을 생산하기 위해 송신자 상에 국소적으로 저장되는 임의의 수의 블럭들을 조합하는 것에 따른 동작을 포함할 수 있다.
동작(430)은 동작(420)에 의해 생성되는 새로 인코딩된 블럭을 전송하는 송신자를 참조한다. 새로 인코딩된 블럭은 본 실시예들에 따라 전송될 수 있으며, 전송되는 방법은 제한되지 않는다.
선택적인 동작(440)은, 블럭을 재 인코딩하는데 사용되는 정보가 새로 인코딩된 블럭으로 인코딩되지 않았다면, 개별적인 단계에서 블럭을 재 인코딩하는데 사용되는 정보를 추가로 전송하기 위해 선택하는 송신자를 참조한다. 블럭 인코딩 정보는 본 실시예들에 따라 전송될 수 있으며, 전송되는 방법은 제한되지 않는다.
도 4에 관련된 동작들의 순서 및 타이밍이 단지 예로써 제공된다. 또 다른 구현에 있어서, 동작의 순서 또는 타이밍 중 하나 또는 둘 모두가 가변적일 수 있다. 예를 들어 블럭(420)은, 수신하는 노드에 접속된 모든 노드들뿐만 아니라 수신하는 노드에도 유용한 새로운 블럭들을 인코딩하는데에 이용될 수 있다. 이러한 방법에 있어서, 수신하는 노드는 직접 통신하는 노드보다는 노드에 유용한 블럭들을 생성할 수 있다.
도 5는 콘텐츠 분배 네트워크에 있어서 예시적인 노드(500)를 보여준다.
네트워크 관리자(510)는 노드(500)가 콘텐츠 분배 네트워크 내의 다른 노드들, 서버들, 장치들 등과 통신하도록 한다. 네트워크 관리자(510)는 정보의 패킷 또는 블럭들을 송신하거나 수신하며, 임의의 유형의 동작을 실행하기 위한 요청을 송신하거나 수신하며, 또는 콘텐츠 분배 네트워크 내에 참여하기 위해 노드(500)에 의해 사용되는 다른 정보를 송신하거나 수신한다.
콘텐츠 분배 네트워크 상의 다른 노드들과 통신을 함에 있어서, 네트워크 관리자(510)는 전송하는 동안의 에러를 정정할 수 있으며, 콘텐츠 분배 네트워크 상의 다른 노드들, 서버들, 장치들 등의 송신을 중지하거나 개시할 수 있고, 콘텐츠 분배 네트워크 내에 노드(500)의 참여가 허용되는 것을 변경할 수 있다. 또한, 네트워크 관리자(510)는 인코딩된 블럭들의 합법성 및 확실성을 변경할 수 있다.
네트워크 관리자(510)는 또한, 예를 들어 애플리케이션 프로그래밍 인터페이 스(API), 네트워크 상의 원격 절차 호출(remote procedure call)을 통해 콘텐츠 관리자(520)와 통신할 수 있다. 네트워크 관리자(510)는 블럭, 네트워크 상의 다른 장소에 저장된 블럭들에 관한 정보, 또는 현 실시예들에 따라 콘텐츠 분배 네트워크 내에서 노드(500)가 참여하는 것을 콘텐츠 관리자(520)가 요구하는 정보를 전송할 수 있다.
콘텐츠 관리자(520)는 네트워크 관리자(510)로부터 원본 파일 콘텐츠가 오리지네이션 소스(origination source)에 의해 분할되었던 블럭들의 수 및 크기를 수신한다. 콘텐츠 관리자(520)는 또한 네트워크 관리자(510)로부터 블럭들을 수신하고, 네트워크 관리자(510)를 이용하여 블럭들을 송신하며, 인코딩된 블럭 저장소(540)로 수신된 블럭들을 인도하고, 완전히 수신되지 않았거나 에러나 손상을 포함하는 것으로 판정된 블럭들의 저장을 포기하고, 인코딩된 블럭 저장소(540) 내에 저장된 블럭들을 네트워크 관리자(510) 및 파일 관리자(530)로 전송한다.
콘텐츠 관리자(520)는 또한, 콘텐츠 분배 네트워크 내의 노드가, 콘텐츠 분배 네트워크 상에서 원본 파일 콘텐츠가 오리지네이션 노드에 의해 분할된 원래의 블럭들을 디코딩함에 있어서 노드에 유용한 혁신적인 정보를 포함하는지 판정하기 위한 적어도 하나의 계산을 실행한다. 콘텐츠 관리자(520)가, 콘텐츠 분배 네트워크 내의 노드가 혁신적인 정보를 포함한다고 판정하면, 콘텐츠 관리자(520)는 네트워크 관리자(510)와 통신하여 블럭 수신의 요청을 발행하고, 상기 혁신적인 정보를 포함하는 노드는 상기 정보를 재 인코딩하고 정보를 송신하라는 요청을 발행하고, 콘텐츠 관리자(520)는 콘텐츠 분배 네트워크 내의 노드의 참여에 따라 기능하도록 하는 또 다른 요청을 발행한다.
나아가, 콘텐츠 관리자(520)는 노드가 콘텐츠 분배 네트워크 상의 다른 노드에 혁신적인 정보를 포함하는지 판정하기 위해 콘텐츠 분배 네트워크 상의 다른 노드를 대신하여 적어도 하나의 계산을 실행한다.
콘텐츠 관리자(520)는, 노드가 콘텐츠 분배 네트워크 내의 다른 노드들에 유용한 인코딩된 블럭들을 생산하거나 또는 노드가 본 실시예들에 따라 콘텐츠 분배 네트워크 내에 참여하는 방법을 사용하여 인코딩된 블럭 저장소(540) 내에 저장된 블럭들을 추가로 재 인코딩한다.
인코딩된 블럭 저장소(540) 내의 블럭들의 제거, 인코딩된 블럭 저장소(540) 내의 메모리 관리, 또는 인코딩된 블럭 저장소(540)의 최적의 동작이 되는 임의의 동작이 콘텐츠 관리자(520)에 의해 실행될 수 있다.
콘텐츠 관리자(520)는 또한, 블럭들을 디코딩하고, 수신되어 인코딩된 블럭 저장소(540) 내에 저장되어 있는 원래 파일을 복구하는데 필요한 인코딩된 블럭들의 수를 판정한다. 이러한 판정을 할 때, 콘텐츠 관리자(520)는 인코딩된 블럭들을 디코딩하고, 각 디코딩된 블럭들을 파일 관리자(530)에게 전송할 수 있다.
파일 관리자(530) 및 콘텐츠 관리자(520)는, 예를 들어 애플리케이션 프로그래밍 인터페이스(API) 또는 네트워크 상의 원격 절차 호출을 사용하여 통신을 행한다. 파일 관리자(530)는 콘텐츠 관리자(520)로부터 다수의 인코딩되지 않은 블럭들을 수신할 수 있고, 콘텐츠 분배 네트워크 내에서 오리지네이션 노드에 의해 보내진 원본 파일 콘텐츠의 사본을 생성하기 위해 다수의 인코딩되지 않은 블럭들을 조합할 수 있다.
파일 관리자(530)가 원본 파일 콘텐츠의 복사물을 생성하기 위해 인코딩되지 않은 블럭들을 일단 조합하면, 파일 관리자(530)는 파일 시스템(550)의 저장 용량에 원본 파일의 복사물을 인도하기 위해 파일 시스템(550)과 통신을 행한다. 파일 시스템(550)은 본 실시예들에 따라 원본 파일의 복사물을 저장할 수 있는 하드 드라이브, 네트워크 공유, 불휘발성의 소거되지 않는 저장 장치 또는 임의의 물리적 저장 매체를 뜻한다. 파일 관리자(530)는 또한, 파일 관리자(530)를 대신하여 원래 파일의 복사물을 저장하는 운영 시스템, 컴포넌트, 애플리케이션 프로그래밍 인터페이스(API) 또는 다른 임의의 장치와 통신할 수 있다.
시스템 및 방법들의 여러 특정 실시들이 도면들 및 앞에서 서술된 상세한 설명들과 함께 설명되었음에도 불구하고, 서술된 시스템 및 방법들은 특정 실시들에 제한되는 것이 아니라 청구범위에 의해 정의되는 발명의 사상으로부터 벗어나지 않으면서 많은 재배열, 변경 및 대체가 가능함이 이해될 것이다.
본 발명에 의하면, 콘텐츠 분배 네트워크 내에서 빠르고 확장 가능한 콘텐츠 분배를 제공하는 다양한 기술이 제공된다.
또한, 본 발명에 의하면, 컴퓨터 네트워크에서 디지털 콘텐츠의 운반을 용이하게 하기 위한 다양한 기술이 제공된다.

Claims (20)

  1. 하나 이상의 실행가능한 명령어들을 저장하는 하나 이상의 컴퓨터 판독가능 저장 매체로서,
    상기 하나 이상의 실행가능한 명령어들은 판독 시에 제1 노드의 하나 이상의 프로세서들이,
    마스터 계수 벡터(master coefficient vector)를 저장하고 있는 제2 노드로부터 데이터 네트워크를 통해 상기 마스터 계수 벡터를 수신하고 - 상기 마스터 계수 벡터는 상기 제2 노드에 의해 저장된 각각의 인코딩된 블럭들 내로 파일의 블럭을 인코딩하기 위해 사용된 상기 제2 노드에서의 다른 계수 벡터들의 선형 조합을 포함하고, 상기 제2 노드에서의 상기 인코딩된 블럭들은 상기 파일의 블럭의 상이한 인코딩들을 포함함 -,
    상기 수신된 마스터 계수 벡터가 상기 제1 노드에서의 하나 이상의 계수 벡터의 선형 조합으로부터 산출될 수 없어서 상기 수신된 마스터 계수 벡터가 상기 제1 노드에서의 상기 하나 이상의 계수 벡터들로부터 선형적으로 독립적인 지를 판정하고 - 상기 제1 노드는, 상기 마스터 계수 벡터를 수신하기 이전에, 상기 하나 이상의 계수 벡터들 및 상기 하나 이상의 계수 벡터들을 사용하는 상기 파일의 블럭의 인코딩들을 각각 포함하는 하나 이상의 인코딩된 블럭들을 저장함 -,
    상기 수신된 마스터 계수 벡터가 상기 마스터 계수 벡터를 수신하기 이전에 상기 제1 노드에 의해 저장된 상기 하나 이상의 계수 벡터들로부터 선형적으로 독립적이라고 판정된 경우, 상기 데이터 네트워크를 통해 상기 제2 노드로 요청을 송신하는 것에 의해 상기 판정에 응답하고,
    상기 데이터 네트워크를 통해 상기 요청에 응답하여 송신된 상기 제2 노드로부터의 전송을 수신하는 - 상기 전송은 상기 제2 노드에 의해 저장된 상기 하나 이상의 인코딩된 블럭들의 선형 조합(linear combination)을 포함하는 새로운 인코딩된 블럭을 포함함 - 것
    을 포함하는 프로세스를 수행하게 하는 , 컴퓨터 판독가능 저장 매체.
  2. 제1항에 있어서,
    상기 제2 노드에 의해 저장된 상기 하나 이상의 인코딩된 블럭들은 상기 파일의 블럭을 저장하는 소스 노드(source node)에 의해 미리 인코딩되는, 컴퓨터 판독가능 저장 매체.
  3. 제2항에 있어서,
    상기 제1 노드에서의 상기 하나 이상의 인코딩된 블럭들 및 상기 제2 노드에서의 하나 이상의 블럭들은 상기 파일의 블럭의 선형 인코딩들을 포함하는, 컴퓨터 판독가능 저장 매체.
  4. 제1항에 있어서,
    판독 시에, 상기 제1 노드가 상기 파일의 사이즈 및 상기 파일의 블럭들의 개수를 수신하게 하는 하나 이상의 명령어들을 더 포함하는 컴퓨터 판독가능 저장 매체.
  5. 제1항에 있어서,
    판독 시에, 상기 제2 노드에 상기 요청을 송신하기 이전에, 상기 제1 노드가 상기 제1 노드에 저장된 상기 하나 이상의 블럭들을 인코딩하기 위해 사용되는 정보를 더 수신하도록 하는 하나 이상의 명령어들을 더 포함하는 컴퓨터 판독가능 저장 매체.
  6. 제5항에 있어서,
    상기 제1 노드가, 상기 제1 노드에서의 상기 하나 이상의 블럭들을 인코딩하기 위한 상기 수신된 정보를 사용하는 계산의 결과들을 사용하여, 상기 요청이 상기 제2 노드에 발행되어야 하는지를 판정하도록 하는 하나 이상의 명령어들을 더 포함하는 컴퓨터 판독가능 저장 매체.
  7. 제6항에 있어서,
    판독시에, 상기 제1 노드가 상기 계산의 결과들에 기초하여 상기 하나 이상의 인코딩된 블럭들을 제거(discard)할지를 더 선택하도록 하는 하나 이상의 명령어들을 더 포함하는 컴퓨터 판독가능 저장 매체.
  8. 제1항에 있어서,
    상기 프로세스는 상기 제2 노드로부터 수신된 상기 새로운 인코딩된 블럭들을 디코딩하는 것에 의해 상기 파일의 블럭을 재구성(reconstructing)하는 것을 더 포함하는, 컴퓨터 판독가능 저장 매체.
  9. 데이터 네트워크를 통해 제2 노드와 통신하는 제1 노드에 의해 수행되는 방법으로서,
    상기 제1 노드는 파일의 제1 인코딩된 블럭 및 상기 제1 인코딩된 블럭을 형성하기 위해 상기 파일의 인코딩되지 않은 블럭에 적용되는 대응하는 제1 계수 벡터를 저장하고, 상기 제2 노드는 제2 및 제3 인코딩된 블럭과 각각 상기 제2 및 제3 인코딩된 블럭을 형성하기 위해 상기 파일의 동일한 인코딩되지 않은 블럭에 적용되는 제2 및 제3 계수 벡터를 저장하고,
    상기 방법은,
    상기 제1 노드에서, 데이터 네트워크를 통해 상기 제2 노드로부터 마스터 계수 벡터를 수신하는 단계 - 상기 마스터 계수 벡터는 상기 제2 및 제3 계수 벡터의 선형 조합을 포함함 -;
    상기 제1 노드에 의해, 상기 수신된 마스터 계수 벡터가 상기 제1 노드에 의해 저장된 상기 제1 계수 벡터의 선형 조합으로부터 산출될 수 없어서 상기 수신된 마스터 계수 벡터가 상기 제1 계수 벡터로부터 선형적으로 독립적인지를 판정하는 단계;
    상기 수신된 마스터 계수 벡터가 상기 제1 계수 벡터에 선형적으로 독립적이라는 판정에 응답하여, 상기 제2 노드로 요청을 전송하는 단계;
    상기 제2 노드로부터 새로운 인코딩된 블럭을 수신하는 단계 - 상기 새로운 인코딩된 블럭은 상기 요청에 응답하여 상기 데이터 네트워크를 통해 전송되고, 상기 수신된 새로운 인코딩된 블럭은 상기 제2 및 제3 인코딩된 블럭의 선형 조합을 포함함 -; 및
    상기 제1 인코딩된 블럭, 상기 수신된 인코딩된 블럭, 상기 제1 계수 벡터 및 상기 수신된 마스터 계수 벡터를 포함하는 선형 방정식들(linear equations)의 시스템에 대한 해답(solution)을 탐색하는 단계를 포함하고,
    상기 해답은 상기 파일의 인코딩되지 않은 블럭을 포함하는, 방법.
  10. 제9항에 있어서,
    상기 판정하는 단계는, 상기 제1 계수 벡터를 사용하는 제1 매트릭스를 생성하는 단계를 포함하는, 방법.
  11. 제10항에 있어서,
    상기 제1 및 상기 수신된 마스터 계수 벡터를 사용하는 제2 매트릭스를 생성하는 단계를 더 포함하는 방법.
  12. 제11항에 있어서,
    상기 판정하는 단계는,
    상기 제2 매트릭스의 랭크(rank)를 계산하는 단계; 및
    상기 제2 매트릭스의 랭크를 상기 제1 매트릭스의 랭크와 비교하는 단계를 포함하는, 방법.
  13. 제11항에 있어서,
    상기 제1 매트릭스의 랭크를 계산하는 단계; 및
    상기 제2 매트릭스의 랭크를 계산하는 단계
    를 더 포함하고,
    상기 판정하는 단계는 상기 제2 매트릭스의 랭크를 상기 제1 매트릭스의 랭크와 비교하는 단계를 포함하는, 방법.
  14. 제9항에 있어서,
    상기 해답을 탐색하는 단계는 상기 제2 노드로부터 상기 새로운 인코딩된 블럭이 수신될 때 시작되는, 방법.
  15. 제9항에 있어서,
    상기 판정하는 단계는 제1 매트릭스의 랭크와 상기 제2 매트릭스의 랭크를 비교하는 단계를 포함하고,
    상기 제1 매트릭스는 상기 제1 계수 벡터를 포함하고 상기 수신된 마스터 계수 벡터를 포함하지 않으며, 상기 제2 매트릭스는 상기 제1 계수 백터 및 상기 수신된 마스터 계수 벡터를 모두 포함하는, 방법.
  16. 제9항에 있어서,
    상기 제1, 제2 및 제3 인코딩된 블럭은 상기 계수 벡터들에 따라 상기 인코딩되지 않은 블럭의 선형적으로 조합된 부분들에 의해 상기 제1, 제2 및 제3 인코딩된 블럭의 대응하는 계수 벡터들로 인코딩되는, 방법.
  17. 제2 노드를 포함한 다른 노드들을 포함하는 컨텐츠 공유 네트워크에 참여하는 제1 노드에 의해 수행되는 방법으로서,
    상기 노드들은 데이트 네트워크를 통해 상호 연결(interconnected)되고, 소스 노드는 미리 파일을 블럭들로 분할하고, 각각 인코딩된 블럭들을 형성하기 위해 상이한 계수 벡터들로 상기 파일의 블럭들 중 하나를 인코딩하고, 상기 인코딩된 블럭들 및 대응하는 계수 벡터들을 상기 제1 노드 및 상기 제2 노드를 포함하는 다양한 상기 노드들로 분배하여, 상기 제1 노드가 제1 계수 벡터 및 대응하는 제1 인코딩된 블럭을 가지고 상기 제2 노드가 제2 계수 벡터 및 대응하는 제2 인코딩된 블럭을 가지게 하고, 각각의 인코딩된 블럭은 상기 각각의 인코딩된 블럭의 대응하는 계수 벡터를 사용하여 상기 파일의 블럭들 중 하나의 부분들을 선형적으로 결합시키기 위해 인코딩되었으며,
    상기 방법은, 상기 제1 노드에 의해 수행되며,
    제1 요청을 상기 제2 노드로 전송하고, 이에 응답하여 상기 제2 노드로부터 상기 제2 계수 벡터를 수신하는 단계;
    상기 제2 계수 벡터가 상기 제1 계수 벡터의 선형 조합으로부터 산출될 수 없어서 상기 제2 계수 벡터가 상기 제1 계수 벡터에 선형적으로 독립적인지 판정하고, 이에 응답하여 제2 요청을 상기 제2 노드로 전송하는 단계;
    상기 제2 노드로부터 상기 제2 요청에 대한 응답을 수신하는 단계 - 상기 응답은 상기 제2 인코딩된 블럭을 포함함 -; 및
    상기 제1 및 제2 계수 벡터와 상기 제1 및 제2 인코딩된 블럭에 의해 형성된 선형 방정식들의 시스템에 대한 해답을 탐색하는 것에 의하여 상기 파일의 블럭들 중 하나를 획득하는 단계
    를 포함하는 방법.
  18. 제17항에 있어서,
    상기 선형 방정식들의 시스템은 상기 제1 계수 벡터 및 상기 제1 인코딩된 블럭을 포함하는 제1 방정식과 상기 제2 계수 벡터 및 상기 제2 인코딩된 블럭을 포함하는 제2 방정식을 포함하는, 방법.
  19. 삭제
  20. 삭제
KR1020050059240A 2004-07-02 2005-07-01 네트워크 코딩을 사용한 콘텐츠 분배 KR101153124B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US58521204P 2004-07-02 2004-07-02
US60/585,212 2004-07-02

Publications (2)

Publication Number Publication Date
KR20060049764A KR20060049764A (ko) 2006-05-19
KR101153124B1 true KR101153124B1 (ko) 2012-06-04

Family

ID=34979160

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050059240A KR101153124B1 (ko) 2004-07-02 2005-07-01 네트워크 코딩을 사용한 콘텐츠 분배

Country Status (5)

Country Link
US (1) US7756051B2 (ko)
EP (1) EP1612982B1 (ko)
JP (1) JP4726557B2 (ko)
KR (1) KR101153124B1 (ko)
CN (1) CN100566257C (ko)

Families Citing this family (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4690387B2 (ja) * 2004-03-22 2011-06-01 コデマテ エー/エス 好ましくはストリーミング・システムに適用される配布方法
US8140849B2 (en) * 2004-07-02 2012-03-20 Microsoft Corporation Security for network coding file distribution
US7743253B2 (en) * 2005-11-04 2010-06-22 Microsoft Corporation Digital signature for network coding
EP1801720A1 (en) * 2005-12-22 2007-06-27 Microsoft Corporation Authorisation and authentication
US7680937B2 (en) 2005-12-22 2010-03-16 Microsoft Corporation Content publication
EP1826695A1 (en) * 2006-02-28 2007-08-29 Microsoft Corporation Secure content descriptions
DE602006017040D1 (de) * 2006-05-19 2010-11-04 Microsoft Corp Inhaltsverwaltung in Peer-to-peer Datenverteilungswolken
US8194760B2 (en) * 2006-06-01 2012-06-05 Ntt Docomo, Inc. Method and apparatus for distributed space-time coding in wireless radio networks
US20080089333A1 (en) * 2006-10-17 2008-04-17 Kozat Ulas C Information delivery over time-varying network topologies
CN101174955B (zh) * 2006-10-30 2010-04-21 华为技术有限公司 共享内容传输方法和***以及内容源端、内容接收端
US8027407B2 (en) * 2006-11-06 2011-09-27 Ntt Docomo, Inc. Method and apparatus for asynchronous space-time coded transmission from multiple base stations over wireless radio networks
US8059732B2 (en) * 2006-11-28 2011-11-15 Ntt Docomo, Inc. Method and apparatus for wideband transmission from multiple non-collocated base stations over wireless radio networks
US8243655B2 (en) 2006-12-04 2012-08-14 Telefonaktiebolaget Lm Ericsson (Publ) Exchange of information in a communication network
CN104936313B (zh) * 2006-12-04 2019-05-31 艾利森电话股份有限公司 通信网络中的信息交换
ES2360647T3 (es) * 2006-12-08 2011-06-07 Deutsche Telekom Ag Método y sistema para la diseminación del contenido igual a igual.
CN101207552B (zh) * 2006-12-19 2012-01-11 株式会社Ntt都科摩 一种数据块的调度方法及网络节点
US8861356B2 (en) * 2007-03-13 2014-10-14 Ntt Docomo, Inc. Method and apparatus for prioritized information delivery with network coding over time-varying network topologies
US8064548B2 (en) * 2007-05-18 2011-11-22 Ntt Docomo, Inc. Adaptive MaxLogMAP-type receiver structures
US20090285323A1 (en) * 2008-05-15 2009-11-19 Sundberg Carl-Erik W Adaptive soft output m-algorithm receiver structures
US20080301448A1 (en) * 2007-06-01 2008-12-04 Microsoft Corporation Security Against Corruption for Networked Storage
US20080304590A1 (en) * 2007-06-06 2008-12-11 Sundberg Carl-Erik W Method and apparatus for transmission from multiple non-collocated base stations over wireless radio networks
JP5137501B2 (ja) * 2007-08-27 2013-02-06 三菱電機株式会社 通信システムおよび通信装置
US20090075686A1 (en) * 2007-09-19 2009-03-19 Gomadam Krishna S Method and apparatus for wideband transmission based on multi-user mimo and two-way training
US8705345B2 (en) * 2007-11-26 2014-04-22 Iowa State University Research Foundation, Inc. Network protection using network coding
CN101217489B (zh) * 2008-01-10 2011-05-04 复旦大学 具有网络编码功能的路由器和基于网络编码的组网方法
US8325840B2 (en) * 2008-02-25 2012-12-04 Ntt Docomo, Inc. Tree position adaptive soft output M-algorithm receiver structures
US8279954B2 (en) * 2008-03-06 2012-10-02 Ntt Docomo, Inc. Adaptive forward-backward soft output M-algorithm receiver structures
CN101267450B (zh) * 2008-03-18 2011-01-19 上海大学 基于网络编码的分布式网络应用层组播路由方法
CN101540778B (zh) * 2008-03-19 2014-09-03 华为技术有限公司 一种数据传输的方法、装置和***
JP5004869B2 (ja) 2008-05-22 2012-08-22 三菱電機株式会社 ネットワーク経路選択方法および通信システム
US8565329B2 (en) * 2008-06-03 2013-10-22 Ntt Docomo, Inc. Soft output M-algorithm receiver structures with generalized survivor selection criteria for MIMO systems
JP4982434B2 (ja) * 2008-06-11 2012-07-25 Kddi株式会社 通信システムおよび復号化装置
CN101621353B (zh) * 2008-07-03 2013-08-07 华为技术有限公司 一种随机线性网络编码的方法、装置和***
US8224868B2 (en) 2008-07-31 2012-07-17 Verizon Patent And Licensing Inc. Network coding with last modified dates for P2P web caching
US8229443B2 (en) * 2008-08-13 2012-07-24 Ntt Docomo, Inc. Method of combined user and coordination pattern scheduling over varying antenna and base-station coordination patterns in a multi-cell environment
US8451951B2 (en) * 2008-08-15 2013-05-28 Ntt Docomo, Inc. Channel classification and rate adaptation for SU-MIMO systems
US8705484B2 (en) * 2008-08-15 2014-04-22 Ntt Docomo, Inc. Method for varying transmit power patterns in a multi-cell environment
US8542640B2 (en) * 2008-08-28 2013-09-24 Ntt Docomo, Inc. Inter-cell approach to operating wireless beam-forming and user selection/scheduling in multi-cell environments based on limited signaling between patterns of subsets of cells
US8855221B2 (en) * 2008-09-15 2014-10-07 Ntt Docomo, Inc. Method and apparatus for iterative receiver structures for OFDM/MIMO systems with bit interleaved coded modulation
TW201014926A (en) * 2008-10-15 2010-04-16 Nat Univ Tsing Hua Method for producing metallic oxide film having high dielectric constant
WO2010094561A2 (en) 2009-02-17 2010-08-26 Thomson Licensing Method for providing incentive mechanisms for out-of-order download in communication networks dedicated to the distribution of video-on-demand content
JP5188419B2 (ja) * 2009-02-23 2013-04-24 三菱電機株式会社 センサアドホックネットワーク、センサ端末および管理センサ端末
US9258361B2 (en) * 2009-04-08 2016-02-09 New Jersey Institute Of Technology Transferring data among nodes on a network
US9048977B2 (en) * 2009-05-05 2015-06-02 Ntt Docomo, Inc. Receiver terminal driven joint encoder and decoder mode adaptation for SU-MIMO systems
US8514961B2 (en) * 2010-02-04 2013-08-20 Ntt Docomo, Inc. Method and apparatus for distributed space-time coding in wireless radio networks
US8571214B2 (en) 2010-03-25 2013-10-29 Massachusetts Institute Of Technology Secure network coding for multi-resolution wireless video streaming
US10530574B2 (en) 2010-03-25 2020-01-07 Massachusetts Institute Of Technology Secure network coding for multi-description wireless transmission
JP5653247B2 (ja) * 2010-04-21 2015-01-14 三菱電機株式会社 無線通信方法
CN102065289B (zh) * 2010-09-09 2012-10-24 西安电子科技大学 基于网络编码的可靠性视频传输方法及装置
CN102136883B (zh) * 2011-03-15 2013-05-08 清华大学 基于网络编码的协作中继传输方法
WO2013006697A2 (en) 2011-07-05 2013-01-10 Massachusetts Institute Of Technology Energy-efficient time-stampless adaptive nonuniform sampling
US9143274B2 (en) * 2011-10-31 2015-09-22 Massachusetts Institute Of Technology Traffic backfilling via network coding in a multi-packet reception network
EP2774304B1 (en) 2011-11-05 2021-06-16 Massachusetts Institute of Technology Method and apparatus for efficient transmission of information to multiple nodes
US8780693B2 (en) * 2011-11-08 2014-07-15 Massachusetts Institute Of Technology Coding approach for a robust and flexible communication protocol
US9237107B2 (en) 2011-11-15 2016-01-12 New Jersey Institute Of Technology Fair quantized congestion notification (FQCN) to mitigate transport control protocol (TCP) throughput collapse in data center networks
US9537759B2 (en) 2012-01-31 2017-01-03 Massachusetts Institute Of Technology Multi-path data transfer using network coding
US9160687B2 (en) 2012-02-15 2015-10-13 Massachusetts Institute Of Technology Method and apparatus for performing finite memory network coding in an arbitrary network
CN102647253B (zh) * 2012-03-28 2015-03-25 上海交通大学 多中继网络中基于网络编码的传输控制方法
ES2834108T3 (es) * 2012-07-16 2021-06-16 Code On Network Coding Llc Codificación de red distribuida determinista
US9369255B2 (en) 2012-10-18 2016-06-14 Massachusetts Institute Of Technology Method and apparatus for reducing feedback and enhancing message dissemination efficiency in a multicast network
CN104038515B (zh) * 2013-03-05 2017-10-10 腾讯科技(深圳)有限公司 内容分发方法、装置及***
US9607003B2 (en) 2013-03-14 2017-03-28 Massachusetts Institute Of Technology Network coded storage with multi-resolution codes
US9369541B2 (en) 2013-03-14 2016-06-14 Massachusetts Institute Of Technology Method and apparatus for implementing distributed content caching in a content delivery network
US10311243B2 (en) 2013-03-14 2019-06-04 Massachusetts Institute Of Technology Method and apparatus for secure communication
US9019643B2 (en) * 2013-03-15 2015-04-28 Massachusetts Institute Of Technology Method and apparatus to reduce access time in a data storage device using coded seeking
US9185529B2 (en) 2013-03-15 2015-11-10 Massachusetts Institute Of Technology Wireless reliability architecture and methods using network coding
US9667530B2 (en) 2013-05-06 2017-05-30 International Business Machines Corporation Privacy preserving query method and system for use in federated coalition networks
CN105264860A (zh) * 2014-03-24 2016-01-20 华为技术有限公司 一种通信设备、方法及***
CN106160922A (zh) * 2015-04-02 2016-11-23 中兴通讯股份有限公司 数据发送方法、解码方法及装置
US10117132B2 (en) * 2015-05-11 2018-10-30 Istanbul Teknik Üniversitesi Cooperative, network coded, distributed wireless communication and data storage method
CN107517390A (zh) * 2016-05-26 2017-12-26 上海云熵网络科技有限公司 基于网络编码与内容分布网络的串流视频的处理***与方法
CN106202387B (zh) * 2016-07-08 2019-05-21 苏州超块链信息科技有限公司 一种数据一致性并行维护方法
US11424861B2 (en) 2017-03-29 2022-08-23 Massachusetts Institute Of Technology System and technique for sliding window network coding-based packet generation
US10693720B2 (en) * 2017-04-10 2020-06-23 Cisco Technology, Inc. Distribution of updates in an IoT network
WO2019094556A1 (en) * 2017-11-08 2019-05-16 Massachusetts Institute Of Technology System for de-duplicating network coded distributed storage and related techniques
ES2950133T3 (es) 2018-05-16 2023-10-05 Code On Tech Inc Aparato de codificación multitrayecto y técnicas relacionadas
CN109347968B (zh) * 2018-11-07 2021-09-24 网宿科技股份有限公司 一种下载资源文件的数据块的方法、设备和***
US11108705B2 (en) 2019-04-30 2021-08-31 Code On Network Coding, Llc Linear network coding with pre-determined coefficient generation through parameter initialization and reuse
US11102272B2 (en) * 2019-12-19 2021-08-24 Wangsu Science and Technology Co., Ltd. Method and device for downloading resource file
EP3849089A1 (en) 2020-01-09 2021-07-14 Microsoft Technology Licensing, LLC Encoding for data recovery in storage systems
US11553184B2 (en) * 2020-12-29 2023-01-10 Qualcomm Incorporated Hybrid digital-analog modulation for transmission of video data

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002223167A (ja) 2001-01-25 2002-08-09 Sony Corp データ処理装置およびデータ処理方法、並びにプログラムおよび記録媒体

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11340840A (ja) * 1998-05-28 1999-12-10 Fujitsu Ltd 移動通信端末及び送信ビットレート判別方法
US6775325B1 (en) * 1998-10-07 2004-08-10 Sarnoff Corporation Method and apparatus for converting the bitrate of an encoded bitstream without full re-encoding
US6522688B1 (en) * 1999-01-14 2003-02-18 Eric Morgan Dowling PCM codec and modem for 56K bi-directional transmission
US6760479B1 (en) * 1999-10-22 2004-07-06 Research Foundation Of The City University Of New York Super predictive-transform coding
US6404814B1 (en) * 2000-04-28 2002-06-11 Hewlett-Packard Company Transcoding method and transcoder for transcoding a predictively-coded object-based picture signal to a predictively-coded block-based picture signal
US6751477B1 (en) * 2000-05-17 2004-06-15 Telefonaktiebolaget Lm Ericsson (Publ) Systems and methods for dynamically optimizing the fidelity of a speech signal received from a wireless telephony device and transmitted through a packet-switched network
US6944226B1 (en) * 2000-10-03 2005-09-13 Matsushita Electric Corporation Of America System and associated method for transcoding discrete cosine transform coded signals
US7277950B1 (en) * 2000-12-29 2007-10-02 Swarmcast, Inc. Packet transfer mechanism over a peer to peer network
US7082220B2 (en) * 2001-01-25 2006-07-25 Sony Corporation Data processing apparatus
MY138481A (en) * 2001-05-17 2009-06-30 Sony Corp Data distribution system, terminal apparatus, distribution center apparatus, highefficiency encoding method, high-efficiency encoding apparatus, encoded data decoding method, encoded data decoding apparatus, data transmission method, data transmission apparatus, sub information attaching method, sub information attaching apparatus, and recording medium
JP4711099B2 (ja) * 2001-06-26 2011-06-29 ソニー株式会社 送信装置および送信方法、送受信装置および送受信方法、並びにプログラムおよび記録媒体
US7197084B2 (en) * 2002-03-27 2007-03-27 Qualcomm Incorporated Precoding for a multipath channel in a MIMO system
US20040107242A1 (en) 2002-12-02 2004-06-03 Microsoft Corporation Peer-to-peer content broadcast transfer mechanism
US20070041447A1 (en) * 2003-04-17 2007-02-22 Dzevdet Burazerovic Content analysis of coded video data
CA2465332C (en) * 2003-05-05 2012-12-04 Ron Kerr Soft input decoding for linear codes
WO2004114208A2 (en) * 2003-06-19 2004-12-29 Sarnoff Corporation A method and apparatus for compressed-domain watermarking
US7574518B2 (en) * 2003-06-23 2009-08-11 Microsoft Corporation System and method for computing low complexity algebraic network codes for a multicast network
US7668712B2 (en) * 2004-03-31 2010-02-23 Microsoft Corporation Audio encoding and decoding with intra frames and adaptive forward error correction

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002223167A (ja) 2001-01-25 2002-08-09 Sony Corp データ処理装置およびデータ処理方法、並びにプログラムおよび記録媒体

Also Published As

Publication number Publication date
EP1612982B1 (en) 2013-08-28
US20060020560A1 (en) 2006-01-26
KR20060049764A (ko) 2006-05-19
JP2006031693A (ja) 2006-02-02
CN100566257C (zh) 2009-12-02
EP1612982A2 (en) 2006-01-04
CN1735020A (zh) 2006-02-15
EP1612982A3 (en) 2012-03-07
US7756051B2 (en) 2010-07-13
JP4726557B2 (ja) 2011-07-20

Similar Documents

Publication Publication Date Title
KR101153124B1 (ko) 네트워크 코딩을 사용한 콘텐츠 분배
KR101366364B1 (ko) 콘텐츠 블록 교환 협상 방법, 컴퓨터 프로그램, 및 피어 노드
US8051205B2 (en) Peer-to-peer distributed storage
US8005975B2 (en) Reducing or minimizing delays in peer-to-peer communications such as peer-to-peer video streaming
US8140849B2 (en) Security for network coding file distribution
US20060224760A1 (en) Method and system for providing streaming content in a peer-to-peer network with network coding
CN108062419B (zh) 一种文件存储方法、电子设备、***和介质
Ma et al. A content distribution system based on sparse linear network coding
US9258361B2 (en) Transferring data among nodes on a network
EP1826980B1 (en) Progressive downloading
WO2018000647A1 (zh) 文件下载方法、装置、终端及服务器
Xu et al. I-swifter: improving chunked network coding for peer-to-peer content distribution
Zimmermann et al. Journey to MARS: interplanetary coding for relieving CDNs
Mahdian et al. Updating content in cache-aided coded multicast
JP5814710B2 (ja) ネットワーク符号化に基づくデータ伝送方法および装置
Dairaine et al. Content-access QoS in peer-to-peer networks using a fast MDS erasure code
US20180232284A1 (en) System and method of using encryption algorithms in p2p encryption mode to restore integrity of data
Anandaraj et al. An efficient framework for large scale multimedia content distribution in P2P network: I2NC
Anandaraj et al. An efficient framework for network code based multimedia content distribution in hybrid P2P network
Su et al. Raptorqp2p: Maximize the performance of p2p file distribution with raptorq coding
Li et al. An efficient P2P content distribution system based on altruistic demand and recoding dissemination
Nguyen et al. A p2p video delivery network (p2p-vdn)
Vater et al. Tree network coding for peer-to-peer networks
CN116155935A (zh) 数据分发方法、装置、***、电子设备及存储介质
Mawji et al. Efficient multipoint P2P file sharing in MANETs

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee