KR20130103685A - 혼합된 직렬 및 병렬 스트림 채널 본딩 아키텍쳐 - Google Patents

혼합된 직렬 및 병렬 스트림 채널 본딩 아키텍쳐 Download PDF

Info

Publication number
KR20130103685A
KR20130103685A KR1020130025796A KR20130025796A KR20130103685A KR 20130103685 A KR20130103685 A KR 20130103685A KR 1020130025796 A KR1020130025796 A KR 1020130025796A KR 20130025796 A KR20130025796 A KR 20130025796A KR 20130103685 A KR20130103685 A KR 20130103685A
Authority
KR
South Korea
Prior art keywords
channel
data
communication
packets
program
Prior art date
Application number
KR1020130025796A
Other languages
English (en)
Other versions
KR101409924B1 (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 KR20130103685A publication Critical patent/KR20130103685A/ko
Application granted granted Critical
Publication of KR101409924B1 publication Critical patent/KR101409924B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0896Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L5/00Arrangements affording multiple use of the transmission path
    • H04L5/003Arrangements for allocating sub-channels of the transmission path
    • H04L5/0044Arrangements for allocating sub-channels of the transmission path allocation of payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L25/00Baseband systems
    • H04L25/02Details ; arrangements for supplying electrical power along data transmission lines
    • H04L25/14Channel dividing arrangements, i.e. in which a single bit stream is divided between several baseband channels and reassembled at the receiver
    • 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/321Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5603Access techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Power Engineering (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

상이한 데이터 통신 아키텍쳐들이 소비자들에 오디오 및 비디오 컨텐츠를 포함하는 다양한 컨텐츠를 전달한다. 아키텍쳐들은 임의의 단일 통신 채널이 수송하는 것보다 더 많은 대역폭을 전달하기 위해서 채널 본딩을 채용한다. 일부 구현예들에서, 채널 본딩은 혼합된 직렬 및 병렬 스트림들을 가진 채널들을 본딩하는데 사용될 수 있다.

Description

혼합된 직렬 및 병렬 스트림 채널 본딩 아키텍쳐 {MIXED SERIAL AND PARALLEL STREAM CHANNEL BONDING ARCHITECTURE}
관련 출원들에 대한 상호 참조
본 출원은 "Channel Bonding-Audio-Visual Broadcast" 명칭의 2012년 6월 25일에 출원된 미국 가출원 번호 61/663,878 및 "Method and Apparatus for Using Multiple Physical Channels for Audio-Video Broadcasting and Multicasting" 명칭의 2012년 3월 11일에 출원된 가출원 번호 61/609,339:의 이익을 주장하고 그리고 참조로서 통합한다.
기술 분야
본 발명은 오디오 및 비디오 통신 기술들에 관한 것이다. 특별히, 본 발명은 혼합된 직렬 및 병렬 스트림(stream)들을 갖는 채널들에 대한 채널 본딩(bonding)에 관한 것이다.
광대한 전용(private) 및 공용(public) 섹터 요구들에 의해 유도된 전자 기기들 및 통신 기술들에서의 빠른 성장들은 홈(home)들에서든, 사업장(business)들에서든 또는 정부(government)에서든 어디든 사회의 모든 부분에서 스마트 폰(smart phone), 퍼스널 컴퓨터(personal computer)들, 인터넷 준비된 텔레비전들 및 미디어 플레이어들 및 많은 다른 디바이스들의 광범위한 채용으로 귀결된다. 이런 디바이스들은 상당한 양의 오디오 및 비디오 컨텐츠를 소비할 잠재성(potential)을 가진다. 동시에, 데이터 네트워크들은 많은 상이한 방식들로 디바이스들에 컨텐츠 전달을 시도하도록 발전되어 왔다. 추가로, 디바이스들로의 컨텐츠 전달에 있어서의 개선들은 디바이스들 뿐만 아니라 디바이스들에 정보를 공급하는 컨텐츠 전달 서비스들에 대한 요구를 계속 유도하는데 도움이 될 것이다.
본 발명은 혼합된 직렬 및 병렬 스트림(stream)들을 갖는 채널들에 대한 채널 본딩(bonding)에 관한 것이다.
일 측면에 따라, 시스템은 입력 인터페이스;
개별 통신 채널들에 대한 출력 인터페이스들; 및
상기 입력 인터페이스 및 상기 출력 인터페이스들과 통신하는 로직(logic);을 포함하되, 상기 로직은
상기 통신 채널들 중 어느 것을 본딩된 채널 그룹(bonded channel group)으로 함께 채용(employ)할지를 결정하고,
상기 입력 인터페이스로부터 소스 데이터(source data)를 획득하고;
상기 출력 인터페이스들에 걸쳐서 채널 본딩 정보를 분배하고; 및
상기 본딩된 채널 그룹내의 상기 통신 채널들에 걸쳐서 상기 소스 데이터를 분배하도록 구성되고, 상기 출력 인터페이스들 중에 제 1 출력 인터페이스는 직렬 인터페이스(serial interface)이고 상기 출력 인터페이스들 중에 제 2 출력 인터페이스는 병렬 인터페이스(parallel interface)인 것을 포함한다.
바람직하게는, 상기 병렬 인터페이스는 동시에(synchronously) 클럭되는 복수개의 통신 라인들을 가진다.
바람직하게는, 상기 로직은 상기 소스 데이터를 분석하고 그리고 상기 소스 데이터를 통신 유니트(communication unit)들에 할당한다.
바람직하게는, 상기 로직은 상기 통신 유니트에 할당된 소스 데이터에 기반하여 상기 병렬 인터페이스로 통신 유니트를 분배하도록 구성된다.
바람직하게는, 상기 통신 유니트는 상기 복수개의 병렬 통신 라인들의 각각에 걸쳐서 분배된다.
바람직하게는, 상기 로직은 상기 본딩된 채널 그룹에 걸쳐서 라운드-로빈 방식(round-robin manner)으로 데이터를 분배하도록 구성된다.
바람직하게는, 상기 채널 본딩 정보는 마커 패킷(marker packet)들을 포함한다.
바람직하게는, 상기 소스 데이터는 비디오 스트림 패킷들을 포함한다.
일 측면에 따라, 수신기 시스템은
개별 통신 채널들에 연결된 입력 인터페이스들로서, 상기 입력 인터페이스들 중의 제 1 입력 인터페이스는 직렬 인터페이스이고 그리고 상기 입력 인터페이스들 중의 제 2 입력 인터페이스는 병렬 인터페이스인, 상기 입력 인터페이스들;
출력 통신 채널에 연결된 출력 인터페이스; 및
상기 입력 인터페이스들 및 상기 출력 인터페이스와 통신하는 로직(logic);을 포함하되, 상기 로직은
통신 채널들 중 어느 것들이 본딩된 채널 그룹(bonded channel group)으로 함께 채용된지를 결정하고;
상기 개별 통신 채널들부터 데이터를 획득하고;
상기 입력 인터페이스들로부터 수신된 채널 본딩 정보를 식별하고; 및
상기 채널 본딩 정보에 기반하여 미리 정의된 순서로 상기 통신 채널들로부터 상기 데이터를 배열하는 것을 포함한다.
바람직하게는, 상기 병렬 인터페이스는 동시에(synchronously) 클럭되는 복수개의 통신 라인들을 가진다.
바람직하게는, 데이터의 청크(chunk)는 상기 복수개의 병렬 통신 라인들의 각각에 걸쳐서 분배된다.
바람직하게는, 상기 소스 데이터는 비디오 스트림 패킷들을 포함한다.
바람직하게는, 상기 시스템은 복수개의 단일 밴드 튜너들 및 와이드 밴드 튜너를 가지는 셋탑 박스를 포함한다.
바람직하게는, 상기 복수개의 단일 밴드 튜너들은 복조되고 그리고 상기 로직에 제공되는 개별 직렬 데이터 스트림들을 생성한다.
바람직하게는, 상기 와이드 밴드 튜너는 복조되고 그리고 상기 병렬 인터페이스내로 다중화되는 와이드밴드 데이터 스트림을 생성하고, 상기 로직은 상기 와이드 밴드 데이터를 수신하기 위해서 상기 병렬 인터페이스와 통신상태에 있다.
일 측면에 따라, 방법은
통계적 다중화기(statistical multiplexer)에 의해 생성된 패킷 스트림을 획득하는 단계;
상기 패킷 스트림을 통신 유니트들로 분할하는 단계;
일련의 가용 가능한 통신 채널들 중에서 본딩된 채널 그룹의 통신 채널들을 식별하는 단계로서, 상기 본딩된 채널 그룹중의 제 1 통신 채널은 직렬 통신 채널(serial communication channel)이고 그리고 상기 본딩된 채널 그룹중에 제2 통신 채널은 병렬 통신 채널(parallel communication channel)인, 상기 통신 채널들을 식별하는 단계;
상기 본딩된 채널 그룹에 걸쳐서 채널 본딩 정보를 분배하는 단계;
상기 본딩된 채널 그룹에 걸쳐서 상기 통신 유니트들을 분배하는 단계;를 포함한다.
바람직하게는, 상기 병렬 인터페이스는 동시에(synchronously) 클럭되는 복수개의 통신 라인들을 가진다.
바람직하게는, 상기 로직은 상기 소스 데이터를 분석하고 그리고 상기 소스 데이터를 상기 통신 유니트들에 할당한다.
바람직하게는, 상기 로직은 상기 통신 유니트에 할당된 소스 데이터에 기반하여 상기 병렬 인터페이스로 상기 통신 유니트를 분배하도록 구성된다.
바람직하게는, 상기 통신 유니트는 상기 복수개의 병렬 통신 라인들의 각각에 걸쳐서 분배된다.
본 발명에 따른 혼합된 직렬 및 병렬 스트림 채널 본딩 아키텍쳐에 의하면, 매우 상이한 토폴로지들을 가지는 본딩 채널들을 용이하게 할 수 있는 효과가 있다. 직렬 및 병렬 채널들 본딩을 통하여 상이한 토폴로지들을 가지는 통신 채널들을 단일 논리 채널(logical channel)로 다중화할 수 있는 효과가 있다.
본 새로운 발명은 아래의 도면들 및 설명을 참고로 하여 더 잘 이해될 수 있다. 도면들에서, 같은 참조 번호들은 상이한 도면들에서 대응하는 부분들을 지정한다.
도 1 은 채널 본딩(channel bonding)을 채용하는 컨텐츠 전달 아키텍쳐의 예시를 보여준다.
도 2 는 채널 본딩을 이용하는 컨텐츠 전달에 대한 예시적인 로직(logic)을 도시한다.
도 3 은 채널 본딩(channel bonding)을 채용하는 컨텐츠 전달 아키텍쳐의 예시를 보여준다.
도 4 는 채널 본딩을 이용하는 컨텐츠 전달에 대한 예시적인 로직(logic)을 도시한다.
도 5 는 타이밍 예제(timing example)를 도시한다.
도 6 은 채널 본딩(channel bonding)을 채용하는 컨텐츠 전달 아키텍쳐의 예시를 보여준다.
도 7 는 채널 본딩을 이용하는 컨텐츠 전달에 대한 예시적인 로직(logic)을 도시한다.
도 8 은 분배기(distributor)의 예시적인 구현을 도시한다.
도 9 는 컬레이터(collator)의 예시적인 구현을 도시한다.
도 10 은 전송 계층(transport layer)아래의 예를 들어, 데이터-링크 계층에서 채널 본딩을 수행하는 컨텐츠 전달 아키텍쳐의 예제를 도시한다.
도 11 은 데이터-링크 계층에서의 채널 본딩의 예제를 도시한다.
도 12 는 데이터-링크 계층에서의 채널 본딩의 예제를 도시한다.
도 13 은 데이터-링크 계층이 데이터-링크 계층에서 채널 본딩을 구현할 수 있는 로직의 예제를 도시한다.
도 14 는 데이터-링크 계층이 데이터-링크 계층에서 채널 디본딩(debonding)을 구현할 수 있는 로직의 예제를 도시한다.
도 15 는 도 6의 컨텐츠 전달 아키텍쳐의 예시적인 변형을 도시한다.
도 16 는 도 7의 컨텐츠 전달 아키텍쳐의 예시적인 변형을 도시한다.
도 17 은 본딩된 직렬 및 병렬 채널들을 가지는 셋탑 박스(set top box)의 개략도이다.
도 18 은 직렬 및 병렬 채널들 본딩을 위한 채널 본딩 시스템의 개략도이다.
도 1 은 예시적인 컨텐츠 전달 아키텍쳐(100)를 도시한다. 아키텍쳐(100)은 데이터(예를 들어, 오디오 스트림들 및 비디오 프로그램들)를 소스(source)(102) 로부터 목적지(destination)(104)까지 전달한다. 소스(102)는 위성, 케이블 또는 다른 매체 제공자들을 포함할 수 있고, 예를 들어 소비자들에게 컨텐츠를 전달하는 헤드-엔드 분배 센터(head-end distribution center)를 나타낼 수 있다. 소스(102)는 데이터가 예를 들어 오디오/비주얼 프로그래밍(audio/visual programming)일 때 MPEG2(Motion Picture Expert Group 2) 전송 스트림(TS : Transport Stream) 패킷들(128)의 형태로 데이터를 수신할 수 있다. 목적지(104)는 예를 들어 셋탑 박스(set top box)가 소스(102)로부터 수신되고 그리고 소스에 의해 발송된 데이터를 처리하는 홈(home), 사업장(business), 또는 다른 위치일 수 있다.
소스(102)는 통계적 다중화기(statistical multiplexer)(106) 및 분배기(distributor)(108)를 포함할 수 있다. 통계적 다중화기(106)는 소스 전송 스트림(STS : source transport stream)(110)에서 아이들 시간(idle time)를 감소시킴으로써 데이터 송신(data transmission)을 효율적으로 하는데 도움을 준다. 그것에 관련해서, 통계적 다중화기(106)는 전송 스트림(transport stream)(110)을 형성하기 위해서 다수의 입력 소스들로부터의 데이터를 함께 인터리브(interleave)할 수 있다. 예를 들어, 통계적 다중화기(106)는 임의의 원하는 품질 레벨에서, 목적지(104)로 변화하는 비트 레이트(bit rate)들에서 폭넓게 변화하는 컨텐츠 타입들을 전하기(convey) 위해서 요구되는 대역폭을 제공하기 위해서 높은 비트 레이트 프로그램 채널들간에 추가적인 STS(110)를 및 낮은 비트 레이트 프로그램 채널들간에서 상대적으로 낮은 대역폭을 배정할 수 있다. 따라서, 통계적 다중화기(106)는 입력 소스들의 임의의 수 중에서 STS(110)의 대역폭을 매우 융통성있게(flexibly) 분할한다.
도 1에서는 몇 개의 입력들: 소스 1, 소스 2, 소스 n를 나타낸다. 오디오, 비디오 또는 다른 타입의 데이터(예를 들어, 웹 페이지들 또는 파일 전송 데이터)중에서 임의 타입을 수송하는 이런 입력 소스들의 임의의 수가 있을 수 있다. 소스 데이터 구체적인 예제들은 디지털 텔레비전(예를 들어, 개별 텔레비전 프로그램들 또는 스테이션(station)들)을 위한 MPEG 또는 MPEG2 TS 패킷들 및 4K x 2K HVEC(High Efficiency Video Coding) 비디오(예를 들어, H.265 / MPEG-H)데이터를 포함할 수 있으나, 입력 소스들은 입력 데이터의 임의 타입의 입력 데이터를 제공할 수 있다. 소스 데이터(예를 들어, MPEG 2 패킷들)는 패킷들에서의 데이터들이 특정 프로그램(예를 들어, 텔레비전 스테이션(television station))에 속하는 것을 표시하는 프로그램 식별자(PID : program identifier)들을 포함할 수 있다.
STS(110)는 소스(102) 및 목적지(104)사이의 임의의 하나 또는 그 이상의 통신 링크들의 전송 성능들을 초과하는 데이터 레이트(data rate)를 가질 수 있다.예를 들어, STS(110) 데이터 레이트는 소스(102)에 빠져나가는 특정 케이블 통신 채널에 의해 지원되는 데이터 레이트를 초과할 수 있다. 목적지(104)로 STS(110)의 집합 대역폭(aggregate bandwidth)을 전달하는데 도움을 주기 위해서, 소스(102) 는 복수의 개별 통신 채널들의 본딩된 채널 그룹(112)를 공급하는 분배기(108) 및 변조기들(130)를 포함한다. 다시 말해, 소스(102)는 STS(110)의 집합 대역폭을 본딩된 채널 그룹(112)를 형성하는 다수의 아웃고잉(outgoing) 통신 채널들에 걸쳐서 분배하고 그리고 함께 STS(110)에서의 데이터를 목적지(104)로 통신하기 위한 대역폭을 제공한다.
분배기(108)는 하드웨어로, 소프트웨어로 또는 둘 다로 구현될 수 있다. 분배기(108)는 STS(110)에서의 어느 데이터를 어느 통신 채널로 발송할 것인지를 결정할 수 있다. 이하에서 더 상세하게 설명될 것처럼, 분배기(108)는 STS(110)를 하나 또는 그 이상의 패킷들의 청크(chunk)들로 분할할 수 있다. 청크들은 청크를 수송할 통신 채널들, 해당 청크에서의 프로그램 컨텐츠에 기반하여 또는 분배기(108)에서 구현되는 임의의 다른 청크 결정 요인(factor)들에 기반하여 시간에 대하여 사이즈(size)에서 변할 수 있다. 분배기(108)는 채널, 결정된 분배기(108)가 목적지(104)로 특정 청크를 전할,에 대한 변조기로 임의의 특정 청크를 포워딩 할 수 있다.
이것에 관련해서, 본딩된 채널 그룹(112)내의 다수의 개별 통신 채널들은 STS(110)의 집합 대역폭보다 작거나 같거나 또는 초과할 수 있는 대역폭을 총량(aggregate amount)를 제공한다. 단지 일 예로서, 소스(102)로부터 목적지(104)로 운용하는 세 개의 30Mbs 물리적 케이블 채널들이, 합하여 90Mbps까지 처리하는, 있을 수 있다. 본딩된 채널 그룹(112)에서 통신 채널들은 다이얼-호출(예를 들어, 56kbps) 채널들, ADSL 또는 ADSL2 채널들, 동축 케이블 채널들, 802.11 a/b/g/n 채널들 또는 60GHz 와이기그(WiGig) 채널들과 같은 무선 채널들, 케이블 TV 채널들, WiMAX / IEEE 802.16 채널들, 광 파이버(Fiber optic), 10 Base T, 100 Base T, 1000 Base T, 전력선들 또는 다른 타입들의 통신 채널들을 포함하는 임의 타입의 통신 채널일 수 있다.
본딩된 채널 그룹(112)는 본딩된 채널 그룹(112)내의 통신 채널들을 위한 적절한 임의 수의 전송 메커니즘(114)상에서 목적지(104)로 이동한다. 전송 메커니즘(144)들은 물리적 케이블링(예를 들어, 광 파이버 또는 케이블 TV 케이블링), 무선 연결들(예를 들어, 위성, 마이크로웨이브 연결들, 802.11 a/b/g/n 연결들), 또는 이런 연결들의 임의 조합을 포함할 수 있다.
목적지(104)에서, 본딩된 채널 그룹(112)는 개별 채널 복조기들(116)로 입력된다. 채널 복조기들(116)은 각 통신 채널로 소스(102)에 의해 발송된 데이터를 복원한다. 컬레이터(collator)(118)는 복조기들(116)에 의해 복원된 데이터를 수집하고, 그리고 목적지 전송 스트림(DTS : destination transport stream)(120)을 생성할 수 있다. DTS(120)는 컬레이터(118)에 의해 시퀀스(sequence)된 개별 통신 채널들로부터 복원된 패킷들의 하나 또는 그 이상의 스트림들일 수 있다.
목적지(104)는 전송 인바운드 프로세서(TIP: transport inbound processor)(122)를 또한 포함한다. TIP(122)는 DTS(120)를 처리한다.예를 들어, TIP(122)는 다른 채널들과 독자적으로 각 채널에 대하여 프로그램 식별자(PID : program identifier) 필터링을 실행할 수 있다. 해당 말단(end)에서, TIP(122)는 DTS(120)에 존재하는 선택된 프로그램(예를 들어, 선택된 프로그램 'j')으로부터의 패킷들을 식별, 선택 및 출력할 수 있고 그리고 다른 프로그램들에 대한 패킷들을 드랍(drop) 또는 폐기(discard)한다. 도 1 에 도시된 예에서, TIP(122)는 복원된 프로그램 'j', 최초에 소스 1 에 의해 제공된 프로그램에 해당하는,를 복원한다. TIP(122)는 텔레비전들, 랩탑들, 모바일 폰들 및 퍼스널 컴퓨터(personal computer)들과 같은 임의의 원하는 엔드 포인트들(124)에 복원된 프로그램을 제공한다. 목적지(104)는 예를 들어 셋탑 박스일 수 있고, 복조기들(116) , 컬레이터(118) 및 TIP(122)의 일부 또는 전부는 셋탑 박스에서 하드웨어, 소프트웨어 또는 둘 다로 구현될 수 있다.
소스(102) 및 목적지(104)는 구성 통신(configuration communication)들(126)을 교환할 수 있다.구성 통신들(126)은 예를 들어 동일하거나 또는 유사한 방식의 프로그램 채널 가이드 정보 안에 그리고 위에서 식별된 임의의 통신 채널들을 이용하여 소스(102)와 목적지(104) 사이의 아웃 오브 밴드(out-of-band) 또는 인밴드(in-band) 채널상으로 이동할 수 있다.구성 통신의 일 예는 본딩된 채널 그룹(112)의 파라미터들을 목적지(104)로 전하는 소스(102)로부터 목적지(104)로의 메시지이다.더 구체적으로,구성 통신(126)은 함께 본딩된 통신 채널들의 수; 본딩된 통신 채널들의 식별자들; 본딩된 통신 채널들이 수송할 프로그램들의 타입들; 마커 패킷 포맷(marker packet format); 청크, 프로그램 패킷, 또는 마커 패킷 사이즈(marker packet size) ; 청크, 프로그램 패킷 또는 마커 패킷 PID 또는 시퀀스 번호 정보 또는 목적지(104)에서 본딩된 채널 그룹(112)의 프로세싱을 용이하게 하는 임의의 다른 청크 또는 본딩 구성 정보;를 지정할 수 있다.목적지(104)로부터 소스(102)로의 구성 통신 메시지의 일 예는 목적지(104)가 적합한 본딩된 채널들로서 프로세스 할 수 있는 통신 채널들의 수; 적합한 본딩된 채널들의 식별자들; 복조기(116)들의 상태에 관한 상태 정보 예를 들어 복조기가 제대로 기능하지 않고 그리고 그것의 해당하는 통신 채널이 본딩된 채널 그룹에 포함되지 않은 것; 비트 레이트 또는 대역폭에 영향을 미치는 채널 상태들; 또는 소스(102) 및 분배기(108)가 본딩된 채널 그룹으로 소스들로부터의 데이터 프로세싱에 영향을 미치는 것으로 간주될 수 있는 임의의 다른 정보를 지정하는 구성 통신이다.
도 2 는 채널 본딩을 이용하여 컨텐츠 전달을 위한 로직(200), 상기에서 설명된 아키텍쳐(100)가 하드웨어, 소프트웨어 또는 둘 다로 구현될 수 있는,의 일 예를 도시한다. 추가적인 상세한 예제들이 특별히 마커 패킷(marker packet)들 및 다른 옵션(option)들에 관련하여 이하에 제공된다.
도 2 에서, 입력 소스들은 프로그램 데이터를 수신한다(202). 프로그램 데이터는 임의의 컨텐츠 제공자로부터 수신될 수 있고 그리고 단지 세 개의 예들로서, 케이블 텔레비전 프로그래밍, 스트리밍 뮤직, 파일 전송 데이터를 포함하는 임의의 원하는 오디오, 비주얼, 또는 데이터 컨텐츠를 포함할 수 있다. 입력 소스들은 프로그램 데이터를 통계적 다중화기(106), 소스 전송 스트림(STS : source transport stream)(110)를 생성하기 위해서 프로그램 데이터를 다중화하는(206),에 제공한다(204).
소스(102)는 분배기(108)에 STS(110)를 제공한다(208). 분배기(108)는 본딩 구성 파라미터들을 판독한다(210). 본딩 구성 파라미터들은 본딩된 채널 그룹(112)에서 통신 채널들의 수, 본딩된 채널 그룹(112)에 포함될 수 있는 통신 채널들, 본딩된 채널 그룹(112)에 포함될 수 있는 통신 채널들의 타입, 본딩에 적합한 프로그램 소스들, 언제 그리고 얼마나 오랫동안 통신 채널들 및 프로그램 소스들이 채널 본딩을 위해서 가용 가능한지, 본딩 적응 기준(bonding adaptation criteria) 및 분배기(108)가 본딩된 채널 그룹(112)에서의 통신 채널들에 걸쳐서 프로그램 데이터를 어떻게 그리고 언제 밀어낼(push)지에 영향을 미칠 수 있는 임의 다른 파라미터들을 지정할 수 있다. 분배기(108)는 본딩된 채널 그룹(112)내의 통신 채널들로 프로그램 데이터를 발송한다(212). 분배기(108)가 어떻게 이것을 수행하는지의 구체적인 예들이 이하에서 설명된다. 그럼으로써, 소스(102)는 본딩된 채널 그룹(112)내의 다수의 통신 채널들에 걸쳐서 목적지(104)로 프로그램 데이터를 전달한다(214).
목적지(104)에서, 복조기들(116)은 통신 채널들 상에서 프로그램 데이터를 수신한다(218). 복조기(116)들은 복원된 프로그램 데이터(임의적으로 버퍼링후에)를 컬레이터(collator)(118)에 제공한다. 컬레이터(118)는 그룹 정보, 시퀀스 정보, PID들, 통신 채널들 상으로 도달한 데이터 패킷들로부터 획득된 임의의 다른 원하는 정보를 분석하고 그리고 복원된 프로그램 데이터로부터 목적지 전송 스트림(DTS: destination transport stream)을 생성한다(220). DTS(120)는 예를 들어, STS(110)와 동일한 시퀀스 내에서 프로그램 패킷들을 전할 수 있다.
컬레이터(118)는 TIP(122)로 DTS(120)를 제공한다(222). TIP(122)는 데이터 선택 파라미터들을 판독한다(224). 데이터 선택 파라미터들은 예를 들어 어떤 오디오/비주얼 프로그램이 원해지는지를 지정할 수 있고 그리고 뷰어(viewer) 입력으로부터, 자동화된 선택 프로그램들 또는 프로세스들(예, 디지털 비디오 레코더(digital video recorder)에서) 또는 다른 방식들로 획득될 수 있다. 따라서, TIP(122)는 데이터 선택 파라미터들(예를 들어, PID 필터링)과 일치하는 프로그램 패킷들을 복원하기 위해서 DTS(120)를 필터링한다(226). 그럼으로써 TIP(122)는 선택된 프로그램에 대한 출력 패킷 스트림을 포함하는 컨텐츠 출력을 생성한다. TIP(122)는 생성된 컨텐츠를 텔레비전들, 스마트 폰(smart phone)들, 퍼스널 컴퓨터(personal computer)들, 또는 임의의 다른 디바이스와 같은 컨텐츠를 소비하는 임의의 원하는 디바이스(124)로 전달한다.
몇 개의 채널 본딩 프로세싱 옵션들이 다음에 논의된다. 일부 옵션들은 통신 채널들 상에서 목적지(104)로 향하는 데이터 스트림들내에 삽입된 마커 패킷(MP : marker packet)들을 참조한다. 마커 패킷들은 예를 들어 MPEG2 TS 패킷들을 MP들로서 플래그(flag)한 식별자를 가진 MPEG2 TS 패킷들일 수 있다. 제 1 옵션에서, 분배기(108)는 예를 들어, 라운드-로빈 방식(round-robin manner)으로 각 채널 기준(basis)위에 마커 패킷들을 추가한다. 제 2 옵션에서, 분배기(108)는 예를 들어, 라운드-로빈 방식(round-robin manner)으로 청크 경계(chunk boundary)들에서 각 청크 기준(basis)위에 마커들을 생성하고 추가한다. 제 3 옵션에서, 동일한 프로그램으로부터의 패킷들이 다수의 통신 채널들로 라우팅(route)될 때, 각 패킷은 프로그램 ID 및 시퀀스 ID를 수신하고, 그리고 마커 패킷들은 필요로 되지 않는다. 제 4 옵션에서, 네트워크 프레임들에서의 스페어 비트(spare bit)들이 네트워크 계층(network layer) 아래에,예를 들어, 소스(104)로 채널 본딩 정보를 수송하는 데이터-링크 계층에서, 정의된다.
제 1 옵션과 관련하여, 도 3은 채널 본딩(channel bonding)을 채용하는 컨텐츠 전달 아키텍쳐(300)의 다른 예제를 도시한다. 아키텍쳐(300)에서, 마커 패킷(MP : marker packet) 소스(302)는 통계적 다중화기(106)로 MP들을 공급한다. MP 소스(302)는 임의의 주파수에서 마커 패킷들을 제공할 수 있다. 예를 들어, MP 소스(302)는 소스들로부터 수신된 모든 'n' 비-마커 패킷(non-marker packet)들, 매 'k' ms에 대하여 또는 어떤 다른 시간 또는 패킷 스페이싱 주파수에서 본딩된 채널 그룹(112)에서의 각 통신 채널에 마커 패킷을 제공할 수 있다. 시간 또는 패킷 스페이싱, 'n' 또는 'k'는 임의의 원하는 값, 예를 들어, n=1 패킷으로부터 수만(tens of thousands)의 패킷들까지, 또는 k=1 ms 내지 1 초(second),을 가질 수 있다. 다른 구현예들에서, 분배기(108)는 STS(110)에서 MP들을 수신하기 보다는 MP들을 생성한다.
더 작은 마커 패킷들은 프로그램 데이터를 위한 더 많은 공간(room)을 남기는 더 작은 채널 대역폭을 소비한다. 그러나, 더 많은 마커 패킷들은 프로그램 데이터들에서의 변화들에 적응하는 목적지(104)의 능력, 컬레이터(108)가 본딩된 채널 그룹(112)에 걸쳐서 다수의 데이터 스트림들을 더 빠르게 동기화 하는 것을 허용, TIP(122)를 통하여 더 빠른 채널 변화들을 허용, 그리고 본딩된 채널 그룹(112)의 구성에서 변화들에 더 빠른 적응을 용이하게 하는 것을 포함하는,을 증가시킨다. 마커 패킷 삽입은 임의의 원해지는 파라미터들에 의존하여 변할 수 있다. 이런 파라미터들의 예제들은 가용 가능한 버퍼 사이즈들; 송신 에러들 또는 다른 송신 이슈(issue)들에 대한 목표(target), 평균(average), 또는 최악의 경우(worst case) 복구 시간(recovery time); 목표 프로그램 채널 변화 레이턴시(latency) 또는 다른 타입들의 레이턴시; 및 목표 프로그램 프레임 사이즈(target program frame size)를 포함한다.
도 3 에서, 분배기(108)는 임의의 원하는 변조기(130)로 시작하는 라운드-로빈 기준(round-robin basis)상에서 변조기들(130)로 패킷들을 밀어낸다. 더 구체적으로, 분배기(108)는 라운드-로빈 기준상에서 패킷들을 본딩된 채널 그룹(112)에서의 각 통신 채널로 한번에 하나의 패킷을 전달할 수 있다. 이하에서 설명되는 다른 구현예들에서, 라운드-로빈 분배는 한번에 n 패킷들이, 여기서 'n'은 1 보다 큼, 수행될 수 있다. 그러나, 도 3에서 도시된 예제에 대하여, 분배기(108)는 본딩된 채널 그룹(112)을 구성하는 통신 채널들에 걸쳐서 라운드-로빈 방식으로 한번에 하나의 패킷을 밀어낸다. 따라서, {MP-0, MP-1, MP-2, 1-0, 1-1, 2-1, 2-2, n-0}의 예시적인 STS(110) 패킷 스트림이 주어지면, 분배기(108)는 밀어낸다:
채널 1에 MP-0, 채널 2 에 MP-1, 채널 3 에 MP-2; 그런 다음
채널 1에 pkt 1-0, 채널 2 에 pkt1-1, 채널 3 에 pkt2-1; 그런 다음
채널 1 에 pkt 2-2, 채널 2 에 pkt n-0, 등등.
MP 소스(302)는 선택된 우선 순위 레벨(priority level), 예를 들어 프로그램 소스들로부터 도달한 임의의 다른 패킷들보다 가장 높게 가용 가능한 우선 순위 또는 더 높은 우선 순위와 같은,에서 통계적 다중화기(106)로 MP들을 제공할 수 있다. 더욱이, 일련의 MP들에서 MP들의 수들은 본딩된 채널 그룹(112)에서의 통신 채널들의 수와 일치할 수 있다. 예를 들어, 본딩된 채널 그룹(112)에서 일곱(7) 통신 채널들이 있을 때 MP 소스(302)는 통계적 다중화기(106)에 일곱 개의 가장 높은 우선순위를 제공할 수 있다. 그런 다음, 통계적 다중화기(106)는 STS(110)에서 바로 다음으로 높은 우선순위 MP들을 출력할 수 있어서 일곱 개의 MP들의 그룹이 분배기(108)에 시퀀스(sequence)로 도달한다. 패킷 바이 패킷(packet-by-packet) 라운드-로빈 분배의 결과로서, 각각의 일곱 개의 마커 패킷들 중 하나는 각 MP를 뒤따르는 프로그램 패킷들의 스트림을 플래그하기 위해서 본딩된 채널 그룹(112)에서의 일곱 개의 통신 채널들로 정확하게 밀어내진다.
통계적 다중화기(106) 또는 분배기(108) 또는 MP 소스(302)는 MP들을 마커 패킷들로서 플래그(flag)하는 고유한 PID(예를 들어, MARKER_PID)와 같은 특정 식별자를 MP들에 줄 수 있다. 임의의 다른 원하는 컨텐츠가 MP들에 존재할 수 있다. 예들로서, MP들은 채널 번호(channel number) 및 그룹 번호(group number)를 포함할 수 있다. 채널 번호는 해당 MP를 발송하는 통신 채널(예를 들어, 세 개의 통신 채널들의 본딩된 채널 그룹(112)에 대하여 채널0, 1, 또는 2)을 식별할 수 있다. 채널 번호는 분배기(108)가 프로그램 패킷들을 시퀀스에서 어느 채널로 발송할지를 식별하는, 제 1 , 제 2, 제 3 및 등등, 시퀀스 번호의 타입을 제공한다. 다시 말해, 채널 번호는 본딩된 채널 그룹에서 통신 채널들로의 프로그램 패킷들 분배에 관한 본딩된 채널 시퀀스를 식별한다.
그룹 번호는 임의 특정 MP가 어느 셋의 MP들에 속하는지를 식별할 수 있고 그리고 소스(102)는 각 새로운 셋의 MP들(예를 들어, 본딩된 채널 그룹(112)에서 세 개의 통신 채널들이 있을 때 매 세 개의 MP들)에 대해서 그룹 번호를 증분시킬 수 있다. 그룹 번호는 예를 들어 지터(jitter) 또는 스큐(skew)가 삽입된 패킷들 사이에서 갭(gap)보다 더 클 때, 패킷 정렬(packet alignment)를 또한 용이하게 할 수 있다.
분배기(108)는 MP들에 대한 임의의 특정 지식을 가질 필요가 없다는 것에 주목한다. 대신에, 분배기(108)는 그것이 어느 타입들의 패킷들을 발송할지를 알거나 또는 이해함이 없이 통신 채널에 대한 라운드-로빈 기준에 기초하여 패킷들을 밀어낼 수 있다. 그러나, 다른 구현예들에서, 분배기(108)는 예를 들어, MP들에 필드(field)들을 삽입하고 또는 개조하기 위해서 그것이 분배하는 패킷들을 실제로 분석하고 그리고 조작할 수 있다. 추가적으로, 분배기(108)는 STS(110)에서 MP들을 수신하기 보다는 MP들을 생성할 수 있다.
목적지(104)는 마커 패킷들을 프로세스하고 그리고 DTS(120)를 형성하기 위해서 복조기(116)들로부터 고정된 순서(fixed order)로 패킷들을 정렬할 수 있다. 목적지(104)는 다양한 통신 채널들에 걸쳐서 패킷들의 수신에서의 결과 불일치(mis-alignment) 및 통신 채널들 상에서 지터/스큐에 대응하기 위해서 FIFO(First In First Out) 버퍼들(304) 또는 다른 타입들의 메모리들을 포함할 수 있다. FIFO들(304)는 컬레이터(118)의 일부일 수 있거나 또는 별도로 구현될 수 있다. FIFO는 예를 들어 수신측(receive side)상에서의 일련의 병렬 버퍼(parallel buffer)들을 제공하기 위해서 각각의 통신 채널에 제공될 수 있다.
목적지(104)에서, 컬레이터(118)는 각 채널로부터 MP가 수신되기 전에 모든 패킷들을 드랍(drop)할 수 있다. 컬레이터(118)는 각 채널에서 마커 패킷의 그룹 번호를 체크하고 그리고 컬레이터(118)가 각 통신 채널상에서의 그룹 번호들과 일치하는 마커 패킷들을 발견할 때까지 패킷들을 드랍한다. 그룹 번호들이 일치하지 않을 때, 이것은 마커 패킷들사이에서의 갭보다 스큐가 더 크다는 컬레이터(118)에 대한 지표(indicator)일 수 있다. 마커 패킷들에서의 채널 번호는 컬레이터(118)가 통신 채널들로부터 패킷들을 획득할 통신 채널들의 시퀀스를 지정한다.
컬레이터(118)는 소스(102)에서의 라운드-로빈 분배에 일치하는 라운드-로빈 방식으로 패킷들을 획득한다. 본딩된 채널 그룹(112)에서 세 개의 통신 채널들을 가지는 예제에서, 컬레이터(118)는 MP 시퀀스 번호 제로(0)를 수송하는 통신 채널로부터 패킷을 획득함으로써, 그런 다음 MP 시퀀스 번호 일(1)를 수송하는 통신 채널로 이동함으로써, 그런 다음 MP 시퀀스 번호 이(2)를 수송하는 통신 채널로 이동하고 라운드-로빈 방식으로 시퀀스 번호 제로(0) 통신 채널로 되돌아가서 패킷을 획득함으로써 시작할 수 있다. 그것에 관해서 컬레이터(118)는 STS(110)에 상응하는 DTS(120)를 생산한다. TIP(122)는 DTS(120)로부터 선택된 프로그램을 추출할 수 있다.
도 4 는 상기에서 설명된 예시적인 아키텍쳐(300)내의 하드웨어, 소프트웨어 또는 둘다로 구현될 수 있는 채널 본딩을 이용하는 컨텐츠 전달을 위한 로직(400)의 일 예를 도시한다. 입력 소스들은 프로그램 데이터를 수신하고(402) 그리고 추가하여 MP 소스(302)는 MP들을 제공할 수 있다(404). 입력 소스들 및 MP 소스는 프로그램 데이터 및 MP들을 통계적 다중화기(106), 소스 전송 스트림(STS : source transport stream)(110)를 생성하기 위해서 프로그램 데이터 및 MP들을 다중화하는(408),에 제공한다(406).
특별히, MP들은 높은 우선순위(priority)를 가질 수 있어서, 통계적 다중화기(106)는 그것들을 다른 프로그램 데이터 패킷들 전에 갭들 없이 STS(110)에 순서대로 삽입한다. STS(110)는 분배기(108)에 제공된다(410). 분배기(108)는 본딩 구성 파라미터(bonding configuration parameter)들을 판독한다(412). 본딩 구성 파라미터들은 분배기(108)가 라운드 로빈 분배 접근법을 가져야 하는 것을 지정할 수 있고 그리고 라운드-로빈 분배 파라미터들을 지정할 수 있다. 이런 파라미터들의 예제들은 분배기(108)가 라운드 로빈 기술 또는 임의의 다른 라운드- 로빈 파라미터들을 실행하여야 하는 어떤 상황에서 라운드-로빈 분배 청크 사이즈,예를 들어 통신 채널마다 한번에 'r' 패킷들(예를 들어 'r' =1)를 포함한다. 상기에서 주목된 바와 같이, 본딩 구성 파라미터들은 본딩 채널 그룹(112)에서 통신 채널들의 수, 본딩 채널 그룹(112)에 포함될 수 있는 통신 채널들, 본딩 채널 그룹(112)에 포함될 수 있는 통신 채널들의 타입, 본딩에 적합한 프로그램 소스들, 언제 그리고 얼마나 오랫동안 통신 채널들 및 프로그램 소스들이 채널 본딩을 위해서 가용 가능한지, 및 분배기(108)가 본딩된 채널 그룹(112)에서의 통신 채널들에 걸쳐서 프로그램 데이터를 어떻게 밀어낼(push)지에 영향을 미칠 수 있는 임의 다른 파라미터들을 또한 지정할 수 있다.
분배기(108)는 본딩된 채널 그룹(112)내의 통신 채널들로 프로그램 데이터를 밀어낸다(414). 그럼으로써, 소스(102)는 본딩된 채널 그룹(112)내의 다수의 통신 채널들에 걸쳐서 목적지(104)로 프로그램 데이터를 전달한다(416).
보다 상세하게는, 분배기(108)는 라운드-로빈 방식으로 통신 채널들로 프로그램 패킷들을 밀어낼 수 있다. 일 실시예에서, 라운드-로빈 접근방법은 한번에 하나의 패킷 접근법이다. 다시 말해, 분배기(108)는 STS(110)으로부터 각 패킷('r'=1일 때)을 가져올 수 있고 그리고 시퀀스에서 다음 통신 채널로 그것을 밀어낼 수 잇다. 이와 같이, STS(110)으로부터의 MP들의 유효한 시퀀스는 통신 채널마다 하나의 MP를 분배시키고 그리고 하나 또는 그 이상의 프로그램 패킷들에 의해 뒤따른다. 그렇게 함으로써 MP들은 MP들에 연속하는 프로그램 패킷들을 목적지(104)를 향하여 효과적으로 플래그한다. 프로그램 패킷들의 미리 결정된 수들 후에, MP 소스는 그 다음에 통신 채널들에 걸쳐서 분배되는 MP들의 다른 그룹들을 제공하고 이 사이클은 반복된다.
목적지(104)에서, 복조기들(116)은 통신 채널들 상에서 프로그램 데이터를 수신한다(420). 복조기(116)들은 통신 채널들상에서의 지터/스큐를 다루는 것에 도움이 되기 위해서 버퍼들(예를 들어 FIFO 들(304))에 복원된 프로그램 데이터를 제공한다(422). 버퍼링된 데이터는 컬레이터(118)에, MP들을 기초로 동기화를 위해서 버퍼들로부터 패킷들을 끌어 당길 수 있는, 제공된다. 컬레이터(118)는 MP들을 기초로 동기화하기 위해서 MP들 및 프로그램 패킷들로부터 획득된 그룹 정보, 시퀀스 정보, PID들 및 임의의 다른 원하는 정보를 분석한다. 동기화는 본딩된 채널 그룹(112)에서 각 통신 채널에 걸쳐서 같은 그룹 번호의 일련의 MP들을 찾는 것을 포함할 수 있다. 그런다음 컬레이터(118)는 본딩된 채널 그룹(112)에서 통신 채널들에 걸쳐서 라운드-로빈 방식,MP들에서 지정된 채널 번호들에 의해 지정된 순서대로 진행하는,으로 DTS(120)에 패킷들을 추가함으로써 복원된 프로그램 데이터(424)로부터 목적지 전송 스트림(DTS :destination transport stream)(120)를 생성할 수 있다. DTS(120)는 예를 들어, STS(110)와 동일한 시퀀스 내에서 프로그램 패킷들을 전할 수 있다.
컬레이터(118)는 TIP(122)로 DTS(120)를 제공한다(426). TIP(122)는 채널 선택 파라미터들을 판독한다(428). 채널 선택 파라미터들은 예를 들어 어떤 프로그램이 원해지는지를 지정할 수 있고 그리고 뷰어(viewer) 입력으로부터, 자동화된 선택 프로그램들 또는 프로세스들(예, 디지털 비디오 레코더(digital video recorder)에서) 또는 다른 방식들로 획득될 수 있다. 따라서, TIP(122)는 채널 선택 파라미터들(예를 들어, PID 필터링)과 일치하는 프로그램 패킷들을 복원하기 위해서 DTS(120)를 필터링한다(430). 그럼으로써 TIP(122)는 선택된 프로그램에 대한 출력 패킷 스트림을 포함하는 컨텐츠 출력을 생성한다. TIP(122)는 생성된 컨텐츠를 텔레비전들, 스마트 폰(smart phone)들, 퍼스널 컴퓨터(personal computer)들, 또는 임의의 다른 디바이스와 같은 컨텐츠를 소비하는 임의의 원하는 디바이스(124)로 전달한다.
도 5 는 일부 구현예들에서 소스(102)가 변조기들(130)에서 송신 클럭 편차(transmit clock variation)들을 처리할 수 있는 것을 보여주는 타이밍 예제(500)을 도시한다. 도 5 는 송신버퍼들(502)을 도시하고, 그것의 각각은 얼마의 미리 결정된 깊이(depth)를, 적어도 채널 타이밍 편차(예를 들어, 200 ms)의 그것, 깊이와 같은, 제공할 수 있다. 일 예로서, 통신 채널들은 동일한 명목상(nominal)의 페이로드 레이트(payload rate)들 예를 들어, 38.71Mb/s를 가지도록 기대될 수 있다. 추가하여, 각 변조기에서의 송신 클럭(transmit clock)은 독립적이고 그리고 플러스(plus) 또는 마이너스 200ppm에 의해 변할 수 있다.
따라서, 최악의 경우(in the worst case)에서 본딩된 채널 그룹에서의 두 채널들은 400ppm의 클럭 차이를 가질 수 있다. 도 5에서의 예제에서 도시된 바와 같이, 채널 1로부터 채널 2까지의 타이밍 차이는 200ppm이고 그리고 채널 1과 채널 'm' 사이의 타이밍 차이는 400ppm이다. 400ppm의 타이밍 차이는 매 2500 아웃고잉 패킷들마다 하나의 188 바이트 MPEG2 TS 패킷 만큼에 이를 수 있다.
따라서, 소스(102)는 추가 아웃고잉 패킷들을 커버하기 위해서 매 2500 패킷들마다 채널 'm' 상에 보상 패킷( NULL 컨텐츠를 가질 수 있는)을 삽입할 수 있고 그리고 또한 동일한 이유에 대하여 매 5000 패킷들마다 채널 2 상에 보상 패킷을 삽입할 수 있다. 보상 패킷은 예를 들어, MP 바로 전에 또는 아웃고잉 데이터 스트림에서 어디든 나타날 수 있다. 목적지(104)는 보상 패킷들을 식별할 수 있고 그리고 폐기할 수 있다(또는 임의의 다른 타입의 지터/스큐 보상 패킷).
소스(102)는 버퍼 피드백(504)을 구현할 수 있다. 버퍼 피드백(504)는 송신 버퍼들에서의 버퍼 깊이들에 대하여 분배기(108)에 알린다. 버퍼들이 비어서 또는 다른 시간들에서 작동할 때 분배기(108)는 예를 들어 MP들 앞에, 보상 패킷들을 삽입할 수 있다.
도 6 은 채널 본딩(channel bonding)을 채용하는 컨텐츠 전달 아키텍쳐(600)의 다른 예시를 보여준다. 이 제 2 옵션에서, 아키텍쳐(600)는 청크(chunk)들(그러나 임의의 다른 용어는 통신 유니트(commuication unit)들을 지칭할 수 있음)로 불리는, 통신 유니트들에서의 통신 채널들상에서 데이터를 발송하는 분배기(108)를 포함한다. 청크들은 임의의 프로그램 소스들로부터 하나 또는 그 이상의 패킷들을 포함할 수 있다. 예를 들어, 1 패킷, 10 패킷들, 100 패킷들, 27 패킷들, 10,000 패킷들, 패킷들의 100ms, 패킷들의 20ms, 비디오 데이터의 30ms, 오디오 데이터의 5s 또는 패킷들 또는 오디오/비디오 컨텐츠의 임의의 수 또는 타이밍 일 수 있다.
분배기(108)는 임의의 통신 채널들에 대하여 동일하거나 또는 상이한 청크 사이즈를 사용할 수 있다. 더욱이, 분배기(108)는 임의의 원하는 청크 사이즈 기준(chunk size criteria)의 분석에 응답하여 임의의 시간에 청크 사이즈를 변화시킬 수 있다. 청크 사이즈 기준의 일 예는 목적지(104)에서의 원하는 채널 변화 속도이다. 청크내의 패킷들의 수가 증가함에 따라서, 목적지(104)는 다음 청크 경계에 도달, 일치하는 MP들 찾기, 수신된 통신 채널들에 동기화되도록 할 수 있기 전에 더 많은 패킷들을 드랍 할 필요가 있을 수 있다. 청크 사이즈는 송신 에러들 또는 다른 송신 이슈(issue)들로부터 복원하기 위한 목표, 평균 또는 최악 경우의 복구 시간뿐만 아니라 압축된 비디오 레이트 또는 프레임 사이즈에 또한 의존할 수 있다.
도 6 에서의 예제에서, 통계적 다중화기(106)는 입력 소스들 1...'n' 로부터 프로그램 패킷들을 수신한다. 프로그램 패킷들은 MPEG2 TS 패킷들 또는 임의의 다른 타입의 패킷일 수 있다. 통계적 다중화기(106)는 프로그램 패킷들로부터 STS(110)을 생성하고 그리고 이어서 STS(110)은 프로그램 스트림들의 통계적 특성(statistical property)들에 따라서 다양한 입력 소스들로부터 STS(110)으로 다중화되는 특정 시퀀스의 패킷들을 갖는다.
예시의 목적을 위해서, 도 6 은 분배기(108)가 통신 채널상으로 발송하기로 결정된 제 1 여섯개의 청크(chunk)들이 도시된다. 특별히, 제 1 세개의 청크들은 두개 패킷(two-packet)의 청크들(602, 604 및 606)이다. 다음 두개의 청크들은 하나 패킷(one-packet) 청크들(608 및 610)이다. 다음 청크는 두개 패킷 청크(612) 이다.
분배기(108)는 청크들에 선행하는 MP들을 생성한다. 그러나 대안들이 가능하고 일부는 도 15 및 도 16에 관하여 이하에서 설명된다. 분배기(108)는 통신 채널들에 걸쳐서 MP들 및 청크들(예를 들어, 라운드-로빈 방식으로)을 전달할 수 있다. 도 6 의 예제에서, 분배기(108)는 각 통신 채널에 MP(예를 들어,MP-0, MP-1, 및 MP-2)에 이어서 채널 1, 채널 2, 채널 m 그런 다음에 채널1 으로 다시 돌아오는 라운드-로빈 시퀀스로 MP-0, MP-1, 및 MP-2 뒤에 두개 패킷 청크들을 발송한다. 분배기(108)는 임의의 특정 통신 채널로 시퀀스를 시작할 수 있다.
도 6에서 도시된 바와 같이, 통신 채널들은 다음과 같이 채널 1 으로 시작하는 라운드-로빈 방식으로 MP들 및 청크들을 수신한다::
채널 1 :MP-0 ;채널 2 :MP-1 ;채널 3 :MP-2 ;
채널 1: 청크(602) ;채널 2: 청크(604) ;채널 3: 청크(606)
채널 1 :MP-4 ;채널 2 :MP-5 ;채널 3 :MP-6
채널 1: 청크(608) ;채널 2: 청크(610) ;채널 3: 청크(612)
청크 경계들이 MP들로 마크되어 있기 때문에, 분배기(108)는 채널 본딩에 영향을 미치지 아니하고 보상 패킷들(예를 들어, NULL 패킷들)을 삽입할 수 있다. 다시 말해, 각 통신 채널은 그것의 고유한 페이로드 레이트를 가질 수 있다. 더욱이, 송신 동안에 MPEG2 TS 변질(corruption)은 다른 패킷들에 영향을 미치지 않는다.
각 MP는 상기에서 설명된 것 처럼 채널 번호 및 그룹 번호를 포함할 수 있다. 채널 및 그룹 번호들은 다양한 형태들을 가질 수 있고 그리고 일반적으로 시퀀스 지표(indicator)들을 제공한다. 청크 사이즈가 100패킷들이 있는 예를 고려하면 분배기(108)가 C, B, A, C, B, A...:이 순서로 진행하는 세개의 통신 채널들 A,B 및 C가 있다. 제 1 100 패킷 청크들의 앞에 오는 MP들의 제 1 셋(set)은 그룹 번호 제로(0)로 각각 지정할 수 있다. 그룹 제로(0)내에서, 통신 채널 C 상에서의 제 1 MP는 제로(0)의 채널 번호를 가지며, 통신 채널 B 상에서의 제 2 MP는 일(1)의 채널 번호를 가지며, 그리고 통신 채널 A 상에서의 제 3 MP는 이(2)의 채널 번호를 가진다. 100 패킷들의 청크들의 다음 그룹에 대하여, 다음 세개의 MP들에 대한 MP 그룹 번호는 일(1)로 증분될 수 있고 그리고 채널 번호들은 다시 제로(0)로부터 이(2)로 운영한다.
목적지(104)에서, 복조기(116)들은 각 통신 채널로부터 MP들 및 청크들을 수신한다. 다시, 개별 FIFO(204)들이 지터 및 스큐를 보상하는데 도움이 제공될 수 있다.
컬레이터(118)는 MP들을 수신하고 그리고 컬레이터(118)가 동일한 그룹 번호 및 본딩된 채널 그룹(112)의 일부인 통신 채널들에 걸친 시퀀스에서 MP들을 찾았을 때 수신된 데이터 스트림을 기초로 동기화된다.일단 컬레이터(118)가 동기화되었을 때, 그것은 그룹 번호 및 채널 번호의 순서에서 MP들에 연속하는 각 청크들을 획득한다. 이 방식에서, 컬레이터(118)는 STS(110)에 상응하는 DTS(120)을 구성한다. 상기에서 설명된 것 처럼, TIP(122)는 임의의 원하는 프로그램 j를 복원하기 위해서 MPEG2 TS 패킷들에 기초하여 PID 필터링을 수행하고 그리고 다른 패킷들을 폐기할 수 있다.
도 7 는 상기에서 설명된 예시적인 아키텍쳐(600)내의 하드웨어, 소프트웨어 또는 둘 다로 구현될 수 있는 채널 본딩을 이용하는 컨텐츠 전달을 위한 로직(700)의 일 예를 도시한다. 입력 소스들은 프로그램 데이터를 수신한다(702). 입력 소스들은 프로그램 데이터를 통계적 다중화기(106), 소스 전송 스트림(STS : source transport stream)(110)를 생성하기 위해서 프로그램 데이터를 다중화하는(706),에 제공한다(704). 분배기(108)는 STS(110)를 수신한다(708).
분배기(108)는 본딩 구성 파라미터들을 또한 판독한다(710). 본딩 구성 파라미터들은 분배기(108)가 라운드 로빈 분배 접근법(round-robin distribution approach)을 가져야 하는 것을 지정할 수 있고 그리고 라운드-로빈 분배 파라미터(round-robin distribution parameter)들을 지정할 수 있다. 이런 파라미터들의 예제들은 라운드-로빈 분배 청크 사이즈 예를 들어, 통신 채널당 한번에 'r' 패킷들(예, r=100), 통신 채널당 청크 사이즈 또는 시간에서의 청크 사이즈의 변동(variation), 또는 소스(102)가 시간에 대하여 모니터 할 수 있고 그리고 적응할 수 있는 청크 사이즈 인자(factor)들에 의존하는 변동, 어느 상황들에서(108)가 라운드 로빈 기술을 실행하여야 하는지 또는 임의의 다른 라운드-로빈 파라미터를 포함한다. 상기에서 주목된 바와 같이, 본딩 구성 파라미터들은 본딩 채널 그룹(112)에서 통신 채널들의 수, 본딩 채널 그룹(112)에 포함될 수 있는 통신 채널들, 본딩 채널 그룹(112)에 포함될 수 있는 통신 채널들의 타입, 본딩에 적합한 프로그램 소스들, 언제 그리고 얼마나 오랫동안 널들 및 프로그램 소스들이 채널 본딩을 위해서 가용 가능한지, 및 분배기(108)가 본딩된 채널 그룹(112)에서의 통신 채널들에 걸쳐서 프로그램 데이터를 어떻게 밀어낼(push)지에 영향을 미칠 수 있는 임의 다른 파라미터들을 또한 지정할 수 있다.
이 옵션에서, 분배기는 분배기가 본딩된 채널 그룹(112)에서 개별 통신 채널들을 통하여 발송하는 프로그램 패킷들에 대한 청크들에 대한 MP들을 생성한다(712). 따라서, 예를 들어, 본딩 구성 파라미터들이 100 패킷들의 청크 사이즈를 표시할 때 분배기는 통신 채널의 다운방향으로(down) 전달되는 각 100 프로그램 패킷들에 대하여 MP를 생성한다. 상기에서 설명된 바와 같이, MP는 그룹 번호 및 채널 번호와 같은 동기화 데이터를 포함할 수 있다. 다른 예로서, MP는 타임스탬트(timestamp), 타임 코드(time code), 또는 다른 타이밍 기준 치수(measurement)와 같은 타이밍 데이터를 포함할 수 있다.
분배기(108)는 본딩된 채널 그룹(112)내의 통신 채널들로 MP들 및 프로그램 데이터를 발송한다(714). 분배기(108)는 프로그램 패킷들(예를 들어, 프로그램 패킷들의 청크들에 의한)의 통신 유니트들에 의해 라운드-로빈 방식으로 MP들 및 프로그램 데이터를 발송할 수 있다. 그럼으로써, 소스(102)는 본딩된 채널 그룹(112)내의 다수의 통신 채널들에 걸쳐서 목적지(104)로 프로그램 데이터를 전달한다(716).
보다 상세하게는, 분배기(108)는 청크에 의한 라운드-로빈 방식에서 통신 채널들로 프로그램 패킷들을 발송할 수 있다. 다시 말해, 분배기(108)는 STS(110)으로부터 프로그램 패킷들의 청크들을 가져올 수 있고, 미리 결정된 라운드-로빈 시퀀스(예, 본딩 구성 파라미터들에서 지정된 바와 같은)내의 본딩된 채널 그룹(112)에서 다음 통신 채널로 그것들을 발송할 수 있다. 이와 같이, MP는 통신 채널에 분배되고, 그리고 그룹 번호 및 채널 번호에 관해서 MP에 의해 태킹(tag)되는 프로그램 패킷들의 청크에 의해서 연속된다. 프로그램 패킷들은 어느 프로그램에 각 패킷이 속하는 지를 식별하는 PID 정보를 포함한다. 그렇게 함으로써 MP들은 MP들에 연속하는 프로그램 패킷들을 목적지(104)를 향하여 효과적으로 플래그한다. 프로그램 패킷들의 각 청크 후에, 분배기(108)는 그 다음에 통신 채널들에 걸쳐서 분배되는 MP들의 다른 그룹들을 제공하고 이 사이클(cycle)은 반복된다. 청크 사이즈는 시간에서 그리고 통신 채널에 의해서 변할 수 있다. 더욱이, 소스(102)는 목적지(104)로 본딩 구성 및 청크 사이즈를 포함하는 본딩 구성에 대한 변화들을 통지하기 위해서 목적지(104)로 구성 통신(configuration communication)들을 발송할 수 있다.
목적지(104)에서, 복조기들(116)은 통신 채널들상에서 프로그램 데이터를 수신한다(718). 복조기(116)들은 통신 채널들상에서의 지터/스큐를 다루는 것에 도움이 되기 위해서 버퍼들(예를 들어 FIFO 들(304))에 복원된 프로그램 데이터를 제공한다(720). 버퍼링된 데이터는 컬레이터(118)에, MP들을 기초로 동기화를 위해서 버퍼들로부터 패킷들을 끌어 당길 수 있는, 제공된다. 컬레이터(118)는 MP들을 기초로 동기화하기 위해서 그룹 정보, 시퀀스 정보, PID들 및 MP들 및 프로그램 패킷들로부터 획득된 임의의 다른 원하는 정보를 분석한다. 동기화는 본딩된 채널 그룹(112)에서 각 통신 채널에 걸쳐서 같은 그룹 번호의 일련의 MP들을 찾는 것을 포함할 수 있다.
그런 다음 컬레이터(118)는 본딩된 채널 그룹(112)에서 통신 채널들에 걸쳐서 라운드-로빈 방식으로 DTS(120)에 패킷들을 추가함으로써 복원된 프로그램 데이터(722)로부터 목적지 전송 스트림(DTS:destination transport stream)(120)를 생성한다. 특별히, 컬레이터(118)는 본딩된 채널 그룹(112)에서의 통신 채널들에 걸쳐서 라운드-로빈 방식으로 프로그램 패킷들의 청크(chunk)에 의해 DTS(120)에 패킷들을 추가한다. 따라서, DTS(120)는 예를 들어, 프로그램 패킷들이 STS(110)에서 존재하는 것과 같은 동일한 시퀀스내에서 프로그램 패킷들을 TIP(122)로 전할 수 있다.
컬레이터(118)는 DTS(120)를 TIP(122), 채널 선택 파라미터들을 판독하는(726),로 제공한다(724). 채널 선택 파라미터들은 예를 들어 어떤 프로그램이 원해지는지를 지정할 수 있고 그리고 뷰어(viewer) 입력으로부터, 자동화된 선택 프로그램들 또는 프로세스들(예, 스마트 폰 컨텐츠 레코딩 애플리케이션(smart phone content recording application)에서) 또는 다른 방식들로 획득될 수 있다. 따라서, TIP(122)는 채널 선택 파라미터들(예를 들어, PID 필터링)과 일치하는 프로그램 패킷들을 복원하기 위해서 DTS(120)를 필터링한다(728). 그렇게 함으로써 TIP(122)는 선택된 프로그램에 대한 출력 패킷 스트림을 포함하는 컨텐츠 출력을 생성한다. TIP(122)는 생성된 컨텐츠를 텔레비전들, 스마트 폰(smart phone)들, 퍼스널 컴퓨터(personal computer)들, 또는 임의의 다른 디바이스와 같은 컨텐츠를 소비하는 임의의 원하는 디바이스(124)로 전달한다.
간단하게 도 15로 가서, 도면은 도6에서의 컨텐츠 전달 아키텍쳐(600)의 예시적인 변형 아키텍쳐(1500)를 도시한다. 일 변형으로서, 분배기가 대신에 변조기들(130)로 MP 생성 신호들(예, MP 생성 신호들(1502, 1504, 1506))을 발행할 수 있다. MP 생성 신호(MP generation signal)(1502)는 수신한 변조기가 예, 청크 경계들(chunk boundaries)에서 패킷 스트림으로 삽입을 위한 MP을 생성하게 하는 명령 메시지(command message), 신호 라인 또는 다른 입력일 수 있다. MP는 타임 스탬트들, 시간 코드들, 그룹 번호들, 채널 번호들 및 유사한 것을 포함하는 임의의 원하는 동기화 정보를 포함할 수 있다. 변조기가 동기화 정보를 생성할 수 있거나 또는 분배기(108)가 MP 생성 신호와 함께 변조기로 동기화 정보를 제공할 수 있다.
다른 변형으로, 분배기(108)가 MP들을 생성할 수 있고 그리고 변조기(130)가 MP들을 생성할 수 있다. 예를 들어, 분배기(108)는 CH2에 관한 변조기를 위하여 MP들을 생성할 수 있고 그리고 다른 채널들에 관한 변조기들로 MP 생성 신호들 발송할 수 있다. 다른 대안은 분배기(108)가 일부 시간에 일부 변조기들을 위한 MP들을 생성하는 것이고 그리고 다른 시간들에서는 다른 변조기들로 MP 생성 신호들을 발송하는 것이다. 분배기(108)가 MP들을 생성하는지 아닌지는 분배기(108)가 이용 가능한 MP 성능 정보에 의존할 수 있다. 예를 들어, 본딩 구성 파라미터들(710)는 변조기들이 언제 그리고 어느 조건들하에서 MP들을 생성 가능한지를 지정할 수 있다. 그런다음, 분배기(108)는 상응하는 시간들에 또는 상응하는 조건들하에서 해당 변조기들로 MP 생성 신호를 발송할 수 있다. 또한, 변조기는 MP 생성 성능 및 해당 성능들에 기초하는 조건들, 언제 그리고 어느 조건들하에서 변조기가 MP들을 생성할 수 있고 그리고 또한 MP들을 생성하기 위해서 변조기가 분배기(108)로 부터 어떤 정보를 필요로 하는 지와 같은,을 지정하기 위해서 분배기(108)와 통신할 수 있다.
간단하게 도 16으로 가서, 도면은 상기에서 설명된 아키텍쳐들을 위한 전달 로직(1600)을 도시한다. 도 16은 상기에서 설명된 아키텍쳐들(예를 들어, 1500 및 1600)에서, 분배기(108)가 MP들을 생성할 수 있거나 변조기들(130)이 MP들을 생성할 수 있거나 또는 둘 모두가 MP들을 생성할 수 있는 것을 다시 보여준다. 예를 들어, 도 16은 CH1에 관한 변조기를 위해서 분배기(108)가 예를 들어,청크 경계들에서 MP들(1602)를 생성한다. 분배기(108)는 CHm에 관한 변조기를 위하여 MP들을 또한 생성한다(1606). 그러나, CH2에 관한 변조기를 위해서, 분배기(108)는 CH2에 관한 변조기로 MP 생성 신호 및 임의의 원하는 동기화 정보를 발송한다(1604). 따라서, CH2에 관한 변조기는 그것이 분배기(108)로부터 수신한 청크(chunk)들에 대하여 그것 자신의 MP들을 생성한다. 변조기는 MP 생성 성능 및 해당 성능들에 기초하는 조건들, 언제 그리고 어느 조건들하에서 변조기가 MP들을 생성할 수 있는지 뿐만 아니라 MP들을 생성하기 위해서 변조기가 분배기(108)로 부터 어떤 정보를 필요로 하는지를 포함하는,을 지정하기 위해서 분배기(108)와 통신할 수 있다(1608)는 것에 또한 주목한다.
이제 도 8로 가서, 도면은 분배기(distributor)(800)의 예시적인 구현을 도시한다. 분배기(108)는 STS 입력 인터페이스(802), 시스템 로직(804), 및 유저 인터페이스(806)을 포함한다. 추가하여, 분배기(800)는 808, 810 및 812로 라벨(label)된 것들과 같은 변조기 출력 인터페이스를 포함한다. STS 입력 인터페이스(802)는 예를 들어 높은 대역폭(예, 광 파이버(optical fiber)) 입력 인터페이스일 수 있다. 변조기 출력 인터페이스(808-812)는 통신 채널들상으로 데이터를 유도하는 변조기들로 데이터를 공급한다. 변조기 출력 인터페이스(808-812)들은 예들로서, 직렬 또는 병렬 버스 인터페이스들 일 수 있다.
시스템 로직(804)는 분배기(108)의 동작(예, 도면들 1-7 및 10에 관하여)과 관련하여 설명된 임의의 로직을 하드웨어, 소프트웨어 또는 둘 모두로 구현한다. 일 예로서, 시스템 로직(804)는 하나 또는 그 이상의 프로세서들(814) 및 프로그램 및 데이터 메모리들(816)을 포함할 수 있다. 프로그램 및 데이터 메모리들(816)은 예를 들어 패킷 분배 지령들(instruction)(818) 및 본딩 구성 파라미터들(820)을 보유한다.
프로세서(814)는 패킷 분포 지령들(818)들을 실행하고 그리고 본딩 구성 파라미터들(820)은 프로세서들(814)이 수행할 채널 본딩의 타입에 관해서 프로세서에 알린다. 결과적으로, 프로세서(814)는 MP 생성 또는 임의의 다른 채널 본딩 분배 패턴을 포함하는 상기에서 설명된 패킷 분배로 라운드-로빈 패킷 또는 청크 분배로 라운드-로빈 청크를 구현할 수 있다. 분배기(800)는 임의의 본딩 구성 파라미터들(820) 또는 임의의 채널 본딩 상태 정보를 변경, 고찰, 추가 또는 삭제하기 위해서 유저 인터페이스(806)로부터의 입력을 수용할 수 있다.
도 9 는 컬레이터(900)의 예시적인 구현을 도시한다. 컬레이터(900)는 DTS 출력 인터페이스(902), 시스템 로직(904) 및 유저 인터페이스(906)를 포함한다. 추가하여, 컬레이터(900)는 908, 910 및 912로 라벨(label)된 것들과 같은 복조기 입력 인터페이스들을 포함한다. DTS 출력 인터페이스(902)는 예를 들어 TIP(122)로의 높은 대역폭(예, 광 파이버) 출력 인터페이스일 수 있다. 복조기 출력 인터페이스들(908-912)는 복조기 입력 인터페이스들(908-912)에서 수신된 데이터로부터 DTS(120)을 생성할 컬레이터 시스템 로직으로 데이터를 공급한다. 복조기 입력 인터페이스들(908-912)는 예들로서, 직렬 또는 병렬 버스 인터페이스들 일 수 있다.
시스템 로직(904)는 컬레이터(118)의 동작(예, 도면들 1-7 및 10에 관하여)과 관련하여 설명된 임의의 로직을 하드웨어, 소프트웨어 또는 둘 모두로 구현한다. 일 예로서, 시스템 로직(904)는 하나 또는 그 이상의 프로세서들(914) 및 프로그램 및 데이터 메모리들(916)을 포함할 수 있다. 프로그램 및 데이터 메모리들(916)은 예를 들어 패킷 복원 지령들(instruction)(918) 및 본딩 구성 파라미터들(920)을 보유한다.
프로세서(914)는 패킷 복원 지령들(918)들을 실행하고 그리고 본딩 구성 파라미터들(920)은 프로세서들(914)이 수행할 채널 본딩의 타입에 관해서 프로세서에 알린다. 결과적으로, 프로세서(914)는 MP 동기화 또는 임의의 다른 채널 본딩 분배 복원 로직을 포함하는 상기에서 설명된 패킷 수신으로 라운드-로빈 패킷 또는 청크 수신으로 라운드-로빈 청크를 구현할 수 있다. 컬레이터(900)는 임의의 본딩 구성 파라미터들(920), 채널 본딩을 위해서 어느 채널들이 적합한지 또는 임의의 다른 채널 본딩 상태 정보를 설정, 고찰 또는 변경하는,을 변경, 고찰, 추가 또는 삭제하기 위해서 유저 인터페이스(906)로부터 입력을 수용할 수 있다.
상기에서 설명된 아키텍쳐들은 또한 소스(102) 및 목적지(104)사이에서 네트워크 노드들을 또한 포함할 수 있다. 네트워크 노드들은 패킷 스위치, 라우터, 허브 또는 다른 데이터 트래픽 취급 로직의 타입일 수 있다. 네트워크 노드들은 통신 채널들, 그것들이 인바운드(inbound side) 측면상에, 아웃 바운드 측면(outbound side)상에 연결된 지를,을 알 수 있다. 따라서, 네트워크 노드는 채널 본딩 그룹에서 통신 채널들의 임의의 특정 셋을 수신할 수 있지만 그러나 아웃바운드 방향에서의 통신 채널들의 일치하는 셋을 가질 필요는 없다. 그 경우에, 네트워크 노드는 네트워크 노드가 해당하는 아웃바운드 통신 채널을 가지지 않는 패킷들을 드랍하기 위해서 수신된 통신 채널 트래픽을 필터링할 수 있으나, 그러나 그것이 연결을 가지는 아웃바운드 통신 채널들상에서의 잔존하는 트래픽 플로우를 통과시킨다.
상기에 연합하여, 채널 본딩은 브로드캐스트, 멀티캐스트 또는 심지어 유니캐스트 환경에서 일어날 수 있다. 브로드캐스트 환경에서, 소스(102)는 프로그램 패킷들 및 MP들을 와이드 분배 홈 케이블 서비스(wide distribution home cable service)와 같은 통신 채널들에 부착된 모든 엔드포인트(endpoint)에 발송할 수 있다. 그러나, 멀티캐스트 환경에서 소스(102)는 프로그램 패킷들 및 MP들을 통신 채널들에 연결된 특정 그룹의 엔드 포인트들에 전달할 수 있다. 이것과 관련하여, 소스(102)는 구체적으로 의도된 수신자들을 식별하기 위해 패킷들에 IP(Internet Protocol) 어드레스들 또는 이더넷 어드레스들과 같은 주소지정 정보(adressing information)를 포함할 수 있다. 유니캐스트 환경에서, 소스(102)는 본딩된 채널 그룹(112)에 걸쳐서 프로그램 패킷들 및 MP들을 단일 목적지(single destination)로 발송하기 위해서 주소지정 정보를 이용할 수 있다.
소스(102)에서 제 3 옵션은 채널 본딩 데이터 필드(channel bonding data field)들을 프로그램 패킷들에 추가하는 것이다. 채널 본딩 데이터 필드들은 패킷 헤더, 페이로드 또는 둘 모두에 추가될 수 있다. 채널 본딩 데이터 필드들은 목적지(104)행의 DTS(120)을 생성하기 위해서 수신된 패킷들을 어떻게 정리할지를 식별할 수 있다. 그것에 관련해서, 채널 본딩 데이터 필드들은 PID 정보, 시퀀스 정보 및 채널 번호정보, 그룹 번호 정보 또는 컬레이터(118)가 DTS(120)에서 패킷 출력 순서를 분석할 수 있는 다른 데이터를 포함할 수 있다.
일부 구현예들에서, 통신 헤드-엔드는 각 소스가 채용할 프로그램 패킷들을 정의할 수 있고, 따라서 프로그램 패킷들에서 채널 본딩 필드들을 생성하는 유연성(flexibility)을 갖는다. 다른 구현예들에서, 소스(102)는 현존하는 패킷 정의(packet definitions)들에 채널 본딩 데이터를 삽입한다(아마 이 새로운 목적을 위해서 통상의 데이터 필드의 일부를 이용하여). 예를 들어 일부 구현예들에서, 각 프로그램은 사이즈에서 188바이트인 각 MPEG2 TS 패킷들과 함께 다수의 MPEG2 PID들로부터 형성된다. 동일한 프로그램으로부터의 패킷들이 상이한 통신 채널들에 걸쳐서 라우팅될 때, 소스(102)는 MPEG2 TS 패킷들에서 채널 본딩 필드(예, PID 및 시퀀스 번호)들을 수송하기 위해서 MPEG2 TS 패킷들에 헤더 또는 페이로드 필드들을 이용할 수 있다.
일 예로서, 소스(102)는 채널 본딩 데이터로서 프로그램 ID(PID) 및 시퀀스 번호를 프로그램 패킷들에 추가할 수 있다. PID는 16 개의 상이한 프로그램들을 식별하는 4 비트 필드일 수 있다. 시퀀스 번호는 4096 시퀀스 값들 중 하나를 식별하는 12 비트 필드일 수 있다. 이 구현예에서, 소스(102)는 MP들을 발송할 필요가 없다. 대신, 채널 본딩 정보(예,PID 및 시퀀스 번호(sequence number))는 그것이 DTS(120)를 구성하기 위해서 사용하는 정보를 목적지(104)에 제공하는 프로그램 패킷들에 삽입된다. 더 상세하게, 컬레이터(118)는 PID들 및 패킷들을 각 PID 에 관한 연속적인 시퀀스 번호들을 가지고 식별하고, 그리고 올바른 패킷 시퀀스를 가지고 DTS(120)를 생성한다.
더욱이, 소스(102)는 또한 채널 본딩 데이터를 더 낮은 계층 패킷들에 삽입할 수 있다. 예를 들어, 전송 계층에서 또는 그 위에서 정의된 MP들을 발송하는 대신에(또는 이중화(redundancy)를 위해 추가하는) 소스(102)는 대신 채널 본딩 데이터를 데이터-링크 계층 프레임들 또는 물리 계층 프레임들과 같은 전송 계층 아래에 정의된 프레임들에 삽입할 수 있다. 일 예로서, 데이터-링크 계층 프레임들은 저 밀도 패러티 체크(LDPC : Low Density Parity Check)일 수 있고 그리고 물리 계층 프레임들은 순방향 에러 정정(FEC :Forward Error Correcting) 프레임들일 수 있다.
이런 프레임들은 데이터-링크 계층에서 정의되기 때문에, 더 높은 계층들은 이런 프레임들 또는 그것들의 포맷(format)들에 관한 지식이 없을 수 있고 그리고 일반적으로 이런 프레임들을 프로세스(process)하지 않는다. 그럼에도 불구하고,전송 계층을 포함하는 더 높은 레벨 계층들은 데이터-링크 계층에 채널 본딩 데이터를 취급하는 데이터-링크 계층을 용이하게 하는 본딩 정보를 제공할 수 있다. 이런 본딩 정보의 예제들은 정의들, 사이즈들 및 채널 번호 및 시퀀스 번호 필드들의 시퀀스 넘버링, 원하는 청크 사이즈, 번호, 본딩할 통신 채널들의 식별정보(identification) 및 타입 또는 임의의 다른 채널 본딩 정보를 포함하는 원하는 채널 본딩 데이터의 양 및 타입을 포함한다.
더 상세하게는, 어떤 통신 아키텍쳐에서, 데이터-링크 계층 패킷들은 여분의(spare), 유보된(reserved) 또는 그렇지 않으면 보조 비트들(ancillary bit)를 갖는다. 사용되지 않은 상태인 보조 비트 필드들을 가지는 것 대신에, 시스템(102)는 이런 보조 비트 필드들에 채널 본딩 데이터를 삽입할 수 있다. 다른 구현예들에서, 데이터-링크 계층은 비트 필드들이 채널 본딩 데이터를 위해 구체적으로 배정되는 것 대신 그것 자신의 특정 패킷 구조를 정의할 수 있다.
도 10은 전송 계층(transport layer)아래의 예를 들어, 데이터-링크 계층 또는 물리 계층에서 채널 본딩을 수행하는 컨텐츠 전달 아키텍쳐(1000)의 예제를 도시한다. 도 10은 논의를 위해서 도 6의 예를 확장하지만 더 낮은 계층들에서의 채널 본딩은 임의의 컨텐츠 전달 아키텍쳐에서 일어날 수 있다. 도 10에서 분배기(108)에서의 프로토콜 스택은 물리(PHY) 계층(1002), 데이터-링크 계층(1004), 전송 계층(1006) 및 원하는 임의의 다른 계층들(1008)을 포함하는 다수의 계층들을 포함한다. 프로토콜 스택은 일 예로서 OSI(Open Systems Interconnection)을 고수할 수 있고 그리고 채널 본딩 정보를 수송할 수 있는 데이터-링크 계층 및 물리 계층은 예들로서 FEC(Forward Error Correcting) 프레임들, PHY 프레임들, MAC 프레임들, LDPC(Low Density Parity Check) 프레임들 또는 IP 데이터그램 프레임들(Datagram frames)들을 포함할 수 있다. 그러나, 대신에 임의의 다른 프로토콜 스택 및 구조 타입들이 프로그램 패킷들 레벨들 아래 레벨들에 채널 본딩을 취급하는 위치에 있을 수 있다.
STS(110)는 분배기(108)에 프로그램 패킷들을 제공한다. 프로토콜 스택은 프로그램 패킷들을 취급한다. 특별히, 데이터-링크 계층(1004)는 프로그램 패킷들 및 채널 본딩 데이터를 인캡슐레이트하고 그리고 본딩된 채널 그룹(112)에서의 통신 채널들에 걸쳐서 발송되는 낮은 레벨 프레임들을 구성한다. 낮은 레벨 프레임들의 일 예는 데이터-링크 프레임(1010)이다.이 예에서, 데이터-링크 프레임(1010)는 채널 본딩(CB :channel bonding) 데이터, 데이터-링크 프레임(DLF :data-link frame) 데이터 및 프로그램 패킷들(특별히 제 1 청크(602))를 포함한다. DLF 데이터는 이미 정의된 데이터-링크 계층 패킷 포맷에 정보 필드들을 포함할 수 있다. CB 데이터는 채널 번호 및 그룹 번호 또는 MP가 다른 식으로 수송할 수 있는 임의의 다른 정보를 포함할 수 있다.
상기에서 주목된 바와 같이 더 높은 레벨 계층들(예를 들어, 전송 계층(1006) 또는 다른 계층들(1008))은 데이터-링크 계층 프레임들에 어느 본딩 정보를 포함할 것인지에 관해서 데이터-링크 계층(1004)에 가이던스(guidance)를 제공할 수 있다. 그러나, 이것은 필수는 아니다. 데이터-링크 계층은 그것 스스로 분석을 할 수 있고 그리고 어느 채널 본딩 데이터를 데이터-링크 계층 프레임들에 추가할 것 인지에 관하여 그것 자신이 결정할 수 있다. 그것에 관련해서, 데이터-링크 계층은 채널 본딩 구성 파라미터들을 판독할 수 있다. 데이터-링크 계층은 데이터-링크 계층, 전송 계층 또는 목적지(104)에서의 다른 계층들을 가진 구성 통신들(126)을 포함하는 구성 통신(126)을 목적지(104)와 또한 교환할 수 있다.
목적지(104)에서, 프로토콜 스택(1012)은 복조기들(116)로부터 수신된 데이터를 프로세스한다. 특별히, 프로토콜 스택(1012)는 데이터-링크 계층(1014)를 포함할 수 있다. 데이터-링크 계층(1014)는 프로그램 패킷들 및 채널 본딩 데이터를 추출하기 위해서 데이터-링크 계층 프레임들(예를 들어, 프레임(1010))을 수신한다. 그런다음 컬레이터(118)는 상기에서 설명된 것 처럼 본딩된 채널 그룹(112)에서의 통신 채널들을 동기화하기 위해서 채널 본딩 데이터를 프로세스 할 수 있고 그리고 DTS(120)을 형성할 수 있다.
도 11 은 데이터-링크 계층 프레임들(1100)을 이용하는 채널 본딩의 예제를 도시한다. 도 11 에서, 예를 들어 데이터 스트림(1102)는 패킷화(packetization)전에 소스 데이터를 나타낸다. 데이터 스트림(1102)는 예들로서 비디오 카메라, 마이크로폰 또는 디스크 드라이브상의 파일내의 바이트들에 의해 생성된 데이터 일 수 있다. 컨텐츠 제공자(content provider)는 예를 들어 MPEG2 TS 패킷들(1106)로 패킷화된 스트림(1104)을 생성한다. 패킷들(1106)은 많은 다른 형태들을 가질 수 있고 그리고 도 11에서 도시된 예에서 패킷들(1106)은 CRC(Cyclic Redundancy Check) 데이터(1108)(예, 헤더에) 및 페이로드(1110)를 포함한다.
도 11은 데이터-링크 계층 프레임들(1112)을 또한 보여준다. 이 예에서, 데이터-링크 계층 프레임들(1112)은 헤더(1114) 및 페이로드(1116)를 포함한다. 헤더(1114)는 비록 필드들이 다른 목적들을 위해서 미리 정의되었더라도 데이터-링크 계층(1004)는 채널 번호 및 그룹 번호와 같은 채널 본딩 데이터를 삽입하는 필드들을 포함할 수 있다. 도 11은 데이터-링크 계층 프레임(1112)가 MATYPE 필드(1118)(예, 2 바이트), UPL 필드(1120)(예, 2 바이트), DFL 필드(1122)(예, 2 바이트), SYNC 필드(1124)(예, 1 바이트), SYNCD 필드(1126)(예, 2 바이트) 및 CRC 필드(1128)(예,1 바이트)를 포함하는 예를 보여준다. 이 특정 프레임 포맷은 DVB S2 코딩 및 변조 표준에 더 설명된다. 특별히, 데이터-링크 계층(1104)은 MATYPE 필드(1118)로 채널 본딩 정보를 삽입할 수 있다.
데이터-링크 계층(112)의 프레이밍(framing)은 프로그램 패킷들은 일반적으로 데이터-링크 프레임(1112)의 페이로드(1116)로 인캡슐레이트(encapsulate)되지만 그러나 채널 본딩 정보는 헤더(1204)에 추가되는 것이다. 그러나, 패킷화된 스트림(1104)는 데이터-링크 계층 프레임들(1112)와 반드시 일렬로 배열할 필요는 없다. 이것은 도11에서 점선(dashed line)들, 프로그램 패킷들에 걸쳐서 절단한 데이터-링크 계층 프레임(1112)으로,의해 보여진다. 정렬의 부족(lack)은 프로토콜 스택에서의 다양한 계층들사이의 타이밍 및 패킷 사이즈 불일치(mismatch)들 때문일 수 있고 그리고 데이터 스트림(1102)이 임의의 고정된 타이밍 파라미터들 또는 데이터 포맷들을 고수할 필요가 없기 때문이다.
일부 구현예들에서, 아키텍쳐들은 임의의 원하는 길이의 패킷들(예, NULL 패킷들)을 삽입함으로써, 프로그램 패킷(예, NULL 데이터)들을 패딩(padding)함으로써, 프로그램 패킷들(또는 다른방식으로 프로그램 패킷 데이터를 드랍함으로써)을 절단함으로써, 프로그램 패킷들을 전부 함께 드랍함으로써, 또는 다른 방식들로 정렬을 용이하게 할 수 있다. 데이터-링크 계층(1004)은 정수 번호의 프로그램 패킷들을 데이터-링크 계층 프레임에 맞추기(fit) 위해서 정렬을 실행할 수 있다. 일부 구현예들에서, 데이터-링크 계층(1004)는 타이밍, 정렬, 청크 사이즈들 또는 데이터 링크 계층에서의 정렬 및 채널 본딩을 용이하게 할 수 있는 다른 본딩 파라미터들에 관한 가이던스(guidance)를 제공하기 위해서 소스(102)에서의 프로토콜 스택 또는 다른 로직에서의 다른 계층들과 통신할 수 있다.
도 12 는 데이터-링크 계층 프레임들(1200)을 이용하는 채널 본딩의 예제를 도시한다. 도 11에서 처럼, 도 12에서 데이터 스트림(1102)는 예를 들어, 패킷화에 앞서서의 소스 데이터(source data)를 나타내고 그리고 패킷화된 데이터 스트림(1104)은 데이터 스트림(1102)로부터 발생한다.데이터-링크 계층프레임(1202)는 헤더(1204) 및 페이로드(1206)를 포함한다. 그러나, 도 12에서 데이터-링크 계층 프레임(1202)은 명확하게 채널 본딩 정보를 위한 필드들을 포함하도록 디자인되었다. 도 12에서의 예제에서, 헤더(1204)는 채널 본딩 필드 1(1208) 및 채널 본딩 필드 2(1210)를 포함한다. 다른 헤더 필드들(1212)이 다른 헤더 정보를 수송한다. 채널 본딩 필드들의 임의의 수 및 길이는 임의의 원하는 채널 본딩 정보를 보유하기 위해서 데이터-링크 계층 프레임들에 헤더들 또는 페이로드 필드들에 존재할 수 있다.
도 13 은 소스(102)에서의 데이터-링크 계층이 데이터-링크 계층에서 채널 본딩을 구현할 수 있는 로직의 예제(1300)를 도시한다. 데이터-링크 계층은 더 높은 계층들로 피드백을 제공할 수 있다(1302). 피드백은 정렬(alignment), 타이밍(timing) 또는 어떻게 프로그램 패킷들이 데이터-링크 계층 패킷들을 건너서 끊기거나 또는 데이터-링크 계층 패킷들에 맞출지(fit)에 영향을 미치는 다른 고려사항(consideration)들을 더 높은 계층(higher level layer)들에 통지할 수 있다.
데이터-링크 계층은 더 높은 레벨 계층들로부터 프로그램 패킷들을 수신한다(1304). 만약 데이터-링크 계층이 정렬을 강요할 것이면 그러면 그것은 프로그램 패킷들을 패드(pad)할 수 있거나, 정렬 패킷들을 삽입할 수 있거나 또는 심지어 패킷들 또는 패킷들의 일부를 드랍 할 수 있어서 프로그램 패킷들은 예를 들어 청크 사이즈를 포함하는 선택된 채널 본딩 구성에 해당하는 방식으로 데이터-링크 계층 프레임(1306)내에 맞춘다. 데이터-링크 계층은 채널 본딩 정보를 데이터-링크 계층 프레임들에 삽입한다(1308). 일부 구현예들에서, 소스(102)에서의 프로토콜 스택은 채널 본딩 정보를 위해서 별도의 마커 패킷들을 생성하지 않는다. 즉, 더 낮은 통신 프레임들(예, 데이터-링크 계층 프레임들)은 통신 프레임들에 정의된 특정 필드들에 채널 본딩 정보를 수송하여서 별도의 채널 본딩 정보의 인캡슐레이션(encapsulation)(예를 들어, 마커 패킷들로)이 요구되지 않는다. 또 다른 방식으로 표현하면, 데이터-링크 계층 프레임들은 예를 들어 먼저 채널 본딩 정보를 정의된 MP내에 인캡슐레이팅하는, 예를 들어 프로그램 패킷과 동일한 프로토콜 레벨에서, 그리고 그런다음 해당 MP를 통신 프레임내에 인캡슐레이팅하는 다수 레벨들의 인캡슐레이션 보다는 예, 채널 본딩 정보를 낮은 레벨 통신 프레임에 직접 인캡슐레이팅하는, 하나 더 작은 계층의 인캡슐레이션(one less layer of encapsulation)을 가질 수 있다.
데이터-링크 계층은 프로그램 패킷들 또는 패킷들의 청크들을 데이터-링크 계층 프레임들에 또한 삽입한다. 예를 들어, 프로그램 패킷들은 데이터-링크 계층 프레임들의 페이로드 필드에 존재할 수 있다. 마커 정보는 어느 패킷들이 마커 정보를 가지고 데이터-링크 계층 프레임내에 존재할 지를 지정할 수 있다(1310). 그런다음 데이터-링크 계층은 본딩된 채널 그룹(112)의 일부인 데이터-링크 계층 프레임들을 통신 채널상으로 송신한다.
도 14 는 소스(102)에서의 데이터-링크 계층이 데이터-링크 계층에서 채널 디본딩(debonding)을 구현할 수 있는 로직의 예제(1400)를 도시한다. 데이터-링크 계층은 데이터-링크 계층 프레임들을 수신한다(1402). 데이터-링크 계층은 데이터-링크 계층 프레임들로부터 프로그램 패킷들 및 채널 본딩 정보를 추출한다(1404). 프로그램 프레임들에서의 임의의 패딩 데이터(padding data) 또는 패딩 패킷들이 폐기될 수 있다(1406).
상기에서 설명된 것 처럼, 목적지(104)는 다수의 통신 채널들에 걸쳐서 동기화를 위해서 채널 본딩 정보를 분석한다(1408). 따라서, 예를 들어, 목적지는 다수의 통신 채널들에 걸쳐서 채널 본딩 시퀀스 정보에 정렬할 수 있다. 일단 동기화가 되면, 목적지(104)는 데이터-링크 계층 프레임들내의 채널 본딩 정보에 의해 알려진 데이터-링크 계층 프레임들로부터의 청크들을 DTS(120)에 예를 들어 라운드-로빈(round-robin) 추가함으로써 DTS(120)를 구성할 수 있다(1410).
MP를 위한 일 예시적인 포맷은 다음과 같다:
CBM_PID : 채널본딩마커(ChannelBondingMarker) PID, 그것은 마커 패킷을 위한 유보된 PID 값일 수 있다.일부 구현예들에서, 비록 패킷의 컨텐츠의 일부 또는 전부는 예를 들어 프로그램 데이터 대신에 MP 데이터에 특정될 것이지만 MP들은 적응 계층 정보(adaptation layer information)를 포함할 수 있고 MPEG2 TS 패킷 구조 뒤를 따를 수 있다. MP에서 바이트들은 다음과 같이 할당될 수 있다(단지 일 예로서):
Byte #1: Ox47(MPEG2 TS 미리 정의된 SYNC 바이트)
Byte #2/3: CBM_PID +TEI =O, PUSl=O, 우선순위 = 1
Byte #4: SC= 'bOO, AFC ='b11(노 페이로드(no payload)), CC =OxO
Byte #5: 적응_길이(Adaptation_length) = 'd183
Byte #6: Flags= Ox02, 예를 들어, 단지 전용 데이터(private DATA)가 존재
Byte #7: 전용 데이터_길이(Private data_length) = 'd181
Byte #8: 채널 본딩 그룹에서의 채널의 수
Byte #9/10 : CBM_Sequence_Number(CBM_SN)
Byte #11/12/13/14: CBM_SIZE
이 포괄적인 MPEG2 TS 패킷 신택스(syntax)는 ISO/lEC13818-1, 섹션 2.4.3.2,"Transport Stream packet layer"에 더 설명된다.".
일부 구현들은 매우 상이한 토폴로지들을 가지는 본딩 채널들을 용이하게 할 수 있다. 과거에, 인터페이스 전략들에서의 차이점들은 시스템에서의 유사한 채널 토폴로지들의 본딩을 조장할 수 있었다. 단일 논리 유니트(logical unit)으로서 상이한 토폴로지들을 이용하는 것은 채널 본딩을 통해 어떤 장점들을 제공할 수 있다. 임의 구현예들에서, 장점들이 단일 논리 채널(logical channel)으로서 직렬 및 병렬 채널들 본딩을 통하여 획득될 수 있다.
몇 개의 채널 본딩 프로세싱 옵션들이 본 출원에서 논의되었다. 제 1 옵션에서, 분배기(108)는 예를 들어, 라운드-로빈 방식(round-robin manner)으로 각 채널 기준(basis)위에 마커 패킷(marker packet)들을 추가한다. 제 2 옵션에서, 분배기(108)는 예를 들어, 라운드-로빈 방식(round-robin manner)으로 청크 경계(chunk boundary)들에서 각 청크 기준(basis)위에 마커(marker)들을 생성하고 추가한다. 제 3 옵션에서, 동일한 프로그램으로부터의 패킷들이 다수의 통신 채널들로 라우팅(route)될 때, 각 패킷은 프로그램 ID 및 시퀀스 ID를 수신하고, 그리고 마커 패킷들은 필요로 되지 않는다. 제 4 옵션에서, 네트워크 프레임들에서의 스페어 비트(spare bit)들이 네트워크 계층(network layer) 아래에, 예를 들어, 소스(104)로 채널 본딩 정보를 수송하는 데이터-링크 계층에서, 정의된다. 추가로 다른 옵션들이 존재할 수 있다. 그러나, 이런 기술들의 임의의 아키텍쳐들 또는 특징들은 혼합된 직렬 및 병렬 스트림들을 갖는 채널 본딩을 위해 논의된 구현예들과 함께 사용될 수 있다.
도 17은 함께 본딩된 병렬 및 직렬 채널들상에서 송신된 데이터를 수신하도록 구성된 셋탑 박스(set top box)의 개략도(schematic view)이다. 셋탑 박스(1700)은 일련의 튜너(tuner)들(1712,1714, 1716 및 1718). 네개의 튜너들이 도시되었지만, 튜너들의 수들은 확장가능하고 따라서 더 많거나 또는 더 작은 튜너들이 함께 사용될 수 있다. 각 튜너들(1712, 1714, 1716 및 1718)은 독립적으로 특정 밴드 신호(band signal)를 수신하도록 동작할 수 있다.
튜너(1712)는 데이터를 수신할 수 있고 그리고 복조기(1722)로 데이터를 송신할 수 있다. 그런다음 복조기(1722)는 전송 유니트(1732)내의 인 밴드(in-band) 인터페이스 블럭(1734)로 변조된 데이터를 송신할 수 있다. 인 밴드 인터페이스 블럭(1734)는 채널내에서 마커 패킷들을 식별할 수 있다. 마커 패킷(marker packet)내의 정보를 이용하는 인 밴드 인터페이스 블럭(1734)는 추가적인 송신을 위해서 버퍼(1760) 내에 최초의 시퀀스로 패킷들을 저장할 수 있다.
유사한 방식으로, 튜너(1714)는 복조기(1724)와 데이터 통신을 하고 그런다음 복조기 데이터는 전송 계층(1732)의 인 밴드 인터페이스 블럭(1736)에 제공된다. 비슷한 방식으로, 튜너들(1716,1718)은 수신된 데이터를 각각 복조기(1726) 및 복조기(1728)로 발송하여 제공한다. 복조기(1726)로부터의 복조기 데이터 및 복조기(1728)으로부터의 복조기 데이터는 전송 계층(1732)내의 인 밴드 인터페이스 블럭(1738) 및 인 밴드 인터페이스 블럭(1740)으로 각각 제공된다. 인 밴드 인터페이스 블럭(1736, 1738 및 1740)은 마커 패킷들을 식별하고 그리고 추가적인 송신을 위해서 버퍼(1760)에 수신된 패킷을 시퀀스로 저장한다. 튜너로부터 복조기로, 인 밴드 인터페이스 블럭으로, 및 버퍼(1760)로의 각 데이터 플로우 각 엘리먼트사이에서 직렬 방식으로 제공된다.
추가로, 튜너(1712)에 의해 송신되는 데이터는 튜너(1714)에 의해 송신되는 데이터와 완벽하게 독립하여 흐른다. 이와 같이, 각 튜너(1712, 1714, 1716, 1718)로부터의 데이터 플로우는 그것들이 버퍼(1760)에서 재결합될 때까지 개별적으로 진행된다.
추가하여, 셋탑 박스(1700)는 와이드 밴드 튜너(1720)를 포함할 수 있다. 와이드 밴드 튜너(1720)는 서로가 독립적인 다수의 채널들을 생성할 수 있다. 이와 같이, 와이드 밴드 튜너(1720)로부터의 제 1 채널은 복조기(1750)로 제공될 수 있으나 와이드 밴드 튜너(1720)로부터의 제 2 채널은 복조기(1752)로 제공될 수 있다. 복조기(1750)로부터의 복조기 데이터는 다중화기(multiplexer)(1754)에 제공될 수 있다. 비슷한 방식으로, 복조기(1752)로부터의 복조기 데이터는 다중화기(1754)로 또한 제공된다.
다중화기(1754)는 데이터를 병렬 인터페이스, 동일한 패킷으로부터의 데이터가 함께 클럭(clock)되는 다수의 라인들상으로 동시에 송신될 수 있는,로 분배한다. 예를 들어, 8 개의 병렬 라인들,8 개의 라인들에 걸쳐서 일(1) 바이트, 각 라인에 대하여 일 비트,가 송신될 수 있는,이 사용될 수 있다. 이와 같이, 전체 바이트는 단일 클럭 사이클에서 송신될 수 있다. 다중화기(1754)는 병렬 데이터를 전송 유니트(1732)의 멀티-복조기 인터페이스 블럭(1756)으로 송신할 수 있다. 멀티-복조기 인터페이스 블럭(1756)는 각 멀티 복조기 인터페이스에 대한 데이터 스트림내에서 마커 패킷 정보를 식별하고 그리고 버퍼(1760)에 각 패킷을 저장하여서 데이터는 단일 출력 데이터 스트림(1764)를 생성하기 위해서 다른 인 밴드 인터페이스 블럭(1734, 1736,1738,1740)의 각각에 의해 저장된 데이터와 결합될 수 있다.
도 17에서 제공된 예제의 관점에서, 혼합된 직렬 및 병렬 스트림들은 다른 애플리케이션들에서 잘 본딩된 채널들일 수 있는 것으로 이해된다. 도 18 은 직렬 및 병렬 채널들을 이용하는 채널 본딩 시스템의 개략도이다. 데이터 소스는 채널 본딩 디바이스(1812)로 데이터 스트림(1810)를 제공할 수 있다. 채널 본딩 디바이스(1812)는 함께 본딩되는 이용 가능한 채널들 중 하나로 패킷들을 분배하도록 구성된 분배기(1850)를 포함할 수 있다. 어느 부분에서 설명된 것처럼, 패킷은 통신 유니트(예, 청크들)들로 분배될 수 있다. 채널 본딩 디바이스(1850)는 패킷들 및/또는 통신 유니트들을 각 통신 채널들에 해당하는 변조기/다중화기(1824,1834,1844,1846)로 분배할 수 있다. 도시된 예제에 대하여, 본딩 디바이스(1812)는 제1 병렬 채널(1820), 제 2 병렬 채널(1830), 제 1 직렬 채널(1840) 및/또는 제 2 직렬 채널(1842)를 통하여 통신할 수 있다.
직렬 및/또는 병렬 채널들의 각각은 개별적으로 클럭될 수 있다. 추가하여, 각각의 병렬 채널은 동시에(synchronously) 클럭되는 다수의 라인들을 포함한다. 예를 들어, 병렬 채널(1820)은 라인을(1820a, 1820b, 1820c, 및 1820d), 채널(1820)의 라인들의 각각이 기준 번호(1822)에 의해 표시된 것처럼 함께 클럭되는, 포함한다. 동일한 방식으로, 채널(1830)은 라인(1830a, 1830b, 1830c, 및 1830d), 그것들이 기준 숫자(1832)에 표시된 것처럼 동시에 클럭되는,을 포함한다.
본 출원서 전체에서 설명된 것처럼, 본딩 디바이스(1812)는 채널들의 전부(1820, 1830, 1840, 1842)를 채널 본딩을 통하여 논리적으로 단일 채널(1844)로서 활용할 수 있다. 따라서, 채널 본딩 디바이스(1812)는 각 채널을 위한 버퍼, 예를 들어, 각 채널에 대한 변조기의 일부로서(1824, 1834, 1844, 1842),를 포함할 수 있다. 분배기(1850)는 버퍼 가득함(fullness)과 같은 네트워크의 특성들을 분석할 수 있고 그리고 각 통신 채널에 대하여 해당하는 버퍼를 제공하기 위해서 통신 유니트의 사이즈를 결정할 수 있다. 예를 들어, 병렬 채널들(1820 및 1830)은 직렬 채널들((1840 및 1842)보다 더 빨리 데이터를 송신할 수 있다. 이와 같이, 분배기(1850)는 직렬 채널들(1842,1844)보다 병렬 채널들(1820 및 1823)으로 더 큰 통신 유니트들(더 많은 패킷들)을 제공할 수 있다.
일부 구현예들에서, 채널 본딩 디바이스(1812)는 헤드 엔드(head end)일 수 있고 그리고 수신 디바이스(1814)는 라우터 또는 셋탑 박스일 수 있다. 다른 구현예들에서, 채널 본딩 디바이스(1812)는 홈 네트워크상의 디바이스(예, 게이트웨이, 라우터, 셋탑 박스)일 수 있으나, 반면에 수신 디바이스(1814)는 홈 네트워크상의 다른 디바이스일 수 있다. 예를 들어, 멀티-룸 디지털 비디오 레코더(DVR :digital video recorder)은 본딩된 채널을 통하여 셋탑 박스와 또는 반대로 통신할 수 있다. 또 다른 구현예서, 채널 본딩 디바이스(1812)는 셋탑 박스내의 백엔드 칩(backend chip)과 같은 수신 디바이스(1814)와 통신하는 복조기 칩일 수 있다. 따라서, 병렬 및 직렬 스트림들은 다양한 레벨들의 세분화(granularity)에서 다양한 애플리케이션들을 위해 함께 본딩될 수 있다.
상기 설명된 방법들, 디바이스들, 기술들, 및 로직은 하드웨어, 소프트웨어, 또는 하드웨어 및 소프트웨어 둘 모두의 많은 상이한 조합들에서 많은 상이한 방식들로 구현될 수 있다. 예를 들면, 시스템의 모두 또는 일부들은 제어기, 마이크로프로세서, 또는 애플리케이션 특정 집적 회로(ASIC)에 회로를 포함할 수 있거나, 또는 이산 로직 또는 컴포넌트 또는 다른 유형들의 아날로그 또는 디지털 회로의 조합으로 구현될 수 있거나, 또는 단일의 집적 회로 상에 조합되거나 또는 다수의 집적 회로들 가운데 분배될 수 있다. 설명된 로직의 모두 또는 일부는 프로세서, 제어기, 또는 다른 프로세싱 디바이스에 의한 실행을 위한 명령들로서 구현될 수 있으며 플래시 메모리, 랜덤 액세스 메모리(RAM) 또는 판독 전용 메모리(ROM), 삭제가능한 프로그램가능 판독 전용 메모리(EPROM)과 같은 유형의 또는 비-일시적 기계-판독가능하거나 또는 컴퓨터-판독가능한 매체 또는 컴팩트 디스크 판독 전용 메모리(CDROM), 또는 자기 또는 광 디스크와 같은 다른 기계-판독가능한 매체에 저장될 수 있다. 따라서, 컴퓨터 프로그램 제품과 같은 제품은 저장 매체 및 저장 매체 상에 저장된 컴퓨터 판독가능한 명령들을 포함할 수 있으며, 이것은 엔드 포인트(endpoint)에서 실행될 때, 컴퓨터 시스템, 또는 다른 디바이스가 디바이스로 하여금 설명 중 임의의 것에 따라 동작들을 수행하게 한다.
아키텍쳐들의 처리 능력은 선택적으로 다수의 분배된 처리 시스템들을 포함하여, 다수의 프로세서들 및 메모리들 가운데와 같이, 다수의 시스템 구성요소들 가운데 분배될 수 있다. 파라미터들, 데이터베이스들, 및 다른 데이터 구조들은 별개로 저장되고 관리될 수 있으며, 단일 메모리 또는 데이터베이스로 통합될 수 있고, 많은 상이한 방식들로 논리적으로 및 물리적으로 조직화될 수 있으며, 링크드 리스트(linked list)들, 해시 테이블(hash table)들, 또는 내포된 저장 메커니즘(storage mechanism)들과 같은 데이터 구조들을 포함하여, 많은 방식들로 구현될 수 있다. 프로그램들은 단일 프로그램, 별개의 프로그램들의 부분들(예로서, 서브루틴들)일 수 있고, 여러 개의 메모리들 및 프로세서들에 걸쳐 분배될 수 있거나, 또는 공유 라이브러리(예로서, 동적 링크 라이브러리(DLL : dynamic link library))와 같은, 라이브러리에서와 같이, 많은 상이한 방식들로 구현될 수 있다. DLL은 예를 들면, 상기에서 설명된 시스템 프로세싱 중 임의의 것을 수행하는 코드를 저장할 수 있다. 본 발명의 다양한 실시예들이 설명되었지만, 많은 보다 많은 실시예들 및 구현들이 본 발명의 범위 내에서 가능하다는 것이 기술 분야에서의 통상의 기술자들에게 명백할 것이다. 따라서, 본 발명은 첨부된 청구항들 및 그것들의 등가물들을 고려하는 것을 제외하고 한정되지 않는다.

Claims (15)

  1. 입력 인터페이스;
    개별 통신 채널들에 대한 출력 인터페이스들; 및
    상기 입력 인터페이스 및 상기 출력 인터페이스들과 통신하는 로직(logic);을 포함하되, 상기 로직은
    상기 통신 채널들 중 어느 것을 본딩된 채널 그룹(bonded channel group)으로 함께 채용(employ)할지를 결정하고,
    상기 입력 인터페이스로부터 소스 데이터(source data)를 획득하고;
    상기 출력 인터페이스들에 걸쳐서 채널 본딩 정보를 분배하고; 및
    상기 본딩된 채널 그룹내의 상기 통신 채널들에 걸쳐서 상기 소스 데이터를 분배하도록 구성되고, 상기 출력 인터페이스들 중에 제 1 출력 인터페이스는 직렬 인터페이스(serial interface)이고 상기 출력 인터페이스들 중에 제 2 출력 인터페이스는 병렬 인터페이스(parallel interface)인, 시스템.
  2. 청구항 1 에 있어서, 상기 병렬 인터페이스는 동시에(synchronously) 클럭되는 복수개의 통신 라인들을 가지는, 시스템.
  3. 청구항 1 또는 청구항 2 에 있어서, 상기 로직은 상기 소스 데이터를 분석하고 그리고 상기 소스 데이터를 통신 유니트(communication unit)들에 할당하는, 시스템.
  4. 청구항 1 내지 청구항 3 중 어느 하나의 청구항에 있어서, 상기 로직은 상기 통신 유니트에 할당된 소스 데이터에 기반하여 상기 병렬 인터페이스로 통신 유니트를 분배하도록 구성된, 시스템.
  5. 청구항 1 내지 청구항 4 중 어느 하나의 청구항에 있어서, 상기 통신 유니트는 상기 복수개의 병렬 통신 라인들의 각각에 걸쳐서 분배되는, 시스템.
  6. 청구항 1 내지 청구항 5 중 어느 하나의 청구항에 있어서, 상기 로직은 상기 본딩된 채널 그룹에 걸쳐서 라운드-로빈 방식(round-robin manner)으로 데이터를 분배하도록 구성된, 시스템.
  7. 청구항 1 내지 청구항 6 중 어느 하나의 청구항에 있어서, 상기 채널 본딩 정보는 마커 패킷(marker packet)들을 포함하는, 시스템.
  8. 청구항 1 내지 청구항 7 중 어느 하나의 청구항에 있어서, 상기 소스 데이터는 비디오 스트림 패킷들을 포함하는, 시스템.
  9. 개별 통신 채널들에 연결된 입력 인터페이스들로서, 상기 입력 인터페이스들 중의 제 1 입력 인터페이스는 직렬 인터페이스이고 그리고 상기 입력 인터페이스들 중의 제 2 입력 인터페이스는 병렬 인터페이스인, 상기 입력 인터페이스들;
    출력 통신 채널에 연결된 출력 인터페이스; 및
    상기 입력 인터페이스들 및 상기 출력 인터페이스와 통신하는 로직(logic);을 포함하되, 상기 로직은
    통신 채널들 중 어느 것들이 본딩된 채널 그룹(bonded channel group)으로 함께 채용된지를 결정하고;
    상기 개별 통신 채널들부터 데이터를 획득하고;
    상기 입력 인터페이스들로부터 수신된 채널 본딩 정보를 식별하고; 및
    상기 채널 본딩 정보에 기반하여 미리 정의된 순서로 상기 통신 채널들로부터 상기 데이터를 배열하는, 수신기 시스템.
  10. 청구항 9 에 있어서, 상기 병렬 인터페이스는 동시에(synchronously) 클럭되는 복수개의 통신 라인들을 가지는, 수신기 시스템.
  11. 통계적 다중화기(statistical multiplexer)에 의해 생성된 패킷 스트림을 획득하는 단계;
    상기 패킷 스트림을 통신 유니트들로 분할하는 단계;
    일련의 가용 가능한 통신 채널들 중에서 본딩된 채널 그룹의 통신 채널들을 식별하는 단계로서, 상기 본딩된 채널 그룹중의 제 1 통신 채널은 직렬 통신 채널(serial communication channel)이고 그리고 상기 본딩된 채널 그룹중에 제2 통신 채널은 병렬 통신 채널(parallel communication channel)인, 상기 통신 채널들을 식별하는 단계;
    상기 본딩된 채널 그룹에 걸쳐서 채널 본딩 정보를 분배하는 단계; 및
    상기 본딩된 채널 그룹에 걸쳐서 상기 통신 유니트들을 분배하는 단계;를 포함하는, 방법.
  12. 청구항 11 에 있어서, 병렬 인터페이스는 동시에(synchronously) 클럭되는 복수개의 통신 라인들을 가지는, 방법.
  13. 청구항 11 또는 청구항 12 에 있어서, 로직은 소스 데이터를 분석하고 그리고 상기 소스 데이터를 상기 통신 유니트들에 할당하는, 방법.
  14. 청구항 11 내지 청구항 13 중 어느 하나의 청구항에 있어서, 로직은 상기 통신 유니트에 할당된 소스 데이터에 기반하여 상기 병렬 인터페이스로 상기 통신 유니트를 분배하도록 구성되는, 방법.
  15. 청구항 14 에 있어서, 상기 통신 유니트는 상기 복수개의 병렬 통신 라인들의 각각에 걸쳐서 분배되는, 방법.
KR1020130025796A 2012-03-11 2013-03-11 혼합된 직렬 및 병렬 스트림 채널 본딩 아키텍쳐 KR101409924B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201261609339P 2012-03-11 2012-03-11
US61/609,339 2012-03-11
US201261663878P 2012-06-25 2012-06-25
US61/663,878 2012-06-25
US13/673,276 US20130235884A1 (en) 2012-03-11 2012-11-09 Mixed serial and parallel stream channel bonding architecture
US13/673,276 2012-11-09

Publications (2)

Publication Number Publication Date
KR20130103685A true KR20130103685A (ko) 2013-09-24
KR101409924B1 KR101409924B1 (ko) 2014-06-19

Family

ID=47900409

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130025796A KR101409924B1 (ko) 2012-03-11 2013-03-11 혼합된 직렬 및 병렬 스트림 채널 본딩 아키텍쳐

Country Status (5)

Country Link
US (1) US20130235884A1 (ko)
EP (1) EP2639990A2 (ko)
KR (1) KR101409924B1 (ko)
CN (1) CN103634615A (ko)
TW (1) TW201340696A (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104185976B (zh) * 2013-03-29 2018-11-30 华为技术有限公司 一种以太网中传输数据的方法、装置及系统
US10813083B2 (en) * 2015-02-12 2020-10-20 Huawei Technologies Co., Ltd. System and method for auto-detection of WLAN packets using STF
WO2016185513A1 (ja) * 2015-05-15 2016-11-24 三菱電機株式会社 パケットフィルタ装置、及びパケットフィルタ方法
US10554571B2 (en) * 2015-08-18 2020-02-04 Avago Technologies International Sales Pte. Limited Packet-to-packet timing reconstruction for channel bonding
US11323359B2 (en) * 2017-08-08 2022-05-03 Cable Television Laboratories, Inc. Multi-channel communication
US11757774B1 (en) 2017-08-08 2023-09-12 Cable Television Laboratories, Inc. Multi-channel communication
US11372787B2 (en) * 2017-12-09 2022-06-28 Intel Corporation Unified address space for multiple links
US11937167B1 (en) 2018-03-12 2024-03-19 Cable Television Laboratories, Inc. Client modification of traffic table in multi channel Wi-Fi

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2633414B1 (fr) * 1988-06-27 1993-07-09 Bull Sa Systeme informatique a interconnexion centrale
US6150997A (en) * 1992-07-13 2000-11-21 Cybex Computer Products Corporation Video transmission system
EP0702871A4 (en) * 1993-06-07 1998-01-28 Telecom Technologies Pty Ltd COMMUNICATION SYSTEM
GB2340278B (en) * 1995-02-24 2000-04-19 Advantest Corp Bit error measurement system
JPH10322298A (ja) * 1997-05-20 1998-12-04 Nec Corp 時分割多重伝送におけるチャネル認識方法及びこれを用いた時分割多重伝送システム
WO2002045013A2 (en) * 2000-11-30 2002-06-06 Allot Communications Ltd. Network resource allocation and monitoring system
US6707801B2 (en) * 2001-03-28 2004-03-16 Qualcomm Incorporated Method and apparatus for data transport in a wireless communication system
US7114086B2 (en) * 2002-01-04 2006-09-26 Ati Technologies, Inc. System for reduced power consumption by monitoring instruction buffer and method thereof
US7590145B2 (en) * 2002-09-17 2009-09-15 Scientific-Atlanta, Inc. Multiplexing octets from a data flow over MPEG packets
US7421014B2 (en) * 2003-09-11 2008-09-02 Xilinx, Inc. Channel bonding of a plurality of multi-gigabit transceivers
EP1825679B1 (en) * 2004-12-10 2019-02-20 Avago Technologies International Sales Pte. Limited Upstream channel bonding in a cable communications system
CN100566228C (zh) * 2005-03-21 2009-12-02 美国博通公司 实现有线网络内的高吞吐量带宽分配的方法和系统
KR100657314B1 (ko) * 2005-05-04 2006-12-20 삼성전자주식회사 멀티미디어 스트리밍 송신 장치 및 방법
US20070133588A1 (en) * 2005-12-09 2007-06-14 Electronics And Telecommunications Research Institute Scheduling apparatus and method in channel bonding transmission system
CA2528636C (en) * 2005-12-16 2016-06-28 Maged E. Beshai Scalable router-switch
US7898956B2 (en) * 2006-09-12 2011-03-01 Alcatel Lucent Credit-based rate control for high-speed interfaces
ES2498931T3 (es) * 2007-03-26 2014-09-26 Fujitsu Limited Aparato de recepción para una estación móvil y método de comunicación para un sistema de comunicaciones móviles
US8040807B2 (en) * 2008-09-05 2011-10-18 Cisco Technology, Inc. QoS on bonded channels of a shared access cable network
US8238452B1 (en) * 2009-02-06 2012-08-07 Xilinx, Inc. Circuit for synchronizing serial communication channels
US8516532B2 (en) * 2009-07-28 2013-08-20 Motorola Mobility Llc IP video delivery using flexible channel bonding
CN104853176A (zh) * 2010-04-02 2015-08-19 三星电子株式会社 发送和接收用于提供立体视频广播服务的数据流的方法
JP5867772B2 (ja) * 2010-09-10 2016-02-24 ソニー株式会社 受信装置、およびプログラム
EP2638656B1 (en) * 2010-11-12 2016-12-07 InterDigital Patent Holdings, Inc. Methods for performing channel aggregation
US9240956B2 (en) * 2012-03-11 2016-01-19 Broadcom Corporation Communication system using orbital angular momentum
US8701152B2 (en) * 2012-03-11 2014-04-15 Broadcom Corporation Cross layer coordinated channel bonding

Also Published As

Publication number Publication date
TW201340696A (zh) 2013-10-01
EP2639990A2 (en) 2013-09-18
CN103634615A (zh) 2014-03-12
US20130235884A1 (en) 2013-09-12
KR101409924B1 (ko) 2014-06-19

Similar Documents

Publication Publication Date Title
KR101409913B1 (ko) 다수의 네트워크 타입들을 가지는 채널 본딩
US9226010B2 (en) Channel bonding with distributed marker packets
KR101409924B1 (ko) 혼합된 직렬 및 병렬 스트림 채널 본딩 아키텍쳐
KR101455094B1 (ko) 오비탈 각 모멘텀을 갖는 채널 본딩
US8457156B2 (en) Wideband cable system
US9538210B2 (en) Employing helper transport streams for re-multiplexing
KR20110070437A (ko) 다채널 방송망에 적합한 송신용 및 수신용 방송 매체 접속 제어 장치
US10554571B2 (en) Packet-to-packet timing reconstruction for channel bonding
US9088807B2 (en) Audio/video channel transbonding in a network device

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
FPAY Annual fee payment

Payment date: 20170531

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180530

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190531

Year of fee payment: 6