KR20210006983A - 라이브 스트림 커넥터 - Google Patents

라이브 스트림 커넥터 Download PDF

Info

Publication number
KR20210006983A
KR20210006983A KR1020207035495A KR20207035495A KR20210006983A KR 20210006983 A KR20210006983 A KR 20210006983A KR 1020207035495 A KR1020207035495 A KR 1020207035495A KR 20207035495 A KR20207035495 A KR 20207035495A KR 20210006983 A KR20210006983 A KR 20210006983A
Authority
KR
South Korea
Prior art keywords
packet
sender
buffer
input
data
Prior art date
Application number
KR1020207035495A
Other languages
English (en)
Other versions
KR102562258B1 (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 KR20210006983A publication Critical patent/KR20210006983A/ko
Application granted granted Critical
Publication of KR102562258B1 publication Critical patent/KR102562258B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements 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/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/1874Buffer management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements 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/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/1874Buffer management
    • H04L1/1877Buffer management for semi-reliable protocols, e.g. for less sensitive applications like streaming video
    • 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/0041Arrangements at the transmitter end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • H04L43/0864Round trip delays
    • H04L65/4076
    • H04L65/4084
    • H04L65/602
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/611Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for multicast or broadcast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/762Media network packet handling at the source 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • H04N21/2381Adapting the multiplex stream to a specific network, e.g. an Internet Protocol [IP] network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/633Control signals issued by server directed to the network components or client
    • H04N21/6338Control signals issued by server directed to the network components or client directed to network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/637Control signals issued by the client directed to the server or network components
    • H04N21/6375Control signals issued by the client directed to the server or network components for requesting retransmission, e.g. of data packets lost or corrupted during transmission from server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements 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/1607Details of the supervisory signal
    • H04L1/1614Details of the supervisory signal using bitmaps

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Environmental & Geological Engineering (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

라이브 스트림 커넥터를 위한 방법은 입력 파라미터를 갖는 데이터의 입력 미디어 스트림을 수신하는 단계, 및 패킷화된 데이터로서 입력 미디어 스트림을, 입력 파라미터들을 나타내는 헤더와 함께 수신 노드에 송신하는 단계를 포함한다. 수신 노드는 헤더의 입력 파라미터들에 기초하여 수신 버퍼로 구성되고, 패킷화된 데이터의 수신 이후 지연의 양이 입력 파라미터들의 레이턴시 입력을 충족하면, 패킷화된 데이터를 목적지로 내보내도록 구성된다. 이 방법은 송신 내에서 누락 패킷을 식별하는 제어 패킷을 피드백 노드로부터 수신하는 단계를 더 포함한다. 이 방법은 또한, 재송신 버퍼가 누락 패킷을 포함함을 확인하는 단계, 및 전송자 버퍼가 식별된 누락 패킷을 포함하는지 여부를 결정하는 단계를 포함한다. 전송자 버퍼가 식별된 누락 패킷을 포함하는 경우, 이 방법은 식별된 누락 패킷을 수신 노드로 재송신하는 단계를 포함한다.

Description

라이브 스트림 커넥터
[0001] 본 출원은 2018년 10월 2일자로 출원된 미국 특허출원 제16/149,835호를 우선권으로 주장하며, 이 출원은 이로써 그 전체가 인용에 의해 본 명세서에 포함된다.
[0002] 본 개시내용은 라이브 스트림 커넥터에 관한 것이다.
[0003] 네트워크 통신들과 관련된 기술이 근거리 및 원거리에 걸쳐 정보를 전송하도록 성장함에 따라, 전기 통신 시스템들은 이러한 거리들에 걸쳐 데이터 패킷들을 전송한다. 데이터 패킷 전송에 관련된 기술에 따라, 데이터 패킷들이 손실 또는 왜곡되어, 불완전한 데이터 전송을 야기할 수 있다. 이러한 불완전한 데이터 전송들은 종종 미디어 스트리밍 서비스들에 불리하게 영향을 준다. 라이브 미디어 스트리밍은 낮은 손실과 낮은 레이턴시 모두를 요구하기 때문에 라이브 미디어 스트리밍의 경우 이는 특히 문제가 될 수 있다. 보다 구체적으로는, 라이브 미디어 스트림의 소비자가 레이턴시 및 손실로 인해 야기된 품질 문제들을 인식하기가 쉽다. 결과적으로, 이러한 품질 문제들은 통상적으로 소비자에게 라이브 미디어 스트림을 바람직하지 않게 만든다. 사람들이 점점 더 실시간 및 라이브 접속들을 사용하여 통신함에 따라, 허용 가능한 수준의 데이터 손실 및 레이턴시로 미디어 스트림들을 전달하도록 개선된 데이터 전송 시스템들이 구현될 수 있다.
[0004] 본 개시내용의 일 양상은 데이터 전송 시스템을 위한 방법을 제공한다. 이 방법은 전송자 디바이스의 데이터 처리 하드웨어에서, 데이터의 입력 미디어 스트림, 비트 레이트 입력 및 레이턴시 입력을 수신하는 단계를 포함한다. 비트 레이트 입력 및 레이턴시 입력은 데이터의 입력 미디어 스트림의 송신과 연관된다. 이 방법은 또한 데이터 처리 하드웨어에 의해, 입력 미디어 스트림의 데이터를 패킷화하는 단계를 포함하며, 패킷화된 데이터는 비트 레이트 입력 및 레이턴시 입력을 나타내는 헤더를 포함한다. 이 방법은 데이터 처리 하드웨어에 의해, 패킷화된 데이터를 제어 계층의 재송신 버퍼 및 전송자 계층의 전송자 버퍼로 전달하는 단계를 더 포함한다. 제어 계층 및 전송자 계층은 데이터 처리 하드웨어의 계층 구조의 계층(hierarchical layer)들에 대응한다. 이 방법은 또한 데이터 처리 하드웨어에 의해, 전송자 계층의 전송자 버퍼로부터 수신 노드로 패킷화된 데이터를 송신하는 단계를 포함한다. 패킷화된 데이터는 수신 노드에 의해 수신될 때, 수신 노드로 하여금, 헤더의 레이턴시 입력 및 비트 레이트 입력에 기초하여 수신 버퍼를 초기화하게 하고, 패킷화된 데이터의 수신 이후 지연의 양이 레이턴시 입력을 충족하면, 패킷화된 데이터를 목적지로 내보내게 한다. 이 방법은 데이터 처리 하드웨어의 제어 계층에서, 피드백 노드로부터 제어 패킷을 수신하는 단계를 더 포함하며, 제어 패킷은 패킷화된 데이터의 송신 내에서 누락 패킷을 식별한다. 추가로, 이 방법은 데이터 처리 하드웨어에 의해, 제어 계층의 재송신 버퍼가 누락 패킷을 포함함을 확인하는 단계, 및 데이터 처리 하드웨어에 의해, 전송자 계층의 전송자 버퍼가 식별된 누락 패킷을 포함하는지 여부를 결정하는 단계를 포함한다. 전송자 버퍼가 식별된 누락 패킷을 포함하는 경우, 이 방법은 데이터 처리 하드웨어의 전송자 계층에 의해, 식별된 누락 패킷을 수신 노드로 재송신하는 단계를 포함한다.
[0005] 본 개시내용의 구현들은 다음의 선택적 특징들 중 하나 이상을 포함할 수 있다. 일부 구현들에서, 재송신 버퍼, 전송자 버퍼 및 수신 버퍼 각각은 비트 레이트 입력 및 레이턴시 입력에 기초하여 동적으로 구조화된다. 재송신 버퍼, 전송자 버퍼 또는 수신 버퍼 중 적어도 하나는 순환 버퍼를 포함할 수 있다. 전송자 버퍼가 식별된 누락 패킷을 포함하는 데 실패하는 경우, 이 방법은 데이터 처리 하드웨어의 제어 계층에 의해, 식별된 누락 패킷을 전송자 버퍼에 기록하는 단계, 및 데이터 처리 하드웨어의 전송자 계층에 의해, 전송자 버퍼로부터 수신 노드로 식별된 누락 패킷을 재송신하는 단계를 포함할 수 있다.
[0006] 일부 구성들에서, 패킷화된 데이터를 송신하는 단계는, 패킷화된 데이터를 복수의 수신 노드들에 배포하는 단계를 포함한다. 수신 노드는 목적지의 최종 클라이언트로부터 패킷화된 데이터에 대한 질의를 수신하고 각각의 노드로부터의 질의에 기초하여 최종 클라이언트로 패킷화된 데이터를 내보내도록 구성될 수 있다. 전송자 디바이스의 데이터 처리 하드웨어의 제어 계층 및 전송자 계층은 로컬 브로드캐스터에 위치될 수 있다. 수신 노드와 피드백 노드는 로컬 브로드캐스터로부터 떨어진 원격 시스템에 위치될 수 있다.
[0007] 일부 예들에서, 제어 계층은: 재송신 버퍼를 관리하는 동작; 제어 패킷을 수신하는 동작; 제어 패킷의 식별된 누락 패킷을 재송신 버퍼의 패킷들과 비교하는 동작; 식별된 누락 패킷을 전송자 버퍼에 기록하는 동작; 및 패킷 확인 응답들, 패킷 전송 타임스탬프들 및 패킷 재송신 타임스탬프들을 포함하는 패킷 정보를 저장하는 동작을 수행하도록 구성된다. 다른 예들에서, 이 방법은: 데이터 처리 하드웨어의 전송자 계층에 의해, 왕복 시간(RTT: round trip time) 핑(ping) 패킷을 수신 노드에 전송하는 단계; 데이터 처리 하드웨어의 제어 계층에서, 전송된 RTT 핑 패킷을 수신하는 단계; 및 데이터 처리 하드웨어의 제어 계층에 의해, 수신된 RTT 핑 패킷에 기초하여 왕복 시간을 생성하는 단계를 포함한다. 여기서, 수신 노드로 식별된 누락 패킷을 재송신하는 단계는 제어 계층에 의해, 수신 노드로의 식별된 누락 패킷의 재송신을 왕복 시간만큼 지연시키는 단계를 포함할 수 있다.
[0008] 일부 구현들에서, 제어 패킷은 각각의 수신된 패킷 및 각각의 누락 패킷을 나타내는 비트맵 구조를 포함한다. 비트맵 구조는 레이턴시 입력에 대응하는 지연 윈도우 내에서 가장 오래된 누락 패킷으로부터 가장 최근 누락 패킷으로 조직화된다. 전송자 계층은 패킷화된 데이터를 입력 비트 레이트와 동일한 전송 레이트로 전송하도록 구성될 수 있다. 추가로 또는 대안으로, 전송자 계층은 패킷화된 데이터를 전송자 버퍼에 대한 용량 계수에 기초하여 입력 비트 레이트의 약 1.5 내지 2.0배의 전송 레이트로 전송하도록 구성될 수 있다.
[0009] 일부 예들에서, 패킷화된 데이터를 전달하는 단계는 순방향 오류 정정을 위해 수신 노드에 전송할 패리티 패킷들을 생성하는 단계를 포함한다. 이 예에서, 전송자 계층의 전송자 버퍼로부터 수신 노드로 패킷화된 데이터를 송신하는 단계는 순방향 오류 정정을 위해 패리티 패킷들을 송신하는 단계를 포함한다.
[0010] 본 개시내용의 다른 양상은 데이터 전송 시스템을 위한 방법을 제공한다. 이 방법은 수신 노드의 데이터 처리 하드웨어에서, 패킷화된 데이터를 데이터 처리 하드웨어의 수신 버퍼에서 수신하는 단계를 포함한다. 패킷화된 데이터는 미디어 스트림에 대응하고, 미디어 스트림과 연관된 비트 레이트 입력 및 레이턴시 입력을 나타내는 헤더를 포함한다. 이 방법은 또한 데이터 처리 하드웨어에 의해, 수신자 디바이스의 피드백 노드에서 제어 패킷을 생성하는 단계를 포함한다. 제어 패킷은 수신된 패킷화된 데이터에 기초하고 수신된 패킷화된 데이터로부터 누락 패킷을 식별한다. 이 방법은 데이터 처리 하드웨어에 의해, 피드백 노드로부터 전송자 디바이스의 제어 계층으로 제어 패킷을 전달하는 단계를 더 포함한다. 제어 계층은 재송신 버퍼를 포함하고 동작들을 수행하도록 구성된다. 동작들은 재송신 버퍼가 제어 패킷에 의해 식별된 누락 패킷을 포함함을 확인하는 동작, 및 전송자 디바이스의 전송자 계층의 전송자 버퍼가 식별된 누락 패킷을 포함하는지 여부를 결정하는 동작을 포함한다. 전송자 버퍼가 식별된 누락 패킷을 포함하는 경우, 동작은 식별된 누락 패킷을 재송신하도록 전송자 계층에 지시하는 동작을 포함한다. 이 방법은 데이터 처리 하드웨어에서, 재송신된 누락 패킷을 수신 버퍼에서 수신하는 단계를 더 포함한다. 패킷화된 데이터의 수신 이후 지연의 양이 레이턴시 입력을 충족하는 경우, 이 방법은 데이터 처리 하드웨어에 의해, 패킷화된 데이터를 목적지로 내보내는 단계를 포함한다.
[0011] 이 양상은 다음의 선택적 특징들 중 하나 이상을 포함할 수 있다. 일부 구성들에서, 재송신 버퍼, 전송자 버퍼 및 수신 버퍼 각각은 비트 레이트 입력 및 레이턴시 입력에 기초하여 동적으로 구조화된다. 재송신 버퍼, 전송자 버퍼 또는 수신 버퍼 중 적어도 하나는 순환 버퍼를 포함할 수 있다. 전송자 버퍼가 식별된 누락 패킷을 포함하는 데 실패하는 경우, 제어 계층의 동작들은 식별된 누락 패킷을 전송자 버퍼에 기록하는 동작, 및 전송자 버퍼로부터 수신 노드로 식별된 누락 패킷의 재송신을 지시하는 동작을 포함할 수 있다.
[0012] 일부 예들에서, 패킷화된 데이터를 수신하는 단계는, 패킷화된 데이터를 복수의 수신 노드들에서 수신하는 단계를 포함한다. 이 방법은 또한 수신 노드의 데이터 처리 하드웨어에서, 목적지의 최종 클라이언트로부터 패킷화된 데이터에 대한 질의를 수신하는 단계, 및 수신 노드의 데이터 처리 하드웨어에 의해, 각각의 노드로부터의 질의에 기초하여 최종 클라이언트로 패킷화된 데이터를 내보내는 단계를 포함할 수 있다. 전송자 디바이스의 제어 계층 및 전송자 계층은 로컬 브로드캐스터에 위치될 수 있고, 수신 노드 및 피드백 노드는 로컬 브로드캐스터로부터 떨어진 원격 시스템에 위치될 수 있으며 수신 디바이스에 대응할 수 있다.
[0013] 일부 구현들에서, 제어 계층의 동작들은 재송신 버퍼를 관리하는 동작, 제어 패킷의 식별된 누락 패킷을 재송신 버퍼의 패킷들과 비교하는 동작, 식별된 누락 패킷을 전송자 버퍼에 기록하는 동작, 및 패킷 정보를 저장하는 동작을 포함한다. 패킷 정보는 패킷 확인 응답들, 패킷 전송 타임스탬프들 및 패킷 재송신 타임스탬프들을 포함한다. 이 방법은 데이터 처리 하드웨어에서, 수신 노드에서 전송자 계층으로부터 왕복 시간(RTT) 핑 패킷을 수신하는 단계, 및 데이터 처리 하드웨어에 의해, 수신 노드로부터 제어 계층으로 RTT 핑 패킷을 전송하는 단계를 포함할 수 있다. RTT 핑 패킷은 패킷의 왕복 시간을 결정하도록 구성된다. 여기서, 제어 계층의 동작들은 수신 노드로의 식별된 누락 패킷의 재송신을 왕복 시간만큼 지연시키는 동작을 포함할 수 있다.
[0014] 일부 구성들에서, 제어 패킷은 각각의 수신된 패킷 및 각각의 누락 패킷을 나타내는 비트맵 구조를 포함한다. 비트맵 구조는 레이턴시 입력에 대응하는 지연 윈도우 내에서 가장 오래된 누락 패킷으로부터 가장 최근 누락 패킷으로 조직화된다. 전송자 계층은 패킷화된 데이터를 입력 비트 레이트와 동일한 전송 레이트로 전송하도록 구성될 수 있다. 선택적으로, 전송자 계층은 패킷화된 데이터를 전송자 버퍼의 용량 계수에 기초하여 입력 비트 레이트의 약 1.5 내지 2.0배의 전송 레이트로 전송하도록 구성될 수 있다. 패킷화된 데이터를 수신하는 단계는 순방향 오류 정정을 위해 패리티 패킷들을 수신하는 단계를 포함할 수 있다.
[0015] 본 개시내용의 다른 양상은 데이터 전송 시스템을 위한 방법을 제공한다. 이 방법은 데이터 처리 하드웨어에서, 데이터의 입력 미디어 스트림, 비트 레이트 입력 및 레이턴시 입력을 수신하는 단계를 포함한다. 비트 레이트 입력 및 레이턴시 입력은 데이터의 입력 미디어 스트림의 송신과 연관된다. 이 방법은 또한 데이터 처리 하드웨어에 의해, 입력 미디어 스트림을 패킷화된 데이터로서 수신 노드로 송신하는 단계를 포함한다. 패킷화된 데이터는 비트 레이트 입력 및 레이턴시 입력을 나타내는 헤더를 포함한다. 수신 노드는 헤더의 레이턴시 입력 및 비트 레이트 입력에 기초하여 수신 버퍼로 구성되고, 수신 노드는 패킷화된 데이터의 수신 이후 지연의 양이 레이턴시 입력을 충족하면, 패킷화된 데이터를 목적지로 내보내도록 구성된다. 이 방법은 데이터 처리 하드웨어에서, 피드백 노드로부터 제어 패킷을 수신하는 단계를 더 포함한다. 제어 패킷은 패킷화된 데이터의 송신 내에서 누락 패킷을 식별한다. 이 방법은 또한 데이터 처리 하드웨어에 의해, 재송신 버퍼가 누락 패킷을 포함함을 확인하는 단계, 및 데이터 처리 하드웨어에 의해, 패킷화된 데이터를 전송하도록 구성된 전송자 버퍼가 식별된 누락 패킷을 포함하는지 여부를 결정하는 단계를 포함한다. 전송자 버퍼가 식별된 누락 패킷을 포함하는 경우, 이 방법은 데이터 처리 하드웨어에 의해, 식별된 누락 패킷을 수신 노드로 재송신하는 단계를 포함한다.
[0016] 본 개시내용의 다른 양상은 데이터 전송 시스템을 위한 분산 시스템을 제공한다. 이 시스템은 제어 계층 및 전송자 계층을 포함하는 전송자 디바이스 및 전송자 아키텍처와 통신하는 수신자 디바이스를 포함한다. 수신자 아키텍처는 복수의 노드들과 수신 버퍼를 포함한다. 복수의 노드들은 적어도 하나의 피드백 노드를 포함하고, 수신 버퍼는 입력 비트 레이트 및 입력 레이턴시에 의해 정의된다. 전송자 아키텍처 및 수신자 아키텍처 중 적어도 하나는 데이터 처리 하드웨어 및 데이터 처리 하드웨어와 통신하는 메모리 하드웨어를 포함한다. 메모리 하드웨어는 데이터 처리 하드웨어 상에서 실행될 때, 데이터 처리 하드웨어로 하여금 동작들을 수행하게 하는 명령들을 저장한다. 동작들은 전송자 디바이스에서, 데이터의 입력 미디어 스트림, 비트 레이트 입력 및 레이턴시 입력을 수신하는 동작을 포함한다. 비트 레이트 입력 및 레이턴시 입력은 데이터의 입력 미디어 스트림의 송신과 연관된다. 동작들은 또한 입력 미디어 스트림의 데이터를 패킷화하는 동작을 포함한다. 패킷화된 데이터는 비트 레이트 입력 및 레이턴시 입력을 나타내는 헤더를 포함한다. 동작들은 패킷화된 데이터를 제어 계층의 재송신 버퍼 및 전송자 계층의 전송자 버퍼로 전달하는 동작을 더 포함한다. 제어 계층 및 전송자 계층은 데이터 처리 하드웨어의 계층 구조의 계층들에 대응한다. 동작들은 또한 전송자 계층의 전송자 버퍼로부터 수신 노드로 패킷화된 데이터를 송신하는 동작을 포함한다. 패킷화된 데이터는 수신자 디바이스의 수신 노드에 의해 수신될 때, 수신 노드로 하여금, 헤더의 레이턴시 입력 및 비트 레이트 입력에 기초하여 수신 버퍼를 초기화하게 하고, 패킷화된 데이터의 수신 이후 지연의 양이 레이턴시 입력을 충족하면, 패킷화된 데이터를 목적지로 내보내게 한다. 동작들은 제어 계층에서, 수신자 디바이스의 적어도 하나의 피드백 노드로부터 제어 패킷을 수신하는 동작을 더 포함하고, 제어 패킷은 패킷화된 데이터의 송신 내에서 누락 패킷을 식별한다. 동작들은 또한, 제어 계층의 재송신 버퍼가 누락 패킷을 포함함을 확인하는 동작, 및 전송자 계층의 전송자 버퍼가 식별된 누락 패킷을 포함하는지 여부를 결정하는 동작을 포함한다. 전송자 버퍼가 식별된 누락 패킷을 포함하는 경우, 동작들은 전송자 계층에 의해, 식별된 누락 패킷을 수신 노드로 재송신하는 동작을 포함한다.
[0017] 본 개시내용의 구현들은 다음의 선택적 특징들 중 하나 이상을 포함할 수 있다. 일부 구현들에서, 재송신 버퍼, 전송자 버퍼 및 수신 버퍼 각각은 비트 레이트 입력 및 레이턴시 입력에 기초하여 동적으로 구조화된다. 재송신 버퍼, 전송자 버퍼 또는 수신 버퍼 중 적어도 하나는 순환 버퍼를 포함할 수 있다. 전송자 버퍼가 식별된 누락 패킷을 포함하는 데 실패하는 경우, 동작들은 전송자 디바이스의 제어 계층에 의해, 식별된 누락 패킷을 전송자 버퍼에 기록하는 동작, 및 전송자 디바이스의 전송자 계층에 의해, 전송자 버퍼로부터 수신 노드로 식별된 누락 패킷을 재송신하는 동작을 포함할 수 있다. 패킷화된 데이터를 송신하는 동작은, 패킷화된 데이터를 복수의 수신 노드들에 배포하는 동작을 포함할 수 있다.
[0018] 일부 예들에서, 수신 노드는 목적지의 최종 클라이언트로부터 패킷화된 데이터에 대한 질의를 수신하고 각각의 노드로부터의 질의에 기초하여 최종 클라이언트로 패킷화된 데이터를 내보내도록 구성된다. 전송자 디바이스의 데이터 처리 하드웨어의 제어 계층 및 전송자 계층은 로컬 브로드캐스터에 위치될 수 있고, 수신 노드 및 피드백 노드는 로컬 브로드캐스터로부터 떨어진 원격 시스템에 위치될 수 있다. 선택적으로, 제어 계층은: 재송신 버퍼를 관리하는 동작, 제어 패킷을 수신하는 동작; 제어 패킷의 식별된 누락 패킷을 재송신 버퍼의 패킷들과 비교하는 동작; 식별된 누락 패킷을 전송자 버퍼에 기록하는 동작; 및 패킷 확인 응답들, 패킷 전송 타임스탬프들 및 패킷 재송신 타임스탬프들을 포함하는 패킷 정보를 저장하는 동작을 수행하도록 구성될 수 있다.
[0019] 일부 구성들에서, 동작들은 전송자 계층에 의해, 왕복 시간(RTT) 핑 패킷을 수신 노드에 전송하는 동작, 제어 계층에서, 전송된 RTT 핑 패킷을 수신하는 동작, 및 제어 계층에 의해, 수신된 RTT 핑 패킷에 기초하여 왕복 시간을 생성하는 동작을 포함한다. 여기서, 수신 노드로 식별된 누락 패킷을 재송신하는 동작은 또한, 제어 계층에 의해, 수신 노드로의 식별된 누락 패킷의 재송신을 왕복 시간만큼 지연시키는 동작을 포함할 수 있다. 제어 패킷은 각각의 수신된 패킷 및 각각의 누락 패킷을 나타내는 비트맵 구조를 포함할 수 있으며, 비트맵 구조는 레이턴시 입력에 대응하는 지연 윈도우 내에서 가장 오래된 누락 패킷으로부터 가장 최근 누락 패킷으로 조직화된다.
[0020] 일부 구현들에서, 전송자 계층은 패킷화된 데이터를 입력 비트 레이트와 동일한 전송 레이트로 전송하도록 구성된다. 추가로 또는 대안으로, 전송자 계층은 패킷화된 데이터를 전송자 버퍼에 대한 용량 계수에 기초하여 입력 비트 레이트의 약 1.5 내지 2.0배의 전송 레이트로 전송하도록 구성될 수 있다. 패킷화된 데이터를 전달하는 동작은 순방향 오류 정정을 위해 수신 노드에 전송할 패리티 패킷들을 생성하는 동작을 포함할 수 있다. 선택적으로, 전송자 계층의 전송자 버퍼로부터 수신 노드로 패킷화된 데이터를 송신하는 동작은 또한, 순방향 오류 정정을 위해 패리티 패킷들을 송신하는 동작을 포함할 수 있다.
[0021] 본 개시내용의 다른 양상은 데이터 전송 시스템을 위한 분산 시스템을 포함한다. 이 시스템은 제어 계층 및 전송자 계층을 포함하는 전송자 디바이스 및 전송자 아키텍처와 통신하는 수신자 디바이스를 포함한다. 수신자 아키텍처는 복수의 노드들과 수신 버퍼를 포함한다. 복수의 노드들은 적어도 하나의 피드백 노드 및 적어도 하나의 수신 노드를 포함한다. 수신 버퍼는 입력 비트 레이트 및 입력 레이턴시에 의해 정의된다. 전송자 아키텍처 및 수신자 아키텍처 중 적어도 하나는 데이터 처리 하드웨어 및 데이터 처리 하드웨어와 통신하는 메모리 하드웨어를 포함한다. 메모리 하드웨어는 데이터 처리 하드웨어 상에서 실행될 때, 데이터 처리 하드웨어로 하여금 동작들을 수행하게 하는 명령들을 저장한다. 동작들은 수신자 디바이스의 적어도 하나의 수신 노드에서, 패킷화된 데이터를 데이터 처리 하드웨어의 수신 버퍼에서 수신하는 동작을 포함한다. 패킷화된 데이터는 미디어 스트림에 대응하고, 미디어 스트림과 연관된 비트 레이트 입력 및 레이턴시 입력을 나타내는 헤더를 포함한다. 동작들은 수신자 디바이스의 적어도 하나의 피드백 노드에서, 수신된 패킷화된 데이터에 기초하여 제어 패킷을 생성하는 동작, 및 수신된 패킷화된 데이터로부터 누락 패킷을 식별하는 동작을 더 포함한다. 동작들은 또한 피드백 노드로부터 전송자 디바이스의 제어 계층으로 제어 패킷을 전달하는 동작을 더 포함한다. 제어 계층은 재송신 버퍼를 포함하며, 다음의 동작들: 재송신 버퍼가 제어 패킷에 의해 식별된 누락 패킷을 포함함을 확인하는 동작; 전송자 디바이스의 전송자 계층의 전송자 버퍼가 식별된 누락 패킷을 포함하는지 여부를 결정하는 동작; 및 전송자 버퍼가 식별된 누락 패킷을 포함하는 경우, 식별된 누락 패킷을 재송신하도록 전송자 계층에 지시하는 동작을 수행하도록 구성된다. 동작들은 적어도 하나의 수신 노드에서, 재송신된 누락 패킷을 수신 버퍼에서 수신하는 동작을 더 포함한다. 패킷화된 데이터의 수신 이후 지연의 양이 레이턴시 입력을 충족하는 경우, 동작들은 패킷화된 데이터를 적어도 하나의 수신 노드로부터 목적지로 내보내는 동작을 포함한다.
[0022] 본 개시내용의 구현들은 다음의 선택적 특징들 중 하나 이상을 포함할 수 있다. 일부 예들에서, 재송신 버퍼, 전송자 버퍼 및 수신 버퍼 각각은 비트 레이트 입력 및 레이턴시 입력에 기초하여 동적으로 구조화된다. 추가로 또는 대안으로, 재송신 버퍼, 전송자 버퍼 또는 수신 버퍼 중 적어도 하나는 순환 버퍼를 포함할 수 있다. 전송자 버퍼가 식별된 누락 패킷을 포함하는 데 실패하는 경우, 제어 계층의 동작들은 식별된 누락 패킷을 전송자 버퍼에 기록하는 동작, 및 전송자 버퍼로부터 수신 노드로 식별된 누락 패킷의 재송신을 지시하는 동작을 포함할 수 있다. 패킷화된 데이터를 수신하는 동작은, 패킷화된 데이터를 복수의 수신 노드들에서 수신하는 동작을 포함할 수 있다.
[0023] 일부 구성들에서, 동작들은 적어도 하나의 수신 노드에서, 목적지의 최종 클라이언트로부터 패킷화된 데이터에 대한 질의를 수신하는 동작, 및 적어도 하나의 수신 노드로부터, 각각의 노드로부터의 질의에 기초하여 최종 클라이언트로 패킷화된 데이터를 내보내는 동작을 포함한다. 전송자 디바이스의 제어 계층 및 전송자 계층은 로컬 브로드캐스터에 위치될 수 있다. 선택적으로, 수신 노드와 피드백 노드는 로컬 브로드캐스터로부터 떨어진 원격 시스템에 위치될 수 있다. 제어 계층의 동작들은 재송신 버퍼를 관리하는 동작, 제어 패킷의 식별된 누락 패킷을 재송신 버퍼의 패킷들과 비교하는 동작, 식별된 누락 패킷을 전송자 버퍼에 기록하는 동작, 및 패킷 확인 응답들, 패킷 전송 타임스탬프들 및 패킷 재송신 타임스탬프들을 포함하는 패킷 정보를 저장하는 동작을 포함할 수 있다.
[0024] 일부 구현들에서, 동작들은 패킷의 왕복 시간(RTT)을 결정하도록 구성된 왕복 시간 핑 패킷을 수신 노드에서 전송자 계층으로부터 수신하는 동작, 및 수신 노드로부터 제어 계층으로 RTT 핑 패킷을 전송하는 동작을 포함한다. 여기서, 제어 계층의 동작들은 또한, 수신 노드로의 식별된 누락 패킷의 재송신을 왕복 시간만큼 지연시키는 동작을 포함할 수 있다.
[0025] 일부 예들에서, 제어 패킷은 각각의 수신된 패킷 및 각각의 누락 패킷을 나타내는 비트맵 구조를 포함한다. 비트맵 구조는 레이턴시 입력에 대응하는 지연 윈도우 내에서 가장 오래된 누락 패킷으로부터 가장 최근 누락 패킷으로 조직화될 수 있다. 전송자 계층은 패킷화된 데이터를 입력 비트 레이트와 동일한 전송 레이트로 전송하도록 또는 패킷화된 데이터를 전송자 버퍼의 용량 계수에 기초하여 입력 비트 레이트의 약 1.5 내지 2.0배의 전송 레이트로 전송하도록 구성될 수 있다. 패킷화된 데이터를 수신하는 동작은 또한 순방향 오류 정정을 위해 패리티 패킷들을 수신하는 동작을 포함할 수 있다.
[0026] 본 개시내용의 다른 양상은 데이터 전송 시스템을 위한 시스템을 제공한다. 이 시스템은 데이터 처리 하드웨어 및 데이터 처리 하드웨어와 통신하는 메모리 하드웨어를 포함한다. 메모리 하드웨어는 데이터 처리 하드웨어 상에서 실행될 때, 데이터 처리 하드웨어로 하여금 동작들을 수행하게 하는 명령들을 저장한다. 동작들은 데이터의 입력 미디어 스트림, 비트 레이트 입력 및 레이턴시 입력을 수신하는 동작을 포함하며, 비트 레이트 입력 및 레이턴시 입력은 데이터의 입력 미디어 스트림의 송신과 연관된다. 동작들은 또한 입력 미디어 스트림을 패킷화된 데이터로서 수신 노드로 송신하는 동작을 포함한다. 패킷화된 데이터는 비트 레이트 입력 및 레이턴시 입력을 나타내는 헤더를 포함한다. 수신 노드는 헤더의 레이턴시 입력 및 비트 레이트 입력에 기초하여 수신 버퍼로 구성된다. 수신 노드는 또한, 패킷화된 데이터의 수신 이후 지연의 양이 레이턴시 입력을 충족하면, 패킷화된 데이터를 목적지로 내보내도록 구성된다. 동작들은 피드백 노드로부터 제어 패킷을 수신하는 동작을 더 포함하며, 제어 패킷은 패킷화된 데이터의 송신 내에서 누락 패킷을 식별한다. 추가로, 동작들은 재송신 버퍼가 누락 패킷을 포함함을 확인하는 동작, 및 패킷화된 데이터를 전송하도록 구성된 전송자 버퍼가 식별된 누락 패킷을 포함하는지 여부를 결정하는 동작을 포함한다. 전송자 버퍼가 식별된 누락 패킷을 포함하는 경우, 동작들은 식별된 누락 패킷을 수신 노드로 재송신하는 동작을 포함한다.
[0027] 본 개시내용의 다른 양상은 라이브 스트림 커넥터를 위한 방법을 포함하며, 이 방법은 입력 파라미터를 갖는 데이터의 입력 미디어 스트림을 수신하는 단계, 및 패킷화된 데이터로서 입력 미디어 스트림을, 입력 파라미터들을 나타내는 헤더와 함께 수신 노드에 송신하는 단계를 포함한다. 수신 노드는 헤더의 입력 파라미터들에 기초하여 수신 버퍼로 구성되고, 패킷화된 데이터의 수신 이후 지연의 양이 입력 파라미터들의 레이턴시 입력을 충족하면, 패킷화된 데이터를 목적지로 내보내도록 구성된다. 이 방법은 송신 내에서 누락 패킷을 식별하는 제어 패킷을 피드백 노드로부터 수신하는 단계를 더 포함한다. 이 방법은 또한, 재송신 버퍼가 누락 패킷을 포함함을 확인하는 단계, 및 전송자 버퍼가 식별된 누락 패킷을 포함하는지 여부를 결정하는 단계를 포함한다. 전송자 버퍼가 식별된 누락 패킷을 포함하는 경우, 이 방법은 식별된 누락 패킷을 수신 노드로 재송신하는 단계를 포함한다.
[0028] 본 개시내용의 하나 이상의 구현들의 세부사항들은 아래 첨부 도면들 및 설명에서 제시된다. 다른 양상들, 특징들 및 이점들은 설명 및 도면들로부터 그리고 청구항들로부터 자명해질 것이다.
[0029] 도 1은 예시적인 데이터 전송 시스템의 개략도이다.
[0030] 도 2는 도 1의 데이터 전송 시스템의 예시적인 전송자 디바이스의 개략도이다.
[0031] 도 3a - 도 3c는 도 1의 데이터 전송 시스템의 예시적인 수신 디바이스들의 개략도들이다.
[0032] 도 4 - 도 6은 데이터 전송 시스템의 전송자 디바이스 및 수신자 디바이스에 대한 동작들의 예시적인 배열들의 흐름도들이다.
[0033] 도 7은 본 명세서에서 설명되는 시스템들 및 방법들을 구현하는 데 사용될 수 있는 예시적인 컴퓨팅 디바이스의 개략도이다.
[0034] 다양한 도면들에서 동일한 참조 심벌들은 동일한 엘리먼트들을 표시한다.
[0035] 컴퓨터 네트워크를 통해 두 엔드포인트들(예컨대, 소스/호스트 및 목적지) 간에 종종 데이터가 전송된다. 컴퓨터 네트워크들은 일반적으로 계층화된 아키텍처의 전송 계층이 데이터 전달을 담당하는 계층화된 아키텍처를 갖는다. 공교롭게도, 일상적인 애플리케이션들의 데이터 요구들이 증가함에 따라, 기존 전송 계층 프로토콜들은 종종 이러한 데이터 요구들을 충족하는 데 실패한다. 점점 인기를 얻고 있는 이러한 한 가지 타입의 데이터는 미디어 스트리밍 서비스들(예컨대, 라이브 미디어 스트림들)이다. 미디어 스트리밍 서비스들의 이용 가능성이 증가함에 따라, 미디어 스트리밍에 따른 문제들이 더욱 분명해진다. 예를 들어, 소비자들(즉, 최종 사용자들)은 라이브 미디어 스트림들에 대한 품질 변화들을 쉽게 알아챌 수 있다. 이는 최신 디스플레이 디바이스들(예컨대, 텔레비전들, 모니터들, 디바이스 스크린들 등)이 상승된 해상도(예컨대, 1080p, 2K, 4K, UHD 등)를 제공하기 때문에 특히 그러하다. 더욱이, 상승된 해상도는 통상적으로, 소비되고 있는 미디어 스트림(예컨대, 라이브 미디어 스트림)과 관련된 데이터 손실 및/또는 지연에 대한 소비자의 인내심을 약화시킨다. 이러한 문제들은 기존 프로토콜들(예컨대, UDP(user datagram protocol) 및 TCP(transmission control protocol))이 높은 품질 및 낮은 레이턴시와 연관된 과제들을 해결하는 데 실패할 때 더욱 심각해진다.
[0036] 전송 계층은 일반적으로 네트워크(예컨대, 네트워크(120))를 통한 메시지들 또는 데이터의 종단간 통신을 보장한다. 전송 계층은 접속 모드 또는 비접속 모드를 통해 송신들을 전송할 수 있다. TCP(transmission control protocol)는 일반적인 접속 지향 송신 프로토콜이다. 접속 지향 송신은 목적지에서 재구성을 필요로 하는 패킷들을 송신하고 송신에 대한 보장으로서 확인 응답을 이용한다. 이에 반해, 비접속 지향 송신은 패킷 송신 전에 가상 회로가 설정될 것을 요구하지도 데이터 수신의 확인 응답을 요구하지도 않는다. TCP는 대용량 데이터 세트들을 패킷화하고, 손실된 패킷들을 확인하여 재송신하고, 패킷들을 적절하게 재구성하는 능력으로 인해 인터넷 접속을 위한 일반적인 프로토콜이지만, TCP에 의해 수행되는 기능들은 추가 데이터 자원들을 요하고 송신 지연들의 원인이 될 수 있다. 다른 한편으로, UDP(user datagram protocol)는 추가 서비스들(예컨대, 재구성 또는 확인 응답들) 없이 패킷들을 전송하기 때문에, UDP는 가볍고(즉, 상대적으로 낮은 대역폭으로 작동하고) 견고한 비접속 프로토콜이다. 그러나 UDP에 대한 불리한 점은 패킷들이 소스와 목적지 간에 서로 다른 경로들을 취하여, 패킷 손실 또는 패킷들의 순서가 맞지 않는 것과 같은 문제들을 야기할 수 있다는 점이다.
[0037] 도 1은 분산 UDP 기반 전송 시스템의 사용으로 미디어 스트리밍 서비스들(예컨대, 라이브 미디어 스트림들)에 대한 데이터 전송을 개선할 수 있는 데이터 전송 시스템(100)의 일례이다. 데이터 전송 시스템(100)은 네트워크(120)를 통해 데이터의 미디어 스트림(예컨대, 입력 미디어 스트림(110))을 클라우드 환경의 분산 시스템과 같은 원격 시스템(130)으로 전달하기 위해 서버(들)(20)를 사용하는 브로드캐스터(10)를 포함한다. 디스플레이 디바이스(40)(예컨대, 컴퓨터 또는 모바일 디바이스)를 가진 최종 사용자(30)(즉, 소비자)는 미디어 스트림(110)에 액세스하거나 원격 시스템(130)과 관련된 스트리밍 서비스들로부터 미디어 스트림(110)을 수신할 수 있다. 예를 들어, 최종 사용자(30)는 (수신자(300)를 통해 도시되는) 원격 시스템(130)에 질의(140)를 전송하여 미디어 스트림(110)을 요청한다. 다른 예들에서, 최종 사용자(30)는 원격 시스템(130)에 의해 호스팅되는 애플리케이션들을 사용하여 미디어 스트림(110)에 액세스한다. 일부 예들에서, 미디어 스트림(110)의 수신 후, 원격 시스템(130)은 미디어 스트림(110)을 추가로 처리하고 그리고/또는 이를 원격 시스템(130)의 자원들(132)과 연관시킨다.
[0038] 브로드캐스터(10)는 미디어 스트림(110)을 생성하고 그리고/또는 미디어 스트림(110)을 네트워크(120)를 통해 배포할 수 있는 임의의 콘텐츠 제공자 또는 콘텐츠 제작자일 수 있다. 예를 들어, 브로드캐스터(10)는 미디어 스트림들을 통해 최종 사용자들(30)에게 배포할 콘텐츠를 제공하는, 원격 시스템(130)으로부터 떨어진 로컬 브로드캐스터이다. 클라우드 환경과 같은 원격 시스템(들)(130)은 최종 사용자들(30)을 위한 미디어 콘텐츠를 획득하고 그리고/또는 클라이언트들(예컨대, 로컬 브로드캐스터(10))을 위한 미디어 콘텐츠를 배포하기 위해 로컬 브로드캐스트 채널 라이브 스트림들을 수집할 수 있다. 브로드캐스터(10)와 원격 시스템(130) 사이의 이러한 관계는 브로드캐스터(10)가 종래의 브로드캐스팅(예컨대, 오버 디 에어(over the air) 브로드캐스팅)에 의해 도달 가능할 수 있는 것보다 더 큰 시장의 최종 사용자들(30)을 브로드캐스터들(10)이 지원할 수 있게 한다. 추가로, 관계는 자원들(132)(예컨대, 데이터 처리 하드웨어(134), 메모리 하드웨어(136) 또는 소프트웨어 자원들(138))을 통해 원격 시스템(130)이 더 많은 양의 콘텐츠를 획득하고 제공하는 것을 가능하게 할 수 있다. 예를 들어, 최종 사용자(30)는 미디어 콘텐츠를 소비하기 위해 원격 시스템(130)에 의해 호스팅되거나 원격 시스템(130)과 통신하는 미디어 스트리밍 애플리케이션들의 형태로 소프트웨어 자원들(138)에 액세스한다. 여기서, 브로드캐스터(10)는 네트워크(120)를 통해 원격 시스템(130)과 통신하도록 구성된 데이터 처리 하드웨어 및 메모리 하드웨어를 갖는 서버(들)(20)를 사용한다.
[0039] 브로드캐스터(10)와 원격 시스템(130) 간에 통신하기 위해, 데이터 전송 시스템(100)은 ("전송자 디바이스"로도 또한 지칭되는) 전송자(200)와 ("수신 디바이스"로도 또한 지칭되는) 수신자(300)를 가진 2-파트 시스템을 포함한다. 전송자(200)와 수신자(300)의 2-파트 시스템은 공동으로 라이브 스트림 커넥터로 지칭될 수 있다. 여기서, 전송자(200)는 원격 시스템(130)의 클라이언트(예컨대, 브로드캐스터(10))에 위치된다. 예컨대, 전송자(200)는 브로드캐스터(10)의 서버(들)(20) 상에 설치된다. 전송자(200)는 브로드캐스터(10)에 의해 제공된(예컨대, 생성된) 데이터의 입력 미디어 스트림(110)을 수신하고 수신자(300)로의 데이터의 송신(202)으로서 입력 미디어 스트림(110)을 송신한다. 도 1에 도시된 바와 같이, 전송자(200)는 원격 시스템(130)에 위치된 수신자(300)와 네트워크(120)를 통해 통신하도록 구성된다.
[0040] 입력 미디어 스트림(110)을 송신하기 위해, 전송자(200)는 입력 미디어 스트림(110)을 데이터의 패킷들(P1-i)로 변환(즉, 패킷화)한다. 패킷들의 수(i)는 미디어 스트림(110)의 크기 및 품질에 좌우된다. 예를 들어, 미디어 스트림(110)이 연속 라이브 스트림인 경우, 전송자(200)에 의해 변환된 패킷들의 수(i)는 연속 라이브 스트림이 끝나지 않는 한 무한대일 것이다. 수신자(300)는 패킷화된 데이터를 송신(202)으로서 수신한다. 수신자(300)는 수신된 송신(202)을 검토하고 패킷화된 데이터의 부분들 또는 전부의 재송신(204)을 요청(302)하도록 구성된다. 수신자(300)는 전송자(200)가 수신자(300)에게 전송했지만, 송신(202) 중에 손실 또는 손상된 데이터 패킷들(P1-i)(즉, 누락 패킷들(PM))에 대한 재송신(204)을 요청한다.
[0041] 브로드캐스터(10)가 입력 미디어 스트림(110)을 전송자(200)에 전달할 때, 브로드캐스터(10)는 입력 미디어 스트림(110)의 송신(202) 및/또는 재송신(204)과 연관되는 입력 파라미터들(112)을 추가로 전달한다. 입력 파라미터들(112)은 라이브 스트림 커넥터의 사용자(예컨대, 브로드캐스터(10))에 의해 입력될 수 있고 사용자의 애플리케이션을 위해 구성된다. 즉, 브로드캐스터(10)와 같은 사용자는 로컬 자원들(예컨대, 네트워크(120) 또는 서버 처리)에 의해 또는 전송되는 미디어 스트림에 의해 제한될 수 있다. 이러한 제약들로 인해, 서로 다른 브로드캐스터들(10) 또는 서로 다른 미디어 스트림들은 서로 다른 입력 파라미터들(112)로 구성될 수 있다. 입력 파라미터들(112)은 적어도 비트 레이트 입력(112, 112a)(도 2) 및 레이턴시 입력(112, 112b)(도 2)을 포함한다. 비트 레이트 입력(112a)은 전송자(200)로의 입력 미디어 스트림(110)의 데이터 전송 레이트를 의미한다. 레이턴시 입력(112b)은 애플리케이션의 결함 공차를 정의하는 (예컨대, 일반적으로 초 단위의) 지연 윈도우 지속기간을 의미하는 입력 파라미터(112)이다. 레이턴시 입력(112b)은 구성 가능한 지연 윈도우 지속기간 내에 패킷 손실이 정정될 수 있게 한다. 예를 들어, 레이턴시 입력(112b)이 2초로서 구성되는 경우, 전송자(200)는 그 2초 내에 누락 패킷들(PM(1-i))을 재송신하여 누락 패킷(PM)의 손실을 정정할 수 있다. 레이턴시 입력(112b)을 선택함으로써, 라이브 스트림 커넥터는 신뢰성과 관련하여 레이턴시를 우선적으로 처리할 수 있다.
[0042] 계속해서 도 1을 참조하면, 전송자(200)는 전송자(200)에서 원래 (데이터(111)의) 5개의 패킷들(P1-5)을 포함하는 송신(202)을 수신자(300)에게 전송한다. 네트워크 신뢰성 또는 다른 문제들로 인해, 수신자(300)는 5개의 패킷들(P1-5) 중 3개의 패킷들(P1, P3, P4)만을 수신한다. 레이턴시 입력(112b)에 의해 구성된 지연 윈도우 지속기간 내에, 수신자(300)는 누락 패킷들(PM, P2, P5)을 식별하고 제2 패킷(P2) 및 제5 패킷(P5)의 재송신(204)에 대한 요청(302)을 전송자(200)에 전달한다. 전송자(200)는 수신자(300)로부터 요청(302)을 수신하고 누락 패킷들(PM, P2, P5)의 재송신(204)을 전달한다. 여기서, 지연 윈도우 지속기간이 만료되면, 수신자(300)는 수신된 패킷들(P1-5)을 목적지(예컨대, 최종 사용자(30)와 같은 요청 당사자 또는 저장 또는 중앙 집중식 배포를 위한 원격 시스템(130))로 전달할 수 있다. 재송신(204)의 수신 이후에 지연 윈도우 지속기간이 만료되면, 수신자(300)는 5개의 모든 패킷들(P1-5)을 목적지(30, 130)에 전달할 수 있다. 다른 한편으로는, 재송신(204)의 수신 이전에 지연 윈도우 지속기간이 만료되면, 수신자(300)는 이용 가능한 패킷들(P1, P3, P4)을 목적지(30, 130)에 전달한다.
[0043] 도 2는 데이터 전송 시스템(100)의 전송자(200)의 일례이다. 전송자 디바이스(200)는 입력 미디어 스트림(110)을 수신하고, 입력 미디어 스트림(110)의 데이터(111)를 패킷들(P1-i)로 패킷화하고, 패킷화된 데이터(즉, 패킷들(P1-i))를 송신(202) 및/또는 재송신(204)으로서 수신자(300)에 전달하도록 구성된다. 전송자(200)가 입력 미디어 스트림(110)의 데이터(111)를 패킷화할 때, 전송자(200)는 비트 레이트 입력(112a) 및 레이턴시 입력(112b)과 같은 입력 파라미터들(112)에 관한 정보를 포함하는 패킷들(P1-i)에 대한 헤더(206)를 생성한다. 헤더(206)를 통해 입력 파라미터들(112)을 포함함으로써, 패킷들(P1-i)의 각각의 수신 측(예컨대, 제어 계층(210), 전송자 계층(220) 또는 수신자(300))은 비트 레이트 입력(112a)에 의해 비트 레이트를 그리고 레이턴시 입력(112b)에 의해 지연 윈도우 지속기간을 식별하여 패킷들(P1-i)을 추가로 처리할 수 있다.
[0044] 여기서, 전송자(200)는 제어 계층(210)과 전송자 계층(220)을 포함하는 계층 구조 또는 아키텍처를 갖는다. 제어 계층(210)과 전송자 계층(220) 간의 관계는 계층적이어서 제어 계층(210)이 전송자 계층(220)을 관리하는 스마트 계층이 된다. 예를 들어, 제어 계층(210)이 스마트 계층이므로, 전송자 계층(220)은 패킷 정보를 추적하지 않는다. 그보다는, 전송자 계층(220)이 순서 또는 타입에 관계없이 비트 레이트 입력(112a) 및/또는 전송자 계층(220)의 상태들에 기초하여 전송 레이트(RS)로 패킷들(P1-i)을 전송한다.
[0045] 일부 구성들에서, 전송자(200)는 API(application programming interface)(230)를 통해 입력 미디어 스트림(110)을 수신한다. API(230)는 데이터의 입력 미디어 스트림(110)을 수신하고 데이터에 헤더(206)를 추가함으로써 데이터를 패킷화할 수 있다. 패킷화된 데이터로, API(230)는 패킷화된 데이터를 제어 계층(210) 및 전송자 계층(220)에 전달할 수 있다. 일부 예들에서, API(230)는 또한 패킷화된 데이터를 패리티 생성기(240)에 전달하여, 패킷화된 데이터와 관련된 패리티 패킷들(PP)을 생성한다.
[0046] 일부 구현들에서, 제어 계층(210)은 재송신 버퍼(212)(예컨대, 순환 버퍼)를 포함한다. 재송신 버퍼(212)는 입력 비트 레이트(112a) 및 레이턴시 입력(112b)의 입력 파라미터들(112)에 기초하여 동적으로 초기화된다. 예를 들어, 재송신 버퍼(212)의 크기 및/또는 용량은 이러한 입력 파라미터들(112)에 기초하여 구성된다. 다르게 말하면, 재송신 버퍼(212)는 입력 비트 레이트(112a)에서 레이턴시 입력(112b)에 의해 구성된 원하는 지연 윈도우 지속기간에 대응하도록 n개의 패킷들(P1-n)의 용량을 가질 수 있다. 제어 계층(210)은 헤더(206)로부터 이러한 입력 파라미터들(112)을 결정하도록 구성되고 이러한 입력 파라미터들(112)에 기초하여 재송신 버퍼(212)를 구성한다. 예시의 단순화를 위해, 재송신 버퍼(212)는 9개의 패킷들(P1-9)(즉, n = 9)로 도시된다. 재송신 버퍼(212)가 가득 차면, 가장 오래된 패킷들이 새로운 패킷들(PN)로 덮어쓰기 된다. 가장 오래된 패킷들이 덮어쓰기 될 것이므로, 수신자(300)가 새로운 패킷들(PN)로 덮어쓰기 된 패킷들(P)을 요청할 때 재송신(204)에 대한 수신자(300)에 의한 요청(302)은 타임아웃 될 수 있다(예컨대, 도 2는 9번째 패킷(P9)이 되었을 것이 새로운 패킷(PN)으로 덮어쓰기 되는 것을 도시한다). 이것이 발생하면, 라이브 스트림 커넥터가 누락 패킷들(PM)을 정정하는 데 실패할 것이고, 일부 패킷들(P1-i)이 누락될 수 있다 하더라도, 수신자(300)는 수신된 패킷들(P1-i)을 목적지에 전달할 것이다. 지연 윈도우 지속기간으로 지정된 윈도우에서 송신된 패킷들(P1-n)을 저장함으로써, 라이브 스트림 커넥터는 신뢰성과 레이턴시 사이를 절충한다(즉, 브로드캐스터(10)와 같은 사용자는 미디어 스트림이 견딜 수 있다고 여기는 레이턴시로 라이브 스트림 커넥터를 설정할 수 있다).
[0047] 재송신 버퍼(212)를 관리하는 것 외에도, 제어 계층(210)은 제어 패킷(PC)을 수신하고 전송자 계층(220)으로 재송신될 패킷들(P1-i)(즉, 누락 패킷들(PM)을 대체할 재송신 패킷들(PRT))을 기록한다. 도 2에 도시된 바와 같이, 제어 패킷들(PC)을 수신하기 위해, 제어 계층(210)은 검사자(214)를 포함한다. 제어 패킷(PC)은 수신자(300)에서 수신된 패킷들(P1-i)에 관한 정보(예컨대, 확인 응답) 또는 피드백을 포함하는 패킷이다. 수신자(300)에서 수신된 패킷들(P1-i)에 관한 피드백을 제공하기 위해, 제어 패킷들(PC)은 패킷들(P1-i)을 식별할 시작 시퀀스 번호를 갖는다. 제어 패킷(PC)은 재송신(204)에 대한 수신자에 의한 요청(302)의 일부 또는 전부일 수 있다. 일부 예들에서, 제어 패킷(PC)은 누락 패킷들(PM)을 설명하는 정보를 포함한다. 다른 예들에서, 제어 패킷(PC)은 수신된 패킷들(P1-i)과 누락 패킷들(PM) 모두를 설명하는 정보를 포함한다. 예컨대, 제어 패킷(PC)은 (예컨대, 1들로서) 수신된 패킷들(P1-i) 및 (예컨대, 0들로서) 누락 패킷들(PM)을 나타내는 비트맵이다. 일부 예들에서, 비트맵은 지연 윈도우에서 가장 오래된 패킷 지속기간으로부터 가장 최근 패킷까지로 조직화된다. 추가로 또는 대안으로, 수신된 패킷들과 누락 패킷들(P, PM)은 ACK/NACK 확인 응답들을 통해 식별될 수 있다.
[0048] 제어 계층(210)이 검사자(214)를 통해 제어 패킷(PC)을 수신하면, 검사자(214)는 재송신 버퍼(212)에서 누락 패킷(PM)에 대해 검사한다. 예를 들어, 검사자(214)는 제어 패킷(PC)의 비트맵을 가로질러, 누락 패킷(들)(PM)의 시퀀스 번호를 재송신 버퍼(212)에 매칭시킨다. 여기서, 도 1과 조합하여 도 2는 검사자(214)가 제어 패킷(PC)을 수신하고 제어 패킷(PC)의 누락 패킷(PM)을 5번째 패킷(P5)에 대응하는 것으로서 식별하는 것을 도시한다. 추가로 또는 대안으로, 검사자(214)는 (재송신 버퍼(212) 내에서 5번째 패킷(P5)으로서 도시된) 매칭 패킷에 대해 재송신 검사들을 수행하도록 구성될 수 있다.
[0049] 제어 패킷(PC)에 의해 식별된 누락 패킷(PM)이 발견되고 어떤 경우들에는, 재송신 검사들을 통과하면, 검사자(214)가 기록자(216)로 패킷을 전달한다. 기록자(216)는 재송신 버퍼(212) 내에서 식별된 누락 패킷(PM)을 재송신 패킷(PRT)으로서 전송자 계층(220)에 기록하도록 구성된다. 일부 구현들에서, 기록자(216)는 재송신 패킷(PRT)을 기록하기 전에, 식별된 누락 패킷(PM)에 대한 전송자 계층(220)의 대기열을 검사한다. 여기서, 이 대기열 검사는 식별된 누락 패킷(PM)이 수신자(300)에 전송되도록 전송자 계층(220)에 이미 스케줄링된 경우, 기록자(216)가 수신자(300)에 전송될 식별된 누락 패킷(PM)의 다른 사본을 중복하여 기록하는 것을 방지한다.
[0050] 일부 구성들에서, 제어 계층(210)은 관리자(218)를 포함한다. 관리자(218)는 제어 계층(210)에서 수신된 패킷들(P1-i)에 관한 추가 정보를 저장할 수 있다. 관리자(218)에 의해 저장된 추가 정보의 일부 예들은 패킷(P)이 (예컨대, 제어 패킷(PC)에 의해) 이전에 확인 응답되었는지 여부, 패킷(P)이 원래 전송된 시점에 대한 원래의 타임스탬프, 및 패킷(P)이 이전에 송신/재송신되었는지 여부에 관한 정보(예컨대, 마지막 송신 시간)를 포함한다. 제어 계층(210)이 이 추가 정보를 저장할 수 있음을 예시하기 위해, 도 2는 데이터베이스(DB)와 같은 데이터 저장소를 갖는 관리자(218)를 도시한다. 단일 데이터베이스(DB)로서 도시되지만, 추가 정보는 임의의 수의 데이터베이스들로 분할될 수 있다.
[0051] 관리자(218)는 추가로, 패킷들(P1-i)에 대한 왕복 시간(RTT)을 관리하도록 구성된다. RTT는 패킷(P)이 수신자(300)로 이동하고 다시 전송자(200)로 되돌아가는 데 걸리는 시간을 의미한다. 관리자(218)는 RTT 패킷들(PRTT)을 생성할 수 있고 이를 처리하여 라이브 스트림 커넥터의 RTT 값을 식별할 수 있다. 예컨대, 전송자(200)는 (예컨대, 관리자(218)를 통해) RTT 패킷(PRTT)이 전송자(200)로부터 수신자(300)로 전송된 시간에 대응하는 타임스탬프로 RTT 패킷(PRTT)을 스탬프한다. 수신자(300)가 RTT 패킷(PRTT)을 수신하면, 수신자(300)는 RTT 패킷(PRTT)을 전송자(200)로 다시 전송한다. 관리자(218)는 RTT 패킷(PRTT)을 수신하고, 수신 시간에 기초하여 RTT 값을 업데이트한다. 도 2에 도시된 바와 같이, 관리자(218)는 RTT 패킷들(PRTT)을 전송하도록 전송자 계층(220)과 주기적으로 조율할 수 있다. 관리자(218)는 주기적으로 RTT 값을 결정 및/또는 업데이트하기 때문에, 관리자(218)는 결정된 RTT 값들의 중간 값으로서 RTT 값을 보고할 수 있다. 도 2가 RTT 패킷(PRTT)으로서 별개의 패킷을 예시하더라도, 전송자(200)에 의해 전송된 임의의 패킷(P)이 RTT 패킷(PRTT)으로서 구성될 수 있다.
[0052] 일부 구성들에서, 수신자(300)는 다수의 수신 노드들(310)(도 3a 및 도 3b)을 갖는다. 이러한 구성들에서, 각각의 개별 노드(310)와 연관된 네트워크 링크에 기초하여 각각의 노드(310)가 서로 다르게 거동할 수 있기 때문에, 관리자(218)는 각각의 수신 노드(310)에 대한 RTT 값을 개별적으로 결정한다. 각각의 노드(310)에 대한 RTT 값을 결정함으로써, 전송자(200)는 RTT 값들에 기초하여, 수신자(300)의 수신 노드(310)와 전송자(200) 사이의 링크에 대해 불량 네트워크 접속이 존재한다고 결정하고 적어도 일시적으로 링크를 폐쇄할 수 있다. 링크를 폐쇄하기 위한 프로세스와 유사하게, 업데이트된 RTT 값에 기초한 관리자(218)는 폐쇄된 수신 노드의 링크를 통해 송신을 활성화(또는 재개)할 수 있다.
[0053] 일부 예들에서, 제어 계층(210)은 재송신(204)에 대해 RTT 값을 이용한다. 예컨대, 제어 계층(210)은 시간 지연량 이후 재송신 패킷(PRT)을 재송신한다. 시간 지연량은 재송신 패킷(PRT)에 대응하는 패킷(P)의 원래 전송 시간(즉, 송신(204))으로부터 RTT 값의 n배로 설정될 수 있다. 즉, 도 2의 재송신 패킷은 5번째 패킷(P5)에 대응한다. 따라서 제어 계층(210)은 5번째 패킷(P5)이 5번째 패킷(P5)에 대응하는 재송신 패킷(PRT)을 전송하기 전에 원래 수신자(300)에 전송된 시점으로부터 RTT 값의 2배(즉, n = 2)를 대기할 수 있다. 재송신 패킷(PRT)을 지연시킴으로써, 전송자(200)는 네트워크 지연을 고려하고 그리고/또는 대역폭 사용량의 증가를 방지할 수 있다.
[0054] 일부 구현들에서, 관리자(218)는 패리티 생성기(240)를 포함한다. 패리티 생성기(240)는 패킷화된 데이터(P1-i)를 사용하여 패리티 패킷들(PP)을 생성한다. 여기서, 패리티 패킷들(PP)은 라이브 스트림 커넥터 내에서 오류 정정(예컨대, 순방향 오류 정정(FEC: forward error correction))을 위해 사용된다. 패리티 패킷(PP)은 패킷(P)이 손실과 같은 임의의 문제들을 겪었는지 여부를 나타낼 패리티 비트들을 포함한다. 제어 계층(210)의 관리자(218)는 수신자(300)로의 송신을 위해 패리티 패킷(PP)을 전송자 계층(220)에 기록할 수 있다.
[0055] 계속해서 도 2를 참조하면, 전송자(200)는 전송자 버퍼(222)를 갖는 전송자 계층(220)을 포함한다. 전송자 계층(220)은 전송자 버퍼(222)에서 서로 다른 소스들로부터 서로 다른 패킷들(PN, PRT, PP, PRTT)을 수신하여 수신자(300)에 전송할 수 있다. 이러한 패킷들(P1-i)은 (예컨대, API(230)로부터의) 새로운 패킷(PN), (예컨대, 기록자(216)로부터의) 재송신 패킷(PRT), (예컨대, 패리티 생성기(240)로부터의) 패리티 패킷(PP) 및 (예컨대, 관리자(218)로부터의) RTT 패킷(PRTT)을 포함한다. 제어 계층(210)의 재송신 버퍼(212)와 같이, 전송자 버퍼(222)는 입력 파라미터들(112)에 기초하여 동적으로 구성될 수 있다(예컨대, n개의 패킷들(P1-n)을 포함하며, 여기서 n은 전송자 버퍼(222)의 용량에 대응함). 일부 예들에서, 전송자 버퍼(222)는 순환 버퍼이다. 전송자 버퍼(222)는 FIFO(first-in-first-out) 버퍼일 수 있는데, 여기서 전송자 버퍼(222)는 각각의 개별 패킷(P)의 시퀀스 번호에 따라 패킷들(P1-n)의 순서를 정하지 않고 패킷들(P1-n)을 순차적 슬롯들에 기록한다. FIFO 버퍼는 가장 오래된 패킷이 먼저 전송자 계층(220)에 의해 전송되고 최신 패킷이 마지막으로 전송되도록 대기열에 배치되는 버퍼를 의미한다.
[0056] 전송자 계층(220)은 전송자 버퍼(222) 내의 패킷들(P1-n)을 전송자 레이트(RS)로 전송한다. 전송자 레이트(RS)는 일반적으로, 전송자 계층(220)이 입력 미디어 스트림(110)의 입력 비트 레이트(112a)와 매칭하게 패킷들(P1-n)을 전송할 수 있도록 구성된다. 일부 구현들에서, 전송자 계층(220)은 전송자 레이트(RS)를 동적으로 조정하도록 구성된다. 전송자 계층(220)은 전송자 레이트(RS)를 두 가지 인자들: (1) 입력 비트 레이트(112a); 및 (2) 전송자 버퍼(222)의 전송 대기열의 충만도(fullness)에 의해 조정할 수 있다. 입력 비트 레이트(112a)가 변경되거나 입력 미디어 스트림(110)의 실제 입력 레이트가 구성된 입력 비트 레이트(112a)보다 클 때, 전송자 버퍼(222)가 채워지기 시작할 것이다. 전송자 레이트(RS)와 입력 미디어 스트림(110)의 채움율 간의 불균형을 완화하기 위해, 전송자 계층(220)은 전송자 레이트(RS)를 높일 수 있다. 예컨대, 전송자 계층(220)은 전송자 버퍼 충만도의 인자에 기초하여 전송자 레이트(RS)를 1.5-2.0배 높인다. 즉, 전송자 레이트(RS)는 전송자 버퍼(222)가 가득 차고 수신자(300)로 전송될 필요가 있는 패킷들(P1-i)을 수용할 수 없는 것을 막도록 동적으로 변경될 수 있다. 일부 예들에서, 입력 파라미터들(112)은 최대 비트 레이트를 포함하여, 전송자 계층(220)이 전송자 레이트(RS)를 동적으로 조정하더라도, 전송자 계층(220)이 최대 비트 레이트를 초과하지 않도록 구성된다.
[0057] 도 3a - 도 3c는 데이터 전송 시스템(100)의 수신자(300)의 예들이다. 수신자(300)는 수신 노드(310)에서 전송자(200)에 의해 전송된 패킷들(P1-i)을 수신하고 전송자(200)에 대한 요청들(302)(예컨대, 제어 패킷(PC))을 생성하도록 구성된다. 추가로 또는 대안으로, 수신자(300)는 잔차 오류들에 대한 순방향 오류 정정(FEC)을 구현한다. 도 3a 및 도 3b와 같은 일부 예들에서, 수신자(300)는 복수의 수신 노드들(310, 310a-n) 및 피드백 노드(320)를 갖는 다중 노드 수신자(300a-b)이다. 도 3c와 같은 다른 예들에서, 수신자(300)는 피드백 노드(320)로도 또한 기능하는 단일 수신 노드(310)를 갖는 단일 노드 수신자(300c)이다. 또 다른 예들에서, 수신 노드들(310, 310a-n)의 수(n)는 전송자(200)와 수신자(300) 간의 네트워크 조건들 및/또는 라이브 스트림 커넥터의 애플리케이션에 좌우된다. 네트워크 조건들에 동적으로 구성 가능한 수신 노드들(310)의 수(n)를 가짐으로써, 라이브 스트림 커넥터는 네트워크(120)의 사용을 최대화할 수 있다. 예를 들어, 전송자(200)와 대응하는 수신 노드(310) 간의 네트워크 링크들은 네트워크(120)의 네트워크 접속에 기초하여 (예컨대, 일시적으로) 폐쇄될 수 있다. 다중 노드 수신자(300a-b)의 경우, 미디어 스트림(110)의 패킷화된 데이터는 나머지 활성 수신 노드들(310)(즉, 폐쇄되지 않은 수신 노드들(310))을 통해 동적으로 배포될 수 있다. 도 3a - 도 3c의 예들이 다수의 수신 노드들(310) 또는 단일 수신 노드(310)를 갖는 수신자(300)를 도시하더라도, 수신자(300a)는 수신자(300)가 도 3a 및 도 3b의 다중 노드 수신자(300a-b)로부터 도 3c의 단일 노드 수신자(300c)로, 또는 그 반대로 동적으로 변경될 수 있도록 임의의 수의 노드들에 의해 확장 가능하다. 예컨대, 더 낮은 제약들 및 신뢰할 수 있는 네트워크 링크들을 갖는 더 단순한 애플리케이션들에서, 수신자(300)는 단일 수신 노드(310)를 사용하여 중복성을 감소시킬 수 있다.
[0058] 도 3a 및 도 3b와 같은 다중 노드 수신자(300a-b)의 경우, 각각의 수신 노드(310)는 (예컨대, P1-3으로서 도시된) 패킷화된 데이터의 송신(202)으로서 미디어 스트림(110)의 일부를 수신한다. 여기서, 제1 수신 노드(310a)는 제2 패킷(P2)을 수신한다. 제2 수신 노드(310b)는 제1 패킷(P1)을 수신하고, 제3 수신 노드(310c)는 제3 패킷(P3)을 수신한다. 이에 반해, 도 3c는 패킷들(P1-3) 3개 모두를 수신하는 수신 노드(310)로서 단일 노드를 도시한다. 어떤 설계에서든, 수신자(300)는 수신 버퍼(330)를 포함한다. 재송신 버퍼(212) 및 전송자 버퍼(222)와 매우 유사하게, 수신 버퍼(330)는 패킷(들)(P1-i)의 헤더(들)(206)에 포함된 입력 파라미터들(112)에 기초하여 동적으로 구성될 수 있다. 일부 예들에서, 수신자 버퍼(330)는 순환 버퍼이다. 여기서, 수신 노드(310)가 패킷(P)을 수신할 때마다, 수신된 패킷(P)은 헤더(206) 내의 패킷(P)의 시퀀스 번호에 기초하여 수신 버퍼(330) 내의 대응하는 위치에 기록된다. 이 접근 방식에 기초하면, (예컨대, 도 3a - 도 3c에서 수신 버퍼(330) 내에 점선 외곽선으로 도시된) 누락 패킷(PM)이 있는 경우, 누락 패킷(PM)에 대응하는 수신 버퍼 슬롯은 수신자(300)에 의해 스킵된다. 일부 예들에서, 패킷(P)을 누락으로 표시하도록 누락 패킷(PM)의 수신 버퍼 슬롯에서 표시자(예컨대, 플래그)가 설정된다. 수신 버퍼(330)가 가득 차면, 수신자(300)는 수신 버퍼(330)로부터 가장 오래된 패킷을 내보내 수신 버퍼(330)가 새로운 패킷들(PN)을 계속 수신할 수 있게 한다.
[0059] 도 3a 및 도 3b와 같은 다중 노드 수신자 구성들에서, 수신 버퍼(330)는 애플리케이션에 따라 분산(도 3a) 또는 중앙 집중화(도 3b)될 수 있다. 분산된 수신 버퍼(330, 330a-c)에서, 패킷화된 데이터(P1-i)는 적어도 두 가지 방법들로 내보내질 수 있다. 일부 예들에서, 최종 사용자(30)는 질의(140, 140a-c)를 각각의 수신 노드(310a-c)에 전달하고 수신 노드들(310a-c)로부터 직접 패킷들(P1-i)을 수신한다. 다른 예들에서, 수신 노드들(310a-c)은 최종 사용자(30)의 목적지에 대한 어드레스를 획득하고 수신 버퍼들(330a-c) 각각으로부터 (예컨대, 최종 사용자(30)로서 도시된) 목적지의 어드레스로 패킷들(P1-i)을 내보낸다. 이러한 방법들을 예시하기 위해, 도 3a는 수신 노드들(310a-c)로부터 목적지까지의 양방향 화살표를 도시한다. 유사한 방식으로, 도 3b 또는 도 3c에 도시된 바와 같이, 수신 버퍼(330)가 중앙 집중화될 때, 목적지(즉, 최종 사용자(30))는 패킷들(P1-i)의 내보내기에 대한 질의(140)를 전송할 수 있거나 수신자(300)가 패킷들(P1-i)을 목적지로 내보낼 수 있다. 수신자(300)의 임의의 구성에서, 수신자(300)는 지연량이 레이턴시 입력(112b)을 충족할 때 (예컨대, 질의(140)에 대해) 패킷들(P1-i)을 내보내, 실시간 스트리밍 커넥터에 누락 패킷들(PM)을 정정할 시간을 준다.
[0060] 전송자(200)에 대한 확인 응답들 및/또는 요청들(302)을 생성하기 위해, 수신자(300)는 피드백 노드(320)를 포함한다. 피드백 노드(320)는 피드백(312) 을 위한 전용 노드(예컨대, 도 3a 및 도 3b)일 수 있거나 피드백 노드(320)로서도 또한 기능하는 수신 노드(310)(예컨대, 도 3c)일 수 있다. 피드백 노드(320)는 제어 패킷들(PC)을 생성하고 제어 패킷들(PC)을 전송자(200)로 전송하도록 구성된다. 지연 윈도우 지속기간에 따라, 피드백 노드(320)는 단일 제어 패킷(PC) 또는 하나보다 많은 제어 패킷(PC)을 생성할 수 있다. 도 3a와 같은 일부 예들에서, 피드백 노드(320)는 (도 3a 및 도 3b에 3개의 수신 노드들(310a-c)로서 도시된) 적어도 하나의 수신 노드(310)로부터 수집 및/또는 수신된 피드백(312)에 기초하여 제어 패킷(들)(PC)을 생성한다. 피드백(312)은 적어도 하나의 수신 노드(310)에서의 패킷들(P1-i)의 수신에 관한 정보이다.
[0061] 일부 예들에서, 수신 노드(들)(310)는 수신된 패킷들(P1-i)에 관한 피드백(312, 312a-c)을 기록 및/또는 전달하여, 피드백 노드(320)가 송신(202)으로부터 (예컨대, 패킷들(P1-i)의 순차적인 번호에 의해) 누락 패킷들(PM)을 추론할 수 있다. 다른 예들에서, 수신 노드(들)(310)는 수신된 패킷(들)(P1-i)뿐만 아니라 누락 패킷(들)(PM)도 식별하여, 피드백 노드(320)가 누락 패킷들(PM)을 추론할 필요가 없다. 일부 구성들에서, 라이브 스트림 커넥터의 수신자(300)를 설계하는 엔티티가 피드백 노드(320)를 설계/지정하여, 수신자(300)의 개시 시에, 피드백 노드(320)가 결정될 필요가 없다. 다른 구성들에서, 수신자(300)는 수신자(300)의 노드들로부터 피드백 노드(320)를 선택하기 위한 리더 선택기(340)를 포함한다. 예를 들어, 리더 선택기(340)는 리더 선택 알고리즘을 실행함으로써 피드백 노드(320)를 결정한다. 리더 선택기(340)는 라이브 스트림 커넥터 및/또는 수신자(300)가 활성화될 때 또는 수신자(300)가 동적으로 변경될 때 리더 선택 알고리즘을 실행할 수 있다. 수신자(300)가 동적으로 변경되는 예들은 수신자(300)가 이전에 결정된 피드백 노드(320)를 통합하는 경우 또는 수신자(300)가 애플리케이션 및/또는 네트워크(120)에 대한 변경들을 고려하도록, 이전에 결정된 피드백 노드(320)를 수신 노드(310)로 변환하는 경우를 포함한다(예컨대, 리더 노드는 리더 노드가 특정 네트워크 조건들을 갖지 않는다면 변경될 수 있고, 리더 노드는 네트워크 중단으로 인해 변경될 수 있고, 리더 노드는 리더 노드와 연관된 링크가 더는 작동하지 않을 때 변경될 수 있고, 리더 노드는 현재 리더 노드에 의한 임의의 적절한 고장으로 인해 변경될 수 있는 식이다).
[0062] 선택적으로, 데이터 전송 시스템(100)의 라이브 스트림 커넥터는 오류 정정을 제공한다. 도 3c는 오류 정정을 점선 박스에 의해 선택적인 것으로서 도시하지만, 라이브 스트림 커넥터의 임의의 구현으로 오류 정정이 포함될 수 있다. 오류 정정은 라이브 스트림 커넥터가 데이터 손실들로 인한 오류들을 수정할 수 있도록 라이브 스트림 커넥터에 대한 추가 신뢰성 옵션을 활성화한다. 일부 예들에서, 수신자(300)의 초기화 중에, 수신자(300)는 오류 정정 버퍼(350)(예컨대, FEC 버퍼(350))를 생성한다. 여기서, 라이브 스트림 커넥터에 의해 이용되는 오류 정정은 순방향 오류 정정(FEC)이다. 순방향 오류 정정은 일반적으로 송신 도중 중복 데이터(즉, 중복 비트들의 오류 정정 코드)의 도입을 의미한다. 중복 데이터는 수신자(300)에 의해 인식될 수 있는 원래 정보의 복잡한 함수들을 의미한다. 수신자(300)는 FEC 버퍼(350)에서 패리티 패킷(PP)을 수신하고, 오류 정정 코드에 대한 부착을 위해 패리티 패킷(PP)을 검사한다. 여기서, 누락 비트들이 발생하면, FEC 코드 설계에 기초하여 누락 비트들이 정정될 수 있다. 통상적으로, FEC 코드들에는 하드 결정 알고리즘들을 사용하는 고전적인 블록 코드들과 소프트 결정 알고리즘들을 사용하는 컨볼루션 코드들인 두 가지 주요 카테고리들이 있다. 블록 코드들은 고정 크기 블록들의 데이터로 작동하는 한편, 컨볼루션 코드들은 임의의 길이들의 데이터로 작동한다. 일부 예들에서, 수신자(300)는 리드 솔로몬(Reed-Solomon) 오류 정정으로 알려진 타입의 블록 코드를 사용한다. 리드 솔로몬 오류 정정을 사용함으로써, 수신자(300)는 FEC 버퍼(350)를 통해 (예컨대, 동작(352)에서) 오류들을 검출하고 (예컨대, 동작(354)에서) 다수의 심벌 오류들 및 소거들을 정정할 수 있다. 수신자(300)에서, 패리티 패킷(PP)은 표현된 윈도우에서 소거들을 정정하도록 처리된다. 이 오류 정정은 라이브 미디어 스트리밍에서 흔히 겪게 되는 버스트 오류들을 정정하는 데 도움이 될 수 있다. 사용될 수 있는 FEC 블록 코드들 및 컨볼루션 코드들의 다른 어떤 예들은 Golay, Bose-Chaudhuri-Hocquenghem, Hamming, Viterbi, MAP(maximum a posteriori probability) 또는 Bahl-Cocke-Jelinek-Raviv를 포함한다.
[0063] 도 4 - 도 6은 데이터 전송 시스템(100)의 라이브 스트림 커넥터를 구현하기 위한 예시적인 방법들(400, 500, 600)의 흐름도들이다. 도 4를 참조하면, 방법(400)은 동작(402)에서, 데이터의 입력 미디어 스트림(110), 비트 레이트 입력(112a) 및 레이턴시 입력(112b)을 수신한다. 비트 레이트 입력(112a) 및 레이턴시 입력(112b)은 데이터의 입력 미디어 스트림(110)의 송신과 연관된다. 방법(400)은 동작(404)에서, 입력 미디어 스트림(110)의 데이터를 패킷화한다. 여기서, 패킷화된 데이터(P1-i)는 비트 레이트 입력(112a) 및 레이턴시 입력(112b)을 나타내는 헤더(206)를 포함한다. 방법(400)은 동작(406)에서, 패킷화된 데이터(P1-i)를 제어 계층(210)의 재송신 버퍼(212) 및 전송자 계층(220)의 전송자 버퍼(222)로 전달한다. 제어 계층(210) 및 전송자 계층(220)은 계층 구조의 계층들에 대응한다. 예를 들어, 소프트웨어의 계층 구조의 계층들은 데이터 처리 하드웨어를 이용한다. 방법(400)은 동작(408)에서, 전송자 계층(220)의 전송자 버퍼(222)로부터 수신 노드(310)로 패킷화된 데이터(P1-i)를 송신한다. 동작(408)에서, 패킷화된 데이터(P1-i)가 수신 노드(310)에 의해 수신될 때, 그 수신은 수신 노드(310)로 하여금, 헤더(206)의 레이턴시 입력(112b) 및 비트 레이트 입력(112a)에 기초하여 수신 버퍼(330)를 초기화하게 하고, 패킷화된 데이터(P1-i)의 수신 이후 지연의 양이 레이턴시 입력(112b)을 충족하면, 패킷화된 데이터(P1-i)를 목적지로 내보내게 한다. 방법(400)은 동작(410)에서, 피드백 노드(320)로부터 제어 패킷(PC)을 수신한다. 제어 패킷(PC)은 패킷화된 데이터(P1-i)의 송신(202) 내에서 누락 패킷(PM)을 식별한다. 방법(400)은 동작(412)에서, 제어 계층(210)의 재송신 버퍼(212)가 누락 패킷(PM)을 포함함을 확인한다. 방법(400)은 동작(414)에서, 전송자 계층(220)의 전송자 버퍼(222)가 식별된 누락 패킷(PM)을 포함하는지 여부를 결정한다. 전송자 버퍼(222)가 식별된 누락 패킷(PM)을 포함하는 경우, 방법(400)은 동작(416)에서, 식별된 누락 패킷(PM)을 수신 노드(310)로 재송신한다.
[0064] 도 5를 참조하면, 방법(500)은 동작(502)에서, 패킷화된 데이터(P1-i)를 수신 버퍼(330)에서 수신한다. 패킷화된 데이터(P1-i)는 미디어 스트림(110)에 대응하고, 미디어 스트림(110)과 연관된 비트 레이트 입력(112a) 및 레이턴시 입력(112b)을 나타내는 헤더(206)를 포함한다. 방법(500)은 동작(504)에서, 수신자 디바이스(300)의 피드백 노드(320)에서 제어 패킷(PC)을 생성한다. 여기서, 제어 패킷(PC)은 수신된 패킷화된 데이터(P1-i)에 기초하고, 제어 패킷(PC)은 수신된 패킷화된 데이터(P1-i)로부터 누락 패킷(PM)을 식별한다. 방법(500)은 동작(506)에서, 피드백 노드(320)로부터 전송자 디바이스(200)의 제어 계층(210)으로 제어 패킷(PC)을 전달한다. 제어 계층(210)은 재송신 버퍼(212)를 포함하고, 제어 계층(210)은 다음의 동작들: 재송신 버퍼(212)가 제어 패킷(PC)에 의해 식별된 누락 패킷(PM)을 포함함을 확인하는 동작; 전송자 디바이스(200)의 전송자 계층(220)의 전송자 버퍼(222)가 식별된 누락 패킷(PM)을 포함하는지 여부를 결정하는 동작; 및 전송자 버퍼(222)가 식별된 누락 패킷(PM)을 포함하는 경우, 식별된 누락 패킷(PM)을 재송신하도록 전송자 계층(220)에 지시하는 동작을 수행하도록 구성된다. 일부 실시예들에서, 재송신 버퍼(212)는 식별된 누락 패킷(PM)을 포함하지만, 전송자 버퍼(222)는 식별된 누락 패킷(PM)을 포함하지 않는 경우, 기록자(216)가 식별된 누락 패킷을 전송자 계층(220)의 대기열에 기록하도록 구성될 수 있다는 점이 주목되어야 한다. 방법(500)은 동작(508)에서, 재송신된 누락 패킷(PM)을 수신 버퍼(330)에서 수신한다. 패킷화된 데이터(P1-i)의 수신 이후 지연의 양이 레이턴시 입력(112b)을 충족하는 경우, 방법(500)은 동작(510)에서, 패킷화된 데이터(P1-i)를 목적지로 내보낸다.
[0065] 도 6을 참조하면, 방법(600)은 동작(602)에서, 데이터의 입력 미디어 스트림(110), 비트 레이트 입력(112a) 및 레이턴시 입력(112b)을 수신한다. 여기서, 비트 레이트 입력(112a) 및 레이턴시 입력(112b)은 데이터의 입력 미디어 스트림(110)의 송신과 연관된다. 방법(600)은 동작(604)에서, 입력 미디어 스트림(110)을 패킷화된 데이터(P1-i)로서 수신 노드(310)로 송신한다. 여기서, 패킷화된 데이터(P1-i)는 비트 레이트 입력(112a) 및 레이턴시 입력(112b)을 나타내는 헤더(206)를 포함한다. 수신 노드(310)는 헤더(206)의 레이턴시 입력(112b) 및 비트 레이트 입력(112a)에 기초하여 수신 버퍼(330)로 구성된다. 수신 노드(310)는 또한, 패킷화된 데이터(P1-i)의 수신 이후 지연의 양이 레이턴시 입력(112b)을 충족하면, 패킷화된 데이터(P1-i)를 목적지로 내보내도록 구성된다. 방법(600)은 동작(606)에서, 피드백 노드(320)로부터 제어 패킷(PC)을 수신한다. 제어 패킷(PC)은 패킷화된 데이터(P1-i)의 송신(202) 내에서 누락 패킷(PM)을 식별한다. 방법(600)은 동작(608)에서, 재송신 버퍼(212)가 누락 패킷(PM)을 포함함을 확인한다. 방법(600)은 동작(610)에서, 패킷화된 데이터(P1-i)를 전송하도록 구성된 전송자 버퍼(222)가 식별된 누락 패킷(PM)을 포함하는지 여부를 결정한다. 전송자 버퍼(222)가 식별된 누락 패킷(PM)을 포함하는 경우, 방법(600)은 동작(612)에서, 식별된 누락 패킷(PM)을 수신 노드(310)로 재송신한다.
[0066] 도 7은 본 문헌에서 설명되는 시스템들(예컨대, 라이브 스트림 커넥터의 전송자(200) 및 수신자(300)) 및 방법들(예컨대, 방법들(400, 500, 600))을 구현하는 데 사용될 수 있는 예시적인 컴퓨팅 디바이스(700)의 개략도이다. 컴퓨팅 디바이스(700)는 랩톱들, 데스크톱들, 워크스테이션들, 개인용 디지털 보조기기들, 서버들, 블레이드 서버들, 메인프레임들 및 다른 적절한 컴퓨터들과 같은 다양한 형태들의 디지털 컴퓨터들을 나타내는 것으로 의도된다. 여기에 도시된 컴포넌트들, 이들의 접속들 및 관계들, 그리고 이들의 기능들은 단지 예시로 여겨지며, 본 문서에서 설명 및/또는 청구된 발명들의 구현들을 제한하는 것으로 여겨지는 것은 아니다.
[0067] 컴퓨팅 디바이스(700)는 프로세서(710)(예컨대, 데이터 처리 하드웨어), 메모리(720)(예컨대, 메모리 하드웨어), 저장 디바이스(730), 메모리(720)와 고속 확장 포트들(750)에 접속되는 고속 인터페이스/제어기(740), 및 저속 버스(770)와 저장 디바이스(730)에 접속되는 저속 인터페이스/제어기(760)를 포함한다. 컴포넌트들(710, 720, 730, 740, 750, 760) 각각은 다양한 버스들을 사용하여 상호 접속되고, 공통 마더보드 상에 또는 다른 방식들로 적절하게 장착될 수 있다. 프로세서(710)는 메모리(720)에 또는 저장 디바이스(730) 상에 저장된 명령들을 포함하여 컴퓨팅 디바이스(700) 내에서 실행하기 위한 명령들을 처리하여, 고속 인터페이스(740)에 결합된 디스플레이(780)와 같은 외부 입력/출력 디바이스 상에 GUI(graphical user interface)에 대한 그래픽 정보를 디스플레이할 수 있다. 다른 구현들에서는, 다수의 메모리들 및 다수의 타입들의 메모리와 함께 다수의 프로세서들 및/또는 다수의 버스들이 적절하게 사용될 수 있다. 또한, 다수의 컴퓨팅 디바이스들(700)이 접속될 수 있으며, 각각의 디바이스는 (예를 들어, 서버 뱅크, 블레이드 서버들의 그룹 또는 다중 프로세서 시스템으로서) 필요한 동작들의 부분들을 제공한다.
[0068] 메모리(720)는 컴퓨팅 디바이스(700) 내에 비-일시적으로 정보를 저장한다. 메모리(720)는 컴퓨터 판독 가능 매체, 휘발성 메모리 유닛(들) 또는 비휘발성 메모리 유닛(들)일 수 있다. 비-일시적 메모리(720)는 컴퓨팅 디바이스(700)에 의한 사용을 위해 일시적 또는 영구적으로 프로그램들(예컨대, 명령들의 시퀀스들) 또는 데이터(예컨대, 프로그램 상태 정보)를 저장하는 데 사용되는 물리적 디바이스들일 수 있다. 비휘발성 메모리의 예들은 플래시 메모리 및 ROM(read-only memory)/PROM(programmable read-only memory)/EPROM(erasable programmable read-only memory)/EEPROM(electronically erasable programmable read-only memory)(예컨대, 통상적으로 부팅 프로그램들과 같은 펌웨어에 사용됨)을 포함한다(그러나 이에 한정되는 것은 아님). 휘발성 메모리의 예들은 RAM(random access memory), DRAM(dynamic random access memory), SRAM(static random access memory), PCM(phase change memory)뿐만 아니라 디스크들 또는 테이프들을 포함한다(그러나 이에 한정된 것은 아님).
[0069] 저장 디바이스(730)는 컴퓨팅 디바이스(700)에 대한 대용량 저장소를 제공할 수 있다. 일부 구현들에서, 저장 디바이스(730)는 컴퓨터 판독 가능 매체이다. 다양한 서로 다른 구현들에서, 저장 디바이스(730)는 플로피 디스크 디바이스, 하드 디스크 디바이스, 광 디스크 디바이스 또는 테이프 디바이스, 플래시 메모리 또는 다른 유사한 솔리드 스테이트 메모리 디바이스, 또는 저장 영역 네트워크 또는 다른 구성들의 디바이스들을 포함하는 디바이스들의 어레이일 수 있다. 추가 구현들에서, 컴퓨터 프로그램 제품은 정보 캐리어로 유형적으로 구현된다. 컴퓨터 프로그램 제품은 실행될 때, 앞서 설명한 것들과 같은 하나 이상의 방법들을 수행하는 명령들을 포함한다. 정보 캐리어는 메모리(720), 저장 디바이스(730), 또는 프로세서(710) 상의 메모리와 같은 컴퓨터 판독 가능 또는 기계 판독 가능 매체이다.
[0070] 고속 제어기(740)는 컴퓨팅 디바이스(700)에 대한 대역폭 집약적 동작들을 관리하는 한편, 저속 제어기(760)는 더 낮은 대역폭 집약적 동작들을 관리한다. 이러한 임무들의 할당은 단지 예시일 뿐이다. 일부 구현들에서, 고속 제어기(740)는 메모리(720)에, (예컨대, 그래픽 프로세서 또는 가속기를 통해) 디스플레이(780)에, 그리고 (도시되지 않은) 다양한 확장 카드들을 수용할 수 있는 고속 확장 포트들(750)에 결합된다. 일부 구현들에서, 저속 제어기(760)는 저장 디바이스(730) 및 저속 확장 포트(790)에 결합된다. 다양한 통신 포트들(예컨대, USB, 블루투스, 이더넷, 무선 이더넷)을 포함할 수 있는 저속 확장 포트(790)는 하나 이상의 입력/출력 디바이스들, 이를테면 키보드, 포인팅 디바이스, 스캐너, 또는 네트워킹 디바이스, 이를테면 스위치 또는 라우터에 예컨대, 네트워크 어댑터를 통해 결합될 수 있다.
[0071] 컴퓨팅 디바이스(700)는 도면에 도시된 바와 같이, 다수의 서로 다른 형태들로 구현될 수 있다. 예를 들어, 이는 표준 서버(700a)로서 또는 그러한 서버들(700a)의 그룹으로 여러 번, 랩톱 컴퓨터(700b)로서, 또는 랙(rack) 서버 시스템(700c)의 일부로서 구현될 수 있다.
[0072] 본 명세서에서 설명된 시스템들 및 기법들의 다양한 구현들은 디지털 전자 및/또는 광학 회로, 집적 회로, 특수 설계된 ASIC(application specific integrated circuit)들, 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 및/또는 이들의 조합들로 실현될 수 있다. 이러한 다양한 구현들은 저장 시스템, 적어도 하나의 입력 디바이스 및 적어도 하나의 출력 디바이스로부터 데이터 및 명령들을 수신하고 이들에 데이터 및 명령들을 송신하도록 결합된, 특수 또는 범용일 수 있는 적어도 하나의 프로그래밍 가능 프로세서를 포함하는 프로그래밍 가능 시스템 상에서 실행 가능하고 그리고/또는 해석 가능한 하나 이상의 컴퓨터 프로그램들에서의 구현을 포함할 수 있다.
[0073] (프로그램들, 소프트웨어, 소프트웨어 애플리케이션들 또는 코드로도 또한 알려진) 이러한 컴퓨터 프로그램들은 프로그램가능 프로세서에 대한 기계 명령들을 포함하며, 고레벨 절차적 그리고/또는 객체 지향 프로그래밍 언어로, 그리고/또는 어셈블리/기계 언어로 구현될 수 있다. 본 명세서에서 사용된 바와 같이, "기계 판독 가능 매체" 및 "컴퓨터 판독 가능 매체"라는 용어들은 기계 판독 가능 신호로서 기계 명령들을 수신하는 기계 판독 가능 매체를 포함하여, 프로그래밍 가능한 프로세서에 기계 명령들 및/또는 데이터를 제공하는 데 사용되는 임의의 컴퓨터 프로그램 제품, 비-일시적 컴퓨터 판독 가능 매체, 장치 및/또는 디바이스(예컨대, 자기 디스크들, 광 디스크들, 메모리, PLD(Programmable Logic Device)들)를 의미한다. "기계 판독 가능 신호"라는 용어는 기계 명령들 및/또는 데이터를 프로그래밍 가능 프로세서에 제공하는 데 사용되는 임의의 신호를 의미한다.
[0074] 본 명세서에서 설명한 프로세스들 및 논리 흐름들은 입력 데이터에 대해 동작하여 출력을 발생시킴으로써 기능들을 수행하도록 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그래밍 가능 프로세서들에 의해 수행될 수 있다. 프로세스들 및 논리 흐름들은 또한 특수 목적 로직 회로, 예컨대 FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)에 의해 수행될 수 있다. 컴퓨터 프로그램의 실행에 적합한 프로세서들은 예로서, 범용 및 특수 목적의 마이크로프로세서들 모두, 그리고 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다로부터 명령들 및 데이터를 수신할 것이다. 컴퓨터의 필수 엘리먼트들은 명령들을 수행하기 위한 프로세서 그리고 명령들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스들, 예컨대 자기, 마그네토 광 디스크들, 또는 광 디스크들을 포함하거나, 이들로부터 데이터를 수신하고 또는 이들에 데이터를 전송하도록, 또는 둘 다를 위해 동작 가능하게 결합될 것이다. 그러나 컴퓨터가 이러한 디바이스들을 가질 필요는 없다. 컴퓨터 프로그램 명령들 및 데이터를 저장하기에 적합한 컴퓨터 판독 가능 매체들은 예로서 반도체 메모리 디바이스들, 예컨대 EPROM, EEPROM, 및 플래시 메모리 디바이스들; 자기 디스크들, 예컨대 내부 하드 디스크들 또는 착탈식 디스크들; 마그네토 광 디스크들; 그리고 CD ROM 및 DVD-ROM 디스크들을 포함하는 모든 형태들의 비휘발성 메모리, 매체들 및 메모리 디바이스들을 포함한다. 프로세서 및 메모리는 특수 목적 로직 회로에 의해 보완되거나 특수 목적 로직 회로에 포함될 수 있다.
[0075] 사용자와의 상호 작용을 제공하기 위해, 본 개시내용의 하나 이상의 양상들은 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스, 예컨대 CRT(cathode ray tube), LCD(liquid crystal display) 모니터 또는 터치 스크린, 그리고 선택적으로는, 사용자가 컴퓨터에 입력을 제공할 수 있게 하는 키보드와 포인팅 디바이스, 예컨대 마우스 또는 트랙볼을 갖는 컴퓨터 상에 구현될 수 있다. 다른 종류들의 디바이스들이 사용자와의 상호 작용을 제공하는 데 역시 사용될 수 있는데; 예를 들어, 사용자에게 제공되는 피드백은 임의의 형태의 감각 피드백, 예컨대 시각적 피드백, 청각적 피드백 또는 촉각 피드백일 수 있고; 사용자로부터의 입력은 음향, 스피치 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 추가로, 컴퓨터는 사용자에 의해 사용되는 디바이스에 문서들을 전송하고 이러한 디바이스로부터 문서들을 수신함으로써; 예를 들어, 웹 브라우저로부터 수신된 요청들에 대한 응답으로 사용자의 클라이언트 디바이스 상의 웹 브라우저에 웹 페이지들을 전송함으로써 사용자와 상호 작용할 수 있다.
[0076] 다수의 구현들이 설명되었다. 그럼에도, 본 개시내용의 사상 및 범위를 벗어나지 않으면서 다양한 변형들이 이루어질 수 있다고 이해될 것이다. 이에 따라, 다른 구현들이 다음의 청구항들의 범위 내에 있다.

Claims (29)

  1. 전송자 디바이스(sender device)의 데이터 처리 하드웨어에서, 데이터의 입력 미디어 스트림, 비트 레이트 입력 및 레이턴시 입력을 수신하는 단계 ― 상기 비트 레이트 입력 및 상기 레이턴시 입력은 상기 데이터의 입력 미디어 스트림의 송신과 연관됨 ―;
    상기 데이터 처리 하드웨어에 의해, 상기 입력 미디어 스트림의 데이터를 패킷화하는 단계 ― 상기 패킷화된 데이터는 상기 비트 레이트 입력 및 상기 레이턴시 입력을 나타내는 헤더를 포함함 ―;
    상기 데이터 처리 하드웨어에 의해, 상기 패킷화된 데이터를 제어 계층의 재송신 버퍼 및 전송자 계층의 전송자 버퍼로 전달하는 단계 ― 상기 제어 계층 및 상기 전송자 계층은 상기 데이터 처리 하드웨어의 계층 구조의 계층들(hierarchical layers)에 대응함 ―;
    상기 데이터 처리 하드웨어에 의해, 상기 전송자 계층의 전송자 버퍼로부터 수신 노드로 상기 패킷화된 데이터를 송신하는 단계 ― 상기 패킷화된 데이터는 상기 수신 노드에 의해 수신될 때 상기 수신 노드로 하여금, 상기 헤더의 레이턴시 입력 및 비트 레이트 입력에 기초하여 수신 버퍼를 초기화하고, 상기 패킷화된 데이터의 수신 이후 지연의 양이 상기 레이턴시 입력을 충족하면, 상기 패킷화된 데이터를 목적지로 내보내게 함 ―;
    상기 데이터 처리 하드웨어의 제어 계층에서, 피드백 노드로부터 제어 패킷을 수신하는 단계 ― 상기 제어 패킷은 상기 패킷화된 데이터의 송신 내에서 누락 패킷을 식별함 ―;
    상기 데이터 처리 하드웨어에 의해, 상기 제어 계층의 재송신 버퍼가 상기 누락 패킷을 포함함을 확인하는 단계;
    상기 데이터 처리 하드웨어에 의해, 상기 전송자 계층의 전송자 버퍼가 상기 식별된 누락 패킷을 포함하는지 여부를 결정하는 단계; 및
    상기 전송자 버퍼가 상기 식별된 누락 패킷을 포함하는 경우, 상기 데이터 처리 하드웨어의 전송자 계층에 의해, 상기 식별된 누락 패킷을 상기 수신 노드로 재송신하는 단계를 포함하는,
    방법.
  2. 제1항에 있어서,
    상기 재송신 버퍼, 상기 전송자 버퍼 및 상기 수신 버퍼의 각각은 상기 비트 레이트 입력 및 상기 레이턴시 입력에 기초하여 동적으로 구조화되는,
    방법.
  3. 제1항에 있어서,
    상기 재송신 버퍼, 상기 전송자 버퍼, 또는 상기 수신 버퍼 중 적어도 하나는 순환 버퍼를 포함하는,
    방법.
  4. 제1항에 있어서,
    상기 전송자 버퍼가 상기 식별된 누락 패킷을 포함하지 않는 경우,
    상기 데이터 처리 하드웨어의 제어 계층에 의해, 상기 식별된 누락 패킷을 상기 전송자 버퍼에 기록하는 단계; 및
    상기 데이터 처리 하드웨어의 전송자 계층에 의해, 상기 전송자 버퍼로부터 상기 수신 노드로 상기 식별된 누락 패킷을 재송신하는 단계를 더 포함하는,
    방법.
  5. 제1항에 있어서,
    상기 패킷화된 데이터를 송신하는 단계는, 상기 패킷화된 데이터를 복수의 수신 노드들에 배포하는 단계를 포함하는,
    방법.
  6. 제1항에 있어서,
    상기 수신 노드는 추가로,
    상기 목적지의 최종 클라이언트로부터 상기 패킷화된 데이터에 대한 질의를 수신하고; 그리고
    각각의 노드로부터의 질의에 기초하여 상기 최종 클라이언트로 상기 패킷화된 데이터를 내보내도록 구성되는,
    방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 전송자 디바이스의 데이터 처리 하드웨어의 상기 제어 계층 및 상기 전송자 계층은 로컬 브로드캐스터에 위치되고,
    상기 수신 노드와 상기 피드백 노드는 상기 로컬 브로드캐스터로부터 떨어진 원격 시스템에 위치되는,
    방법.
  8. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 제어 계층은,
    상기 재송신 버퍼를 관리하고;
    상기 제어 패킷을 수신하고;
    상기 제어 패킷의 식별된 누락 패킷을 상기 재송신 버퍼의 패킷들과 비교하고;
    상기 식별된 누락 패킷을 상기 전송자 버퍼에 기록하고; 그리고
    패킷 확인 응답들, 패킷 전송 타임스탬프들 및 패킷 재송신 타임스탬프들을 포함하는 패킷 정보를 저장하는 동작들을 수행하도록 구성되는,
    방법.
  9. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 데이터 처리 하드웨어의 전송자 계층에 의해, 왕복 시간(RTT: round trip time) 핑(ping) 패킷을 상기 수신 노드에 전송하는 단계;
    상기 데이터 처리 하드웨어의 제어 계층에서, 상기 전송된 RTT 핑 패킷을 수신하는 단계; 및
    상기 데이터 처리 하드웨어의 제어 계층에 의해, 상기 수신된 RTT 핑 패킷에 기초하여 왕복 시간을 생성하는 단계를 더 포함하는,
    방법.
  10. 제9항에 있어서,
    상기 식별된 누락 패킷을 상기 수신 노드로 재송신하는 단계는 상기 제어 계층에 의해, 상기 수신 노드로의 상기 식별된 누락 패킷의 재송신을 상기 왕복 시간만큼 지연시키는 단계를 더 포함하는,
    방법.
  11. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 제어 패킷은 각각의 수신된 패킷 및 각각의 누락 패킷을 나타내는 비트맵 구조를 포함하고,
    상기 비트맵 구조는 상기 레이턴시 입력에 대응하는 지연 윈도우 내에서 가장 오래된 누락 패킷으로부터 가장 최근 누락 패킷으로 조직화되는,
    방법.
  12. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 전송자 계층은 상기 패킷화된 데이터를 상기 입력 비트 레이트와 동일한 전송 레이트로 전송하도록 구성되는,
    방법.
  13. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 전송자 계층은 상기 패킷화된 데이터를 상기 전송자 버퍼에 대한 용량 계수에 기초하여 상기 입력 비트 레이트의 약 1.5 내지 2.0배의 전송 레이트로 전송하도록 구성되는,
    방법.
  14. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 패킷화된 데이터를 전달하는 단계는 순방향 오류 정정(forward error correction)을 위해 상기 수신 노드에 전송할 패리티 패킷들을 생성하는 단계를 더 포함하는,
    방법.
  15. 제14항에 있어서,
    상기 전송자 계층의 전송자 버퍼로부터 상기 수신 노드로 상기 패킷화된 데이터를 송신하는 단계는 순방향 오류 정정을 위해 상기 패리티 패킷들을 송신하는 단계를 더 포함하는,
    방법.
  16. 수신 노드의 데이터 처리 하드웨어에서, 패킷화된 데이터를 상기 데이터 처리 하드웨어의 수신 버퍼에서 수신하는 단계 ― 상기 패킷화된 데이터는 미디어 스트림에 대응하고, 상기 미디어 스트림과 연관된 비트 레이트 입력 및 레이턴시 입력을 나타내는 헤더를 포함함 ―;
    상기 데이터 처리 하드웨어에 의해, 수신자 디바이스의 피드백 노드에서 제어 패킷을 생성하는 단계 ― 상기 제어 패킷은 상기 수신된 패킷화된 데이터에 기초하고 상기 수신된 패킷화된 데이터로부터 누락 패킷을 식별함 ―;
    상기 데이터 처리 하드웨어에 의해, 상기 피드백 노드로부터 전송자 디바이스의 제어 계층으로 상기 제어 패킷을 전달하는 단계 ― 상기 제어 계층은 재송신 버퍼를 포함하고, 상기 재송신 버퍼가 상기 제어 패킷에 의해 식별된 누락 패킷을 포함함을 확인하고, 상기 전송자 디바이스의 전송자 계층의 전송자 버퍼가 상기 식별된 누락 패킷을 포함하는지 여부를 결정하고, 그리고 상기 전송자 버퍼가 상기 식별된 누락 패킷을 포함하는 경우, 상기 식별된 누락 패킷을 재송신하도록 상기 전송자 계층에 지시하는 동작들을 수행하도록 구성됨 ―;
    상기 데이터 처리 하드웨어에서, 재송신된 식별된 누락 패킷을 상기 수신 버퍼에서 수신하는 단계; 및
    상기 패킷화된 데이터의 수신 이후 지연의 양이 상기 레이턴시 입력을 충족하는 경우, 상기 데이터 처리 하드웨어에 의해, 상기 패킷화된 데이터를 목적지로 내보내는 단계를 포함하는,
    방법.
  17. 제16항에 있어서,
    상기 재송신 버퍼, 상기 전송자 버퍼 및 상기 수신 버퍼의 각각은 상기 비트 레이트 입력 및 상기 레이턴시 입력에 기초하여 동적으로 구조화되는,
    방법.
  18. 제16항에 있어서,
    상기 재송신 버퍼, 상기 전송자 버퍼, 또는 상기 수신 버퍼 중 적어도 하나는 순환 버퍼를 포함하는,
    방법.
  19. 제16항에 있어서,
    상기 제어 계층의 동작들은, 상기 전송자 버퍼가 상기 식별된 누락 패킷을 포함하지 않는 경우,
    상기 식별된 누락 패킷을 상기 전송자 버퍼에 기록하고; 그리고
    상기 전송자 버퍼로부터 상기 수신 노드로 상기 식별된 누락 패킷의 재송신을 지시하는 동작들을 더 포함하는,
    방법.
  20. 제16항에 있어서,
    상기 패킷화된 데이터를 수신하는 단계는 상기 패킷화된 데이터를 복수의 수신 노드들에서 수신하는 단계를 더 포함하는,
    방법.
  21. 제16항에 있어서,
    상기 수신 노드의 데이터 처리 하드웨어에서, 상기 목적지의 최종 클라이언트로부터 상기 패킷화된 데이터에 대한 질의를 수신하는 단계; 및
    상기 수신 노드의 데이터 처리 하드웨어에 의해, 각각의 노드로부터의 질의에 기초하여 상기 최종 클라이언트로 상기 패킷화된 데이터를 내보내는 단계를 더 포함하는,
    방법.
  22. 제16항 내지 제21항 중 어느 한 항에 있어서,
    상기 전송자 디바이스의 제어 계층 및 전송자 계층은 로컬 브로드캐스터에 위치되고,
    상기 수신 노드 및 상기 피드백 노드는 상기 로컬 브로드캐스터로부터 떨어진 원격 시스템에 위치되며 수신 디바이스에 대응하는,
    방법.
  23. 제16항 내지 제21항 중 어느 한 항에 있어서,
    상기 제어 계층의 동작들은,
    상기 재송신 버퍼를 관리하고;
    상기 제어 패킷의 식별된 누락 패킷을 상기 재송신 버퍼의 패킷들과 비교하고;
    상기 식별된 누락 패킷을 상기 전송자 버퍼에 기록하고; 그리고
    패킷 확인 응답들, 패킷 전송 타임스탬프들 및 패킷 재송신 타임스탬프들을 포함하는 패킷 정보를 저장하는 동작들을 더 포함하는,
    방법.
  24. 제16항 내지 제21항 중 어느 한 항에 있어서,
    상기 데이터 처리 하드웨어에서, 상기 수신 노드에서 상기 전송자 계층으로부터 왕복 시간(RTT) 핑 패킷을 수신하는 단계 ― 상기 RTT 핑 패킷은 패킷의 왕복 시간을 결정하도록 구성됨 ―; 및
    상기 데이터 처리 하드웨어에 의해, 상기 수신 노드로부터 상기 제어 계층으로 상기 RTT 핑 패킷을 전송하는 단계를 더 포함하는,
    방법.
  25. 제24항에 있어서,
    상기 제어 계층의 동작들은 상기 수신 노드로의 상기 식별된 누락 패킷의 재송신을 상기 왕복 시간만큼 지연시키는 동작을 더 포함하는,
    방법.
  26. 제16항 내지 제21항 중 어느 한 항에 있어서,
    상기 제어 패킷은 각각의 수신된 패킷 및 각각의 누락 패킷을 나타내는 비트맵 구조를 포함하고,
    상기 비트맵 구조는 상기 레이턴시 입력에 대응하는 지연 윈도우 내에서 가장 오래된 누락 패킷으로부터 가장 최근 누락 패킷으로 조직화되는,
    방법.
  27. 제16항 내지 제21항 중 어느 한 항에 있어서,
    상기 전송자 계층은 상기 패킷화된 데이터를 상기 입력 비트 레이트와 동일한 전송 레이트로 전송하도록 구성되는,
    방법.
  28. 제16항 내지 제21항 중 어느 한 항에 있어서,
    상기 전송자 계층은 상기 패킷화된 데이터를 상기 전송자 버퍼의 용량 계수에 기초하여 상기 입력 비트 레이트의 약 1.5 내지 2.0배의 전송 레이트로 전송하도록 구성되는,
    방법.
  29. 제16항 내지 제21항 중 어느 한 항에 있어서,
    상기 패킷화된 데이터를 수신하는 단계는 순방향 오류 정정을 위해 패리티 패킷들을 수신하는 단계를 더 포함하는,
    방법.
KR1020207035495A 2018-10-02 2019-10-02 라이브 스트림 커넥터 KR102562258B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/149,835 2018-10-02
US16/149,835 US10686861B2 (en) 2018-10-02 2018-10-02 Live stream connector
PCT/US2019/054237 WO2020072603A1 (en) 2018-10-02 2019-10-02 Live stream connector

Publications (2)

Publication Number Publication Date
KR20210006983A true KR20210006983A (ko) 2021-01-19
KR102562258B1 KR102562258B1 (ko) 2023-07-31

Family

ID=68296764

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207035495A KR102562258B1 (ko) 2018-10-02 2019-10-02 라이브 스트림 커넥터

Country Status (5)

Country Link
US (1) US10686861B2 (ko)
EP (1) EP3861697B1 (ko)
KR (1) KR102562258B1 (ko)
CN (1) CN112313918B (ko)
WO (1) WO2020072603A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109792405B (zh) * 2016-08-02 2022-05-24 瑞典爱立信有限公司 用于传输节点中共享缓冲器分配的方法和设备
US11582638B2 (en) * 2019-01-03 2023-02-14 Qualcomm Incorporated Selective relay of data packets
WO2023003663A1 (en) * 2021-07-21 2023-01-26 Qualcomm Incorporated Enhanced broadcast services (ebcs) downlink broadcasts
US11863317B2 (en) * 2021-08-25 2024-01-02 BitRipple, Inc. Methods for reliable low latency data delivery using erasure codes and feedback

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010093875A (ko) * 2000-04-01 2001-10-31 이승룡 멀티미디어 스트리밍 환경에서 클라이언트 측에서 통합된푸시/풀 버퍼 관리 방법
US20020120942A1 (en) * 2001-02-27 2002-08-29 Pace Micro Technology Plc. Apparatus for the decoding of video data in first and second formats
US20060291468A1 (en) * 2005-06-22 2006-12-28 Rajendra Bopardikar Selective re-transmission of lost multi-media data packets
WO2018109500A1 (en) * 2016-12-16 2018-06-21 In Aria! Ltd Low delay, error resilient video transport protocol over public ip transit

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6850488B1 (en) 2000-04-14 2005-02-01 Sun Microsystems, Inc. Method and apparatus for facilitating efficient flow control for multicast transmissions
US7032153B1 (en) * 2000-11-28 2006-04-18 Nortel Networks Limited Dynamic automatic retransmission request in wireless access networks
US7218610B2 (en) * 2001-09-27 2007-05-15 Eg Technology, Inc. Communication system and techniques for transmission from source to destination
KR100592412B1 (ko) * 2004-01-05 2006-06-22 삼성전자주식회사 실시간 트래픽 특성을 고려하여 큐를 관리하는 액세스네트워크 장치 및 그 큐 관리 방법
US8238287B1 (en) * 2004-10-06 2012-08-07 Marvell International Ltd. Method and apparatus for providing quality of service (QoS) in a wireless local area network
EP2005674B1 (en) * 2006-04-12 2016-09-28 TQ Delta, LLC Packet retransmission and memory sharing
US7787367B2 (en) * 2006-05-23 2010-08-31 International Business Machines Corporation Method and a system for flow control in a communication network
KR20120123144A (ko) * 2006-09-26 2012-11-07 리베우 리미티드 원격 송신 시스템
US20100067393A1 (en) 2007-01-25 2010-03-18 Toshio Sakimura Packet round trip time measuring method
WO2009085046A1 (en) 2007-12-28 2009-07-09 Agere Systems Inc. Qos wireless networking for home entertainment
US8223641B2 (en) * 2008-07-28 2012-07-17 Cellco Partnership Dynamic setting of optimal buffer sizes in IP networks
US9065980B2 (en) 2009-10-02 2015-06-23 Telefonaktiebolaget L M Ericsson (Publ) Method for retransmission using checksums for identifying lost data packets
CN102118653B (zh) * 2009-12-31 2012-12-26 华为技术有限公司 保障网络电视直播业务的业务服务质量的方法和设备
GB2478277B (en) * 2010-02-25 2012-07-25 Skype Ltd Controlling packet transmission
EP2375614B1 (en) * 2010-04-09 2014-05-07 Alcatel Lucent Method for broadcasting multimedia content
US8750293B2 (en) * 2011-05-06 2014-06-10 Google Inc. Apparatus and method for rendering video with retransmission delay
US9699519B2 (en) 2012-10-17 2017-07-04 Netflix, Inc. Partitioning streaming media files on multiple content distribution networks
GB2521441B (en) * 2013-12-20 2016-04-20 Imagination Tech Ltd Packet loss mitigation
GB2524958A (en) * 2014-04-03 2015-10-14 Orbital Multi Media Holdings Corp Data flow control method
KR102198701B1 (ko) * 2014-07-03 2021-01-05 삼성전자주식회사 멀티미디어 시스템에서 정보를 송수신하는 방법 및 장치
US9769043B2 (en) * 2014-09-22 2017-09-19 Avaya Inc. Adaptive management of a media buffer
US20180063011A1 (en) * 2016-08-24 2018-03-01 Microsoft Technology Licensing, Llc Media Buffering

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010093875A (ko) * 2000-04-01 2001-10-31 이승룡 멀티미디어 스트리밍 환경에서 클라이언트 측에서 통합된푸시/풀 버퍼 관리 방법
US20020120942A1 (en) * 2001-02-27 2002-08-29 Pace Micro Technology Plc. Apparatus for the decoding of video data in first and second formats
US20060291468A1 (en) * 2005-06-22 2006-12-28 Rajendra Bopardikar Selective re-transmission of lost multi-media data packets
WO2018109500A1 (en) * 2016-12-16 2018-06-21 In Aria! Ltd Low delay, error resilient video transport protocol over public ip transit

Also Published As

Publication number Publication date
CN112313918B (zh) 2023-09-05
US20200106824A1 (en) 2020-04-02
KR102562258B1 (ko) 2023-07-31
WO2020072603A1 (en) 2020-04-09
EP3861697B1 (en) 2023-12-27
EP3861697A1 (en) 2021-08-11
US10686861B2 (en) 2020-06-16
CN112313918A (zh) 2021-02-02

Similar Documents

Publication Publication Date Title
KR102562258B1 (ko) 라이브 스트림 커넥터
JP6284549B2 (ja) マルチパスストリーミングのためのfecベースの信頼性のある転送制御プロトコル
Rizzo et al. A Reliable Multicast data Distribution Protocol based on software FEC techniques
US10812386B2 (en) Bulk data transport in a network
CN106416179A (zh) 实现扩展传输控制功能的传输加速器
US7917578B1 (en) Managing state information in a computing environment
CN102239658B (zh) 按需差错控制
Afzal et al. A holistic survey of wireless multipath video streaming
US9350484B2 (en) Transport accelerator implementing selective utilization of redundant encoded content data functionality
US7506036B1 (en) Proxy device and method of operation for a windowing internet protocol data network
US7561523B1 (en) Method and apparatus for flow control in a reliable multicast communication system
Kim et al. An efficient delay-constrained ARQ scheme for MMT packet-based real-time video streaming over IP networks
Halvorsen Improving I/O Performance of multimedia servers
US20190222872A1 (en) Playout buffering in a live content distribution system
US6981194B1 (en) Method and apparatus for encoding error correction data
US11863317B2 (en) Methods for reliable low latency data delivery using erasure codes and feedback
Natarajan Leveraging Innovative Transport Layer Services for Improved Application Performance
WO2024022243A1 (zh) 数据传输方法、网络设备、计算机设备及存储介质
Aggarwal et al. Enabling immersive experiences in challenging network conditions
JP2020127181A (ja) キャッシュ装置、データ配信システム、再送方法、及びプログラム
Kwon et al. Reliable overlay multicast with loosely coupled TCP connections

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant