KR101560613B1 - 하이브리드 네트워킹 경로 선택 및 로드 밸런싱 - Google Patents

하이브리드 네트워킹 경로 선택 및 로드 밸런싱 Download PDF

Info

Publication number
KR101560613B1
KR101560613B1 KR1020147016718A KR20147016718A KR101560613B1 KR 101560613 B1 KR101560613 B1 KR 101560613B1 KR 1020147016718 A KR1020147016718 A KR 1020147016718A KR 20147016718 A KR20147016718 A KR 20147016718A KR 101560613 B1 KR101560613 B1 KR 101560613B1
Authority
KR
South Korea
Prior art keywords
stream
transmission medium
packets
transmission
medium
Prior art date
Application number
KR1020147016718A
Other languages
English (en)
Other versions
KR20140100529A (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 KR20140100529A publication Critical patent/KR20140100529A/ko
Application granted granted Critical
Publication of KR101560613B1 publication Critical patent/KR101560613B1/ko

Links

Images

Classifications

    • 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

Landscapes

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

Abstract

제1 스트림을 전송할 전송 매체를 선택하기 위한 시스템 및 방법. 복수의 전송 매체들 중 적어도 하나는 사실상 실질적으로 동적일 수 있다. 복수의 전송 매체들 각각의 경로 특성들이 결정될 수 있다. 제1 전송 매체는 결정된 경로 특성들에 기초하여 제1 스트림에 대한 복수의 전송 매체로부터 선택될 수 있다. 제1 스트림의 제1 복수의 패킷들은 제1 전송 매체 상에서 전송될 수 있다.

Description

하이브리드 네트워킹 경로 선택 및 로드 밸런싱{HYBRID NETWORKING PATH SELECTION AND LOAD BALANCING}
이 출원은 2011년 11월 21일에 출원된 미국 출원 번호 제13/301,576호의 우선권 이익을 주장한다.
본 발명은 일반적으로 통신 시스템들에 관한 것이고, 더 구체적으로는 복수의 전송 매체를 포함하는 네트워크에서 스트림들을 전송하고 수신하기 위한 시스템들 및 방법들에 관한 것이다.
통신 네트워크들을 구축하기 위해 현재 일반적으로 사용되는 다양한 네트워킹 기술들이 존재한다. 일부 예들은, 다른 통신 기술들 중에서 특히, 무선 로컬 영역 네트워크(WLAN) 기술들, 전력선 통신 기술들, 이더넷, 및 802.16(WiMAX)을 포함한다. 심지어 다수의 이러한 통신 네트워크들이 동일한 공간 내에 존재하게 하는 것이 비교적 일반적이다(예를 들어, 가정(household) 환경에 있어서). 이러한 상황들에서, 다수의 상이한 네트워킹 기술들을 사용하여 다른 하이브리드 네트워킹 디바이스들에 커플링하고, 이에 의해 더욱 강건한 하이브리드 네트워크를 형성할 수 있는 하이브리드 네트워킹 디바이스들이 특히 유용할 것이다.
그러나, 통신 메커니즘들(예를 들어, 전송 매체), 및 개별 네트워킹 기술들에 대한 프로토콜 세부사항들(예를 들어, 디바이스 및 토폴로지 발견, 다른 네트워크들로의 브리징 등)이 통상적으로 각자의 네트워킹 기술에 대해 고유하다. 효율적인 하이브리드 네트워크를 형성하기 위해 이러한 다양한 네트워킹 기술들을 브리징하는 것은 도전적인 목표이며, 하이브리드 네트워킹의 다양한 영역들에서의 개선이 바람직할 것이다.
개시내용의 실시예들이 네트워킹 시스템들을 개선하기 위해 제시된다. 더 구체적으로는, 개시내용의 실시예들은, 스트림을 전송/수신하기 위해 다수의 전송 매체들을 사용할 수 있는 네트워킹 시스템들에서, 경로 선택, 로드 밸런싱, 스트림 어그리게이션(aggregation), 패킷 손실 최소화, 복제 패킷 검출, 및 비순차적(out-of-order) 패킷 재-순서화를 위한 방법들에 관련된다.
개시내용의 일부 실시예들은 복수의 전송 매체를 통해 또다른 전자 디바이스(예를 들어, 제2 하이브리드 네트워킹 디바이스)에 커플링되는 전자 디바이스(예를 들어, 제1 하이브리드 네트워킹 디바이스)에 의해 구현될 수 있다. 예를 들어, 전자 디바이스들은, 그 중 적어도 일부가 통신을 전달하기 위해 상이한 전송 매체를 활용할 수 있는 다수의 타입들의 네트워크들을 통해 통신할 수 있을 수 있다. 또한, 일부 실시예들에서, 전송 매체들 중 적어도 하나는 사실상 실질적으로 동적일 수 있는데, 예를 들어, 전송 매체들 중 적어도 하나의 PHY 레이트는 시간 경과에 따라 실질적으로 변경할 수 있다.
복수의 전송 매체들을 통해 서로 커플링되는 전자 디바이스들은 통신하기 위해 전송 매체들 중 임의의 것 또는 모두(또는 일부 결합)를 사용할 수 있는 장점을 가진다. 그러나, 상이한 전송 매체들 및 연관된 네트워킹 기술들을 최적으로 사용하기 위해, 진보된 제어 알고리즘들이 요구될 수 있다. 예를 들어, 일부 타입들의 통신들은 다른 것들보다는 한가지 타입의 네트워킹 기술 및/또는 전송 매체에 더욱 적합할 수 있다. 복수의 이용가능한 전송 매체들로부터 스트림을 전송할 전송 매체를 지능적으로 선택하는 것은, 특히 매체 특성들이 시간 경과에 따라 변경할 수 있고 규칙적으로 모니터링되어야 할 때는, 단순하지 않은 동작이다. 이 프로세스는 본원에서 경로 선택으로서 지칭되며, 개시내용의 실시예들의 하나의 세트는 경로 선택을 위한 시스템 및 방법에 관련된다.
또한, 스트림 특성들(예를 들어, 스트림이 얼마나 많은 대역폭을 활용하는지) 및 매체 특성들(예를 들어, 전송 매체의 링크 용량)이 시간 경과에 따라 변경함에 따라, 과도 가입 조건들이 하나 이상의 전송 매체들 상에서 발생할 수 있다. 추가로, 일부 환경들 하에서, 전송 매체는 일시적으로 또는 영구적으로 장애가 발생할 수 있다. 이용가능한 네트워크 용량의 사용을 최적화하기 위해 다수의 전송 매체들을 통해 전자 디바이스들 사이에서 통신되는 다양한 스트림들을 밸런싱하는 동시에, 과도 가입을 회피하고 다양한 타입들의 컨텐츠 스트림들에 대한 적절한 서비스를 제공하는 것은, 따라서 이 개시내용의 또다른 중요한 양상이다. 다양한 전송 매체들을 모니터링하고, 다양한 전송 매체들의 사용을 최적화하기 위해 하나의 전송 매체로부터 하나 이상의 스트림들을 선택하여 또다른 전송 매체로 이동시키는 프로세스는 본원에서 로드 밸런싱으로서 지칭되며, 개시내용의 실시예들의 하나의 세트는 로드 밸런싱을 위한 시스템 및 방법에 관련된다.
통신을 위한 다수의 전송 매체들의 이용가능성은 또한 다수의 전송 매체들을 사용하여 스트림을 전송하는 가능성에 적합하다. 예를 들어, 일부 상황들에서, 통신 스트림은 임의의 단일 전송 매체들에 의해 전체로 유지될 수 있는 것보다 더 큰 대역폭 요건을 가질 수 있다. 이는 매우 큰 스트림들의 경우, 또는 가능하게는 더욱 일반적으로, 다수의 스트림들이 이미 각각의 전송 매체 상에서 통신 중이며 임의의 주어진 전송 매체 상에 남아 있는 제한된 가용 링크 용량이 존재하는 경우 발생할 수 있다. 이러한 상황들에서, 통신 스트림의 일부분이 제1 전송 매체를 통해 통신되는 반면 통신 스트림의 또다른 부분이 제2 전송 매체를 통해 통신되는 것이 바람직할 수 있다. 이 프로세스는 본원에서 (예를 들어, 스트림이 전송 측에서 분할되고 수신 측에서 어그리게이팅될 수 있기 때문에) 스트림 분할 및 스트림 어그리게이션으로서 지칭되며, 개시내용의 실시예들의 하나의 세트는 스트림 분할/어그리게이션을 위한 스트림을 선택하기 위한 시스템 및 방법에 관련된다. 경로 선택 및 로드 밸런싱에서와 같이, 분할/어그리게이션을 위한 스트림을 선택하고, 스트림을 분할할 방식을 결정하는 프로세스는, 전송 매체들 중 하나 이상이 사실상 동적일 수 있다는 사실에 의해 복잡해질 수 있다. 일부 실시예들에서, 스트림 분할/어그리게이션이 또한, 예를 들어, 더욱 진보된 기법으로서, 로드 밸런싱의 프로세스에서 사용될 수 있다는 점에 주시해야 한다.
두 개의 전자 디바이스들 사이에서 통신하기 위해 다수의 전송 매체들을 사용하는 아이디어는 많은 명백한 장점들을 가진다: 특히, 더 큰 전체 용량을 가지는 더욱 강건한 네트워크가 이에 의해, 상이한 서비스 품질(QoS) 요건들 또는 다른 요구들을 가지는 상이한 타입들의 컨텐츠를 수용하기 위해 더욱 큰 유연성을 가지고 생성될 수 있다. 그러나, 수신 전자 디바이스에 의해 인식되고 성공적으로 수신될 방식으로 하나의 전송 매체로부터 또다른 전송 매체로의 스트림의 이동을 (스트림 분할/어그리게이션에서와 같이 부분적으로, 또는 전체적으로) 조정하는 것은 고유한 도전들의 세트를 제시한다. 이는 특히, 전송 매체가 사실상 현저하게 상이하며 상이한 네트워킹 기술들을 활용하는 경우일 수 있다. 이것의 일 예는 패킷 순서화이다. 전송 매체들이 상이한 타입들의 통신 인터페이스들에 대해 일반적일 수 있는 상이한 전송 레이턴시들을 가지는 경우, 스위칭-프롬(switched-from) 전송 매체 상에서 통신된 마지막 몇몇 패킷들은 제1 몇몇 패킷들이 스위칭-투(switched-to) 전송 매체 상에서 통신된 이후에 전자 디바이스에 의해 수신될 수 있다. 개시내용의 실시예들의 하나의 세트는 수신기가 이러한 비순차적 패킷들을 검출하고 비순차적 패킷들을 재-순서화하게 할 수 있는 시스템 및 방법에 관련된다.
추가로, 두 개의 전자 디바이스들 사이에서 통신하기 위해 조정된 방식으로 다수의 전송 매체들을 활용하기 위한 능력이 장애가 발생한 전송 매체로부터 여전히 기능적인 전송 매체로 스트림을 이동시키기 위한 잠재성을 제공하지만, 장애가 발생한 전송 매체에 의해 야기된 잠재적 패킷 손실을 최소화하는 방식을 제공하는 것이 바람직할 것이다. 개시내용의 실시예들의 하나의 세트는 따라서, 예를 들어, 패킷 버퍼 내의 패킷들의 일부 또는 전부가 오리지널 전송 매체를 통해 수신기에 성공적으로 통신되지 않았다고 결정되는 경우 새로운 전송 매체 상에서 재-전송될 수 있는 패킷 버퍼를 유지함으로써, 스트림을 새로운 전송 매체로 스위칭할 때 수신기에서의 패킷 손실을 최소화하기 위한 시스템 및 방법에 관련된다.
전술된 패킷-손실 최소화 기법의 결과로서, 또는 다른 이유들로 인해, 하나의 전송 매체로부터 또다른 전송 매체로 스트림을 스위칭할 시에 복제 패킷들이 통신되는 경우가 종종 있을 수 있다. 예를 들어, 장애가 발생한 전송 매체가 장애 발생 이전에 전송하도록 스케쥴링된 패킷들 중 일부를 전송하지만, 전송 전자 디바이스가 이를 알 방법이 없는 경우, 전송 전자 디바이스는 새로운 전송 매체를 사용하여 그러한 패킷들을 재-전송할 수 있다. 이러한 경우에, 수신기는 통신 스트림의 적어도 일부 패킷들의 복제 카피들을 수신할 수 있다. 복제 패킷들을 폐기하기 위해, 수신기가 바람직하게는 패킷들의 컨텐츠를 검사할 필요 없이, 이를 신속하게 결정할 수 있는 것이 바람직할 것이다. 따라서, 개시내용의 실시예들의 하나의 세트는 복제 패킷 검출 및 삭제를 위한 시스템 및 방법에 관련된다.
개시내용의 다양한 실시예들은, 요구되는 경우, 개별적으로 또는 결합하여 구현될 수 있다. 예를 들어, 실시예들의 하나의 세트에 따르면, 복수의 전송 매체들을 통해 제2 하이브리드 네트워킹 디바이스에 커플링되는 제1 하이브리드 네트워킹 디바이스는 개시내용의 엘리먼트들에 따라 경로 선택, 로드 밸런싱, 스트림 분할/어그리게이션, 비순차적 패킷 재-순서화, 및 복제 패킷 검출 및 삭제를 통한 패킷 손실 최소화를 구현하도록 구성될 수 있다.
일부 실시예들에서, 디바이스가 제1 스트림을 전송할 전송 매체를 선택하는 방법은: 복수의 전송 매체들 각각의 경로 특성들을 결정하는 단계 ― 복수의 전송 매체들 중 적어도 하나는 사실상 실질적으로 동적임 ― ; 결정된 경로 특성들에 기초하여 제1 스트림에 대한 제1 전송 매체를 복수의 전송 매체들로부터 선택하는 단계; 및 제1 전송 매체 상에서 제1 스트림의 제1 복수의 패킷들을 전송하는 단계를 포함한다.
일부 실시예들에서, 경로 특성들은 전송 매체의 링크 용량; 현재 매체 활용; 또는 최대 매체 활용 중 하나 이상을 포함한다.
일부 실시예들에서, 방법은 제1 스트림의 컨텐츠의 타입을 결정하는 단계를 더 포함하고; 상기 제1 전송 매체를 선택하는 것은 추가로 제1 스트림의 컨텐츠의 타입에 기초한다.
일부 실시예들에서, 방법은 제1 스트림의 우선순위 레벨을 결정하는 단계를 더 포함하고, 상기 제1 전송 매체를 선택하는 것은 추가로 제1 스트림의 우선순위 레벨에 기초한다.
일부 실시예들에서, 방법은 전송 매체들의 경로 특성들에 기초하여 복수의 타입들의 스트림 컨텐츠 각각에 대한 전송 매체들의 선호되는 순서를 결정하는 단계를 더 포함한다.
일부 실시예들에서, 방법은 적어도 하나의 전송 매체의 적어도 하나의 경로 특성에서의 변경을 검출하는 단계; 및 적어도 하나의 전송 매체의 적어도 하나의 경로 특성에서의 검출된 변경에 기초하여 복수의 타입들의 스트림 컨텐츠 중 적어도 하나에 대한 전송 매체들의 선호되는 순서를 수정하는 단계를 더 포함한다.
일부 실시예들에서, 방법은 제1 전송 매체의 현재 매체 활용이 제1 임계를 초과한다고 결정하는 단계; 제1 전송 매체의 현재 매체 활용이 제1 임계를 초과한다고 결정하는 것에 기초하여 제2 전송 매체 상에서의 전송을 위한 제1 스트림을 선택하는 단계; 및 제2 전송 매체 상에서의 전송을 위한 제1 스트림을 선택하는 것에 기초하여 제2 전송 매체 상에서의 제1 스트림의 제2 복수의 패킷들을 전송하는 단계를 더 포함하고, 제1 스트림의 패킷들은 상기 제2 전송 매체 상에서의 전송을 위한 제1 스트림을 선택하는 단계 이후에 제1 전송 매체 상에서 더 이상 전송되지 않는다.
일부 실시예들에서, 디바이스는: 복수의 전송 매체들을 통해 제2 디바이스에 커플링하기 위한 복수의 포트들 ― 복수의 전송 매체들 중 적어도 하나는 사실상 실질적으로 동적임 ― ; 및 스트림을 전송할 전송 매체를 선택하도록 구성된 로직을 포함하고, 로직은 복수의 전송 매체들 각각의 경로 특성들을 결정하고, 결정된 경로 특성들에 기초하여 제1 스트림에 대한 제1 전송 매체를 복수의 전송 매체들로부터 선택하고, 그리고 선택된 전송 매체 상에서 제1 스트림의 제1 복수의 패킷들을 전송하도록 구성된다.
일부 실시예들에서, 경로 특성들은: 전송 매체의 링크 용량; 현재 매체 활용; 또는 최대 매체 활용 중 하나 이상을 포함한다.
일부 실시예들에서, 로직은 제1 스트림의 컨텐츠의 타입을 결정하도록 추가로 구성되고; 상기 제1 전송 매체를 선택하는 것은 추가로 제1 스트림의 컨텐츠의 타입에 기초한다.
일부 실시예들에서, 로직은 추가로 제1 스트림의 우선순위 레벨을 결정하도록 구성되고; 상기 제1 전송 매체를 선택하는 것은 추가로 제1 스트림의 우선순위 레벨에 기초한다.
일부 실시예들에서, 로직은 추가로 전송 매체들의 경로 특성들에 기초하여 복수의 타입들의 스트림 컨텐츠 각각에 대한 전송 매체들의 선호되는 순서를 결정하도록 구성된다.
일부 실시예들에서, 로직은 추가로 적어도 하나의 전송 매체의 적어도 하나의 경로 특성에서의 변경을 검출하고; 그리고 적어도 하나의 전송 매체의 적어도 하나의 경로 특성에서의 검출된 변경에 기초하여 복수의 타입들의 스트림 컨텐츠 중 적어도 하나에 대한 전송 매체들의 선호되는 순서를 수정하도록 구성된다.
일부 실시예들에서, 로직은 추가로 제1 전송 매체의 현재 매체 활용이 제1 임계를 초과한다고 결정하고; 제1 전송 매체의 현재 매체 활용이 제1 임계를 초과한다고 결정하는 것에 기초하여 제2 전송 매체 상에서의 전송을 위한 제1 스트림을 선택하고; 그리고 제2 전송 매체 상에서의 전송을 위한 제1 스트림을 선택하는 것에 기초하여 제2 전송 매체 상에서 제1 스트림의 제2 복수의 패킷들을 전송하도록 구성되고, 제1 스트림의 패킷들은 상기 제2 전송 매체 상에서의 전송을 위한 제1 스트림을 선택하는 것 이후에 제1 전송 매체 상에서 더 이상 전송되지 않는다.
일부 실시예들에서, 컴퓨터-판독가능한 메모리 매체는 디바이스가 제1 스트림을 전송할 전송 매체를 선택하기 위한 프로그램 명령들을 포함하고, 프로그램 명령들은: 복수의 전송 매체들 각각의 경로 특성을 결정하고 ― 복수의 전송 매체들 중 적어도 하나는 사실상 실질적으로 동적임 ― ; 결정된 경로 특성들에 기초하여 제1 스트림에 대한 제1 전송 매체를 복수의 전송 매체들로부터 선택하고; 전송을 위해 제1 스트림의 제1 복수의 패킷들을 제1 전송 매체로 라우팅하도록 실행가능하다.
일부 실시예들에서, 디바이스가 복수의 전송 매체들을 로드 밸런싱하는 방법 - 복수의 전송 매체들 중 적어도 하나는 사실상 실질적으로 동적임 - 은: 제1 전송 매체 상에서 제1 스트림의 제1 복수의 패킷들을 전송하는 단계; 제1 전송 매체의 현재 매체 활용이 제1 임계를 초과한다고 결정하는 단계; 제1 전송 매체의 현재 매체 활용이 제1 임계를 초과한다고 결정하는 것에 기초하여 제2 전송 매체 상에서의 전송을 위한 제1 스트림을 선택하는 단계 ― 상기 선택은 또한 복수의 전송 매체들의 하나 이상의 경로 특성들 및 제1 스트림의 하나 이상의 특성들에 기초함 ― ; 및 제2 전송 매체 상에서 제1 스트림의 제2 복수의 패킷들을 전송하는 단계를 포함하고, 제1 스트림의 패킷들은 상기 제2 전송 매체 상에서의 전송을 위한 제1 스트림을 선택하는 단계 이후에 제1 전송 매체 상에서 더 이상 전송되지 않는다.
일부 실시예들에서, 방법은 제2 전송 매체 상에서의 제1 스트림의 전송이 제2 전송 매체의 매체 활용이 제2 임계를 초과하게 하지 않을 것이라고 결정하는 단계를 더 포함하고; 상기 제2 전송 매체 상에서의 전송을 위한 제1 스트림을 선택하는 단계는 상기 제2 전송 매체 상에서의 제1 스트림의 전송이 제2 전송 매체의 매체 활용이 제2 임계를 초과하게 하지 않을 것이라고 결정하는 단계에 적어도 부분적으로 기초한다.
일부 실시예들에서, 제1 스트림은 제1 우선순위 레벨을 가지고, 상기 제2 전송 매체 상에서의 전송을 위한 제1 스트림을 선택하는 것은 제1 우선순위 레벨에 적어도 부분적으로 기초한다.
일부 실시예들에서, 제1 우선순위 레벨은 제1 스트림의 컨텐츠의 타입에 기초한다.
일부 실시예들에서, 제1 스트림의 하나 이상의 특성들은 제1 스트림의 추정된 대역폭 요건을 포함하고; 복수의 전송 매체들의 하나 이상의 경로 특성들은, 각각의 개별 전송 매체에 대해, 전송 매체의 링크 용량; 현재 매체 활용; 또는 최대 매체 활용 중 하나 이상을 포함한다.
일부 실시예들에서, 디바이스는: 복수의 전송 매체들을 통해 제2 디바이스에 커플링하기 위한 복수의 포트들 ― 복수의 전송 매체들 중 적어도 하나는 사실상 실질적으로 동적임 ― ; 및 복수의 전송 매체들을 로드 밸런싱하도록 구성되는 로직을 포함하고, 로직은 복수의 포트들 중 제1 포트를 통해 제1 전송 매체 상에서 제1 스트림의 제1 복수의 패킷들을 전송하고; 제1 전송 매체의 현재 매체 활용이 제1 임계를 초과한다고 결정하고; 제1 전송 매체의 현재 매체 활용이 제1 임계를 초과한다고 결정하는 것에 기초하여 제2 전송 매체 상에서의 전송을 위한 제1 스트림을 선택하고 ― 상기 선택은 또한 복수의 전송 매체들의 하나 이상의 경로 특성들 및 제1 스트림의 하나 이상의 특성들에 기초함 ― ; 그리고 복수의 포트들 중 제2 포트를 통해 제2 전송 매체 상에서 제1 스트림의 제2 복수의 패킷들을 전송하도록 구성되고; 제1 스트림의 패킷들은 상기 제2 전송 매체 상에서의 전송을 위한 제1 스트림을 선택하는 것 이후에 제1 전송 매체 상에서 더 이상 전송되지 않는다.
일부 실시예들에서, 컴퓨터-판독가능한 메모리 매체는 복수의 전송 매체들을 로드 밸런싱하기 위한 프로그램 명령들을 포함하고, 프로그램 명령들은: 전송을 위헤 제1 전송 매체에 제1 스트림의 제1 복수의 패킷들을 라우팅하고; 제1 전송 매체의 현재 매체 활용이 제1 임계를 초과한다고 결정하고; 제1 전송 매체의 현재 매체 활용이 제1 임계를 초과한다고 결정하는 것에 기초하여 제2 전송 매체 상에서의 전송을 위한 제1 스트림을 선택하고 ― 상기 선택은 또한 복수의 전송 매체들의 하나 이상의 경로 특성들 및 제1 스트림의 하나 이상의 특성들에 기초함 ― ; 그리고 제2 전송 매체 상에서의 전송을 위한 제1 스트림을 선택하는 것에 기초하여 전송을 위해 제1 스트림의 제2 복수의 패킷들을 제2 전송 매체에 라우팅하도록 실행가능하다.
일부 실시예들에서, 제1 디바이스가 양방향 스트림들을 연관시키는 방법은: 제1 전송 매체 상에서 제2 디바이스로부터 제1 스트림의 제1 복수의 패킷들을 수신하는 단계; 제2 스트림이 제1 스트림과 연관되어 생성될 수 있다고 결정하는 단계 ― 제2 스트림은 제2 디바이스로의 전송을 위한 것임 ― ; 제1 스트림이 제1 전송 매체에 할당되고 제2 스트림이 제1 스트림과 연관됨을 표시하는 정보를 저장하는 단계; 및 제1 전송 매체 상에서 제2 디바이스에 제2 스트림의 제2 복수의 패킷들을 전송하는 단계를 포함하고; 상기 제1 전송 매체 상에서 제2 디바이스에 제2 스트림의 제2 복수의 패킷들을 전송하는 것은 제1 스트림이 제1 전송 매체에 할당되고 제2 스트림이 제1 스트림과 연관됨을 표시하는 정보에 기초한다.
일부 실시예들에서, 방법은 제2 스트림이 제2 디바이스로부터의 제1 스트림과 연관되어 생성될 수 있다는 표시를 수신하는 단계를 더 포함하고, 상기 제2 스트림이 제1 스트림과 연관되어 생성될 수 있다고 결정하는 것은 제2 스트림이 제1 스트림과 연관되어 생성될 수 있다는 표시를 수신하는 것에 기초한다.
일부 실시예들에서, 제2 스트림의 제2 복수의 패킷들은 제1 스트림의 제1 복수의 패킷들을 수신하는 것에 응답하여 생성된다.
일부 실시예들에서, 제1 복수의 패킷들은 TCP 데이터 패킷들을 포함하고, 제2 복수의 패킷들은 TCP ACK 패킷들을 포함한다.
실시예들의 후속하는 상세한 설명이 후속하는 도면들과 함께 판독될 때 본 발명의 더욱 양호한 이해가 획득될 수 있다.
도 1은 일 실시예에 따른, 복수의 네트워킹 기술들을 포함하는 예시적인 통신 네트워크를 예시한다.
도 2는 일 실시예에 따른 예시적인 디바이스의 시스템 다이어그램이다.
도 3은 일 실시예에 따라 다수의 네트워킹 인터페이스들을 구현하는 하이브리드 디바이스에 대한 예시적인 프로토콜 스택을 예시하는 개념도이다.
도 4-7은 실시예들의 하나의 세트에 따라 다수의 전송 매체들을 통해 스트림들을 전송하고 수신하기 위한 방법들을 예시하는 흐름도들이다.
도 8은 일 실시예에 따른 스트림 분할/스트림 어그리게이션을 둘러싼 전송 디바이스와 수신 디바이스 사이의 메시지 흐름을 예시하는 통신 다이어그램이다.
도 9는 일 실시예에 따른 상이한 시나리오들에 따라 다양한 전송 매체들의 가설적 링크 용량들을 예시하는 차트이다.
도 10a-b는 일 실시예에 따라 스트림 분할/스트림 어그리게이션이 구현될 수 있는 시나리오들을 예시하는 블록도들이다.
도 11은 일 실시예에 따라 어그리게이팅된 패킷 스트림의 패킷 순서를 유지하도록 수신 디바이스에 의해 사용될 수 있는 순환 버퍼를 예시하는 다이어그램이다.
본 발명에 대해 다양한 수정들 및 대안적인 형태들이 허용될 수 있지만, 본 발명의 특정 실시예들이 도면들에 예로서 도시되며, 본원에 상세하게 기술된다. 그러나, 도면들 및 도면들에 대한 상세한 설명이 개시된 특정 형태로 발명을 제한하도록 의도되는 것이 아니라, 오히려 첨부된 청구항들에 의해 정의된 바와 같은 본 발명의 사상과 범위 내에 드는 모든 수정들, 등가물들 및 대안들을 커버하도록 의도가 이루어진다는 점이 이해되어야 한다.
용어들
다음은 본 출원에서 사용되는 용어들의 해설이다:
메모리 매체 ― 다양한 타입들의 메모리 디바이스들 또는 저장 디바이스들 중 임의의 것. 용어들 "메모리" 및 "메모리 매체"는 설치 매체, 예를 들어, 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)를 예시한다(예를 들어, 디바이스들 각각은 상이한 전송 매체, 또는 일부 경우들에서, 다수의 전송 매체들을 활용할 수 있다). 네트워킹 기술들은 (예를 들어, 자신의 전송 매체로서, 2.4 GHz, 5GHz, 및/또는 또다른 ISM 대역을 사용하는) Wi-Fi, (예를 들어, 자신의 전송 매체로서 전기 배선을 사용하는) 전력선 통신들, (예를 들어, 트위스티드 페어, 광섬유, 및/또는 다른 유선 전송 매체들을 사용하는) 이더넷, 및/또는 다양한 다른 네트워킹 기술들/전송 매체들 중 임의의 것을 포함할 수 있다. 도 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-익스프레스, 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) 내에 구현된 로직에서, 주변 디바이스 또는 카드 상의 코-프로세서(co-processor)에서, 기타 등등에서 구현될 수 있다. 또한, 구현예들은 더 적은 또는 도 2에 예시되지 않은 추가적인 컴포넌트들(예를 들어, 비디오 카드들, 오디오 카드들, 추가적인 네트워크 인터페이스들, 주변 디바이스들 등)을 포함할 수 있다. 프로세서 유닛(202), 메모리 유닛(206), 및 네트워크 인터페이스들(204)은 버스(210)에 커플링된다. 버스(210)에 커플링된 것으로 예시되어 있지만, 메모리 유닛(206)은 프로세서 유닛(202)에 커플링될 수 있다.
도 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)에 걸쳐 동작하는 트랜스포트(transport) 계층(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 계층 위에 이더넷 컨버젼스(convergence) 계층을 구현할 수 있다. 또다른 예로서, 일부 네트워킹 기술들은 논리 링크 제어(LLC) 프로토콜 계층을 포함할 수 있다. 또한, 일부 구현예들에서, 하나 이상의 다른 서브-계층들은 본원에 기술된 기능성을 실행할 수 있다.
도 4-8
도 4-7은 다수의 전송 매체들을 사용하는 네트워크 통신에 관련된 몇몇 방법들을 예시하는 흐름도들이다. 도 4-7에 대해 하기에 설명된 단계들이 특정 순서로 도시되지만, 다양한 실시예들에 따라, 단계들 중 하나 이상이 생략되거나, 반복되거나, 또는 도시된 것과 상이한 순서로 수행될 수 있다는 점에 주시해야 한다. 하나 이상의 추가적인 단계들은 또한 또는 대안적으로, 원하는 경우, 추가될 수 있다. 일부 실시예들에서, 방법들 중 하나 이상(또는 방법들 중 하나 이상의 하나 이상의 단계들)이 서로 결합될 수 있다.
도 4는 디바이스가 제2 디바이스에 스트림을 전송하는 방법의 실시예들을 예시하는 흐름도이다. 방법을 구현하는 디바이스는 복수의 전송 매체들을 통해 제2 디바이스에 커플링될 수 있는데, 예를 들어, 일부 실시예들에서, 제1 및 제2 디바이스들은 도 1에 도시된 디바이스들 중 2개일 수 있다. 방법을 구현하는 시스템은 일부 실시예들에서, 도 2에 도시되고 이에 대해 설명된 바와 같은 시스템일 수 있다. 시스템은 도 3에 도시되고 이에 대해 설명된 바와 같은 OSI 프로토콜 스택을 구현할 수 있다. 예를 들어, 실시예들의 하나의 세트에서, 방법은 하이브리드 적응 계층(310)에서, 예를 들어, 하이브리드 제어 엔티티(212) 및/또는 하이브리드 브리지(214)에 의해 구현될 수 있다. 다른 실시예들에서, 방법은 또다른 계층 또는 몇몇 계층들에서 구현될 수 있다(예를 들어, 몇몇 계층들 각각은 방법의 엘리먼트들을 구현할 수 있다). 방법은 다음과 같이 수행될 수 있다.
402에서, 복수의 전송 매체들 각각의 경로 특성들이 결정될 수 있다. 일부 실시예들에서, 전송 매체들 중 적어도 하나는 사실상 실질적으로 동적일 수 있다. 예를 들어, 전송 매체들은 (예를 들어, 2.4GHz, 5GHz, 및/또는 또다른 ISM 주파수 대역을 사용하는) Wi-Fi, (예를 들어, 전기 배선을 사용하는) PLC, 및/또는 하나 이상의 다른 실질적으로 동적인 전송 매체들을 포함할 수 있는데, 이들은 (예를 들어, 간섭, 채널 페이딩, 또는 다른 팩터들을 포함하는) 다양한 팩터들에 따라 시간에 걸쳐 PHY 레이트에 있어서 변경될 수 있다. 전송 매체들은 또한 사실상 실질적으로 동적이지 않은 하나 이상의 전송 매체들, 즉, 이더넷과 같이, PHY 레이트가 시간에 걸쳐 실질적으로 정적이며 예측가능한 전송 매체들을 포함할 수 있다.
일부 실시예들에 따라, 각각의 전송 매체에 대해 결정된 경로 특성들은 현재 매체 활용, 최대 매체 활용, 및/또는 각각의 전송 매체의 하나 이상의 링크 용량들을 포함할 수 있다. 일부 실시예들에 따르면, 현재 매체 활용은 전송 매체가 이용 중인 시간의 퍼센테이지일 수 있다. 최대 매체 활용은 최대 허용된 매체 활용일 수 있다. 예를 들어, 현재 매체 활용이 최대 매체 활용보다 더 높은 경우, 전송 매체는 과도 가입되거나 과용량인 것으로 간주될 수 있는데, 이는 하나 이상의 로드-밸런싱 결정들을 트리거링할 수 있다. 일부 실시예들에서, 최대 매체 활용은 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 디바이스는 초기에 제2 디바이스에 제1 스트림의 패킷들을 전송하기 위해 어느 전송 매체(경로)를 사용할지를 결정할 필요가 있을 수 있다.
실제 경로 선택 알고리즘은, 예를 들어, 얼마나 많은 전송 매체들이 이용가능한지 그리고 각각의 전송 매체가 현재 제1 스트림의 목적지 디바이스에 대해 얼마나 많은 링크 용량을 가지고 있는지에 따라, 다양한 방식들 중 임의의 방식으로, 결정된 경로 특성들을 사용할 수 있다. 경로 선택 알고리즘은 또한 제1 스트림의 스트림 특성들(예를 들어, 컨텐츠 타입(비디오, 오디오, 다른 것 등), 패킷 타입(예를 들어, UDP, TCP 등), 우선순위 레벨(예를 들어, 낮음, 중간, 높음))에 의존할 수 있다. 일부 경우들에서, 이들 스트림 특성들은 자동으로 또는 수동으로 상관될 수 있는데, 예를 들어, 일부 실시예들에서 비디오 컨텐츠 스트림들은 높은 우선순위 레벨을 자동으로 수신할 수 있다. 다른 자동 또는 수동 우선순위 상관들이 또한 가능하다.
실시예들의 하나의 세트에서, 제1 전송 매체가 복수의 전송 매체들 중 가장 큰 가용 링크 용량을 가지는 것에 기초하여 선택될 수 있다. 일부 실시예들에서, 제1 전송 매체는 제1 스트림의 타입의 추가적인 스트림을 지원하기 위해 충분한 링크 용량(예를 들어, 특정 임계를 초과하는 링크 용량)을 가지는 다수의 전송 매체들 중에서 제1 스트림의 스트림의 타입에 대한 선호되는 매체일 수 있다.
일부 실시예들에서, 경로 선택 프로세스는 복수의 타입들의 스트림들 각각에 대한 전송 매체들의 선호되는 순서를 결정하는 것을 포함할 수 있다. 일부 실시예들에서 복수의 타입들의 스트림들 각각에 대한 전송 매체들의 선호되는 순서는 주로 새로운 스트림들에 적용할 수 있다. 예를 들어, 선호되는 순서는 전송 매체에 새로운 스트림을 할당하기 위해 사용될 수 있지만, 일단 스트림이 전송 매체에 할당되면, 그 스트림의 패킷들은 무한정으로 (예를 들어, 과도 가입 또는 다른 이벤트로 인해 재-할당되지 않는 한) 그 스트림 상에서 계속 전송될 수 있다.
일 실시예에서, 스트림들의 카테고리화가 매우 단순할 수 있는데, 예를 들어, UDP 패킷들은 전송 매체들의 제1 선호되는 순서가 할당될 수 있고, 비-UDP 패킷들은 전송 매체들의 제2 선호되는 순서가 할당될 수 있다. 일부 실시예들에서, 타입에 기초한 스트림들의 분류 또는 카테고리화가 전혀 수행되지 않을 수 있는데, 즉 모든 타입들의 스트림들이 이러한 실시예들에서 동일하게 다루어질 수 있다. 그러나, 스트림 특성들에 따라 더 광범위한 서비스 품질을 제공하기 위해, 통상적으로 스트림 타입들의 구별 및 분류를 위한 더 큰 능력을 제공하는 것이 바람직할 수 있으며, 따라서, 일부 실시예들에서, 스트림들은 2개 초과의 클래스들로 분류될 수 있다.
일반적으로 말해, (예를 들어, 높은 우선 순위 스트림들에 최상의 성능을 제공하기 위해) 더 높은 신뢰성 및/또는 더 큰 링크 용량을 가지는 전송 매체들에 (예를 들어, 컨텐츠 타입(예를 들어, 음성, 비디오, 데이터 등), 패킷 구조(TCP, UDP 등), 수동적 할당, 또는 다른 근거에 기초하여) 높은-우선순위의 패킷 스트림들을 할당하는 것이 바람직할 수 있다. 그러나, 다른 팩터들이 또한 또는 대안적으로 주어진 타입의 스트림에 대한 전송 매체들의 선호되는 순서를 결정할 시에 중요한 역할들을 할 수 있다.
일부 실시예들에서, 상이한 스트림 타입들에 대한 전송 매체들의 선호되는 순서들의 할당은 경로 특성들에 대한 변경들에 기초하여 자주 업데이트될 수 있다는 점에 주시해야 한다. 예를 들어, 전송 매체의 매체 활용이 상당히 증가하고 그리고/또는 매체가 과도 가입되는 경우, 그 전송 매체는 스트림의 하나 이상의 타입들에 대한 전송 매체들의 선호되는 순서의 최하위로 떨어질 수 있어서, 그것의 매체 활용이 감소하고 그것의 링크 용량이 증가할 때까지 (예를 들어, 하나 이상의 스트림들이 끝나거나 상이한 전송 매체들에 재-할당되었기 때문에) 그 전송 매체에 추가적인 스트림을 할당하는 것이 회피될 수 있다.
일부 실시예들에서, 일단 제1 전송 매체가 제1 스트림의 전송을 위해 선택되면, 제1 스트림의 후속적인 패킷들이 전송을 위해 제1 전송 매체에 라우팅되어야 함을 표시하는 정보가 저장될 수 있다.
406에서, 제1 스트림의 제1 복수의 패킷들이 제1 전송 매체 상에서 전송될 수 있다. 일 실시예에 따라, 제1 스트림의 제1 복수의 패킷들이, 잠재적으로는 제1 스트림의 개별 패킷들 또는 패킷 버스트들 사이에서 제1 전송 매체 상에서 전송되는 다른 스트림들의 개별 패킷들 또는 패킷 버스트들과 함께, 개별적으로 그리고/또는 버스트로(즉, 다수의 패킷들의 그룹들로) 전송될 수 있다. 단계(406)에서, 제1 스트림의 제1 복수의 패킷들이 제1 스트림의 전송을 위한 제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 스트림을 선택하기 위한 프로세스는 초기 경로 선택을 위한 프로세스와의 유사성들을 포함할 수 있다. 예를 들어, 제1 스트림 및 제1 전송 매체 상에서 전송되는(즉, 과도 가입된) 임의의 다른 스트림들의 특성들이 제2 전송 매체로 이동될 제1 스트림을 선택할 시에 고려될 수 있다. 유사하게, 복수의 전송 매체들 중 제2 전송 매체 및 임의의 다른 전송 매체의 특성들이 제1 스트림의 전송을 위한 제2 전송 매체의 선택 시에 고려될 수 있다.
일부 실시예들에서, 상이한 전송 매체에 재-할당하기 위해 제1 전송 매체 상에서 현재 전송 중인 스트림을 선택하는 프로세스는 제1 매체 상에서 전송되는 각각의 스트림의 스트림 매체 활용을 결정하는 것을 포함할 수 있다. 실시예의 하나의 세트에 따르면, 가장 큰 스트림 매체 활용을 가지는 스트림은 바람직하게는 또다른 전송 매체로의 재-할당을 위해 선택될 수 있다. 실시예들의 또다른 세트에서, 가장 작은 스트림 매체 활용을 가지는 스트림은 바람직하게는 또다른 전송 매체로의 재-할당을 위해 선택될 수 있다. 일부 실시예들에서, 스트림 우선순위가 또한 고려될 수 있는데, 예를 들어, 일부 실시예들에서, 가장 낮은 우선순위 레벨을 가지는 스트림이 바람직하게는 재-할당을 위해 선택될 수 있거나, 또는 가장 낮은 우선순위 레벨을 가지는 스트림들 중에서 가장 큰(또는 가장 작은) 스트림 매체 활용을 가지는 스트림이 바람직하게는 재-할당을 위해 선택될 수 있다.
다른 실시예들에서, 다른 팩터들이, 스트림 우선순위 및 스트림 매체 활용에 더하여 또는 스트림 우선순위 및 스트림 매체 활용을 대신하여, 어느 스트림을 새로운 전송 매체에 재-할당할지를 결정할 시에 고려될 수 있다. 예를 들어, 전송 매체들 자체의 특성은 어느 스트림이 재-할당을 위해 선택되는지에 영향을 줄 수 있다. 일부 실시예들에서, 이용가능한 전송 매체들의 특성들은 또한 또는 대안적으로 스트림이 재-할당될 새로운 전송 매체를 선택할 시에 고려될 수 있다. 예를 들어, 복수의 전송 매체들 각각의 현재 링크 용량이, 새로운 전송 매체(예를 들어, 제2 전송 매체) 상에서의 전송을 위해 스트림(예를 들어, 제1 스트림)을 선택할 시에 그리고 재할당을 위해 선택된 스트림(예를 들어, 제1 스트림)을 전송할 새로운 전송 매체(예를 들어, 제2 전송 매체)를 선택할 시에 모두에서 결정되고 고려될 수 있다. 위에서 주시된 바와 같이, 일부 실시예들에서, 재할당을 위해 가장 낮은 우선순위 및/또는 가장 큰 스트림 매체 활용을 가지는 스트림을 선택하는 것이 바람직할 수 있다. 그러나, 가장 낮은 우선순위 및/또는 가장 큰 스트림 매체 활용을 가지는 스트림을 추가하기 위해 충분한 링크 용량을 가지는 이용가능한 전송 매체가 존재하지 않는 경우, 더 높은 우선순위 및/또는 더 낮은 스트림 매체 활용을 가지는 스트림이 재-할당을 위해 선택될 수 있다.
실시예들의 일 예시적인 세트에서, 재-할당 프로세스는 다음과 같이 수행될 수 있다. 가장 큰 가용 링크 용량을 가지는 전송 매체는 제1 전송 매체로부터 자신에게 재-할당된 스트림을 가지도록 선택될 수 있다. 선택된 전송 매체가 재할당을 위해 (예를 들어, 스트림 우선순위, 스트림 매체 활용, 또는 다른 팩터들의 결과로서) 바람직하게 선택된 스트림에 대해 충분한 링크 용량을 가지는지의 여부가 결정될 수 있다. 선택된 전송 매체가 그 스트림에 대한 충분한 링크 용량을 가지는 경우, 그 스트림은 선택된 전송 매체에 재-할당될 수 있다. 선택된 전송 매체가 그 스트림에 대해 충분한 링크 용량을 가지지 않는 경우, 선택된 전송 매체가 두번째(next-in-line) 스트림에 대한 충분한 링크 용량을 가지는지의 여부가 결정될 수 있다. 프로세스는 수용가능한 스트림이 선택된 전송 매체로의 재할당을 위해 선택될 때까지 이러한 방식으로 계속될 수 있다. 수용가능한 스트림이 완전히 재-할당을 위해 선택되지 않는 경우(예를 들어, 제1 전송 매체 상에서 현재 전송중인 스트림들 중 임의의 것을 지원하기 위한 충분한 링크 용량을 가지는 어떠한 가용 전송 매체들도 존재하지 않는 경우, 또는 다른 이유로), 방법은, 스트림이 부분적으로 재-할당될 수 있는지, 예를 들어, 분할/어그리게이팅될 수 있는지의 여부를 결정하기 위해, 대안적으로 단계(410b)로 진행할 수 있다.
일부 실시예들에서, 제1 스트림이 제2 전송 매체에 재할당되었다는 표시가 제2 디바이스에 제공될 수 있다. 표시는 하나 이상의 제어 패킷들과 같은 제어 메시지를 포함할 수 있거나, 또는 또다른 형태를 취할 수 있다. 대안적으로, 일부 실시예들에서, 어떠한 표시도 제공되지 않을 수 있고, 제2 디바이스는 제2 전송 매체 상에서 제1 스트림의 패킷들을 수신하는 것에 단순히 기초하여 제1 스트림이 제2 전송 매체에 재-할당되었다고 결정하도록 구성될 수 있다.
412a에서, 제1 스트림의 제2 복수의 패킷들이 제2 전송 매체 상에서 전송될 수 있다. 제1 스트림의 제2 복수의 패킷들은 (예를 들어, 410a에서) 제2 전송 매체 상에서의 전송을 위해 제1 스트림을 선택하는 것에 기초하여 제2 전송 매체 상에서 전송될 수 있다. 제1 스트림이 (예를 들어, 제2 전송 매체의 하나 이상의 경로 특성들 및/또는 제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 디바이스의 능력의 확인을 수신하는 것이 바람직할 수 있다. 일부 실시예들에서, 제1 디바이스가 제2 디바이스가 스트림들을 어그리게이팅하도록 구성되지 않는다는 표시를 수신하는 경우, 제1 디바이스는 제1 스트림을 분할하지 않을 수 있다. 이 경우, 스트림 분할/어그리게이션 없이 로드 밸런싱에서의 베스트 에포트(best effort) 시도가 이루어질 수 있다. 대안적으로, 제1 전송 매체를 사용하여 상이한 디바이스에 전송되는 스트림은, 예를 들어 다른 디바이스가 스트림 어그리게이션을 지원하는 경우, 분할을 위해 선택될 수 있다.
일부 실시예들에서, 스트림을 재-할당할 2개의 전송 매체들의 선택은 단일의 새로운 전송 매체로의 재-할당을 위한 스트림을 선택하는 것보다 더 복잡할 수 있다. 위에서 주시된 바와 같이, 전송 디바이스에서 스트림을 분할하는 것 및 수신 디바이스에서 분할된 스트림을 어그리게이팅하는 것은, 상당한 추가적인 오버헤드를 발생시킬 수 있고, 하나의 전송 매체 또는 또다른 전송 매체 상에서 모든 스트림들을 전체적으로 전송하는 것보다는 개별 전송 매체들의 덜 효율적인 사용일 수 있다. 그러나, 적어도 하나의 전송 매체의 과도 가입을 야기하지 않고 모든 활성 스트림들을 수용하는 방식으로 복수의 전송 매체들을 로드-밸런싱하는 것이 어렵거나 불가능한 상황들에서는, 그것이 전체적으로 보았을 때 복수의 전송 매체들을 더욱 효율적으로 사용하기 위한 기회를 제시할 수 있기 때문에, 그것은 다른 옵션들보다는 바람직할 수 있다.
일부 실시예들에서, 스트림을 재-할당할 2개의 전송 매체들을 결정하기 위한 선택 프로세스, 및 재-할당할 스트림의 선택은, 분할 없는 재할당을 위한 전송 매체 및 스트림의 선택에서 사용되는 것과 동일한 특성들 중 다수의 특성들의 사용을 포함할 수 있다. 예를 들어, 다양한 전송 매체들의 링크 용량 및 스트림 매체 활용 및/또는 제1 전송 매체 상에서 전송되는 개별 스트림들의 타입(예를 들어, 우선순위)이 결정되어, 제1 및 제2 전송 매체들 모두에 재-할당하기 위한 제1 스트림의 선택 시에 사용될 수 있다. 실시예들의 일 예시적인 세트에서, 가장 높은 링크 용량을 가지는 2개의 전송 매체들은 그 전송 매체들에 재-할당되는 스트림을 가지도록 선택될 수 있다. 실시예들의 또다른 세트에서, 제1 전송 매체는 재할당을 위해 선택된 스트림의 일부분을 계속 전송하도록 자동으로 선택될 수 있고, 나머지 전송 매체들 중 가장 높은 링크 용량을 가지는 전송 매체는 제2 전송 매체로서 선택될 수 있다. 요구되는 경우, 스트림을 재-할당할 2개의 전송 매체들을 선택하기 위한 다른 프로세스들이 대안적으로 사용될 수 있다.
일부 실시예들에서, 이러한 추가적인 분할 및 어그리게이션에 의해 야기되는 증가한 오버헤드가 바람직하지 않거나 필수적이지 않을 수 있을 때, 3개 이상의 전송 매체들 사이에서 단일 스트림을 분할하는 것이 바람직하지 않을 수 있다는 점에 주시해야 한다. 예를 들어, 성공적인 로드 밸런싱이 2개의 전송 매체들 사이에서 하나의 스트림을 분할함으로써 달성될 수 없는 경우, 3개 이상의 전송 매체들 사이에서 단일 스트림을 분할하는 것보다는 2개(예를 들어, 다른)의 전송 매체들 사이에서 제2 스트림을 분할하는 것이 바람직할 수 있다. 그러나, 요구되는 경우, 3개 이상의 전송 매체들 사이에서 스트림을 분할하는 것이 수행될 수 있다.
위에서 주시된 바와 같이, 일부 실시예들에서, 분할하여 다수의 전송 매체들에 재할당하기 위한 스트림의 선택은 스트림의 특성들 및/또는 전송 매체들의 특성들에 기초할 수 있다. 예를 들어, 실시예들의 하나의 세트에서, 스트림을 재-할당할 가장 높은 링크 용량들을 가지는 2개의 전송 매체들을 선택한 경우, 재-할당될 스트림은 그것의 스트림 매체 활용 및/또는 그것의 우선순위에 기초하여 선택될 수 있다. 따라서, 실시예들의 하나의 세트에서, 스트림(예를 들어, 제1 스트림)은 가장 낮은 우선순위 레벨을 가지는 스트림들 중에서 선택될 수 있고, 가장 낮은 우선순위 레벨을 가지는 스트림들 사이에서 선택된 전송 매체들에 의해 수용될 수 있는 가장 높은 스트림 매체 활용을 가지는 스트림일 수 있다. 대안적으로, 예를 들어, 더 낮은 우선순위를 가지는 어떠한 수용가능한 스트림도 발견될 수 없는 경우, 스트림은 더 높은 우선순위 레벨을 가지는 스트림들 중에서 선택될 수 있고, 더 높은 우선순위 레벨을 가지는 스트림들 중에서 선택된 전송 매체들에 의해 수용될 수 있는 가장 높은 스트림 매체 활용을 가지는 스트림일 수 있다. 실시예들의 다른 세트들은 상이한 선택 기준들을 활용할 수 있고 그리고/또는 요구되는 경우 상이한 방식으로 동일한 선택 기준들을 사용할 수 있고; 예를 들어, 실시예들의 또다른 세트에서, 가장 작은 스트림 매체 활용을 가지는 스트림이 바람직하게 선택될 수 있고, 더 높은 우선순위를 가지는 스트림들은 분할(또는 임의의 형태의 재-할당)이 면제될 수 있고, 그리고/또는 가장 낮은 우선순위의 스트림은, 예를 들어, 로드 밸런싱에서의 베스트 에포트 시도로서, 자신이 선택된 전송 매체들에 의해 수용될 수 있는지의 여부와는 무관하게, 선택될 수 있다.
일부 실시예들에서, 일단 스트림이 재-할당을 위해 선택되면, 선택된 전송 매체들(예를 들어, 제1 전송 매체 및 제2 전송 매체) 사이에서 스트림(예를 들어, 제1 스트림)을 최상으로 분할하는 방법을 결정하기 위해 추가적인 계산들이 수행될 수 있다. 예를 들어, 어느 하나의 전송 매체의 과도 가입을 회피하는 방식으로 제1 전송 매체에 라우팅될 제1 스트림의 패킷들의 비율 및 제2 전송 매체에 라우팅될 제1 스트림의 패킷들의 비율을 결정하는 것이 바람직할 수 있다. 실시예들의 하나의 세트에서, 이 계산은, 현재 매체 활용이 제1 전송 매체의 최대 매체 활용을 초과하는 양을 결정하는 것, 및 적어도 현재 매체 활용이 제1 전송 매체의 최대 매체 활용을 초과하는 양을 제2 전송 매체에 재할당하는 제1 스트림의 분할 시에 사용할 비를 선택하는 것을 포함할 수 있다.
412b에서, 제1 스트림의 제2 복수의 패킷들은 제1 전송 매체 및 제2 전송 매체 모두를 사용하여 전송될 수 있다. 제1 전송 매체 및 제2 전송 매체 모두를 사용하여 제1 스트림을 전송하는 것은 제1 전송 매체 상에서 제2 복수의 패킷들의 제1 부분을 전송하는 것, 및 제2 전송 매체 상에서 제2 복수의 패킷들의 제2 부분을 전송하는 것을 포함할 수 있다. 일부 실시예들에서, 제1 또는 제2 전송 매체의 후속적인 과도 가입을 회피하도록 구성되는 비(예를 들어, 대략적인 또는 정확한 비)가 제2 복수의 패킷들의 제1 부분과 제2 부분 사이에서 유지될 수 있다.
다른 스트림 재-할당 상황들에서와 같이, 일부 실시예들에서, 분할/어그리게이션을 위해 선택된 스트림들의 패킷들이 선택된 전송 매체에 라우팅될 것임을 표시하는 정보는 그 스트림 및 그 전송 매체들을 선택하는 것에 기초하여 저장될 수 있다. 추가로, 일부 실시예들에서, 선택된 스트림을 분할할 시에 사용할 비를 표시하는 정보가 저장될 수 있다. 정보는 표 또는 다른 데이터 구조에 저장될 수 있는데; 예를 들어, 일부 실시예들에서, 선택된 스트림의 이전 전송 매체 할당을 표시하는 이전에 저장된 정보는 선택된 스트림의 새로운 전송 매체 할당 및 비를 표시하도록 업데이트될 수 있다.
일부 실시예들에서, 제2 복수의 패킷들이 제1 전송 매체와 제2 전송 매체 모두를 사용하여 전송되고 있다는 표시가 또한 제2 디바이스에 제공될 수 있다. 실시예들의 하나의 세트에서, 제2 복수의 패킷들이 제1 전송 매체 및 제2 전송 매체 모두를 사용하여 전송됨을 표시하는, 어그리게이션 명령들을 포함하는(예를 들어, 어그리게이션 버퍼에 대해 권고된 사이즈를 포함하는) 제어 메시지가 제1 디바이스에 의해 제2 디바이스로 전송될 수 있다. 이는 제2 디바이스로 하여금 어그리게이션 버퍼를 개시하고 그리고/또는 제1 스트림을 어그리게이팅하기 위한 다른 기법들을 수행하게 할 수 있다. 일부 실시예들에서, 제1 스트림을 어그리게이팅할 시에 제2 디바이스를 보조하도록 의도되는 하나 이상의 기법들이 또한 수행될 수 있다.
일 실시예에서, 예를 들어, 제1 스트림이 아직 시퀀스 번호들을 포함하지 않는 경우, 시퀀스 번호들이 제1 스트림의 패킷들 내로 삽입될 수 있다. 시퀀스 번호들은 분할된 스트림을 재-순서화할 시에 제2 디바이스를 보조할 수 있다. TCP 및 RTP 패킷 스트림들이 본질적으로 패킷 시퀀스 번호들을 포함할 수 있는 반면, UDP 패킷 스트림들은 제2 디바이스에 의해 액세스가능하며 분할된 스트림을 재-순서화할 시에 사용할 수 있는 시퀀스 번호들을 본질적으로 포함하지 않을 수 있다. 따라서, 일부 실시예들에서, 시퀀스 번호들은, 예를 들어, 패킷 캡슐화(예를 들어, TCP로의 전환), (일부 실시예들에서, VLAN 태그와 같은) 중복 필드로의 시퀀스 번호들의 삽입에 의해, 또는 또다른 수단에 의해, 제1 스트림의 패킷들 내로 삽입될 수 있다.
대안적으로, 또는 추가로, 일부 실시예들에서, 스위치 마커 패킷들이 각각의 전송 매체 상의 버스트들의 시작에 삽입될 수 있다. 스위치 마커 패킷들은 전송 매체 상에서 통신되는 스트림의 일부분("버스트")의 시작을 표시할 수 있다. 따라서, 하나의 전송 매체 상에서 통신되는 "스트림-시작" 마커 패킷은 (의도된 패킷 순서에 따른) 스트림의 다음 부분이 그 전송 매체 상에서 통신됨을 표시할 수 있다. 일부 실시예들에서, 각각의 스트림-시작 마커 패킷은 그 전송 매체 상에서 전송될 버스트의 사이즈를 표시하는 정보를 포함할 수 있다. 이는 수신기로 하여금 버스트가 언제 종료될지, 그리고 따라서 가능하게는 상이한 전송 매체 상에서 다음 버스트가 언제 예상되어야 하는지를 결정하게 할 수 있다.
위에서 주시된 바와 같이, 일부 실시예들에서, 스트림 분할/어그리게이션은 각각의 전송 매체 상에서 전송되는 스트림의 부분(proportion)들의 비를 유지하는 방식으로 실행될 수 있다. 이를 달성하는 하나의 수단은 각각의 전송 매체 상에서 상이한 버스트 사이즈들을 사용하는 것일 수 있으며, 여기서, 버스트 사이즈들은 비에 따라 구성된다. 예를 들어, 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개일 수 있다. 일부 실시예들에서, 방법을 구현하는 시스템은 도 2에 도시되고 도 2에 대해 설명된 것과 같은 시스템일 수 있다. 시스템은 도 3에 도시되고 도 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 태그)에 시퀀스 번호들을 삽입함으로써, 또는 또다른 수단에 의해, 스트림 패킷들 내로 삽입될 수 있다.
실시예들의 하나의 세트에서, 어그리게이션 버퍼는 순환 버퍼일 수 있다. 순환 버퍼를 개시하고 유지하는 것은, 다음 차례로 프로세싱되는 (예를 들어, 그 패킷의 패킷 시퀀스 번호에 기초하는) 패킷에 대한 포인터일 수 있는 기본 시퀀스 변수를 결정하고 유지하는 것을 포함할 수 있다. 새롭게 수신된 패킷들은, 그 패킷들의 시퀀스 번호들에 기초하여, 기본 시퀀스 포인터에 관한 버퍼 내의 적절한 위치들에서 버퍼에 저장될 수 있고, 패킷들이 프로세싱되어 적절한 경우 기본 시퀀스 변수가 업데이트될 수 있다.
패킷 시퀀스 번호들 및 순환 버퍼를 막 설명된 바와 같이 사용하는 것은, 제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 복수의 패킷들의 제2 부분의 임의의 너무 이르게 수신된 패킷들은, 제2 복수의 패킷들의 제1 부분의 모든 패킷들이 수신되고 프로세싱될 때까지 어그리게이션 버퍼에서 버퍼링될 수 있다. 일부 실시예들에서, 제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 부분이 이미 수신되었어야 한다고 결정될 수 있다. 이에 기초하여, 제1 버스트의 제1 및 제2 부분들이 프로세싱되는 동안 제2 버스트의 제1 부분이 버퍼 내에 저장될 수 있고, 제2 버스트의 제1 부분은 (예를 들어, 제1 버스트의 모든 패킷들이 의도된 스트림 순서에서 제2 버스트의 임의의 패킷들 앞에 있을 수 있기 때문에) 제1 버스트의 제2 부분의 프로세싱이 완료된 이후 프로세싱될 수 있다.
일부 실시예들에서, 이를테면, 스위치 마커 패킷들이 전술된 바와 같이 사용될 때, 요구되는 경우 어그리게이션 버퍼가 여전히 순환 버퍼로서 구현될 수 있지만, 어그리게이션 버퍼를 순환 버퍼로서 구현할 필요가 없을 수 있다는 점이 주시될 것이다.
스위치 마커 패킷들이 주로 스트림 분할/어그리게이션의 경우 사용되는 것으로서 전술되었지만, 스위치 마커 패킷들이 또한 또는 대안적으로 스트림들이 새로운 전송 매체로 완전히 전달되고 있는 스트림 재-할당 상황들에서 사용될 수 있다는 점이 주시되어야 한다.
도 6은 디바이스가 새로운 전송 매체로 스트림을 스위칭하는 방법을 예시하는 흐름도이다. 도 6의 방법은 주로 "장애극복(fail-over)" 상황들에서, 즉, 전송 매체가 장애가 발생한(즉, 전송 능력에 있어서 상당한 또는 전체 손실을 겪는) 상황들에서 사용될 수 있다. 그러나, 도 6의 방법의 일부 또는 전부가 또한 또는 대안적으로 정상 로드-밸런싱 상황들에서, 즉, 오리지널 전송 매체와 새로운 전송 매체 모두가 통신을 위해 사용될 수 있는 상황들에서 사용될 수 있다.
방법을 구현하는 디바이스는 복수의 전송 매체들을 통해 제2 디바이스에 커플링될 수 있고; 일부 실시예들에서, 예를 들어, 제1 및 제2 디바이스들은 도 1에 도시된 디바이스들 중 2개일 수 있다. 일부 실시예들에서, 방법을 구현하는 시스템은 도 2에 도시되고 도 2에 대해 설명된 것과 같은 시스템일 수 있다. 시스템은 도 3에 도시되고 도 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 복수의 패킷들 다음의 전송을 위해 버퍼에(예를 들어, 버퍼의 테일에) 저장될 수 있다. 버퍼의 헤드 엔드로부터의 미리 선택된 개수의 패킷들이 이후 수신기로의 전송을 위해 제1 스트림의 추가적인 패킷의 수신에 기초하여 제2 전송 매체 상에서 재-전송될 수 있다. 다시 말해, 짧은 시간량 내에 잠재적으로 많은 수의 패킷들(예를 들어, 제1 전송 매체의 장애로 인해 재-전송될 필요가 있을 수 있는 패킷들)로 인한 수신기의 과부하를 회피하기 위해, 추가적인 패킷이 버퍼로부터 패킷들을 릴리즈하기 위한 자동 타이머 메커니즘으로서 사용될 수 있다. 도 7에 대해 설명된 바와 같이, 이러한 자기-스로틀링 메커니즘이 선택적일 수 있고 그리고/또는 대안적으로(또는 추가적으로) 수신기에서 구현될 수 있다는 점이 주시되어야 한다.
위에서 주시된 바와 같이, 일부 실시예들에서, 버퍼-종료 마커 패킷이 전송되지 않을 수 있다. 이 경우, 버퍼-시작 패킷은 버퍼 사이즈를 표시하는 정보를 포함할 수 있고, 그 경우, 버퍼-종료 패킷은 관련이 없을 것이다. 대안적으로, 일부 실시예들에서, 버퍼링된 패킷들의 재-전송이 완료되었다는 어떠한 표시도 제2 디바이스에 제공되지 않을 수 있다. 예를 들어, 인덱스 마커 패킷들이 규칙적 간격들로 제1 스트림에 삽입되는 경우, 인덱스 마커 패킷들은 제2 디바이스가 버퍼-종료(또는 일부 실시예들에서, 버퍼-시작) 마커 패킷에 대한 어떠한 필요성도 없이 임의의 복제 패킷들을 식별하고 폐기하기 위한 충분한 기반을 제공할 수 있다.
도 7은 디바이스가 제2 디바이스로부터 수신된 복제 패킷들을 제거하는 방법을 예시하는 흐름도이다. 도 7의 방법은 주로 "장애극복" 상황들에서, 즉 전송 매체가 장애가 발생하는(즉, 통신 능력에 있어서 상당한 또는 전체 손실을 겪는) 상황들에서 사용될 수 있다. 그러나, 도 7의 방법의 일부 또는 모두가 또한 또는 대안적으로 정상 로드-밸런싱 상황들에서, 즉, 오리지널 전송 매체와 새로운 전송 매체 모두가 통신을 위해 사용될 수 있는 상황들에서 사용될 수 있다.
방법을 구현하는 디바이스는 복수의 전송 매체들을 통해 제2 디바이스에 커플링될 수 있고; 일부 실시예들에서, 예를 들어, 제1 및 제2 디바이스들은 도 1에 도시된 디바이스들 중 2개일 수 있다. 일부 실시예들에서, 방법을 구현하는 시스템은 도 2에 도시되고 도 2에 대해 설명된 것과 같은 시스템일 수 있다. 시스템은 도 3에 도시되고 도 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 복수의 패킷들은, 예를 들어, 제2 디바이스에 의해 전송 버퍼에 저장되었으며 또한 제1 복수의 패킷들의 일부였던 (임의의 인덱스 마커 패킷들을 포함하는) 패킷들을 포함할 수 있다. 다시 말해, 제2 복수의 패킷들은 제1 복수의 패킷들 중 일부의 복제들을 포함할 수 있다.
일부 실시예들에서 버퍼-종료 마커 패킷은 또한 제2 전송 매체 상에서 제1 디바이스에 의해 수신될 수 있다. 버퍼-종료 마커 패킷은 제2 복수의 패킷들에 포함된 제1 복수의 패킷들의 적어도 서브세트를 수신한 이후 제1 디바이스에 의해 수신될 수 있다. 다시 말해, 버퍼-종료 마커 패킷은 버퍼링된 패킷들 모두가 수신된 이후 제1 디바이스에 의해 수신될 수 있고, 버퍼링된 패킷들 모두(즉, 제1 전송 매체 상에서 수신된 제1 복수의 패킷들 내의 패킷들을 복제할 수 있음)가 전송되었으며 후속하는 패킷들이 이전에 전송된 패킷들을 복제하지 않을 수 있음을 제1 디바이스에 표시할 수 있다. 그러나, 일부 실시예들에서, 예를 들어, 버퍼-시작 마커 패킷이 전송중인 버퍼의 사이즈를 표시하는 정보를 포함하는 경우, 버퍼-종료 마커 패킷이 필요하지 않거나 바람직하지 않을 수 있음이 주시되어야 한다. 이 경우, 수신기는 버퍼-시작 마커 패킷에 포함된 정보에 기초하여 버퍼 전체가 언제 수용되었는지를 결정할 수 있다. 이는 버퍼-종료 패킷에 포함되는 추가적인 오버헤드를 회피하기 위해 바람직할 수 있다.
제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 전송 매체 상에서 마지막 인덱스 마커 패킷 이후에 수신된 패킷들의 수를 표시하는 저장된 정보는, 제1 복수의 패킷들 또는 제2 복수의 패킷들 중 임의의 것이 서로 복제 패킷들인지의 여부를 결정하기 위해 가장 최근의 인덱스 마커 패킷에 대한 제1 스트림 내의 버퍼-시작 마커 패킷의 포지션을 표시하는 정보와 비교될 수 있다.
712에서, 결정된 복제 패킷들이 폐기될 수 있다. 폐기된 복제 패킷들은 요구되는 경우, 제1 또는 제2 전송 매체들 중 어느 하나 상에서 수신된 복제 패킷들의 카피들일 수 있다. 실시예들의 하나의 세트에서, 제1 스트림의 패킷들이 버퍼-시작 마커 패킷이 수신된 이후 제1 전송 매체 상에서 계속 수신되고, 그러한 패킷들이 스트림 패킷 순서에서 버퍼-시작 마커 패킷의 위치 다음에 있는 경우, 그러한 패킷들은 (예를 들어, 패킷들이 제2 전송 매체 상에서 재-전송될 것이라고 가정될 수 있기 때문에) 폐기될 수 있다. 다른 한편으로, 버퍼-시작 마커 패킷이 수신될 때, 스트림 패킷 순서에 있어서 버퍼-시작 마커 패킷의 위치를 지난 지점까지의 제1 스트림의 패킷들이 제1 전송 매체 상에서 이미 수신된 경우, 제2 전송 매체 상에서 수신된 제1 스트림의 패킷들은 비-복제 패킷들(즉, 제1 전송 매체 상에서 아직 수신되지 않고 프로세싱되지 않은 패킷들)이 수신될 때까지 폐기될 수 있다. 이때, 제1 스트림은 제2 전송 매체로 완전히 스위칭될 수 있다. 일부 실시예들에서, 예를 들어, 추후 시간에 제1 스트림의 새로운 전송 매체로의 추가적인 재-할당의 경우, 제2 전송 매체 상에서 최근에 수신된 하나 이상의 인덱스 마커 패킷들 및 상기 최근에 수신된 인덱스 마커 패킷들 이후로 또는 그 사이에 수신된 패킷들의 수를 표시하는 정보가 계속 저장될 수 있다.
도 8-11 및 추가 고려사항들
도 8-11 및 도 8-11과 함께 제공되는 후속하는 상세항목들 및 추가 고려사항들은 도 4-7의 방법들에 따라 사용될 수 있는 특정 예시적인 구현예들에 관련된다. 그러나, 당업자에 의해 인식될 바와 같이, 상이한 구현 상세항목들을 포함하는 임의의 개수의 상이한 구현예들은 도 4-7의 방법들에 따라 사용될 수 있고, 따라서 후속하는 고려사항들은 전체적으로 개시내용에 대한 제한으로 고려되지 않아야 한다.
도 8
도 8은 일 실시예에 따라 스트림 분할/스트림 어그리게이션을 둘러싼 전송 디바이스와 수신 디바이스 사이의 메시지 흐름(800)을 예시하는 통신 다이어그램이다.
초기에, 과도 가입 이벤트가 전송 디바이스에 의해 검출될 수 있다. 디바이스(예를 들어, 도 2에 도시된 하이브리드 제어 엔티티(212)와 같은 하이브리드 네트워킹 계층에서 동작하는 하이브리드 제어 엔티티, 또는 또 다른 시스템 엘리먼트)가 스트림을 분할하도록 결정할 수 있다. 디바이스는 예를 들어, 스트림을 분할하기 위한 결정을 표시하는 제어 패킷들을 수신 디바이스에 전송함으로써, 수신 디바이스에 통지할 수 있다. 수신 디바이스(예를 들어, 도 2에 도시된 하이브리드 브리지(214)와 같은 하이브리드 네트워킹 계층에서 동작하는 하이브리드 브리지 또는 또다른 시스템 엘리먼트)가 (권고된 어그리게이션 버퍼 사이즈 등과 같은) 어그리게이션 명령들을 포함할 수 있는 제어 패킷들을 수신하고, 제어 패킷들의 수신에 확인응답할 수 있다.
일부 실시예들에서, 분할하기 위해 선택된 스트림들의 패킷들을 포함해서, 새로 수신된 패킷들의 라우팅을 결정하기 위해 전송 디바이스에 의해 사용되는 라우팅 표가 스트림을 분할하기 위한 결정에 따라 업데이트될 수 있다. 전송 디바이스는 이후, 예를 들어, 분할된 스트림의 일부 패킷들을 제1 전송 매체에 그리고 분할된 스트림의 일부 패킷들을 제2 전송 매체에 라우팅함으로써, 다수의 인터페이스들에 걸쳐 스트림을 분할할 수 있다. 일부 실시예들에서, 선택된 전송 매체 각각에 라우팅된 분할된 스트림의 비율들은 라우팅 표에 저장된 정보에 따라 유지될 수 있다.
한편, 수신 디바이스는 다수의 인터페이스들 상에서 분할된 흐름의 패킷들을 수신하고 패킷들을 어그리게이팅하고 재-순서화할 수 있다.
결국, 전송 디바이스는 스트림의 분할을 중단하도록 결정할 수 있다. 전송 디바이스는 후속적으로 다수의 인터페이스들보다는 단일 인터페이스를 사용하여 스트림의 패킷들을 전송하기 시작할 수 있다. 전송 디바이스는, 수신 디바이스에 의해 수신되고 확인응답될 수 있는 추가적인 제어 패킷들에 의해 수신 디바이스에 통지할 수 있다.
따라서, 일부 실시예들에 따르면, 전송 디바이스는 전송 디바이스가 흐름의 분할 상태를 수정할 때, 예를 들어, 전송 디바이스가 흐름의 분할을 시작할 때 그리고 전송 디바이스가 흐름의 분할을 중단할 때, 수신기에 커맨드를 송신할 수 있다.
이 정보의 목적은 수신기로 하여금 재-순서 버퍼를 생성하고 흐름의 재-순서화를 시작할 수 있게 하는 것일 수 있다. 재순서화는 (CPU 및 메모리 모두에서) 비교적 소모적일 수 있고, 잠재적으로 흐름의 전달 레이턴시를 증가시킬 수 있다. 따라서, 수신기가 항상 모든 흐름들에 대해 그렇게 수행하지 않는 것이 바람직할 수 있다. 따라서, 일부 실시예들에서, (예를 들어, 어그리게이션 버퍼를 셋업하는 것을 포함하는) 재순서화는 오직 다수의 매체들에 걸쳐 전송되는 흐름들에 대해서만 수행될 수 있다.
일부 실시예들에 따라, 제어 패킷들은 또한 권고된 버퍼 사이즈 및/또는 권고된 타임-아웃을 표시할 수 있다. 송신기는 스트림이 분할된 두 인터페이스들 모두의 흐름 레이트 및 상대적인 레이턴시에 기초하여 어그리게이션 버퍼 사이즈를 권고할 수 있다. 수신기는 통상적으로 권고를 따를 수 있지만, 메모리 가용성에 따라 거부할 수도 있다. 송신기는 또한 스트림이 분할된 두 인터페이스들 모두의 흐름 레이트 및 상대적인 레이턴시에 기초하여 타임-아웃을 권고할 수 있다. 또한, 수신기는 통상적으로 권고를 따를 수 있지만, 메모리 가용성에 따라 거부할 수 있다.
도 9
도 9는 일 실시예에 따른 상이한 시나리오들에 따라 다양한 전송 매체들의 가설적 링크 용량들을 예시하는 차트(900)이다. 예시된 실시예에서, 3개의 이용가능한 전송 매체들, 즉 PLC, 2.4GHz 스펙트럼에서 동작하는 Wi-Fi(W2), 및 5GHz 스펙트럼에서 동작하는 Wi-Fi(W5)이 존재한다. PLC 및 W5는 현재 예시적인 실시예에서 임계로서 세팅된 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의 나머지 링크 용량을 가진다. 전송 매체 어느 것도 개별적으로 (15 Mbps를 요구하는) 새로운 스트림 4를 지원할 수 없지만, 새로운 스트림을 분할함으로써, 전송 매체들이 새로운 스트림을 공동으로 지원할 수 있다.
일부 실시예들에서, 패킷 어그리게이션으로 인한 주 성능 제한(CPU 활용)은 수신기 측에서의 패킷들의 재순서화일 수 있다. 제한된 CPU가 주어지면, 이것은 어그리게이팅된 스트림의 최대 사이즈와 하나의 스트림을 어그리게이팅하는 동안 지원될 수 있는 전체 비-어그리게이팅된 트래픽 간의 트레이드-오프(trade-off)를 제공한다. 따라서, 일부 실시예들에서, 가능하게는 비-어그리게이팅된 트래픽이 얼마나 많이 존재하느냐에 따라, 가능하게는 상이한 스트림 사이즈 제한들을 포함하는, 어그리게이팅된 스트림들의 사이즈를 제한하는 것이 바람직할 수 있다. 일 예로서, 어떠한 다른 트래픽도 없다면 30 Mbps까지의 어그리게이팅된 스트림이 지원될 수 있는 반면, 50 Mbps까지의 다른 트래픽이 있으면, 20 Mbps까지의 어그리게이팅된 스트림이 지원될 수 있다. 물론, 이들은 단지 예들이며, 상이한 제한들(또는 제한들 없음)이 요구되는 경우 사용될 수 있다.
추가적으로, 어그리게이팅된 스트림을 수신하는 비용(예를 들어, CPU 비용)이 비-어그리게이팅된 스트림을 수신하는 비용보다 더 높을 수 있기 때문에, 일부 실시예들에서, 어그리게이팅되어야 하는 스트림의 수를 최소화하는 것이 바람직할 수 있다. 예를 들어, 실시예들의 하나의 세트에서, 2개의 이용가능한 전송 매체들이 존재하는 경우 기껏해야 하나의 스트림을 그리고 3개의 이용가능한 전송 매체들이 존재하는 경우 2개의 스트림들을 분할하는 것이 바람직할 수 있다.
다시 말해, 일부 실시예들에서, (2개의 매체들을 갖는) 동일한 디바이스로부터 발신되는 2개의 스트림들이 두 매체 모두에 걸쳐 분할될 상황들이 회피될 수 있다. 이것은 유용성을 제한하지 않을 수 있는데, 즉, 2개의 인터페이스들에 걸쳐 분할된 하나 초과의 스트림을 단일 인터페이스 상에서 진행하는 하나의 스트림을 제외한 모든 스트림들로 전환하는 것이 항상 가능할 수 있다. 동일한 로직은 3개의 가용 매체들을 가지는 디바이스들에 적용될 수 있다.
일부 실시예들에서, (예를 들어, 소스들과 싱크들 사이와 대조되는 바와 같이) 어그리게이션이 하이브리드 디바이스들 사이에서 수행될 수 있다는 점이 주시되어야 한다. 어그리게이팅하기 위한(즉, 스트림을 다수의 인터페이스들에 걸쳐 분할하기 위한) 결정이 소스 하이브리드 디바이스에서 이루어질 수 있다. 일부 실시예들에서, 모든 하이브리드 결정들이 소스 하이브리드 디바이스에서 이루어질 수 있다.
도 11
도 11은 일 실시예에 따른 어그리게이션(재-순서화) 버퍼(1100)를 예시한다. (다른 가능한 통신 인터페이스들 중에서) Wi-Fi 및 PLC의 전송 레이턴시는 상이할 수 있고, 따라서, 심지어 모든 패킷들이 정확하게 전달된다 할지라도 모든 패킷들이 비순차적으로 전달될 수 있는 것이 가능한데, 이는 바람직하지 않을 수 있다.
패킷들의 재-순서화는 재-순서화 버퍼를 요구할 수 있다. 이 버퍼의 사이즈는, 예를 들어, 스트림이 분할되는 인터페이스들 모두의 흐름 레이트와 상대적인 레이턴시, 및 메모리 가용성에 기초하여 구성가능할 수 있다. 재-결합된 2개의 기반 스트림들이 내부적으로 순차적이기 때문에, 실제로 이러한 프로세스가 엄격하게 재순서화 프로세스가 아니라 오히려 정확한 순서 프로세스에서의 재-결합일 수 있다는 점에 주시한다.
재-순서화 버퍼는 상위 계층들에 아직 전달되지 않은 수신된 패킷들에 대한 포인터들을 포함할 수 있다. BaseSequence 변수는 인덱스 0에 대응하는 패킷 시퀀스 번호를 포함할 수 있다. 재-순서화 버퍼는 순환 버퍼로서 구현될 수 있다. 일 실시예에 따라, 패킷이 수신될 때, 후속하는 로직이 실행될 수 있다.
(PacketSequenceNumber < BaseSequence)인 경우, 수신된 패킷은 오래된 비-순차적(out-of-sequence) 패킷(예를 들어, 가능하게는 타임-아웃된 패킷)이다. 패킷은, 요구되는 경우, 구현예에 따라, 드롭(drop)되거나 전달될 수 있다.
대안적으로, (PacketSequenceNumber < BaseSequence + 사이즈)인 경우, 패킷은 버퍼 내에 존재할 수 있다. 패킷은 버퍼 내의 적절한 위치에 저장될 수 있다. 패킷에 대한 포인터는 인덱스 (PacketSequenceNumber - BaseSequence)에 배치될 수 있다. 그 인덱스가 이미 비-NULL(non-NULL)(예를 들어, 패킷 포인터가 이미 그 위치에 존재함)인 경우, 패킷은 (예를 들어, 그것이 복제 패킷일 수 있기 때문에) 폐기될 수 있다. 임의의 순차적(in-sequence) 패킷들이 이후 전달될 수 있는데, 버퍼 인덱스 0이 패킷 포인터를 포함하는 경우, 패킷이 전달될 수 있고, 인덱스는 NULL로 리셋될 수 있다. 순환 버퍼 포인터가 1씩 순방향으로 이동될 수 있고, BaseSequence 변수가 또한 증분될 수 있다. 이는 버퍼 인덱스 0이, 예를 들어, 시퀀스 내의 다음 패킷이 아직 수신되지 않았음을 표시하는 (예를 들어, 패킷에 대한 포인터를 포함하지 않는) NULL일 때까지 반복될 수 있다.
대안적으로, (PacketSequenceNumber >= BaseSequence + 사이즈)인 경우, 패킷은 버퍼의 외부에 존재할 수 있지만 더 새로울 수 있으며; 이는 예를 들어, 버퍼가 너무 작다는 표시일 수 있다. 일부 실시예들에서, 시퀀스에서 홀들이 존재하는지 아닌지의 여부와는 무관하게, 이러한 새로운 시퀀스 번호를 버퍼 내로 가져가기 위해 충분한 패킷들이 전달될 수 있다.
재-순서화 버퍼는 또한 타임-아웃 메커니즘을 포함할 수 있다. 프로그램가능한 타임아웃 이후에, 시퀀스 내에 홀들이 존재한다 할지라도, 패킷들은 상위 계층들로 전달될 수 있다. 일부 실시예들에서, 타임아웃 메커니즘은 각각의 패킷의 수신 타임스탬프의 레코드를 유지하는 것을 포함할 수 있다. 일부 실시예들에서, 타임스탬프가 본질적인 타임-스탬프라기보다는 RX 시간인 것이 바람직할 수 있다는 점에 주시한다. 타임아웃 메커니즘은 버퍼 내의 제1 이용가능한 패킷, 예를 들어, 제1 갭 이후의 패킷의 타임스탬프를 유지하는 것을 더 포함할 수 있다. 제1 이용가능한 패킷의 타임스탬프가 타임아웃되는(즉, 타임아웃 값보다 더 큰) 경우, 그것(및 임의의 다른 타임아웃된 패킷들)이 전달될 수 있다.
패킷이 네트워킹 스택으로 포워딩될 것이기 때문에 인덱스 0에서 패킷이 결코 존재하지 않을 수 있다는 점에 주시한다. 또한, 이 값을 계산하기 위해서는 제1 패킷을 탐색하기 위해 제1 갭을 스텝 스루(step through)하기 때문에, 이것은 비교적 과도한 동작일 수 있다는 점에 주시한다.
초기 시퀀스 번호들에 대해, TCP 및 RTP 모두가 시퀀스 번호 예측 공격들을 방지하기 위해 초기 시퀀스 번호를 랜덤화할 수 있다는 점에 주시해야 한다. 일부 실시예들에서, 하이브리드 레벨에서의 송신기 및 수신기는 이 시퀀스 번호를 제어하지 않을 수 있다. 그러나, 일부 실시예들에서, 스트림 분할 및 어그리게이션은 스트림이 흐르기 시작한 이후에 활성화될 수 있다. 추가로, 어그리게이션은 명시적으로 활성화될 수 있고; 예를 들어, 송신기는 (스트림 식별자를 포함하는) 스트림이 막 분할될 것임을 표시하는 커맨드를 수신기에 송신할 수 있다. 이는 수신기로 하여금 분할이 시작하기 이전에 현재 실행중인 시퀀스 번호를 식별하여, 랜덤화된 초기 시퀀스 번호들에 의해 야기될 수 있는 임의의 잠재적 문제점들을 해소하게 할 수 있다.
패킷 시퀀스 번호들을 활용하는 전술된 순환 버퍼가 많은 실시예들에서 사용되지 않을 수 있다는 점에 주시해야 한다. 예를 들어, 요구되는 경우 임의의 개수의 다른 순환 버퍼 기법들, 또는 다른 어그리게이션 버퍼링 기법들이 사용될 수 있다. 본원의 다른 곳에서 설명된 스위치 마커 기법들의 실시예는 어그리게이션 재-순서화에 대한 하나의 가능한 대안적(또는 보완적) 옵션을 나타낸다.
추가 고려사항들
데이터 구조들
이전에 주시된 바와 같이, 이 개시내용의 엘리먼트들을 구현하는 디바이스는 일부 실시예들에서 하나 이상의 메모리들에 정보를 저장할 수 있다. 실시예들의 하나의 세트에서, 정보는 하나 이상의 데이터 구조들에 저장될 수 있다. 예를 들어, 실시예들의 하나의 세트에서, 활성 스트림들 또는 활성 스트림들의 다양한 특성들(예를 들어 라우팅 정보)을 식별하는 정보가 저장될 수 있는 라우팅 표가 유지될 수 있다. 예를 들어, 이러한 라우팅 표는, 복수의 스트림들 각각에 대해, 스트림 식별자, 스트림의 목적지 어드레스(DA), 스트림의 타입, 우선순위 레벨, 및 (예를 들어, 전송 매체/매체들을 암시적으로 또는 명시적으로 포함하는) 하나 이상의 할당된 인터페이스들을 포함할 수 있다. 일부 실시예들에서, 예를 들어, 다수의 인터페이스들 사이에서 분할되는 스트림들에 대해, 라우팅 표는 또한 다수의 할당된 인터페이스들 중 어느 것이 스트림을 전송하기 위해 현재 사용중인지, 각각의 할당된 인터페이스 상에서 사용될 버스트 사이즈들, 및/또는 현재 사용되는 인터페이스 상에서 전송되는 현재 버스트에 얼마나 많은 패킷들이 남아 있는지를 표시하는 정보를 포함할 수 있다.
추가로, 하나 이상의 목적지 어드레스들 및/또는 스트림들의 타입들 각각에 대한 전송 매체들의 현재 선호되는 순서를 표시하는 표가 유지될 수 있다. 이 표는, 예를 들어, 매체 활용 레이트들, 링크 용량들 등에서의 변경들에 기초하여 규칙적으로 업데이트될 수 있다. 라우팅 표는 또한, 예를 들어, 임의의 라우팅 변경들에 기초하여, (예를 들어, 로드 밸런싱, 장애극복, 분할 스트림들, 스트림 완료의 결과로서, 또는 임의의 다른 이유로) 규칙적으로 업데이트될 수 있다.
버스트 사이즈들
일부 실시예들에서, 큰 버스트가 다수의 인터페이스들의 동시적 사용을 제한할 수 있기 때문에, 버스트들의 사이즈를 제한하는 것이 바람직할 수 있으며, 이는 일부 실시예들에 따라, 스트림 분할/어그리게이션의 목표들에 대한 카운터를 실행할 수 있다는 점에 주시해야 한다.
예를 들어, 1400 바이트의 패킷 사이즈를 가지고 10Mbps로 실행하는 스트림은 892 pps(초당 패킷들)로 변환된다. 255개 패킷들의 버스트는 0.28초로 변환될 것이다. 다시 말해, 이 경우, 매체는 0.28초 동안 사용되는 반면, 다른 매체는 사용되지 않는다.
디바이스 능력 발견
스트림을 분할하기 위한 결정이 이루어질 때마다, 목적지 디바이스의 능력들을 아는 것이 중요할 수 있다. 예를 들어, 목적지 하이브리드 디바이스는 어그리게이션을 지원하지 않는 리거시 디바이스일 수 있다.
디바이스들은 디바이스들의 토폴로지 발견 패킷들의 일부분으로서의 능력들을 통지할 수 있다. 예를 들어, 하나 이상의 제어 패킷들의 일부는 어그리게이션에 대한 지원을 선언하기 위해 할당될 수 있다. 일부 실시예들에서, 디바이스들은 이 정보를 전달하고, 로드-밸런싱 결정들 동안 사용될 네트워크 상의 모든 디바이스들에 대한 이러한 정보의 데이터베이스를 유지할 수 있다.
패킷 손실 최소화 및 복제 패킷 삭제
개시내용의 실시예들은 다수의 전송 매체가 스트림의 전송을 위해 이용가능한 시스템들, 및 이러한 시스템들에 관련된 다양한 기법들에 관련된다. 실시예들 중 다수가 하나의 전송 매체로부터 또다른 전송 매체로의 스트림 흐름들의 스위칭에 관한 것이다. 패킷 손실, 패킷 복제, 및 비순차적 패킷 전달을 비롯해서, 이러한 경로 스위칭들로 인해, 몇몇 패킷 흐름 중단이 가능하다.
상이한 네트워킹 프로토콜들 및 애플리케이션이 이러한 패킷 흐름 중단들에 대해 상이하게 반응하는 반면, 일반적으로, 부작용들이 존재한다. 예를 들어, TCP/IP는 위의 것들 중 임의의 것에 응답하여 스루풋을 스로틀링할 것이고, 일부 비디오 애플리케이션은 시각적 글리치를 디스플레이할 수 있다. 최종-사용자에게 끊김없는 경험을 제공하기 위해 이들 중단들 모두가 최소화되거나 가능한 경우 제거되어야 한다.
하이브리드 시스템들은 2개의 시나리오들: 인터페이스가 장애가 발생하고 인터페이스로부터의 모든 스트림들이 또다른 인터페이스로 스위칭될 때인, 장애극복, 및 매체가 과도-가입되고, 하나 이상의 스트림들이 그로부터 또다른 인터페이스로 스위칭할 때인 로드 밸런싱 하에서 흐름들을 스위칭할 수 있다.
하이브리드 시스템이, 심지어 인터페이스가 여전히 작동(up)하고 일부 패킷들을 전송할 때조차도 인터페이스를 "장애가 발생한" 것으로 간주하는 것이 가능하다는 점에 주시한다. 예를 들어, 일부 인터페이스들에서, 하이브리드 시스템은 자신의 보고된 PHY 레이트가 임계(예를 들어, 5Mbps, 또는 임의의 다른 PHY 레이트) 아래로 떨어지는 경우, 그것을 "장애가 발생한" 것으로 간주할 수 있다.
이용가능할 수 있는 2개의 공통 통신 인터페이스들은 Wi-Fi 및 전력선 네트워크(예를 들어, HomePlugAV)를 포함한다. Wi-Fi 드라이버 및 HPAV 드라이버 모두는 특정 스트림으로부터의 패킷들의 순차적 전달을 보장할 수 있다. 둘 모두는 전송을 위해 패킷들을 버퍼링할 수 있다. 일부 실시예들에 따르면, 외부 애플리케이션들은 어느 패킷들이 HPAV 드라이버로부터가 아니라 Wi-Fi 드라이버로부터 성공적으로 전송되었는지에 대한 정보를 획득할 수 있을 수 있고, 외부 애플리케이션들은 어느 하나의 드라이버의 전송 버퍼로부터 패킷들을 삭제할 수 없을 수 있다. 따라서, 전송 버퍼 내의 패킷들은 매체가 활성인 한(예를 들어, 심지어 매체가 장애가 발생한 것으로 간주되더라도) 계속 전송될 것이다.
인터페이스가 (진짜로) 장애가 발생했을 때, 그것은 그것의 버퍼로부터 더 이상 패킷들을 전송할 수 없을 수 있다. 버퍼 내의 모든 패킷들이 유실될 수 있고, 따라서 하이브리드 시스템이 인터페이스가 장애가 발생했다고 결정하고 새로운 인터페이스 상에서 패킷들을 전송하기 시작할 때까지는, 전송되는 임의의 추가적인 패킷들도 역시 유실될 수 있다. 패킷 손실을 감소시키기 위한 메커니즘은 패킷들이 인터페이스 상에서 전송됨에 따라 패킷들의 실행 창(버퍼)을 절감하고, 스위칭할 때 패킷들을 새로운 인터페이스 상에서 (재)전송하는 것이다. 다시 말해, 경로 스위치가 트리거링될 때마다, 이들 패킷들은 새로운 인터페이스 상에서 전송될 수 있다.
일부 실시예들에 따르면, 이러한 특징은 글로벌하게 또는 스트림 단위로 구현될 수 있다. 예를 들어, 자신에 대한 특징이 구현되는 각각의 스트림은 따라서, 버퍼 사이즈(예를 들어, 저장될 수 있는 패킷들의 수) 및 버퍼 시간 창(예를 들어, 패킷들을 (시간 상으로) 얼마나 오래 유지하는지를 특정함)을 가지는, 고유의 버퍼를 가질 수 있다.
특징을 구현하기 위해, 실시예들의 하나의 세트에 따라, 패킷이 인터페이스 상에서 전송될 때, 그것의 흐름이 먼저 식별될 수 있다. 흐름이 버퍼링을 인에이블시킨 경우, 패킷이 버퍼에 추가될 수 있다. 버퍼는 (예를 들어, 헤드부터 테일까지) 스탭 스루될 수 있고, 패킷들은 패킷들이 시간 창 외부에 있는 경우, 버퍼가 너무 큰 경우, 그리고/또는 패킷들이 성공적으로 전송된 경우 삭제될 수 있다. 따라서, 패킷들이 전송됨에 따라 버퍼가 유지될 수 있다.
흐름이 하나의 매체로부터 또다른 매체로 스위칭될 때, 버퍼는 (예를 들어, 헤드로부터 테일까지) 스탭 스루될 수 있고, 성공적으로 전송된 패킷들이 폐기될 수 있다. 성공적으로 전송된 것으로 공지되지 않은 패킷들은 새로운 인터페이스 상에서 전송될 수 있다.
패킷들이 성공적으로 전송되었는지의 여부를 결정하는 것이 오직 일부 인터페이스들(예를 들어, Wi-Fi 또는 이 정보에 대한 액세스를 제공하는 다른 인터페이스들)로부터 이용가능할 수 있다는 점에 주시해야 한다. 따라서, 일부 실시예들에서, 이 정보는 오직 이러한 인터페이스로부터의 경로 스위칭을 위해 사용될 수 있다.
패킷 손실 최소화를 위해 사용될 전술된 버퍼는 경로 스위칭이 실행될 때마다 새로운 인터페이스 상에서 패킷들을 전송하기 위해 사용될 수 있다. 이러한 버퍼 내의 패킷들의 수는 하이브리드 시스템이 인터페이스가 장애가 발생했다고 검출하는데 얼마나 오래 걸리는지 ― 일부 실시예들에서 수초 걸릴 수 있는 프로세스 ― 에 의해 지시될 수 있다. 따라서, 적어도 일부 실시예들에서, 버퍼 사이즈는 1000개 초과의 패킷들일 수 있다. 임의의 개수의 다른(예를 들어, 더 작거나 더 큰) 버퍼 사이즈들이 일부 실시예들에서 사용될 수 있다.
인터페이스를 통해 (비교적) 순시적으로 1000개 초과의 패킷들을 전송하는 것은 드라이버(이더넷, Wi-Fi, 임베디드 PLC)의 버퍼들이 제기능을 못하게 할 수 있다(overwhelm). 이들 전송들을 스로틀링하기 위한 메커니즘이 따라서 구현될 수 있다. 일부 실시예들에서, 전송은 계속되는 전송을 차단하지 않기 위해 하이브리드 브리지의 외부로부터 스로틀링될 수 있다. 예를 들어, TBF qdisc(Token Bucket Filter queuing discipline)은 이러한 스로틀링 메커니즘을 구현하고, 이에 의해 최대 레이트가 특정될 수 있다.
전술된 전송 버퍼 재-전송 메커니즘은 패킷 손실을 감소시키는 역할을 할 수 있다. 그러나, 패킷들이 이미 오래된 인터페이스에서 오버-디-에어로 송출된 경우, 수신기는 복제 패킷들을 수신할 수 있다. 이에 대한 비교적 용이한(부분적) 해법은 (오리지널 인터페이스 상에서) 성공적으로 전송된 그러한 패킷들을 버퍼로부터 삭제하는 것일 수 있다. 이는 (위에서 주시된 바와 같이) Wi-Fi 인터페이스에 대해 가능할 수 있지만, 그것은 (역시 위에서 주시된 바와 같이) HPAV 인터페이스에 대해 가능하지 않을 수 있다. 심지어 또다른 인터페이스 경로로의 트랜지션을 위해 Wi-Fi 상에서 이 특징을 사용하는 것이라도, 오리지널 (Wi-Fi) 인터페이스의 버퍼 내의 패킷들이 여전히 삭제되지 않을 수 있고, 인터페이스가 진짜로 데드(dead) 상태가 아닌 경우 계속 전송될 수 있기 때문에, 문제를 완전히 해결하지 못할 수 있다.
더욱 완전하지만 간략화된(CPU 비용-방식) 해법은 이러한 특정 복제 시나리오의 몇몇 특징들을 이용할 수 있다. 특히, 하나의 인터페이스 상에서 전송된 모든 패킷들이 순차적으로 수신되고; 일단 하나의 인터페이스로부터 또다른 인터페이스로 스위칭하기 위한 결정이 이루어지면 오리지널 인터페이스 상에서의 모든 추가적인 전송들이 중단되고; (예를 들어, 그것이 복제들의 원인이기 때문에) 복제 버퍼 내에만 복제들이 존재할 수 있다는 사실에 대한 장점이 취해질 수 있다. 물론, 이 해법은 또한 일부 실시예들에서 상이한 조건들을 포함하는 다른 시나리오들에서 유리하게 사용될 수 있다.
방법의 특정한 장점은 알고리즘이 패킷들 자체에 관한 어떠한 가정도 하지 않을 수 있다는 점일 수 있다. 다시 말해, 일부 실시예들에서, 데이터 패킷들에 대한 어떠한 검사도 이루어지지 않는다(구체적으로, 일부 실시예들에서, 어떠한 시퀀스 번호들도 패킷들 내에 포함되는 것으로 가정되지 않을 수 있다).
방법을 구현하기 위한 송신기(데이터 소스) 측 기능성은 인덱스 마커(MI) 패킷을 N개 패킷들마다 데이터 스트림 내로 삽입하는 것을 포함할 수 있다. 인덱스 마커는 각각의 후속하는 인덱스 마커 패킷을 통해 1씩 증분될 수 있는 인덱스 번호를 포함할 수 있다. 인덱스 마커 패킷(들)은 복제 버퍼 앞에 삽입될 수 있다. 따라서, 이들 인덱스 마커 패킷들은 복제 버퍼의 일부분일 수 있다.
경로 스위칭을 실행할 때, 복제 버퍼가 재-전송될 수 있다. 버퍼 마커 패킷들(MB)은 새로운 인터페이스 상에서 각각 복제 버퍼의 처음 및/또는 마지막 ― MB,B 및 MB,E ― 에서 삽입될 수 있다. MB,B 에는, 복제 버퍼 외부의 마지막 인덱스 마커(MI)의 인덱스뿐만 아니라, 그 인덱스 마커 패킷 이후에 (성공적으로 전송되었기 때문이든 또는 수명-만료(age-out)되었거나 버퍼 사이즈로 인해 삭제되었기 때문이든) 버퍼로부터 삭제된 그 스트림으로부터의 패킷들의 수가 포함될 수 있다. 이 데이터 쌍은 (IT, LT)로서 지칭될 수 있다.
방법을 구현하기 위한 수신기(데이터 싱크) 측 기능성은 인덱스 마커(MI) 패킷을 계속 추적하는 것을 포함할 수 있다. 예를 들어, 수신된 마지막 인덱스 및 그 인덱스 마커 이후에 수신된 그 스트림의 패킷들의 수가 저장될 수 있다. 이러한 데이터 쌍은 (IR, LR)으로서 지칭될 수 있다.
버퍼의 시작에서 버퍼 마커 패킷(MB ,B)을 수신할 때, 교번하는 인터페이스들로부터 오는 이 스트림에 속하는 임의의 패킷이 폐기될 수 있다. 다양한 실시예들에 따르면, 이러한 차단은 시간 간격(예를 들어, 프로그램가능한 시간 간격) 이후에 제거될 수 있거나, 또는 다음 MB ,B가 (예를 들어, 새로운 인터페이스 상에서) 관측될 때까지 유지될 수 있다.
또한, MB,B로부터 획득된 데이터 쌍(IT, LT)이 조사되어 (IR, LR)과 비교될 수 있다. IT == IR 및 LT >= LR인 경우, 어떠한 패킷들도 드롭되지 않을 수 있다 ― 새로운 인터페이스 상에 어떠한 복제 패킷들도 존재하지 않을 수 있다. IT == IR 및 LT < LR인 경우, 제1 LR - LT개 패킷들은, 이들이 오리지널 인터페이스 상에서 이미 수신되었을 수 있음에 따라, 버퍼로부터 드롭될 수 있다. IT < IR 인 경우, 복제 버퍼 패킷들은 인덱스 IR을 가지는 인덱스 마커 패킷이 수신될 때까지 드롭될 수 있다. 이때, 추가적인 LR개 패킷들이 드롭될 수 있다. (IT > IR)인 경우, 어떠한 패킷들도 드롭되지 않을 수 있고; 이는 복제 버퍼가 장애극복으로 인한 패킷 손실을 다룰 만큼 충분히 크지 않았으며, 어떠한 복제 패킷들도 수신되지 않았음을 표시할 수 있다.
위의 알고리즘은 2개의 복제 데이터 스트림들: 복제 버퍼 패킷들의 수신이 시작된 이후 오래된 인터페이스 상에서 도달하는 패킷들, 및 장애극복 이후에 그러나 복제 버퍼 패킷들의 수신 이전에 오래된 인터페이스 상에서 도달된 패킷들을 처리할 수 있다.
일부 실시예들에 따르면, (위에서 주시된 바와 같은) 복제 버퍼 인에이블/디스에이블 특징은 또한 이 특징을 제어하기 위해 사용될 수 있다. 다시 말해, 일부 실시예들에서, 인덱스 마커들(MI)은 오직 복제 버퍼가 흐름을 위해 인에이블되는 경우에만 삽입될 수 있다. 추가적으로, 스트림 파라미터 당 인덱스 마커 간격은 일부 실시예들에서 구성가능할 수 있다. 예를 들어, 경로 특성화 정보에 기초하여 인덱스 마커 간격을 동적으로 조정하는 것이 요구될 수도 있다.
전술된 복제 패킷 최소화 프로시져는 인덱스 마커 패킷(MI)이 N개 패킷들마다 스트림 내로 삽입될 수 있음을 특정한다. 위 알고리즘에 기초하여, 값 N은 고정될 필요가 없을 수 있으며, 때때로 또는 매 간격마다, 예를 들어, 전송되고 수신되는 패킷들에 대한 정확한 카운트가 유지되는 한, 변경될 수 있다. 값 N은 또한 복제 버퍼의 사이즈와는 독립적일 수 있다. 일부 실시예들에서, 예를 들어, N은 매우 클 수 있다. 그러나, 패킷 에러 레이트(PER)와 수신된 복제 패킷들의 수인 N 사이의 연관성이 존재할 수 있다.
PER은 패킷이 드롭되도록 하는데, 이것은 패킷이 전송될 때 카운트될 수 있지만 수신될 때는 카운트되지 않을 수 있음을 의미한다. 각각의 모든 이러한 유실된 패킷은 복제 패킷이 수신되는 것을 초래할 수 있다. 예를 들어, 마지막 MI 다음에 10개의 패킷들이 전송되는 경우, LT = 10이다. 그러나, PER로 인해 오직 9개의 패킷들만이 수신되는 경우, LR = 9이다. 이 경우, 수신기에서 어떠한 패킷들도 삭제되지 않을 것이며, 이는 복제 패킷이 수신되는 것을 초래할 수 있다. 복제 패킷의 기회는 따라서 PER * N에 비례할 수 있다. N을 증가시키는 것은 따라서 복제본들을 수신하는 기회를 증가시킬 수 있다.
위에서 주시된 바와 같이, 전술된 패킷 손실 최소화 기법은, 그렇지 않으면 필요하지 않을 수 있는 추가 정보를 저장하는 것을 요구할 수 있다. 일부 실시예들에 따르면, 전송 측에 저장된 추가 정보는 마지막 인덱스 마커 패킷(MI) 인덱스 및 마지막 인덱스 마커 패킷 이후의 패킷들의 수를 포함할 수 있다.
수신 측에 저장된 추가 정보는 마지막 인덱스 마커 패킷 인덱스, 마지막 인덱스 마커 패킷 이후의 패킷들의 수, 및 스트림 인터페이스(예를 들어, 스트림이 수신되는 인터페이스)를 포함할 수 있다. 일부 실시예들에서, 스트림 인터페이스 상에서 수신되지 않는 모든 패킷들이 드롭되어야 함을 표시하는, 차단-모드 플래그가 또한 저장될 수 있다. 추가로, 인덱스 마커 패킷이 현재 탐색되고 있는지의 여부를 표시하는 정보(및 그 인덱스 마커 패킷의 인덱스)가 저장될 수 있고, 그리고/또는 (예를 들어, 전술된 바와 같이, 복제본들인 것으로 결정된 패킷들의 수에 기초하여) 드롭할 패킷들의 수를 표시하는 카운터가 저장될 수 있다.
당업자에 의해 인식될 바와 같이, 상이한 구현예들이 패킷 손실 최소화 알고리즘에 관련된 상이한 저장된 정보를 포함할 수 있다.
서비스 품질
이 개시내용의 실시예들은 다수의 전송 매체들을 사용하여 통신하도록 구성되는 디바이스에 의해 사용될 수 있는 다양한 기법들에 관련된다. 이들 기법들은 일부 실시예들에서, 요구되는 경우, 개선된 서비스 품질(QoS)을 위한 컨텐츠 분류 및 차별화와는 무관하게 구현될 수 있다. 그러나, 서비스 제공자들은 예를 들어, 소비자들이 자신의 텔레비젼 상의 비디오가 열악한 품질이거나 자신의 음성 전송들이 끊어지는 것으로 당황하지 않도록 보장하기 위해 ― 소비자들은 서비스 품질을 보증하기를 원할 것임 ― , 시간-임계적 데이터(예를 들어, Netflix 비디오)와 보류될 수 있는 데이터(예를 들어, 파일 다운로드) 사이를 차별화할 수 있기를 원할 수 있다. 소매 소비자들은 간섭 또는 지연들이 없이 인터넷 비디오(예를 들어, Hulu 또는 Netflix)를 스트리밍할 수 있기를 동일하게 원할 수 있다. 심지어 무료 컨텐츠의 소비자들도 서비스 품질 보증/차별화를 기대할 수 있다.
비-하이브리드 네트워크들에서, 데이터가 전송되는 단일 매체만이 존재한다. 하이브리드 네트워크들에서, 데이터를 전송하기 위해 사용될 수 있는 다수의 매체들이 존재할 수 있고, 매체들 각각은 상이하면서, 동적으로 변경하는 특성들을 가진다. 따라서, QoS 문제는 또다른 디멘젼을 획득한다.
이 섹션은 실시예들의 하나의 세트에 따라 하이브리드 네트워킹 시스템들에 의해 전달될 수 있는 QoS의 상세항목들을 설명한다. 실시예들의 하나의 세트에 따르면, (유료 및 무료 비디오 및 다른 것들을 포함하는) 식별된 서비스들의 타입들, 및 시스템들의 동작들을 포함하는) 하이브리드 시스템의 요구되는 동작, 및 이 기능성을 전달하기 위한 구현 아키텍쳐 및 알고리즘들의 설명들이 포함된다.
2가지 타입들의 QoS가 존재한다는 점에 주시한다. 우선순위화된 QoS는 우선순위 레벨을 가지는 패킷들의 태그처리(tag)에 관련된다. 패킷들은 이 우선순위에 기초하여 처리될 수 있다(예를 들어, 더 높은 우선순위는 더 낮은 우선수위와는 상이하게 처리될 수 있다). 파라미터화된 QoS는 매체에 의한 대역폭의 예약 및 보증에 관련된다. 대역폭 예약을 가지는 스트림들에 속하는 패킷들에는 가장 높은 우선순위의(보장된) 전달이 주어진다.
일부 매체들(예를 들어, MoCA)이 파라미터화된 QoS의 타입을 구현하지만, 그런 타입의 QoS는 (대역폭을 예약하기 위해) 종단-대-종단 대역폭 예약 및 애플리케이션 레벨 참여를 요구할 수 있기 때문에, 실제로는 사용되지 않을 수 있다. 이 섹션은 따라서 우선순위화된 QoS에 초점을 둔다.
QoS 관련 동작은 하이브리드 네트워크의 다수의 양상들에서 적합할 수 있다. 이들 양상들 중 일부는 상이한 타입들의 서비스들(클래스들)로의 데이터의 분류, 분류에 기초한 데이터의 태그처리, 특정 인터페이스들에 대한 분류된 데이터의 경로 선택 및 할당, 흐름의 장애극복 및 재-할당, 과도-혼잡의 경우들에서 트래픽의 로드 밸런싱, 및 상이한 데이터 스트림들을 모두 지원하기에는 불충분한 대역폭이 존재할 때 그 상이한 데이터 스트림들의 스트림 우선순위화를 포함할 수 있다.
데이터의 분류는 데이터 패킷들을 스트림들로 분리하는 것, 및 스트림을 특정 타입의 서비스로서 분류하는 것을 수반할 수 있다. 실시예들의 하나의 세트에 따라 분류될 수 있는 일부 가능한 타입들의 서비스들은 인터넷 스트리밍 비디오, 인터넷 스트리밍 오디오, 인터넷 실시간 오디오/비디오, 및/또는 다른 타입들의 서비스들을 포함한다.
분류가 컨테이너 타입보다는 패킷들의 컨텐츠를 조사하는 것을 포함할 수 있다는 점에 주시해야 한다. 따라서, 컨텐츠 타입 분류는 IPv4 또는 IPv6 트래픽 중 어느 하나와 함께 가능할 수 있다.
또한, 일부 타입들의 트래픽이 자신의 클래스에 따라 이미 태그처리되었을 수 있기 때문에, 그 일부 타입들의 트래픽은 분류되지 않을 수 있다는 점에 주시해야 한다. 이러한 타입들의 트래픽의 예들은 IPTV, VoD(캐리어 제공 주문형 비디오), 및 VoIP를 포함한다.
일단 데이터가 특정 타입의 트래픽으로서 분류되면, 데이터는 여전히 태그처리될 필요가 있을 수 있다. 일부 실시예들에 따라, 일부 시스템 엘리먼트들은 상이한 레벨들의 태그 입도를 사용하도록 구성될 수 있다. 예를 들어, 하이브리드 시스템은 잠재적으로 네트워크 드라이버들보다 더 높은 분류 입도를 사용할 수 있을 수 있다. 예를 들어, 일 실시예에서, "비디오"는 단지 하나의 태그를 가질 수 있지만, 하이브리드 시스템은 IPTV, VoD와 OTT 타입들의 비디오 사이에서 차별화하도록 구성될 수 있다.
스트림들이 시작할 때, 스트림들은 규칙적으로 업데이트되는 디폴트 인터페이스들에 할당될 수 있다. 디폴트 인터페이스를 선택하기 위한 알고리즘은 각각의 이용가능한 매체의 링크 용량(LC)을 초기에 고려하는 것을 포함할 수 있다. 높은 가용성 시나리오에 있어서, 새로운 트래픽을 지원하기 위한 충분한 링크 용량(예를 들어, 25Mbps와 같은 미리-구성된 또는 동적 임계, 또는 임의의 다른 임계보다 더 큰 링크 용량)이 다수의 매체들 상에서 이용가능할 수 있다. 이 경우, 매체들(예를 들어, LC 임계보다 더 큰 LC를 가지는 매체들을 단지 고려하면)은 프로그램가능한 순서, 예를 들어, "P52"에 기초하여 선택될 수 있다. 낮은 가용성 시나리오에서, 이용가능한 높은 링크 용량 매체가 존재하지 않을 수 있다. 이 경우, 가장 높은 링크 용량을 가지는 매체가 단순히 선택될 수 있다.
매체 선호도의 프로그램가능한 순서가 트래픽의 클래스마다 구성가능할 수 있다는 점에 주시해야 한다. 예를 들어, "P52"의 위의 예는 IPTV에 적용할 수 있으며, IPTV 스트림들이 바람직하게는 먼저 PLC에, 이어서 Wi-Fi 5GHz에, 그리고 이어서 Wi-Fi 2.4GHz에 할당될 수 있음을 표시할 수 있다.
일부 실시예들에서, "높은 이용가능성"으로 간주될 수 있는 것에 대한 링크 용량 임계는 또한 트래픽의 클래스마다 구성가능한 파라미터일 수 있다. 물론, 스트림들이 시작할 때, 스트림들이 얼마나 많은 대역폭을 요구할지가 알려지지 않을 수 있다. 이 임계는 동작이 트래픽의 클래스마다 맞춤화(customized)되도록 허용한다. 예를 들어, 실시예들의 하나의 세트에 따르면, 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]이다. 이것은 더 높은 우선순위의 트래픽이 더 낮은 우선순위의 트래픽을 밖으로 밀어내는 가능성을 허용할 수 있다.
일부 실시예들에서, 지원되는 우선순위들의 수는 기반 매체에 의해 지시될 수 있는데, 예를 들어, 실시예들의 하나의 세트에서, 그 수는 Wi-Fi 및 PLC 모두에 대해 4일 수 있다. 따라서, 이 경우, 2가지 타입들의 스트림 사이의 더 높은 입도가 (예를 들어, IPTV 및 VoD 사이에서 차별화할 수 있는) 분류로 인해 존재할 수 있더라도, 이용가능한 링크 용량의 관점에서, 이들은 동일할 수 있다. 지원되는 우선순위들의 다른 수들 역시 가능하다.
하나의 매체가 장애가 발생할 때, 스트림들은 다른 이용가능한 매체들에 재-할당된다. 실시예들의 하나의 세트에 따라, 장애가 발생한 인터페이스 상의 각각의 스트림에 대해, 스트림이 대안적인 인터페이스로 스위칭될 수 있는지의 여부가 결정될 수 있다. 이 섹션에서 초기에 기술된 경로 선택 알고리즘은 대안적인 인터페이스를 발견하기 위해 사용될 수 있는데, 즉, 충분한 대역폭을 가지는 다수의 매체들이 존재하는 경우, 스트림의 그 우선순위 클래스에 대한 매체 우선순위 구성에 기초하여 그 매체들 사이에서 선택할 수 있다. 스트림-특정적 링크 용량이 또한 사용될 수 있다. 충분한 용량이 존재하지 않는 경우, 스트림 우선순위화 방법이 사용될 수 있다.
매체가 과도-혼잡될 때(매체 활용이 임계를 넘어설 때), 일부 흐름들은 혼잡을 완화하기 위해 다른 매체들로 재-할당될 필요가 있을 수 있다. 일부 실시예들에 따르면, (실시예들의 하나의 세트에 따르면, IPTV/VoD/OTT/VoIP와 같은) 높은 우선순위 흐름들은, 예를 들어, 글리치들을 회피하기 위해 가능한 경우 스위칭되지 않아야 한다. 다시 말해, 더 낮은 우선순위 흐름들이 스위칭을 위한 제1 후보들이어야 한다.
실시예들의 하나의 세트에 따르면, 로드 밸런싱을 위해, 과도-혼잡한 매체 상에서 더 낮은 우선순위 레벨들의 스트림들로부터 시작하고 더 높은 우선순위 레벨들의 스트림들로 이동하여, 후속하는 단계들이 취해질 수 있다. 가장 높은 매체 활용을 가지는 다음 스트림이 선택될 수 있다. 스트림이 대안적인 인터페이스로 스위칭되어야 하는지의 여부가 결정될 수 있다. 이는 이 섹션에서 초기에 설명된 경로 선택 알고리즘을 사용하는 것을 포함할 수 있는데, 즉, 충분한 대역폭을 가지는 다수의 매체들이 존재한 경우, 스트림의 그 우선순위 클래스에 대한 매체 우선순위 구성에 기초하여 매체들 사이에서 선택할 수 있다. 스트림-특정적 링크 용량이 또한 사용될 수 있다. 스트림이 스위칭될 수 없는 경우, 다음 스트림이 선택될 수 있다. 가장 낮은 우선순위 레벨의 모든 스트림들이 스위칭될 수 없는 경우, 다음 가장 높은 우선순위 레벨의 가장 높은 매체 활용을 가지는 스트림이 선택될 수 있다. 임의의 스트림이 스위칭되기에 충분한 링크 용량이 존재하지 않는 경우, 예를 들어, 다른 매체들이 또한 과도-혼잡되는 경우, 스트림 우선순위화 방법이 사용될 수 있다.
모든 매체들이 과도-혼잡되고 로드-밸런싱이 수행될 수 없을 때, 매체들 상의 모든 스트림들의 품질이 저하될 수 있다. 2가지 가능한 과도-혼잡 시나리오들이 존재할 수 있는데, 즉, 과도-혼잡을 야기하는 더 높은 그리고 더 낮은 우선순위 스트림들의 혼합이 존재할 수 있거나, 또는 동일한 우선순위를 가지는 스트림들의세트가 과도-혼잡을 야기할 수 있다.
어느 시나리오가 발생하는지에 따라, 다양한 구성가능한 동작들이 가능하다. 혼합된 우선순위 스트림들에 대해, 더 낮은 우선순위 스트림들이 드롭할 수 있다. 필요한/가능한 경우, 우선순위화의 더 미세한 입도가 사용될 수 있다. 예를 들어, 가능한 경우, 상이한 타입들의 비디오 스트림들(예를 들어, IPTV 대 VoD 대 OTT 등) 사이의 우선순위에서의 변경들이 사용될 수 있다. 교번적인 옵션은 TCP 스트림 스루풋을 스로틀링하는 것일 수 있다. 그러나, 비디오 TCP 스트림들(예를 들어, OTT 또는 VoD 스트림들)의 특성화는 이러한 스트림들의 스루풋 대 시간 특성들을 이해하기에 바람직할 수 있다. 예를 들어, 일부 실시예들에서, 비디오 TCP 스트림들을 스로틀링하지 않는 것이 바람직할 수 있다.
동일한 우선순위 스트림들에 대해, 다양한 옵션들이 존재한다. 하나의 가능성은 자신의 비트-레이트에 대해 대부분의 자원들을 소모하는 흐름을 드롭하는 것이다. 일부 실시예들에서, 흐름 우선순위는 목적지 어드레스마다 구성될 수 있는데, 예를 들어, 거실 TV에 대한 트래픽은 침실 TV에 대한 트래픽보다 더 높은 우선순위를 가질 수 있다. TCP 스트림 스루풋을 한정(cap)하는 것은 옵션일 수 있다. 또다른 가능성은 가장 신생의 흐름을 드롭시키는 것이다. 그러나, 일부 실시예들에서, 고속 채널-스위칭은, 예를 들어, 사용자가 하나의 IPTV 채널로부터 또다른 것으로 스위칭하는 경우, 과도가입의 한 가지 가능한 원인일 수 있다. 두 스트림들 모두는 ("블랙-스크린"이 나타나지 않도록) 스위칭 동안 동시에 실행할 수 있고, 최종-디바이스는 디스플레이할 정확한(예를 들어, 가장 신생의) 스트림을 선택할 수 있다. 그러나, 자원 경쟁의 경우, 새로운 스트림은 더 오래된 스트림보다 우선적으로 자원들을 수령해야 한다. 따라서, 동일한 최종-디바이스로 가는 다수의 흐름들이 존재하는 경우, 가장 오래된 흐름이 드롭될 수 있다.
실시예들의 하나의 세트에 따르면, 요구되는 경우 패킷 어그리게이션에 대해 추가적인 QoS-특정적 제한이 놓일 수 있다. 예를 들어, 가능한 경우 높은 우선순위 스트림들보다는 더 낮은 우선순위 스트림들이 분할/어그리게이팅될 수 있다. 추가로, 구성가능한 파라미터가 일부 트래픽 타입들이 결코 어그리게이팅되지 않을 것임을 특정하도록 허용하기 위해 제공될 수 있다.
일부 실시예들에서, (예를 들어, 글리칭에 대한 잠재성으로 인해) VoIP 스트림들을 결코 분할/어그리게이팅하지 않는 것이 바람직할 수 있다는 점에 주시한다. 그러나, 많은 실시예들에서, 이러한 스트림들은 매우 작은 대역폭을 이용할 수 있고, 따라서, 일반적으로 분할/어그리게이션을 위한 선호되는 후보들이 아닐 수 있다.
위에서 주시된 바와 같이, QoS 고려사항들을 포함하는 경로 특성화는 목적지 당 향상된 링크 용량 및 우선순위 레벨을 활용할 수 있다. 일부 실시예들에 따르면, 구현 레벨에서, 이것은 우선순위 레벨 당 매체 활용으로 변환될 수 있는데, 왜냐하면 우선순위 레벨 당 매체 활용이 원(raw) 링크 용량으로부터 이용가능한 링크 용량을 결정하기 위해 사용될 수 있기 때문이다.
채널 액세스가 다수의 노드들의 상호작용들, 및 다수의 노드들이 송신해야 할 트래픽의 우선순위에 의존할 수 있다는 점에 주시해야 한다. PLC에 대해, 이러한 액세스는 충분히 조정될 수 있고, 엄격한 우선순위를 가진다. Wi-Fi에 대해, 이는 통계적 액세스일 수 있는데, 여기서 더 높은 우선순위 트래픽은 채널을 액세스할 더 높은 기회를 가진다. 노드 내의 액세스는, 전송 인터페이스가 무엇이든 간에, 여전히 엄격한 우선순위에 의해 이루어질 수 있다(예를 들어, 노드가 전송할 다수의 클래스들의 트래픽을 가질 때, 노드는 엄격한 우선순위에 따라 그렇게 수행할 수 있다).
일부 실시예들에 따라, 3개의 서비스 품질 레벨들이 지원될 수 있다. 이들은 높은 우선순위(예를 들어, 신속처리된 포워딩), 중간 우선순위, 및 정상 우선순위를 포함할 수 있다. 예를 들어, 실시예들의 하나의 세트에서, 비디오들, 보이스 오버 IP(VoIP), 또는 최소의 패킷 손실 및 낮은 레이턴시를 가지고 전달될 필요가 있는 임의의 다른 주문형 스트림에 높은 우선순위가 할당될 수 있다. 중간 우선순위는 임의의 다른 더 높은 우선순위 트래픽에 할당될 수 있는 반면, 정상 우선순위(베스트 에포트)는 임의의 다른 트래픽 타입들에 할당될 수 있다.
일부 실시예들에 따라, 하이브리드 제어 패킷들은 다양한 하이브리드 제어 기능들을 위해 사용될 수 있다. 이들은 적어도 일부 실시예들에서, 시스템의 정확한 동작(토폴로지 발견, 경로 특성화 등)을 위해 극도로 중요할 수 있다. 따라서, 제어 패킷들이 네트워크 혼잡으로 인해 자신의 목적지에 도달하지 않은 경우, 하이브리드 기능성이 손상될 수 있다. 따라서, 일부 실시예들에 따라, 하이브리드 제어 패킷들은 통상적으로 이용가능한 가장 높은 우선순위를 가질 수 있다.
이에 대한 예외는 마커 패킷들(예를 들어, 버퍼-시작/버퍼-종료, 스트림-시작/스트림-종료, 및/또는 인덱스 마커 패킷들)일 수 있다. 실시예들의 하나의 세트에 따르면, 마커 패킷들은, 마커 패킷들을 그들의 흐름에 맞는 순서로 유지하기 위해, 마커 패킷들이 첨부되는 흐름을 모방할 수 있다. 모방은 동일한 우선순위화, 목적지 어드레스 및/또는 다른 특성들을 포함할 수 있다.
양방향 데이터
일부 실시예들에서, 특정 TCP 흐름의 모든 트래픽을 단일 인터페이스 상에서 흐르도록 강제하는 특징이 구현될 수 있다는 점에 주시해야 한다. 이는 데이터 및 ACK 스트림들이 상이한 인터페이스들 상에 존재하는 경우 레이턴시 차이가 흐름을 스로틀링하기 위해 TCP를 트리거링할 수 있다는 염려에서 이루어질 수 있다.
일부 실시예들에서, 본원에 설명된 경로 선택 방식은 각각의 모든 디바이스가 각각이 모든 다른 디바이스와는 독립적으로 경로 선택 및 (장애극복 또는 로드-밸런싱으로 인한) 스위칭에 대한 결정을 수행한다고 가정할 수 있다. 특히, 각각의 모든 디바이스는 디바이스 자체로부터 발신되거나 디바이스를 통해 브리징되는 스트림들(예를 들어, 디바이스가 스트림의 경로의 다음 부분에 대해 발신하는 스트림들)에 대해 이러한 결정들을 수행할 수 있다. 2개의 디바이스들 사이에 다수의 데이터 스트림들이 어느 한 방향으로 존재하는 경우, 각각의 스트림은, 다른 스트림들과는 독립적으로, 매체에 할당되고, 필요한 경우 스위칭될 수 있다.
그러나, IP/TCP와 같은 일부 높은 레벨 프로토콜들에 대해, 상이한 방향들의 다수의 스트림들은 실제로 서로 기능적으로 연관된다. 예를 들어, IP/TCP의 경우, TCP 데이터는 한 방향으로 흐를 수 있는 반면, 이 데이터에 대응하는 TCP ACK들은 다른 방향으로 흐른다. 많은 네트워킹 프로토콜들은, 예를 들어, 왕복 시간을 감소시킴으로써, 이러한 종속 양방향 트래픽의 성능을 최적화하도록 설계될 수 있다. 일부 실시예들에 따라, 기반 매체들에 의한 이러한 최적화는 모든 종속 스트림들이 동일한 매체를 사용하는 경우에만 수행될 수 있다. 따라서, 일부 실시예들에서, IP/TCP 스트림들(및/또는 연관된 양방향 트래픽을 가지는 다른 스트림들)에 대해, 이러한 스트림들이 식별될 수 있고, 모든 종속적 스트림들에는 동일한 매체의 사용이 보장될 수 있다.
이를 달성하기 위한 한 가지 가능한 메커니즘은 전송 디바이스가, 스트림이 "마스터" 스트림과 동일한 전송 매체를 활용해야 하는 연관된 "슬레이브" 스트림을 가질 수 있음을 수신 디바이스에 명시적으로 통지하는 것을 포함할 수 있다. 전송 디바이스는 하나 이상의 제어 패킷들을 통해 또는 또다른 수단을 통해 수신 디바이스에 통지할 수 있다.
이를 달성하기 위한 또다른 가능한 메커니즘은 수신 디바이스가 이러한 스트림들을 검출하고 식별하는 것을 포함할 수 있다. 예를 들어, 수신 디바이스는 스트림의 제1 수신된 패킷의 조사에 기초하여 스트림들을 식별할 수 있다. 조사가 패킷이 반대 방향의 연관된 스트림이 생성될 수 있는 타입임을 표시하는 경우, 수신 디바이스는 수신 디바이스가 그 스트림에 대한 어떠한 경로 선택 또는 로드-밸런싱 결정들도 수행하지 않아야 함을 표시하는 정보를 저장할 수 있다. 수신 디바이스는 또한, 전송 디바이스가 스트림의 속성을 수신 디바이스에 명시적으로 통지하는 전술된 메커니즘에서 스트림이 "슬레이브" 스트림(예를 들어, 이에 대해 어떠한 경로 선택 또는 로드-밸런싱 결정들도 로컬로 이루어지지 않아야 함)임을 표시하는 정보를 저장할 수 있다는 점에 주시해야 한다.
따라서, 실시예들의 하나의 세트에서, 제1 스트림의 제1 복수의 패킷들이 제1 전송 매체 상에서 제2 디바이스로부터 수신될 수 있다. 제2 스트림이 제1 스트림과 연관되어 생성될 수 있다고 결정될 수 있으며, 여기서 제2 스트림은 제2 디바이스로의 전송을 위한 것이다. 일부 실시예들에서, 제2 스트림이 제1 스트림과 연관되어 생성될 수 있다는 표시는 제2 디바이스로부터 수신될 수 있다. 이러한 경우, 제2 스트림이 제1 스트림과 연관되어 생성될 수 있다는 결정은 제2 스트림이 제1 스트림과 연관되어 생성될 수 있다는 표시를 수신하는 것에 기초할 수 있다. 대안적으로, 제1 디바이스는 제2 스트림이, 예를 들어, 패킷 타입을 결정하기 위해 제1 스트림의 하나 이상의 패킷들을 조사함으로써, 제2 디바이스로부터의 임의의 표시와는 독립적으로, 제1 스트림과 연관되어 생성될 수 있다고 결정할 수 있다.
제1 스트림이 제1 전송 매체에 할당되고 제2 스트림이 제1 스트림과 연관됨을 표시하는 정보가 저장될 수 있다. 제2 스트림의 제2 복수의 패킷들은 제1 전송 매체 상에서 제2 디바이스에 전송될 수 있는데, 이는 제1 스트림이 제1 전송 매체에 할당되고 제2 스트림이 제1 스트림과 연관됨을 표시하는 정보에 기초할 수 있다.
일부 실시예들에서, 제2 스트림의 제2 복수의 패킷들은 제1 스트림의 제1 복수의 패킷들을 수신하는 것에 응답하여 생성될 수 있다. 예를 들어, 실시예들의 하나의 세트에서, 제1 복수의 패킷들은 TCP 데이터 패킷들을 포함할 수 있는 반면, 제2 복수의 패킷들은 TCP 데이터 패킷들에 응답하여 생성된 TCP ACK 패킷들을 포함할 수 있다.
연관된 역-방향 스트림들을 가지는 스트림들이 스트림 분할 및 어그리게이션에 대해 추가적인 이슈들을 제시할 수 있다는 점에 주시해야 한다. 다양한 실시예들에 따르면, 이 경우, 이러한 스트림들이 스트림 분할로부터 면제되거나, 또는 (예를 들어, 가능한 경우) "슬레이브" 스트림을 야기하는 프로토콜 특징(예를 들어, TCP ACK 특징)이 디스에이블될 수 있다.
자기- 스로틀링
일부 실시예들에 따라 전술된 바와 같이, 일부 디바이스들은 전송 인터페이스 상에서 패킷들을 버퍼링함으로써 장애극복 시에 유실된 패킷들을 제거하는 것을 보조하기 위한 메커니즘을 구현할 수 있다. 이러한 버퍼는 이후 장애극복의 경우 새로운 인터페이스 상에서 전송될 수 있다. 유사하게, 수신 측 상에서, 패킷들은 패킷들이 순차적 전달을 보장하기 위해 새로운 인터페이스 상에서 검출될 때 버퍼링될 수 있다. 후자의 경우, 일단 모든 패킷들이 수신되었음이 검출되면, 버퍼링된 패킷들은 모두 프로토콜 스택으로 상향 포워딩될 수 있다. 어느 경우든, 많은 수의 패킷들이 짧은 시간량 내에 전송될 수 있다. 일부 실시예들에서, 이것은 메모리 소진으로 인한 패킷 손실을 야기할 잠재성을 가진다.
위에서 간략히 언급된 하나의 메커니즘은, 패킷들이 패킷들의 목적지로 포워딩되는 레이트를 제한하기 위해 (TBF와 같은) 공지된 스로틀링 메커니즘을 사용하는 것을 포함할 수 있다. 그러나, 이들 범용 메커니즘은 복잡할 수 있는데, 예를 들어, 범용 메커니즘들은 패킷들이 패킷들의 목적지로 포워딩되는 레이트를 규제하는 것을 보조하기 위해 추가 타이머들에 의존할 수 있다.
더 단순한 메커니즘은 자기-스로틀링을 포함할 수 있다. 특정 스트림의 패킷들이 이러한 이벤트 이후에 계속 전송되고 수신될 수 있으므로, 패킷들의 목적지로의 패킷들의 포워딩을 위한 타이머들로서 이러한 전송 또는 수신을 사용하는 것이 가능할 수 있다. 예를 들어, 실시예들의 하나의 세트에서, 버퍼의 테일에 새로운 패킷들이 배치되는 반면 프로그램가능한 개수의 더 오래된 패킷들이 헤드로부터 삭제되고 프로세싱(예를 들어, 패킷들의 목적지로 포워딩)될 수 있는 FIFO 버퍼가 구현될 수 있다. 버퍼는 결국 소진될 수 있고, 그 시점에서 자기-스로틀링 단계(phase)가 완료될 수 있다. 자기-스로틀링 FIFO 버퍼는, 요구될 때, 다양한 실시예들에 따라, 송신기 및/또는 수신기 측 중 어느 하나 또는 둘 모두에서 구현될 수 있다.
위의 실시예들이 상당히 상세하게 설명되었지만, 일단 위의 개시내용이 완전히 인지되면 다수의 변경들 및 수정들이 당업자에게 명백해질 것이다. 후속하는 청구항들이 모든 이러한 변경들 및 수정들을 포함하도록 해석되어야 한다는 점이 의도된다.

