KR20140097417A - 스트림들의 끊김없는 경로 스위칭을 갖는 하이브리드 네트워킹 시스템 - Google Patents

스트림들의 끊김없는 경로 스위칭을 갖는 하이브리드 네트워킹 시스템 Download PDF

Info

Publication number
KR20140097417A
KR20140097417A KR1020147016864A KR20147016864A KR20140097417A KR 20140097417 A KR20140097417 A KR 20140097417A KR 1020147016864 A KR1020147016864 A KR 1020147016864A KR 20147016864 A KR20147016864 A KR 20147016864A KR 20140097417 A KR20140097417 A KR 20140097417A
Authority
KR
South Korea
Prior art keywords
packets
stream
transmission medium
received
buffer
Prior art date
Application number
KR1020147016864A
Other languages
English (en)
Other versions
KR101749261B1 (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 KR20140097417A publication Critical patent/KR20140097417A/ko
Application granted granted Critical
Publication of KR101749261B1 publication Critical patent/KR101749261B1/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/1829Arrangements specially adapted for the receiver end
    • H04L1/1835Buffer management
    • H04L1/1841Resequencing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/22Alternate routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order
    • H04L47/6225Fixed service order, e.g. Round Robin
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/72Admission control; Resource allocation using reservation actions during connection setup
    • H04L47/726Reserving resources in multiple paths to be used simultaneously
    • 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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/164Adaptation or special uses of UDP protocol
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/125Shortest path evaluation based on throughput or bandwidth
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath

Abstract

스트림을 새로운 송신 매체로 스위칭하기 위한 시스템 및 방법. 제 1 스트림이 수신될 수 있다. 제 1 스트림의 제 1 복수의 패킷들은 제 1 송신 매체 상에서 제 2 디바이스에 송신될 수 있다. 제 1 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들을 포함할 수 있다. 제 1 복수의 패킷들 중 적어도 일부가 제 2 디바이스에 의해 수신되지 않았을 수 있다고 결정될 수 있다. 제 1 스트림의 제 2 복수의 패킷들은 제 2 송신 매체 상에서 제 2 디바이스에 송신될 수 있다. 제 2 복수의 패킷들은 제 1 복수의 패킷들의 적어도 서브세트 및 하나 또는 그 초과의 인덱스 마커 패킷들의 적어도 서브세트를 포함할 수 있다. 하나 또는 그 초과의 인덱스 마커 패킷들은, 복제 패킷들을 검출 및 폐기하기 위해 제 2 디바이스에 의한 이용을 위해 구성될 수 있다.

Description

끊김없는 경로 스위칭을 갖는 하이브리드 네트워킹 시스템{HYBRID NETWORKING SYSTEM WITH SEAMLESS PATH SWITCHING}
본 출원은 2011년 11월 21일에 출원된 미국 출원 일련번호 13/301,562호를 우선권으로 주장한다.
본 발명은 일반적으로 통신 시스템들에 관한 것이고, 더 상세하게는, 복수의 송신 매체들을 포함하는 네트워크 내에서 스트림들을 송신 및 수신하기 위한 시스템들 및 방법들에 관한 것이다.
통신 네트워크들을 구축하기 위해 현재 통상적으로 이용되는 다양한 네트워킹 기술들이 존재한다. 몇몇 예들은, 다른 네트워킹 기술들 중에서도, 무선 로컬 영역 네트워크(WLAN) 기술들, 전력선 통신 기술들, 이더넷 및 802.16(WiMAX)을 포함한다. 다수의 이러한 통신 네트워크들이 (예를 들어, 가정의 세팅에서) 동일한 공간에 존재하는 것이 더욱 비교적 통상적이다. 이러한 상황들에서, 다수의 상이한 네트워킹 기술들을 이용하여 다른 하이브리드 네트워킹 디바이스들에 커플링할 수 있고 그에 따라 더 견고한 하이브리드 네트워크를 형성하는 하이브리드 네트워킹 디바이스들이 특히 유용할 것이다.
그러나, 개별적인 네트워킹 기술들에 대한 통신 메커니즘들(예를 들어, 송신 매체들) 및 프로토콜 세부사항들(예를 들어, 디바이스 및 토폴로지 발견, 다른 네트워크들로의 브릿지 등)은, 각각의 네트워킹 기술에 통상적으로 고유하다. 이러한 다양한 네트워킹 기술들을 브릿지하여 효과적인 하이브리드 네트워크를 형성하는 것은 까다로운 목표이고, 하이브리드 네트워킹의 다양한 영역들에서의 개선이 바람직할 것이다.
본 개시의 실시예들은 네트워킹 시스템들을 개선하기 위해 제시된다. 더 구체적으로, 본 개시의 실시예들은, 스트림을 송신/수신하기 위해 다수의 송신 매체들을 이용할 수 있는 네트워킹 시스템들에서, 경로 선택, 로드 밸런싱, 스트림 어그리게이션, 패킷 손실 최소화, 복제 패킷 검출 및 무작위 패킷의 재순서화를 위한 방법들에 관한 것이다.
본 개시의 몇몇 실시예들은, 복수의 송신 매체들을 통해 다른 전자 디바이스(예를 들어, 제 2 하이브리드 네트워킹 디바이스)에 커플링되는 전자 디바이스(예를 들어, 제 1 하이브리드 네트워킹 디바이스)에 의해 구현될 수 있다. 예를 들어, 전자 디바이스들은, 다수의 타입들의 네트워크들을 통해 통신할 수 있고, 이 네트워크들 중 적어도 일부는 통신을 전달하기 위해 상이한 송신 매체들을 활용할 수 있다. 게다가, 몇몇 실시예들에서, 송신 매체들 중 적어도 하나는 성질상 실질적으로 동적일 수 있는데, 예를 들어, 송신 매체들 중 적어도 하나의 PHY 레이트는 실질적으로 시간에 걸쳐 변할 수 있다.
복수의 송신 매체들을 통해 서로 커플링되는 전자 디바이스들은, 통신할 송신 매체들 중 임의의 또는 모든 (또는 몇몇 조합의) 매체들을 이용할 수 있는 이점을 갖는다. 그러나, 상이한 송신 매체들 및 연관 네트워킹 기술들을 최적으로 이용하기 위해, 진보된 제어 알고리즘들이 요구될 수 있다. 예를 들어, 몇몇 타입들의 통신들은 다른 타입들보다 하나의 타입의 네트워킹 기술 및/또는 송신 매체에 더 양호하게 적합할 수 있다. 복수의 이용가능한 송신 매체들로부터 스트림을 송신할 송신 매체를 지능적으로 선택하는 것은, 특히 매체 특성들이 시간에 걸쳐 변할 수 있고 규칙적으로 모니터링되어야 하는 경우, 중요한 활동이다. 이 프로세스는 본 명세서에서 경로 선택으로 지칭되고, 본 개시의 실시예들 중 일 세트는 경로 선택을 위한 시스템 및 방법에 관한 것이다.
게다가, 스트림 특성들(예를 들어, 스트림이 얼마나 많은 대역폭을 활용하는지) 및 매체 특성들(예를 들어, 송신 매체의 링크 용량)이 시간에 걸쳐 변하기 때문에, 하나 또는 그 초과의 송신 매체들 상에서 과다가입(oversubscription) 조건들이 발생할 수 있다. 또한, 몇몇 환경들 하에서, 송신 매체는 일시적으로 또는 영속적으로 실패할 수 있다. 따라서, 과다가입을 회피하고 다양한 타입들의 컨텐츠 스트림들에 적절한 서비스를 제공하면서, 이용가능한 네트워크 용량의 이용을 최적화하기 위해, 다수의 송신 매체들을 통해 전자 디바이스들 사이에서 통신되고 있는 다양한 스트림들을 밸런싱하는 것이 본 개시의 다른 중요한 양상이다. 다양한 송신 매체들의 이용을 최적화하기 위해, 다양한 송신 매체들을 모니터링하고, 하나 또는 그 초과의 스트림들을 선택하고, 이를 하나의 송신 매체로부터 다른 송신 매체로 이동시키는 프로세스는 본 명세서에서 로드 밸런싱으로 지칭되고, 본 개시의 실시예들 중 일 세트는 로드 밸런싱을 위한 시스템 및 방법과 관련된다.
통신하기 위한 다수의 송신 매체들의 이용가능성은 또한, 다수의 송신 매체들을 이용하여 스트림을 송신하는 가능성에 적합하다. 예를 들어, 몇몇 상황들에서, 통신 시트림은, 임의의 단일 송신 매체들에 의해 전체적으로 유지될 수 있는 것보다 더 큰 대역폭 요건을 가질 수 있다. 이것은, 매우 큰 스트림들의 경우들에서 발생할 수 있거나, 또는, 가능하게는, 각각의 송신 매체 상에서 다수의 스트림들이 이미 통신되고 있고, 임의의 주어진 송신 매체 상에 제한된 이용가능한 링크 용량이 남은 경우에 더 통상적으로 발생할 수 있다. 이러한 상황들에서, 통신 스트림 중 일부는 제 1 송신 매체 상에서 송신되는 한편, 통신 스트림 중 다른 일부는 제 2 송신 매체 상에서 통신되는 것이 바람직할 수 있다. 이 프로세스는 본 명세서에서 스트림 스플리팅(splitting) 및 스트림 어그리게이션으로 지칭되고(예를 들어, 스트림은 송신측에서는 스플리팅될 수 있고, 수신측에서 어그리게이트될 수 있기 때문임), 본 개시의 실시예들 중 일 세트는 스트림 스플리팅/어그리게이션을 위해 스트림을 선택하기 위한 시스템 및 방법에 관한 것이다. 경로 선택 및 로드 밸런싱에서와 같이, 스플리팅/어그리게이션을 위해 스트림을 선택하고, 어떤 방식으로 스트림을 스플리팅할지를 결정하는 프로세스는, 송신 매체들 중 하나 또는 그 초과가 성질상 동적일 수 있다는 사실에 의해 복잡할 수 있다. 몇몇 실시예들에서, 스트림 스플리팅/어그리게이션은 또한, 예를 들어, 더 진보된 기술로서 로드 밸런싱의 프로세스에서 이용될 수 있음을 주목해야 한다.
2개의 전자 디바이스들 사이에서 통신하기 위해 다수의 송신 매체들을 이용한다는 아이디어는, 많은 분명한 이점들을 갖는데, 특히, 그에 의해, 상이한 서비스 품질(QoS) 요건들 또는 다른 요구들을 갖는 상이한 타입들의 컨텐츠를 수용하기 위한 더 큰 유연성으로, 더 큰 전체 용량을 갖는 더 견고한 네트워크가 생성될 수 있다. 그러나, 수신 전자 디바이스에 의해 인식되고 성공적으로 수신될 방식으로 하나의 송신 매체로부터 다른 송신 매체로 스트림의 이동을 (스트림 스플리팅/어그리게이션에서와 같이 부분적으로, 또는 전제적으로) 조정하는 것은, 고유의 난제들의 세트를 제시한다. 이것은, 송신 매체들이 성질상 상당히 상이하고, 상이한 네트워킹 기술들을 활용하는 경우에 특히 그러할 수 있다. 이러한 것의 일례는 패킷 순서화이다. 송신 매체들이 상이한 송신 레이턴시들을 가지면(이는, 상이한 타입들의 통신 인터페이스들에 대해 통상적일 수 있음), 스위칭전(switched-from) 송신 매체 상에서 통신되고 있는 마지막 몇몇 패킷들은, 스위칭후(switched-to) 송신 매체 상에서 통신되고 있는 처음 몇몇 패킷들 이후에 전자 디바이스에 의해 수신될 수 있다. 본 개시의 실시예들 중 일 세트는, 수신기가 이러한 무작위 패킷들을 검출하고 이들을 재순서화할 수 있게 하는 시스템 및 방법에 관한 것이다.
추가적으로, 2개의 전자 디바이스들 사이에서 통신하기 위해 조정된 방식으로 다수의 송신 매체들을 활용하는 능력은, 실패한 송신 매체로부터 여전히 기능하는 송신 매체로 스트림을 이동시키기 위한 잠재력을 제공하지만, 실패한 송신 매체에 의해 초래되는 잠재적인 패킷 손실을 최소화하기 위한 방식을 제공하는 것이 바람직할 것이다. 따라서, 본 개시의 실시예들 중 일 세트는, 예를 들어, 패킷 버퍼의 패킷들 중 일부 또는 전부가 원래의 송신 매체를 통해 수신기에 성공적으로 통신되지 않았다고 결정되면, 새로운 송신 매체 상에서 재송신될 수 있는 패킷 버퍼를 유지함으로써, 스트림을 새로운 송신 매체로 스위칭할 경우 수신기에서의 패킷 손실을 최소화하기 위한 시스템 및 방법에 관한 것이다.
전술된 패킷-손실 최소화 기술의 결과로서, 또는 다른 원인들로, 하나의 송신 매체로부터 다른 송신 매체로의 스트림의 스위칭시에 복제 패킷들이 통신되는 것이 때때로 가능할 수 있다. 예를 들어, 실패한 송신 매체가, 실패하기 전에 송신하도록 스케줄링된 패킷들 중 일부를 송신하지만, 송신 전자 디바이스가 이를 인식하지 못하면, 송신 전자 디바이스는 새로운 송신 매체를 이용하여 이 패킷들을 재송신할 수 있다. 이러한 경우, 수신기는 통신 스트림의 적어도 몇몇 패킷들의 복제 카피들을 수신할 수 있다. 복제 패킷들을 폐기하기 위해, 바람직하게는 패킷들의 컨텐츠들을 검사할 필요없이, 수신기가 이를 신속하게 결정할 수 있는 것이 바람직할 것이다. 따라서, 본 개시의 실시예들 중 일 세트는 복제 패킷 검출 및 제거를 위한 시스템 및 방법에 관한 것이다.
본 개시의 다양한 실시예들은 원하는대로 개별적으로 또는 결합하여 구현될 수 있다. 예를 들어, 실시예들 중 일 세트에 따르면, 복수의 송신 매체들을 통해 제 2 하이브리드 네트워킹 디바이스에 커플링되는 제 1 하이브리드 네트워킹 디바이스는 본 개시의 엘리먼트들에 따라, 경로 선택, 로드 밸런싱, 스트림 스플리팅/어그리게이션, 무작위 패킷 재순서화, 및 복제 패킷 검출 및 제거에 의한 패킷 손실 최소화를 구현하도록 구성될 수 있다.
몇몇 실시예들에서, 제 1 디바이스가 스트림을 새로운 송신 매체로 스위칭하는 방법으로서, 제 1 디바이스는 복수의 송신 매체들을 통해 제 2 디바이스에 커플링되고, 방법은, 제 2 디바이스로의 송신을 위한 제 1 스트림을 수신하는 단계; 제 1 스트림의 제 1 복수의 패킷들을 복수의 송신 매체들 중 제 1 송신 매체 상에서 제 2 디바이스에 송신하는 단계 ―제 1 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들을 포함함―; 제 1 복수의 패킷들 중 적어도 일부가 제 2 디바이스에 의해 수신되지 않았을 수 있다고 결정하는 단계; 및 제 1 스트림의 제 2 복수의 패킷들을 복수의 송신 매체들 중 제 2 송신 매체 상에서 제 2 디바이스에 송신하는 단계를 포함하고, 제 1 스트림의 제 2 복수의 패킷들은 제 1 복수의 패킷들의 적어도 서브세트를 포함하고, 제 2 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들의 적어도 서브세트를 더 포함하고, 하나 또는 그 초과의 인덱스 마커 패킷들은, 복제 패킷들을 검출 및 폐기하기 위해 제 2 디바이스에 의한 이용을 위해 구성된다.
몇몇 실시예들에서, 방법은, 제 1 스트림의 제 2 복수의 패킷들을 송신하기 전에 버퍼 시작 마커 패킷을 제 2 송신 매체 상에서 제 2 디바이스에 송신하는 단계를 더 포함하고, 버퍼 시작 마커 패킷은, 제 1 스트림의 제 2 복수의 패킷들의 적어도 서브세트가 제 1 송신 매체 상에서 송신된 패킷들을 복제할 수 있음을 제 2 디바이스에 나타내고, 버퍼 시작 마커 패킷은, 인덱스 마커 패킷을 식별하고, 식별된 인덱스 마커 패킷에 대한, 제 1 스트림에서의 버퍼 시작 마커 패킷의 위치를 나타내는 정보를 포함한다.
몇몇 실시예들에서, 방법은, 제 2 복수의 패킷들에 포함된 제 1 복수의 패킷들의 적어도 서브세트를 제 2 송신 매체 상에서 송신한 후 버퍼 종료 마커 패킷을 제 2 송신 매체 상에서 제 2 디바이스에 송신하는 단계를 더 포함하고, 버퍼 종료 마커 패킷은, 제 2 송신 매체 상에서 송신된 후속 패킷들이 제 1 송신 매체 상에서 송신된 패킷들을 복제한 것이 아님을 제 2 디바이스에 나타낸다.
몇몇 실시예들에서, 방법은, 인덱스 마커 패킷들을 제 1 스트림에 삽입하기 위한 제 1 인터벌을 결정하는 단계; 복수의 인덱스 마커 패킷들의 제 1 부분을 제 1 인터벌에 제 1 스트림에 삽입하는 단계; 인덱스 마커 패킷들을 제 1 스트림에 삽입하기 위한 제 2 인터벌을 결정하는 단계 ―제 2 인터벌은 제 1 인터벌과 상이함―; 및 복수의 인덱스 마커 패킷들의 제 2 부분을 제 2 인터벌에 제 1 스트림에 삽입하는 단계를 더 포함한다.
몇몇 실시예들에서, 방법은, 제 1 스트림의 패킷들의 서브세트를 버퍼에 저장하는 단계를 더 포함하고, 제 2 복수의 패킷들에 포함된 제 1 복수의 패킷들의 적어도 서브세트는 버퍼에 저장된 제 1 스트림의 패킷들의 서브세트를 포함한다.
몇몇 실시예들에서, 제 1 복수의 패킷들 중 적어도 일부가 수신기에 의해 수신되지 않았을 수 있다고 결정하는 단계는 제 1 송신 매체가 실패했다고 결정하는 단계를 포함한다.
몇몇 실시예들에서, 디바이스는 복수의 송신 매체들을 통해 제 2 디바이스에 커플링하기 위한 복수의 포트들; 및 스트림을 새로운 송신 매체로 스위칭하도록 구성되는 로직을 포함하고, 로직은, 제 2 디바이스로의 송신을 위한 제 1 스트림을 수신하고; 제 1 스트림의 제 1 복수의 패킷들을 복수의 송신 매체들 중 제 1 송신 매체 상에서 제 2 디바이스에 송신하고 ―제 1 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들을 포함함―; 제 1 복수의 패킷들 중 적어도 일부가 제 2 디바이스에 의해 수신되지 않았을 수 있다고 결정하고; 그리고 제 1 스트림의 제 2 복수의 패킷들을 복수의 송신 매체들 중 제 2 송신 매체 상에서 제 2 디바이스에 송신하도록 구성되고, 제 1 스트림의 제 2 복수의 패킷들은 제 1 복수의 패킷들의 적어도 서브세트를 포함하고, 제 2 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들의 적어도 서브세트를 더 포함하고, 하나 또는 그 초과의 인덱스 마커 패킷들은, 복제 패킷들을 검출 및 폐기하기 위해 제 2 디바이스에 의한 이용을 위해 구성된다.
몇몇 실시예들에서, 로직은, 제 1 스트림의 제 2 복수의 패킷들을 송신하기 전에 버퍼 시작 마커 패킷을 제 2 송신 매체 상에서 제 2 디바이스에 송신하도록 추가로 구성되고, 버퍼 시작 마커 패킷은, 제 1 스트림의 제 2 복수의 패킷들의 적어도 서브세트가 제 1 송신 매체 상에서 송신된 패킷들을 복제할 수 있음을 제 2 디바이스에 나타내고, 버퍼 시작 마커 패킷은, 인덱스 마커 패킷을 식별하고, 식별된 인덱스 마커 패킷에 대한, 제 1 스트림에서의 버퍼 시작 마커 패킷의 위치를 나타내는 정보를 포함한다.
몇몇 실시예들에서, 로직은, 제 2 복수의 패킷들에 포함된 제 1 복수의 패킷들의 적어도 서브세트를 제 2 송신 매체 상에서 송신한 후 버퍼 종료 마커 패킷을 제 2 송신 매체 상에서 제 2 디바이스에 송신하도록 추가로 구성되고, 버퍼 종료 마커 패킷은, 제 2 송신 매체 상에서 송신된 후속 패킷들이 제 1 송신 매체 상에서 송신된 패킷들을 복제한 것이 아님을 제 2 디바이스에 나타낸다.
몇몇 실시예들에서, 로직은, 인덱스 마커 패킷들을 제 1 스트림에 삽입하기 위한 제 1 인터벌을 결정하고; 복수의 인덱스 마커 패킷들의 제 1 부분을 제 1 인터벌에 제 1 스트림에 삽입하고; 인덱스 마커 패킷들을 제 1 스트림에 삽입하기 위한 제 2 인터벌을 결정하고 ―제 2 인터벌은 제 1 인터벌과 상이함―; 및 복수의 인덱스 마커 패킷들의 제 2 부분을 제 2 인터벌에 제 1 스트림에 삽입하도록 추가로 구성된다.
몇몇 실시예들에서, 로직은, 제 1 스트림의 패킷들의 서브세트를 버퍼에 저장하도록 추가로 구성되고, 제 2 복수의 패킷들에 포함된 제 1 복수의 패킷들의 적어도 서브세트는 버퍼에 저장된 제 1 스트림의 패킷들의 서브세트를 포함한다.
몇몇 실시예들에서, 제 1 복수의 패킷들 중 적어도 일부가 수신기에 의해 수신되지 않았을 수 있다고 결정하도록 구성되는 로직은 제 1 송신 매체가 실패했다고 결정하도록 추가로 구성된다.
몇몇 실시예들에서, 스트림을 새로운 송신 매체로 스위칭하기 위한 시스템은, 제 2 디바이스로의 송신을 위한 제 1 스트림을 수신하기 위한 수단; 제 1 스트림의 제 1 복수의 패킷들을 복수의 송신 매체들 중 제 1 송신 매체 상에서 제 2 디바이스에 송신하기 위한 수단 ―제 1 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들을 포함함―; 제 1 복수의 패킷들 중 적어도 일부가 제 2 디바이스에 의해 수신되지 않았을 수 있다고 결정하기 위한 수단; 및 제 1 스트림의 제 2 복수의 패킷들을 복수의 송신 매체들 중 제 2 송신 매체 상에서 제 2 디바이스에 송신하기 위한 수단을 포함하고, 제 1 스트림의 제 2 복수의 패킷들은 제 1 복수의 패킷들의 적어도 서브세트를 포함하고, 제 2 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들의 적어도 서브세트를 더 포함하고, 하나 또는 그 초과의 인덱스 마커 패킷들은, 복제 패킷들을 검출 및 폐기하기 위해 제 2 디바이스에 의한 이용을 위해 구성된다.
몇몇 실시예들에서, 컴퓨터 판독가능 메모리 매체는, 스트림을 새로운 송신 매체로 스위칭하기 위한 프로그램 명령들을 포함하고, 프로그램 명령들은, 송신을 위한 제 1 스트림을 수신하고; 제 1 스트림의 제 1 복수의 패킷들을 송신을 위한 복수의 송신 매체들 중 제 1 송신 매체에 라우팅하고 ―제 1 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들을 포함함―; 제 1 복수의 패킷들 중 적어도 일부가 제 2 디바이스에 의해 수신되지 않았을 수 있다고 결정하고; 그리고 제 1 스트림의 제 2 복수의 패킷들을 송신을 위한 복수의 송신 매체들 중 제 2 송신 매체에 라우팅하도록 실행가능하고, 제 1 스트림의 제 2 복수의 패킷들은 제 1 복수의 패킷들의 적어도 서브세트를 포함하고, 제 2 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들의 적어도 서브세트를 더 포함하고, 하나 또는 그 초과의 인덱스 마커 패킷들은, 복제 패킷들을 검출 및 폐기하기 위해 제 2 디바이스에 의한 이용을 위해 구성된다.
몇몇 실시예들에서, 수신 디바이스가 송신 디바이스로부터 수신된 복제 패킷들을 제거하는 방법으로서, 수신 디바이스는 복수의 송신 매체들을 통해 송신 디바이스에 커플링되고, 방법은, 제 1 스트림의 제 1 복수의 패킷들을 복수의 송신 매체들 중 제 1 송신 매체 상에서 수신하는 단계 ―제 1 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들을 포함함―; 제 1 스트림의 제 2 복수의 패킷들을 제 2 송신 매체 상에서 수신하는 단계 ―제 2 복수의 패킷들은 제 1 복수의 패킷들의 적어도 서브세트를 포함하고, 제 2 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들의 적어도 서브세트를 더 포함함―; 제 1 복수의 패킷들 및 제 2 복수의 패킷들에 포함된 하나 또는 그 초과 인덱스 마커 패킷들에 기초하여, 제 1 송신 매체 상에서 수신된 제 1 복수의 패킷들 또는 제 2 송신 매체 상에서 수신된 제 2 복수의 패킷들 중 하나 또는 그 초과가 복제 패킷들이라고 결정하는 단계; 및 결정된 복제 패킷들을 폐기하는 단계를 포함한다.
몇몇 실시예들에서, 방법은, 제 1 스트림에서 수신된 마지막 인덱스 마커, 및 제 1 송신 매체 상에서 마지막 인덱스 마커 이후 수신된 제 1 스트림의 패킷들의 수를 나타내는 정보를 저장하는 단계; 제 1 스트림의 제 2 복수의 패킷들을 수신하기 전에 제 2 송신 매체 상에서 버퍼 시작 마커 패킷을 수신하는 단계 ―버퍼 시작 마커 패킷은, 제 1 스트림의 제 2 복수의 패킷들의 적어도 서브세트가 제 1 송신 매체 상에서 송신된 패킷들을 복제할 수 있음을 나타내고, 버퍼 시작 마커 패킷은, 인덱스 마커 패킷을 식별하고, 식별된 인덱스 마커 패킷에 대한, 제 1 스트림에서의 버퍼 시작 마커 패킷의 위치를 나타내는 정보를 포함함―; 및 제 1 스트림에서 수신된 마지막 마커 인덱스, 및 제 1 송신 매체 상에서 마지막 인덱스 마커 이후 수신된 제 1 스트림의 패킷들의 수를 나타내는 저장된 정보를, 가장 최근의 인덱스 마커에 대한, 제 1 스트림에서의 버퍼 시작 마커 패킷의 위치를 나타내는 정보와 비교하는 단계를 더 포함하고, 상기 제 1 송신 매체 상에서 수신된 제 1 복수의 패킷들 또는 제 2 송신 매체 상에서 수신된 제 2 복수의 패킷들 중 하나 또는 그 초과가 복제 패킷들이라고 결정하는 단계는 상기 비교에 기초한다.
몇몇 실시예들에서, 방법은, 제 2 송신 매체 상에서 버퍼 종료 마커 패킷을 수신하는 단계를 더 포함하고, 버퍼 종료 마커 패킷은, 제 2 송신 매체 상에서 수신된 제 1 스트림의 후속 패킷들이 제 1 송신 매체 상에서 수신된 제 1 스트림의 패킷들을 복제한 것이 아님을 나타낸다.
몇몇 실시예들에서, 제 1 복수의 패킷들 중 일부는, 버퍼 시작 마커 패킷이 제 2 송신 매체 상에서 수신된 후 제 1 송신 매체 상에서 수신되고, 방법은, 버퍼 시작 마커 패킷이 수신된 후 수신된 제 1 복수의 패킷들 중 일부를 폐기하는 단계를 더 포함한다.
몇몇 실시예들에서, 디바이스는, 복수의 송신 매체들을 통해 제 2 디바이스에 커플링하기 위한 복수의 포트들; 및 제 2 디바이스로부터 수신된 복제 패킷들을 검출 및 제거하도록 구성되는 로직을 포함하고, 로직은, 제 1 스트림의 제 1 복수의 패킷들을 복수의 송신 매체들 중 제 1 송신 매체 상에서 수신하고 ―제 1 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들을 포함함―; 제 1 스트림의 제 2 복수의 패킷들을 제 2 송신 매체 상에서 수신하고 ―제 2 복수의 패킷들은 제 1 복수의 패킷들의 적어도 서브세트를 포함하고, 제 2 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들의 적어도 서브세트를 더 포함함―; 제 1 복수의 패킷들 및 제 2 복수의 패킷들에 포함된 하나 또는 그 초과 인덱스 마커 패킷들에 기초하여, 제 1 송신 매체 상에서 수신된 제 1 복수의 패킷들 또는 제 2 송신 매체 상에서 수신된 제 2 복수의 패킷들 중 하나 또는 그 초과가 복제 패킷들이라고 결정하고; 그리고 결정된 복제 패킷들을 폐기하도록 구성된다.
몇몇 실시예들에서, 로직은, 제 1 스트림에서 수신된 마지막 인덱스 마커, 및 제 1 송신 매체 상에서 마지막 인덱스 마커 이후 수신된 제 1 스트림의 패킷들의 수를 나타내는 정보를 저장하고; 제 1 스트림의 제 2 복수의 패킷들을 수신하기 전에 제 2 송신 매체 상에서 버퍼 시작 마커 패킷을 수신하고 ―버퍼 시작 마커 패킷은, 제 1 스트림의 제 2 복수의 패킷들의 적어도 서브세트가 제 1 송신 매체 상에서 송신된 패킷들을 복제할 수 있음을 나타내고, 버퍼 시작 마커 패킷은, 인덱스 마커 패킷을 식별하고, 식별된 인덱스 마커 패킷에 대한, 제 1 스트림에서의 버퍼 시작 마커 패킷의 위치를 나타내는 정보를 포함함―; 그리고 제 1 스트림에서 수신된 마지막 마커 인덱스, 및 제 1 송신 매체 상에서 마지막 인덱스 마커 이후 수신된 제 1 스트림의 패킷들의 수를 나타내는 저장된 정보를, 가장 최근의 인덱스 마커에 대한, 제 1 스트림에서의 버퍼 시작 마커 패킷의 위치를 나타내는 정보와 비교하도록 추가로 구성되고, 상기 제 1 송신 매체 상에서 수신된 제 1 복수의 패킷들 또는 제 2 송신 매체 상에서 수신된 제 2 복수의 패킷들 중 하나 또는 그 초과가 복제 패킷들이라고 결정하는 단계는 상기 비교에 기초한다.
몇몇 실시예들에서, 로직은, 제 2 송신 매체 상에서 버퍼 종료 마커 패킷을 수신하도록 추가로 구성되고, 버퍼 종료 마커 패킷은, 제 2 송신 매체 상에서 수신된 제 1 스트림의 후속 패킷들이 제 1 송신 매체 상에서 수신된 제 1 스트림의 패킷들을 복제한 것이 아님을 나타낸다.
몇몇 실시예들에서, 제 1 복수의 패킷들 중 일부는, 버퍼 시작 마커 패킷이 제 2 송신 매체 상에서 수신된 후 제 1 송신 매체 상에서 수신되고, 로직은, 버퍼 시작 마커 패킷이 수신된 후 수신된 제 1 복수의 패킷들 중 일부를 폐기하도록 추가로 구성된다.
몇몇 실시예들에서, 수신 디바이스가 송신 디바이스로부터 수신된 복제 패킷들을 제거하는 시스템으로서, 수신 디바이스는 복수의 송신 매체들을 통해 송신 디바이스에 커플링되고, 시스템은, 제 1 스트림의 제 1 복수의 패킷들을 복수의 송신 매체들 중 제 1 송신 매체 상에서 수신하기 위한 수단 ―제 1 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들을 포함함―; 제 1 스트림의 제 2 복수의 패킷들을 제 2 송신 매체 상에서 수신하기 위한 수단 ―제 2 복수의 패킷들은 제 1 복수의 패킷들의 적어도 서브세트를 포함하고, 제 2 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들의 적어도 서브세트를 더 포함함―; 제 1 복수의 패킷들 및 제 2 복수의 패킷들에 포함된 하나 또는 그 초과 인덱스 마커 패킷들에 기초하여, 제 1 송신 매체 상에서 수신된 제 1 복수의 패킷들 또는 제 2 송신 매체 상에서 수신된 제 2 복수의 패킷들 중 하나 또는 그 초과가 복제 패킷들이라고 결정하기 위한 수단; 및 결정된 복제 패킷들을 폐기하기 위한 수단을 포함한다.
몇몇 실시예들에서, 컴퓨터 판독가능 메모리 매체는, 수신된 복제 패킷들을 검출 및 제거하기 위한 프로그램 명령들을 포함하고, 프로그램 명령들은, 제 1 스트림의 제 1 복수의 패킷들을 복수의 송신 매체들 중 제 1 송신 매체를 통해 수신하고 ―제 1 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들을 포함함―; 제 1 스트림의 제 2 복수의 패킷들을 제 2 송신 매체를 통해 수신하고 ―제 2 복수의 패킷들은 제 1 복수의 패킷들의 적어도 서브세트를 포함하고, 제 2 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들의 적어도 서브세트를 더 포함함―; 제 1 복수의 패킷들 및 제 2 복수의 패킷들에 포함된 하나 또는 그 초과 인덱스 마커 패킷들에 기초하여, 제 1 송신 매체 상에서 수신된 제 1 복수의 패킷들 또는 제 2 송신 매체 상에서 수신된 제 2 복수의 패킷들 중 하나 또는 그 초과가 복제 패킷들이라고 결정하고; 그리고 결정된 복제 패킷들을 폐기하도록 실행가능하다.
몇몇 실시예들에서, 스트림을 새로운 송신 매체로 스위칭하는 경우 패킷 손실을 최소화하기 위한 방법으로서, 방법은, 제 1 스트림의 제 1 복수의 패킷들을 제 1 송신 매체 상에서 수신기에 송신하는 단계; 제 1 스트림의 제 1 복수의 패킷들의 제 1 부분을 버퍼에 저장하는 단계; 제 1 복수의 패킷들 중 일부가 수신기에 의해 수신되지 않았을 수 있다고 결정하는 단계; 및 버퍼에 저장된 제 1 복수의 패킷들의 제 1 부분을 제 2 송신 매체 상에서 수신기에 재송신하는 단계를 포함한다.
몇몇 실시예들에서, 방법은, 버퍼를 업데이트하는 단계를 더 포함하고, 상기 업데이트하는 단계는, 하나 또는 그 초과의 성공적으로 송신된 패킷들을 버퍼로부터 제거하는 단계; 존속(age) 임계치보다 더 오래된 하나 또는 그 초과의 패킷들을 버퍼로부터 제거하는 단계; 버퍼의 풀니스(fullness)에 기초하여 하나 또는 그 초과의 패킷들을 버퍼로부터 제거하는 단계; 또는 송신을 위해 스케줄링된 패킷을 버퍼에 추가하는 단계 중 하나 또는 그 초과를 포함한다.
몇몇 실시예들에서, 버퍼는, 헤드 엔드(head end) 및 테일 엔드(tail end)를 포함하고, 방법은, 수신기로의 송신을 위한 제 1 스트림의 추가적인 패킷을 수신하는 단계; 제 1 스트림의 추가적인 패킷을 버퍼의 테일 엔드에 저장하는 단계; 및 수신기로의 송신을 위해 제 1 스트림의 추가적인 패킷을 수신하는 것에 기초하여, 버퍼의 헤드 엔드로부터 미리 선택된 수의 패킷들을 제 2 송신 매체 상에서 재송신하는 단계를 더 포함한다.
몇몇 실시예들에서, 복수의 송신 매체들을 통해 수신된 제 1 스트림의 무작위 패킷들을 재순서화하기 위한 방법은, 제 1 스트림의 제 1 복수의 패킷들의 제 1 부분을 제 1 송신 매체 상에서 수신하고 프로세싱하는 단계; 제 1 스트림의 스트림-시작 마커 패킷을 제 2 송신 매체 상에서 수신하는 단계; 제 1 스트림의 제 2 복수의 패킷들의 제 1 부분을 제 2 송신 매체 상에서 수신하고 버퍼링하는 단계 ―제 1 복수의 패킷들은 제 1 스트림 패킷의 순서화에서 제 2 복수의 패킷들 이전에 있음―; 제 1 스트림의 제 1 복수의 패킷들의 제 2 부분을 제 1 송신 매체 상에서 수신하고 프로세싱하는 단계 ―제 1 복수의 패킷들의 제 2 부분은, 스트림-시작 마커 패킷이 수신된 후 수신됨―; 스트림-종료 마커 패킷을 제 1 송신 매체 상에서 수신하는 단계 ―스트림-종료 마커 패킷은, 제 2 복수의 패킷들의 제 1 부분이 수신된 후 수신됨―; 제 1 송신 매체 상에서 스트림-종료 마커 패킷을 수신하는 것에 기초하여, 제 1 송신 매체 상에서 스트림-종료 마커 패킷을 수신한 후 제 2 복수의 패킷들의 버퍼링된 제 1 부분을 프로세싱하는 단계; 및 제 1 스트림의 제 2 복수의 패킷들의 제 2 부분을 제 2 송신 매체 상에서 수신하고 프로세싱하는 단계를 포함하고, 상기 제 2 복수의 패킷들의 제 2 부분을 프로세싱하는 단계는 상기 제 2 복수의 패킷들의 버퍼링된 제 1 부분을 프로세싱하는 단계 후에 수행된다.
몇몇 실시예들에서, 수신기가 자체-스로틀링(self-throttle)하는 방법은, 제 1 스트림의 제 1 복수의 패킷들을 제 1 송신 매체 상에서 수신하는 단계; 제 1 스트림의 제 1 복수의 패킷들을 버퍼에 저장하는 단계 ―버퍼는 헤드 엔드 및 테일 엔드를 포함함; 제 1 스트림의 추가적인 패킷을 제 1 송신 매체 상에서 수신하는 단계; 제 1 스트림의 추가적인 패킷을 버퍼의 테일 엔드에 저장하는 단계; 상기 제 1 스트림의 추가적인 패킷을 제 1 송신 매체 상에서 수신하는 것에 기초하여, 버퍼의 헤드 엔드로부터 미리 선택된 수의 패킷들을 프로세싱하는 단계; 및 버퍼의 헤드 엔드로부터 미리 선택된 수의 프로세싱된 패킷들을 제거하는 단계를 포함한다.
하기 도면들과 함께 하기 실시예들의 상세한 설명을 읽을 경우 본 발명의 더 양호한 이해가 획득될 수 있다.
도 1은, 일 실시예에 따라 복수의 네트워킹 기술들을 포함하는 예시적인 통신 네트워크를 예시한다.
도 2는, 일 실시예에 따른 예시적인 디바이스의 시스템 도면이다.
도 3은, 일 실시예에 따른 다수의 네트워킹 인터페이스들을 구현하는 하이브리드 디바이스에 대한 예시적인 프로토콜 스택을 예시하는 개념도이다.
도 4 내지 도 7은, 실시예들의 일 세트에 따른 다수의 송신 매체들을 통해 스트림들을 송신 및 수신하기 위한 방법들을 예시하는 흐름도 도면들이다.
도 8은, 일 실시예에 따른 스트림 스플리팅/스트림 어그리게이션을 둘러싼 송신 디바이스와 수신 디바이스 사이의 메시지 플로우를 예시하는 통신 도면이다.
도 9는, 일 실시예에 따른 상이한 시나리오들에 따라 다양한 송신 매체들의 가설적 링크 능력들을 예시하는 차트이다.
도 10a 및 도 10b는, 스트림 스플리팅/스트림 어그리게이션이 일 실시예에 따라 구현될 수 있는 시나리오들을 예시하는 블록도들이다.
도 11은, 일 실시예에 따른 어그리게이트된 패킷 스트림의 패킷 순서화를 유지하기 위해 수신 디바이스에 의해 이용될 수 있는 순환 버퍼를 예시하는 도면이다.
본 발명은 다양한 변형들 및 대안적인 형태들을 허용하는 한편, 이들의 특정한 실시예들은 도면들에서 예시의 방식으로 도시되고, 본 명세서에서 상세히 설명된다. 그러나, 이들에 대한 도면들 및 상세한 설명은, 본 발명을 개시된 특정한 형태로 제한하려는 의도가 아니라, 반대로, 본 발명은, 첨부된 청구항들에 의해 정의되는 바와 같은 본 발명의 사상 및 범위 내에 속하는 모든 변형들, 균등물들 및 대안들을 커버함을 이해해야 한다.
용어들
다음은 본 출원에서 사용되는 용어들의 용어집이다.
메모리 매체 - 임의의 다양한 타입들의 메모리 디바이스들 또는 저장 디바이스들. 용어들 "메모리" 및 "메모리 매체"는 설치 매체(installation medium), 이를테면, CD-ROM, 플로피 디스크들, 또는 테이프 디바이스; 컴퓨터 시스템 메모리 또는 랜덤 액세스 메모리, 이를테면, DRAM, DDR RAM, SRAM, EDO RAM, 램버스 RAM, 등; 또는 비-휘발성 메모리, 이를테면, 플래쉬 메모리, 하드웨어 레지스터들, 자기 매체들(예를 들어, 하드 드라이브), 또는 광학 저장부를 포함하는 것으로 의도된다. 메모리 매체는, 다른 타입들의 메모리뿐만 아니라, 또는 이들의 조합들을 포함할 수 있다. 용어 "메모리 매체"는 둘 또는 그 초과의 메모리 매체들을 포함할 수 있다.
컴퓨터 시스템 - 개인용 컴퓨터 시스템(PC), 메인프레임 컴퓨터 시스템, 워크스테이션, 네트워크 기기, 인터넷 기기, 모바일 폰, 스마트 폰, 랩탑, 노트북, 넷북, 또는 태블릿 컴퓨터 시스템, 개인 휴대 정보 단말(PDA), 멀티미디어 디바이스, 또는 다른 디바이스 또는 디바이스들의 조합들을 포함하는 임의의 다양한 타입들의 이동식 또는 고정식 컴퓨팅 또는 프로세싱 시스템들. 일반적으로, 용어 "컴퓨터 시스템"은 메모리 매체로부터의 명령들을 실행하는 적어도 하나의 프로세서를 갖는 임의의 디바이스(또는 디바이스들의 조합)를 포함하는 것으로 광범위하게 정의될 수 있다.
송신 매체 - (트위스티드 페어, 광섬유, 전화 배선, 전기 배선 등과 같은) 유선 송신 매체들 또는 (전자기 스펙트럼에서 임의의 다양한 허가된 또는 미허가된 대역들 등과 같은) 무선 송신 매체들을 포함하는, 통신을 송신/수신하기 위해 이용될 수 있는 임의의 다양한 매체들. 문구 "동적 송신 매체"는 더 구체적으로, 짧은 시간량에 걸쳐 그의 PHY 레이트에서 상당히 변화하는 송신 매체를 지칭할 수 있다. 802.11(WLAN/Wi-Fi) 및 전력선 통신 네트워크들(PLC)은, 동적 송신 매체들을 활용하는 네트워킹 기술들의 2개의 예들이며; 간섭, 채널 페이딩, 잡음 조건들 등과 같은 비교적 예측불가능한 팩터들이, 802.11 네트워크들에 의해 이용되는 ISM 대역들 및 PLC 네트워크들에 의해 이용되는 전기 배선 모두에 영향을 미칠 수 있다.
스트림 - 또한 "플로우"로 지칭됨. 이 분야의 당업자들에 의해 일반적으로 이해되는 바와 같이, 용어 스트림은, 몇몇 공통 특성들을 공유하는, 시간에 걸쳐 이용가능해지는 데이터 엘리먼트들의 시퀀스를 지칭할 수 있다. 일례로서, 스트림의 데이터 엘리먼트들은 동일한 소스 및 수신지 IP 어드레스 및 포트들을 가질 수 있다. 몇몇 실시예들에서, 이 문구는, 통상적으로 의도된(예를 들어, 순차적인) 순서로 함께 이용하도록 의도되는 데이터 패킷들의 시퀀스를 지칭하도록 사용될 수 있다. 예를 들어, 스트림은, 비디오을 제시하기 위해 애플리케이션에 의해 이용될 수 있는 패킷들의 시퀀스를 포함할 수 있다(예를 들어, 비디오 스트림).
도 1
도 1은, 복수의 네트워크들(예를 들어, 이들 각각은 상이한 송신 매체, 또는 몇몇 경우들에서는 다수의 송신 매체들을 활용할 수 있음)을 통해 커플링된 몇몇 디바이스들(102a, 102b, ... 102n)을 포함하는 예시적인 하이브리드 네트워크(100)를 예시한다. 네트워킹 기술들은, Wi-Fi(예를 들어, 자신의 송신 매체로서 2.4 GHz, 5 GHz 및/또는 다른 ISM 대역을 이용함), 전력선 통신들(예를 들어, 자신의 송신 매체로서 전기 배선을 이용함), 이더넷(예를 들어, 트위스티드 페어, 광 섬유 및/또는 다른 유선 송신 매체들을 이용함), 및/또는 임의의 다양한 다른 네트워킹 기술들/송신 매체들을 포함할 수 있다. 도 1은 하나의 가능한 하이브리드 네트워크를 예시하지만, 본 개시의 실시예들에 따라 임의의 다양한 배열들로 도시된 네트워킹 기술들에 추가적으로 또는 대안적으로 다른 네트워킹 기술들이 이용될 수 있음을 주목해야 한다.
도 2
도 2는, 본 개시의 하나 또는 그 초과의 실시예들을 구현하도록 구성되는 전자 디바이스(200)의 일 실시예의 블록도이다. 몇몇 구현들에서, 전자 디바이스(200)는, 데스크탑 컴퓨터, 랩탑 컴퓨터, 태블릿 컴퓨터, 모바일 폰, 스마트 기기, 전력선 통신 디바이스, 게이밍 콘솔, 네트워크 브릿징 디바이스들, 또는 다수의 통신 네트워크들을 통해 통신하도록 구성되는 하이브리드 통신 유닛을 포함하는 다른 전자 시스템들 중 하나일 수 있다. 전자 디바이스(200)는 (가능하게는, 다수의 프로세서들, 다수의 코어들, 다수의 노드들을 포함하고 그리고/또는 멀티-스레딩을 구현하는 등의) 프로세서 유닛(202)을 포함한다. 전자 디바이스(200)는 메모리 유닛(206)을 포함한다. 메모리 유닛(206)은 시스템 메모리(예를 들어, 캐시, SRAM, DRAM, 제로 커패시터 RAM, 트윈 트랜지스터 RAM, eDRAM, EDO RAM, DDR RAM, EEPROM, NRAM, RRAM, SONOS, PRAM 등 중 하나 또는 그 초과), 또는 앞서 이미 설명된 머신 판독가능 매체들의 가능한 실현들 중 임의의 하나 또는 그 초과일 수 있다. 전자 디바이스(200)는 또한 버스(210)(예를 들어, PCI, ISA, PCI-Express, HyperTransport®, InfiniBand®, NuBus, AHB, AXI 등), 및 무선 네트워크 인터페이스(예를 들어, WLAN 인터페이스, Bluetooth® 인터페이스, WiMAX 인터페이스, Zigbee® 인터페이스, 무선 USB 인터페이스 등) 및/또는 유선 네트워크 인터페이스(예를 들어, 전력선 통신 인터페이스, 이더넷 인터페이스 등) 중 하나 또는 그 초과를 포함할 수 있는 네트워크 인터페이스들(204)을 포함한다. 몇몇 구현들에서, 전자 디바이스(200)는 복수의 네트워크 인터페이스들을 포함할 수 있고, 이들 각각은 전자 디바이스(200)를 상이한 통신 네트워크에 커플링시킨다. 예를 들어, 전자 디바이스(200)는, 전자 디바이스(200)를 전력선 통신 네트워크 세그먼트, 이더넷 및 무선 로컬 영역 네트워크와 각각 커플링시키는 전력선 통신 인터페이스, 이더넷 인터페이스 및 WLAN 인터페이스를 포함할 수 있다.
전자 디바이스(200)는 또한 통신 유닛(208)을 포함한다. 통신 유닛(208)은 하이브리드 제어 엔티티(212) 및 하이브리드 브릿지(214)를 포함할 수 있다. 하이브리드 제어 엔티티(212) 및 하이브리드 브릿지(214)는, 다수의, 가능하게는 동적 송신 매체들을 이용하여, 스트림들의 송신 및/또는 수신에 관한 임의의 다수의 기술들을 수행하도록 구성될 수 있다. 예를 들어, 하이브리드 제어 엔티티(212) 및/또는 하이브리드 브릿지(214)는 실시예들의 일 세트에 따라 도 4 내지 도 7의 방법들 중 임의의 또는 모든 방법들을 구현하도록 구성될 수 있다. 이 기능들 중 임의의 기능은 부분적으로 (또는 전체적으로), (예를 들어, 메모리 유닛(206)과 같은 메모리 매체에 저장된 프로그램 명령들을 실행하는) 프로세서 유닛(202) 상에서 그리고/또는 하드웨어로 구현될 수 있다. 예를 들어, 기능은 주문형 집적 회로로, 프로세서 유닛(202)에서 구현되는 로직에서, 주변 디바이스 또는 카드 상의 코-프로세서에서 등으로 구현될 수 있다. 추가로, 실현들은, 도 2에 도시되지 않은 추가적인 컴포넌트들(예를 들어, 비디오 카드들, 오디오 카드들, 추가적인 네트워크 인터페이스들, 주변 디바이스들 등) 또는 더 적은 컴포넌트들을 포함할 수 있다. 프로세서 유닛(202), 메모리 유닛(206) 및 네트워크 인터페이스들(204)이 버스(210)에 커플링된다. 버스(210)에 커플링되는 것으로 도시되지만, 메모리 유닛(206)은 프로세서 유닛(302)에 커플링될 수 있다.
도 3
일 구현에서, 도 3에 도시된 바와 같이, 하이브리드 디바이스들(102a...102n)의 네트워킹 기능은, ISO(International Standards Organization) OSI(Open Systems Interconnection) 기준 모델과 일치하는 "계층화된" 접근법을 이용하여 하위-기능들로 파티셔닝될 수 있다. 네트워킹 프로토콜 계층들의 세트는 "프로토콜 스택"으로 지칭될 수 있다. 도 3은, 다수의 네트워킹 인터페이스들을 구현하는 디바이스(102)에 대한 예시적인 프로토콜 스택을 도시한다. 도 3의 예에서, 하이브리드 디바이스(102)는 2개의 통신 인터페이스들을 포함한다. 따라서, 하이브리드 디바이스(102)는 2개의 물리(PHY) 계층들(302 및 304) 및 2개의 대응하는 매체 액세스 제어(MAC) 계층들(306 및 308)을 포함한다. MAC 계층(306) 및 PHY(302) 계층은 디바이스(102)를 하나의 통신 네트워크 세그먼트(322)(예를 들어, 이더넷)에 커플링시킨다. 유사하게, MAC 계층(308) 및 PHY 계층(304)은 하이브리드 디바이스(102)를 다른 통신 네트워크 세그먼트(324)(예를 들어, 전력선 통신 네트워크)에 커플링시킨다. 통신 네트워크 세그먼트들(322 및 324)은 각각 하이브리드 통신 네트워크와 같은 확장된 브릿지된 네트워크의 일부일 수 있음을 주목한다. 디바이스(102)는 네트워크 계층(312)을 포함한다. 네트워크 계층(312)은 인터넷 프로토콜 버전 4(IPv4) 통신 프로토콜, 인터넷 프로토콜 버전 6(IPv6) 통신 프로토콜, Appletalk® 통신 프로토콜, 또는 다른 적절한 네트워크 계층 프로토콜을 구현할 수 있다. 디바이스(102)는 또한, 네트워크 계층(312)과 MAC 계층들(306 및 308) 사이에 "하이브리드 적응 계층"(310)을 구현한다. 일례에서, 도 3에 도시된 바와 같이, 하이브리드 적응 계층(310)은, 하이브리드 제어 엔티티(212), 하이브리드 브릿지(214) 및/또는 본 개시의 실시예들을 구현하도록 구성되는 다른 모듈들을 포함할 수 있다. 디바이스(102)는 또한, 네트워크 계층(312)을 통해 동작하는 전송 계층(314)을 포함한다. 하이브리드 디바이스(102)는, 하이브리드 디바이스(102)에 의해 구현되는 네트워크 계층 프로토콜에 따라, 송신 제어 프로토콜(TCP), 사용자 데이터그램 프로토콜(UDP), 및/또는 다른 적절한 전송 계층 프로토콜들을 구현할 수 있다. 하이브리드 디바이스(102)는 또한, 다른 디바이스들과의 통신을 위해 프로토콜 스택을 활용할 수 있는 3개의 애플리케이션들(316, 318 및 320)을 포함한다.
몇몇 구현들에서, 애플리케이션 계층(애플리케이션들(316, 318 및 320)을 포함함), 전송 계층(314) 및 네트워크 계층(312)은 총괄적으로 "상위 프로토콜 계층들"로 지칭될 수 있다. MAC 계층들(306 및 308) 및 PHY 계층들(302 및 304)은 총괄적으로 "하위 프로토콜 계층들"로 지칭될 수 있다. 하이브리드 적응 계층(310)은, 상위 프로토콜 계층들의 단일 세트(예를 들어, 구현된 각각의 상위 계층 프로토콜 타입에 대한 단일의 네트워크 계층 및 전송 계층)를 이용하여, 그러나 다수의 네트워킹 인터페이스들(예를 들어, 다수의 PHY 계층들 및 MAC 계층들)을 이용하여, 하이브리드 디바이스(102) 내의 네트워크 통신들을 관리하기 위한 기능을 구현할 수 있다. 일 구현에서, 하이브리드 적응 계층(310)은, 프로토콜 스택의 상위 계층들에 투명한 고속 패킷 라우팅 변경들을 행하고 네트워킹 자원들을 관리하기 위해, 기본적인 MAC 계층들(306 및 308)과 인터페이싱할 수 있다. 하이브리드 적응 계층(310)은 또한, 소스 하이브리드 디바이스(102)가 단일의 MAC 계층 및 대응하는 단일의 PHY 계층만을 포함하는 것처럼 상위 프로토콜 계층들이 동작하게 할 수 있다. 도 3에 도시된 프로토콜 스택은 하이브리드 디바이스(102)의 아키텍쳐의 일 실시예를 예시함을 주목한다. 다른 구현들에서, 하이브리드 디바이스(들)(102)는, 구현될 수 있는 네트워킹 기술 및 선택적인 프로토콜들에 따라 다른 적절한 계층들 또는 서브-계층들을 포함할 수 있다. 예를 들어, 몇몇 네트워킹 기술들은 MAC 계층 위에 이더넷 컨버전스 계층을 구현할 수 있다. 다른 예로서, 몇몇 네트워킹 기술들은 로직 링크 제어(LLC) 프로토콜 계층을 포함할 수 있다. 게다가, 몇몇 구현들에서, 하나 또는 그 초과의 다른 서브-계층들이 본 명세서에서 설명된 기능을 실행할 수 있다.
도 4
도 4 내지 도 7은, 다수의 송신 매체들을 이용하는 네트워크 통신에 관한 몇몇 방법들을 예시하는 흐름도 도면들이다. 도 4 내지 도 7에 대해 아래에서 설명되는 단계들은 특정한 순서로 도시되지만, 다양한 실시예들에 따라, 단계들 중 하나 또는 그 초과는 생략되거나, 반복되거나, 도시된 순서와는 상이한 순서로 수행될 수 있음을 주목해야 한다. 원하는대로, 하나 또는 그 초과의 추가적인 단계들이 추가적으로 또는 대안적으로 추가될 수 있다. 몇몇 실시예들에서, 방법들 중 하나 또는 그 초과(또는, 방법들 중 하나 또는 그 초과의 방법의 하나 또는 그 초과의 단계들)는 서로 결합될 수 있다.
도 4는, 디바이스가 스트림을 제 2 디바이스에 송신하는 방법의 실시예들을 예시하는 흐름도이다. 방법을 구현하는 디바이스는, 복수의 송신 매체들을 통해 제 2 디바이스에 커플링될 수 있는데; 예를 들어, 제 1 및 제 2 디바이스들은, 몇몇 실시예들에서 도 1에 도시된 디바이스들 중 둘일 수 있다. 방법을 구현하는 시스템은, 도 2에 도시되고 몇몇 실시예들에서 그에 대해 설명된 것과 같은 시스템일 수 있다. 시스템은, 도 3에 도시되고 그에 대해 설명된 것과 같은 OSI 프로토콜 스택을 구현할 수 있다. 예를 들어, 실시예들의 일 세트에서, 방법은, 예를 들어, 하이브리드 제어 엔티티(212) 및/또는 하이브리드 브릿지(214)에 의해 하이브리드 적응 계층(310)에서 구현될 수 있다. 다른 실시예들에서, 방법은 다른 계층 또는 몇몇 계층들에서 구현될 수 있다 (예를 들어, 몇몇 계층들 각각은 방법의 엘리먼트들을 구현할 수 있다). 방법은 다음과 같이 수행될 수 있다.
402에서, 복수의 송신 매체들 각각의 경로 특성들이 결정될 수 있다. 몇몇 실시예들에서, 송신 매체들 중 적어도 하나는 성질상 실질적으로 동적일 수 있다. 예를 들어, 송신 매체들은, Wi-Fi(예를 들어, 2.4 GHz, 5 GHz 및/또는 다른 ISM 주파수 대역을 이용함), PLC(예를 들어, 전기 배선을 이용함), 및/또는 다양한 팩터들(예를 들어, 간섭, 채널 페이딩 또는 다른 팩터들을 포함함)에 따라 시간에 걸쳐 PHY 레이트에서 변할 수 있는 하나 또는 그 초과의 다른 실질적으로 동적인 송신 매체들을 포함할 수 있다. 송신 매체들은 또한, 성질상 실질적으로 동적이 아닌 하나 또는 그 초과의 송신 매체들, 즉, 이더넷과 같이, PHY 레이트가 시간에 걸쳐 실질적으로 정적이고 예측가능할 수 있는 송신 매체들을 포함할 수 있다.
몇몇 실시예들에 따르면, 각각의 송신 매체에 대해 결정된 경로 특성들은, 각각의 송신 매체의 현재의 매체 활용도, 최대 매체 활용도, 및/또는 하나 또는 그 초과의 링크 용량들을 포함할 수 있다. 몇몇 실시예들에 따르면, 현재의 매체 활용도는, 송신 매체가 비지(busy)인 시간의 퍼센티지일 수 있다. 최대 매체 활용도는 최대 허용된 매체 활용도일 수 있다. 예를 들어, 현재의 매체 활용도가 최대 매체 활용도보다 크면, 송신 매체는 과다가입된 것 또는 과다용량인 것으로 고려될 수 있고, 이것은 하나 또는 그 초과의 로드 밸런싱 판정들을 트리거링할 수 있다. 몇몇 실시예들에서, 최대 매체 활용도는 100% 미만으로 설정될 수 있는데, 즉, 예를 들어, 개별적인 스트림 매체 활용도에서의 가변성을 고려하여 원하는 성능을 제공하기 위해 마진이 유지될 수 있다. 즉, 개별적인 패킷 스트림들의 매체 이용 레이트(개별적인 스트림들의 "스트림 매체 활용도")는 시간에 걸쳐 변할 수 있기 때문에, 매체 상에서 송신되도록 스케줄링되는 트래픽의 양이 그 트래픽을 지원하는 매체의 용량을 초과하기 전에 트래픽을 매체로부터 멀리 시프트시킴으로써, 송신 매체 상에서 통신되고 있는 스트림들의 성능에 부정적으로 영향을 미치는 것을 회피하기 위해, 최대 매체 활용도 레이트를 100% 미만으로 설정하는 것이 바람직할 수 있다. 송신 매체의 최대 매체 활용도는, 상이한 타입들의 송신 매체들/통신 인터페이스들에 대해 그리고/또는 다양한 실시예들에 따라 송신 매체를 이용하도록 스케줄링되는 (예를 들어, 스트림 컨텐츠, 패킷 타입 및/또는 우선순위 레벨에 기초한) 상이한 타입들의 스트림들에 따라 상이할 수 있다. 특정한 수신지에 대한 송신 매체의 링크 용량은, 소스와 수신지 디바이스 사이의 송신 매체의 이용가능한 데이터 전달 용량일 수 있다. 즉, 송신 매체의 링크 용량은, 주어진 시간에 송신 매체가 얼마나 많은 추가적인 데이터를 특정한 디바이스에 송신할 수 있는지의 측정치(예를 들어, 초당 메가비트(Mbps), 초당 기가비트(Gbps), 또는 데이터 레이트들에 대한 임의의 다른 측정 단위)이다. 몇몇 실시예들에서, 링크 용량은 각각의 송신 매체에 의해 액세스될 수 있는 각각의 가능한 수신지에 대해 추정될 수 있다. 예를 들어, 실시예들의 일 세트에 따르면, 디바이스가 PLC, Wi-Fi 2.4 GHz 또는 Wi-Fi 5 GHz 중 임의의 것을 이용하여 2개의 다른 디바이스들과 통신하도록 구성되면, 6개의 링크 용량 추정치들이 결정될 수 있다. 링크 용량은 몇몇 실시예들에서, 최대 매체 활용도, 송신 매체의 PHY 레이트 및 에러 레이트를 설명할 수 있다. 몇몇 실시예들에서 다른 팩터들이 추가적으로 또는 대안적으로 링크 용량 계산/추정에 포함될 수 있다. 예를 들어, 실시예들의 일 세트에서, 송신 매체의 링크 용량은, 예를 들어, 우선순위 및/또는 컨텐츠 타입에 따라, 상이한 타입들의 스트림들에 대해 상이할 수 있는데, 이는, 더 높은 우선순위 스트림들에 대한 링크 용량 계산이 더 낮은 우선순위 스트림을 대신할 가능성을 설명할 수 있기 때문이다.
몇몇 실시예들에서, 이러한 경로 특성들은, 시스템에 이용가능한 송신 매체들 전부(잠재적으로 동적 및 정적 송신 매체들 모두를 포함함)에 대해 결정될 수 있음을 주목한다. 이러한 경로 특성들에 부가하여 (또는 이들 중 하나 또는 그 초과에 대신하여), 송신 매체들 중 하나 또는 그 초과에 대해 하나 또는 그 초과의 다른 특성들(가능하게는 매체 특정 특성들을 포함함)이 결정될 수 있다. 예를 들어, 몇몇 실시예들에서, Wi-Fi 접속들에 대해 효과적인 매체 활용도 및 링크 용량들이 결정될 수 있다. 이 유도된 경로 특성들은, 이러한 접속들이 액세스 포인트(예를 들어, 무선 라우터)를 통해 중계하는 것을 포함할 수 있다는 사실을 설명하도록 조절될 수 있다. 추가적으로, 몇몇 실시예들에서, 각각의 송신 매체 상의 개별적인 스트림들(예를 들어, 패킷 스트림들)의 이용 특성들이 결정될 수 있다. 예를 들어, 몇몇 실시예들에서, 송신 매체 상에서 송신되고 있는 각각의 스트림에 대해, 추정된 스트림 매체 활용도가 결정될 수 있다. 앞서 논의된 바와 같이, 스트림 매체 활용도는, 얼마나 많은 스트림이 송신 매체를 이용하고 있는지에 대한 측정치(예를 들어, 시간의 퍼센티지)일 수 있다.
404에서, 결정된 경로 특성들에 기초하여, 제 1 스트림에 대한 복수의 송신 매체들로부터 제 1 송신 매체가 선택될 수 있다. 제 1 스트림은 "새로운" 스트림, 즉, 그에 대해 어떠한 패킷들도 아직 송신되지 않은 스트림일 수 있다. 제 1 스트림은 복수의 송신 매체들을 통해, 제 1 디바이스에 커플링된 제 2 디바이스로의 송신을 위해 의도될 수 있다. 즉, 제 2 디바이스는, 임의의 복수의 송신 매체들을 통해 제 1 디바이스로부터 제 1 스트림의 패킷들을 수신할 수 있다. 따라서, 제 1 디바이스는, 제 1 스트림의 패킷들을 초기에 제 2 디바이스에 송신하기 위해 어느 송신 매체(경로)를 이용할지를 결정할 필요가 있을 수 있다.
실제 경로 선택 알고리즘은, 예를 들어, 얼마나 많은 송신 매체들이 이용가능한지, 및 제 1 스트림의 수신지 디바이스에 대해 각각의 송신 매체가 현재 얼마나 많은 링크 용량을 갖는지에 따라, 결정된 경로 특성들을 임의의 다양한 방식들로 이용할 수 있다. 경로 선택 알고리즘은 또한 제 1 스트림의 스트림 특성들(예를 들어, 컨텐츠 타입(비디오, 오디오, 기타, 등), 패킷 타입(예를 들어, UDP, TCP 등), 우선순위 레벨(예를 들어, 낮음, 중간, 높음))에 의존할 수 있다. 몇몇 경우들에서, 이러한 스트림 특성들은 자동으로 또는 수동으로 상관될 수 있는데; 예를 들어, 비디오 컨텐츠 스트림들은 몇몇 실시예들에서 자동으로 높은 우선순위 레벨로 수신될 수 있다. 다른 자동 또는 수동 우선순위 상관들이 또한 가능하다.
실시예들의 일 세트에서, 제 1 송신 매체는, 복수의 송신 매체들 중에서 가장 큰 이용가능한 링크 용량을 갖는 것에 기초하여 선택될 수 있다. 몇몇 실시예들에서, 제 1 송신 매체는, 제 1 스트림의 타입의 추가적인 스트림을 지원하기에 충분한 링크 용량(예를 들어, 특정한 임계치 위의 링크 용량)을 갖는 다수의 송신 매체들 중에서 제 1 스트림의 스트림의 타입에 대한 선호되는 매체일 수 있다.
몇몇 실시예들에서, 경로 선택 프로세스는, 복수의 타입들의 스트림들 각각에 대한 송신 매체들의 선호되는 순서를 결정하는 것을 포함할 수 있다. 복수의 타입들의 스트림들 각각에 대해 송신 매체들의 선호되는 순서는 몇몇 실시예들에서 새로운 스트림들에 주로 적용될 수 있다. 예를 들어, 선호되는 순서는 새로운 스트림을 송신 매체에 할당하기 위해 이용될 수 있지만, 스트림이 일단 송신 매체에 할당되면, 그 스트림의 패킷들은 그 매체 상에서 (예를 들어, 과다가입 또는 다른 이벤트 때문에 재할당되지 않으면) 무제한적으로 계속 송신될 수 있다.
일 실시예에서, 스트림들의 카테고리화는 매우 단순할 수 있는데, 예를 들어, UDP 패킷들은 송신 매체들의 제 1 선호되는 순서를 할당받을 수 있고, 넌-UDP 패킷들은 송신 매체들의 제 2 선호되는 순서를 할당받을 수 있다. 몇몇 실시예들에서, 타입에 기초한 스트림들의 분류 또는 카테고리화는 전혀 수행되지 않을 수 있어서; 이러한 실시예들에서는 모든 타입들의 스트림들이 동등하게 취급될 수 있다. 그러나, 스트림 특성들에 따라 더 넓은 범위의 서비스 품질을 제공하기 위해 스트림 타입들의 구별 및 분류에 대한 더 큰 능력을 제공하는 것이 통상적으로 바람직할 수 있고, 따라서 이러한 실시예들에서, 스트림들은 둘보다 많은 클래스들로 분류될 수 있다.
일반적으로, (예를 들어, 높은 우선순위 스트림들에 최상의 성능을 제공하기 위해) 더 높은 신뢰도 및/또는 더 큰 링크 용량을 갖는 송신 매체들에, (예를 들어, 컨텐츠 타입(예를 들어, 음성, 비디오, 데이터 등), 패킷 구조(TCP, UDP 등), 수동 할당 또는 다른 기반에 기초하여) 높은 우선순위 패킷 스트림들을 할당하는 것이 바람직할 수 있다. 그러나, 주어진 스트림 타입에 대해 송신 매체들의 선호되는 순서의 결정시에, 다른 팩터들이 추가적으로 또는 대안적으로 중요한 역할을 할 수 있다.
몇몇 실시예들에서, 상이한 스트림 타입들에 대한 송신 매체들의 선호되는 순서들의 할당은 경로 특성들에 대한 변경들에 기초하여 빈번하게 업데이트될 수 있음을 주목해야 한다. 예를 들어, 송신 매체의 매체 활용도가 상당히 증가하고 그리고/또는 매체가 과다가입되면, 송신 매체의 매체 활용도가 감소되고 송신 매체의 링크 용량이 증가할 때까지(예를 들어, 하나 또는 그 초과의 스트림들이 종료되거나 상이한 송신 매체들에 재할당되기 때문임) 그 송신 매체에 추가적인 스트림들을 할당하는 것을 회피하기 위해, 송신 매체는 하나 또는 그 초과의 타입들의 스트림에 대한 송신 매체들의 선호되는 순위 바닥까지 내려갈 수 있다.
몇몇 실시예들에서, 제 1 스트림의 송신을 위해 제 1 송신 매체가 선택되면, 제 1 스트림의 후속 패킷들은 송신을 위해 제 1 송신 매체로 라우팅되어야 함을 나타내는 정보가 저장될 수 있다.
406에서, 제 1 스트림의 제 1 복수의 패킷들이 제 1 송신 매체 상에서 송신될 수 있다. 실시예에 따라, 제 1 스트림의 제 1 복수의 패킷들은 개별적으로 및/또는 버스트로(즉, 다수의 패킷들의 그룹들로) 송신될 수 있고, 잠재적으로, 제 1 스트림의 개별적인 패킷들 또는 패킷 버스트들 중간에 제 1 송신 매체 상에서 다른 스트림들의 개별적인 패킷들 또는 패킷 버스트들이 송신된다. 제 1 스트림의 제 1 복수의 패킷들은, 단계(406)에서 제 1 스트림의 송신을 위한 제 1 송신 매체의 선택에 기초하여 제 1 송신 매체 상에서의 송신을 위해 제 1 송신 매체에 라우팅될 수 있다. 몇몇 실시예들에서, 라우팅은 구체적으로, 제 1 스트림의 패킷들이 송신을 위해 제 1 송신 매체에 라우팅되어야 함을 나타내는 저장된 정보에 기초할 수 있다. 예를 들어, 몇몇 실시예들에서, 제 1 디바이스에 의한 송신을 위해 제 1 스트림의 새로운 패킷들이 수신됨에 따라, 새로운 패킷들의 라우팅을 결정하기 위해, 제 1 스트림의 패킷들이 송신을 위해 제 1 송신 매체에 라우팅되어야 함을 나타내는 저장된 정보와 함께, 새로운 패킷들을 제 1 스트림의 일부인 것으로 식별하는, 새로운 패킷들 내의 정보가 이용될 수 있다.
몇몇 실시예들에서, 예를 들어, 제 1 송신 매체에 제 1 스트림을 할당하기 전 및/또는 후에, 하나 또는 그 초과의 다른 패킷 스트림들이 제 1 송신 매체 및/또는 복수의 송신 매체들 중 하나 또는 그 초과의 다른 송신 매체에 할당되고 그 매체 상에서 송신될 수 있다. 몇몇 실시예들에서, 이러한 다른 스트림들에 대한 경로 선택은 유사한 방식으로 수행될 수 있는데; 예를 들어, 상이한 타입들의 스트림들에 대한 복수의 송신 매체들의 현재의 선호되는 선택 순서를 파악하기 위해 그리고 어느 송신 매체들이 어느 액티브 패킷 스트림들에 현재 할당되는지를 파악하기 위해, 하나 또는 그 초과의 테이블들 또는 다른 데이터 구조들이 유지될 수 있다. 몇몇 실시예들에서, 패킷 스트림들이 더 이상 액티브가 아닌 경우, 이들과 관련된 저장된 정보는 테이블(들) 또는 다른 데이터 구조(들)로부터 제거될 수 있다.
또한 몇몇 실시예들에서, 각각의 송신 매체에 할당된 하나 또는 그 초과의 액티브 패킷 스트림들은 상이한 수신지 어드레스들을 가질 수 있음을 유의해야 한다. 예를 들어, 앞서 언급된 바와 같이, 몇몇 실시예들에서, 각각의 송신 매체는, 이 방법을 구현하는 디바이스를 다수의 다른 디바이스들에 커플링시킬 수 있다. 따라서, 하나 또는 그 초과의 스트림들이, 동일한 송신 매체를 이용하여 상이한 수신지 디바이스들에 송신될 수 있는 것이 가능할 수 있다.
408에서, 제 1 송신 매체의 현재의 매체 활용도가 제 1 임계치를 초과한다고 결정될 수 있다. 이것은, 제 1 복수의 패킷들(또는 제 1 복수의 패킷들의 적어도 일부)이 제 1 송신 매체 상에서 송신된 이후 발생할 수 있는데, 몇몇 실시예들에서, 예를 들어, 변경된 매체 조건들 및/또는 추가적인 스트림들이 제 1 송신 매체에 할당된 결과로서 발생할 수 있다. 예를 들어, 현재의 매체 활용도가 제 1 송신 매체의 최대 매체 활용도를 초과한다고 결정될 수 있다. 앞서 언급된 바와 같이, 이것은 과다가입 이벤트로서 본 명세서에서 지칭될 수 있고, 제 1 매체가 과다가입된 것을 나타낼 수 있다. 제 1 송신 매체 상에서 스트림의 원하는 성능 및 서비스 품질을 유지하기 위해, 현재 제 1 송신 매체 상에서 송신되고 있는 하나 또는 그 초과의 스트림들을 다른 송신 매체로 (부분적으로 또는 전체적으로) 시프트시키는 것이 바람직할 수 있다. 일반적으로, 예를 들어, 다수의 통신 인터페이스들을 이용하여 스트림들을 송신하는 것과 연관된 오버헤드를 회피하기 위해, 스트림들을 송신 매체들 사이에서 전체적으로 시프트시키는 것이 바람직할 수 있다. 그러나, (예를 들어, 제 1 송신 매체 상에서 현재 송신되고 있는 임의의 스트림의 송신을 전체적으로 지원하기에 충분한 링크 용량을 어떠한 이용가능한 송신 매체도 갖지 않는) 몇몇 환경들에서, 스트림의 송신을 둘 또는 그 초과의 통신 인터페이스들 사이에서 스플리팅하는 것이 바람직할 수 있다.
410a에서, 제 1 스트림은 제 2 송신 매체 상에서의 송신을 위해 선택될 수 있다. 제 1 스트림은, 제 1 송신 매체의 현재의 매체 활용도가 제 1 임계치를 초과한다고 결정하는 것에 기초하여 제 2 송신 매체 상에서의 송신을 위해 선택될 수 있다. (예를 들어, 제 1 송신 매체 대신에) 제 2 송신 매체 상에서의 송신을 위해 제 1 스트림을 선택하기 위한 프로세스는, 몇몇 실시예들에서 초기 경로 선택에 대한 프로세스와의 유사성들을 포함할 수 있다. 예를 들어, 제 2 송신 매체로 이동될 제 1 스트림의 선택시에, 제 1 스트림 및 제 1 송신 매체(즉, 과다가입됨) 상에서 송신되고 있는 임의의 다른 스트림들에 대한 특성들이 고려될 수 있다. 유사하게, 제 1 스트림의 송신을 위해 제 2 송신 매체의 선택시에, 제 2 송신 매체 및 복수의 송신 매체들 중 임의의 다른 매체의 특성들이 고려될 수 있다.
몇몇 실시예들에서, 제 1 송신 매체 상에서 현재 송신되고 있는 스트림을 상이한 송신 매체로 재할당하도록 선택하는 프로세스는, 제 1 매체 상에서 송신되고 있는 각각의 스트림의 스트림 매체 활용도를 결정하는 것을 포함할 수 있다. 실시예의 일 세트에 따르면, 다른 송신 매체로의 재할당을 위해, 최대 스트림 매체 활용도를 갖는 스트림이 바람직하게 선택될 수 있다. 실시예들의 다른 세트에서, 다른 송신 매체로의 재할당을 위해, 최소 스트림 매체 활용도를 갖는 스트림이 바람직하게 선택될 수 있다. 몇몇 실시예들에서, 스트림 우선순위가 또한 고려될 수 있는데; 예를 들어, 몇몇 실시예들에서, 재할당을 위해, 최소 우선순위 레벨을 갖는 스트림이 바람직하게 선택될 수 있거나, 재할당을 위해, 최소 우선순위 레벨을 갖는 스트림들 중 최대(또는 최소) 스트림 매체 활용도를 갖는 스트림이 바람직하게 선택될 수 있다.
다른 실시예들에서, 어느 스트림을 새로운 송신 매체로 재할당할지 결정할 때, 스트림 우선순위 및 스트림 매체 활용도에 부가하여 또는 그 대신에, 다른 팩터들이 고려될 수 있다. 예를 들어, 송신 매체들 자체의 특성들이, 재할당을 위해 어느 스트림이 선택되는지에 영향을 미칠 수 있다. 몇몇 실시예들에서, 스트림이 재할당될 새로운 송신 매체의 선택시에, 이용가능한 송신 매체들의 특성들이 추가적으로 또는 대안적으로 고려될 수 있다. 예를 들어, 새로운 송신 매체(예를 들어, 제 2 송신 매체) 상에서의 송신을 위한 스트림(예를 들어, 제 1 스트림)의 선택시 및 재할당을 위해 선택되는 스트림(예를 들어, 제 1 스트림)을 송신할 새로운 송신 매체(예를 들어, 제 2 송신 매체)의 선택시 모두에서, 복수의 송신 매체들 각각의 현재의 링크 용량이 결정 및 고려될 수 있다. 앞서 언급된 바와 같이, 몇몇 실시예들에서, 재할당을 위해 최소 우선순위 및/또는 최대 스트림 매체 활용도를 갖는 스트림을 선택하는 것이 바람직할 수 있다. 그러나, 최소 우선순위 및/또는 최대 스트림 매체 활용도를 갖는 스트림을 추가할 충분한 링크 용량을 갖는 어떠한 이용가능한 송신 매체도 존재하지 않으면, 더 높은 우선순위 및/또는 더 낮은 스트림 매체 활용도를 갖는 스트림이 재할당을 위해 선택될 수 있다.
실시예들의 하나의 예시적인 세트에서, 재할당 프로세스는 다음과 같이 수행될 수 있다. 스트림이 제 1 송신 매체로부터 최대 이용가능한 링크 용량을 갖는 송신 매체로 재할당되도록, 최대 이용가능한 링크 용량을 갖는 송신 매체가 선택될 수 있다. 선택된 송신 매체가, 재할당을 위해 (예를 들어, 스트림 우선순위, 스트림 매체 활용도 또는 다른 팩터들의 결과로서) 바람직하게 선택된 스트림에 대해 충분한 링크 용량을 갖는지 여부가 결정될 수 있다. 선택된 송신 매체가 그 스트림에 대해 충분할 링크 용량을 가지면, 그 스트림은 그 선택된 송신 매체로 재할당될 수 있다. 선택된 송신 매체가 그 스트림에 대해 충분한 링크 용량을 갖지 않으면, 선택된 송신 매체가 2번째 스트림에 대해 충분한 링크 용량을 갖는지 여부가 결정될 수 있다. 프로세스는, 선택된 송신 매체로의 재할당을 위해 허용가능한 스트림이 선택될 때까지 이러한 방식으로 계속될 수 있다. 재할당을 위해 전체적으로 어떠한 허용가능한 스트림도 (예를 들어, 제 1 송신 매체 상에서 현재 송신되고 있는 임의의 스트림들을 지원하기에 충분한 링크 용량을 갖는 어떠한 이용가능한 송신 매체들도 존재하지 않는 경우, 또는 다른 이유들로) 선택되지 않으면, 스트림이 부분적으로 재할당, 예를 들어, 스플리팅/어그리게이트될 수 있는지 여부를 결정하기 위해, 방법은 대안적으로 단계(410b)로 진행할 수 있다.
몇몇 실시예들에서, 제 1 스트림이 제 2 송신 매체로 재할당되었다는 표시가 제 2 디바이스에 제공될 수 있다. 표시는 하나 또는 그 초과의 제어 패킷들과 같은 제어 메시지를 포함할 수 있거나 다른 형태를 가질 수 있다. 대안적으로, 몇몇 실시예들에서, 어떠한 표시도 제공되지 않을 수 있고, 제 2 디바이스는, 제 2 송신 매체 상에서 제 1 스트림의 패킷들을 수신하는 것에 단순히 기초하여, 제 1 스트림이 제 2 송신 매체로 재할당되었다고 결정하도록 구성될 수 있다.
412a에서, 제 1 스트림의 제 2 복수의 패킷들이 제 2 송신 매체 상에서 송신될 수 있다. 제 1 스트림의 제 2 복수의 패킷들은, (예를 들어, 410a에서) 제 2 송신 매체 상에서의 송신을 위해 제 1 스트림을 선택하는 것에 기초하여 제 2 송신 매체 상에서 송신될 수 있다. (예를 들어, 제 2 송신 매체의 하나 또는 그 초과의 경로 특성들 및/또는 제 1 스트림의 하나 또는 그 초과의 스트림 특성들에 기초한 선택 알고리즘 및 제 1 송신 매체의 과다가입의 결과로서) 제 1 스트림이 제 2 송신 매체 상에서 송신되어야 한다고 결정된 후, 제 1 스트림의 후속 패킷들이 제 2 송신 매체에 라우팅되어야 함을 나타내는 정보가 저장될 수 있다. 예를 들어, 각각의 액티브 스트림이 어느 송신 매체에 할당되는지를 나타내는 정보를 저장하는 테이블 또는 다른 데이터 구조가 존재하면, 제 1 스트림의 패킷들이 제 2 송신 매체에 라우팅되어야 하는 것을 나타내기 위해 테이블이 업데이트될 수 있다.
제 1 스트림이 제 2 송신 매체로 재할당된 후, 제 1 스트림의 패킷들은, 예를 들어, 제 1 스트림의 패킷들이 제 2 송신 매체에 라우팅되어야 함을 나타내는 업데이트된 테이블 또는 다른 데이터 구조에 기초하여, 더 이상 제 1 송신 매체 상에서 송신되지 않을 수 있다. 제 1 송신 매체의 과다가입의 레벨에 따라, 제 1 스트림의 재할당 이후, 제 1 송신 매체는 더 이상 과다가입되지 않을 수 있다. 이러한 경우, 적어도 다른 과다가입 이벤트가 발생할 때까지(또는 송신 매체 상에서 송신되고 있는 모든 스트림들이 새로운 송신 매체들로 재할당될 수 있는 경우인, 송신 매체가 실패할 때까지) 스트림들의 어떠한 추가적인 재할당도 필요하지 않을 수 있다. 그러나, 제 1 스트림의 재할당 이후 제 1 송신 매체가 여전히 과다가입되면, 다른 과다가입 이벤트가 발생할 수 있고, 이것은, 몇몇 실시예들에서, 다른 스트림을 제 1 송신 매체로부터 멀리 재할당하는 것을 트리거링할 수 있다. 몇몇 실시예들에서, 과다가입 이벤트에 기인하여 스트림을 송신 매체로부터 멀리 시프트시키는 것과 송신 매체의 매체 활용도를 재측정하는 것 사이에는 지연(예를 들어, 구성가능한 지연)이 존재할 수 있음을 주목해야 한다. 이것은, 업데이트된 데이터/통계들이 이용되고, 더 오래된 데이터/통계들에 기초하여 송신 매체가 여전히 과다가입되는 것으로 부정확하게 결정되지 않는 것을 보장하기 위해 바람직할 수 있다.
앞서 논의된 바와 같이, 몇몇 실시예들에 따라, 제 1 송신 매체 상에서 송신되고 있는 어떠한 스트림도 다른 송신 매체의 과다가입을 초래함이 없이 다른 송신 매체로 전체적으로 재할당될 수 없으면, 스트림은 다수의 송신 매체들 상에서의 송신을 위해 선택될 수 있다. 따라서, 이러한 경우, 단계(410a)에 대한 대안으로, 410b에서, 제 1 스트림은 제 1 송신 매체 및 제 2 송신 매체 모두 상에서의 송신을 위해 선택될 수 있다. 따라서, 몇몇 실시예들에서, 제 1 스트림은, 제 1 송신 매체의 현재의 매체 활용도가 제 1 임계치를 초과한다고 결정하는 것에 또한 기초하여, 그리고 대안적인 송신 매체 상에서 전체적으로 송신될, 제 1 송신 매체 상에서 현재 송신되고 있는 임의의 스트림에 대해 (예를 들어, 송신 매체에 의해 액세스 가능한 임의의 수신지 디바이스로의) 충분한 이용가능한 링크 용량을 갖는 복수의 송신 매체들 중 어떠한 대안적인 송신 매체도 존재하지 않는다고 결정하는 것에 기초하여, 제 1 송신 매체 및 제 2 송신 매체 모두 상에서의 송신을 위해 선택될 수 있다.
또한, 몇몇 실시예들에서, 제 2 디바이스는 스트림들을 어그리게이트하도록 구성되는 것으로 결정될 수 있다. 이 결정은, 몇몇 실시예들에서, 제 1 디바이스와 제 2 디바이스 사이에서 송신되는 초기 구성 메시지들에 기초하여 행해질 수 있다. 대안적으로, 제 1 디바이스는, 제 2 디바이스에 문의하고, 제 2 디바이스가 스트림들을 어그리게이트하도록 구성된 것을 나타내는 긍정적 응답을 수신할 수 있거나, 또는, 스트림들을 어그리게이트할 제 2 디바이스의 능력의 확인없이, 제 1 스트림을 스플리팅하려고 단순히 시도할 수 있다. 그러나, 일반적으로, 다수의 송신 매체들 사이에 제 1 스트림을 스플리팅하기 전에 스트림들을 어그리게이트할 제 2 디바이스의 능력의 확인을 수신하는 것이 바람직할 수 있다. 몇몇 실시예들에서, 제 2 디바이스가 스트림들을 어그리게이트하도록 구성되지 않는다는 표시를 제 1 디바이스가 수신하면, 제 1 디바이스는 제 1 스트림을 스플리팅하지 않을 수 있다. 이러한 경우, 스트림 스플리팅/어그리게이션 없이 로드 밸런싱에서 베스트 에포츠(bset effort) 시도가 행해질 수 있다. 대안적으로, 제 1 송신 매체를 이용하여 상이한 디바이스에 송신되고 있는 스트림은, 예를 들어, 다른 디바이스가 스트림 어그리게이션을 지원하면, 스플리팅을 위해 선택될 수 있다.
스트림을 재할당할 2개의 송신 매체들의 선택은, 몇몇 실시예들에서 단일의 새로운 송신 매체로 재할당하기 위해 스트림을 선택하는 것보다 더 복잡할 수 있다. 앞서 언급된 바와 같이, 송신 디바이스에서 스트림을 스플리팅하고 스플리팅된 스트림을 수신 디바이스에서 어그리게이팅하는 것은 상당한 추가적인 오버헤드를 초래할 수 있고, 모든 스트림들을 전체적으로 하나의 송신 매체 또는 다른 매체 상에서 송신하는 것보다 개별적인 송신 매체들의 덜 효율적인 이용일 수 있다. 그러나, 적어도 하나의 송신 매체의 과다가입을 초래함이 없이 모든 액티브 스트림들을 수용하는 방식으로 복수의 송신 매체들을 로드 밸런싱하는 것이 곤란하거나 불가능한 상황들에서, 이것은 다른 옵션들보다 바람직할 수 있는데, 이는, 복수의 송신 매체들을 전체적으로 더 효율적으로 이용할 기회를 제시할 수 있기 때문이다.
몇몇 실시예들에서, 스트림을 재할당할 2개의 송신 매체들을 결정하기 위한 선택 프로세스 및 재할당할 스트림의 선택은, 스플리팅없이 재할당을 위한 스트림 및 송신 매체의 선택에서 이용되는 것과 동일한 특성들 중 많은 특성들을 이용하는 것을 포함할 수 있다. 예를 들어, 다양한 송신 매체들의 링크 용량 및 스트림 매체 활용도 및/또는 제 1 송신 매체 상에서 송신되고 있는 개별적인 스트림들의 타입(예를 들어, 우선순위)이 결정될 수 있고, 제 1 및 제 2 송신 매체들 모두에 대한 재할당을 위해 제 1 스트림의 선택시에 이용될 수 있다. 실시예들의 하나의 예시적인 세트에서, 최대 링크 용량을 갖는 2개의 송신 매체들로 스트림이 재할당되도록, 최대 링크 용량을 갖는 2개의 송신 매체들이 선택될 수 있다. 실시예들의 다른 세트에서, 제 1 송신 매체는, 재할당을 위해 선택된 스트림의 일부를 송신하는 것을 계속하도록 자동으로 선택될 수 있고, 나머지 송신 매체들 중 최대 링크 용량을 갖는 송신 매체가 제 2 송신 매체로서 선택될 수 있다. 원한다면, 스트림을 재할당할 2개의 송신 매체들을 선택하기 위한 다른 프로세스들이 대안적으로 이용될 수 있다.
몇몇 실시예들에서, 셋 또는 그 초과의 송신 매체들 사이에 단일 스트림을 스플리팅하는 것은 바람직하지 않을 수 있는데, 이는, 이러한 추가적인 스플리팅 및 어그리게이션에 의해 초래되는 증가된 오버헤드가 바람직하거나 필수적이 아닐 수 있기 때문임을 주목해야 한다. 예를 들어, 하나의 스트림을 2개의 송신 매체들 사이에 스플리팅함으로써 성공적인 로드 밸런싱이 달성될 수 없으면, 셋 또는 그 초과의 송신 매체들 사이에 단일 스트림을 스플리팅하기 보다는 2개의(예를 들어, 다른) 송신 매체들 사이에 제 2 스트림을 스플리팅하는 것이 바람직할 수 있다. 그러나, 원한다면, 셋 또는 그 초과의 송신 매체들 사이에 스트림을 스플리팅하는 것이 수행될 수 있다.
앞서 언급된 바와 같이, 몇몇 실시예들에서, 다수의 송신 매체들로 스플리팅 및 재할당하기 위한 스트림의 선택은, 스트림의 특성들 및/또는 송신 매체들의 특성들에 기초할 수 있다. 예를 들어, 실시예들의 일 세트에서, 스트림을 재할당할 최대 링크 용량들을 갖는 2개의 송신 매체들을 선택하면, 재할당될 스트림은 그의 스트림 매체 활용도 및/또는 그의 우선순위에 기초하여 선택될 수 있다. 따라서, 실시예들의 일 세트에서, 스트림(예를 들어, 제 1 스트림)은 최소 우선순위 레벨을 갖는 스트림들 사이에서 선택될 수 있고, 최소 우선순위 레벨을 갖는 스트림들 중 선택된 송신 매체들에 의해 수용될 수 있는 최대 스트림 매체 활용도를 갖는 스트림일 수 있다. 대안적으로, 예를 들어, 더 낮은 우선순위를 갖는 어떠한 허용가능한 스트림도 발견될 수 없으면, 스트림은 더 높은 우선순위 레벨을 갖는 스트림들 중에서 선택될 수 있고, 더 높은 우선순위 레벨을 갖는 스트림들 중 선택된 송신 매체들에 의해 수용될 수 있는 최대 스트림 매체 활용도를 갖는 스트림일 수 있다. 실시예들의 다른 세트들은, 원하는대로, 상이한 선택 기준을 활용할 수 있고 그리고/또는 동일한 선택 기준을 상이한 방식으로 이용할 수 있는데; 예를 들어, 실시예들의 다른 세트에서, 예를 들어, 로드 밸런싱에서의 베스트 에포츠 시도로서, 선택된 송신 매체들에 의해 수용될 수 있는지 여부와 무관하게, 최소 스트림 매체 활용도를 갖는 스트림이 바람직하게 선택될 수 있고, 더 높은 우선순위를 갖는 스트림들이 스플리팅(또는 임의의 형태의 재할당)으로부터 배제될 수 있고 그리고/또는 최소 우선순위 스트림이 선택될 수 있다.
몇몇 실시예들에서, 재할당을 위해 스트림이 선택되면, 선택된 송신 매체들(예를 들어, 제 1 및 제 2 송신 매체들) 사이에서 스트림(예를 들어, 제 1 스트림)을 최상으로 스플리팅할 방법을 결정하기 위해 추가적 계산들이 수행될 수 있다. 예를 들어, 송신 매체의 과다가입을 회피하는 방식으로, 제 1 송신 매체에 라우팅될 제 1 스트림의 패킷들의 일부 및 제 2 송신 매체에 라우팅될 제 1 스트림의 패킷들의 일부를 결정하는 것이 바람직할 수 있다. 실시예들의 일 세트에서, 이러한 계산은, 현재의 매체 활용도가 제 1 송신 매체의 최대 매체 활용도를 초과하는 양을 결정하는 것, 및 적어도, 현재의 매체 활용도가 제 1 송신 매체의 최대 매체 활용도를 초과하는 양을 제 2 송신 매체에 재할당하는, 제 1 스트림의 스플리팅시에 이용할 비를 선택하는 것을 포함할 수 있다.
412b에서, 제 1 스트림의 제 2 복수의 패킷들은 제 1 송신 매체 및 제 2 송신 매체 모두를 이용하여 송신될 수 있다. 제 1 송신 매체 및 제 2 송신 매체 모두를 이용하여 제 1 스트림을 송신하는 것은, 제 2 복수의 패킷들의 제 1 부분을 제 1 송신 매체 상에서 송신하는 것 및 제 2 복수의 패킷들의 제 2 부분을 제 2 송신 매체 상에서 송신하는 것을 포함할 수 있다. 몇몇 실시예들에서, 제 1 또는 제 2 송신 매체의 후속적인 과다가입을 회피하도록 구성되는 비(예를 들어, 근사치의 또는 정확한 비)는 제 2 복수의 패킷들의 제 1 부분과 제 2 부분 사이에서 유지될 수 있다.
다른 스트림 재할당 상황들에서와 같이, 몇몇 실시예들에서, 스플리팅/어그리게이션을 위해 선택된 스트림의 패킷들이, 선택된 송신 매체들로 라우팅될 것을 나타내는 정보는 그 스트림 및 그 송신 매체들을 선택하는 것에 기초하여 저장될 수 있다. 또한, 몇몇 실시예들에서, 선택된 스트림을 스플리팅할 때 이용할 비를 나타내는 정보가 저장될 수 있다. 정보는 테이블 또는 다른 데이터 구조에 저장될 수 있는데; 예를 들어, 몇몇 실시예들에서, 선택된 스트림의 이전의 송신 매체 할당을 나타내는 이전에 저장된 정보는, 선택된 스트림의 새로운 송신 매체 할당 및 비를 나타내도록 업데이트될 수 있다.
몇몇 실시예들에서, 제 1 및 제 2 송신 매체들 모두를 이용하여 제 2 복수의 패킷들이 송신되고 있다는 표시가 또한 제 2 디바이스에 제공될 수 있다. 실시예들의 일 세트에서, (예를 들어, 어그리게이션 버퍼에 대한 추전된 사이즈를 포함하는) 어그리게이션 명령들을 포함하는 제어 메시지가 제 1 디바이스에 의해 제 2 디바이스로 송신되어, 제 1 및 제 2 송신 매체들 모두를 이용하여 제 2 복수의 패킷들이 송신되고 있음을 나타낼 수 있다. 이것은, 제 2 디바이스가 어그리게이션 버퍼를 개시하고 그리고/또는 제 1 스트림을 어그리게이팅하기 위한 다른 기술들을 수행하도록 허용할 수 있다. 몇몇 실시예들에서, 제 1 스트림을 어그리게이팅할 때 제 2 디바이스를 보조하도록 의도된 하나 또는 그 초과의 기술들이 또한 수행될 수 있다.
일 실시예에서, 예를 들어, 제 1 스트림이 시퀀스 번호들을 이미 포함하고 있지 않으면, 시퀀스 번호들이 제 1 스트림의 패킷들에 삽입될 수 있다. 시퀀스 번호들은, 스플리팅된 스트림을 재순서화할 때 제 2 디바이스를 보조할 수 있다. TCP 및 RTP 패킷 스트림들은 패킷 시퀀스 번호들을 고유하게 포함할 수 있는 한편, UDP 패킷 스트림들은, 제 2 디바이스에 의해 액세스가능하고 스플리팅된 스트림을 재순서화할 때 이용가능한 시퀀스 번호들을 고유하게 포함하지 않을 수 있다. 따라서, 몇몇 실시예들에서, 예를 들어, 패킷 캡슐화(예를 들어, TCP로의 변환), 시퀀스 번호들의 잉여 필드로의 삽입(예를 들어, 몇몇 실시예들에서 VLAN 태그)에 의해, 또는 다른 수단에 의해, 시퀀스 번호들은 제 1 스트림의 패킷들에 삽입될 수 있다.
대안적으로 또는 추가적으로, 몇몇 실시예들에서, 각각의 송신 매체에 대한 버스트들의 시작시에 스위치 마커 패킷들이 삽입될 수 있다. 스위치 마커 패킷들은, 송신 매체("버스트") 상에서 통신되고 있는 스트림의 일부의 시작을 나타낼 수 있다. 따라서, 하나의 송신 매체 상에서 통신되는 "스트림 시작" 마커 패킷은, (의도된 패킷 순서화에 따른) 스트림의 다음 부분이 그 송신 매체 상에서 통신되고 있는 것을 나타낼 수 있다. 몇몇 실시예들에서, 각각의 스트림 시작 마커 패킷은, 그 송신 매체 상에서 송신될 버스트의 사이즈를 나타내는 정보를 포함할 수 있다. 이것은, 버스트가 종료된 시점, 및 그에 따라 가능하게는 다음 버스트가 상이한 송신 매체 상에서 예상될 시점을 수신기가 결정하도록 허용할 수 있다.
앞서 언급된 바와 같이, 몇몇 실시예들에서, 스트림 스플리팅/어그리게이션은, 각각의 송신 매체 상에서 송신되는 스트림의 부분들의 비를 유지하는 방식으로 실행될 수 있다. 이를 달성하는 하나의 수단은, 각각의 송신 매체 상에서 상이한 버스트 사이즈들을 이용하는 것일 수 있고, 여기서 버스트 사이즈들은 비에 따라 구성된다. 예를 들어, 21:33의 비를 원하는 경우, 21(또는 42와 같은 21의 배수)개의 패킷들의 패킷 버스트들이 제 1 송신 매체 상에서 송신될 수 있는 한편, 33(또는 66과 같은 33의 배수)의 패킷 버스트들이 제 2 송신 매체 상에서 송신될 수 있다.
몇몇 실시예들에서, "스트림 종료" 마커 패킷들이 또한 이용될 수 있다. 예를 들어, 몇몇 실시예들에서, 스트림 시작 마커 패킷들은 그 송신 매체 상에서 송신되는 버스트의 사이즈를 나타내는 정보를 포함하지 않을 수 있지만, 버스트가 종료된 것(그리고, 예를 들어, 그 스트림의 어떠한 추가적 패킷들도 현재 시간에 그 송신 매체 상에서 통신되고 있지 않음)을 수신기에 나타내기 위해 스트림 종료 마커 패킷이 버스트의 종료시에 송신될 수 있다. 그러나, 몇몇 실시예들에서, 스트림 종료 마커 패킷들을 이용하는 것은 바람직하지 않을 수 있는데, 이는, 이것이, 스트림 시작 마커 패킷들에 버스트 사이즈 정보를 단순히 포함시키는 것에 비해 불필요한 오버헤드 추가를 나타낼 수 있기 때문이다.
따라서, 실시예들의 일 세트에서, 스트림 시작 마커 패킷은 제 2 복수의 패킷들의 제 1 부분의 시작시에 삽입될 수 있다 (그리고, 몇몇 실시예들에서, 스트림 종료 마커 패킷은 제 2 복수의 패킷들의 제 1 부분의 종료시에 삽입될 수 있다). 유사하게, 스트림 시작 마커 패킷은 제 2 복수의 패킷들의 제 2 부분의 시작시에 삽입될 수 있다 (그리고, 몇몇 실시예들에서, 스트림 종료 마커 패킷은 제 2 복수의 패킷들의 제 2 부분의 종료시에 삽입될 수 있다). 스위치 마커 패킷들은, 의도된 스트림 패킷 순서에 따라 제 2 복수의 패킷들을 재결합하는 방법을 제 2 디바이스에 나타낼 수 있어서, 수신 이후 제 2 복수의 패킷들의 제 1 및 제 2 부분들(그리고, 스트림이 스플리팅되고 있는 한, 유사하게 스트림 시작 및 가능하게는 스트림 종료 마커 패킷들을 포함할 수 있는 임의의 후속 스트림 부분들)은, 이들이 순서대로 수신되는지 여부와 무관하게 이들의 의도된 순서로 재결합될 수 있다.
앞서 언급된 바와 같이, 스트림 스플리팅 및 어그리게이션은, 단일 송신 매체 상에서 스트림을 전체적으로 송신하는 것에 비해 추가적인 오버헤드를 초래할 수 있다. 따라서, 몇몇 실시예들에서, 스플리팅된 스트림을 단일 송신 매체 상에서 전체적으로 송신하기에 충분한 링크 용량이 이용가능하게 되는 경우, 스플리팅된 스트림들을 재병합하기 위해, 다양한 송신 매체들의 링크 용량 및 다양한 스트림들의 스트림 매체 활용도를 모니터링하는 것이 바람직할 수 있다. 예를 들어, 실시예들의 일 세트에서, 후속 시간에, 제 1 스트림이 그 송신 매체 상에서 전체적으로 송신되기에 충분한 이용가능한 링크 용량을 송신 매체(예를 들어, 제 1 송신 매체 또는 다른 송신 매체)가 갖는다고 결정될 수 있다. 이러한 경우, 제 1 스트림은 그 송신 매체에 전체적으로 재할당될 수 있고, 제 1 스트림의 제 3 복수의 패킷들은 그 송신 매체 상에서 송신될 수 있고, 이들 전부는 새로 선택된 송신 매체 상에서 송신될 수 있다.
도 5는, 디바이스가 복수의 송신 매체들 상에서 제 2 디바이스로부터 제 1 스트림을 수신하는 방법을 예시하는 흐름도이다. 몇몇 실시예들에 따르면, 도 5의 방법의 단계들은, 도 4에서 도시되고 도 4에 대해 설명된 것과 같은 송신기측 동작들에 대한 응답으로 적어도 몇몇 수신기측 동작들에 대응할 수 있다. 상세하게는, 도 5는, 2개의 송신 매체들 사이에서 스트림의 스플리팅의 시작 및/또는 종료에 대해 경보되는 프로세스, 및 스플리팅된 스트림의 성공적인 어그리게이션 및 정확한 패킷 순서화를 보장하기 위해 수신기에 의해 행해지는 가능한 동작들과 관련될 수 있다.
방법을 구현하는 디바이스는, 복수의 송신 매체들을 통해 제 2 디바이스에 커플링될 수 있는데; 예를 들어, 제 1 및 제 2 디바이스들은, 몇몇 실시예들에서 도 1에 도시된 디바이스들 중 둘일 수 있다. 방법을 구현하는 시스템은, 도 2에 도시되고 몇몇 실시예들에서 그에 대해 설명된 것과 같은 시스템일 수 있다. 시스템은, 도 3에 도시되고 그에 대해 설명된 것과 같은 OSI 프로토콜 스택을 구현할 수 있다. 예를 들어, 실시예들의 일 세트에서, 방법은, 예를 들어, 하이브리드 제어 엔티티(212) 및/또는 하이브리드 브릿지(214)에 의해 하이브리드 적응 계층(310)에서 구현될 수 있다. 다른 실시예들에서, 방법은 다른 계층 또는 몇몇 계층들에서 구현될 수 있다 (예를 들어, 몇몇 계층들 각각은 방법의 엘리먼트들을 구현할 수 있다). 방법은 다음과 같이 수행될 수 있다.
502에서, 제 1 스트림의 제 1 복수의 패킷들이 제 1 송신 매체 상에서 제 2 디바이스로부터 수신될 수 있다. 제 1 복수의 패킷들 전부가 제 1 송신 매체 상에서 수신될 수 있다. 즉, 제 1 스트림은 초기에 단일 송신 매체 상에서 전체적으로 수신될 수 있다.
504에서, 제 1 스트림이 제 1 송신 매체 및 제 2 송신 매체 모두 상에서 송신될 것임을 나타내는 표시가 제 2 디바이스로부터 수신될 수 있다. 디바이스는, 제 1 스트림이 제 1 송신 매체 및 제 2 송신 매체 모두 상에서 송신될 것임을 나타내는 정보를 저장할 수 있다. 몇몇 실시예들에서, 이러한 표시를 수신하는 것은 또한, 제 1 및 제 2 송신 매체들 상에서 수신되는 패킷들의 패킷 순서화가 손상되지 않는 것을 보장하기 위해, 어그리게이션 버퍼의 시작을 트리거링할 수 있다.
506에서, 제 1 송신 매체 및 제 2 송신 매체 모두를 이용하여, 제 1 스트림의 제 2 복수의 패킷들이 제 2 디바이스로부터 수신될 수 있다. 제 2 복수의 패킷들의 제 1 부분(예를 들어, 제 1 버스트)은 제 1 송신 매체 상에서 수신될 수 있는 한편, 제 2 복수의 패킷들의 제 2 부분(예를 들어, 제 2 버스트)은 제 2 송신 매체 상에서 수신될 수 있다.
몇몇 실시예들에서, 제 1 스트림의 패킷들은 제 1 및 제 2 매체 상에서 교번하는 방식(예를 들어, 교번하는 버스트들)으로 수신될 수 있다. 이 때문에, 때때로 패킷들은 이들의 의도된 패킷 순서화로 수신되지 않을 것이 가능하고 심지어 그럴 가능성이 크다. 즉, 몇몇 실시예들에서, 제 1 스트림의 제 2 복수의 패킷들의 적어도 일부는 의도된 것과는 상이한 순서로 수신될 수 있다. 이러한 경우들에서, 예를 들어, 수신된 패킷들을 재순서화하기 위해, 하나 또는 그 초과의 추가적 단계들이 수행될 수 있다.
508 및 510에서, 제 2 복수의 패킷들의 의도된 순서가 결정될 수 있고, 제 2 복수의 패킷들은 제 2 복수의 패킷들의 의도된 순서에 따라 재순서화될 수 있다. 많은 실시예들에서, 패킷들의 부분들은 내부적으로 정확하게 순서화될 수 있다. 따라서, 몇몇 실시예들에서, 상이한 송신 매체들을 통해 수신된 제 1 스트림의 부분들을 재순서화(재결합)하기 위한 메커니즘이 제공될 수 있다. 앞서 언급된 바와 같이, 실시예들의 일 세트에서, 이 메커니즘은 어그리게이션 버퍼를 포함할 수 있다. 어그리게이션 버퍼의 성질 및 사이즈는 상이한 실시예들에 따라 상이할 수 있다. 몇몇 실시예들에서, 제 2 디바이스로부터 수신된 표시는, 예를 들어, 제 1 스트림 및/또는 제 1 및 제 2 송신 매체들의 특성들에 기초하여, 추천된 어그리게이션 버퍼 사이즈를 포함할 수 있다.
몇몇 어그리게이션 버퍼링 기술들은 패킷 시퀀스 번호들을 활용할 수 있다. 따라서, 몇몇 실시예들에서, 제 1 스트림의 패킷들은 시퀀스 번호들을 포함할 수 있다. 몇몇 타입들의 스트림들(예를 들어, TCP, RTP)은, 패킷 재순서화를 위해 이용될 수 있는 시퀀스 번호들을 고유하게 포함할 수 있다. 몇몇 다른 타입들의 스트림들(예를 들어, UDP)은 시퀀스 번호들을 고유하게 포함하지 않을 수 있다. 이러한 경우들에서, 시퀀스 번호들은, 예를 들어, 스트림 패킷들을 캡슐화함으로써 또는 시퀀스 번호들을 잉여 필드에 삽입(예를 들어, 몇몇 실시예들에서 VLAN 태그)함으로써 또는 다른 수단에 의해 스트림 패킷들에 삽입될 수 있다.
실시예들의 일 세트에서, 어그리게이션 버퍼는 순환 버퍼일 수 있다. 순환 버퍼를 개시하고 유지하는 것은, 프로세싱에 대해 2번째인 (예를 들어, 그 패킷의 패킷 시퀀스 번호에 기초한) 패킷에 대한 포인터일 수 있는 베이스 시퀀스 변수를 결정하고 유지하는 것을 포함할 수 있다. 새로 수신된 패킷들은, 그들의 시퀀스 번호들에 기초하여 베이스 시퀀스 포인터에 대해 상대적인, 버퍼 내의 적절한 위치들에서 버퍼에 저장될 수 있고, 패킷들은 프로세싱될 수 있고 베이스 시퀀스 변수는 적절하게 업데이트될 수 있다.
방금 설명된 패킷 시퀀스 번호들 및 순환 버퍼를 이용하는 것은, 제 1 스트림의 몇몇 패킷들이 무작위로 수신되는지 여부와 무관하게, 제 1 스트림이 자신의 의도된 패킷 순서화로 어그리게이트될 수 있는 것을 보장하기 위한 하나의 가능한 기술일 수 있다. 그러나, 앞서 언급된 바와 같이, 모든 타입들의 스트림들이 고유하게 시퀀스 번호들을 포함하는 것은 아니며, 이러한 경우들에서, 시퀀스 번호들을 인위적으로 삽입하는 것은 곤란할 수 있고, 잠재적으로 추가적인 문제들을 생성할 수 있다. 예를 들어, 시퀀스 번호들을 추가하기 위해 패킷을 캡슐화하는 것은, 스위치들에 의해 지원되는 사이즈를 넘어 패킷들을 확대할 수 있는 한편, 몇몇 실시예들에서, 잉여 필드에 태그를 삽입하는 것은 추가적인 복잡도를 요구할 수 있고, 잠재적으로, 의도되지 않은 목적으로 필드를 이용하는 것에 의한 모호성을 생성할 수 있다.
하나의 가능한 대안으로서 (예를 들어, 시퀀스 번호들을 고유하게 포함하지 않는 플로우들의 경우 또는 일반적인 모든 플로우들의 경우), 몇몇 실시예들에서, 제 1 스트림의 패킷들의 송신이 하나의 송신 매체로부터 다른 송신 매체로 이동되기 직전에(그리고, 몇몇 실시예들에서는, 그 후에) 제 1 스트림에 스위치 마커 패킷들이 삽입될 수 있다. 스위치 마커 패킷들은 송신 매체 상에서 통신되고 있는 스트림의 일부의 시작 또는 종료를 나타낼 수 있다. 따라서, 하나의 송신 매체 상에서 통신되는 "스트림 시작" 마커 패킷은, 스트림의 다음 부분이 그 송신 매체 상에서 (의도된 패킷 순서화에 따라) 통신되고 있는 것을 나타낼 수 있다. 유사하게, "스트림 종료" 마커 패킷은, 그 스트림의 어떠한 추가적 패킷들도 현재 시간에 그 송신 매체 상에서 통신되고 있지 않은 것을 나타낼 수 있다.
따라서, 실시예들의 일 세트에서, 스트림 시작 마커 패킷은 제 2 복수의 패킷들의 제 1 부분의 시작시에 수신될 수 있고, 스트림 종료 마커 패킷은 제 2 복수의 패킷들의 제 1 부분의 종료시에 수신될 수 있다. 유사하게, 스트림 시작 마커 패킷은 제 2 복수의 패킷들의 제 2 부분의 시작시에 수신될 수 있고, 스트림 종료 마커 패킷은 제 2 복수의 패킷들의 제 2 부분의 종료시에 수신될 수 있다. 스위치 마커 패킷들은, 의도된 스트림 패킷 순서에 따라 제 2 복수의 패킷들을 재결합하는 방법을 디바이스에 나타낼 수 있어서, 수신 이후 제 2 복수의 패킷들의 제 1 및 제 2 부분들(그리고, 스트림이 스플리팅되고 있는 한, 유사하게 스트림 시작 및 스트림 종료 마커 패킷들을 포함할 수 있는 임의의 후속 스트림 부분들)은, 이들이 순서대로 수신되는지 여부와 무관하게 이들의 의도된 순서로 재결합될 수 있다.
예를 들어, 몇몇 실시예들에서, 스트림 시작 마커 패킷 및 제 2 복수의 패킷들의 제 2 부분의 몇몇 패킷들은, 제 2 복수의 패킷들의 제 1 부분의 몇몇 패킷들 및 스트림 종료 마커 패킷이 제 1 송신 매체 상에서 수신되기 전에 제 2 송신 매체 상에서 수신될 수 있지만, 제 2 복수의 패킷들의 제 2 부분은, 제 1 스트림의 의도된 순서화에서 제 2 복수의 패킷들의 제 1 부분 이후일 수 있다. 이 경우, 제 2 복수의 패킷들의 제 1 부분의 패킷들 전부가 수신되고 프로세싱될 때까지, 제 2 복수의 패킷들의 제 2 부분의 임의의 미리 수신된 패킷들은 어그리게이션 버퍼에 버퍼링될 수 있다. 몇몇 실시예들에서, 제 2 복수의 패킷들의 제 1 부분 전체가 수신되었다는 사실은, 제 1 송신 매체 상에서 스트림 종료 마커 패킷의 수신에 의해 표시될 수 있다. 이 때, 버퍼링된 패킷들은 프로세싱을 위해 프로토콜 스택의 다음 계층에 포워딩될 수 있어서, 제 2 복수의 패킷들은 의도된 순서로 프로세싱될 수 있다.
물론, 몇몇 경우들에서, 스트림 종료 마커 패킷은, 예를 들어, 몇몇 종류의 에러로 인해 수신되지 않을 수 있는 것이 또한 가능하다. 이 경우, 제 1 송신 매체 상에서 수신되지 않을 추가적 패킷들을 무한정으로 대기하는 것을 회피하기 위해, 예를 들어, 실제 시간 또는 버퍼 사이즈(풀니스)에 기초한 타임아웃 파라미터가 존재할 수 있다.
실시예들의 다른 세트에서, 스트림 종료 마커 패킷들을 또한 이용함이 없이 스트림 시작 마커 패킷들이 이용될 수 있다. 예를 들어, 도 4에 대해 앞서 언급된 바와 같이, 몇몇 실시예들에서, 특정한 송신 매체 상에서 수신되는 스트림 시작 마커 패킷은, 그 송신 매체 상에서 송신될 버스트의 버스트 사이즈를 나타내는 정보를 포함할 수 있다. 이 경우, 수신기는, 스트림 시작 마커 패킷의 버퍼 사이즈 정보에 기초하여 버스트의 종료가 발생하는 시점(예를 들어, 스트림 시작 마커 패킷의 버퍼 사이즈 정보에 의해 표시되는 수의 패킷들이 수신된 시점)을 결정할 수 있다.
따라서, 몇몇 실시예들에서, 제 1 스트림의 제 1 스트림 시작 마커 패킷은 제 1 송신 매체 상에서 수신될 수 있다. 제 1 스트림 시작 마커 패킷은 제 1 버퍼 사이즈를 나타내는 정보를 포함할 수 있다. 그 다음, 제 1 스트림의 (예를 들어, 제 1 버퍼 사이즈를 갖는) 패킷들의 제 1 버스트는 제 1 송신 매체 상에서 수신될 수 있다.
제 1 스트림의 제 2 스트림 시작 마커 패킷은 또한 제 2 송신 매체 상에서 수신될 수 있다. 제 2 스트림 시작 마커 패킷은 제 2 버퍼 사이즈를 나타내는 정보를 포함할 수 있다. 그 다음, 제 1 스트림의 (예를 들어, 제 2 버퍼 사이즈를 갖는) 패킷들의 제 2 버스트는 제 2 송신 매체 상에서 수신될 수 있다.
몇몇 실시예들에서, 제 2 버스트의 제 1 부분은, 제 1 버스트의 제 1 부분이 제 1 송신 매체 상에서 수신된 후 그리고 제 1 버스트의 제 2 부분이 제 1 송신 매체 상에서 수신되기 전에 제 2 송신 매체 상에서 수신될 수 있다. 이 경우, 제 1 스트림 시작 마커 패킷의 제 1 버스트 사이즈를 나타내는 정보에 기초하여, 제 2 버스트의 제 1 부분이 수신된 때 제 1 버스트의 제 2 부분이 아직 수신되지 않았다고 결정될 수 있다. 이에 기초하여, 제 2 버스트의 제 1 부분은, 제 1 버스트의 제 1 및 제 2 부분들이 프로세싱되는 동안 버퍼에 저장될 수 있고, 제 2 버스트의 제 1 부분은, (예를 들어, 제 1 버스트의 모든 패킷들은 의도된 스트림 순서화에서 제 2 버스트의 임의의 패킷들 이전에 있을 수 있기 때문에) 제 1 버스트의 제 2 부분의 프로세싱이 완료된 후 프로세싱될 수 있다.
앞서 설명된 바와 같이 스위치 마커 패킷들이 이용되는 경우와 같은 몇몇 실시예들에서, 어그리게이트 버퍼를 순환 버퍼로 구현할 필요가 없을 수 있지만, 원한다면, 어그리게이트 버퍼는 여전히 순환 버퍼로 구현될 수 있음이 주목될 것이다.
스위치 마커 패킷들은 스트림 스플리팅/어그리게이션의 경우 주로 이용되는 것으로 앞서 설명되지만, 스위치 마커 패킷들은 추가적으로 또는 대안적으로, 스트림들이 새로운 송신 매체에 전체적으로 이송되고 있는 스트림 재할당 상황들에서 이용될 수 있음을 주목해야 한다.
도 6은, 디바이스가 스트림을 새로운 송신 매체로 스위칭하는 방법을 예시하는 흐름도이다. 도 6의 방법은, "장애 극복" 상황들, 즉, 송신 매체가 실패한(즉, 통신 능력에서 상당한 또는 전반적인 손실을 겪는) 상황들에서 주로 이용될 수 있다. 그러나, 도 6의 방법의 일부 또는 전부는 추가적으로 또는 대안적으로 정규의 로드 밸런싱 상황들, 즉, 원래의 송신 매체 및 새로운 송신 매체 모두가 통신을 위해 이용될 수 있는 상황들에서 이용될 수 있다.
방법을 구현하는 디바이스는 복수의 송신 매체들을 통해 제 2 디바이스에 커플링될 수 있는데; 예를 들어, 제 1 및 제 2 디바이스들은, 몇몇 실시예들에서 도 1에 도시된 디바이스들 중 2개의 디바이스들일 수 있다. 방법을 구현하는 시스템은, 몇몇 실시예들에서, 도 2에 도시되고 그에 대해 설명된 것과 같은 시스템일 수 있다. 시스템은, 도 3에 도시되고 그에 대해 설명된 것과 같은 OSI 프로토콜 스택을 구현할 수 있다. 예를 들어, 실시예들의 일 세트에서, 방법은, 예를 들어, 하이브리드 제어 엔티티(212) 및/또는 하이브리드 브릿지(214)에 의해 하이브리드 적응 계층(310)에서 구현될 수 있다. 다른 실시예들에서, 방법은 다른 계층 또는 몇몇 계층들에서 구현될 수 있다 (예를 들어, 몇몇 계층들 각각이 방법의 엘리먼트들을 구현할 수 있다). 방법은 다음과 같이 수행될 수 있다.
602에서, 제 2 디바이스로의 송신을 위해 의도된 제 1 스트림이 수신될 수 있다. 제 1 스트림(예를 들어, 제 1 스트림의 패킷들)은 상위 프로토콜 계층으로부터 수신될 수 있다.
604에서, 제 1 스트림의 제 1 복수의 패킷들이 제 1 송신 매체 상에서 제 2 디바이스에 송신될 수 있다. 제 1 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들을 포함할 수 있다. 각각의 인덱스 마커 패킷은 인덱스 번호를 포함할 수 있다. 예를 들어, 몇몇 실시예들에서, 초기 인덱스 마커 패킷은 1(또는 원하는대로 임의의 다른 수)의 인덱스 번호를 가질 수 있고, 각각의 후속 인덱스 마커 패킷은, 그 이전의 인덱스 마커 패킷의 인덱스 번호에 대해 1만큼 증분된 인덱스 번호를 가질 수 있다. 인덱스 마커 패킷들은 제 1 스트림에 삽입될 수 있다. 인덱스 마커 패킷들은 규칙적인 또는 불규칙적인 인터벌들로 제 1 스트림에 삽입될 수 있다. 실시예들의 일 세트에서, 인덱스 마커 패킷은 매 n 패킷들마다 제 1 스트림에 삽입될 수 있고, 여기서 n은 50, 100, 1000, 5000 또는 원하는대로 임의의 다른 수일 수 있다. 몇몇 실시예들에서, n의 값은 고정되지 않을 수 있고, 몇몇 인터벌들에서 또는 심지어 모든 각각의 인터벌에서 변할 수 있다.
606에서, 제 1 스트림의 제 1 복수의 패킷들의 제 1 부분은 버퍼에 저장될 수 있다. 몇몇 실시예들에서, 제 1 스트림의 패킷들의 적어도 일부는 송신 버퍼에 (예를 들어, 일시적으로) 저장될 수 있다. 몇몇 실시예들에서, 인덱스 마커 패킷들이 또한 송신 버퍼에 저장될 수 있다.
608에서, 제 1 복수의 패킷들의 적어도 일부가 제 2 디바이스에 의해 수신되지 않았을 수 있다고 결정될 수 있다. 몇몇 실시예들에서, 송신 매체(또는 특정한 송신 매체를 활용하는 인터페이스)는 때때로 일시적으로 또는 영속적으로 실패할 수 있다. 본 명세서에서 설명되는 바와 같은 송신 매체의 실패는, 통신 능력의 (일시적인 또는 영속적인) 상당한 또는 완전한 손실로 인해 송신 매체 상에서 더 이상 스트림들이 송신되지 않을 수 있는 상황을 지칭하는 것으로 의도된다. 따라서, 제 1 송신 매체가 실패한 것으로 결정되면, 제 1 복수의 패킷들의 적어도 일부가 제 2 디바이스에 의해 수신되지 않을 수 있다고 도출될 수 있다.
제 1 송신 매체가 실패하면, 제 1 송신 매체에 할당된 각각의 스트림은 새로운 송신 매체에 재할당될 수 있다. 이 선택 프로세스는, 몇몇 실시예들에서, 도 4에 대해 앞서 설명된 새로운 송신 매체를 로드 밸런싱하는 선택 프로세스와 유사할 수 있다. 예를 들어, 어느 송신 매체(또는 매체들)가 제 1 스트림(및 가능하게는 다른 스트림들)을 최상으로 수용할 수 있는지를 결정하기 위해, 제 1 스트림(및 가능하게는 다른 스트림들) 및 이용가능한 송신 매체들 중 하나 또는 그 초과의 특성들이 고려될 수 있다. 몇몇 실시예들에서, 제 1 스트림이 제 2 송신 매체로 재할당되어야 한다고 결정될 수 있다.
제 1 복수의 패킷들 중 일부가 제 2 디바이스에 의해 수신되지 않았을 수 있기 때문에, 송신 버퍼에 저장된 패킷들 중 적어도 일부가 재송신되어야 한다고 결정될 수 있다. 또한, 몇몇 실시예들에서, "강조된" 패킷들(즉, 버퍼 시작 마커 패킷과 버퍼 종료 마커 패킷 사이의 패킷들)이 이전에 송신된 패킷들(예를 들어, 제 1 복수의 패킷들의 일부로서 제 1 송신 매체 상에서 송신되는 패킷들)을 복제할 수 있음을 수신기에 나타내기 위해, 재송신된 패킷들의 시작 및 종료시에 버퍼 마커 패킷들이 제 2 송신 매체 상에서 제 2 디바이스에 송신될 수 있다.
몇몇 실시예들에서, 버퍼 시작 마커 패킷은, 인덱스 마커 패킷을 식별하고, 식별된 인덱스 마커 패킷에 대한, 제 1 스트림에서의 버퍼 시작 마커 패킷의 위치를 나타내는 정보를 포함할 수 있다. 예를 들어, 몇몇 실시예들에서, 스트림에 대한 버퍼 시작 마커 패킷은, 버퍼에서 제 1 패킷 이전에 스트림의 마지막 인덱스 마커 패킷의 인덱스 번호, 및 버퍼에서의 제 1 패킷과 그 인덱스 마커 패킷 사이의 스트림의 패킷들의 수를 포함할 수 있다. 이것은, 인덱스 마커들이 규칙적인(예를 들어, 예측가능한) 인터벌들로 삽입되는지 여부와 무관하게 제 2 디바이스가 임의의 복제 패킷들을 식별 및 폐기하도록 허용할 수 있는데, 이는, 제 2 디바이스가 오직, 하나 또는 그 초과의 최근에 수신된 인덱스 마커 패킷 인덱스 번호들 및 그 하나 또는 그 초과의 최근에 수신된 인덱스 마커 패킷들 이후 수신된 패킷들의 수를 파악하기만 하면 되기 때문이다.
몇몇 실시예들에서, 버퍼 시작 마커 패킷은 또한 버퍼의 사이즈를 나타내는 정보를 포함할 수 있다. 예를 들어, 버퍼 종료 패킷을 송신하기 보다는, 버퍼의 사이즈(예를 들어, 패킷들의 수)를 수신기에 단순히 나타내는 것이 유리할 수 있는데, 이것은 버퍼 전체가 수신되는 시점을 수신기가 결정하게 할 수 있다. 이것은, 버퍼 종료 패킷에서 구현되는 추가적인 오버헤드를 회피하기 위해 바람직할 수 있다.
몇몇 실시예들에서, 버퍼 마커 패킷들은 이용되지 않을 수 있는데, 이는, 몇몇 실시예들에서, 제 2 디바이스가, 복제 패킷들이 수신되었는지 여부를 결정하고 이러한 복제 패킷들을 식별 및 폐기할 충분한 기반을 (예를 들어, 규칙적인 인터벌들로 삽입되는 경우), 인덱스 마커 패킷들이 제공할 수 있기 때문임을 주목해야 한다.
610에서, 제 1 스트림의 제 2 복수의 패킷들은 제 2 송신 매체 상에서 제 2 디바이스에 송신될 수 있다. 제 2 복수의 패킷들은 제 1 복수의 패킷들의 적어도 서브세트를 포함할 수 있고, 또한 하나 또는 그 초과의 인덱스 마커 패킷들의 적어도 서브세트를 포함할 수 있다. 제 2 복수의 패킷들은, 예를 들어, 또한 제 1 복수의 패킷들의 일부인, 송신 버퍼에 저장된 이러한 패킷들(임의의 인덱스 마커 패킷들을 포함함)을 포함할 수 있다. 즉, 제 2 복수의 패킷들은 제 1 복수의 패킷들의 일부의 복제들을 포함할 수 있다. 앞서 언급된 바와 같이, 이것은 패킷 손실을 회피하기 위해 바람직할 수 있는데, 이는, 제 1 복수의 패킷들의 전부가 제 2 디바이스에 의해 수신되는 것은 아닐 수 있다고 결정될 수 있기 때문이다. 그러나, 제 1 송신 매체 및 제 2 송신 매체 모두 상에서 성공적으로 수신된 패킷들(즉, 이들의 복제 카피들)을 식별 및 제거하기 위한 비교적 단순한 수단을 제 2 디바이스에 제공하는 것이 또한 바람직할 수 있다.
앞서 언급된 바와 같이, 버퍼 종료 마커 패킷은 제 2 송신 매체 상에서 제 2 디바이스에 송신될 수 있다. 버퍼 종료 마커 패킷은, 제 2 복수의 패킷들에 포함된 제 1 복수의 패킷들의 적어도 서브세트를 송신한 후 제 2 디바이스에 송신될 수 있다. 즉, 버퍼 종료 마커 패킷은, 예를 들어, 버퍼링된 패킷들 전부(즉, 제 1 송신 매체 상에서 송신되는 제 1 복수의 패킷들의 패킷들을 복제할 수 있음)가 송신되었고 후속 패킷들은 이전에 송신된 패킷들을 복제하지 않을 수 있음을 제 2 디바이스에 나타내기 위해, 버퍼링된 패킷들 전부가 재송신된 후 제 2 디바이스에 송신될 수 있다.
제 1 스트림의 추가적인 패킷들(즉, 복제되지 않은 패킷들)은 또한, 버퍼링된 패킷들의 종료 이후 제 2 송신 매체 상에서 제 2 디바이스에 송신될 수 있다. 몇몇 실시예들에서, 추가적인 패킷들은 복제 버퍼의 패킷들의 송신을 조절(예를 들어, 자체-스로틀)하는데 이용될 수 있다. 예를 들어, 실시예들의 일 세트에서, 제 1 스트림의 추가적인 패킷은 수신기로의 송신을 위해 수신될 수 있다. 추가적인 패킷은 제 2 복수의 패킷들 이후 송신을 위해 버퍼에 (예를 들어, 버퍼의 테일(tail)에) 저장될 수 있다. 그 다음, 버퍼의 헤드 엔드로부터 미리 선택된 수의 패킷들이, 수신기로의 송신을 위해 제 1 스트림의 추가적인 패킷을 수신하는 것에 기초하여 제 2 송신 매체 상에서 재송신될 수 있다. 즉, 짧은 시간량에 잠재적으로 많은 수의 패킷들(예를 들어, 제 1 송신 매체의 실패로 인해 재송신될 필요가 있을 수 있는 패킷들)로 수신기를 과다부담시키는 것을 회피하기 위해, 버퍼로부터의 패킷들을 릴리스시키는 자동 타이머 메커니즘으로서 추가적인 패킷이 이용될 수 있다. 이러한 자체-스로틀링 메커니즘은 선택적일 수 있고 그리고/또는 대안적으로(또는 추가적으로) 도 7에 대해 설명되는 바와 같이 수신기에서 구현될 수 있음을 주목해야 한다.
앞서 언급된 바와 같이, 몇몇 실시예들에서, 버퍼 종료 마커 패킷은 송신되지 않을 수 있다. 이러한 경우, 버퍼 시작 패킷은 버퍼 사이즈를 나타내는 정보를 포함할 수 있고, 이러한 경우 버퍼 종료 패킷은 무관할 것이다. 대안적으로, 몇몇 실시예들에서, 버퍼링된 패킷들의 재송신이 완료되었다는, 제 2 디바이스에 제공되는 어떠한 표시도 존재하지 않을 수 있다. 예를 들어, 규칙적인 인터벌들로 인덱스 마커 패킷들이 제 1 스트림에 삽입되면, 인덱스 마커 패킷들은, 버퍼 종료(또는, 몇몇 실시예들에서, 버퍼 시작) 마커 패킷에 대한 어떠한 필요없이, 제 2 디바이스가 임의의 복제 패킷들을 식별 및 폐기하는 충분한 기반을 제공할 수 있다.
도 7은, 디바이스가 제 2 디바이스로부터 수신된 복제 패킷들을 제거하는 방법을 예시하는 흐름도이다. 도 7의 방법은, "장애 극복" 상황들, 즉, 송신 매체가 실패한(즉, 통신 능력에서 상당한 또는 전반적인 손실을 겪는) 상황들에서 주로 이용될 수 있다. 그러나, 도 7의 방법의 일부 또는 전부는 추가적으로 또는 대안적으로 정규의 로드 밸런싱 상황들, 즉, 원래의 송신 매체 및 새로운 송신 매체 모두가 통신을 위해 이용될 수 있는 상황들에서 이용될 수 있다.
방법을 구현하는 디바이스는 복수의 송신 매체들을 통해 제 2 디바이스에 커플링될 수 있는데; 예를 들어, 제 1 및 제 2 디바이스들은, 몇몇 실시예들에서 도 1에 도시된 디바이스들 중 2개의 디바이스들일 수 있다. 방법을 구현하는 시스템은, 몇몇 실시예들에서, 도 2에 도시되고 그에 대해 설명된 것과 같은 시스템일 수 있다. 시스템은, 도 3에 도시되고 그에 대해 설명된 것과 같은 OSI 프로토콜 스택을 구현할 수 있다. 예를 들어, 실시예들의 일 세트에서, 방법은, 예를 들어, 하이브리드 제어 엔티티(212) 및/또는 하이브리드 브릿지(214)에 의해 하이브리드 적응 계층(310)에서 구현될 수 있다. 다른 실시예들에서, 방법은 다른 계층 또는 몇몇 계층들에서 구현될 수 있다 (예를 들어, 몇몇 계층들 각각이 방법의 엘리먼트들을 구현할 수 있다). 방법은 다음과 같이 수행될 수 있다.
702에서, 제 1 스트림의 제 1 복수의 패킷들이 제 1 송신 매체 상에서 수신될 수 있다. 제 1 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들을 포함할 수 있다. 각각의 인덱스 마커 패킷은 인덱스 번호를 포함할 수 있다. 예를 들어, 몇몇 실시예들에서, 초기 인덱스 마커 패킷은 1(또는 원하는대로 임의의 다른 수)의 인덱스 번호를 가질 수 있고, 각각의 후속 인덱스 마커 패킷은, 그 이전의 인덱스 마커 패킷의 인덱스 번호에 대해 1만큼 증분된 인덱스 번호를 가질 수 있다. 인덱스 마커 패킷들은 규칙적인 또는 불규칙적인 인터벌들로 제 1 스트림에 위치될 수 있다. 실시예들의 일 세트에서, 인덱스 마커 패킷은 매 n 패킷들마다 제 1 스트림에 위치될 수 있고, 여기서 n은 50, 100, 1000, 5000 또는 원하는대로 임의의 다른 수일 수 있다. 몇몇 실시예들에서, n의 값은 고정되지 않을 수 있고, 몇몇 인터벌들에서 또는 심지어 모든 각각의 인터벌에서 변할 수 있다.
704에서, 제 1 송신 매체 상에서 제 1 스트림에서 수신된 마지막 인덱스 마커 및 그 마지막 인덱스 마커 이후 제 1 송신 매체 상에서 수신된 제 1 스트림의 패킷들의 수를 나타내는 정보가 저장될 수 있다. 몇몇 실시예들에서, 예를 들어, 인덱스 마커들이 비교적 짧은 및/또는 불규칙한 인터벌들로 위치되면, 다수의 이전에 수신된 인덱스 마커 패킷들의 인덱스 번호들을 나타내는 정보는, 가능하게는 이 인덱스 마커 패킷들 사이에서 수신된 패킷들의 수를 나타내는 정보와 함께 저장될 수 있다.
706에서, 버퍼 시작 마커 패킷이 제 2 송신 매체 상에서 수신될 수 있다. 몇몇 실시예들에서, 버퍼 시작 마커 패킷은, 인덱스 마커 패킷을 식별하고, 식별된 인덱스 마커 패킷에 대한, 제 1 스트림에서의 버퍼 시작 마커 패킷의 위치를 나타내는 정보를 포함할 수 있다. 예를 들어, 몇몇 실시예들에서, 스트림에 대한 버퍼 시작 마커 패킷은, 버퍼에서 제 1 패킷 이전에 스트림의 마지막 인덱스 마커 패킷의 인덱스 번호, 및 버퍼에서의 제 1 패킷과 그 인덱스 마커 패킷 사이의 스트림의 패킷들의 수를 포함할 수 있다. 이것은, 인덱스 마커들이 규칙적인(예를 들어, 예측가능한) 인터벌들로 삽입되는지 여부와 무관하게 제 2 디바이스가 임의의 복제 패킷들을 식별 및 폐기하도록 허용할 수 있는데, 이는, 제 2 디바이스가 오직, 하나 또는 그 초과의 최근에 수신된 인덱스 마커 패킷 인덱스 번호들 및 그 하나 또는 그 초과의 최근에 수신된 인덱스 마커 패킷들 이후 수신된 패킷들의 수를 파악하기만 하면 되기 때문이다. 몇몇 실시예들에서, 버퍼 시작 마커 패킷은 또한 버퍼의 사이즈를 나타내는 정보를 포함할 수 있다.
708에서, 제 1 스트림의 제 2 복수의 패킷들은 제 2 송신 매체 상에서 수신될 수 있다. 제 2 복수의 패킷들은 제 1 복수의 패킷들의 적어도 서브세트를 포함할 수 있고, 하나 또는 그 초과의 인덱스 마커 패킷들의 적어도 서브세트를 포함할 수 있다. 제 2 복수의 패킷들은, 예를 들어, 또한 제 1 복수의 패킷들의 일부인, 제 2 디바이스에 의해 송신 버퍼에 저장된 패킷들(임의의 인덱스 마커 패킷들을 포함함)을 포함할 수 있다. 즉, 제 2 복수의 패킷들은 제 1 복수의 패킷들의 일부의 복제들을 포함할 수 있다.
버퍼 종료 마커 패킷은 또한 몇몇 실시예들에서 제 2 송신 매체 상에서 제 1 디바이스에 의해 수신될 수 있다. 버퍼 종료 마커 패킷은, 제 2 복수의 패킷들에 포함된 제 1 복수의 패킷들의 적어도 서브세트를 수신한 후 제 1 디바이스에 의해 수신될 수 있다. 즉, 버퍼 종료 마커 패킷은, 버퍼링된 패킷들 전부가 수신된 후 제 1 디바이스에 의해 수신될 수 있고, 버퍼링된 패킷들 전부(즉, 제 1 송신 매체 상에서 수신되는 제 1 복수의 패킷들의 패킷들을 복제할 수 있음)가 송신되었음을 제 2 디바이스에 나타낼 수 있고, 후속 패킷들은 이전에 송신된 패킷들을 복제하지 않을 수 있다. 그러나, 몇몇 실시예들에서, 예를 들어, 송신되고 있는 버퍼의 사이즈를 나타내는 정보를 버퍼 시작 마커 패킷이 포함하면, 버퍼 종료 마커 패킷은 필요하거나 바람직하지 않을 수 있음을 주목해야 한다. 이 경우, 수신기는, 버퍼 시작 마커 패킷에 포함된 정보에 기초하여 버퍼의 전체가 수신된 시점을 결정할 수 있다. 이것은, 버퍼 종료 패킷에서 구현되는 추가적인 오버헤드를 회피하기 위해 바람직할 수 있다.
제 1 스트림의 추가적인 패킷들(즉, 복제되지 않은 패킷들)은 또한, 버퍼링된 패킷들 이후 제 2 송신 매체 상에서 제 1 디바이스에 의해 수신될 수 있다. 몇몇 실시예들에서, 예를 들어, 짧은 시간량에 많은 수의 패킷들이 수신되면, 추가적인 패킷들은, 버퍼링된 패킷들의 프로세싱(예를 들어, 상위 프로토콜 계층들로의 포워딩)을 조절(예를 들어, 자체-스로틀)하기 위해 이용될 수 있다. 이것은, 잠재적으로 패킷 손실을 초래할 수 있는, 상위 프로토콜 계층들 중 하나 또는 그 초과를 과다부담시키는 것을 회피하기 위해 바람직할 수 있다.
예를 들어, 실시예들의 일 세트에서, 제 2 복수의 패킷들 중 적어도 일부는, 예를 들어, 프로세싱 전에 수신 버퍼에 저장될 수 있다. 제 1 스트림의 추가적인 패킷은 제 2 송신 매체 상에서 수신될 수 있고, 수신 버퍼의 테일 엔드에 저장될 수 있다. 제 1 스트림의 추가적인 패킷을 수신하는 것에 기초하여, 수신 버퍼의 헤드 엔드로부터 미리 선택된 수의 패킷들이 프로세싱(예를 들어, 상위 프로토콜 계층으로 포워딩)될 수 있고, 버퍼의 헤드 엔드로부터 제거될 수 있다. 따라서, 몇몇 실시예들에서, 버퍼로부터의 패킷들을 릴리스하기 위해 추가적인 패킷이 자동 타이머 메커니즘으로서 이용될 수 있다. 각각의 더 추가적인 패킷의 수신은, 실시예들의 일 세트에 따라, 수신 버퍼가 비어있게 될 때까지 수신 버퍼의 헤드 엔드로부터 미리 선택된 수의 추가적인 패킷들을 릴리스할 수 있다.
추가적으로, 몇몇 실시예들에서, 버퍼 마커 패킷들은 결코 이용되지 않을 수 있는데, 이는, 몇몇 실시예들에서, 제 2 디바이스가, 복제 패킷들이 수신되었는지 여부를 결정하고 이러한 복제 패킷들을 식별 및 폐기할 충분한 기반을 (예를 들어, 규칙적인 인터벌들로 삽입되는 경우), 인덱스 마커 패킷들이 제공할 수 있기 때문임을 주목해야 한다.
710에서, 제 1 송신 매체 상에서 수신되는 제 1 복수의 패킷들 또는 제 2 송신 매체 상에서 수신되는 제 2 복수의 패킷들 중 하나 또는 그 초과가 복제 패킷들이라고 결정될 수 있다. 제 1 송신 매체 상에서 수신되는 제 1 복수의 패킷들 또는 제 2 송신 매체 상에서 수신되는 제 2 복수의 패킷들 중 하나 또는 그 초과가 복제 패킷들이라고 결정하는 것은, 하나 또는 그 초과의 인덱스 마커 패킷들에 적어도 부분적으로 기초할 수 있다. 몇몇 실시예들에서, 이 결정은, 제 1 송신 매체 상에서 수신되는 제 1 스트림의 마지막 인덱스 마커 패킷 및 제 1 송신 매체 상에서 제 1 스트림의 마지막 인덱스 마커 패킷이 수신된 후 제 1 송신 매체 상에서 수신된 제 1 스트림의 패킷들의 수를 나타내는 저장된 정보에 부분적으로 기초하여 행해질 수 있다. 예를 들어, 인덱스 마커 패킷들이 규칙적인 인터벌들로 삽입되면, 제 2 송신 매체 상에서 수신되는 제 1 인덱스 마커 패킷 및 그 인덱스 마커 패킷을 수신하기 전에 제 2 송신 매체 상에서 수신되는 패킷들의 수를, 제 1 송신 매체 상에서 수신되는 마지막 인덱스 마커 패킷 및 제 1 송신 매체 상에서 그 인덱스 마커 패킷 이후 수신된 패킷들의 수와 비교하는 것은, 임의의 복제 패킷들이 존재하는지 및 얼마나 많이 존재하는지, 및 어느 패킷들이 복제 패킷들인지의 표시를 제공할 수 있다. 그러나, 이 프로세스는, 제 2 송신 매체 상에서 인덱스 마커 패킷이 수신될 때까지 대기하는 것을 요구할 수 있고, 이것은 비효일적일 수 있다.
대안적으로, 제 2 송신 매체 상에서 제 1 스트림의 임의의 컨텐츠 패킷들 이전에 버퍼 시작 마커 패킷이 수신되면, 복제 패킷들의 존재를 즉시 검출하기 위해, 스트림에서 그의 위치를 식별하는 버퍼 시작 마커 패킷의 정보가 이용될 수 있다. 예를 들어, 몇몇 실시예들에서, 제 1 복수의 패킷들 또는 제 2 복수의 패킷들 중 임의의 패킷이 서로의 복제 패킷들인지 여부를 결정하기 위해, 수신된 마지막 인덱스 마커 패킷 및 제 1 송신 매체 상에서 마지막 인덱스 마커 패킷 이후 수신된 패킷들의 수를 나타내는 저장된 정보는, 가장 최근의 인덱스 마커 패킷에 대한, 제 1 스트림에서 버퍼 시작 마커 패킷의 위치를 나타내는 정보와 비교될 수 있다.
712에서, 결정된 복제 패킷들은 폐기될 수 있다. 폐기되는 복제 패킷들은, 원하는대로, 제 1 또는 제 2 송신 매체들 중 하나 상에서 수신된 복제 패킷들의 카피들일 수 있다. 실시예들의 일 세트에서, 버퍼 시작 마커 패킷이 수신된 후 제 1 스트림의 패킷들이 제 1 송신 매체 상에서 계속 수신되고, 이러한 패킷들이 스트림 패킷 순서화에서 버퍼 시작 마커 패킷의 위치 이후에 있으면, 이 패킷들은 (예를 들어, 이들은 제 2 송신 매체 상에서 재송신될 것으로 가정될 수 있기 때문에) 폐기될 수 있다. 한편, 버퍼 시작 마커 패킷이 수신된 경우, 제 1 스트림의 패킷들이 스트림 패킷 순서화에서 버퍼 시작 마커 패킷의 위치를 지난 지점까지 제 1 송신 매체 상에서 이미 수신되었다면, 복제되지 않은 패킷들(즉, 제 1 송신 매체 상에서 아직 수신되지 않고 프로세싱되지 않은 패킷들)이 수신될 때까지, 제 2 송신 매체 상에서 수신되는 제 1 스트림의 패킷들은 폐기될 수 있다. 이 때, 제 1 스트림은 제 2 송신 매체로 완전히 스위칭될 수 있다. 예를 들어, 몇몇 실시예들에서, 추후의 시간에 새로운 송신 매체로의 제 1 스트림의 추가적 재할당의 경우, 제 2 송신 매체 상에서 최근에 수신된 하나 또는 그 초과의 인덱스 마커 패킷들 및 최근에 수신된 인덱스 마커 패킷들 사이에 또는 그 이후에 수신된 패킷들의 수를 나타내는 정보는 계속 저장될 수 있다.
도 8 내지 도 11 및 추가적인 고려사항들
도 8 내지 도 11 및 그와 함께 제공되는 다음의 세부사항들 및 추가적인 고려사항들은, 도 4 내지 도 7의 방법들에 따라 이용될 수 있는 특정한 예시적인 구현들과 관련된다. 그러나, 이 분야의 당업자들에게 인식될 바와 같이, 상이한 구현 세부사항들을 포함하는 임의의 수의 상이한 구현들이 도 4 내지 도 7의 방법들에 따라 이용될 수 있고, 따라서 다음의 고려사항들은 본 개시를 전체적으로 제한하는 것으로 고려되어서는 안된다.
도 8
도 8은, 일 실시예에 따른 스트림 스플리팅/스트림 어그리게이션을 둘러싼 송신 디바이스와 수신 디바이스 사이의 메시지 플로우(800)를 예시하는 통신 도면이다.
초기에, 송신 디바이스에 의해 과다가입 이벤트가 검출될 수 있다. 디바이스(예를 들어, 도 2에 도시된 하이브리드 제어 엔티티(212) 또는 다른 시스템 엘리먼트와 같은, 하이브리드 네트워킹 계층에서 동작하는 하이브리드 제어 엔티티)는 스트림을 스플리팅하는 것으로 판정할 수 있다. 디바이스는, 예를 들어, 스트림을 스플리팅한다는 판정을 나타내는 제어 패킷들을 수신 디바이스에 송신함으로써 수신 디바이스에 통지할 수 있다. 수신 디바이스(예를 들어, 도 2에 도시된 하이브리드 브릿지(214) 또는 다른 시스템 엘리먼트와 같은, 하이브리드 네트워킹 계층에서 동작하는 하이브리드 브릿지)는, (추천된 어그리게이션 버퍼 사이즈 등과 같은) 어그리게이션 명령들을 포함할 수 있는 제어 패킷들을 수신할 수 있고, 제어 패킷들의 수신을 확인응답할 수 있다.
몇몇 실시예들에서, 스플리팅을 위해 선택된 스트림의 패킷들을 포함하는 새로 수신된 패킷들의 라우팅을 결정하기 위해 송신 디바이스에 의해 이용되는 라우팅 테이블은 스트림을 스플리팅한다는 판정에 따라 업데이트될 수 있다. 그 다음, 송신 디바이스는, 예를 들어, 스플리팅된 스트림의 몇몇 패킷들을 제 1 송신 매체로 라우팅하고 스플리팅된 스트림의 몇몇 패킷들을 제 2 송신 매체로 라우팅함으로써, 스트림을 다수의 인터페이스들에 걸쳐 스플리팅할 수 있다. 선택된 송신 매체들 각각에 라우팅되는 스플리팅된 스트림의 부분들은, 몇몇 실시예들에서, 라우팅 테이블에 저장된 정보에 따라 유지될 수 있다.
한편, 수신 디바이스는 다수의 인터페이스들 상에서 스플리팅된 플로우의 패킷들을 수신할 수 있고, 패킷들을 어그리게이트 및 재순서화할 수 있다.
결국, 송신 디바이스는 스트림을 스플리팅하는 것을 중지하는 것으로 판정할 수 있다. 송신 디바이스는, 후속적으로, 다수의 인터페이스들보다는 단일 인터페이스를 이용하여 스트림의 패킷들을 송신하는 것을 시작할 수 있다. 송신 디바이스는, 추가적 제어 패킷들을 이용하여 수신 디바이스에 통지할 수 있고, 추가적 제어 패킷들은 수신 디바이스에 의해 수신되고 확인응답된다.
따라서, 몇몇 실시예들에 따르면, 송신 디바이스는, 자신이 플로우의 스플리팅 상태를 변형할 경우, 예를 들어, 자신이 플로우를 스플리팅하는 것을 시작할 경우 및 자신이 플로우를 스플리팅하는 것을 중지하는 경우에, 수신기에 커맨드를 전송할 수 있다.
이 정보의 목적은, 수신기가 재순서화 버퍼를 생성하고 플로우의 재순서화를 시작하게 하는 것일 수 있다. 재순서화는 (CPU 및 메모리 모두에서) 비교적 고가(expensive)일 수 있고, 플로우의 전달 레이턴시를 잠재적으로 증가시킬 수 있다. 따라서, 수신기가 모든 플로우들에 대해 항상 재순서화를 행하지는 않는 것이 바람직할 수 있다. 따라서, 몇몇 실시예들에서, (예를 들어, 셋업 및 어그리게이션 버퍼를 포함하는) 재순서화는 오직, 다수의 매체들에 걸쳐 송신되는 플로우들에 대해서만 수행될 수 있다.
몇몇 실시예들에 따르면, 제어 패킷들은 또한, 추천된 버퍼 사이즈 및/또는 추천된 타임아웃을 나타낼 수 있다. 송신기는, 스트림이 스플리팅되는 인터페이스들 모두의 상대적 레이턴시 및 플로우 레이트에 기초하여 어그리게이션 버퍼 사이즈를 추천할 수 있다. 수신기는 통상적으로 그 추천을 따를 수 있지만, 메모리 이용가능성에 따라 오버라이드할 수 있다. 송신기는 또한, 스트림이 스플리팅되는 인터페이스들 모두의 상대적 레이턴시 및 플로우 레이트에 기초하여 타임아웃을 추천할 수 있다. 또한, 수신기는 통상적으로 그 추천을 따를 수 있지만, 메모리 이용가능성에 따라 오버라이드할 수 있다.
도 9
도 9는, 일 실시예에 따른 상이한 시나리오들에 따라 다양한 송신 매체들의 가설적 링크 능력들을 예시하는 차트(900)이다. 예시된 실시예에서, 3개의 이용가능한 송신 매체들, 즉, PLC, 2.4 GHz 스펙트럼에서 동작하는 Wi-Fi(W2), 및 5 GHz 스펙트럼에서 동작하는 Wi-Fi(W5)가 존재한다. PLC 및 W5는 현재 25 Mbps보다 큰 링크 용량을 갖고, 25 Mbps는, 예시적인 실시예에서, 임계치로서 설정되었고, 이 임계치 위에서 송신 매체는, 새로운 트래픽(예를 들어, 새로운 스트림)을 추가하기에 충분한 용량보다 더 큰 용량을 갖는 것으로 고려된다. W2는 또한 어느 정도의 이용가능한 링크 용량을 갖지만, 예시된 실시예에서는 25 Mbps 미만이다.
다수의 송신 매체들이 새로운 트래픽을 지원하기에 충분한 링크 용량을 갖는 도시된 시나리오는 "높은 이용가능성"으로 지칭될 수 있다. 이 상황에서는, 스트림들 자체의 특성들에 매칭하는 것에 기초하여, 새로운 스트림들에 대해 가장 적절한 송신 매체들을 선택하는 더 큰 자유도가 존재할 수 있다. 예를 들어, 높은 우선순위 및/또는 어떠한 특정 타입들의 컨텐츠(예를 들어, 음성, 비디오)를 갖는 스트림들은 더 빠르고 그리고/또는 더 신뢰가능한 송신 매체에 할당되는 것이 바람직할 수 있는 한편, 낮은 우선순위 및/또는 어떠한 특정한 타입들의 컨텐츠(예를 들어, 데이터 다운로드들)를 갖는 스트림들은 (예를 들어, 더 빠르고 그리고/또는 더 신뢰가능한 송신 매체들을 더 높은 우선순위 트래픽을 위해 예비하기 위해) 더 느리고 그리고/또는 덜 신뢰가능한 송신 매체에 할당되는 것이 바람직할 수 있다.
하나 이하의 송신 매체가 "높은 이용가능성" 임계치 위의 링크 용량을 갖는 시나리오는, 도시된 시나리오와는 반대로, "낮은 이용가능성"으로 지칭될 수 있다. 이러한 상황에서, 적어도 몇몇 실시예들에서, 새로운 스트림은 단순히 가장 큰 링크 용량을 갖는 송신 매체에 할당될 수 있고, 새로운 스트림의 특성들을 가장 적절한 송신 매체와 매칭하기 위한 어떠한 특수한 노력도 행해지지 않을 수 있다.
도 10a 및 도 10b
도 10a 및 도 10b는, 패킷 어그리게이션이 바람직할 수 있는 시나리오들을 예시한다. 하나의 기본적인 이용예는 커버리지인데, 예를 들어, 집에서 이용하는 시나리오에서, 어그리게이션은, 단일 스트림을 지원하는 불충분한 대역폭을 갖는 집의 코너에 커버리지를 제공할 수 있다. 이러한 경우, 다수의 인터페이스들에 걸쳐 스트림을 스플리팅하는 것은 커버리지를 증가시킬 것이다. 패키지 어그리게이션은 또한 다양한 다른 시나리오들에서 바람직할 수 있다.
도 10a에 도시된 바와 같이, 일 실시예에서, 트래픽 생성기(1002)는 (예를 들어, 이더넷 커플링을 통해) 제 1 디바이스(1004)에 커플링될 수 있다. 제 1 디바이스는, 10 Mbps 접속을 갖는 Wi-Fi를 통해 그리고 7 Mbps 접속을 갖는 PLC를 통해 제 2 디바이스(1006)에 커플링될 수 있다. 제 2 디바이스(1006)는 (예를 들어, 이더넷 커플링을 통해) 트래픽 싱크(1008)에 커플링될 수 있다.
트래픽 싱크(1008)가, 트래픽 생성기(1002)로부터 12 Mbps를 요구하는 비디오 스트림을 개시한다면, Wi-Fi 접속 및 PLC 중 어떠한 것도 비디오 스트림을 개별적으로 지원하는 용량을 갖지 않을 것이다. 그러나, 스트림의 일부는 Wi-Fi 링크 상에서 송신되고 스트림의 일부는 PLC 링크 상에서 송신되도록 스트림이 스플리팅된다면, 접속들은 비디오 스트림을 함께 지원할 수 있다.
도 10b는, 몇몇 플로우들에 대해서는 충분한 대역폭이 이용가능하지만, 스트림 할당에 의해 각각의 매체에 남은 대역폭의 일부는 추가적인 플로우를 핸들링하기에 불충분한 시나리오를 예시한다. 이 경우, Wi-Fi는 40 Mbps 접속을 제공하는 한편, PLC는 20 Mbps 접속을 제공하지만, 스트림들 1 및 2 각각은 Wi-Fi 접속의 15 Mbps를 활용하고, 스트림 3은 PLC 접속의 15 Mbps를 활용한다. 따라서, Wi-Fi는 10 Mbps의 나머지 링크 용량을 갖는 한편, PLC는 5 Mbps의 나머지 링크 용량을 갖는다. 어떠한 송신 매체도 새로운 스트림 4(15 Mbps를 요구함)를 개별적으로 지원할 수 없지만, 새로운 스트림을 스플리팅함으로써, 송신 매체들은 새로운 스트림을 함께 지원할 수 있다.
몇몇 실시예들에서, 패킷 어그리게이션으로 인한 주요 성능 제한(CPU 활용)은 수신기측 상에서 패킷들의 재순서화일 수 있다. 제한된 CPU가 주어지면, 이것은, 하나의 스트림을 어그리게이트하는 동안 지원될 수 있는 어그리게이트되지 않은 트래픽 전체와 어그리게이트된 스트림의 최대 사이즈의 트레이드오프를 제공한다. 따라서, 몇몇 실시예들에서, 얼마나 많은 어그리게이트되지 않은 트래픽이 존재하는지에 따라, 가능하게는, 상이한 스트림 사이즈 제한들을 포함하는 어그리게이트된 스트림들의 사이즈를 제한하는 것이 바람직할 수 있다. 일례로서, 어떠한 다른 트래픽도 없으면 30 Mbps까지의 어그리게이트된 스트림이 지원될 수 있는 한편, 50 Mbps까지의 다른 트래픽이 있으면, 20 Mbps까지의 어그리게이트된 스트림이 지원될 수 있다. 물론, 이들은 단지 예시들이고, 원한다면, 상이한 제한들이 이용될 수 있다(또는 어떠한 제한도 없을 수 있다).
추가적으로, 어그리게이트된 스트림을 수신하는 비용(예를 들어, CPU 비용)이 어그리게이트되지 않은 스트림을 수신하는 비용보다 클 수 있기 때문에, 몇몇 실시예들에서, 어그리게이트된 스트림들의 수를 최소화하는 것이 바람직할 수 있다. 예를 들어, 실시예들의 일 세트에서, 2개의 이용가능한 송신 매체들이 존재하면 기껏해야 하나의 스트림을 스플리팅하고, 3개의 이용가능한 송신 매체들이 존재하면 2개의 스트림들을 스플리팅하는 것이 바람직할 수 있다.
즉, 몇몇 실시예들에서, (2개의 매체들을 갖는) 동일한 디바이스로부터 발신하는 2개의 스트림들이 2개의 매체들 모두에 걸쳐 스플리팅될 상황들은 회피될 수 있다. 이것은 이용가능성을 제한하지는 않을 수 있는데; 즉, 하나의 스트림이 단일 인터페이스에서 실행되는 것을 제외하고, 2개의 인터페이스들에 걸쳐 스플리팅된 하나보다 많은 스트림을 모든 스트림으로 변환하는 것은 항상 가능할 수 있다. 이와 동일한 논리가 3개의 이용가능한 매체들을 갖는 디바이스들에 적용될 수 있다.
몇몇 실시예들에서, 어그리게이션은 (예를 들어, 소스들 및 싱크들 사이에서와는 반대로) 하이브리드 디바이스들 사이에서 행해질 수 있음을 주목해야 한다. 어그리게이트한다는(즉, 다수의 인터페이스들에 걸쳐 스트림을 스플리팅한다는) 판정은 소스 하이브리드 디바이스에서 행해질 수 있다. 몇몇 실시예들에서, 모든 하이브리드 판정들은 소스 하이브리드 디바이스에서 행해질 수 있다.
도 11
도 11은, 일 실시예에 따른 어그리게이션(재순서화) 버퍼(1100)를 예시한다. (다른 가능한 통신 인터페이스들 중에서도) Wi-Fi 및 PLC의 송신 레이턴시는 상이할 수 있고, 따라서, 모든 패킷들이 정확하게 전달되는 경우에도, 이들이 무작위로 전달될 수 있는 것이 가능하고, 이는 바람직하지 않을 수 있다.
패킷들을 재순서화하는 것은 재순서화 버퍼를 요구할 수 있다. 이러한 버퍼의 사이즈는, 예를 들어, 스트림이 스플리팅되는 인터페이스들 모두의 상대적 레이턴시 및 플로우 레이트, 및 메모리 이용가능성에 기초하여 구성가능할 수 있다. 실제로 이러한 프로세스는 엄밀히 말해 재순서화 프로세스가 아니라 오히려 정확한 순서로 재결합하는 프로세스일 수 있는데, 이는, 재결합되고 있는 2개의 기본 스트림들이 내부적으로 순서대로이기 때문임을 주목한다.
재순서화 버퍼는, 아직 상위 계층들에 전달되지 않은 수신된 패킷들에 대한 포인터들을 포함할 수 있다. BaseSequence 변수는 인덱스 0에 대응하는 패킷 시퀀스 번호를 포함할 수 있다. 재순서화 버퍼는 순환 버퍼로 구현될 수 있다. 일 실시예에 따르면, 패킷이 수신되는 경우 다음 로직이 실행될 수 있다.
(PacketSequenceNumber < BaseSequence) 이면, 수신된 패킷은 오래된 무작위 패킷(예를 들어, 가능하게는 타임아웃된 패킷)이다. 패킷은, 원하는대로, 구현에 따라 드롭되거나 전달될 수 있다.
대안적으로, (PacketSequenceNumber < BaseSequence + Size) 이면, 패킷은 버퍼 내에 있을 수 있다. 패킷은 버퍼의 적절한 위치에 저장될 수 있다. 패킷에 대한 포인터는 인덱스 (PacketSequenceNumber - BaseSequence)에 배치될 수 있다. 그 인덱스가 이미 넌-NULL이면(예를 들어, 패킷 포인터가 그 위치에 이미 존재함), (예를 들어, 이 패킷은 복제 패킷일 수 있기 때문에) 패킷은 폐기될 수 있다. 그 다음, 임의의 순서대로의 패킷들이 전달될 수 있는데; 버퍼 인덱스 0이 패킷 포인터를 포함하면, 패킷은 전달될 수 있고, 인덱스는 NULL로 리셋될 수 있다. 순환 버퍼 포인터는 1만큼 앞으로 이동될 수 있고, BaseSequence 변수는 또한 증분될 수 있다. 이것은, 버퍼 인덱스 0이 NULL일 때까지(예를 들어, 패킷에 대한 포인터를 포함하지 않음) 반복될 수 있는데, 예를 들어, 이것은, 시퀀스의 다음 패킷이 아직 수신되지 않았음을 나타낸다.
대안적으로, (PacketSequenceNumber >= BaseSequence + Size) 이면, 패킷은 버퍼 외부에 있지만 더 새로운 것일 수 있는데, 이것은, 예를 들어, 버퍼가 너무 작다는 표시일 수 있다. 몇몇 실시예들에서, 시퀀스에 홀(hole)들이 존재하는지 여부와 무관하게, 충분한 패킷들이 전달되어, 이러한 새로운 시퀀스 번호를 버퍼로 이동시킬 수 있다.
재순서화 버퍼는 또한 타임아웃 메커니즘을 통합할 수 있다. 프로그래밍가능한 타임아웃 이후 패킷들은 시퀀스에 홀들이 존재하는 경우에도 상위 계층들로 전달될 수 있다. 몇몇 실시예들에서, 타임아웃 메커니즘은 각각의 패킷의 수신 타임스탬프의 기록을 유지하는 것을 포함할 수 있다. 몇몇 실시예들에서, 타임스탬프는 고유의 타임스탬프보다는 RX 시간인 것이 바람직할 수 있음을 주목한다. 타임아웃 메커니즘은, 예를 들어, 제 1 갭을 지난 패킷과 같이, 버퍼에서 제 1 이용가능한 패킷의 타임스탬프를 유지하는 것을 더 포함할 수 있다. 제 1 이용가능한 패킷의 타임스탬프가 타임아웃되면(즉, 타임아웃 값보다 더 크면), 이것(및 임의의 다른 타임아웃된 패킷들)은 전달될 수 있다.
인덱스 0에서는 패킷이 존재하지 않을 수 있는데, 이는, 네트워킹 스택으로 포워딩될 것이기 때문임을 주목한다. 이것은 비교적 고가의 동작일 수 있는데, 이는, 이 값을 컴퓨팅하기 위해서는, 제 1 패킷을 탐색하기 위해 제 1 갭을 거쳐야 하기 때문임을 또한 주목한다.
초기 시퀀스 번호들에 대해, 시퀀스 번호 예측 공격들을 방지하기 위해, TCP 및 RTP 모두는 초기 시퀀스 번호를 랜덤화할 수 있음을 주목해야 한다. 몇몇 실시예들에서, 하이브리드 레벨의 송신기 및 수신기는 이 시퀀스 번호를 제어하지 않을 수 있다. 그러나, 몇몇 실시예들에서, 스트림이 흐르기 시작한 후 스트림 스플리팅 및 어그리게이션이 활성화될 수 있다. 추가적으로, 어그리게이션은 명시적으로 활성화될 수 있는데; 예를 들어, 송신기는, (스트림 식별자를 포함하는) 스트림이 스플리팅되려 함을 나타내는 커맨드를 수신기에 전송할 수 있다. 이것은, 스플리팅이 시작하기 전에 현재 진행되는 시퀀스 번호를 수신기가 식별하도록 허용하여, 랜덤화된 초기 시퀀스 번호들에 의해 야기될 수 있는 임의의 잠재적인 문제들을 완화시킨다.
패킷 시퀀스 번호들을 활용하는 앞서 설명된 순환 버퍼는 많은 실시예들에서 이용되지 않을 수 있음을 주목해야 한다. 예를 들어, 임의의 수의 다른 순환 버퍼 기술들 또는 다른 어그리게이션 버퍼링 기술들이 원하는대로 이용될 수 있다. 본 명세서의 다른 곳에서 설명되는 스위치 마커 기술의 실시예들은 어그리게이션 재순서화에 대한 하나의 가능한 대안적인(또는 상보적) 옵션을 표현한다.
추가적인 고려사항들
데이터 구조들
이전에 언급된 바와 같이, 본 개시의 엘리먼트들을 구현하는 디바이스는 몇몇 실시예들에서 하나 또는 그 초과의 메모리들에 정보를 저장할 수 있다. 정보는 실시예들의 일 세트에서 하나 또는 그 초과의 데이터 구조들에 저장될 수 있다. 예를 들어, 실시예들의 일 세트에서, 라우팅 테이블이 유지될 수 있고, 라우팅 테이블에서, 액티브 스트림들 및 이들의 다양한 특성들을 식별하는 정보(예를 들어, 라우팅 정보)가 저장될 수 있다. 예를 들어, 이러한 라우팅 테이블은, 복수의 스트림들 각각에 대해, 스트림 식별자, 스트림의 수신지 어드레스(DA), 스트림의 타입, 우선순위 레벨 및 하나 또는 그 초과의 할당된 인터페이스들을 (예를 들어, 송신 매체/매체들을 명시적으로 또는 묵시적으로 포함함) 포함할 수 있다. 몇몇 실시예들에서, 예를 들어, 다수의 인터페이스들 사이에서 스플리팅되는 스트림들의 경우, 라우팅 테이블은 또한, 스트림을 송신하기 위해 다수의 할당된 인터페이스들 중 어느 것이 현재 이용되고 있는지, 각각의 할당된 인터페이스 상에서 이용될 버스트 사이즈들, 및/또는 현재 이용되는 인터페이스 상에서 송신되고 있는 현재의 버스트에 얼마나 많은 패킷들이 남아있는지를 나타내는 정보를 포함할 수 있다.
또한, 하나 또는 그 초과의 수신지 어드레스들 및/또는 스트림들의 타입들 각각에 대해 송신 매체들의 현재의 선호되는 순서를 나타내는 테이블이 유지될 수 있다. 이 테이블은, 예를 들어, 매체 활용도 레이트들, 링크 용량들 등에서의 변경들에 기초하여, 규칙적으로 업데이트될 수 있다. 라우팅 테이블은 또한 예를 들어, 임의의 라우팅 변경들에 기초하여 (예를 들어, 로드 밸런싱, 장애 극복, 스플리팅된 스트림들, 스트림 완료의 결과로서, 또는 임의의 다른 이유로) 규칙적으로 업데이트될 수 있다.
버스트 사이즈들
몇몇 실시예들에서, 큰 버스트가 다수의 인터페이스들의 동시 이용을 제한할 수 있고, 이는 몇몇 실시예들에 따른 스트림 스플리팅/어그리게이션의 목적들에 반할 수 있기 때문에, 버스트들의 사이즈를 제한하는 것이 바람직할 수 있음을 주목해야 한다.
예를 들어, 1400 바이트들의 패킷 사이즈들을 갖는 10 Mbps에서 실행되는 스트림은 892 pps(packets per second)로 전환된다. 255 패킷들의 버스트는 0.28초로 전환될 것이다. 즉, 이 경우, 다른 매체가 이용되지 않는 동안 매체는 0.28 초 동안 이용된다.
디바이스 능력 발견
스트림을 스플리팅한다는 판정이 행해질 때마다, 수신지 디바이스의 능력들을 인지하는 것이 중요할 수 있다. 예를 들어, 수신지 하이브리드 디바이스는, 어그리게이션을 지원하지 않는 레거시 디바이스일 수 있다.
디바이스들은 자신들의 토폴로지 발견 패킷들의 일부로서 능력들을 광고할 수 있다. 예를 들어, 어그리게이션에 대한 지원을 선언하기 위해, 하나 또는 그 초과의 제어 패킷들의 일부가 할당될 수 있다. 몇몇 실시예들에서, 디바이스들은 이 정보를 송신할 수 있고, 로드 밸런싱 판정들 동안 이용될 네트워크 상의 모든 디바이스들에 대해 이러한 정보의 데이터베이스를 유지할 수 있다.
패킷 손실 최소화 및 복제 패킷 제거
본 개시의 실시예들은, 다수의 송신 매체들이 스트림의 송신에 대해 이용가능한 시스템들, 및 이러한 시스템들에 관한 다양한 기술들과 관련된다. 많은 실시예들은 스트림 플로우들을 하나의 송신 매체로부터 다른 송신 매체로 스위칭하는 것과 관련된다. 이러한 경로 스위칭들로 인해, 패킷 손실, 패킷 복제 및 무작위 패킷 전달을 포함하는 몇몇 패킷 플로우 방해들이 가능하다.
이러한 패킷 플로우 방해들에 대해 상이한 네트워킹 프로토콜들 및 애플리케이션들은 상이하게 반응하지만, 일반적으로 부작용들이 존재한다. 예를 들어, TCP/IP는 상기의 것들 중 임의의 것에 대한 응답으로 스루풋을 스로틀할 것이고, 몇몇 비디오 애플리케이션들은 시각적 글리치(glitch)를 디스플레이할 수 있다. 최종 사용자에게 끊김없는 경험을 제공하기 위해, 이러한 방해들 모두는 최소화되거나 가능한 경우 제거되어야 한다.
하이브리드 시스템들은, 2개의 시나리오들, 즉, 인터페이스가 실패하고 그 인터페이스로부터의 모든 스트림들이 다른 인터페이스로 스위칭되는 경우인 장애 극복, 및 매체가 과다가입되고 하나 또는 그 초과의 스트림들이 그로부터 다른 인터페이스로 스위칭되는 경우인 로드 밸런싱 하에서 플로우들을 스위칭할 수 있다.
인터페이스가 여전히 업(up) 상태이고 몇몇 패킷들을 송신하고 있는 경우에도, 하이브리드 시스템이 그 인터페이스를 "실패된" 것으로 고려하는 것이 가능함을 주목한다. 예를 들어, 몇몇 인터페이스들의 경우, 하이브리드 시스템은, 리포트된 PHY 레이트가 임계치(예를 들어, 5 Mbps 또는 임의의 다른 PHY 레이트) 아래로 내려가는 경우 이를 "실패된" 것으로 고려할 수 있다.
이용가능할 수 있는 2개의 통상적인 통신 인터페이스들은 Wi-Fi 및 전력선 네트워크들(예를 들어, HomePlugAV)을 포함한다. Wi-Fi 드라이버 및 HPAV 드라이버는 특정한 스트림으로부터 패킷들의 순서대로의 전달을 보장할 수 있다. 둘 모두는 송신을 위해 패킷들을 버퍼링할 수 있다. 몇몇 실시예들에 따르면, 외부 애플리케이션들은, HPAV 드라이버로부터가 아니라 WiFi 드라이버로부터 어느 패킷들이 성공적으로 송신되었는지에 대한 정보를 획득할 수 있고, 외부 애플리케이션들은 어느 하나의 드라이버의 송신 버퍼로부터 패킷들을 제거할 수 있다. 따라서, 송신 버퍼의 패킷들은, 매체가 유지(alive)되는 한 (예를 들어, 매체가 실패한 것으로 고려되는 경우에도) 계속 송신될 것이다.
인터페이스가 (실제로) 실패한 경우, 인터페이스의 버퍼로부터 더 이상 패킷들을 송신하는 것이 가능하지 않을 수 있다. 버퍼의 모든 패킷들은 손실될 수 있고, 따라서 인터페이스가 실패했다고 하이브리드 시스템이 결정하고 새로운 인터페이스 상에서 패킷들을 송신하는 것을 시작할 때까지 전송되는 임의의 추가적인 패킷들이 손실될 수 있다. 패킷 손실을 감소시키기 위한 메커니즘은, 패킷들이 인터페이스 상에서 송신될 때 패킷들의 실행 윈도우(버퍼)를 저장하고, 스위칭 시에 이를 새로운 인터페이스 상에서 (재)전송하는 것이다. 즉, 경로 스위치가 트리거링될 때마다, 이 패킷들은 새로운 인터페이스 상에서 송신될 수 있다.
몇몇 실시예들에 따르면, 이러한 특징은 전반적으로(globally) 또는 스트림 단위로 구현될 수 있다. 예를 들어, 특징이 구현되는 각각의 스트림은, 그에 따라, 버퍼 사이즈(예를 들어, 저장될 수 있는 패킷들의 수) 및 버퍼 시간 윈도우(예를 들어, 패킷들을 (시간상) 얼마나 멀리까지 유지할지를 특정함)를 갖는 고유의 버퍼를 가질 수 있다.
특징을 구현하기 위해, 실시예들의 일 세트에 따르면, 패킷이 인터페이스 상에서 송신되는 경우, 그의 플로우가 먼저 식별될 수 있다. 플로우가 버퍼링가능하면, 패킷은 버퍼에 첨부될 수 있다. 패킷들은 버퍼를 (예를 들어, 헤드로부터 테일까지) 통과할 수 있고, 패킷들이 시간 윈도우 외부에 있는 경우, 버퍼가 너무 큰 경우, 그리고/또는 패킷들이 성공적으로 송신된 경우 패킷들은 제거될 수 있다. 따라서, 패킷들이 송신될 때 버퍼는 유지될 수 있다.
플로우가 하나의 매체로부터 다른 매체로 스위칭되고 있는 경우, 패킷들은 버퍼를 (예를 들어, 헤드로부터 테일까지) 통과할 수 있고, 성공적으로 송신된 패킷들은 폐기될 수 있다. 성공적으로 송신된 것으로 알려지지 않은 패킷들은 새로운 인터페이스 상에서 송신될 수 있다.
패킷들이 성공적으로 송신되었는지 여부를 결정하는 것은 오직 몇몇 인터페이스들(예를 들어, Wi-Fi 또는 이 정보에 대한 액세스를 제공하는 다른 인터페이스들)로부터 이용가능할 수 있음을 주목해야 한다. 따라서, 몇몇 실시예들에서, 이 정보는 이러한 인터페이스로부터의 경로 스위칭에 대해서만 이용될 수 있다.
패킷 손실 최소화를 위해 이용될 앞서 설명된 버퍼는, 경로 스위칭이 실행될 때마다 새로운 인터페이스 상에서 패킷들을 송신하기 위해 이용될 수 있다. 이러한 버퍼의 패킷들의 수는, 인터페이스가 실패한 것을 하이브리드 시스템이 검출하기 위해 얼마나 오래 소요되는지(몇몇 실시예들에서, 수 초가 소요될 수 있는 프로세스임)에 의해 지정될 수 있다. 따라서, 적어도 몇몇 실시예들에서, 버퍼 사이즈는 >1000 패킷들일 수 있다. 다른 실시예들에서, 임의의 수의 다른 (예를 들어, 더 작거나 더 큰) 버퍼 사이즈들이 이용될 수 있다.
>1000 패킷들을 인터페이스를 통해 (비교적) 동시에 송신하는 것은 드라이버들(이더넷, Wi-Fi, 임베딩된 PLC)의 버퍼들을 압도할 수 있다. 따라서, 이러한 송신들을 스로틀하는 메커니즘이 구현될 수 있다. 몇몇 실시예들에서, 계속되는 송신을 차단하지 않기 위해, 송신은 하이브리드 브릿지 외부로부터 스로틀될 수 있다. 예를 들어, TBF qdisc(Token Bucket Filter queuing discipline)는 이러한 스로틀링 메커니즘을 구현하고 - 이에 의해, 최대 레이트가 특정될 수 있다.
앞서 설명된 송신 버퍼 재송신 메커니즘은 패킷 손실을 감소시키도록 기능할 수 있다. 그러나, 패킷들이 구(old) 인터페이스에서 공중으로 이미 발신되었다면, 수신기는 복제 패킷들을 수신할 수 있다. 이를 위한 비교적 용이한(부분적인) 솔루션은, (원래의 인터페이스 상에서) 성공적으로 송신된 이러한 패킷들을 버퍼로부터 제거하는 것일 수 있다. 이것은, Wi-Fi 인터페이스에 대해서는 (앞서 언급된 바와 같이) 가능할 수 있지만, HPAV 인터페이스에 대해서는 (또한 앞서 언급된 바와 같이) 가능하지 않을 수 있다. 다른 인터페이스 경로로의 전이를 위해 Wi-Fi에 대한 이러한 특징을 이용하는 것조차 이러한 문제를 완전히 처리하지 못할 수 있는데, 이는, 원래의 (Wi-Fi) 인터페이스의 버퍼에 여전히 있는 패킷들은, 제거되지 않을 수 있고, 인터페이스가 실제로 종료되지 않았다면 계속 송신될 수 있기 때문이다.
더 완전하고 (CPU 비용 면에서) 아직 단순한 솔루션은, 이 특정한 복제 시나리오의 몇몇 특징들을 이용할 수 있다. 상세하게는, 하나의 인터페이스 상에서 송신되는 모든 패킷들은 순서대로 수신된다는 점; 하나의 인터페이스로부터 다른 인터페이스로 스위칭하려는 판정이 행해지면, 원래의 인터페이스 상의 모든 장래의 송신들은 중지된다는 점; 및 복제들은 오직 복제 버퍼 내에만 존재할 수 있다는 점(예를 들어, 이것이 복제들의 원인이기 때문임)과 같은 사실이 이용될 수 있다. 물론, 이러한 솔루션은 또한, 몇몇 실시예들에서 상이한 조건들을 포함하는 다른 시나리오들에서 유리하게 이용될 수 있다.
이 방법의 특정한 이점은, 이 알고리즘이 패킷들 자체에 대한 어떠한 가정들도 행하지 않을 수 있다는 점일 수 있다. 즉, 몇몇 실시예들에서, 데이터 패킷들에 대해 어떠한 검사도 행해지지 않는다(구체적으로, 몇몇 실시예들에서, 어떠한 시퀀스 번호들도 패킷들에 임베딩되는 것으로 가정되지 않을 수 있다).
방법을 구현하기 위한 송신기(데이터 소스)측 기능은 인덱스 마커(MI) 패킷을 매 N 패킷들마다 데이터 스트림에 삽입하는 것을 포함할 수 있다. 인덱스 마커는 인덱스 번호를 포함할 수 있고, 인덱스 번호는, 각각의 후속 인덱스 마커 패킷에 의해 1만큼 증분될 수 있다. 인덱스 마커 패킷(들)은 복제 버퍼 이전에 삽입될 수 있다. 따라서, 이 인덱스 마커 패킷들은 복제 버퍼의 일부일 수 있다.
경로 스위칭을 실행하는 경우, 복제 버퍼는 재송신될 수 있다. 버퍼 마커 패킷들(MB)은 새로운 인터페이스 상에서 복제 버퍼의 시작 및/또는 종료시에 삽입될 수 있다(각각, MB,B 및 MB,E). MB,B에서, 그 인덱스 마커 패킷 이후 버퍼로부터 (성공적으로 송신되었기 때문이거나 오래되었기 때문이든 또는 버퍼 사이즈 때문에 제거되었든지 간에) 제거된 그 스트림으로부터의 패킷들의 수 뿐만 아니라 복제 버퍼 외부의 마지막 인덱스 마커(MI)의 인덱스가 포함될 수 있다. 이 데이터 쌍은 (IT, LT)로 지칭될 수 있다.
방법을 구현하기 위한 수신기(데이터 싱크)측 기능은 인덱스 마커(MI) 패킷들을 파악하는 것을 포함할 수 있다. 예를 들어, 그 인덱스 마커 이후 수신된 그 스트림의 패킷들의 수 및 수신된 마지막 인덱스가 저장될 수 있다. 이 데이터 쌍은 (IR, LR)로 지칭될 수 있다.
버퍼의 시작인 버퍼 마커 패킷(MB,B)을 수신하는 경우, 대안적 인터페이스들로부터 착신되는 이 스트림에 속하는 임의의 패킷은 폐기될 수 있다. 다양한 실시예들에 따르면, 이 차단은, 일정 시간 인터벌(예를 들어, 프로그래밍가능한 시간 인터벌) 이후 제거될 수 있거나, 다음 MB,B가 (예를 들어, 새로운 인터페이스 상에서) 관측될 때까지 유지될 수 있다.
또한, MB,B로부터 획득된 데이터 쌍(IT, LT)이 검사되거나 (IR, LR)과 비교될 수 있다. IT == IR이고 LT >= IR이면, 어떠한 패킷들도 드롭되지 않을 수 있고, 새로운 인터페이스 상에는 어떠한 복제 패킷들도 존재하지 않을 수 있다. IT == IR이고 LT < IR이면, 처음 LR-LT 패킷들이 버퍼로부터 드롭될 수 있는데, 이는 이 패킷들은 원래의 인터페이스 상에서 이미 수신되었을 수 있기 때문이다. IT < IR이면, 복제 버퍼 패킷들은, 인덱스 IR을 갖는 인덱스 마커 패킷이 수신될 때까지 드롭될 수 있다. 이 때, 추가적인 LR개의 패킷들이 드롭될 수 있다. (IT > IR)이면, 어떠한 패킷들도 드롭되지 않을 수 있고, 이것은, 복제 버퍼가 장애 극복으로 인한 패킷 손실을 핸들링하기에 충분히 크지 않고, 어떠한 복제 패킷들도 수신되지 않았음을 나타낼 수 있다.
상기 알고리즘은 데이터의 2개의 복제 스트림들, 즉, 복제 버퍼 패킷들의 수신이 시작한 후 구 인터페이스 상에서 도달하는 패킷들 및 장애 극복 이후지만 복제 버퍼 패킷들의 수신 이전에 구 인터페이스 상에서 도달한 패킷들을 처리할 수 있다.
몇몇 실시예들에 따르면, 이 특징을 제어하기 위해, (앞서 언급된 바와 같이) 복제 버퍼 인에이블/디스에이블 특징이 또한 이용될 수 있다. 즉, 몇몇 실시예들에서, 복제 버퍼가 플로우에 대해 인에이블되면, 인덱스 마커들(MI)이 오직 삽입될 수 있다. 추가적으로, 몇몇 실시예들에서, 스트림 파라미터마다 인덱스 마커 인터벌이 구성가능할 수 있다. 예를 들어, 경로 특성화 정보에 기초하여 인덱스 마커 인터벌을 동적으로 조절하기를 원할 수 있다.
앞서 설명된 복제 패킷 최소화 절차는, 매 N개의 패킷들마다 인덱스 마커 패킷(MI)이 스트림에 삽입될 수 있음을 특정한다. 상기 알고리즘에 기초하여, 값 N은 고정될 필요가 없을 수 있고, 예를 들어, 송신 및 수신되는 패킷들의 정확한 카운트가 유지되는 한 매 간격마다 또는 때때로 변경될 수 있다. 값 N은 또한 복제 버퍼의 사이즈와는 독립적일 수 있다. 몇몇 실시예들에서, 예를 들어, N은 매우 클 수 있다. 그러나, 패킷 에러 레이트(PRE) 및 수신된 복제 패킷들의 수 및 N 사이에 연결성이 존재할 수 있다.
PER은 패킷이 드롭되게 하고, 이는, 패킷이 송신되는대로 카운트될 수 있지만 수신되는대로 카운트되지 않을 수 있음을 의미한다. 모든 이러한 손실된 패킷은, 복제 패킷이 수신되는 것을 초래할 수 있다. 예를 들어, 마지막 MI 이후 10개의 패킷들이 송신되면, LT=10이다. 그러나, PER로 인해 오직 9개의 패킷들이 수신되면, LR=9이다. 이 경우 어떠한 패킷들도 수신기에서 제거되지 않을 것이고, 이것은, 복제 패킷이 수신되는 것을 초래할 수 있다. 따라서, 복제 패킷의 기회는 PER*N에 비례할 수 있다. N을 증가시키는 것은 그에 따라 복제들을 수신할 가능성들을 증가시킬 수 있다.
앞서 언급된 바와 같이, 상기 설명된 패킷 손실 최소화 기술은, 그렇지 않으면 필요하지 않을 수 있는 추가적인 정보를 저장하는 것을 요구할 수 있다. 송신측에 저장된 추가적인 정보는, 몇몇 실시예들에 따라, 마지막 인덱스 마커 패킷(MI) 인덱스 및 마지막 인덱스 마커 패킷 이후의 패킷들의 수를 포함할 수 있다.
수신측에 저장된 추가적인 정보는 마지막 인덱스 마커 패킷 인덱스, 마지막 인덱스 마커 패킷 이후의 패킷들의 수, 및 스트림 인터페이스(예를 들어, 스트림이 수신되고 있는 인터페이스)를 포함할 수 있다. 몇몇 실시예들에서, 스트림 인터페이스 상에서 수신되지 않은 모든 패킷들이 드롭되어야 함을 나타내는 블록 모드 플래그가 또한 저장될 수 있다. 추가적으로, 인덱스 마커 패킷이 현재 탐색되고 있는지 여부를 나타내는 정보(및 그 인덱스 마커 패킷의 인덱스)가 저장될 수 있고, 그리고/또는 (예를 들어, 앞서 설명된 바와 같이, 복제들로 결정된 패킷들의 수에 기초하여) 드롭될 패킷들의 수를 나타내는 카운터가 저장될 수 있다.
이 분야의 당업자에 의해 인식될 바와 같이, 상이한 구현들은 패킷 손실 최소화 알고리즘들과 관련된 상이한 저장된 정보를 포함할 수 있다.
서비스 품질
본 개시의 실시예들은, 다수의 송신 매체들을 이용하여 통신하도록 구성되는 디바이스에 의해 이용될 수 있는 다양한 기술들과 관련된다. 이 기술들은, 몇몇 실시예들에서, 원한다면, 개선된 서비스 품질(QoS)을 위한 컨텐츠 분류 및 구별과 무관하게 구현될 수 있다. 그러나, 서비스 제공자들은, 예를 들어, 고객들의 텔레비젼 상의 비디오가 품질이 열악하거나 고객들의 음성 송신들이 끊어지게 되어 고객들이 불편해지지 않는 것을 보장하기 위해, 시간-결정적인 데이터(예를 들어, Netflix 비디오)와 지연될 수 있는 데이터(예를 들어, 파일 다운로드) 사이를 구별할 수 있기를 원할 수 있어서, 서비스 품질을 보장하기를 원할 것이다. 소매 고객들은 간섭 또는 지연들 없이 인터넷 비디오(예를 들어, Hulu 또는 Netflix)를 스트리밍할 수 있기를 동등하게 원할 수 있다. 무료 컨텐츠 고객들조차도 서비스 품질 보장들/구별을 기대할 수 있다.
넌-하이브리드 네트워크들에서는, 데이터가 송신되는 오직 단일 매체가 존재한다. 하이브리드 네트워크들에서는, 데이터를 송신하기 위해 이용될 수 있는 다수의 매체들이 존재할 수 있고, 이들 각각은, 상이하고 동적으로 변하는 특성들을 갖는다. 따라서, QoS 문제가 다른 차원을 획득한다.
이 섹션은, 실시예들의 일 세트에 따라 하이브리드 네트워킹 시스템들에 의해 전달될 수 있는 QoS의 세부사항들을 설명한다. 하이브리드 시스템의 원하는 동작((유료 및 무료 비디오 및 다른 것들을 포함하는) 식별된 서비스들의 타입들 및 시스템의 동작들을 포함함), 및 실시예들의 일 세트에 따라 이 기능을 전달하는 구현 아키텍쳐 및 알고리즘들의 설명들이 포함된다.
2가지 타입들의 QoS가 존재함을 주목한다. 우선순위화된 QoS는 우선순위 레벨에 의한 패킷들의 태깅(tagging)과 관련된다. 패킷들은 그 우선순위에 기초하여 취급될 수 있다 (예를 들어, 더 높은 우선순위는 더 낮은 우선순위와는 상이하게 취급될 수 있다). 카테고리화된 QoS는 매체에 의한 대역폭의 예비 및 보장과 관련된다. 대역폭 예비를 갖는 스트림들에 속하는 패킷들은 최고 우선순위(보장됨) 전달을 부여받는다.
몇몇 매체들(예를 들어, MoCA)은 파라미터화된 QoS의 타입을 구현하는 한편, 이것은 실제로는 이용되지 않을 수 있는데, 이는, 이것이 말단-대-말단 대역폭 예비 및 (대역폭을 예비하기 위한) 애플리케이션 레벨 참여를 요구할 수 있기 때문이다. 따라서 이 섹션은 우선순위화된 QoS에 중점을 둔다.
QoS 관련 동작은 하이브리드 네트워크의 다수의 양상들에 적합할 수 있다. 이러한 양상들 중 일부는, 데이터를 상이한 타입들의 서비스들(클래스들)로 분류하는 것, 분류에 기초하여 데이터를 태깅하는 것, 경로 선택 및 분류된 데이터를 특정한 인터페이스들로 할당하는 것, 플로우들의 장애 극복 및 재할당, 과다혼잡의 경우들에서 트래픽을 로드 밸런싱하는 것, 및 상이한 데이터 스트림들 전부를 지원하기에 불충분한 대역폭이 존재하는 경우 상이한 데이터 스트림들의 스트림 우선순위화를 포함할 수 있다.
데이터의 분류는, 데이터 패킷들을 스트림들로 분리시키는 것 및 스트림을 특정한 타입의 서비스로 분류하는 것을 포함할 수 있다. 실시예들의 일 세트에 따라 분류될 수 있는 몇몇 가능한 타입들의 서비스들은 인터넷 스트리밍 비디오, 인터넷 스트리밍 오디오, 인터넷 실시간 오디오/비디오 및 다른 타입들의 서비스들을 포함한다.
분류는, 콘테이너 타입보다는 패킷들의 컨텐츠를 검사하는 것을 포함할 수 있음을 주목해야 한다. 따라서, 컨텐츠 타입 분류는 IPv4 또는 IPv6 트래픽에 가능할 수 있다.
몇몇 타입들의 트래픽은 분류되지 않을 수 있는데, 이는 이들이 이들의 클래스에 따라 이미 태깅될 수 있기 때문임을 또한 주목해야 한다. 이러한 타입들의 트래픽의 예들은 IPTV, VoD(carrier provided Video on Demand) 및 VoIP를 포함한다.
데이터가 특정한 타입의 트래픽으로서 분류되면, 데이터는 여전히 태깅될 필요가 있을 수 있다. 몇몇 실시예들에 따르면, 몇몇 시스템 엘리먼트들은 상이한 레벨들의 태그 입도(granularity)를 이용하도록 구성될 수 있다. 예를 들어, 하이브리드 시스템은 잠재적으로, 네트워크 드라이버들보다 더 높은 입도의 분류를 이용할 수 있다. 예를 들어, 일 실시예에서, "비디오"는 단지 하나의 태그를 가질 수 있지만, 하이브리드 시스템은 IPTV, VoD 및 OTT 타입들의 비디오 사이를 구별하도록 구성될 수 있다.
스트림들이 시작함에 따라, 스트림들은, 규칙적으로 업데이트되는 디폴트 인터페이스들에 할당될 수 있다. 디폴트 인터페이스를 선택하기 위한 알고리즘은, 초기에, 각각의 이용가능한 매체의 링크 용량(LC)을 고려하는 것을 포함할 수 있다. 높은 이용가능성 시나리오에서, 새로운 트래픽을 지원하기에 충분한 링크 용량(예를 들어, 25 Mbps와 같이 미리 구성된 또는 동적 임계치보다 큰 링크 용량 또는 임의의 다른 임계치)이 다수의 매체들 상에서 이용가능할 수 있다. 이 경우, (예를 들어, LC 임계치보다 큰 LC를 갖는 매체들만을 고려하면) 매체들은 프로그래밍가능한 순서, 예를 들어, "P52"에 기초하여 선택될 수 있다. 낮은 이용가능성 시나리오에서, 이용가능한 어떠한 높은 링크 용량 매체들도 존재하지 않을 수 있다. 이 경우, 최고 링크 용량을 갖는 매체가 단순히 선택될 수 있다.
매체 선호도의 프로그래밍가능한 순서는 트래픽의 클래스마다 구성가능할 수 있음을 주목해야 한다. 예를 들어, "P52"의 상기 예가 IPTV에 적용될 수 있고, IPTV 스트림들이 PLC에 먼저 할당될 수 있고, 그 후 Wi-Fi 5GHz가 후속하고, 그 후 Wi-Fi 2.4GHz가 후속하는 것이 바람직할 수 있다.
몇몇 실시예들에서, "높은 이용가능성"으로 고려되는 것에 대한 링크 용량 임계치가 또한 트래픽의 클래스마다 구성가능한 파라미터일 수 있다. 물론, 스트림들이 시작하는 경우, 스트림들이 얼마나 많은 대역폭을 요구할지는 알려지지 않을 수 있다. 이 임계치는, 동작이 트래픽의 클래스마다 커스터마이징되도록 허용한다. 예를 들어, 실시예들의 일 세트에 따르면, LC의 적어도 25Mbps가 IPTV에 대해 이용가능한 한편, OTT에 대해 10Mbps의 LC가 충분할 수 있는 것이 바람직할 수 있다. 또한, 모든 클래스들에 대해 단일 임계치를 이용하는 것이 가능하다.
몇몇 실시예들에서, 몇몇 매체들로부터 일정 타입의 트래픽이 배제될 수 있음을 주목해야 한다. 예를 들어, 오직 몇몇 이용가능한 송신 매체들이 송신 매체들의 선호되는 순서에서 특정되면(예를 들어, "25"의 선호되는 순서는 오직 Wi-Fi 2G 및 Wi-Fi 5G가 고려될 것임을 의미할 수 있고, 플로우는, Wi-Fi 2G 및 Wi-Fi 5G 모두가 디스에이블되는 경우에도 PLC 인터페이스 상에서 포워딩되지 않을 것이다. 이 경우, 플로우는 드롭될 수 있다. 이것은 구현에 따라 바람직한 옵션일 수 있거나 그렇지 않을 수 있다.
앞서 설명된 경로 선택 알고리즘은 링크 용량을 지칭한다. 앞서 언급된 바와 같이, 링크 용량은, 특정한 송신 매체 상에서 소스 포인트로부터 수신지로 송신될 수 있는 트래픽의 양(통상적으로, Mbps로 측정됨)일 수 있다. 이것은, 전반적인 매체 혼잡 뿐만 아니라 링크의 물리적 특성들(예를 들어, PHY 레이트 및 PER)을 고려할 수 있다. 그러나, QoS 관점에서, 링크 용량을 클래스(우선순위) 특정인 것으로 변형하는 것이 바람직할 수 있다. 예를 들어, 몇몇 실시예들에서, 링크 용량은, 소스 포인트로부터 수신지로 송신될 수 있는 특정한 우선순위 클래스에 대한 트래픽의 양(Mbps 단위)으로 정의될 수 있다. 따라서, 특정한 하이브리드 디바이스의 경우 링크 용량은 2차원 어레이, 즉 LC[DA][우선순위]일 수 있다.
채널이 유휴인 경우, 특정한 수신지에 대한 모든 링크 용량들, 즉 LC[DA][*]는 동일함을 주목한다. 그러나, 매체 상에 트래픽이 존재하는 경우, 높은 우선순위 데이터에 대한 링크 용량은 낮은 우선순위 데이터에 대한 것보다 클 수 있어서, 즉, LC[DA][HIGH] >= LC[DA][LOW]이다. 이것은, 더 높은 우선순위 트래픽이 더 낮은 우선순위 트래픽을 밀어낼(out of the way) 가능성을 허용할 수 있다.
몇몇 실시예들에서, 지원되는 우선순위들의 수는, 기본적인 매체에 의해 지정될 수 있어서, 예를 들어, 실시예들의 일 세트에서, Wi-Fi 및 PLC 모두에 대해 4일 수 있다. 따라서, 이 경우, 분류(예를 들어, IPTV와 VoD 사이를 구별할 수 있음)에 기인하여 2가지 타입들의 스트림 사이에 더 높은 입도가 존재하는 경우에도, 이용가능한 링크 용량의 관점에서 이들은 동일할 수 있다. 지원되는 우선순위들의 다른 수들이 또한 가능하다.
하나의 매체가 실패하는 경우, 스트림들은 다른 이용가능한 매체들로 재할당된다. 실시예들의 일 세트에 따르면, 실패된 인터페이스 상의 각각의 스트림에 대해, 스트림이 대안적인 인터페이스로 스위칭될 수 있는지 여부가 결정될 수 있다. 이 섹션에서 앞서 설명된 경로 선택 알고리즘은 대안적인 인터페이스를 발견하기 위해 이용될 수 있는데, 즉, 충분한 대역폭을 갖는 다수의 매체들이 존재하면, 스트림의 그 우선순위 클래스에 대한 매체 우선순위 구성에 기초하여 이들 사이에서 선택한다. 스트림-특정 링크 용량이 또한 이용될 수 있다. 충분한 용량이 존재하지 않으면, 스트림 우선순위 방법이 이용될 수 있다.
매체가 과다혼잡되는 경우(매체 활용도가 임계치를 넘어감), 혼잡을 경감시키기 위해 몇몇 플로우들은 다른 매체들로 재할당될 필요가 있을 수 있다. 몇몇 실시예들에 따르면, (실시예들의 일 세트에 따르면, IPTV/VoD/OTT/VoIP와 같은) 높은 우선순위 플로우들은 가능하면, 예를 들어, 글리치들을 회피하기 위해 스위칭되지 않아야 한다. 즉, 더 낮은 우선순위 플로우들이 스위칭을 위한 최초의 후보들이어야 한다.
실시예들의 일 세트에 따르면, 과다혼잡된 매체 상에서 스트림들의 더 낮은 우선순위 레벨들로부터 시작하고 더 높은 우선순위 레벨들로 이동하는 로드 밸런싱을 위해, 다음 단계들이 취해질 수 있다. 최고 매체 활용도를 갖는 다음 스트림이 선택될 수 있다. 스트림이 대안적 인터페이스로 스위칭되어야 하는지 여부가 결정될 수 있다. 이것은, 이 섹션에서 앞서 설명된 경로 선택 알고리즘을 이용하는 것, 즉, 충분한 대역폭을 갖는 다수의 매체들이 존재하면, 스트림의 그 우선순위 클래스에 대한 매체 우선순위 구성에 기초하여 이들 사이에서 선택하는 것을 포함할 수 있다. 스트림-특정 링크 용량이 또한 이용될 수 있다. 스트림이 스위칭될 수 없으면, 다음 스트림이 선택될 수 있다. 최소 우선순위 레벨의 모든 스트림들이 스위칭될 수 없으면, 다음으로 높은 우선순위 레벨에서 최고 매체 활용도를 갖는 스트림이 선택될 수 있다. 스위칭될 임의의 스트림에 대해 충분한 링크 용량이 존재하지 않으면, 예를 들어, 다른 매체들도 또한 과다혼잡되면, 스트림 우선순위화 방법이 이용될 수 있다.
모든 매체들이 과다혼잡되고 로드 밸런싱이 수행될 수 없으면, 매체들 상의 모든 스트림들의 품질이 악화될 수 있다. 2개의 가능한 과다혼잡 시나리오들이 존재하는데, 즉, 과다혼잡을 초래하는 더 높은 및 더 낮은 우선순위 스트림들의 혼잡이 존재할 수 있거나, 또는 동일한 우선순위를 갖는 스트림들의 세트가 과다혼잡을 초래하고 있을 수 있다.
어느 시나리오가 발생하고 있는지에 따라, 다양한 구성가능한 동작들이 가능하다. 혼합된 우선순위 스트림들의 경우, 더 낮은 우선순위 스트림들이 드롭될 수 있다. 필요하면/가능하면, 더 정교한 입도의 우선순위화가 이용될 수 있다. 예를 들어, 가능한 경우, 상이한 타입들의 비디오 스트림들(예를 들어, IPTV 대 VoD 대 OTT 등) 사이의 우선순위에서의 변경들이 이용될 수 있다. 대안적인 옵션은 TCP 스트림 스루풋을 스로틀하는 것일 수 있다. 그러나, 비디오 TCP 스트림들(예를 들어, OTT 또는 VoD 스트림들)의 특성화는, 이러한 스트림들의 스루풋 대 시간 특성들을 이해하기 위해 바람직할 수 있다. 예를 들어, 몇몇 실시예들에서 비디오 TCP 스트림들을 스로틀하지 않는 것이 바람직할 수 있다.
동등한 우선순위 스트림들의 경우, 다양한 옵션들이 존재한다. 하나의 가능성은, 플로우의 비트 레이트에 비해 가장 많은 자원들을 소모하는 플로우를 드롭시키는 것이다. 몇몇 실시예들에서, 플로우 우선순위는 수신지 어드레스마다 구성될 수 있어서, 예를 들어, 거실 TV에 대한 트래픽은 침실 TV에 대한 트래픽보다 높은 우선순위를 가질 수 있다. TCP 스트림 스루풋을 캡핑(capping)하는 것이 옵션일 수 있다. 다른 가능성은 가장 최신의(youngest) 플로우를 드롭시키는 것이다. 그러나, 몇몇 실시예들에서, 예를 들어, 사용자가 하나의 IPTV 채널로부터 다른 채널로 스위칭하면, 빠른 채널 스위칭은 과다가입의 하나의 가능한 원인일 수 있다. 스위칭 동안 ("블랙 스크린"이 나타나지 않도록) 두 스트림들 모두가 동시에 실행될 수 있고, 최종 디바이스는 디스플레이할 정확한(예를 들어, 최신의) 스트림을 선택할 수 있다. 그러나, 자원 경합의 경우, 새로운 스트림은 더 오래된 스트림에 비해 우선적으로 자원들을 수신해야 한다. 따라서, 동일한 최종 디바이스로 진입하는 다수의 플로우들이 존재하면, 가장 오래된 플로우는 드롭될 수 있다.
실시예들의 일 세트에 따르면, 원하는 경우 추가적인 QoS-특정 제한들이 패킷 어그리게이션 상에 패치될 수 있다. 예를 들어, 가능한 경우, 높은 우선순위 스트림들보다 더 낮은 우선순위 스트림들이 스플리팅/어그리게이트될 수 있다. 또한, 몇몇 트래픽 타입들이 결코 어그리게이트되지 않을 것을 특정하는 것을 허용하기 위해 구성가능한 파라미터가 제공될 수 있다.
몇몇 실시예들에서, VoIP 스트림들을 (예를 들어, 글리칭의 잠재성 때문에) 결코 스플리팅/어그리게이트하지 않는 것이 바람직할 수 있음을 주목한다. 그러나, 많은 실시예들에서, 이러한 스트림들은 매우 적은 대역폭을 활용할 수 있고, 따라서, 일반적으로 스플리팅/어그리게이션을 위한 선호되는 후보가 아닐 수 있다.
앞서 언급된 바와 같이, QoS 고려사항들을 포함하는 경로 특성화는 우선순위 레벨 및 수신지마다 향상된 링크 용량을 활용할 수 있다. 구현 레벨에서, 이것은 우선순위 레벨마다 매체 활용도로 전환될 수 있는데, 이는, 몇몇 실시예들에 따라, 이것이 미처리(raw) 링크 용량으로부터 이용가능한 링크 용량을 결정하는데 이용될 수 있기 때문이다.
채널 액세스는, 다수의 노드들의 상호작용들 및 이들이 전송해야 하는 트래픽의 우선순위에 의존할 수 있음을 주목해야 한다. PLC의 경우, 이 액세스는 완전히 조정될 수 있고, 엄격한 우선순위를 갖는다. Wi-Fi의 경우, 이것은 통계적 액세스일 수 있고, 여기서, 더 높은 우선순위 트래픽은 채널에 액세스할 더 높은 가능성을 갖는다. 노드 내의 액세스는, 송신 인터페이스가 무엇이든간에, 여전히 엄격한 우선순위에 의한 것일 수 있다(예를 들어, 노드가 트래픽의 다수의 클래스들을 갖는 경우, 노드는 엄격한 우선순위로 이를 행할 수 있다).
몇몇 실시예들에 따르면, 3개의 서비스 품질 레벨들이 지원될 수 있다. 이것은, 높은 우선순위(예를 들어, 촉진된 포워딩), 중간 우선순위 및 정규의 우선순위를 포함할 수 있다. 예를 들어, 실시예들의 일 세트에서, 비디오들, IP를 통한 음성, 또는 최소의 패킷 손실 및 작은 레이턴시로 전달될 필요가 있는 임의의 다른 종래의 스트림에는 높은 우선순위가 할당될 수 있다. 중간 우선순위는 임의의 다른 더 높은 우선순위 트래픽에 할당될 수 있는 한편, 정규의 우선순위(베스트 에포츠)는 임의의 다른 트래픽 타입들에 할당될 수 있다.
몇몇 실시예들에 따르면, 하이브리드 제어 패킷들은 다양한 하이브리드 제어 기능들에 이용될 수 있다. 이것은, 적어도 몇몇 실시예들에서, 시스템의 정확한 동작(토폴로지 발견, 경로 특성화 등)을 위해 매우 중요할 수 있다. 따라서, 네트워크 혼잡으로 인해 제어 패킷들이 자신들의 수신지에 도달하지 않으면, 하이브리드 기능은 손상될 수 있다. 따라서, 몇몇 실시예들에서, 하이브리드 제어 패킷들은 통상적으로 이용가능한 최고 우선순위를 가질 수 있다.
이에 대한 예외는 마커 패킷들(예를 들어, 버퍼 시작/버퍼 종료, 스트림 시작/스트림 종료, 및/또는 인덱스 마커 패킷들)일 수 있다. 실시예들의 일 세트에 따르면, 마커 패킷들은, 자신들의 플로우에서 올바른 순서를 유지하기 위해, 자신들이 부착된 플로우를 모방할 수 있다. 이러한 모방은 동일한 우선순위화, 수신지 어드레스 및/또는 다른 특성들을 포함할 수 있다.
양방향 데이터
몇몇 실시예들에서, 특정한 TCP 플로우의 모든 트래픽을 단일 인터페이스 상의 플로우로 강제하는 특징이 구현될 수 있음을 주목해야 한다. 이것은, 데이터 및 ACK 스트림들이 상이한 인터페이스들 상에 있으면, 레이턴시 차가 플로우를 스로틀하도록 TCP를 트리거링할 수 있다는 염려로 행해질 수 있다.
몇몇 실시예들에서, 본 명세서에서 설명되는 경로 선택 방식은, 모든 각각의 디바이스가 모든 각각의 다른 디바이스와는 독립적으로 (장애 극복 또는 로드 밸런싱으로 인한) 경로 선택 및 스위칭에 대한 판정을 행한다고 가정할 수 있다. 상세하게는, 모든 각각의 디바이스가, 자신으로부터 발신하는 또는 자신을 통해 브릿지되는 스트림들(예를 들어, 스트림들의 경로의 다른 부분에 대해 그 디바이스가 발신하는 스트림들)에 대해 이러한 판정을 행할 수 있다. 어느 방향이든 2개의 디바이스들 사이에 다수의 데이터 스트림들이 존재하면, 스트림들 각각은 매체에 할당될 수 있고, 다른 스트림들과는 독립적으로 필요에 따라 스위칭될 수 있다.
그러나, TCP/IP와 같은 몇몇 높은 레벨의 프로토콜들의 경우, 상이한 방향들에서의 다수의 스트림들은 실제로 서로 기능적으로 연관된다. 예를 들어, IP/TCP의 경우, TCP 데이터는 일 방향으로 흐를 수 있는 한편, 이 데이터에 대응하는 TCP ACK들은 다른 방향들로 흐른다. 많은 네트워킹 프로토콜들은, 예를 들어, 턴어라운드 시간을 단축시킴으로써, 이러한 의존적인 양방향 트래픽의 성능을 최적화하도록 설계될 수 있다. 몇몇 실시예들에 따르면, 기본적인 매체들에 의한 이러한 최적화는, 모든 의존적인 스트림들이 동일한 매체를 이용하고 있는 경우에만 행해질 수 있다. 따라서, 몇몇 실시예들에서, IP/TCP 스트림들(및/또는 연관된 양방향 트래픽을 갖는 다른 스트림들)의 경우, 이러한 스트림들이 식별될 수 있고, 모든 의존적 스트림들은 동일한 매체의 이용이 보장될 수 있다.
이를 달성하기 위한 하나의 가능한 메커니즘은, 스트림이, 연관된 "슬레이브" 스트림("마스터" 스트림과 동일한 송신 매체를 활용해야 함)을 가질 수 있음을 송신 디바이스가 수신 디바이스에 명시적으로 통지하는 것을 포함할 수 있다. 송신 디바이스는 하나 또는 그 초과의 제어 패킷들을 통해 또는 다른 수단을 통해 수신 디바이스에 통지할 수 있다.
이를 달성하기 위한 다른 가능한 메커니즘은 수신 디바이스가 이러한 스트림들을 검출 및 식별하는 것을 포함할 수 있다. 예를 들어, 수신 디바이스는, 스트림의 제 1 수신된 패킷의 검사에 기초하여 스트림을 식별할 수 있다. 패킷이, 반대 방향에서 연관된 스트림이 생성될 수 있는 타입의 패킷인 것으로 검사에서 나타나면, 수신 디바이스는, 수신 디바이스가 그 스트림을 위해 임의의 경로 선택 또는 로드 밸런싱 판정들을 행하지 않아야 함을 나타내는 정보를 저장할 수 있다. 수신 디바이스는, 송신 디바이스가 스트림의 성질을 수신 디바이스에 명시적으로 통지하는 앞서 설명된 메커니즘에서 스트림이 (예를 들어, 어떠한 경로 선택 또는 로드 밸런싱 판정들도 로컬로 행해지지 않아야 하는) "슬레이브" 스트림이라는 것을 나타내는 정보를 저장할 수 있음을 주목해야 한다.
따라서, 실시예들의 일 세트에서, 제 1 스트림의 복수의 패킷들은 제 1 송신 매체 상에서 제 2 디바이스로부터 수신될 수 있다. 제 2 스트림은 제 1 스트림과 연관되어 생성될 수 있다고 결정될 수 있고, 여기서 제 2 스트림은 제 2 디바이스로의 송신을 위한 것이다. 몇몇 실시예들에서, 제 2 스트림이 제 1 스트림과 연관되어 생성될 수 있다는 표시는 제 2 디바이스로부터 수신될 수 있다. 이 경우, 제 2 스트림이 제 1 스트림과 연관되어 생성될 수 있다고 결정하는 것은, 제 2 스트림이 제 1 스트림과 연관되어 생성될 수 있다는 표시를 수신하는 것에 기초할 수 있다. 대안적으로, 제 1 디바이스는, 예를 들어, 패킷 타입을 결정하기 위해 제 1 스트림의 하나 또는 그 초과의 패킷들을 검사함으로써, 제 2 디바이스로부터의 임의의 표시와는 독립적으로, 제 2 스트림이 제 1 스트림과 연관되어 생성될 수 있다고 결정할 수 있다.
제 1 스트림이 제 1 송신 매체에 할당되고 제 2 스트림이 제 1 스트림과 연관되는 것을 나타내는 정보가 저장될 수 있다. 제 2 스트림의 제 2 복수의 패킷들은 제 1 송신 매체 상에서 제 2 디바이스에 송신될 수 있고, 이것은, 제 1 스트림이 제 1 송신 매체에 할당되고, 제 2 스트림이 제 1 스트림과 연관된다는 것을 나타내는 정보에 기초할 수 있다.
몇몇 실시예들에서, 제 2 스트림의 제 2 복수의 패킷들은, 제 1 스트림의 제 1 복수의 패킷들을 수신하는 것에 대한 응답으로 생성될 수 있다. 예를 들어, 실시예들의 일 세트에서, 복수의 패킷들은 TCP 데이터 패킷들을 포함할 수 있는 한편, 제 2 복수의 패킷들은 TCP 데이터 패킷들에 대한 응답으로 생성되는 TCP ACK 패킷들을 포함할 수 있다.
연관된 역방향 스트림들을 갖는 스트림들은 스트림 스플리팅 및 어그리게이션에 대해 추가적인 문제들을 제시할 수 있음을 주목해야 한다. 이 경우, 다양한 실시예들에 따라, 이러한 스트림들은 스트림 스플리팅으로부터 배제될 수 있거나, 또는 (예를 들어, 가능한 경우) "슬레이브" 스트림(예를 들어, TCP ACK 특징)을 초래하는 프로토콜 특징들은 디스에이블될 수 있다.
자체-스로틀링
몇몇 실시예들에 따라 앞서 설명된 바와 같이, 몇몇 디바이스들은, 송신 인터페이스 상의 패킷들을 버퍼링함으로써 장애 극복시에 손실된 패킷들을 제거하는 것을 돕는 메커니즘을 구현할 수 있다. 그 다음, 이 버퍼는, 장애 극복의 경우 새로운 인터페이스 상에서 송신될 수 있다. 유사하게, 수신측상에서, 패킷들은, 순서대로의 전달을 보장하기 위해 이들이 새로운 인터페이스 상에서 검출되는 경우 버퍼링될 수 있다. 후자의 경우, 모든 패킷들이 수신된 것이 검출되면, 버퍼링된 패킷들 모두는 프로토콜 스택에 포워딩 업될 수 있다. 어느 경우이든 많은 수의 패킷들이 짧은 시간량에 송신될 수 있다. 이것은, 몇몇 실시예들에서, 메모리 소진으로 인한 패킷 손실을 초래할 잠재성을 갖는다.
앞서 간략하게 언급된 하나의 메커니즘은, 패킷들이 자신들의 수신지로 포워딩되는 레이트를 제한하는 주지된 (TBF와 같은) 스로틀링 메커니즘을 이용하는 것을 포함할 수 있다. 그러나, 이러한 일반적 목적의 메커니즘들은 복잡할 수 있는데, 예를 들어, 이들은, 패킷들이 자신들의 수신지로 포워딩되는 레이트를 조절하는 것을 돕기 위한 추가적인 타이머들에 의존할 수 있다.
보다 단순한 메커니즘은 자체 스로틀링을 포함할 수 있다. 특정한 스트림의 패킷들은 이러한 이벤트 이후 송신 및 수신을 계속할 수 있기 때문에, 이러한 송신 또는 수신을, 패킷들의 수신지로의 패킷들의 포워딩을 위한 타이머들로서 이용하는 것이 가능할 수 있다. 예를 들어, 실시예들의 일 세트에서, FIFO 버퍼가 구현될 수 있고, 여기서, 새로운 패킷들은 버퍼의 테일에 배치되는 한편, 프로그래밍가능한 수의 더 오래된 패킷들은 헤드로부터 제거되고 프로세싱(예를 들어, 자신들의 수신지로 포워딩)될 수 있다. 버퍼는 결국 소진될 수 있고, 이 때 자체-스로틀링 단계가 완료될 수 있다. 자체-스로틀링 FIFO 버퍼는, 원하는대로, 다양한 실시예들에 따라 송신기 및/또는 수신기측 중 어느 하나 또는 둘 모두에서 구현될 수 있다.
상기 실시예들은 상당히 상세히 설명되었지만, 상기 개시가 완전히 인식되면 다수의 변경들 및 변형들은 이 분야의 당업자들에게 자명하게 될 것이다. 다음의 청구항들은 모든 이러한 변경들 및 변형들을 포함하는 것으로 해석되도록 의도된다.

Claims (29)

  1. 제 1 디바이스가 스트림을 새로운 송신 매체로 스위칭하는 방법으로서,
    상기 제 1 디바이스는 복수의 송신 매체들을 통해 제 2 디바이스에 커플링되고,
    상기 방법은,
    상기 제 2 디바이스로의 송신을 위한 제 1 스트림을 수신하는 단계;
    상기 제 1 스트림의 제 1 복수의 패킷들을 상기 복수의 송신 매체들 중 제 1 송신 매체 상에서 상기 제 2 디바이스에 송신하는 단계 ―상기 제 1 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들을 포함함―;
    상기 제 1 복수의 패킷들 중 적어도 일부가 상기 제 2 디바이스에 의해 수신되지 않았을 수 있다고 결정하는 단계; 및
    상기 제 1 스트림의 제 2 복수의 패킷들을 상기 복수의 송신 매체들 중 제 2 송신 매체 상에서 상기 제 2 디바이스에 송신하는 단계를 포함하고,
    상기 제 1 스트림의 상기 제 2 복수의 패킷들은 상기 제 1 복수의 패킷들의 적어도 서브세트를 포함하고, 상기 제 2 복수의 패킷들은 상기 하나 또는 그 초과의 인덱스 마커 패킷들의 적어도 서브세트를 더 포함하고,
    상기 하나 또는 그 초과의 인덱스 마커 패킷들은, 복제 패킷들을 검출 및 폐기하기 위해 상기 제 2 디바이스에 의한 이용을 위해 구성되는,
    제 1 디바이스가 스트림을 새로운 송신 매체로 스위칭하는 방법.
  2. 제 1 항에 있어서,
    상기 방법은,
    상기 제 1 스트림의 상기 제 2 복수의 패킷들을 송신하기 전에 버퍼 시작 마커 패킷을 상기 제 2 송신 매체 상에서 상기 제 2 디바이스에 송신하는 단계를 더 포함하고,
    상기 버퍼 시작 마커 패킷은, 상기 제 1 스트림의 상기 제 2 복수의 패킷들의 적어도 서브세트가 상기 제 1 송신 매체 상에서 송신된 패킷들을 복제할 수 있음을 상기 제 2 디바이스에 나타내고, 상기 버퍼 시작 마커 패킷은, 인덱스 마커 패킷을 식별하고, 식별된 인덱스 마커 패킷에 대한, 상기 제 1 스트림에서의 버퍼 시작 마커 패킷의 위치를 나타내는 정보를 포함하는, 제 1 디바이스가 스트림을 새로운 송신 매체로 스위칭하는 방법.
  3. 제 2 항에 있어서,
    상기 제 2 복수의 패킷들에 포함된 상기 제 1 복수의 패킷들의 적어도 서브세트를 상기 제 2 송신 매체 상에서 송신한 후 버퍼 종료 마커 패킷을 상기 제 2 송신 매체 상에서 상기 제 2 디바이스에 송신하는 단계를 더 포함하고,
    상기 버퍼 종료 마커 패킷은, 상기 제 2 송신 매체 상에서 송신된 후속 패킷들이 상기 제 1 송신 매체 상에서 송신된 패킷들을 복제한 것이 아님을 상기 제 2 디바이스에 나타내는, 제 1 디바이스가 스트림을 새로운 송신 매체로 스위칭하는 방법.
  4. 제 1 항에 있어서,
    상기 방법은,
    상기 인덱스 마커 패킷들을 상기 제 1 스트림에 삽입하기 위한 제 1 인터벌을 결정하는 단계;
    상기 복수의 인덱스 마커 패킷들의 제 1 부분을 상기 제 1 인터벌에 상기 제 1 스트림에 삽입하는 단계;
    상기 인덱스 마커 패킷들을 상기 제 1 스트림에 삽입하기 위한 제 2 인터벌을 결정하는 단계 ―상기 제 2 인터벌은 상기 제 1 인터벌과 상이함―; 및
    상기 복수의 인덱스 마커 패킷들의 제 2 부분을 상기 제 2 인터벌에 상기 제 1 스트림에 삽입하는 단계를 더 포함하는, 제 1 디바이스가 스트림을 새로운 송신 매체로 스위칭하는 방법.
  5. 제 1 항에 있어서,
    상기 제 1 스트림의 패킷들의 서브세트를 버퍼에 저장하는 단계를 더 포함하고,
    상기 제 2 복수의 패킷들에 포함된 상기 제 1 복수의 패킷들의 적어도 서브세트는 상기 버퍼에 저장된 상기 제 1 스트림의 패킷들의 서브세트를 포함하는, 제 1 디바이스가 스트림을 새로운 송신 매체로 스위칭하는 방법.
  6. 제 1 항에 있어서,
    상기 제 1 복수의 패킷들 중 적어도 일부가 수신기에 의해 수신되지 않았을 수 있다고 결정하는 단계는 상기 제 1 송신 매체가 실패했다고 결정하는 단계를 포함하는, 제 1 디바이스가 스트림을 새로운 송신 매체로 스위칭하는 방법.
  7. 디바이스로서,
    복수의 송신 매체들을 통해 제 2 디바이스에 커플링하기 위한 복수의 포트들; 및
    스트림을 새로운 송신 매체로 스위칭하도록 구성되는 로직을 포함하고,
    상기 로직은,
    상기 제 2 디바이스로의 송신을 위한 제 1 스트림을 수신하고;
    상기 제 1 스트림의 제 1 복수의 패킷들을 상기 복수의 송신 매체들 중 제 1 송신 매체 상에서 상기 제 2 디바이스에 송신하고 ―상기 제 1 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들을 포함함―;
    상기 제 1 복수의 패킷들 중 적어도 일부가 상기 제 2 디바이스에 의해 수신되지 않았을 수 있다고 결정하고; 그리고
    상기 제 1 스트림의 제 2 복수의 패킷들을 상기 복수의 송신 매체들 중 제 2 송신 매체 상에서 상기 제 2 디바이스에 송신하도록
    구성되고,
    상기 제 1 스트림의 상기 제 2 복수의 패킷들은 상기 제 1 복수의 패킷들의 적어도 서브세트를 포함하고, 상기 제 2 복수의 패킷들은 상기 하나 또는 그 초과의 인덱스 마커 패킷들의 적어도 서브세트를 더 포함하고,
    상기 하나 또는 그 초과의 인덱스 마커 패킷들은, 복제 패킷들을 검출 및 폐기하기 위해 상기 제 2 디바이스에 의한 이용을 위해 구성되는,
    디바이스.
  8. 제 7 항에 있어서,
    상기 로직은, 상기 제 1 스트림의 상기 제 2 복수의 패킷들을 송신하기 전에 버퍼 시작 마커 패킷을 상기 제 2 송신 매체 상에서 상기 제 2 디바이스에 송신하도록 추가로 구성되고,
    상기 버퍼 시작 마커 패킷은, 상기 제 1 스트림의 상기 제 2 복수의 패킷들의 적어도 서브세트가 상기 제 1 송신 매체 상에서 송신된 패킷들을 복제할 수 있음을 상기 제 2 디바이스에 나타내고, 상기 버퍼 시작 마커 패킷은, 인덱스 마커 패킷을 식별하고, 식별된 인덱스 마커 패킷에 대한, 상기 제 1 스트림에서의 버퍼 시작 마커 패킷의 위치를 나타내는 정보를 포함하는, 디바이스.
  9. 제 8 항에 있어서,
    상기 로직은, 상기 제 2 복수의 패킷들에 포함된 상기 제 1 복수의 패킷들의 적어도 서브세트를 상기 제 2 송신 매체 상에서 송신한 후 버퍼 종료 마커 패킷을 상기 제 2 송신 매체 상에서 상기 제 2 디바이스에 송신하도록 추가로 구성되고,
    상기 버퍼 종료 마커 패킷은, 상기 제 2 송신 매체 상에서 송신된 후속 패킷들이 상기 제 1 송신 매체 상에서 송신된 패킷들을 복제한 것이 아님을 상기 제 2 디바이스에 나타내는, 디바이스.
  10. 제 7 항에 있어서,
    상기 로직은,
    상기 인덱스 마커 패킷들을 상기 제 1 스트림에 삽입하기 위한 제 1 인터벌을 결정하고;
    상기 복수의 인덱스 마커 패킷들의 제 1 부분을 상기 제 1 인터벌에 상기 제 1 스트림에 삽입하고;
    상기 인덱스 마커 패킷들을 상기 제 1 스트림에 삽입하기 위한 제 2 인터벌을 결정하고 ―상기 제 2 인터벌은 상기 제 1 인터벌과 상이함―; 그리고
    상기 복수의 인덱스 마커 패킷들의 제 2 부분을 상기 제 2 인터벌에 상기 제 1 스트림에 삽입하도록 추가로 구성되는, 디바이스.
  11. 제 7 항에 있어서,
    상기 로직은, 상기 제 1 스트림의 패킷들의 서브세트를 버퍼에 저장하도록 추가로 구성되고,
    상기 제 2 복수의 패킷들에 포함된 상기 제 1 복수의 패킷들의 적어도 서브세트는 상기 버퍼에 저장된 상기 제 1 스트림의 패킷들의 서브세트를 포함하는, 디바이스.
  12. 제 7 항에 있어서,
    상기 제 1 복수의 패킷들 중 적어도 일부가 수신기에 의해 수신되지 않았을 수 있다고 결정하도록 구성되는 로직은 상기 제 1 송신 매체가 실패했다고 결정하도록 추가로 구성되는, 디바이스.
  13. 스트림을 새로운 송신 매체로 스위칭하기 위한 시스템으로서,
    상기 제 2 디바이스로의 송신을 위한 제 1 스트림을 수신하기 위한 수단;
    상기 제 1 스트림의 제 1 복수의 패킷들을 상기 복수의 송신 매체들 중 제 1 송신 매체 상에서 상기 제 2 디바이스에 송신하기 위한 수단 ―상기 제 1 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들을 포함함―;
    상기 제 1 복수의 패킷들 중 적어도 일부가 상기 제 2 디바이스에 의해 수신되지 않았을 수 있다고 결정하기 위한 수단; 및
    상기 제 1 스트림의 제 2 복수의 패킷들을 상기 복수의 송신 매체들 중 제 2 송신 매체 상에서 상기 제 2 디바이스에 송신하기 위한 수단을 포함하고,
    상기 제 1 스트림의 상기 제 2 복수의 패킷들은 상기 제 1 복수의 패킷들의 적어도 서브세트를 포함하고, 상기 제 2 복수의 패킷들은 상기 하나 또는 그 초과의 인덱스 마커 패킷들의 적어도 서브세트를 더 포함하고,
    상기 하나 또는 그 초과의 인덱스 마커 패킷들은, 복제 패킷들을 검출 및 폐기하기 위해 상기 제 2 디바이스에 의한 이용을 위해 구성되는,
    스트림을 새로운 송신 매체로 스위칭하기 위한 시스템.
  14. 스트림을 새로운 송신 매체로 스위칭하기 위한 프로그램 명령들을 포함하는 컴퓨터 판독가능 메모리 매체로서,
    상기 프로그램 명령들은,
    송신을 위한 제 1 스트림을 수신하고;
    상기 제 1 스트림의 제 1 복수의 패킷들을 송신을 위한 복수의 송신 매체들 중 제 1 송신 매체에 라우팅하고 ―상기 제 1 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들을 포함함―;
    상기 제 1 복수의 패킷들 중 적어도 일부가 상기 제 2 디바이스에 의해 수신되지 않았을 수 있다고 결정하고; 그리고
    상기 제 1 스트림의 제 2 복수의 패킷들을 송신을 위한 상기 복수의 송신 매체들 중 제 2 송신 매체에 라우팅하도록
    실행가능하고,
    상기 제 1 스트림의 상기 제 2 복수의 패킷들은 상기 제 1 복수의 패킷들의 적어도 서브세트를 포함하고, 상기 제 2 복수의 패킷들은 상기 하나 또는 그 초과의 인덱스 마커 패킷들의 적어도 서브세트를 더 포함하고,
    상기 하나 또는 그 초과의 인덱스 마커 패킷들은, 복제 패킷들을 검출 및 폐기하기 위해 상기 제 2 디바이스에 의한 이용을 위해 구성되는,
    컴퓨터 판독가능 메모리 매체.
  15. 수신 디바이스가 송신 디바이스로부터 수신된 복제 패킷들을 제거하는 방법으로서,
    상기 수신 디바이스는 복수의 송신 매체들을 통해 상기 송신 디바이스에 커플링되고,
    상기 방법은,
    제 1 스트림의 제 1 복수의 패킷들을 상기 복수의 송신 매체들 중 제 1 송신 매체 상에서 수신하는 단계 ―상기 제 1 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들을 포함함―;
    상기 제 1 스트림의 제 2 복수의 패킷들을 제 2 송신 매체 상에서 수신하는 단계 ―상기 제 2 복수의 패킷들은 상기 제 1 복수의 패킷들의 적어도 서브세트를 포함하고, 상기 제 2 복수의 패킷들은 상기 하나 또는 그 초과의 인덱스 마커 패킷들의 적어도 서브세트를 더 포함함―;
    상기 제 1 복수의 패킷들 및 상기 제 2 복수의 패킷들에 포함된 상기 하나 또는 그 초과 인덱스 마커 패킷들에 기초하여, 상기 제 1 송신 매체 상에서 수신된 상기 제 1 복수의 패킷들 또는 상기 제 2 송신 매체 상에서 수신된 상기 제 2 복수의 패킷들 중 하나 또는 그 초과가 복제 패킷들이라고 결정하는 단계; 및
    결정된 복제 패킷들을 폐기하는 단계를 포함하는,
    수신 디바이스가 송신 디바이스로부터 수신된 복제 패킷들을 제거하는 방법.
  16. 제 15 항에 있어서,
    상기 방법은,
    상기 제 1 스트림에서 수신된 마지막 인덱스 마커, 및 상기 제 1 송신 매체 상에서 상기 마지막 인덱스 마커 이후 수신된 제 1 스트림의 패킷들의 수를 나타내는 정보를 저장하는 단계;
    상기 제 1 스트림의 상기 제 2 복수의 패킷들을 수신하기 전에 상기 제 2 송신 매체 상에서 버퍼 시작 마커 패킷을 수신하는 단계 ―상기 버퍼 시작 마커 패킷은, 상기 제 1 스트림의 상기 제 2 복수의 패킷들의 적어도 서브세트가 상기 제 1 송신 매체 상에서 송신된 패킷들을 복제할 수 있음을 나타내고, 상기 버퍼 시작 마커 패킷은, 인덱스 마커 패킷을 식별하고, 식별된 인덱스 마커 패킷에 대한, 상기 제 1 스트림에서의 버퍼 시작 마커 패킷의 위치를 나타내는 정보를 포함함―; 및
    상기 제 1 스트림에서 수신된 마지막 마커 인덱스, 및 상기 제 1 송신 매체 상에서 상기 마지막 인덱스 마커 이후 수신된 제 1 스트림의 패킷들의 수를 나타내는 저장된 정보를, 가장 최근의 인덱스 마커에 대한, 상기 제 1 스트림에서의 버퍼 시작 마커 패킷의 위치를 나타내는 정보와 비교하는 단계를 더 포함하고,
    상기 제 1 송신 매체 상에서 수신된 상기 제 1 복수의 패킷들 또는 상기 제 2 송신 매체 상에서 수신된 상기 제 2 복수의 패킷들 중 하나 또는 그 초과가 복제 패킷들이라고 결정하는 단계는 상기 비교에 기초하는, 수신 디바이스가 송신 디바이스로부터 수신된 복제 패킷들을 제거하는 방법.
  17. 제 16 항에 있어서,
    상기 방법은, 상기 제 2 송신 매체 상에서 버퍼 종료 마커 패킷을 수신하는 단계를 더 포함하고,
    상기 버퍼 종료 마커 패킷은, 상기 제 2 송신 매체 상에서 수신된 제 1 스트림의 후속 패킷들이 상기 제 1 송신 매체 상에서 수신된 제 1 스트림의 복제 패킷들이 아님을 나타내는, 수신 디바이스가 송신 디바이스로부터 수신된 복제 패킷들을 제거하는 방법.
  18. 제 16 항에 있어서,
    상기 제 1 복수의 패킷들 중 일부는, 상기 버퍼 시작 마커 패킷이 상기 제 2 송신 매체 상에서 수신된 후 상기 제 1 송신 매체 상에서 수신되고,
    상기 방법은, 상기 버퍼 시작 마커 패킷이 수신된 후 수신된 상기 제 1 복수의 패킷들 중 일부를 폐기하는 단계를 더 포함하는, 수신 디바이스가 송신 디바이스로부터 수신된 복제 패킷들을 제거하는 방법.
  19. 디바이스로서,
    복수의 송신 매체들을 통해 제 2 디바이스에 커플링하기 위한 복수의 포트들; 및
    상기 제 2 디바이스로부터 수신된 복제 패킷들을 검출 및 제거하도록 구성되는 로직을 포함하고,
    상기 로직은,
    제 1 스트림의 제 1 복수의 패킷들을 상기 복수의 송신 매체들 중 제 1 송신 매체 상에서 수신하고 ―상기 제 1 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들을 포함함―;
    상기 제 1 스트림의 제 2 복수의 패킷들을 제 2 송신 매체 상에서 수신하고 ―상기 제 2 복수의 패킷들은 상기 제 1 복수의 패킷들의 적어도 서브세트를 포함하고, 상기 제 2 복수의 패킷들은 상기 하나 또는 그 초과의 인덱스 마커 패킷들의 적어도 서브세트를 더 포함함―;
    상기 제 1 복수의 패킷들 및 상기 제 2 복수의 패킷들에 포함된 상기 하나 또는 그 초과 인덱스 마커 패킷들에 기초하여, 상기 제 1 송신 매체 상에서 수신된 상기 제 1 복수의 패킷들 또는 상기 제 2 송신 매체 상에서 수신된 상기 제 2 복수의 패킷들 중 하나 또는 그 초과가 복제 패킷들이라고 결정하고; 그리고
    결정된 복제 패킷들을 폐기하도록
    구성되는,
    디바이스.
  20. 제 19 항에 있어서,
    상기 로직은,
    상기 제 1 스트림에서 수신된 마지막 인덱스 마커, 및 상기 제 1 송신 매체 상에서 상기 마지막 인덱스 마커 이후 수신된 제 1 스트림의 패킷들의 수를 나타내는 정보를 저장하고;
    상기 제 1 스트림의 상기 제 2 복수의 패킷들을 수신하기 전에 상기 제 2 송신 매체 상에서 버퍼 시작 마커 패킷을 수신하고 ―상기 버퍼 시작 마커 패킷은, 상기 제 1 스트림의 상기 제 2 복수의 패킷들의 적어도 서브세트가 상기 제 1 송신 매체 상에서 송신된 패킷들을 복제할 수 있음을 나타내고, 상기 버퍼 시작 마커 패킷은, 인덱스 마커 패킷을 식별하고, 식별된 인덱스 마커 패킷에 대한, 상기 제 1 스트림에서의 버퍼 시작 마커 패킷의 위치를 나타내는 정보를 포함함―; 그리고
    상기 제 1 스트림에서 수신된 마지막 마커 인덱스, 및 상기 제 1 송신 매체 상에서 상기 마지막 인덱스 마커 이후 수신된 제 1 스트림의 패킷들의 수를 나타내는 저장된 정보를, 가장 최근의 인덱스 마커에 대한, 상기 제 1 스트림에서의 버퍼 시작 마커 패킷의 위치를 나타내는 정보와 비교하도록
    추가로 구성되고,
    상기 제 1 송신 매체 상에서 수신된 상기 제 1 복수의 패킷들 또는 상기 제 2 송신 매체 상에서 수신된 상기 제 2 복수의 패킷들 중 하나 또는 그 초과가 복제 패킷들이라고 결정하는 단계는 상기 비교에 기초하는, 디바이스.
  21. 제 19 항에 있어서,
    상기 로직은, 상기 제 2 송신 매체 상에서 버퍼 종료 마커 패킷을 수신하도록 추가로 구성되고,
    상기 버퍼 종료 마커 패킷은, 상기 제 2 송신 매체 상에서 수신된 제 1 스트림의 후속 패킷들이 상기 제 1 송신 매체 상에서 수신된 제 1 스트림의 복제 패킷들이 아님을 나타내는, 디바이스.
  22. 제 19 항에 있어서,
    상기 제 1 복수의 패킷들 중 일부는, 상기 버퍼 시작 마커 패킷이 상기 제 2 송신 매체 상에서 수신된 후 상기 제 1 송신 매체 상에서 수신되고,
    상기 로직은, 상기 버퍼 시작 마커 패킷이 수신된 후 수신된 상기 제 1 복수의 패킷들 중 일부를 폐기하도록 추가로 구성되는, 디바이스.
  23. 수신 디바이스가 송신 디바이스로부터 수신된 복제 패킷들을 제거하는 시스템으로서,
    상기 수신 디바이스는 복수의 송신 매체들을 통해 상기 송신 디바이스에 커플링되고,
    상기 시스템은,
    제 1 스트림의 제 1 복수의 패킷들을 상기 복수의 송신 매체들 중 제 1 송신 매체 상에서 수신하기 위한 수단 ―상기 제 1 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들을 포함함―;
    상기 제 1 스트림의 제 2 복수의 패킷들을 제 2 송신 매체 상에서 수신하기 위한 수단 ―상기 제 2 복수의 패킷들은 상기 제 1 복수의 패킷들의 적어도 서브세트를 포함하고, 상기 제 2 복수의 패킷들은 상기 하나 또는 그 초과의 인덱스 마커 패킷들의 적어도 서브세트를 더 포함함―;
    상기 제 1 복수의 패킷들 및 상기 제 2 복수의 패킷들에 포함된 상기 하나 또는 그 초과 인덱스 마커 패킷들에 기초하여, 상기 제 1 송신 매체 상에서 수신된 상기 제 1 복수의 패킷들 또는 상기 제 2 송신 매체 상에서 수신된 상기 제 2 복수의 패킷들 중 하나 또는 그 초과가 복제 패킷들이라고 결정하기 위한 수단; 및
    결정된 복제 패킷들을 폐기하기 위한 수단을 포함하는,
    수신 디바이스가 송신 디바이스로부터 수신된 복제 패킷들을 제거하는 시스템.
  24. 수신된 복제 패킷들을 검출 및 제거하기 위한 프로그램 명령들을 포함하는 컴퓨터 판독가능 메모리 매체로서,
    상기 프로그램 명령들은,
    제 1 스트림의 제 1 복수의 패킷들을 상기 복수의 송신 매체들 중 제 1 송신 매체를 통해 수신하고 ―상기 제 1 복수의 패킷들은 하나 또는 그 초과의 인덱스 마커 패킷들을 포함함―;
    상기 제 1 스트림의 제 2 복수의 패킷들을 제 2 송신 매체를 통해 수신하고 ―상기 제 2 복수의 패킷들은 상기 제 1 복수의 패킷들의 적어도 서브세트를 포함하고, 상기 제 2 복수의 패킷들은 상기 하나 또는 그 초과의 인덱스 마커 패킷들의 적어도 서브세트를 더 포함함―;
    상기 제 1 복수의 패킷들 및 상기 제 2 복수의 패킷들에 포함된 상기 하나 또는 그 초과 인덱스 마커 패킷들에 기초하여, 상기 제 1 송신 매체 상에서 수신된 상기 제 1 복수의 패킷들 또는 상기 제 2 송신 매체 상에서 수신된 상기 제 2 복수의 패킷들 중 하나 또는 그 초과가 복제 패킷들이라고 결정하고; 그리고
    결정된 복제 패킷들을 폐기하도록
    실행가능한,
    컴퓨터 판독가능 메모리 매체.
  25. 스트림을 새로운 송신 매체로 스위칭하는 경우 패킷 손실을 최소화하기 위한 방법으로서,
    제 1 스트림의 제 1 복수의 패킷들을 제 1 송신 매체 상에서 수신기에 송신하는 단계;
    상기 제 1 스트림의 상기 제 1 복수의 패킷들의 제 1 부분을 버퍼에 저장하는 단계;
    상기 제 1 복수의 패킷들 중 일부가 상기 수신기에 의해 수신되지 않았을 수 있다고 결정하는 단계; 및
    상기 버퍼에 저장된 상기 제 1 복수의 패킷들의 상기 제 1 부분을 제 2 송신 매체 상에서 상기 수신기에 재송신하는 단계를 포함하는,
    스트림을 새로운 송신 매체로 스위칭하는 경우 패킷 손실을 최소화하기 위한 방법.
  26. 제 25 항에 있어서,
    상기 방법은, 상기 버퍼를 업데이트하는 단계를 더 포함하고,
    상기 업데이트하는 단계는,
    하나 또는 그 초과의 성공적으로 송신된 패킷들을 상기 버퍼로부터 제거하는 단계;
    존속(age) 임계치보다 더 오래된 하나 또는 그 초과의 패킷들을 상기 버퍼로부터 제거하는 단계;
    상기 버퍼의 풀니스(fullness)에 기초하여 하나 또는 그 초과의 패킷들을 상기 버퍼로부터 제거하는 단계; 또는
    송신을 위해 스케줄링된 패킷을 상기 버퍼에 추가하는 단계
    중 하나 또는 그 초과를 포함하는, 스트림을 새로운 송신 매체로 스위칭하는 경우 패킷 손실을 최소화하기 위한 방법.
  27. 제 25 항에 있어서,
    상기 버퍼는, 헤드 엔드(head end) 및 테일 엔드(tail end)를 포함하고,
    상기 방법은,
    상기 수신기로의 송신을 위한 상기 제 1 스트림의 추가적인 패킷을 수신하는 단계;
    상기 제 1 스트림의 추가적인 패킷을 상기 버퍼의 테일 엔드에 저장하는 단계; 및
    상기 수신기로의 송신을 위해 상기 제 1 스트림의 추가적인 패킷을 수신하는 것에 기초하여, 상기 버퍼의 헤드 엔드로부터 미리 선택된 수의 패킷들을 상기 제 2 송신 매체 상에서 재송신하는 단계를 더 포함하는, 스트림을 새로운 송신 매체로 스위칭하는 경우 패킷 손실을 최소화하기 위한 방법.
  28. 복수의 송신 매체들을 통해 수신된 제 1 스트림의 무작위 패킷들을 재순서화하기 위한 방법으로서,
    제 1 스트림의 제 1 복수의 패킷들의 제 1 부분을 제 1 송신 매체 상에서 수신하고 프로세싱하는 단계;
    상기 제 1 스트림의 스트림-시작 마커 패킷을 제 2 송신 매체 상에서 수신하는 단계;
    상기 제 1 스트림의 제 2 복수의 패킷들의 제 1 부분을 상기 제 2 송신 매체 상에서 수신하고 버퍼링하는 단계 ―상기 제 1 복수의 패킷들은 제 1 스트림 패킷의 순서화에서 상기 제 2 복수의 패킷들 이전에 있음―;
    상기 제 1 스트림의 상기 제 1 복수의 패킷들의 제 2 부분을 상기 제 1 송신 매체 상에서 수신하고 프로세싱하는 단계 ―상기 제 1 복수의 패킷들의 제 2 부분은, 스트림-시작 마커 패킷이 수신된 후 수신됨―;
    스트림-종료 마커 패킷을 상기 제 1 송신 매체 상에서 수신하는 단계 ―상기 스트림-종료 마커 패킷은, 상기 제 2 복수의 패킷들의 제 1 부분이 수신된 후 수신됨―;
    상기 제 1 송신 매체 상에서 상기 스트림-종료 마커 패킷을 수신하는 것에 기초하여, 상기 제 1 송신 매체 상에서 상기 스트림-종료 마커 패킷을 수신한 후 상기 제 2 복수의 패킷들의 버퍼링된 제 1 부분을 프로세싱하는 단계; 및
    상기 제 1 스트림의 상기 제 2 복수의 패킷들의 제 2 부분을 상기 제 2 송신 매체 상에서 수신하고 프로세싱하는 단계를 포함하고,
    상기 제 2 복수의 패킷들의 제 2 부분을 프로세싱하는 단계는 상기 제 2 복수의 패킷들의 버퍼링된 제 1 부분을 프로세싱하는 단계 후에 수행되는,
    복수의 송신 매체들을 통해 수신된 제 1 스트림의 무작위 패킷들을 재순서화하기 위한 방법.
  29. 수신기가 자체-스로틀링(self-throttle)하는 방법으로서,
    제 1 스트림의 제 1 복수의 패킷들을 제 1 송신 매체 상에서 수신하는 단계;
    상기 제 1 스트림의 상기 제 1 복수의 패킷들을 버퍼에 저장하는 단계 ―상기 버퍼는 헤드 엔드 및 테일 엔드를 포함함;
    상기 제 1 스트림의 추가적인 패킷을 상기 제 1 송신 매체 상에서 수신하는 단계;
    상기 제 1 스트림의 추가적인 패킷을 상기 버퍼의 테일 엔드에 저장하는 단계;
    상기 제 1 스트림의 추가적인 패킷을 상기 제 1 송신 매체 상에서 수신하는 것에 기초하여, 상기 버퍼의 헤드 엔드로부터 미리 선택된 수의 패킷들을 프로세싱하는 단계; 및
    상기 버퍼의 헤드 엔드로부터 미리 선택된 수의 프로세싱된 패킷들을 제거하는 단계를 포함하는, 수신기가 자체-스로틀링하는 방법.
KR1020147016864A 2011-11-21 2012-11-20 스트림들의 끊김없는 경로 스위칭을 갖는 하이브리드 네트워킹 시스템 KR101749261B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/301,562 US9461777B2 (en) 2011-11-21 2011-11-21 Hybrid networking system with seamless path switching of streams
US13/301,562 2011-11-21
PCT/US2012/066105 WO2013078226A1 (en) 2011-11-21 2012-11-20 Hybrid networking system with seamless path switching

Publications (2)

Publication Number Publication Date
KR20140097417A true KR20140097417A (ko) 2014-08-06
KR101749261B1 KR101749261B1 (ko) 2017-06-20

Family

ID=47297466

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147016864A KR101749261B1 (ko) 2011-11-21 2012-11-20 스트림들의 끊김없는 경로 스위칭을 갖는 하이브리드 네트워킹 시스템

Country Status (7)

Country Link
US (1) US9461777B2 (ko)
EP (1) EP2783477B1 (ko)
JP (1) JP6001080B2 (ko)
KR (1) KR101749261B1 (ko)
CN (1) CN103959698A (ko)
IN (1) IN2014MN00851A (ko)
WO (1) WO2013078226A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9461777B2 (en) 2011-11-21 2016-10-04 Qualcomm Incorporated Hybrid networking system with seamless path switching of streams
US9722943B2 (en) 2012-12-17 2017-08-01 Qualcomm Incorporated Seamless switching for multihop hybrid networks

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2871811B1 (en) * 2012-07-25 2018-04-04 Huawei Technologies Co., Ltd. Data shunting method, data transmission device and shunting node device
US9705747B1 (en) 2012-12-04 2017-07-11 Qualcomm Incorporated Distributed path selection in hybrid networks
US20140269296A1 (en) * 2013-03-13 2014-09-18 Cox Communications, Inc. Systems and Methods of Bundled Label Switch Path for Load Splitting
US20140269691A1 (en) * 2013-03-14 2014-09-18 Qualcomm Incorporated Distributed path selection in hybrid networks
US9184998B2 (en) 2013-03-14 2015-11-10 Qualcomm Incorporated Distributed path update in hybrid networks
EP3031159B1 (en) * 2013-08-08 2017-06-21 Telefonaktiebolaget LM Ericsson (publ) Retransmission control network node and related method
EP3128717B1 (en) * 2014-04-04 2023-10-18 NTT Communications Corporation Communication system, transmission device, communication method, and program
CN104125615B (zh) * 2014-08-07 2017-12-15 华为技术有限公司 双频自适应并发的处理方法和装置
TWI542172B (zh) 2014-09-22 2016-07-11 財團法人工業技術研究院 路徑更換方法與系統及其控制器
GB2532051A (en) * 2014-11-07 2016-05-11 Nomad Spectrum Ltd Data traffic processing and analysis
US10057388B2 (en) * 2015-07-27 2018-08-21 The Boeing Company System and method for selecting a communication network in a sensor network
US10069722B2 (en) 2015-09-03 2018-09-04 International Business Machines Corporation Application information based network route modification
JP6432991B2 (ja) * 2016-03-31 2018-12-05 Necプラットフォームズ株式会社 ネットワーク機器及びその制御方法
US10277636B2 (en) 2016-09-08 2019-04-30 Macnica Americas, Inc. FPGA offload module and processes for seamless frame-level switching of media streams in real-time
EP3293923B1 (en) * 2016-09-12 2020-07-22 Alcatel-Lucent España Method and device for media packet distribution over multiple access wireless communication network
US20210385169A1 (en) * 2017-02-12 2021-12-09 Mellanox Technologies Ltd. Communication apparatus generating and eliminating redundant data packets
US10608943B2 (en) * 2017-10-27 2020-03-31 Advanced Micro Devices, Inc. Dynamic buffer management in multi-client token flow control routers
US10904135B2 (en) * 2018-07-13 2021-01-26 Nokia Technologies Oy Method and apparatus for increasing reliability of packet delivery by dynamic packet cloning and route selection
WO2021102671A1 (en) * 2019-11-26 2021-06-03 Mediatek Singapore Pte. Ltd. Methods and apparatus of cooperative communication for sidelink relay
KR102484529B1 (ko) * 2019-12-30 2023-01-05 국민대학교산학협력단 수중 사물 인터넷의 온톨로지 기반 통신 매체 선택 방법 및 이를 수행하는 수중 통신 장치
WO2023276122A1 (ja) * 2021-07-01 2023-01-05 日本電信電話株式会社 冗長送信装置、冗長受信装置、冗長送信方法、冗長受信方法、冗長送信プログラム及び冗長受信プログラム
WO2023196023A1 (en) * 2022-04-04 2023-10-12 Qualcomm Incorporated Shared subevents for protocol data units associated with different streams

Family Cites Families (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01258518A (ja) 1988-04-08 1989-10-16 Hitachi Ltd 回線バツクアツプ方式
US5309433A (en) * 1992-06-18 1994-05-03 International Business Machines Corp. Methods and apparatus for routing packets in packet transmission networks
DE4416718C2 (de) 1994-05-11 1997-08-21 Siemens Ag Schaltungsanordnung zum störungsfreien Umleiten eines Nachrichtenzellenstromes auf einen Ersatzweg
US6016319A (en) 1995-10-31 2000-01-18 Lucent Technologies, Inc. Communications system for transmission of datagram packets over connection-oriented networks
FR2769778B1 (fr) 1997-10-14 2000-10-27 France Telecom Procede de securisation de la transmission de cellules d'un systeme de telecommunication
US6370112B1 (en) 1998-06-16 2002-04-09 Lucent Technologies Inc. Seamless path switchover in a connection-oriented packet network
US6782490B2 (en) * 1999-03-17 2004-08-24 At&T Corp. Network-based service for the repair of IP multicast sessions
US6567929B1 (en) * 1999-07-13 2003-05-20 At&T Corp. Network-based service for recipient-initiated automatic repair of IP multicast sessions
US7107334B1 (en) 2000-03-16 2006-09-12 Cisco Technology, Inc. Methods and apparatus for redirecting network traffic
US6977888B1 (en) * 2000-09-14 2005-12-20 Telefonaktiebolaget L M Ericsson (Publ) Hybrid ARQ for packet data transmission
US7058010B2 (en) 2001-03-29 2006-06-06 Lucent Technologies Inc. Controlled switchover of unicast and multicast data flows in a packet based switching system
US6947379B1 (en) 2001-04-03 2005-09-20 Cisco Technology, Inc. Packet routing to reduce susceptibility to disturbances
US7310336B2 (en) * 2001-05-18 2007-12-18 Esa Malkamaki Hybrid automatic repeat request (HARQ) scheme with in-sequence delivery of packets
US7117521B2 (en) * 2001-08-31 2006-10-03 Intel Corporation Method to measure the perceived quality of streaming media
JP3912091B2 (ja) * 2001-12-04 2007-05-09 ソニー株式会社 データ通信システム、データ送信装置、データ受信装置、および方法、並びにコンピュータ・プログラム
JP2003273902A (ja) 2002-03-15 2003-09-26 Hitachi Ltd パケット通信装置、および、パケット通信網の回線切替方法
US6901063B2 (en) * 2002-05-13 2005-05-31 Qualcomm, Incorporated Data delivery in conjunction with a hybrid automatic retransmission mechanism in CDMA communication systems
US7280472B2 (en) 2002-06-04 2007-10-09 Lucent Technologies Inc. Protection switching at a network node
US7489866B2 (en) 2003-04-30 2009-02-10 Alcatel Lucent Method and apparatus for multiple-homing route diversification for UNI clients
US7372865B2 (en) 2003-07-09 2008-05-13 Fujitsu Limited Processing data packets using time stamped marker packets
US7606263B1 (en) 2004-03-30 2009-10-20 Extreme Networks, Inc. Packet parser
US7392319B2 (en) 2004-04-23 2008-06-24 International Business Machines Corporation Method and apparatus for failure resilient forwarding of data over a computer network
US20070110074A1 (en) * 2004-06-04 2007-05-17 Bob Bradley System and Method for Synchronizing Media Presentation at Multiple Recipients
WO2006027719A1 (en) 2004-09-09 2006-03-16 Koninklijke Philips Electronics N.V. Simplified switch over between content related media streams
CN1917508B (zh) 2005-08-19 2011-01-26 鸿富锦精密工业(深圳)有限公司 无线局域网装置及其帧序列号编号方法
US8064948B2 (en) * 2006-01-09 2011-11-22 Cisco Technology, Inc. Seamless roaming for dual-mode WiMax/WiFi stations
KR101330633B1 (ko) 2006-06-08 2013-11-18 삼성전자주식회사 무선 통신 방법 및 장치
CA2655545A1 (en) * 2006-06-19 2007-12-27 Liquid Computing Corporation Secure handle for intra-and inter-processor communications
US8718060B2 (en) 2006-07-31 2014-05-06 Cisco Technology, Inc. Technique for multiple path forwarding of label-switched data traffic
US20080072113A1 (en) * 2006-08-30 2008-03-20 Siukwin Tsang Method of locating packet for resend from retry buffer
EP2061211A4 (en) 2006-09-05 2014-01-29 Nec Corp PACKET RECOVERY METHOD, COMMUNICATION SYSTEM, INFORMATION PROCESSING DEVICE, AND PROGRAM
JP2008066903A (ja) 2006-09-06 2008-03-21 Nec Corp 不正侵入検知システム及びその方法並びにそれを用いた通信装置
CN101150498B (zh) 2006-09-18 2012-06-20 华为技术有限公司 多跳无线中继通信系统及其下行数据传输方法
KR101345944B1 (ko) * 2007-03-02 2013-12-27 삼성전자주식회사 무선 통신 시스템에서 패킷 재전송을 요청하는 장치 및방법
JP4836840B2 (ja) 2007-03-15 2011-12-14 株式会社東芝 無線通信基地局装置
US20080279567A1 (en) 2007-05-09 2008-11-13 Wen Huang Asymmetric ethernet optical network system
US8589578B2 (en) 2007-06-29 2013-11-19 Toshiba America Research, Inc. Streaming video over multiple network interfaces
JP4519159B2 (ja) 2007-07-12 2010-08-04 株式会社日立製作所 パケット転送装置及びパケット転送方法
US8279870B2 (en) 2007-08-01 2012-10-02 Silver Spring Networks, Inc. Method and system of routing in a utility smart-grid network
JP4587053B2 (ja) * 2007-08-28 2010-11-24 日本電気株式会社 通信装置、通信システム、パケット欠落検出方法、およびパケット欠落検出プログラム
JP5172405B2 (ja) * 2007-11-15 2013-03-27 ソニー株式会社 無線通信装置、無線通信システム、プログラム、および無線通信方法
WO2009074840A2 (en) 2007-12-10 2009-06-18 George Madathilparambil George Separately transmitting part of protocol information
KR101403873B1 (ko) 2008-01-04 2014-06-09 알카텔-루센트 유에스에이 인코포레이티드 송신 방법들, 네트워크 장비, 사용자 장비 및 전기통신 시스템
WO2010063298A1 (en) 2008-12-02 2010-06-10 Telecom Italia S.P.A. Method and system for multicast path switching, corresponding network and computer program product
US20100183024A1 (en) 2009-01-21 2010-07-22 Brocade Communications Systems, Inc Simplified rdma over ethernet and fibre channel
CN101510816B (zh) 2009-03-05 2012-06-20 北京交通大学 基于路径关联化的多路径并行传输方法
US20120063319A1 (en) 2009-05-25 2012-03-15 France Telecom Method for managing paths between a source node and a destination node within the data link layer, corresponding source node and table
JP5170001B2 (ja) 2009-06-05 2013-03-27 富士通株式会社 ノード装置、処理ユニット及び制御フレーム処理方法
US20110080911A1 (en) 2009-10-02 2011-04-07 Cisco Technology, Inc., A Corporation Of California Forwarding of Packets to a Same Location Having a Same Internet Protocol (IP) Address Embedded in a Different Advertised Route
US8588793B2 (en) 2009-12-04 2013-11-19 Interdigital Patent Holdings, Inc. Bandwidth management for a converged gateway in a hybrid network
WO2011083846A1 (ja) 2010-01-08 2011-07-14 日本電気株式会社 通信システム、転送ノード、経路管理サーバおよび通信方法
US8514853B2 (en) * 2010-01-11 2013-08-20 Cisco Technology, Inc. Remote re-multiplexing of transport streams
US20120192026A1 (en) * 2010-07-16 2012-07-26 Industrial Technology Research Institute Methods and Systems for Data Transmission Management Using HARQ Mechanism for Concatenated Coded System
JP5682253B2 (ja) 2010-11-22 2015-03-11 富士通株式会社 プログラムおよび通信装置
EP3989473B1 (en) 2010-12-03 2024-02-14 Samsung Electronics Co., Ltd. Method and apparatus for wireless communication on multiple spectrum bands
US9008113B2 (en) 2010-12-20 2015-04-14 Solarflare Communications, Inc. Mapped FIFO buffering
US20120173748A1 (en) * 2011-01-03 2012-07-05 Nokia Corporation Hybrid transport-layer protocol media streaming
JP5614302B2 (ja) * 2011-01-20 2014-10-29 富士通株式会社 通信システムおよび通信方法
JP5630306B2 (ja) 2011-02-10 2014-11-26 富士通株式会社 経路生成方法、中継装置、および経路生成プログラム
US8897169B2 (en) * 2011-03-02 2014-11-25 Qualcomm Incorporated Discovery of conventional devices and bridges in hybrid communication networks
US8908701B2 (en) 2011-03-14 2014-12-09 Broadcom Corporation Stream path selection within convergent networks
CN102149140B (zh) * 2011-05-10 2014-04-02 北京邮电大学 一种端到端多链路并行传输的网络控制方法
US9608899B2 (en) 2011-11-21 2017-03-28 Qualcomm Incorporated Packet-based aggregation of data streams across disparate networking interfaces
US9461777B2 (en) 2011-11-21 2016-10-04 Qualcomm Incorporated Hybrid networking system with seamless path switching of streams
US9065749B2 (en) 2011-11-21 2015-06-23 Qualcomm Incorporated Hybrid networking path selection and load balancing
US9491091B2 (en) 2012-06-08 2016-11-08 Cisco Technology, Inc. MLDP failover using fast notification packets
US9722943B2 (en) 2012-12-17 2017-08-01 Qualcomm Incorporated Seamless switching for multihop hybrid networks

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9461777B2 (en) 2011-11-21 2016-10-04 Qualcomm Incorporated Hybrid networking system with seamless path switching of streams
US9722943B2 (en) 2012-12-17 2017-08-01 Qualcomm Incorporated Seamless switching for multihop hybrid networks

Also Published As

Publication number Publication date
CN103959698A (zh) 2014-07-30
WO2013078226A1 (en) 2013-05-30
US20130132603A1 (en) 2013-05-23
IN2014MN00851A (ko) 2015-04-17
JP2015502711A (ja) 2015-01-22
EP2783477A1 (en) 2014-10-01
US9461777B2 (en) 2016-10-04
JP6001080B2 (ja) 2016-10-05
EP2783477B1 (en) 2018-12-19
KR101749261B1 (ko) 2017-06-20

Similar Documents

Publication Publication Date Title
KR101749261B1 (ko) 스트림들의 끊김없는 경로 스위칭을 갖는 하이브리드 네트워킹 시스템
US9608899B2 (en) Packet-based aggregation of data streams across disparate networking interfaces
US9065749B2 (en) Hybrid networking path selection and load balancing
US9059932B2 (en) Packet ordering based on delivery route changes in communication networks
KR101492510B1 (ko) 다중 전달 라우트 패킷 정렬
US10148492B2 (en) Data center bridging network configuration and management
US8750110B2 (en) Automatic path selection for hybrid communication networks
CN111937364A (zh) 无线网络系统中处理数据路径创建的方法和系统
EP3103218A1 (en) Bandwidth and latency estimation in a communication network
TW201306527A (zh) 利用相異網路傳送一封包之方法
US20190297516A1 (en) Multichannel communication systems
US20210409510A1 (en) Transmitter and Receiver, Serializer and Deserializer and Methods for Transmitting and Receiving, Serializing and Deserializing

Legal Events

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