Claims (30)

  1. 제 1 디바이스가 제 1 스트림을 전송할 전송 매체를 선택하는 방법으로서,
    제 1 전송 매체 및 제 2 전송 매체의 경로 특성들을 결정하는 단계 ― 상기 경로 특성들은 현재 매체 활용 및 최대 매체 활용을 포함함 ― ;
    상기 제 1 전송 매체의 현재 매체 활용 및 최대 매체 활용에 적어도 부분적으로 기초하여 상기 제 1 스트림의 제 1 복수의 패킷들의 전송을 위한 상기 제 1 전송 매체를 선택하는 단계;
    상기 제 1 전송 매체의 현재 매체 활용 및 최대 매체 활용에 적어도 부분적으로 기초하여 상기 제 1 전송 매체 상에서 상기 제 1 스트림의 제 2 복수의 패킷들을 전송할지 아니면 상기 제 2 전송 매체 상에서 전송할지 결정하는 단계;
    상기 제 1 전송 매체의 현재 매체 활용이 상기 최대 매체 활용을 초과한다고 결정하는 것에 응답하여, 상기 제 1 스트림의 제 2 복수의 패킷들의 전송을 위해 상기 제 2 전송 매체를 선택하는 단계; 및
    상기 제 2 전송 매체가 상기 제 1 스트림의 전송을 위해 선택되었음을 표시하는 제어 패킷을 제 2 디바이스로 전송하는 단계를 포함하는, 전송 매체를 선택하는 방법.
  2. 제1항에 있어서,
    상기 경로 특성들은 상기 제 1 전송 매체 및 상기 제 2 전송 매체의 링크 용량을 더 포함하는, 전송 매체를 선택하는 방법.
  3. 제1항에 있어서,
    상기 제 1 스트림의 컨텐츠의 타입을 결정하는 단계를 더 포함하고,
    상기 제 1 전송 매체를 선택하는 단계는, 추가로 상기 제 1 스트림의 컨텐츠의 타입에 기초하는, 전송 매체를 선택하는 방법.
  4. 제1항에 있어서,
    상기 제 1 스트림의 우선순위 레벨을 결정하는 단계를 더 포함하고,
    상기 제 1 전송 매체를 선택하는 단계는, 추가로 상기 제 1 스트림의 우선순위 레벨에 기초하는, 전송 매체를 선택하는 방법.
  5. 제1항에 있어서,
    상기 제 1 전송 매체 및 상기 제 2 전송 매체의 경로 특성들에 적어도 부분적으로 기초하여 상기 제 1 스트림의 전송에 대한 상기 제 1 전송 매체 및 상기 제 2 전송 매체의 순서를 결정하는 단계를 더 포함하는, 전송 매체를 선택하는 방법.
  6. 제5항에 있어서,
    상기 제 1 전송 매체 및 상기 제 2 전송 매체의 경로 특성들 중 적어도 하나에서의 변화(change)를 검출하는 단계; 및
    상기 제 1 전송 매체 및 상기 제 2 전송 매체의 경로 특성들 중 적어도 하나에서의 변화에 적어도 부분적으로 기초하여 상기 제 1 스트림의 전송에 대한 상기 제 1 전송 매채 및 상기 제 2 전송 매체의 순서를 수정하는 단계를 더 포함하는, 전송 매체를 선택하는 방법.
  7. 제1항에 있어서,
    상기 제 1 전송 매체 상에서 상기 제 1 스트림의 제 1 복수의 패킷들을 전송하는 단계; 및
    상기 제 2 전송 매체를 선택하는 것에 응답하여, 상기 제 2 전송 매체 상에서 상기 제 1 스트림의 제 2 복수의 패킷들을 전송하는 단계를 더 포함하고,
    상기 제 2 전송 매체 상에서 상기 제 1 스트림의 패킷들이 전송되는 경우, 상기 제 1 스트림의 패킷들은 상기 제 1 전송 매체 상에서 전송되지 않는, 전송 매체를 선택하는 방법.
  8. 제 1 디바이스로서,
    제 1 전송 매체 및 제 2 전송 매체를 통해 상기 제 1 디바이스를 제 2 디바이스에 통신과 관련되도록(communicatively) 커플링하도록 구성되는 네트워크 인터페이스; 및
    상기 네트워크 인터페이스와 커플링되는 통신 유닛을 포함하고,
    상기 통신 유닛은,
    상기 제 1 전송 매체 및 상기 제 2 전송 매체의 경로 특성들을 결정하고 ― 상기 경로 특성들은 현재 매체 활용 및 최대 매체 활용을 포함함 ―;
    상기 제 1 전송 매체의 상기 현재 매체 활용 및 최대 매체 활용에 적어도 부분적으로 기초하여 제 1 스트림의 제 1 복수의 패킷들의 전송을 위한 상기 제 1 전송 매체를 선택하고;
    상기 제 1 전송 매체의 현재 매체 활용 및 최대 매체 활용에 적어도 부분적으로 기초하여 상기 제 1 전송 매체 상에서 상기 제 1 스트림의 제 2 복수의 패킷들을 전송할지 아니면 상기 제 2 전송 매체 상에서 전송할지 결정하고;
    상기 제 1 전송 매체의 현재 매체 활용이 상기 최대 매체 활용을 초과한다고 결정하는 것에 응답하여, 상기 제 1 스트림의 제 2 복수의 패킷들의 전송을 위해 상기 제 2 전송 매체를 선택하고; 그리고
    상기 제 2 전송 매체가 상기 제 1 스트림의 전송을 위해 선택되었음을 표시하는 제어 패킷을 상기 제 2 디바이스로 전송하는 단계
    도록 구성되는, 제 1 디바이스.
  9. 제8항에 있어서,
    상기 경로 특성들은 상기 제 1 전송 매체 및 상기 제 2 전송 매체의 링크 용량을 더 포함하는, 제 1 디바이스.
  10. 제8항에 있어서,
    상기 통신 유닛은 추가적으로, 상기 제 1 스트림의 컨텐츠의 타입을 결정하도록 구성되고,
    상기 제 1 전송 매체를 선택하는 것은 추가로 상기 제 1 스트림의 컨텐츠의 타입에 기초하는, 제 1 디바이스.
  11. 제8항에 있어서,
    상기 통신 유닛은 추가적으로, 상기 제 1 스트림의 우선순위 레벨을 결정하도록 구성되고,
    상기 제 1 전송 매체를 선택하는 것은 추가로 상기 제 1 스트림의 우선순위 레벨에 기초하는, 제 1 디바이스.
  12. 제8항에 있어서,
    상기 통신 유닛은 추가적으로, 상기 제 1 전송 매체 및 상기 제 2 전송 매체의 경로 특성들에 적어도 부분적으로 기초하여 상기 제 1 스트림의 전송에 대한 상기 제 1 전송 매체 및 상기 제 2 전송 매체의 순서를 결정하도록 구성되는, 제 1 디바이스.
  13. 제12항에 있어서,
    상기 통신 유닛은 추가적으로;
    상기 제 1 전송 매체 및 상기 제 2 전송 매체의 경로 특성들 중 적어도 하나에서의 변화을 검출하고; 그리고
    상기 제 1 전송 매체 및 상기 제 2 전송 매체의 경로 특성들 중 적어도 하나에서의 변화에 적어도 부분적으로 기초하여 상기 제 1 스트림의 전송에 대한 상기 제 1 전송 매체 및 상기 제 2 전송 매체의 순서를 수정하도록 구성되는, 제 1 디바이스.
  14. 제8항에 있어서,
    상기 통신 유닛은 추가적으로:
    상기 제 1 전송 매체 상에서 상기 제 1 스트림의 제 1 복수의 패킷들을 전송하고; 그리고
    상기 제 2 전송 매체의 선택에 응답하여, 상기 제 2 전송 매체 상에서 상기 제 1 스트림의 제 2 복수의 패킷들을 전송하도록 구성되고,
    상기 제 2 전송 매체 상에서 상기 제 1 스트림의 패킷들이 전송되는 경우, 상기 제 1 스트림의 패킷들은 상기 제 1 전송 매체 상에서 전송되지 않는, 제1 디바이스.
  15. 제 1 디바이스가 제 1 스트림을 전송할 전송 매체를 선택하기 위한 프로그램 명령들을 포함하는 컴퓨터-판독가능한 메모리 매체로서,
    상기 프로그램 명령들은:
    제 1 전송 매체 및 제 2 전송 매체의 경로 특성들을 결정하고 ― 상기 경로 특성들은 현재 매체 활용 및 최대 매체 활용을 포함함 ― ;
    상기 제 1 전송 매체의 현재 매체 활용 및 최대 매체 활용에 적어도 부분적으로 기초하여 상기 제 1 스트림의 제 1 복수의 패킷들의 전송을 위한 상기 제 1 전송 매체를 선택하고;
    상기 제 1 전송 매체의 현재 매체 활용 및 최대 매체 활용에 적어도 부분적으로 기초하여 상기 제 1 전송 매체 상에서 상기 제 1 스트림의 제 2 복수의 패킷들을 전송할지 아니면 상기 제 2 전송 매체 상에서 전송할지 결정하고;
    상기 제 1 전송 매체의 현재 매체 활용이 상기 최대 매체 활용을 초과한다고 결정하는 것에 응답하여, 상기 제 1 스트림의 제 2 복수의 패킷들의 전송을 위해 상기 제 2 전송 매체를 선택하고; 그리고
    상기 제 2 전송 매체가 상기 제 1 스트림의 전송을 위해 선택되었음을 표시하는 제어 패킷을 제 2 디바이스로 전송하도록 실행가능한, 컴퓨터-판독가능한 메모리 매체.
  16. 제 1 디바이스가 전송 매체들을 로드-밸런싱(load-balancing)하기 위한 방법으로서,
    제 1 전송 매체 상에서 제 1 스트림의 제 1 복수의 패킷들을 전송하는 단계;
    상기 제 1 전송 매체의 현재 매체 활용이 제 1 임계치를 초과한다고 결정하는 단계;
    상기 제 1 전송 매체의 현재 매체 활용이 상기 제 1 임계치를 초과한다는 결정, 제 2 전송 매체와 연관되는 제 2 임계치, 및 상기 제 1 스트림의 적어도 하나의 특성에 적어도 부분적으로 기초하여 상기 제 1 스트림의 전송을 위해 상기 제 2 전송 매체를 선택하는 단계;
    상기 제 2 전송 매체가 상기 제 1 스트림의 전송을 위해 선택되었음을 표시하는 제어 패킷을 제 2 디바이스로 전송하는 단계; 및
    상기 제 2 전송 매체 상에서 상기 제 1 스트림의 제 2 복수의 패킷들을 전송하는 단계를 포함하는, 제 1 디바이스가 전송 매체들을 로드-밸런싱하기 위한 방법.
  17. 제16항에 있어서,
    상기 제 1 스트림의 전송을 위해 상기 제 2 전송 매체를 선택하는 단계는, 상기 제 2 전송 매체 상에서의 상기 제 1 스트림의 전송은 상기 제 2 전송 매체의 매체 활용이 상기 제 2 임계치를 초과하는 것을 야기하지 않을 것이라고 결정하는 것에 적어도 부분적으로 기초하는, 제 1 디바이스가 전송 매체들을 로드-밸런싱하기 위한 방법.
  18. 제16항에 있어서,
    상기 제 1 스트림의 전송을 위한 상기 제 2 전송 매체를 선택하는 단계는, 제 1 우선순위 레벨을 갖는 상기 제 1 스트림에 적어도 부분적으로 기초하는, 제 1 디바이스가 전송 매체들을 로드-밸런싱하기 위한 방법.
  19. 제18항에 있어서,
    상기 제 1 우선순위 레벨은 상기 제 1 스트림의 컨텐츠의 타입에 적어도 부분적으로 기초하는, 제 1 디바이스가 전송 매체들을 로드-밸런싱하기 위한 방법.
  20. 제16항에 있어서,
    상기 제 1 스트림의 상기 적어도 하나의 특성은 상기 제 1 스트림의 추정된 대역폭 요건을 포함하는, 제 1 디바이스가 전송 매체들을 로드-밸런싱하기 위한 방법.
  21. 제 1 디바이스로서,
    제 1 전송 매체 및 제 2 전송 매체를 통해 상기 제 1 디바이스를 제 2 디바이스에 통신과 관련되도록(communicatively) 커플링하도록 구성되는 네트워크 인터페이스; 및
    상기 네트워크 인터페이스와 커플링되는 통신 유닛을 포함하고,
    상기 통신 유닛은,
    상기 제 1 전송 매체 상에서 제 1 스트림의 제 1 복수의 패킷들을 전송하고;
    상기 제 1 전송 매체의 현재 매체 활용이 제 1 임계치를 초과한다고 결정하고;
    상기 제 1 전송 매체의 현재 매체 활용이 상기 제 1 임계치를 초과한다는 결정, 상기 제 2 전송 매체와 연관되는 제 2 임계치, 및 상기 제 1 스트림의 적어도 하나의 특성에 적어도 부분적으로 기초하여 상기 제 1 스트림의 전송을 위해 상기 제 2 전송 매체를 선택하고;
    상기 제 2 전송 매체가 상기 제 1 스트림의 전송을 위해 선택되었음을 표시하는 제어 패킷을 상기 제 2 디바이스로 전송하고; 그리고
    상기 제 2 전송 매체 상에서 상기 제 1 스트림의 제 2 복수의 패킷들을 전송하도록 구성되는, 제 1 디바이스.
  22. 전송 매체들을 로드 밸런싱하기 위한 프로그램 명령들을 포함하는 컴퓨터-판독가능한 메모리 매체로서,
    상기 프로그램 명령들은:
    전송을 위해 제 1 전송 매체로 제 1 스트림의 제 1 복수의 패킷들을 라우팅하고;
    상기 제 1 전송 매체의 현재 매체 활용이 제 1 임계치를 초과한다고 결정하고;
    상기 제 1 전송 매체의 현재 매체 활용이 상기 제 1 임계치를 초과한다는 결정, 제 2 전송 매체와 연관되는 제 2 임계치, 및 상기 제 1 스트림의 적어도 하나의 특성에 적어도 부분적으로 기초하여 상기 제 1 스트림의 전송을 위해 상기 제 2 전송 매체를 선택하고;
    상기 제 2 전송 매체가 상기 제 1 스트림의 전송을 위해 선택되었음을 표시하는 제어 패킷을 상기 제 2 디바이스로 전송하고; 그리고
    상기 제 2 전송 매체 상에서 상기 제 1 스트림의 제 2 복수의 패킷들을 전송하도록 실행가능한, 컴퓨터-판독가능한 메모리 매체.
  23. 제 1 디바이스가 양방향(bi-directional) 스트림들을 연관시키는 방법으로서,
    제 1 전송 매체 상에서 제 2 디바이스로부터 제 1 스트림의 제 1 복수의 패킷들을 수신하는 단계 ― 상기 제 1 스트림의 제 1 복수의 패킷들은 전송 제어 프로토콜(TCP) 데이터 페킷들을 포함함 ―;
    상기 제 1 스트림과 연관되는 제 2 스트림을 생성하도록 결정하는 단계 ― 상기 제 2 스트림은 상기 제 2 디바이스로 전송될 것임 ― ;
    상기 제 1 스트림이 상기 제 1 전송 매체에 할당되고 상기 제 2 스트림이 상기 제 1 스트림과 연관된다는 것을 표시하는 정보를 저장하는 단계; 및
    상기 제 1 전송 매체 상에서 상기 제 2 디바이스로 상기 제 2 스트림의 제 2 복수의 패킷들을 전송하는 단계를 포함하고,
    상기 제 2 스트림의 제 2 복수의 패킷들은 상기 제 1 스트림의 제 1 복수의 패킷들을 수신하는 것에 응답하여 생성되고,
    상기 제 2 스트림의 제 2 복수의 패킷들은 TCP 확인응답(ACK) 패킷들을 포함하고,
    상기 제 2 복수의 패킷들을 전송하는 단계는, 상기 제 1 스트림이 상기 제 1 전송 매체에 할당되고 상기 제 2 스트림이 상기 제 1 스트림과 연관된다는 것을 표시하는 상기 정보에 적어도 부분적으로 기초하는, 제 1 디바이스가 양방향 스트림들을 연관시키는 방법.
  24. 제23항에 있어서,
    상기 제 1 스트림과 연관되는 제 2 스트림을 생성하도록 결정하는 단계는, 상기 제 2 스트림이 상기 제 1 스트림과 연관되어 생성될 수 있다는 표시를 상기 제 2 디바이스로부터 수신하는 것에 적어도 부분적으로 기초하는, 제 1 디바이스가 양방향 스트림들을 연관시키는 방법.
  25. 삭제
  26. 삭제
  27. 제1항에 있어서,
    상기 제 1 전송 매체 및 상기 제 2 전송 매체에 대한 최대 매체 활용은, 상기 제 1 스트림의 특성들 및 전송 매체의 타입으로 구성되는 그룹의 적어도 하나의 구성원(member)에 적어도 부분적으로 기초하여 결정되는, 전송 매체를 선택하는 방법.
  28. 삭제
  29. 제1항에 있어서,
    상기 제 1 스트림의 제 1 복수의 패킷들은 제 1 네트워크 프로토콜을 이용하여 상기 제 1 전송 매체 상에서 전송되고,
    상기 제 1 스트림의 제 2 복수의 패킷들은 제 2 네트워크 프로토콜을 이용하여 사익 제 2 전송 매체 상에서 전송되고,
    상기 제 1 네트워크 프로토콜은 상기 제 2 네트워크 프로토콜과 상이한, 전송 매체를 선택하는 방법.
  30. 제16항에 있어서,
    상기 제 1 스트림의 패킷들은, 상기 제 1 스트림의 전송을 위한 상기 제 2 전송 매체를 선택한 이후 상기 제 1 전송 매체 상에서 더 이상 전송되지 않는, 제 1 디바이스가 전송 매체들을 로드-밸런싱하기 위한 방법.
KR1020147016718A 2011-11-21 2012-11-20 하이브리드 네트워킹 경로 선택 및 로드 밸런싱 KR101560613B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/301,576 US9065749B2 (en) 2011-11-21 2011-11-21 Hybrid networking path selection and load balancing
US13/301,576 2011-11-21
PCT/US2012/066109 WO2013078228A1 (en) 2011-11-21 2012-11-20 Providing path information in mixed communication networks

Publications (2)

Publication Number Publication Date
KR20140100529A KR20140100529A (ko) 2014-08-14
KR101560613B1 true KR101560613B1 (ko) 2015-10-16

Family

ID=47297468

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147016718A KR101560613B1 (ko) 2011-11-21 2012-11-20 하이브리드 네트워킹 경로 선택 및 로드 밸런싱

Country Status (7)

Country Link
US (1) US9065749B2 (ko)
EP (1) EP2783491A1 (ko)
JP (2) JP2015502712A (ko)
KR (1) KR101560613B1 (ko)
CN (1) CN103959724B (ko)
IN (1) IN2014CN04024A (ko)
WO (1) WO2013078228A1 (ko)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9059932B2 (en) * 2011-11-03 2015-06-16 Qualcomm Incorporated Packet ordering based on delivery route changes in communication networks
US8824477B2 (en) 2011-11-03 2014-09-02 Qualcomm Incorporated Multiple delivery route packet ordering
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
US9014085B2 (en) * 2011-11-28 2015-04-21 At&T Intellectual Property I, L.P. Internet protocol session persistence for mobile communications
EP2791974A4 (en) 2011-12-14 2015-08-05 Qualcomm Inc TRIGGER RING FOR REDUCED TRANSISTOR LEAKAGE CURRENT
US9055608B2 (en) * 2012-08-31 2015-06-09 Verizon Patent And Licensing Inc. Frequency band admission
US9167310B2 (en) 2012-09-14 2015-10-20 Comcast Cable Communications, Llc Optimized delivery techniques
US10516904B2 (en) * 2012-09-14 2019-12-24 Comcast Cable Communications, Llc Controlling delivery of requested content based on delivery bandwidth limitations
US9722943B2 (en) * 2012-12-17 2017-08-01 Qualcomm Incorporated Seamless switching for multihop hybrid networks
US20140241167A1 (en) * 2013-02-27 2014-08-28 Rogers Communications Inc. Hybrid cable-wireless system
GB2517156A (en) * 2013-08-12 2015-02-18 En Twyn Ltd A power line communications network
US9178714B2 (en) * 2013-09-04 2015-11-03 Qualcomm Incorporated Selecting a communication medium for data transmission
JP6338349B2 (ja) * 2013-10-28 2018-06-06 キヤノン株式会社 データ送信装置、データ受信装置、それらの制御方法、プログラム
US9473418B2 (en) 2013-12-12 2016-10-18 International Business Machines Corporation Resource over-subscription
US9510283B2 (en) 2014-01-24 2016-11-29 Starkey Laboratories, Inc. Systems and methods for managing power consumption in a wireless network
US20150312337A1 (en) * 2014-04-25 2015-10-29 Netapp Inc. Mirroring log data
US10243784B2 (en) 2014-11-20 2019-03-26 At&T Intellectual Property I, L.P. System for generating topology information and methods thereof
US9912027B2 (en) 2015-07-23 2018-03-06 At&T Intellectual Property I, L.P. Method and apparatus for exchanging communication signals
US10057336B2 (en) * 2015-11-17 2018-08-21 Sap Se Dynamic load balancing between client and server
US10063457B2 (en) * 2016-03-29 2018-08-28 Juniper Networks, Inc. Method, system, and apparatus for improving forwarding capabilities during route convergence
JP6432991B2 (ja) * 2016-03-31 2018-12-05 Necプラットフォームズ株式会社 ネットワーク機器及びその制御方法
EP3456006B1 (en) * 2016-05-13 2019-10-02 Telefonaktiebolaget LM Ericsson (PUBL) Improved resource usage in a multipath network
US10811767B2 (en) 2016-10-21 2020-10-20 At&T Intellectual Property I, L.P. System and dielectric antenna with convex dielectric radome
US10404567B2 (en) * 2016-12-29 2019-09-03 Oath Inc. UDPing-continuous one-way monitoring of multiple network links
JP6879129B2 (ja) * 2017-08-31 2021-06-02 沖電気工業株式会社 中継装置および中継プログラム
US11641220B2 (en) 2018-04-16 2023-05-02 Lg Electronics Inc. Apparatus and method for performing data stream transmission in wireless power transfer system
DE112020002497T5 (de) 2019-05-23 2022-04-28 Hewlett Packard Enterprise Development Lp System und verfahren zur dynamischen zuweisung von reduktionsmotoren
CN110311758A (zh) * 2019-07-19 2019-10-08 北京清源新创科技有限公司 数据低延迟传输方法、装置及设备和存储介质
JP7413523B2 (ja) * 2019-11-06 2024-01-15 華為技術有限公司 マルチパス通信の実行
US11876705B2 (en) * 2021-12-16 2024-01-16 Huawei Technologies Co., Ltd. Methods and systems for adaptive stochastic-based load balancing

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080002716A1 (en) * 2006-06-30 2008-01-03 Wiley William L System and method for selecting network egress
US20100166110A1 (en) * 2008-12-31 2010-07-01 Dirk Neumann Method for digitally predistorting a payload signal and radio station incorporating the method
US20110096849A1 (en) * 2008-07-02 2011-04-28 Stefan Kubsch Optimized selection of transmission protocol respecting thresholds

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3114672B2 (ja) * 1997-10-21 2000-12-04 日本電気株式会社 Atmネットワークにおけるコネクション性能測定方法
JP3597049B2 (ja) * 1998-07-09 2004-12-02 日本電気エンジニアリング株式会社 統合ネットワーク内における経路選択型通信装置
JP2003124980A (ja) * 2001-10-17 2003-04-25 Fujitsu Ltd パケット振り分け装置
JP3678200B2 (ja) * 2002-01-11 2005-08-03 Kddi株式会社 通信内容の秘匿性向上のための経路分散装置
JP2006345323A (ja) * 2005-06-09 2006-12-21 Mitsubishi Electric Corp データ転送装置および情報伝送システム
US20070110035A1 (en) 2005-11-14 2007-05-17 Broadcom Corporation, A California Corporation Network nodes cooperatively routing traffic flow amongst wired and wireless networks
JP2007257791A (ja) * 2006-03-24 2007-10-04 Fujitsu Ltd 半導体記憶装置
US9379852B2 (en) 2006-09-05 2016-06-28 Nec Corporation Packet recovery method, communication system, information processing device, and program
CN101202632A (zh) * 2006-12-13 2008-06-18 英业达股份有限公司 双控制器系统的数据传输系统及方法及通信路径选择方法
CN101170497A (zh) * 2007-11-20 2008-04-30 中兴通讯股份有限公司 报送网络资源信息数据的方法及装置
CN101471759A (zh) * 2007-12-28 2009-07-01 中国移动通信集团公司 提高业务数据传输质量的方法和业务数据传输装置
US8477600B2 (en) * 2008-01-18 2013-07-02 Futurewei Technologies, Inc. Composite transport functions
JP5169296B2 (ja) * 2008-02-22 2013-03-27 日本電気株式会社 通信装置、帯域制御通信方法、帯域制御通信プログラムおよびプログラム記録媒体
CN101252461B (zh) * 2008-04-11 2010-08-04 华为技术有限公司 信令传送的保护方法、装置、终端及系统
CN101572695A (zh) * 2008-04-30 2009-11-04 深圳华为通信技术有限公司 一种传输流路径切换的方法、系统及装置
CN101282346A (zh) * 2008-05-14 2008-10-08 北京泰得思达科技发展有限公司 一种双控制器系统的通讯路径选择的方法
CN101447929B (zh) * 2008-12-26 2011-06-08 华为技术有限公司 一种流量选路方法、路由器和通信系统
JP5329244B2 (ja) * 2009-01-16 2013-10-30 株式会社東芝 無線端末および無線通信方法
JP2010171662A (ja) * 2009-01-21 2010-08-05 Kddi R & D Laboratories Inc アプリケーションに基づくリソース混雑度に応じた異種無線システムの切替制御方法、無線端末、基地局及びプログラム
WO2011021754A1 (en) * 2009-08-20 2011-02-24 Lg Electronics Inc. Method for transmitting a packet at a base station in a network using multiple communication schemes
CN101707571A (zh) * 2009-09-23 2010-05-12 李悦 一种电力线、无线双网路由方法
JP5445184B2 (ja) * 2010-02-04 2014-03-19 富士通株式会社 通信装置、通信システム及び通信方法
CN102143020A (zh) * 2010-12-31 2011-08-03 华为终端有限公司 一种传输方法和装置
US8726082B2 (en) * 2011-09-02 2014-05-13 Verizon Patent And Licensing Inc. Method and system for providing incomplete action monitoring and service for data transactions
US9065749B2 (en) 2011-11-21 2015-06-23 Qualcomm Incorporated Hybrid networking path selection and load balancing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080002716A1 (en) * 2006-06-30 2008-01-03 Wiley William L System and method for selecting network egress
US20110096849A1 (en) * 2008-07-02 2011-04-28 Stefan Kubsch Optimized selection of transmission protocol respecting thresholds
US20100166110A1 (en) * 2008-12-31 2010-07-01 Dirk Neumann Method for digitally predistorting a payload signal and radio station incorporating the method

Also Published As

Publication number Publication date
CN103959724A (zh) 2014-07-30
WO2013078228A1 (en) 2013-05-30
KR20140100529A (ko) 2014-08-14
JP2015502712A (ja) 2015-01-22
EP2783491A1 (en) 2014-10-01
US9065749B2 (en) 2015-06-23
CN103959724B (zh) 2018-11-02
US20130128738A1 (en) 2013-05-23
JP2016167851A (ja) 2016-09-15
IN2014CN04024A (ko) 2015-07-10

Similar Documents

Publication Publication Date Title
KR101560613B1 (ko) 하이브리드 네트워킹 경로 선택 및 로드 밸런싱
US9608899B2 (en) Packet-based aggregation of data streams across disparate networking interfaces
EP2783477B1 (en) Hybrid networking system with seamless path switching
US10148492B2 (en) Data center bridging network configuration and management
RU2491737C2 (ru) Управление памятью для высокоскоростного управления доступом к среде
KR101492510B1 (ko) 다중 전달 라우트 패킷 정렬
TWI477127B (zh) 用於排程封包傳輸的電腦實施方法、機器可讀媒體和客戶端裝置
EP2959645B1 (en) Dynamic optimization of tcp connections
US20130100955A1 (en) Technique for prioritizing traffic at a router
US9191701B2 (en) Video stream protection
Halepoto et al. Management of buffer space for the concurrent multipath transfer over dissimilar paths
US8804521B1 (en) Quality of service for inbound network traffic flows during slow-start phases
US12015560B2 (en) Data transmission method and network device
Huang et al. The QoS-aware order prediction scheduling (QOPS) scheme for video streaming using the multi-path datagram congestion control protocol (MP-DCCP)
Chen et al. On meeting deadlines in datacenter networks
KR20130116393A (ko) 이더넷의 서비스 품질 향상을 위한 스케줄링 방법
Sen et al. A case for enhancing dual radio repeater performance through striping, aggregation, and channel sharing

Legal Events

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

Payment date: 20180928

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190924

Year of fee payment: 5