KR102536208B1 - 데이터 흐름을 페이스 조정하기 위한 시스템 및 방법 - Google Patents

데이터 흐름을 페이스 조정하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR102536208B1
KR102536208B1 KR1020177028039A KR20177028039A KR102536208B1 KR 102536208 B1 KR102536208 B1 KR 102536208B1 KR 1020177028039 A KR1020177028039 A KR 1020177028039A KR 20177028039 A KR20177028039 A KR 20177028039A KR 102536208 B1 KR102536208 B1 KR 102536208B1
Authority
KR
South Korea
Prior art keywords
data
network
network equipment
flow
throughput
Prior art date
Application number
KR1020177028039A
Other languages
English (en)
Other versions
KR20180004401A (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 오팡가 네트웍스, 인크.
Priority to KR1020237017106A priority Critical patent/KR102583750B1/ko
Publication of KR20180004401A publication Critical patent/KR20180004401A/ko
Application granted granted Critical
Publication of KR102536208B1 publication Critical patent/KR102536208B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/25Flow control; Congestion control with rate being modified by the source upon detecting a change of network conditions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0882Utilisation of link capacity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0888Throughput
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/29Flow control; Congestion control using a combination of thresholds

Landscapes

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

Abstract

데이터 흐름을 관리 및 페이스 조정하기 위한 시스템 및 방법이 설명된다. 일부 실시예에서, 시스템 및 방법은, 관리를 위한 데이터 흐름 - 데이터 흐름은 제1 네트워크 장비로부터 제2 네트워크 장비로 송신됨 - 을 선택하고, 제3 네트워크 장비에서, 제2 네트워크 장비로 송신되는 데이터 흐름의 전달 성능을 결정하고, 제2 네트워크 장비로 송신되는 데이터 흐름의 결정된 전달 성능에 기초하여 네트워크 혼잡을 검출하고, 제3 네트워크 디바이스에서, 검출된 네트워크 혼잡에 기초하여 데이터 흐름이 제2 네트워크 장비로 전달되는 레이트를 감소시킴으로써 제2 네트워크 장비로의 데이터의 전달을 페이스 조정할 수 있다.

Description

데이터 흐름을 페이스 조정하기 위한 시스템 및 방법
관련 출원에 대한 교차 참조
본 출원은 2015년 3월 3일자로 출원된 미국 가출원 제62/127,753호, 2015년 8월 20일자로 출원된 미국 가출원 제62/207,529호 및 2016년 1월 11일자로 출원된 미국 가출원 제62/277,320호에 대한 우선권을 주장하며, 이들 각각의 전체 내용은 본 명세서에 참조로 통합되어 있다.
공유 라스트-마일 액세스 네트워크(shared last-mile access network)의 사용자로의 패킷 데이터 콘텐츠의 효율적 전달은 네트워크 트래픽 용량, 사용자 트래픽의 볼륨 및 네트워크를 통해 트래픽을 전송하는 애플리케이션을 통해 사용자에게 제공되는 전체 사용자 체험 품질의 적절한 균형화에 의해 달성될 수 있다. 트래픽 볼륨이 증가하고 이 균형이 유지되지 않으면, 이때, 네트워크는 구축에 너무 많은 비용이 들게 되거나 사용자가 열악한 서비스에 시달리게 된다.
오늘날의 데이터 네트워크(무선, 유선 및/또는 파이버 네트워크를 포함할 수 있음)가 직면하고 있는 커지는 문제점 중 하나는 이들 네트워크를 통해 큰 콘텐츠 파일(large content files)이 스트리밍되거나 달리 전달되는 결과로서 이들 데이터 네트워크 상에 부여되는 부담이다. "큰" 미디어 콘텐츠는 최종 사용자 디바이스로의 또는 그로부터의 전달 동안 현저한 양의 시간 및 네트워크 리소스를 소비하는 대표적 특징을 갖는다. 일반적으로, 소비자 액세스 네트워크는 데이터 및 네트워크 리소스 사용의 짧은 버스트의 전달을 위해 설계되며, 미디어 콘텐츠(오디오, 비디오 및/또는 다른 유형의 콘텐츠 데이터)를 스트리밍하는 것 같은 장기 지속 사용을 목적으로 하지 않는다. 미디어 콘텐츠를 스트리밍하는 것은 제한된 네트워크 리소스로 다수의 사용자의 피크 사용 수요를 충족시키기를 시도하는 네트워크 트래픽 엔지니어에게 원론적 과제인 것으로 널리 인식되어 있다. 만연한 스트리밍 채택의 전형적 결과는 네트워크 혼잡이며, 이는 종종 모든 사용자 및 그 애플리케이션에 대한 느린 네트워크 응답으로 나타난다.
네트워크 사용량의 피크 기간 동안(예를 들어, 큰 볼륨의 미디어 콘텐츠 및/또는 다른 유형의 데이터가 네트워크를 통해 송신될 때), 하나의 네트워크 시스템으로부터 다른 네트워크 시스템으로 데이터를 신속하고 효율적으로 중계하는 네트워크의 능력이 극도로 열화된다. 즉, 점점 더 많은 네트워크 사용자가 대량의 데이터를 다운로드하기 위해 네트워크에 접속함에 따라, 유한한 양의 가용 네트워크 대역폭 및 리소스(예를 들어, 기지국, 라우터, 서버, 데이터베이스 등)에 대한 경쟁은 불가피하게 각 네트워크 사용자가 열화된 서비스(예를 들어, 느린 업로드 및 다운로드 속도, 데이터 전달 및 스트리밍 중단)를 체험하는 결과를 초래한다.
일부 실시예에서, 방법은 관리를 위한 데이터 흐름을 선택하는 단계 - 데이터 흐름은 제1 네트워크 장비로부터 제2 네트워크 장비로 송신됨 - , 제2 네트워크 장비로 송신되는 데이터 흐름의 전달 성능을 제3 네트워크 장비에서 결정하는 단계, 제2 네트워크 장비에 송신되는 데이터 흐름의 결정된 전달 성능에 기초하여, 네트워크 혼잡을 검출하는 단계, 및 제3 네트워크 디바이스에서 그리고 검출된 네트워크 혼잡에 기초하여, 데이터 흐름이 제2 네트워크 장비로 전달되는 레이트를 감소시킴으로써 제2 네트워크 장비로의 데이터 흐름의 전달을 페이스 조정하는 단계를 포함한다.
일부 실시예에서, 전송 매니저 시스템은 서로 통신 가능하게 결합된 하나 이상의 프로세서, 네트워크 인터페이스, 큐, 및 스토리지를 포함하고, 스토리지는 컴퓨터 실행가능 명령어를 저장하며, 컴퓨터 실행가능 명령어는 하나 이상의 프로세서에 의해 실행될 때 전송 매니저 시스템으로 하여금: 제1 네트워크 장비로부터 제2 네트워크 장비로 송신되는 데이터 흐름의 전달 성능을 결정하고, 데이터 흐름의 결정된 전달 성능에 기초하여 네트워크 혼잡을 검출하고, 검출된 네트워크 혼잡에 기초하여 데이터 흐름이 제2 네트워크 장비로 전달되는 레이트를 감소시킴으로써 제2 네트워크 장비로 송신되는 데이터 흐름의 전달을 페이스 조정하게 한다.
일부 실시예에서, 시스템은 하나 이상의 프로세서, 네트워크 인터페이스, 큐, 관리를 위한 데이터 흐름을 선택하도록 구성된 흐름 검출기 로직 유닛을 포함하고, 데이터 흐름은 제1 네트워크 장비로부터 제2 네트워크 장비로 송신되고, 흐름 매니저 로직 유닛은: 제2 네트워크 장비로 송신되는 데이터 흐름의 전달 성능을 결정하고, 제2 네트워크 장비로 송신되는 데이터 흐름의 결정된 전달 성능에 기초하여 네트워크 혼잡을 검출하고, 검출된 네트워크 혼잡에 기초하여 데이터 흐름이 제2 네트워크 장비로 전달되는 레이트를 감소시킴으로써 제2 네트워크 장비로의 데이터 흐름의 전달을 페이스 조정하도록 구성된다.
도 1a는 예시적 네트워크 환경을 예시한다.
도 1b는 다른 예시적 네트워크 환경을 예시한다.
도 2a는 실시예에 따른 전송 매니저 시스템의 블록도이다.
도 2b는 다른 실시예에 따른 전송 매니저 시스템의 블록도이다.
도 2c는 다른 실시예에 따른 전송 매니저 시스템의 블록도이다.
도 2d는 다른 실시예에 따른 전송 매니저 시스템의 블록도이다.
도 3은 실시예에 따른 사용자 장비의 블록도이다.
도 4는 실시예에 따른 프로세스의 하이-레벨 로직 흐름도이다.
도 5a는 실시예에 따른, 관리를 위한 데이터 흐름을 선택하고 데이터 흐름을 페이스 조정하기 위한 프로세스의 하이-레벨 로직 흐름도이다.
도 5b는 실시예에 따른, 관리를 위한 데이터 흐름을 선택하고 데이터 흐름을 페이스 조정하기 위한 프로세스의 하이-레벨 로직 흐름도이다.
도 6a는 실시예에 따른, 데이터 흐름의 전달 스루풋을 관리하기 위한 프로세스의 하이-레벨 로직 흐름도이다.
도 6b는 실시예에 따른, 선택된 데이터 흐름의 전달 스루풋을 결정하고 네트워크 혼잡이 존재하는지를 결정하기 위한 프로세스의 하이-레벨 로직 흐름도이다.
도 7a는 실시예에 따른, 데이터 흐름의 전달 스루풋을 관리하기 위한 프로세스의 하이-레벨 로직 흐름도이다.
도 7b는 실시예에 따른, 선택된 데이터 흐름과 연관된 파일 세그먼트의 데이터 전달 스루풋을 결정하고 네트워크 혼잡이 존재하는지를 결정하기 위한 프로세스의 하이-레벨 로직 흐름도이다.
도 8은 실시예에 따른, 에이전트와 상호작용하기 위한 프로세스의 하이-레벨 로직 흐름도이다.
관리를 위한 하나 이상의 데이터 네트워크를 통해 오가는, 그리고, 현저한 양의 네트워크 리소스를 사용하는 것으로 결정될 수 있는 데이터 흐름을 선택하기 위한 시스템 및 방법이 본 명세서에 설명된다. 네트워크 혼잡 검출시, 시스템 및 방법은 목적지로의 데이터 흐름의 전달 레이트(또는 목표 데이터 레이트)를 감소시킴으로써 데이터 흐름의 전달을 페이스 조정하도록 설계될 수 있다. 일부 경우에, 시스템은 전송 매니저 시스템을 포함할 수 있고, 다른 경우에 시스템은 전송 매니저 시스템과 흐름 검출기 시스템을 포함할 수 있다. 일부 실시예에서, 시스템 및 방법은 콘텐츠 서버와 같은 제1 네트워크 장비와 사용자 장비와 같은 제2 네트워크 장비 사이의 데이터 흐름 경로를 따라 소정 위치에 구현될 수 있다. 일부 실시예에서, 그리고 다음의 설명의 목적을 위해, 데이터 흐름은 미디어 콘텐츠 파일과 같은 특정 데이터 파일과 연관된 데이터 패킷의 흐름으로서 정의되며, 이는 특정 네트워크 소스로부터 특정 네트워크 목적지로 송신된다.
일부 실시예에서, 시스템 및 방법은, 예를 들어 병목 네트워크 혼잡의 시간으로부터 잉여 네트워크 용량의 후속 인접 순간으로 트래픽을 이동시킴으로써 총 사용자 트래픽을 시간에 걸쳐 더 균등하게 분포시키는 방식으로 공유 액세스 네트워크를 통해 패킷 데이터 콘텐츠를 전달할 수 있다. 이러한 트래픽 재분배의 순 효과는 피크 사용과 혼잡(네트워크가 모든 사용자를 위한 충분한 처리 용량을 공급할 수 없을 때)의 간격을 감소시킬 수 있으며, 이는 네트워크 서비스 품질이 공유 액세스 네트워크의 최종 사용자에 대해 열화되기 이전에 더 높은 허용된 총 네트워크 활용도를 도출할 수 있다.
이하의 설명의 목적상, 용어 "잉여 네트워크 용량"(예를 들어, 유휴 용량)은, 예로서 네트워크를 통해 스트리밍 콘텐츠 데이터 중 일부 또는 전부를 전송하는 전송 매니저 시스템에 의해 사용될 수 있지만, 이런 사용의 부재시 다른 방식으로 사용되지 않는 공유 네트워크 용량(예를 들어, 네트워크 대역폭, 네트워크 리소스)을 의미하는 것으로 이해된다. 달리 말하면, "잉여 네트워크 용량"은 현재 총 네트워크 트래픽 로드 또는 수요를 초과하는 가용 네트워크 대역폭(또는 네트워크 리소스)인 것으로 간주될 수 있다. 예로서, 네트워크 트래픽 용량이 X이고, 현재 총 네트워크 트래픽 로드가 Y인 경우, 이때, 가용 잉여 용량은 X-Y이며, Y는 X보다 클 수 없다. 잉여 네트워크 용량을 사용하는 목적 중 하나는 스트리밍 콘텐츠를 포함하는 콘텐츠를 전송하기 위해 잉여 용량(X-Y) 중 일부 또는 전부를 사용하는 것이며, 이는 잉여 용량(X-Y)이 0인 경우, 전송이 느려지거나 중단되고 동일한 네트워크를 공유하는 다른 사용자의 트래픽에 채널이 생성된다는 것을 의미한다. 네트워크의 잉여 용량(X-Y)이 0이거나 0에 접근할 때, 네트워크는 "혼잡(congested)"(즉, 네트워크 혼잡)인 것으로 고려된다.
일부 경우에, 공유 다중-사용자 데이터 네트워크 내의 잉여 네트워크 용량은 순시적이며, 순간마다 랜덤하게 변동할 수 있다. 또한, 잉여 용량의 사용은 정의된 바와 같이, 네트워크 용량의 공정-공유(fair-share) 또는 유사 경쟁 공유 사용(similarly competitive shared use)(예를 들어, 총 트래픽 로드가 네트워크 용량 제한(X)을 초과할 때, 네트워크를 공유하는 N 사용자 각각은 네트워크 용량의 X/N 몫을 받음)과는 구별된다.
데이터 네트워크가 혼잡할 때, 데이터 패킷(예를 들어, 데이터 흐름)이 네트워크를 통해 오가는 레이트는 통상적으로 열화되어 최적 미만의 데이터 스루풋을 초래한다. 네트워크 혼잡의 요인 중 하나는 "대규모 흐름(elephant flows)" 또는 공유 스루풋 용량을 포함하는 네트워크 리소스의 그 사용에 상대적으로 부담이 되는 다른 유형의 흐름의 존재 또는 존속이다. 대규모 흐름의 예는, 예를 들어 네트워크 대역폭의 많은 부분을 사용하는 미디어 콘텐츠(예를 들어, 비디오 및/또는 오디오 파일)와 연관된 패킷 데이터 흐름을 포함한다. 일부 경우에, 대규모 흐름은 소정 임계 레벨보다 큰 전체 네트워크 대역폭의 부분을 소비하는 데이터 흐름으로서 정의될 수 있다. 다른 경우에, 대규모 흐름은 소정 임계량을 초과하는 데이터 레이트를 갖는 데이터 흐름으로서 정의될 수 있다. 또 다른 경우에, 대규모 흐름은 임계 지속 기간보다 길게 지속되는 데이터 흐름으로서 정의될 수 있다. 물론, 임계 레벨 및 임계량의 값은 예로서, 수반되는 데이터 네트워크의 유형, 최종 사용자의 수, 전체 네트워크 대역폭 등을 포함하는 다수의 요인에 기초한 설계 선택일 수 있다.
도 1a는 실시예에 따른 예시적 네트워크 환경(100)을 예시한다. 예시된 바와 같이, 네트워크 환경(100)은 전송 매니저 시스템(102a*), 사용자 장비(104), 콘텐츠 서버(106), 데이터 네트워크(108) 및 데이터 네트워크(110)를 포함한다. 이하에서, "*"는 와일드카드를 나타냄에 유의한다. 따라서, 예로서 전송 매니저 시스템(102a*)이라고 이하에서 언급하는 것은 도 1a의 전송 매니저 시스템(102a*) 뿐만 아니라 도 1a의 전송 매니저 시스템(102a*)의 두 가지 상이한 구현예인 도 2a의 전송 매니저 시스템(102a') 또는 도 2b의 전송 매니저 시스템(102a")을 지칭할 수 있다. 비록, 도 1a에 명시적으로 예시되어 있지는 않지만, 하나 이상의 추가적 사용자 장비(104) 및 하나 이상의 추가적 콘텐츠 서버(106)가 데이터 네트워크(108) 및/또는 데이터 네트워크(110)와 인터페이싱할 수 있다.
실시예에서, 사용자 장비(104)는 데스크톱 컴퓨터, 워크스테이션, 셋톱 박스, 워크 스테이션, 모바일 컴퓨팅 디바이스(예컨대, 스마트폰 또는 태블릿 컴퓨터), 웨어러블 컴퓨팅 디바이스(예컨대, 스마트워치 또는 증강 현실 안경) 등일 수 있다.
실시예에서, 콘텐츠 서버(106)는 예로서, 비디오 및/또는 오디오 파일 같은 미디어 콘텐츠 및/또는 데이터 파일을, 예로서 사용자 장비(104)를 포함하는 다른 네트워크 노드에 제공하는 서버일 수 있다.
2개의 데이터 네트워크(108, 110)는 사용자 장비(104), 전송 매니저 시스템(102a*) 및 콘텐츠 서버(106) 사이에서 데이터 패킷의 형태로 데이터를 교환하기 위한 경로로서 사용될 수 있다. 예로서, 미디어 콘텐츠 파일, 예컨대, 비디오 또는 오디오 파일이 콘텐츠 서버(106)로부터 사용자 장비(104)로 다운로드되고 있을 때, 미디어 콘텐츠 파일은 콘텐츠 서버(106)로부터 전송 매니저 시스템(102a*)을 통해, 그리고, 데이터 네트워크(108, 110)를 통해 사용자 장비(104)로 라우팅될 수 있다. 예로서, 콘텐츠 서버(106)는 목적지로서 사용자 장비(104)의 네트워크 어드레스(예를 들어, 인터넷 프로토콜(IP) 어드레스)를 포함하는 헤더와 함께 데이터 패킷을 송신함으로써 데이터 네트워크(108, 110)를 통해 사용자 장비(104)에 미디어 콘텐츠 파일을 송신할 수 있다. 실시예에서, 2개의 데이터 네트워크(108, 110)는 2개의 개별 네트워크일 수 있거나, 단일의 대형 기능 네트워크의 부분일 수 있다.
일부 실시예에서, 데이터 네트워크(108)는 사용자 장비(104)에 전송 매니저 시스템(102a*)을 통신 가능하게 링크시키는 액세스 네트워크(AN)일 수 있다. 예로서, 일부 경우에, 데이터 네트워크(108)는 모바일 셀룰러 액세스 네트워크, 예컨대, 2세대(2G) 네트워크, 3세대(3G) 네트워크, LTE(long term evolution) 네트워크, 5세대(5G) 네트워크 등 중 하나일 수 있다. 일부 경우에, 데이터 네트워크(108)는 RAN(radio access network)에 링크되는 서브 노드들의 코어 집단을 포함할 수 있다. 일부 경우에, 데이터 네트워크(108, 110, 114)의 부분은 로컬 영역 네트워크 또는 데이터 센터, 예로서, 모바일 네트워크의 경계에 위치하는 SGi-LAN(Serving Gateway Interface-Local Area Network) 또는 Gi-LAN(Gateway Interface-Local Area Network)일 수 있다.
일부 실시예에서, 콘텐츠 서버(106)를 전송 매니저 시스템(102a*)에 링크하는 데이터 네트워크(110)는 광역 네트워크(WAN)일 수 있으며, 이는 예시의 목적상 인터넷인 것으로 고려될 수 있다.
일부 실시예에서, 콘텐츠 서버(106)와 사용자 장비(104) 사이의 적어도 패킷 데이터 트래픽의 선택된 부분은 전송 매니저 시스템(102a*)을 통과하거나 그와 일직선 상에 있다고 가정할 수 있다. 전송 매니저 시스템(102a*)을 통한 트래픽을 용이하게 하기 위해, 일 실시예에서, 전송 매니저 시스템(102a*)의 물리적 위치는 데이터 네트워크(108)(예를 들어, 셀룰러 또는 Wi-Fi 네트워크와 같은 액세스 네트워크)를 데이터 네트워크(110)(예를 들어, WAN)와 접속하는 더 넓은 트래픽 집성 지점(들)에 있을 수 있다. 예로서, 3세대 파트너십 프로젝트(3GPP) 표준 모바일 네트워크에서, 집성 지점은 SGi-LAN의 일부일 수 있으며, 이는 데이터 네트워크(PDN)-게이트웨이 코어 요소(또는 대안적으로 Gi-LAN 및 게이트웨이 GPRS 지원 노드(GGSN)-게이트웨이)에 접속되고, 밖으로는 인터넷에 접속된다. 그러나 다른 실시예에서, 전송 매니저 시스템(102a*)은 다른 곳에 위치할 수 있다. 일부 실시예에서, 전송 매니저 시스템(102a*)은 하나 이상의 AN을 서빙하는 CDN(Content Delivery Network)의 일부일 수 있다.
도 2a 및 도 2b는 도 1a의 전송 매니저 시스템(102a*)의 2개의 상이한 구현예를 예시하며, 이들은 도 2a에서 전송 매니저 시스템(102a')과 도 2b에서 전송 매니저 시스템(102a")으로서 예시되어 있다. 도 2a에 예시된 바와 같이, 전송 매니저 시스템(102a')은 네트워크 인터페이스(202)(예를 들어, 네트워크 인터페이스 카드 또는 "NIC"), 하나 이상의 프로세서(204), 큐(206)(예를 들어, 버퍼), 흐름 검출기(166) 및 스토리지(208)(예를 들어, 예로서, RAM(random access memory), ROM(read only memory), 플래시 메모리, 디스크 메모리 등을 포함하는 휘발성 및/또는 비휘발성 메모리)를 포함하며, 이들은 버스(210)를 통해 함께 링크되어 있다. 스토리지(208)는 하나 이상의 애플리케이션(214)(예를 들어, 컴퓨터 판독가능 명령어) 및 어떠한 패킷 데이터 흐름이 관리되어야 하는지를 선택 및/또는 결정하기 위한 하나 이상의 정책(216)을 저장할 수 있다.
흐름 검출기(166)는 다른 특징들 중에서, 복수의 데이터 흐름을 모니터링하고, 스토리지(208)에 저장된 또는 다른 소스로부터의 정책들(216) 중 하나 이상에 기초하여 추가 처리/관리를 위해 데이터 흐름 중 하나 이상을 선택하도록 설계될 수 있다. 다양한 실시예에서, 흐름 검출기는 맞춤형 회로(예를 들어, 주문형 집적 회로 또는 ASIC)를 사용하여 구현되거나, 또는 주문형 회로와 하나 이상의 프로세서와 같은 프로그램 가능 회로에 의해 실행되는 소프트웨어의 조합을 채택하여 구현될 수 있다.
도 2a에 추가로 예시된 바와 같이, 전송 매니저 시스템(102a')은 흐름 매니저(212a)를 더 포함하고, 이는 다른 기능들 중에서, 데이터 흐름(즉, 패킷 데이터 흐름)의 전달 성능(예를 들어, 전달 스루풋 또는 다른 전달 파라미터 중 일부)을 측정하도록 설계될 수 있다. 흐름 매니저(212a)는 적어도 부분적으로 데이터 흐름의 측정된 전달 성능에 기초하여 네트워크가 혼잡한지를 검출하고, 네트워크 혼잡을 검출한 것에 응답하여 데이터 흐름의 전달 레이트를 감소시키기 위해 목적지(예를 들어, 사용자 장비(104))로의 데이터 흐름의 전달을 조정함으로써 데이터 흐름을 페이스 조정할 수 있다. 도 2a에 예시된 실시예에서, 흐름 매니저(212a)는 하나 이상의 컴퓨터 판독가능 프로그래밍 명령어(예를 들어, 애플리케이션(214))를 실행하는 하나 이상의 프로세서(204)(또는 다른 프로그램 가능 회로)에 의해 구현된다. 흐름 매니저(212a), 도 2b의 흐름 매니저(212b) 및 도 1b의 흐름 검출기(166)는 본 명세서에 설명될 다양한 기능을 수행하도록 각각 설계되어 있는 로직 유닛이다.
도 2b는, 도 2b에서 전송 매니저 시스템(102a")으로서 예시되어 있는, 도 1a의 전송 매니저 시스템(102a*)의 다른 구현예를 예시한다. 도 2b에 예시된 전송 매니저 시스템(102a")은 도 2a의 전송 매니저 시스템(102a')과 동일한 컴포넌트 중 일부를 포함한다. 그러나 도 2a의 흐름 매니저(212a)와는 달리, 도 2b에 예시된 흐름 매니저(212b)는 소프트웨어(예를 들어, 머신 판독가능 프로그래밍 명령어)를 실행하는 하나 이상의 프로세서(204)를 사용하여 구현되는 대신 맞춤형 회로를 사용하여 구현될 수 있다. 또 다른 실시예에서, 도 2a 또는 도 2b의 흐름 매니저(212*)는 프로그램 가능 회로(예를 들어, 프로세서(204))에 의해 실행되는 소프트웨어와 맞춤형 회로의 조합을 사용하여 구현될 수 있다.
도 1b는 실시예에 따른 다른 예시적 네트워크 환경(150)을 예시한다. 예시된 바와 같이, 네트워크 환경(150)은 도 1a의 전송 매니저 시스템(102a*)과 유사하게 2개의 네트워크 장비(예를 들어, 사용자 장비(104) 및 콘텐츠 서버(106)) 사이에서 데이터 흐름을 관리하도록 설계되는 전송 매니저 시스템(102b*)을 포함한다. 도 2c 및 도 2d는 도 1b의 전송 매니저 시스템(102b*)의 2개의 상이한 구현예를 예시하며, 이들은 도 2c에서 전송 매니저 시스템(102b')과 도 2d에서 전송 매니저 시스템(102b")으로서 예시되어 있다.
도 1b의 전송 매니저 시스템(102b*)(즉, 도 2c의 전송 매니저 시스템(102b') 또는 도 2d의 전송 매니저 시스템(102b'))은 도 1a의 전송 매니저 시스템(102a*)(즉, 도 2a의 전송 매니저 시스템(102a') 또는 도 2d의 전송 매니저 시스템(102a"))에 포함된 것들과 유사한 컴포넌트를 포함한다. 그러나, 도 1a, 도 2a 및 도 2b에 예시된 전송 매니저 시스템(102a*)과는 달리, 도 1b, 도 2c 및 도 2d의 전송 매니저 시스템(102b*)은 흐름 검출기(166)를 포함하지 않는다. 대신, 흐름 검출기(166)는 본 명세서에서 흐름 검출기 시스템(112)이라 지칭되는 별도의 네트워크 디바이스의 부분일 수 있다.
흐름 검출기 시스템(112)은 네트워크 인터페이스(160), 하나 이상의 프로세서(162)(예를 들어, 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU) 등), 스토리지(164)(예를 들어, 휘발성 및/또는 비휘발성 메모리) 및 흐름 검출기(166)를 포함한다. 흐름 검출기(11)는 다른 기능들 중에서, 도 2a 및 도 2b의 흐름 검출기(166)와 유사하게, 데이터 네트워크(108, 110 및 115)를 통해 콘텐츠 서버(106)와 사용자 장비(104) 사이에서 데이터 트래픽을 모니터링 및/또는 샘플링하도록 설계될 수 있다. 도 1b의 흐름 검출기 시스템(112) 및 전송 매니저 시스템(102b*)은 데이터 네트워크(114)에 링크되며, 데이터 네트워크는 일부 실시예에서, 로컬 영역 네트워크 또는 소프트웨어 정의 네트워크, 예컨대, 라우터, 스위치, 게이트웨이 등의 직접 상호접속된 하드웨어 집단으로 구성되는 네트워크 또는 네트워크들일 수 있다. 일부 실시예에서, 3개의 데이터 네트워크(108, 110 및 114)가 단일 기능 네트워크일 수 있다.
실시예에서, 데이터 네트워크(108, 110 및 114)를 오가는 데이터 흐름을 특징짓는 구성된 정책 또는 템플릿에 기초하여 흐름 검출기 시스템(112)에 의한 추가 처리를 위해 선택적 패킷 데이터 흐름이 식별될 수 있다. 예로서, 흐름 검출기 시스템(112)은 흐름을 대규모 흐름으로서 분류하기 위해 평균 스루풋, 전달된 데이터 볼륨, 지속 기간 및 데이터 흐름의 다른 특성을 측정하기 위해 흐름 검출기(166)를 이용할 수 있으며, 대규모 흐름은 공유 스루풋 용량을 포함하는 네트워크 리소스의 비교적 큰 불균형 사용으로 인해 비교적 부담이 되는 유형의 데이터 흐름이다.
데이터 네트워크(108, 110 및 114)를 통해 흐르는 패킷 중 특정 흐름 유형(예를 들어, 대규모 흐름)은 예로서, 컴포넌트 패킷 네트워크 및 패킷의 전송 계층 헤더에 기초하여 결정될 수 있고, 그 헤더는 예로서, IP 소스 및 목적지 어드레스들의 조합, 전송 제어 프로토콜(TCP) 또는 사용자 데이터그램 프로토콜(UDP) 소스 및 목적지 포트들, 프로토콜들(예를 들어, IPv4), 흐름 레이블들(예를 들어, IPv6), 플래그들, 확장 헤더 필드들 등을 포함할 수 있다. 즉, 상이한 패킷은 패킷이, 예로서 동일한 소스 및 목적지 포트, 프로토콜, 흐름 레이블, 확장 헤더 필드 등을 갖는다는 것을 결정하기 위해, 예를 들어 패킷의 헤더를 처리함으로써 동일한 데이터 흐름(또는 가상 흐름)에 속하는 것으로서 식별될 수 있다. 데이터 흐름(즉, 패킷 데이터 흐름)이 식별되고 나면, 데이터 흐름이 대규모 흐름인지를 결정하기 위해 식별된 데이터 흐름에 의해 반송되는 데이터의 양이 확인될 수 있다.
일부 실시예에서, 데이터 흐름은 하나 이상의 흐름의 총 조합의 패킷을 샘플링하고, 규정된 샘플링 지속 기간 내에 측정된 임계 데이터 레이트를 초과하는 흐름을 선택함으로써 대규모 흐름으로서 식별된다. 다른 실시예에서, 데이터 흐름은 각각이 임계 데이터 레이트를 초과하는 다수의 연속적 데이터 레이트 또는 데이터 레이트들의 시퀀스를 측정함으로써 정의될 수 있는 연속 활동 지속 기간 임계치를 초과하는 흐름을 샘플링 및 선택함으로써 대규모 흐름으로서 식별된다. 또 다른 실시예에서, 데이터 흐름은 하나 이상의 흐름의 총 조합의 패킷의 단지 일부를 랜덤하게 샘플링하고, 총 트래픽 대역폭의 비교적 불균형 사용을 나타내는 상대 검출 확률을 초과하는 흐름을 선택함으로써 대규모 흐름으로서 식별된다. 또 다른 실시예에서, 이들 방법은 조합으로 또는 다른 유사한 방법과 함께 사용될 수 있다.
일부 경우에, 네트워크 또는 전송 계층 패킷 데이터 페이로드가 암호화 또는 모호화될 때, 페이로드 헤더는 동일한 패킷 데이터 흐름에 속하는 패킷을 식별하기 위해 처리/검사될 수 있다. 다른 경우에, 패킷 데이터 페이로드가 판독 가능한 경우, 네트워크 또는 전송 패킷 페이로드 내의 정보는 특정 데이터 흐름 또는 데이터 흐름의 유형(예를 들어, 스트리밍 비디오)과 연관된 패킷을 식별하는 것을 추가로 돕기 위해 처리/검사될 수 있다.
일부 실시예에서, 흐름 검출기 시스템(112)이 대규모 흐름 또는 부담이 될 수 있는 다른 흐름을 식별하고 나면, 흐름 검출기 시스템(112)은, 식별된 데이터 흐름 내의 패킷이 소스(예를 들어, 콘텐츠 서버(106))와 목적지(예를 들어, 104) 사이의 종단 간 경로(end to end path)에서 전송 매니저 시스템(102b*)을 통과하게 안내하도록 데이터 네트워크(114)의 패킷 포워딩 로직의 재구성을 트리거할 수 있다. 예로서, 흐름 검출기 시스템(112)은 데이터 네트워크(114)를 포함하는 하나 이상의 라우터 및 스위치에 부담이 되는 흐름의 특성을 통신할 수 있다. 따라서, 동적으로 구성된 포워딩 또는 스위칭 규칙은, 예로서 소프트웨어 정의 네트워킹의 원리를 사용하여 패킷의 종단 간 경로에서 전송 매니저 시스템(102b*)을 통과하기 위해 동일한 데이터 흐름의 후속 패킷을 안내하는데 사용될 수 있다. 그러나 다른 실시예에서, 전송 매니저 시스템(102b*)은 디폴트 규칙에 따라 종단 간 경로에 포함될 수 있으며, 흐름 검출기 시스템(112)은 단지 전송 매니저 시스템(102b*)에게, 검출된 흐름이 하나 이상의 분류 템플릿에 일치하여 검출된 흐름이 처리(예를 들어, 흐름의 전달 레이트를 감소시키도록 흐름 레이트를 페이스 조정)되어야 하고 다른 트래픽 흐름은 처리 없이 포워딩될 수 있다는 것을 통지할 수 있다.
일부 경우에, 흐름은 단방향(즉, 업링크 또는 다운링크 흐름 중 어느 한쪽)일 수 있거나, 접속 엔드포인트들의 통신 쌍에 속하는 반대 방향으로 흐름(예를 들어, 교환되는 목적지와 소스 네트워크 어드레스들, 교환되는 포트 어드레스들, 공통 흐름 레이블 등을 갖는 패킷)과 쌍을 이룸으로써 양방향일 수 있다. 일부 실시예에서, 양방향 흐름 쌍의 방향 둘 모두는 전송 매니저 시스템(102b*)으로 안내될 수 있다.
일부 실시예에서, 흐름 검출기 시스템(112) 및 전송 매니저 시스템(102b*)은 도 1b에 도시된 바와 같이 개별 기능 요소일 수 있거나, 도 1a에 예시된 바와 같이 단일 기능 유닛으로 조합될 수 있다.
도 3은 실시예에 따른 사용자 장비(104)의 블록도이다. 일부 경우에, 모바일 컴퓨팅 디바이스 또는 데스크톱 컴퓨터일 수 있는 사용자 장비(104)는 네트워크 인터페이스(302)(예를 들어, NIC), 하나 이상의 프로세서(304), 사용자 인터페이스(306)(예를 들어, 디스플레이, 스피커, 키보드, 마우스 등을 포함함) 및 스토리지(308)(예를 들어, 휘발성 및/또는 비휘발성 메모리)를 포함할 수 있으며, 이들은 버스(310)를 통해 함께 결합되어 있다. 스토리지(308)는 하나 이상의 애플리케이션(314) 및 하나 이상의 파일(316)(예를 들어, 오디오 및/또는 비디오 파일과 같은 미디어 콘텐츠 파일)을 저장할 수 있다. 일부 실시예에서, 하나 이상의 프로세서(304)는 하나 이상의 컴퓨터 판독가능 명령어(예를 들어, 애플리케이션(314))를 실행하여 도 1a, 도 1b, 도 2a, 도 2b, 도 2c 및 도 2d의 전송 매니저 시스템(102*)에 의해 수행되는 다양한 기능을 용이하게 하도록 설계될 수 있는 에이전트(312)를 구현할 수 있다.
도 4는 실시예에 따른 데이터 흐름을 선택 및 관리하기 위한 프로세스를 예시한다. 일부 구현예에서, 프로세스(400)는 예로서, 흐름 매니저(212*)(도 2a, 도 2b, 도 2c 및 도 2d 참조) 및 흐름 검출기(166)(도 1b, 도 2a 및 도 2b 참조)에 의해 구현될 수 있다. 프로세스(400)는 402에서 예로서, 데이터 흐름이 흐름 검출기(166)에 의해 하나 이상의 데이터 네트워크를 통해 오가는 복수의 데이터 흐름으로부터 관리를 위해 선택될 때 시작한다. 선택되는 데이터 흐름은 콘텐츠 서버(106)와 같은 소스로부터 사용자 장비(104)와 같은 목적지로 송신될 수 있다. 일부 경우에, 데이터 흐름은, 데이터 흐름이 대규모 흐름(예를 들어, 임계 레벨보다 큰 네트워크 대역폭의 부분을 소비하거나 임계량을 초과하는 데이터 레이트를 갖는 데이터 흐름)이라는 결정에 기초하여 선택될 수 있다. 실시예에서, 데이터 흐름은 추가적으로 또는 대안적으로 데이터 흐름을 위한 소스를 결정함으로써 선택될 수 있다. 예로서, 특정 콘텐츠 제공자, 예컨대, 비디오 콘텐츠 제공자와 연계된 소스 어드레스로부터 비롯된 것으로 결정되는 데이터 흐름은 자동으로 관리를 위해 선택될 수 있다.
404에서, 예로서, 흐름 매니저(212*)에 의해 네트워크 혼잡이 검출된다. 네트워크 혼잡을 검출하기 위해 다양한 기술이 사용될 수 있다. 예로서, 일부 구현예에서, 네트워크 혼잡은 선택된 데이터 흐름의 전달 성능을 결정함으로써 검출될 수 있다. 이는 선택된 데이터 흐름을 위한 현재 전달 스루풋을 추정하기 위해 선택된 데이터 흐름과 연관된 패킷이 네트워크가 허용하는 한 가장 빠르게 네트워크를 오가도록 허용함으로써 달성될 수 있다. 일부 실시예에서, 선택된 데이터 흐름의 전달 스루풋을 정확하게 추정하기 위해, 성공적 패킷 수신에 응답하여 목적지(예를 들어, 사용자 장비(104))에 의해 송신되는 확인응답(예를 들어, ACK 패킷)이 모니터링될 수 있다. 네트워크는 그 후, 추정된 전달 스루풋이 일부 경우에 선택된 데이터 흐름을 위해 이전에 검출된 것일 수 있는, 선택된 데이터 흐름을 위한 "피크 스루풋" 미만인 경우, 네트워크가 혼잡한 것으로 결정될 수 있다. 실시예에서, 전달 스루풋은 단위 시간당 목적지에 전달되는 추정된 데이터의 양이고, 피크 스루풋은 선택된 데이터 흐름에 대한 하나 이상의 이전의 이런 전달 스루풋 추정치에 기초한 가장 큰 (예를 들어, 필터링된 또는 평균화된) 추정된 전달 스루풋일 수 있다. 다른 실시예에서, 피크 스루풋은 다른 데이터 흐름에 대한 하나 이상의 이전의 이런 전달 스루풋 추정치에 대한 가장 큰 (예를 들어, 또는 필터링된, 또는 평균화된) 추정된 전달 스루풋일 수 있다. 일부 실시예에서, 가장 큰 추정된 전달 스루풋은 피크 홀드(peak hold), 백분위수 기반 분석, 필터링된 데이터 스루풋 및/또는 평균화된 데이터 스루풋에 기초하여 추정될 수 있다. 일부 경우에, 피크 스루풋은 에이전트(312)에 의해 보고될 수 있다. 다른 경우에, 피크 스루풋은 흐름 매니저(212*)에 의해 추정될 수 있다. 또 다른 경우에, 피크 스루풋은 다른 네트워크 요소에 의해 추정될 수 있다.
즉, 미디어 파일로의 데이터 흐름이 네트워크를 통해 오갈 때, 데이터 흐름의 스루풋은 가용 네트워크 용량/혼잡에 의존하여 빈번히 변동할 것이다. 여분의 네트워크 용량이 존재할 때(예를 들어, 혼잡이 없는)의 시점에서, 연관된 패킷은 최적의 또는 최대의 레이트로 목적지(예를 들어, 사용자 장비(104))에 전달될 것이며, 이는 본 명세서에서 피크 스루풋이라 지칭된다. 데이터 흐름이 피크 스루풋 레벨에서 목적지에 전달되지 않는 것으로 검출될 때의 특정 시점에서, 네트워크는 혼잡한 것으로 결정될 수 있다. 일부 실시예에서, 네트워크 혼잡의 검출은 예로서, 선택된 데이터 흐름의 결정된 전달 성능에 기초하여 네트워크 혼잡의 레벨을 결정하는 것을 포함할 수 있다.
406에서, 검출된 네트워크 혼잡에 기초하여, 목적지로의 데이터 흐름의 전달 레이트를 감소시키기 위해 예로서 흐름 매니저(212*)에 의해 선택된 데이터 흐름이 페이스 조정된다. 일부 실시예에서, 데이터 흐름의 전달 레이트는 목적지로 송신될 패킷들 사이에 대기시간을 추가함으로써 감소될 수 있다. 예로서, 전달 레이트를 늦추기 위하여, 하나 이상의 대기시간이 목적지로 송신될 데이터 흐름의 둘 이상의 패킷의 송신 사이에 추가될 수 있다. 추가될 하나 이상의 대기시간의 양은 예로서, 네트워크 혼잡의 레벨이나 흐름의 결정된 전달 성능에 기초할 수 있다. 실시예에서, 데이터 흐름과 연관된 데이터는 큐(예를 들어, 전송 매니저 시스템(102*)의 큐(306))에서 버퍼링될 수 있다. 실시예에서, 전달 레이트는 시간 간격에 걸쳐 평균 목표 데이터 레이트를 달성하도록 선택된 시간 간격에서의 흐름에 대해 전송 시스템(102*)에 의해 전송된 데이터의 양으로서 정의될 수 있다. 본 명세서에서 사용될 때, 용어 "페이스 조정하는(pace)" 또는 "페이스 조정되는(paced)"은 목표 데이터 레이트가 네트워크 조건에 따라 동적으로 조정, 즉, 증가 또는 감소되는 네트워크 동작을 지칭한다. 실시예에서, 목표 데이터 레이트는 할당된 TCP 공정한 몫(fair share)을 초과하지 않도록 동적으로 조정된다. 실시예에서, 목표 데이터 레이트는 피크 스루풋과 흐름의 현재 추정된 스루풋 사이의 수치적 차이에 비례하여 감소되는 레이트로서 정의될 수 있다. 이러한 수치적 차이가 변동하는 네트워크 조건으로 인해 지속적으로 변하기 때문에, 목표 데이터 레이트도 동적으로(예를 들어, 지속적으로 또는 빈번히) 조정된다.
도 5a 및 도 5b는 일부 실시예에 따른 도 4의 프로세스(400)의 2개의 상이한 구현예인 2개의 프로세스(500 및 550)를 예시한다. 프로세스(500 및 550)는 도 2a, 도 2b, 도 2c 또는 도 2d의 흐름 매니저(212*) 및 도 1b, 도 2a 또는 도 2b의 흐름 검출기(166)에 의해 구현될 수 있다.
일부 경우에, 단일 논리적 흐름이 엔드 포인트로서 사용자 장비(104)를 갖는 둘 이상의 전송 계층 흐름과 연관될 수 있다. 단일 논리적 흐름으로부터의 총 트래픽은, 예로서 도 5a 또는 도 5b에 예시된 동작에 따라 흐름 매니저(212*)에 의해 관리될 수 있다. 예로서, 사용자 장비(104) 상에서 실행되는 애플리케이션은 애플리케이션이 데이터를 전송 및 수신하기 위해 사용할 수 있는 다수의 전송 제어 프로토콜/인터넷 프로토콜(TCP/IP) 흐름을 생성할 수 있다. 다수의 TCP/IP 흐름의 트래픽을 포함하는 단일 논리적 흐름을 연관시키고 관리함으로써, 도 5a 및 도 5b에 예시된 동작은 사용자 장비별 및/또는 사용자 앱별 기준으로 수행될 수 있다. 일부 실시예에서, 각 흐름의 TCP/IP 4-튜플(소스 어드레스(SA), 목적지 어드레스(DA), 소스 포트(SP), 목적지 포트(DP)) 및 프로토콜 ID 또는 (SA, DA, 흐름 레이블)이 공통 사용자 장비 IP 어드레스, 프로토콜 ID 또는 이들의 조합을 공유하는 흐름을 그룹화하기 위해 사용될 수 있다. 다른 실시예에서, IP 어드레스와 연관되는 것으로 알려진 사용자 장비(104)의 고유 ID가 다수의 TCP/IP 흐름을 단일 논리적 흐름으로 그룹화하기 위해 사용될 수 있다.
도 5a는 실시예에 따른, 관리를 위한 데이터 흐름을 선택하고 데이터 흐름을 페이스 조정하기 위한 프로세스(500)를 예시한다. 프로세스(500)는 관리되는 패킷의 네트워크 또는 전송 계층 페이로드가 암호화되는지 암호화되지 않는지 여부에 관계없이 구현될 수 있다. 프로세스(500)는 502에서, 하나 이상의 네트워크를 통해 오가는 데이터 흐름이, 예를 들어 흐름 검출기(166)에 의해 모니터링될 때 시작된다. 일부 구현예에서, 이는 도 1a 또는 도 1b의 전송 매니저 시스템(102*)(또는 도 1b의 흐름 검출기 시스템(112))을 통과하는 네트워크 계층(예를 들어, IP) 및 전송 계층(예를 들어, TCP, UDP) 흐름(예를 들어, 패킷의 TCP/IP 부분)을 모니터링함으로써 달성될 수 있다. 일부 경우에, 모니터링 동작(502)은 더 높은 계층(예를 들어, HTTP 또는 애플리케이션 계층)의 검사를 포함할 수 있다.
흐름 분류 정책의 세트에 기초하여, 흐름 검출기(166)는 504에서 더 엄격한 검사 및 관리를 위해 특정 데이터 흐름을 선택할 수 있다. 예로서, 흐름 검출기(166)는 흐름이 대규모 흐름의 정책 기준을 충족한다고 결정할 수 있다. 다른 예에서, TCP/IP가 채용되는 것을 가정하면, 흐름 검출기(166)는 3-웨이(way) TCP 접속이 확립될 때 수행되는 핸드셰이크에 기초하여 다수의 흐름 패킷의 목적지 IP 네트워크 어드레스가 온라인 비디오 스트리밍 콘텐츠의 주요 상업적 제공자와 연관되어 있다고 결정할 수 있다. 접속의 프로토콜 ID 및 리턴 TCP/IP 4-튜플(SA, DA, SP, DP)이 기록될 수 있고, 그래서 흐름 검출기(166)는 확립된 TCP/IP 흐름에 속하는 입구(AN에 대한 WAN) 패킷을 검출 및 검사할 수 있다.
일부 경우에, 관심 있는 접속 네트워크 계층은 검사되는 패킷의 하나 이상의 캡슐화 프로토콜 내에서 터널링될 수 있고, 이는 흐름 검출기(166)가 소스 및 목적지, 프로토콜 및 확인응답 네트워크 정보 중 하나를 검사하기 위해 하나 이상의 캡슐화 프로토콜을 언랩(unwrap)하는 것을 요구할 수 있다. 암호화에 의해 방해받지 않을 때, 일부 실시예에서, 모니터링 동작(502)은 또한 더 높은 계층(예를 들어, HTTP 또는 애플리케이션 계층)의 검사를 포함할 수 있다.
504에서, 흐름 검출기(166)는 추가로 처리 및 관리될 데이터 흐름을 식별 또는 선택할 수 있다. 흐름 검출기(166)가 흐름 검출기 시스템(112)(도 1b 참조)에 위치될 때, 흐름 검출기(166)는 흐름의 패킷(및, 연관된 리턴 패킷 흐름 패킷)을 전송 매니저 시스템(102*)으로 안내할 수 있다. 대안적으로, 흐름 검출기(166)는 트래픽 리다이렉션이 필요하지 않을 때(예를 들어, 데이터 흐름이 이미 전송 매니저 시스템(102*)을 통해 안내되고 있을 때), 흐름을 관리하기 시작할 것을 전송 매니저 시스템(102*)에 시그널링할 수 있다. 흐름 검출기(166)가 추가 처리 및 관리를 위해 데이터 흐름을 식별 또는 선택하지 않는 경우, 프로세스(500)는 502로 리턴된다.
506에서, 선택된 데이터 흐름의 전달 성능은, 예로서 전송 매니저 시스템(102*)의 흐름 매니저(212*)에 의해 측정된다. 일부 실시예에서, 흐름 매니저(212*)는 측정 페이즈 동안 선택된 데이터 흐름의 전달 성능을 모니터링함으로써 전달 성능을 측정할 수 있다. 측정 페이즈의 일 실시예에서, 흐름의 데이터의 볼륨 및 전송 매니저 시스템(102*)에 의해 사용자 장비(104)에 전송된 데이터의 볼륨의 전달의 타이밍은 평균 전달 스루풋을 결정하기 위해 사용될 수 있다.
일부 실시예에서, 선택된 데이터 흐름(파일 세그먼트를 위한 데이터 흐름일 수 있음)의 수신기(예를 들어, 사용자 장비(104))에 대한 타이밍 및 전달 성능은 흐름 매니저(212*)가 하나 이상의 데이터 패킷을 포워딩할 때 추론될 수 있다. 예로서, 데이터 흐름의 수신기에 대한 전달 성능(예를 들어, 스루풋)은 전송 매니저 시스템(102*)과 수신기(예를 들어, 사용자 장비(104))를 접속하는 네트워크(예를 들어, 데이터 네트워크(108))에서 정상 상태 조건(steady state condition)을 확립하기에 충분할 수 있는 알려진 시간 간격에서 수신기에 전송된 출구 바이트(egress byte)의 수를 카운팅함으로써 확인될 수 있다. 이들 실시예에서, 출구 데이터 패킷에서의 바이트는 수신기로 전달되는 것으로 확인될 수 없으며, 이는 결정된 전달 성능에 오류를 초래할 수 있지만, 이들 오류는 많은 경우에 작게 유지될 수 있어, 무시될 수 있다. 이러한 방법은, 예로서 흐름의 수신기로부터의 리턴 확인응답(ACK) 패킷 정보의 흐름 매니저(212*)에 의한 검출을 지원하지 않거나 복잡해지게 하는 전송 또는 다른 프로토콜 계층(예를 들어, UDP)을 사용하여 사용될 수 있다.
일부 실시예에서, 어구 "정상 상태"는 본 명세서에서 사용될 때 초기 램핑 기간(예를 들어, 흐름의 데이터 패킷의 송신이 램프 업(ramp up)될 때의 초기 시간 간격)이 경과하고 나서 달성되는 데이터 흐름 및/또는 전달 레이트를 언급할 수 있다. 예로서, 흐름의 측정 페이즈 동안, 흐름의 스루풋은 변동할 수 있다(예를 들어, 비교적 느리게 시작한 다음, 소정 간격 이후 지속 평균 레이트를 달성함). 측정 페이즈가 충분히 길지 않거나, 예를 들어 초기 램핑 간격을 배제하지 못하는 경우, 이는 정상 상태를 확립하기에 불충분할 수 있다. 예로서, 모바일 네트워크를 통한 데이터 패킷의 송신은 종종, 하나의 또는 소수의 데이터 패킷을 송신한 후에 정상 상태 조건에 도달할 수 없을 것이다. 사실, 정상 상태를 확립하는 것은 실제로, 다수의 데이터 패킷이 송신되는 동안 일 초 또는 수초가 걸릴 수 있고, 다수의 라운드-트립-시간(송신기에서 수신기로 다시 송신기로) 간격을 지속할 수 있다. 따라서, 정상 상태 측정을 정의하기 위한 한 가지 방식은 특정 시간 간격(예를 들어, 램프 업 시간 간격)이 경과한 이후 이루어지는 흐름 측정으로서 정의될 수 있다. 정상 상태를 달성하는 측정을 정의하는 다른 방식은 측정이 추가적 측정에서 현저히 변하지 않도록 측정 시간 간격이 충분한 레벨로 증가되는 방식이다.
일부 경우에, 선택된 데이터 흐름에서의 데이터 패킷의 타이밍 및 전달 성능은 수신기에 의해 수신되는 데이터 흐름의 전송 계층(또는 다른 프로토콜 계층) 패킷을 수신하는 것에 응답하여 수신기에 의해 송신되는 리턴 ACK 패킷(예를 들어, TCP ACK)을 검사함으로써 확인 및/또는 규명될 수 있다. 예로서, 일부 실시예에서, 흐름 매니저(212*)는 전송 및 확인 응답된 데이터 바이트의 고정 또는 임계 볼륨, 또는 정의된 시간 간격 내에서의 전송 및 확인 응답된 패킷의 수의 타이밍을 사용하여 전달 성능 측정 동작(506)을 시작할 수 있다. 일부 경우에, 수신된 패킷 확인 응답은 터널링된 업링크, 및 또는 파일 세그먼트 패킷의 상위/하위 계층 패킷 페이로드 또는 헤더(예를 들어, 물리적(Physical), 데이터 링크(Data Link), 네트워크(Network), 전송(Transport), 세션(Session), 프리젠테이션(Presentation) 또는 애플리케이션(Application) 계층 헤더 또는 페이로드)에 대한 흐름 매니저(212*)에 의한 검사를 수반할 수 있다.
다른 실시예에서, 전송 매니저 시스템(102*)에 접속하는 동일한 네트워크를 공유하는 하나 이상의 다른 수신기에 대한 데이터 흐름의 전달 성능은 전송 매니저 시스템(102*)과 해당 수신기(예를 들어, 사용자 장비(104)) 사이의 전달 성능을 추론하기 위해 사용될 수 있다. 예로서, 흐름 매니저(212*)는 제1 수신기(예를 들어, 제1 사용자 장비)에 대한 데이터 흐름의 전달 성능을 결정할 수 있고, 제2 수신기(예를 들어, 제2 사용자 장비)가 동일한 공유 네트워크(예를 들어, 동일한 서빙 기지국 라디오 링크) 상에서 동작하는 것으로 알려진 경우, 제2 수신기에 대한 동시 발생 흐름의 전달 성능은 제2 수신기의 데이터 흐름에 대한 별도의 측정 동작을 수행할 필요 없이 추론될 수 있다. 흐름 매니저(212*)는 제1 및 제2 수신기가 기지국을 공유한다는 것을 예를 들어, 수신기의 현재 IP 또는 네트워크 어드레스를 서빙 기지국 ID와 링크시키는 네트워크 정보에 기초하여 결정할 수 있다. 이 방법은, 예를 들어 흐름 매니저(212*)가 제2 수신기의 흐름의 정확한 별도의 측정 페이즈를 수행하는 것을 곤란하게 할 수 있는 전송 또는 다른 프로토콜 계층(예를 들어, UDP)에 대해 사용될 수 있다.
네트워크의 다수의 데이터 흐름의 피크 관찰 스루풋 성능의 레코드를 유지함으로써, 흐름 매니저(212*)는 510에서 피크 스루풋보다 느린 흐름을 검출할 수 있고, 그에 의해, 예를 들어, 병목 네트워크 링크를 공유하는 경합하는 트래픽 흐름으로부터 네트워크 혼잡을 추론할 수 있다.
다수의 데이터 흐름의 정상 상태 네트워크 전달 성능을 결정하는 이러한 방법은 네트워크의 스루풋 용량의 안정된 추정치를 달성하기 위해 다수의 라운드 트립의 전달 시간 간격을 스팬(span)하기에 충분한 길이인 측정된 전달된 데이터 볼륨에 의존 할 수 있다. 이것이 불가능할 때, 흐름 매니저(212*)는 일부 실시예에서, 혼잡을 검출하기 위해 측정된 스루풋의 평균화된 또는 필터링된 값을 사용할 수 있다.
예로서, 일부 실시예에서, 피크 관찰 스루풋 성능은 백분위수, 평균, 가중 평균, 이동 평균 등을 결정하는 것 같은 다수의 데이터 흐름의 하나 이상의 측정된 값의 통계적 가중을 통해 결정될 수 있다. 다른 실시예에서, 피크 스루풋은 트래픽 흐름의 콘텐츠 소스와 목적지 사이의 네트워크 세그먼트 중 하나 이상에 관한 알려진 정보, 예를 들어, 하나 이상의 병목 네트워크 세그먼트의 최대 스루풋에 기초하여 결정될 수 있다.
508에서는, 네트워크 혼잡이 존재하는지에 대한 결정이 이루어진다. 흐름 매니저(212*)는 선택된 데이터 흐름의 현재 스루풋과 피크 스루풋을 비교함으로써 이러한 결정을 수행할 수 있다. 현재 스루풋이 피크 스루풋 이상이면, 프로세스(400)는, 데이터의 전달 성능이 계속 측정되는 506으로 리턴된다. 한편, 현재 스루풋이 피크 스루풋 미만이면, 네트워크는 혼잡한 것으로 결정된다. 네트워크 혼잡이 508에서 검출된 이후, 흐름 매니저(212*)는 일부 실시예에서, 510에서 식별된 데이터 흐름이 동적으로 페이스 조정되는 페이스 조정 동작 모드에 진입할 수 있다.
일부 실시예에서, 선택된 데이터 흐름을 동적으로 페이스 조정하는 것은, 예를 들어 수신기에 송신되는 데이터 패킷의 전달 레이트를 지속적으로 또는 증분적으로 감소 또는 증가시킴으로써 달성될 수 있다. 예를 들어, 흐름 매니저(212*)는, 예로서 적어도 목표 평균 스루풋이 페이스 조정 간격 동안 달성될 때까지 수신기로 송신되는 패킷들 사이에 대기시간을 추가함으로써 수신기로의 선택된 데이터 흐름의 전달 레이트를 감소시킬 수 있다. 데이터 흐름의 전달 레이트가 조정된 이후, 프로세스(500)는, 데이터 흐름의 전달 성능이 다시 측정되는 506으로 리턴될 수 있다.
선택된 데이터 흐름의 전달 레이트를 감소시키기 위하여, 일부 실시예에서, 업스트림 콘텐츠 서버(106)로부터의 인입 네트워크 계층 패킷(예를 들어, IP)은 전송 매니저 시스템(102*)에서 인큐잉되고(enqueued)(예를 들어, 버퍼링되고), 그 후 목표 레이트 정책에 따라 패킷 네트워크(108)(예를 들어, 액세스 네트워크)를 통해 재송신된다. 일부 경우에, 목표 레이트 정책은 검출된 혼잡의 역함수(예를 들어, 혼잡이 증가할 때 목표 레이트가 감소하고, 혼잡이 감소할 때 목표 레이트가 증가함)일 수 있다. 이런 정책하에서, 혼잡이 검출되지 않는 경우 또는 검출된 혼잡이 소정 임계치보다 낮은 경우 페이스 조정(예를 들어, 전달 레이트의 감속 또는 감소)은 필요하지 않을 수 있다. 일부 실시예에서, 검출된 혼잡의 레벨에 따라서, 하나 또는 다수의 파일 세그먼트가 추가된 페이스 조정 대기시간 없이 전달되었을 때, 목표 레이트 스루풋이 네트워크(예를 들어, 패킷 네트워크(108))가 이전에 지원할 수 있는 것으로 관찰되었던 레이트보다 낮도록 목표 레이트가 계산된다.
일부 실시예에서, 페이스 조정은, 평균 송신 레이트가 목표 레벨과 일치되도록 데이터의 유닛(예를 들어, IP 패킷)의 전송을 지연시킴으로써 구현될 수 있다. 예로서, 전송 매니저 시스템(102*)의 (액세스 네트워크) AN-대면(예를 들어, 모바일 네트워크) 출구 인터페이스에서 물리적 인터페이스 처리 용량이 100Mbps이고, 각 데이터 패킷 크기(예를 들어, TCP 페이로드)가 1500바이트인 경우, 2개 인큐잉된 패킷은 2*1500*8/100E6 = 240E-6 초에 연속적으로 전송될 수 있다. 예로서, 600000 bps의 목표 페이스 조정 레이트가 요구된다면, 39.76E-3 초의 지연이 패킷 쌍 송신 사이에 삽입될 수 있다(또는, 일부 실시예에서, 평균적으로 20ms마다 하나의 1500B 패킷을 전송함). 일부 경우에, 목표 송신 레이트 및 버스트 특성을 달성하기 위해 지연을 제어하기 위한 표준 알고리즘이 채택될 수 있다(예를 들어, 토큰-버킷 레이트 제한). 일부 실시예에서, 추가적으로 삽입된 지연은 송신 전송 계층 프로토콜(예를 들어, TCP)에 더욱 점진적으로 레이트 페이스 조정에 적응할 기회를 제공하기 위해 0으로부터 다수 전송 계층 라운드 트립 시간(RTT) 기간에 걸쳐서 램핑될 수 있다.
일부 실시예에서, 페이스 조정 대기시간 없이 그리고 페이스 조정 대기시간을 갖고 전달되는 조합된 데이터가 송신 레이트 목표 레벨을 달성하는 평균 레이트로 전달될 수 있도록, 추가된 페이스 조정 대기시간 없이 목적지(예를 들어, 사용자 장비(104))에 송신되었던 가장 최근에 전달된 데이터를 고려하여 페이스 조정이 수행될 수 있다. 페이스 조정 간격의 지속 기간 또는 페이스 조정 간격의 조정된 스루풋 또는 양자 모두는 송신 레이트 목표 레벨을 달성하기 위해 변경될 수 있음을 이해할 수 있다.
일부 실시예에서, 적어도 페이스 조정된 흐름을 위한 최소의 스루풋이 페이스 조정 간격 동안 계속 전달되도록 페이스 조정 간격의 조정된 스루풋이 일정할 수 있고, 이때, 추가된 페이스 조정 대기시간 없이 송신되었던 가장 최근에 전달된 데이터를 고려하여 송신 레이트 목표 레벨을 달성하기 위해 가변적 페이스 조정 간격이 계산 및 설정된다. 다른 실시예에서, 페이스 조정 간격의 길이는 일정하고, 이때, 추가된 페이스 조정 대기시간 없이 송신되었던 가장 최근에 전달된 데이터를 고려하여 송신 레이트 목표 레벨을 달성하기 위해 가변적인 조정된 페이스 조정 스루풋이 결정된다. 또 다른 실시예에서, 페이스 조정 간격의 조정된 스루풋 및 페이스 조정 간격의 길이 둘 모두는 가변적이고, 정책에 따라 결정될 수 있다. 예로서, 페이스 조정 간격에 대해 고정된 조정된 페이스 조정 스루풋 레이트(예를 들어, 250k 비트/초의 일정한 스루풋 레이트)를 설정하고, 페이스 조정 간격의 조정된 길이(이는 목표 평균 스루풋 레이트에 기초하여 계산될 수 있음)가 임계 최대치(예를 들어, 5초)를 초과하지 않는 정도로 페이스 조정 간격의 시간 길이를 조정하며; 그렇지 않으면, 페이스 조정 간격의 길이는 임계 최대치로 설정되고, 조정된 페이스 조정 스루풋은 송신 레이트 목표 레벨을 달성하도록 설정된다(예를 들어, 조정된다).
일부 실시예에서, 식별된 데이터 흐름의 페이스 조정은 사용자 장비(104)에 의해 콘텐츠 서버(106)로 송신되는 콘텐츠 요청을 전송 매니저 시스템(102*)에서 일시적으로 보류 및 지연함으로써 달성될 수 있다. 본 페이스 조정 방법에서, 흐름 매니저(212*)는 콘텐츠 요청(예를 들어, HTTP GET)을 검사하고, 요청 사용자 장비(104)에 대한 현재 측정된 혼잡 레벨에 따른 대기 간격 동안 콘텐츠 서버(106)에 그 요청을 포워딩하는 것을 지연시킬 수 있다.
일부 실시예에서, 패킷 큐 규칙(예를 들어, 선입선출 - FIFO)이 전송 매니저 시스템(102*)에서 동작할 수 있고, 허용된 최대 큐 깊이는 패킷 손실이 발생하기 전에 허용된 최대 큐잉 대기 시간을 제한하기 위해 시행될 수 있다(예를 들어, 큐가 가득 차면 입구신 패킷은 폐기될 수 있다). 사실상, 페이스 조정 모드의 일부 실시예에서, 전송 매니저 시스템(102*)은 네트워크 계층 패킷 라우터와 유사하게 동작할 수 있지만, 그 출구 인터페이스 스루풋 용량은 다운스트림 네트워크 병목에서의 혼잡 레벨에 따라 흐름에 대해 조정된다. 이러한 방식으로, 전송 매니저 시스템(102*)은 전달된 트래픽 볼륨을, 혼잡이 존재하지 않은 또는 감소되는 시간 간격으로 이동시킬 수 있고, 혼잡 간격 동안 데이터 네트워크(108)로부터 트래픽을 제거할 수 있다. 일부 실시예에서, 전송 매니저 시스템(102*)은 패킷 드롭 또는 삽입된 대기시간 대신 또는 그에 추가로 혼잡을 송신기에게 시그널링하기 위해 패킷 마킹, 예를 들어 네트워크 계층 패킷(예를 들어, IP)의 명시적 혼잡 통지(Explicit Congestion Notification)(ECN)를 사용할 수 있다.
페이스 조정 모드의 일부 실시예에서, 파일 세그먼트의 전달 스루풋은 전송 매니저 시스템(102*)에 의한 패킷 송신들 사이에 추가 대기시간이 도입되지 않았을 경우 데이터 네트워크(108)가 패킷을 얼마나 빠르게 전달할 수 있는지를 반영하지 않을 수 있다. 따라서, 다운스트림 네트워크 혼잡의 실제 상태를 추정하기 위해, 흐름 매니저(212*)는 주기적으로 하나 이상의 파일 세그먼트가 본 명세서에 추가로 설명될 바와 같이 페이스 조정 대기시간의 추가 없이 전송 매니저 시스템(102*)을 오가게 할 수 있다.
도 5b는 실시예에 따른, 관리를 위한 데이터 흐름을 선택하고 데이터 흐름을 페이스 조정하기 위한 프로세스(550)를 예시한다. 전술한 바와 같이, 프로세스(550)는 도 2a, 도 2b, 도 2c 또는 도 2d의 흐름 매니저(212*) 및 도 1b, 도 2a 또는 도 2b의 흐름 검출기(166)에 의해 구현될 수 있다. 일부 실시예에서, 프로세스(550)는 특히 네트워크 또는 전송 계층 페이로드가 암호화되지 않을 때 적용 가능할 수 있다. 예시된 바와 같이, 프로세스(550)는 도 5a의 프로세스(500)에 포함된 동작 중 일부와 동일하거나 유사한 동작을 포함한다. 예로서, 도 5b의 동작들(552, 554, 558 및 560)은 도 5a의 동작 502(예를 들어, 데이터 흐름 모니터링), 504(데이터 흐름의 전달을 관리하는지의 결정), 508(예를 들어, 네트워크 혼잡이 존재하는지의 결정) 및 510(예를 들어, 데이터 흐름의 페이스 조정)과 실질적으로 동일하다.
프로세스(550)는 도 1a 또는 도 1b의 전송 매니저 시스템(102*)(또는 도 1b의 흐름 검출기 시스템(112))을 통과하는 네트워크 계층(예를 들어, IP) 및 전송 계층(예를 들어, TCP, UDP) 흐름(예를 들어, 패킷의 TCP/IP 부분)을, 예를 들어 흐름 검출기(166)에 의해 모니터링할 때인 552에서 시작한다. 일부 경우에, 흐름의 모니터링은, 예를 들어 소스(예를 들어, 콘텐츠 서버(106))로부터 목적지(예를 들어, 사용자 장비(104))로 송신되는 미디어 콘텐츠 파일로의 패킷 흐름을 결정하기 위해 상위 계층(예를 들어, HTTP 또는 애플리케이션 계층)의 검사를 포함할 수 있다. 흐름의 모니터링은 데이터 흐름에 의해 송신되는 데이터의 볼륨, 데이터 흐름의 데이터 송신 레이트 등을 측정하는 것을 추가로 수반할 수 있다.
554에서, 흐름 검출기(166)는 추가로 처리 및 관리될 데이터 흐름을 식별 또는 선택할 수 있다. 흐름 검출기(166)가 흐름 검출기 시스템(112)(도 1b 참조)에 위치될 때, 흐름 검출기(166)는 흐름의 패킷(및, 연관된 리턴 패킷 흐름 패킷)을 전송 매니저 시스템(102*)으로 안내할 수 있다. 대안적으로, 트래픽 리다이렉션이 필요하지 않을 때(예를 들어, 데이터 흐름이 이미 전송 매니저 시스템(102*)을 통해 안내되고 있을 때), 흐름 검출기(166)는 흐름을 관리하기 시작하도록 전송 매니저 시스템(102*)에 시그널링할 수 있다. 추가 처리 및 관리를 위해 어떤 데이터 흐름도 식별되거나 선택되지 않는 경우, 프로세스(550)는 552로 리턴된다.
556에서, 흐름 매니저(212*)는 목적지(예를 들어, 사용자 장비(104))로부터의 파일 세그먼트 요청(예를 들어, 파일 다운로드에 대한 요청)을 검출한다. 예로서, 이는 애플리케이션 계층 페이로드(예를 들어, HTTP GET)를 검사함으로써 직접적으로, 또는 데이터 바이트의 고정 또는 임계 볼륨이나 이들의 구별 가능한 조합에 대하여 정의 가능한 시간 간격 내에서 예를 들어, 알려진 콘텐츠 서버 네트워크 어드레스와 전송 계층 포트 조합, 프로토콜 ID, 흐름 레이블 등에 대한, 업링크 및 다운링크 패킷의 휴리스틱 데이터 패킷 패턴(heuristic data packet pattern)(예를 들어, "핑거프린트")을 비교함으로써 간접적으로 달성될 수 있다. 파일 세그먼트 요청의 검출에 의해, 전송 매니저 시스템(102*)은 파일 다운로드가 곧 시작됨을 확인할 수 있다.
일부 경우에, 접속 요청의 신뢰성 있는 검출(예를 들어, 암호화된 TCP 페이로드)은 요청에 응답하여 다운로드 데이터가 흐르기 시작한 이후에 단지 가끔 일어날 수 있다(예를 들어, 다운링크 데이터 흐름의 볼륨 또는 패턴은 파일 요청이 이루어진 것을 확인한다). 일부 실시예는 파일 다운로드가 진행중이라는 것을 검출하는 다른 방법을 이용할 수 있다.
558에서, 예로서 흐름 매니저(212*)에 의해 네트워크 혼잡이 존재하는지에 대한 결정이 이루어진다. 실시예에서, 흐름 매니저(212*)는 전송 매니저 시스템(102*)과 사용자 장비(104) 사이에서 데이터 네트워크(108)의 혼잡 상태를 결정하기 위해 다양한 기술을 채택할 수 있다. 일부 경우에, 예로서, 다운로드될 파일 세그먼트의 크기 및 파일 세그먼트의 전달의 타이밍은 평균 전달 스루풋을 결정하기 위해 사용될 수 있다.
일부 실시예에서, 파일 세그먼트의 수신기에 대한 타이밍 및 전달 성능은, 예를 들어 네트워크가 허용하는 한 빨리, 흐름 매니저(212*)에 의한 하나 이상의 파일 세그먼트의 포워딩에 의해 추론될 수 있다. 다른 실시예에서, 파일 세그먼트의 타이밍 및 전달 성능은 전송 매니저 시스템(102*)에 의해 전송된 파일 세그먼트의 전송 계층(또는 다른 프로토콜 계층) 패킷에 대응하는 리턴 ACK 패킷(예를 들어, TCP ACK)을 검사함으로써 추가적으로 확인될 수 있다. 예로서, 일부 실시예에서, 흐름 매니저(212*)는 전송되고 확인 응답된 데이터 바이트의 고정 또는 임계 볼륨 또는 정의된 시간 간격 내에서의 전송되고 확인 응답된 패킷의 수의 타이밍을 사용하여 혼잡 상태 결정을 시작할 수 있다. 일부 경우에, 수신된 패킷 확인 응답은 터널링된 업링크, 및 또는 파일 세그먼트 패킷의 상위/하위 계층 패킷 페이로드 또는 헤더(예를 들어, 물리적, 데이터 링크, 네트워크, 전송, 세션, 프리젠테이션 또는 애플리케이션 계층 페이로드 또는 계층 헤더)에 대한 흐름 매니저(212*)에 의한 검사를 수반할 수 있다.
특정 데이터 흐름 동안 피크 관찰 스루풋 성능의 레코드를 유지함으로써, 흐름 매니저(212*)는 피크 스루풋보다 느린 데이터 흐름 동안 파일 세그먼트 전달을 검출할 수 있고, 그에 의해, 예를 들어, 병목 네트워크 링크를 공유하는 경합하는 트래픽 흐름의 결과로서 네트워크 혼잡을 추론할 수 있다.
이러한 네트워크 혼잡 결정 방법은 네트워크 스루풋 용량의 안정된 추정을 달성하기 위해 다수의 라운드 트립 시간의 전달 시간 간격을 스팬하기에 충분한 길이로 이루어지는 전달된 파일 세그먼트 크기를 필요로 할 수 있다. 그렇지 못한 경우, 흐름 매니저(212*)는 일부 실시예에서, 혼잡을 검출하기 위해 다수의 파일 세그먼트의 측정된 스루풋의 평균화된 또는 필터링된 값을 사용할 수 있다.
예로서, 일부 실시예에서, 피크 관찰 스루풋 성능은 백분위수, 평균, 가중 평균, 이동 평균 등 같은 하나 이상의 측정된 값의 통계를 통해 결정될 수 있다. 일부 실시예에서, 피크 스루풋은 트래픽 흐름의 소스와 목적지 사이의 네트워크 세그먼트 중 하나 이상에 관한 알려진 정보, 예를 들어, 하나 이상의 병목 네트워크 세그먼트의 최대 스루풋에 기초하여 결정될 수 있다. 현재 스루풋을 피크 스루풋과 비교함으로써, 네트워크 혼잡이 존재하는지에 대한 결정이 이루어질 수 있다. 558에서, 네트워크 혼잡이 검출되지 않는 경우(예를 들어, 현재 스루풋이 피크 스루풋과 같거나 실질적으로 같은 경우), 프로세스(550)는 다른 파일 세그먼트 요청을 검출하기 위해 556으로 리턴된다. 한편, 558에서 네트워크 혼잡이 검출되는 경우, 전송 매니저 시스템(102*)은 일부 실시예에서, 식별되거나 선택된 데이터 흐름이 560에서 동적으로 페이스 조정되는 동작의 페이스 조정 모드에 진입할 수 있다.
전술한 바와 같이, 데이터 흐름의 페이스 조정은 데이터 흐름의 전달 레이트를 지속적으로 또는 증분적으로 하향 조정하는 것을 수반할 수 있다. 데이터 흐름의 전달 레이트가 조정된 이후, 프로세스(550)는 다른 파일 세그먼트 요청이 검출되는 556으로 리턴될 수 있다. 파일 세그먼트 요청을 검출하고, 네트워크 혼잡을 결정하고, 데이터 흐름을 페이스 조정하는 이 프로세스(예를 들어, 556, 558 및 560)는 전체 파일이 목적지로 다운로드될 때까지 반복될 수 있다.
도 6a는 실시예에 따른 데이터 흐름의 전달 스루풋을 관리하기 위한 프로세스를 예시한다. 일부 경우에, 프로세스(600)는 일반적으로 도 5a의 506, 508 및 510에 대응할 수 있다. 실시예에서, 프로세스(600)는 도 2a, 도 2b, 도 2c 또는 도 2d의 흐름 매니저(212*)에 의해 구현될 수 있다. 프로세스(600)는 전송 매니저 시스템(102*)의 흐름 매니저(212*)가 파일 세그먼트 전달 요청, 및 예를 들어, 콘텐츠 서버로부터의 대응하는 응답을 모니터링 및 검사할 수 없는 경우(예를 들어, 애플리케이션 프로토콜 계층 내에 포함된 정보를 판독할 수 없는 경우)에도 구현될 수 있다.
프로세스(600)는 선택된 데이터 흐름(예로서, 도 5a의 동작(502 및 504)을 통해 선택됨)의 전달 스루풋이 결정될 때인 602에서 시작한다. 본 명세서에서 추가로 설명될 바와 같이, 선택된 데이터 흐름의 전달 스루풋은 전달 스루풋을 결정하기 위한, 예컨대, 시간 간격 동안, 전송 매니저 시스템(102*)이 사용자 장비(104)로 전송할 수 있으면서 액세스 네트워크(예를 들어, 데이터 네트워크(108))가 허용하는 선택된 데이터 흐름의 데이터 패킷의 수를 카운팅하기 위한 하나 이상의 가용한 기술을 사용하여 결정될 수 있다. 다른 기술은 다른 실시예에서 선택된 데이터 흐름의 전달 스루풋을 추정하기 위해 채택될 수 있다.
604에서, 전송 매니저 시스템(102*)과 사용자 장비(104) 사이에 네트워크 혼잡이 존재하는지에 대한 결정이 이루어진다. 실시예에서, 이는 현재 결정된 전달 스루풋을, 사용자 장비(104)에 다운로드되는 파일 세그먼트와 연관한 선택된 데이터 흐름에 대한 이력적 피크 스루풋과 비교하는 것을 수반할 수 있다. 네트워크 혼잡이 검출되지 않는 경우, 프로세스(600)는 602로 리턴되고, 그렇지 않은 경우, 프로세스(600)는 606으로 이동한다. 602 및 604에 관련한 특정 세부사항은 도 6b의 프로세스(650)를 참조로 아래에서 제공될 것이다.
606에서, 목표 전달 스루풋이 604에서 결정된 네트워크 혼잡의 레벨에 기초하여 계산된다. 실시예에서, 추정된 목표 전달 스루풋은 선택된 데이터 흐름에 대한 피크 스루풋보다 작은 스루풋이다. 그리고, 대부분의 경우에, 목표 전달 스루풋은 602에서 결정된 스루풋보다 작다. 실시예에서, 목표 전달 스루풋은 결정된 네트워크 혼잡의 레벨에 적어도 부분적으로 기초하여 계산될 수 있다.
608에서, 목적지(예를 들어, 사용자 장비(104))로의 선택된 데이터 흐름의 전달은 계산된 목표 전달 스루풋 레이트에 일치하는 전달 스루풋 레이트를 사용한 목적지로의 선택된 데이터 흐름의 전달에 의해 재개된다. 선택된 데이터 흐름의 전달은 적어도 데이터 흐름이 중단될 때까지(예를 들어, 더 이상 전달할 데이터가 없을 때) 지속될 수 있으며, 이는 일부 경우에는 데이터 전달 일시중단 이후의 시간초과, 또는 흐름 접속 끊김(예를 들어, TCP 4-웨이 핸드셰이크), 접속 리셋, 흐름 활동 시간초과 또는 흐름이 더 이상 활성이 아니라는 유사한 표시를 관찰한 것에 기초할 수 있다.
610에서, 전송 매니저 시스템(102*)에 의해 수신된 선택된 데이터 흐름으로부터의 데이터는, 예를 들어 전송 매니저 시스템(102*)의 큐(206)에서 버퍼링(예를 들어, 큐잉)된다.
612에서, 목적지로의 선택된 데이터 흐름의 전달은 목표 전달 스루풋을 달성하기 위해 목적지(예를 들어, 사용자 장비(104))에 대한 전송 매니저 시스템(102*)에 저장된 버퍼링된 데이터의 흐름을 조정함으로써 페이스 조정된다.
614에서, 네트워크 혼잡 추정치(604에서 추정된 바와 같이)가 업데이트될 필요가 있는지에 대한 결정이 이루어진다. 이런 업데이트가 필요하지 않은 경우, 프로세스(600)는 608로 리턴된다. 한편, 네트워크 혼잡 추정치가 업데이트될 필요가 있는 경우, 프로세스(600)는 602로 리턴된다. 602로 리턴함으로써, 새로운 또는 업데이트된 네트워크 혼잡 레벨에 대한 결정이 이루어질 수 있으며, 이는 그 후 목적지에 대한 데이터 흐름의 전달 레이트를 조정하기 위해 사용될 수 있다.
즉, 일부 실시예에서, 프로세스(600)는 선택된 데이터 흐름의 페이스 조정 모드 전달로부터의 종료를 유발하고 프로세스(600)의 시작으로 루프 백하는 것에 의해, 전송 매니저 시스템(102*)과 목적지 사이의 데이터 네트워크(108)의 혼잡 상태(예를 들어, 이를 결정하기 위한 페이스 조정되지 않은 패킷의 샘플링)에 대한 업데이트를 주기적으로(예를 들어, N 번째 전달된 파일 세그먼트 마다, 미리 결정된 시간 간격 또는 간격들 이후 또는 임계량의 데이터가 전달된 이후) 트리거할 수 있다.
일부 실시예에서, 추정된 네트워크 혼잡에 대한 업데이트가 필요한지 여부에 영향을 미칠 수 있는 조건은, 예를 들어 전송 매니저 시스템(102*)과 통신하는 다른 사용자 장비 단말로부터의 다른 접속이 동일한 데이터 네트워크(108) 또는 그 병목 스루풋 부분의 혼잡 상태에 대해 최근에 보고되었는지 여부를 포함한다. 그러나 실시예는 업데이트가 필요한지 여부에 영향을 미치는 다른 조건을 사용할 수 있다.
도 6b를 참조하면, 이는 실시예에 따른, 선택된 데이터 흐름의 전달 스루풋을 결정하고 네트워크 혼잡이 존재하는지를 결정하기 위한 프로세스(650)를 예시한다. 프로세스(650)는 도 6a의 동작(602 및 604)에 일반적으로 대응한다. 일부 실시예에서, 프로세스(650)는 도 2a, 도 2b, 도 2c 또는 도 2d의 전송 매니저(102*)에 의해 구현될 수 있다. 프로세스(650)는 선택된 데이터 흐름(예로서, 도 5a의 동작(502 및 504)에 의해 선택된 바와 같은)이 652에서 측정될 때 시작한다. 일부 실시예에서, 선택된 데이터 흐름의 측정은 전송 매니저 시스템(102*)에 의해 사용자 장비(104)에 전송되는 선택된 데이터 흐름과 연관된 패킷을 카운팅하는 것을 수반할 수 있다.
654에서, 타이머가 시작된다. 타이머가 시작되고 나면, 전송 매니저 시스템(102*)(및, 보다 구체적으로 흐름 매니저(212*))은 전송 매니저 시스템(102*)에 의해 전송되는 선택된 데이터 흐름과 연관된 패킷을 계속 카운트한다. 카운팅은 적어도, 다운스트림 네트워크 전달 스루풋의 신뢰성 있는 정상 상태 추정치를 달성하기에 충분한 데이터가 전송 및/또는 전달될 때까지 계속될 수 있다. 이러한 결정은 경과 시간, 전달 레이트, 전송 계층 ACK 사이클의 수, 전달된 데이터의 볼륨 등이나 이들의 임의의 조합에 기초할 수 있다.
658에서, 현재 전달 스루풋이 계산 및 기록된다. 실시예에서, 계산은 656에서 이루어진 데이터 흐름 측정에 기초할 수 있다.
660에서, 선택된 데이터 흐름에 대한 피크 스루풋이 업데이트되어야 하는지에 대한 결정이 이루어진다. 피크 스루풋은 일부 경우에 특정 데이터 흐름과 연관될 수 있을 것임에 유의하여야 한다. 예로서, 미디어 콘텐츠 파일과 연관된 데이터 흐름이 사용자 장비(104)로 다운로드되는 중일 때, 데이터 흐름의 전달 스루풋은 네트워크 혼잡 및 다른 네트워크 조건(예를 들어, 신호 대 잡음비 또는 SNR, 네트워크 노드 위치, 신호 강도 등)에 따라 크게 스윙될 수 있다. 데이터 흐름의 스루풋은 어떠한 네트워크 혼잡도 없는 상황에 대응할 수 있는 피크 스루풋으로부터, 예를 들어 네트워크가 실질적으로 혼잡 될 때의 매우 더 낮은 스루풋까지 스윙될 것이다. 따라서, 피크 스루풋은 데이터 흐름이 목적지로 전달되고 있는 동안 새로운 피크가 검출되는 경우 임의의 주어진 시점에서 업데이트될 필요가 있을 수 있다.
선택된 데이터 흐름에 대한 피크 스루풋이 업데이트될 필요가 있다는 결정이 이루어지는 경우, 피크 스루풋이 662에서 업데이트된다. 한편, 어떠한 업데이트도 필요하지 않은 경우, 프로세스(650)는, 네트워크 혼잡이 존재하는지에 대한 결정이 이루어지는 664로 이동한다. 실시예에서, 네트워크 혼잡은 계산된 스루풋이 피크 스루풋(비-혼잡 동작에서의 네트워크 전달 능력의 오래된 추정치를 피하기 위해 지속적으로 또는 주기적으로 다시 리셋될 수 있음) 미만으로 떨어질 때 식별될 수 있다.
네트워크 혼잡이 검출되지 않는 경우, 프로세스(650)는 적어도 데이터 흐름이 중단될 때까지(예를 들어, 더 이상 전달될 데이터가 없을 때까지) 654로 리턴된다. 한편, 네트워크 혼잡이 검출되는 경우, 전송 매니저 시스템(102*)과 사용자 장비(104) 사이의 데이터 네트워크(108)가 사실상 혼잡된 것이라는 결정이 전송 매니저 시스템(102*)(및, 보가 구체적으로 흐름 매니저(212*))에 의해 이루어진다.
프로세스(650)의 측정 페이즈(예를 들어, 동작들(652, 654 및 656)) 동안, 모니터링된 또는 샘플링된 데이터 흐름은 연속적일 수 있거나 연속적이지 않을 수 있다. 콘텐츠 서버(106) 및/또는 사용자 장비(104)가 선택된 데이터 흐름에서의 중단을 유발하는 상황이 존재할 수 있다. 예로서, 미디어 플레이어 애플리케이션은 자신의 런타임 플레이백 버퍼를 충전할 수 있으며, 비디오 스트리밍 서버로부터의 데이터에 대한 요청을 일시적으로 중지할 수 있다. 이런 시나리오에서, 측정 페이즈는 데이터 흐름에 대한 네트워크 전달 성능의 인위적으로 낮은 추정치를 결정할 수 있다. 따라서, 측정 페이즈에는 측정을 진행하기 이전에 데이터 흐름이 활성인 것을 보장하도록 램프-업 페이즈(예를 들어, 602의 일부로서)가 선행될 수 있다. 일부 실시예에서 램프-업 페이즈는 흐름에 대한 데이터의 임계 볼륨, 임계 활성 시간 또는 이들 또는 유사 기준의 조합이 도달될 때까지 지속될 수 있다. 램프-업 페이즈는 데이터 흐름에 대한 비활성이 검출될 때마다 재진입될 수 있다.
도 7a는 실시예에 따른 데이터 흐름의 전달 스루풋을 관리하기 위한 프로세스를 예시한다. 일부 경우에, 프로세스(700)는 일반적으로 도 5b의 556, 558 및 560에 대응할 수 있다. 실시예에서, 프로세스(600)는 도 2a, 도 2b, 도 2c 또는 도 2d의 흐름 매니저(212*)에 의해 구현될 수 있다. 일부 경우에, 프로세스(700)는 전송 매니저 시스템(102*)의 흐름 매니저(212*)가 파일 세그먼트 전달 요청 및 예를 들어, 콘텐츠 서버로부터의 대응 응답을 검출 및 검사할 수 있을 때(예를 들어, 애플리케이션 프로토콜 계층 내에 포함된 암호화되지 않은 정보를 판독할 수 있을 때), 특히 유용할 수 있다.
프로세스(700)는, 선택된 데이터 흐름(예를 들어, 도 5b의 동작(552 및 554)을 통해 선택되는 바와 같은)과 연관되면서 목적지(예를 들어, 사용자 장비(104))에 전달되는 파일 세그먼트에 대한 전달 스루풋이 결정될 때인 702에서 시작한다. 일부 실시예에서, 파일 세그먼트는 사용자 장비(104)로부터 콘텐츠 서버(106)로 전송되는 파일 세그먼트 요청(예를 들어, HTTP 바이트-레인지 요청)에 응답하여 전송 매니저 시스템(102*)을 통해 사용자 장비(104)로 중계된다. 파일 세그먼트 요청은 전송 매니저 시스템(102*)에 의해 검출될 수 있다. 파일 세그먼트의 후속하는 전달(페이스 조정 간섭 없이)은, 예를 들어 도 7b에 예시된 바와 같은 프로세스를 사용하여 전송 매니저 시스템(102*)을 통과할 때 다운스트림 네트워크 스루풋을 프로브하기 위해 사용될 수 있다.
704에서, 전송 매니저 시스템(102*)과 사용자 장비(104) 사이에 네트워크 혼잡이 존재하는지에 대한 결정이 이루어진다. 실시예에서, 이는 현재 결정된 전달 스루풋을, 사용자 장비(104)에 다운로드되는 파일 세그먼트와 연관된 선택된 데이터 흐름에 대한 이력적 피크 스루풋과 비교하는 것을 수반할 수 있다. 네트워크 혼잡이 검출되지 않는 경우, 프로세스(700)는 702로 리턴되고, 그렇지 않은 경우, 프로세스(7600)는 706으로 이동한다. 702 및 704에 관련한 특정 세부사항은 도 7b의 프로세스(750)를 참조로 아래에서 제공될 것이다.
706에서, 목표 전달 스루풋은 704에서 결정된 네트워크 혼잡의 레벨에 기초하여 계산된다. 실시예에서, 추정된 목표 전달 스루풋은 선택된 데이터 흐름에 대한 피크 스루풋보다 작은 스루풋일 것이다. 그리고, 대부분의 경우에, 목표 전달 스루풋은 702에서 결정된 스루풋보다 작을 것이다. 실시예에서, 목표 전달 스루풋은 결정된 네트워크 혼잡의 레벨에 적어도 부분적으로 기초하여 계산될 수 있다.
708에서, 선택된 데이터 흐름과 연관되고 사용자 장비(104)에 의해 전송되는 파일 세그먼트 요청이 검출된다.
710에서, 전송 매니저 시스템(102*)에 의해 수신되고 요청된 파일 세그먼트와 연관된 데이터는, 예를 들어 전송 매니저 시스템(102*)의 큐(206)에서 버퍼링(예를 들어, 큐잉)된다.
712에서, 요청된 파일 세그먼트와 연관된 데이터의 목적지(예를 들어, 사용자 장비(104))로의 전달은 목표 전달 스루풋을 달성하기 위해 전송 매니저 시스템(102*)에 저장된 버퍼링된 데이터의 흐름을 조정함으로써 페이스 조정된다.
714에서, 네트워크 혼잡 추정치가 업데이트될 필요가 있는지에 대한 결정이 이루어진다. 이런 업데이트가 필요하지 않은 경우, 그후, 프로세스(700)는 708로 리턴된다. 일부 경우에, 708에서 원래 검출될 수 있는 파일 세그먼트 요청은 전체 파일에 대한 것일 수 있으며, 이러한 경우에, 프로세스(700)는 혼잡 업데이트가 필요하지 않을 때(예를 들어, 동작(702 및 704)이 필요하지 않을 때) 파일의 전달을 지속하기 위해 710으로 루프 백한다. 한편, 네트워크 혼잡 추정치가 업데이트될 필요가 있는 경우, 프로세스(700)는 702로 리턴된다. 702로 리턴됨으로써, 새로운 또는 업데이트된 네트워크 혼잡 레벨에 대한 결정이 이루어질 수 있으며, 이는 그 후 목적지에 대한 데이터 흐름의 전달 레이트를 조정하기 위해 사용될 수 있다.
도 7a의 714에 관하여 설명된 바와 같이, 네트워크 혼잡 추정치를 업데이트하기 위한 시기를 결정할 때 다양한 요인이 고려될 수 있다. 예로서, 네트워크 혼잡 추정치는, 일부 경우에는 주기적으로(예를 들어, N 번째 전달된 파일 세그먼트 마다, 미리 결정된 시간 간격 또는 간격들 이후 또는 임계량의 데이터가 전달된 이후), 업데이트될 수 있다.
일부 실시예에서, 추정된 네트워크 혼잡에 대한 업데이트가 필요한지 여부에 영향을 미칠 수 있는 조건은, 예를 들어 전송 매니저 시스템(102*)과 통신하는 다른 사용자 장비 단말로부터의 다른 접속이 동일한 데이터 네트워크(108) 또는 그 병목 스루풋 부분의 혼잡 상태에 대해 최근에 보고되었는지 여부를 포함한다. 그러나 실시예는 업데이트가 필요한지 여부에 영향을 미치는 다른 조건을 사용할 수 있다.
도 7b는 실시예에 따른, 선택된 데이터 흐름과 연관된 파일 세그먼트의 전달 스루풋을 결정하고 네트워크 혼잡이 존재하는지를 결정하기 위한 프로세스(750)를 예시한다. 프로세스(750)는 도 7a의 동작(702 및 704)에 일반적으로 대응한다. 일부 실시예에서, 프로세스(750)는 도 2a, 도 2b, 도 2c 또는 도 2d의 전송 매니저(102*)에 의해 구현될 수 있다. 프로세스(750)는, 선택된 데이터 흐름(예를 들어, 도 5b의 동작(552 및 554)에 의해 선택된 바와 같은 데이터 흐름)과 연관된 파일 세그먼트 요청(예를 들어, HTTP 바이트-레인지 요청)이 752에서 검출될 때 시작한다.
754에서, 타이머가 시작된다. 타이머가 시작되고 나면, 전송 매니저 시스템(102*)(및, 보다 구체적으로 흐름 매니저(212*))는 목적지(예를 들어, 사용자 장비(104))에 의해 송신되는 후속 파일 세그먼트 요청을 전송 매니저 시스템(102*)이 756에서 검출할 때까지 선택된 데이터 흐름을 모니터링할 수 있다. 일부 실시예에서, 선택된 데이터 흐름의 모니터링은, 예를 들어 전송 매니저 시스템(102*)으로부터 파일 세그먼트 패킷의 성공적 전달/수신시 목적지(예를 들어, 사용자 장비(104))에 의해 송신되는 리턴 ACK 패킷을 모니터링하는 것을 수반할 수 있다.
758에서, 요청된 파일 세그먼트에 대한 스루풋이 계산 및 기록된다. 일부 경우에, 스루풋은 타이머의 시작과 후속 파일 세그먼트 요청이 756에서 검출된 때 사이의 시간 간격 동안 사용자 장비(104)에 전달된 요청된 파일 세그먼트와 연관된 데이터의 양을 확인함으로써 계산될 수 있다. 전달된 데이터 양을 시간 간격으로 나눔에 의해, 스루풋이 계산될 수 있다.
일부 실시예에서, 전송 매니저 시스템(102*)이 파일 세그먼트 응답의 시작 패킷과 종료 패킷을 식별할 수 있는 경우, 시작 패킷과 종료 패킷의 수신 사이에 경과한 시간의 양을 결정하는 것이 파일 세그먼트 요청 커맨드의 타이밍을 참조할 필요 없이 파일 세그먼트의 다운스트림 스루풋을 직접적으로 측정하기 위해 대안적으로 사용될 수 있다(예를 들어, file_segment_size/time_interval). 전체 파일에 대하여 단지 단일 파일 요청만이 발생할 수 있는 경우의 시나리오에서 전달을 파일 세그먼트로 분할하기 위해 유사한 방법이 사용될 수 있다.
760에서, 선택된 데이터 흐름에 대한 피크 스루풋이 업데이트되어야 하는지에 대한 결정이 이루어진다. 피크 스루풋은 일부 경우에 특정 데이터 흐름과 연관될 수 있을 것임에 유의하여야 한다. 예로서, 미디어 콘텐츠 파일과 연관된 데이터 흐름이 사용자 장비(104)로 다운로드되는 중일 때, 데이터 흐름의 전달 스루풋은 네트워크 혼잡 및 다른 네트워크 조건(예를 들어, 신호 대 잡음비 또는 SNR, 네트워크 노드 위치, 신호 강도 등)에 따라 크게 스윙될 수 있다. 데이터 흐름의 스루풋은 어떠한 네트워크 혼잡도 없는 상황에 대응할 수 있는 피크 스루풋으로부터, 예를 들어 네트워크가 실질적으로 혼잡된 때의 매우 더 낮은 스루풋까지 스윙될 수 있다. 따라서, 피크 스루풋은 데이터 흐름이 목적지로 전달되고 있는 동안 새로운 피크가 검출되는 경우 임의의 주어진 시점에서 업데이트될 필요가 있을 수 있다.
선택된 데이터 흐름에 대한 피크 스루풋이 업데이트될 필요가 있다는 결정이 이루어지는 경우, 피크 스루풋은 762에서 업데이트된다. 한편, 어떠한 업데이트도 필요하지 않은 경우, 프로세스(750)는, 네트워크 혼잡이 존재하는지에 대한 결정이 이루어지는 764로 이동한다. 실시예에서, 네트워크 혼잡은 계산된 스루풋이 피크 스루풋(비-혼잡 동작에서의 네트워크 전달 능력의 오래된 추정치를 피하기 위해 지속적으로 또는 주기적으로 다시 리셋될 수 있음) 미만으로 떨어질 때 식별될 수 있다.
네트워크 혼잡이 검출되지 않는 경우, 이때, 프로세스(750)는 적어도 데이터 흐름이 중단될 때까지(예를 들어, 더 이상 전달될 데이터가 없을 때까지) 754로 리턴된다. 한편, 네트워크 혼잡이 검출되는 경우, 전송 매니저 시스템(102*)과 사용자 장비(104) 사이의 데이터 네트워크(108)가 사실상 혼잡이라는 결정이 전송 매니저 시스템(102*)(및, 보다 구체적으로 흐름 매니저(212*))에 의해 이루어진다.
일부 실시예에서, 이런 정보가 전송 매니저 시스템(102*)에 이용 가능한 경우, 혼잡 결정은 네트워크 유형, 네트워크 부착 정보(예를 들어, 기지국 ID, 셀 ID)에 의해 영향을 받을 수 있다.
일부 실시예에서, 전송 매니저 시스템(102*)은 전송 계층 세그먼트/ACK의 다운스트림 라운드 트립 시간(RTT)의 계산 및 RTT의 변화 레이트의 관찰(예를 들어, 혼잡이 증가할 때 증가함)과 같은 혼잡을 검출하는 대안적 방법을 사용할 수 있다. RTT 및 ACK 처리는 전송 계층 이외의 프로토콜 계층(예를 들어, TCP 또는 UDP)을 사용하여 구현될 수 있다.
일부 경우에, 사용자 장비(104)에 전달되는 요청된 파일 세그먼트는 758에서 다운스트림 네트워크 전달 스루풋의 안정적인 정상 상태 추정을 가능하게 하는 충분히 큰 데이터 크기를 갖는다. 이러한 결정은 전체 경과 시간, 순차적 송신기/수신기 전송 계층 ACK 사이클의 수, 전달된 데이터의 볼륨 또는 유사한 기준에 기초할 수 있다. 그러나 이 요건은 다른 경우에는 필요하지 않을 수 있다.
일부 예에서, 정상 상태는 전송 계층 프로토콜 혼잡 제어 상태 머신이 다수의 데이터 패킷을 전송한 이후에만 달성될 수 있다. 일반적으로, 단일 전송 계층 세그먼트 또는 소수 세그먼트는 충분하지 않을 수 있다. 전달 세션 프로토콜에 따라서, 단일 파일 세그먼트 응답이 충분할 수 있거나, 다수의 순차적 요청/응답 사이클이 필요할 수 있고, 이 경우 응답 전달 스루풋 측정은 평균화 또는 필터링될 수 있다. 예로서, 현대의 스트리밍 미디어 프로토콜에서, 파일 요청은, 항상 네트워크 정상 상태 스루풋 용량의 안정적인 추정을 허용하기에 충분히 크지는 않지만 빈번한 데이터의 인코딩된 비디오 "청크(chunk)"(예를 들어, 128k바이트)에 대해 종종 이루어진다.
정상 상태가 구축되고 나면, 측정된 스루풋은 758에서 계산될 수 있고, 피크 스루풋 추정치는 762에서 필요시 업데이트될 수 있다.
다운스트림 네트워크 혼잡이 764 및 766에서 검출되는 경우, 전송 매니저 시스템(102*)은 페이스 조정 모드에서 선택된 데이터 흐름에 관하여 동작할 수 있다(예를 들어, 도 7a에 예시된 동작(710 및 712)).
간략히 전술한 바와 같이, 일부 실시예에서, 사용자 장비(104)는 에이전트(312)를 채택할 수 있다. 에이전트(312)는 하나 이상의 머신 판독가능 명령어를 실행하는 하나 이상의 프로세서(304)(또는 다른 유형의 프로그램 가능 회로)에 의해 구현되는 소프트웨어 에이전트일 수 있다. 다른 실시예에서, 에이전트(312)는 사용자 장비(104)와 인터페이싱하는 액세스 네트워크(예를 들어, 데이터 네트워크(108))와 연관될 수 있는 다른 네트워크 요소(예를 들어, 기지국, 기지국 제어기 등)에 상주할 수 있다.
일부 실시예에서, 에이전트(312)는 단말 식별(예를 들어, 사용자 장비 식별) 및 네트워크 상태 보고와 같은 특정 동작 및 과제로 전송 매니저 시스템(102*)을 보조할 수 있다. 추가적으로, 에이전트(312)는 다른 동작 및 과제로 전송 매니저 시스템(102*)을 보조할 수 있다.
도 8은 실시예에 따라 에이전트와 상호작용하기 위한 프로세스를 예시한다. 일부 실시예에서, 프로세스(800)는 전송 매니저 시스템(102*)에 의해 구현될 수 있다.
프로세스(800)는 전송 매니저 시스템(102*)이 에이전트(312)를 등록할 때 시작한다. 에이전트(312)의 등록은, (예를 들어, 사용자 장비(104)와 원격 콘텐츠 서버 사이에 존재할 수 있는) 데이터 흐름의 발견을 보조하기 위해, 에이전트 고유 식별자(UI)(예를 들어, 에이전트의 IMEI(international mobile station equipment identity)) 및 에이전트와 연관된 대응하는 사용자 장비의 현재 네트워크 데이터 어드레스(예를 들어, IP)에 기초할 수 있다. 등록은 또한, 사용자 장비(104)와 전송 매니저 시스템(102*) 사이의 제어 데이터 접속의 셋업을 가능하게 하여, "푸시" 메시지 능력을 용이하게 할 수 있다. 등록은 사용자 장비(104)가 온라인 상태가 되고, 그 네트워크 데이터 어드레스를 변경하고, 서빙 네트워크 유형을 변경하는 등이 이루어질 때마다 반복될 수 있다.
804에서, 전송 매니저 시스템(102*)(또는 흐름 검출기 시스템(112))은 미지의 파일 전달 세션의 시작을 검출할 수 있다. 등록 동안, 에이전트 및 전송 매니저 시스템(102*)은 에이전트(312)와 연관된 사용자 장비(104)의 IP 어드레스와 같은 소정 정보를 교환할 수 있다.
806에서, 미지의 파일 전달 세션과 연관된 에이전트(312)의 신원은 파일 전달 세션의 패킷을 검사함으로써 결정된다. 예로서, 미지의 파일의 전달과 연관된 사용자 장비(104)(특정 에이전트(312)와 추가로 연관될 수 있음)는 일부 경우에 TCP/IP 패킷(예를 들어, 등록 동안 에이전트(312)에 의해 보고된 바와 같이 사용자 장비(104)의 IP 어드레스로 식별됨)의 애플리케이션 페이로드를 검사함으로서 검출될 수 있다.
808에서, 전송 매니저 시스템(102*)은, 사용자 장비(104)로의 데이터 흐름의 관리시 전송 매니저 시스템(102*)에 유용할 수 있는 정보의 보고를 시작하도록 에이전트(312)에게 프롬프트할 것을 사용자 장비(104)에 시그널링할 수 있다. 일부 실시예에서, 보고될 수 있는 정보는, 주기적으로 결정 및 보고될 수 있는 현재 라디오 링크 품질(예를 들어, 최대 스루풋 용량의 관점에서), 현재 네트워크 유형(예를 들어, 3세대(3G), HSPA(High Speed Packet Access), LTE(Long Term Evolution), Wi-Fi(Wireless Fidelity) 등), 현재 부착 위치(예를 들어, BSID(Bay Station Identification), Cell_ID, 위도/경도, GPS(Global Positioning System), SSID(Service Set Identification) 등), 현재 서빙 오퍼레이터(예를 들어, "XYZ 무선"), 사용자 디바이스 리소스 상태(예를 들어, 로우-배터리, 이동성 상태, 프로세서 상태), 사용자 디바이스 애플리케이션 상태(예를 들어, "미디어 플레이어 애플리케이션 XYZ 활성") 등 중 하나 이상을 포함한다.
810에서, 전송 매니저 시스템(102*)은 파일 전달 세션의 종료를 검출할 수 있다. 812에서, 파일 전달 세션의 종료의 검출 이후, 전송 매니저 시스템(102*)은 보고를 중단할 것을 사용자 장비(104)에 시그널링할 수 있다. 일부 실시예에서, 에이전트(312)는 보고를 독립적으로 중단할 수 있다(예를 들어, 네트워크 유형의 변경, 로우-배터리, 활성 데이터 세션 없음, 비행 모드 진입 등에 기초함).
일부 실시예에서, 에이전트(312)는 추가적으로 또는 대안적으로 네트워크의 스루풋 용량의 자체 평가를 수행할 수 있고(예를 들어, 연관된 사용자 장비(104)와 원격 데이터 전달 소스 사이에서, 또는 사용자 장비 단말들의 집단을 서빙하는 기지국에 대하여), 이는 또한 전송 매니저 시스템(102*)에 보고될 수 있다. 이런 시나리오에서, 전송 매니저 시스템(102*)은 네트워크 혼잡에 대한 자체 평가 대신 또는 그에 추가하여 혼잡을 결정하기 위해 에이전트(312)로부터의 보고를 사용할 수 있다.
일부 실시예에서, 송신기(예를 들어, 콘텐츠 서버(106)) 및 수신기(예를 들어, 사용자 장비(104)) 사이의 전송 계층 접속 경로를 전송 매니저 시스템(102*)에서 2개 경로로 분할하는 것이 가능할 수 있다. 디폴트 단일-경로 버전에서, 전송 매니저 시스템(102*)에 의한 페이스 조정은 영향을 받은 트래픽의 레이트를 변조하도록 의도된 제어 메커니즘으로서 전송 계층 세그먼트(RTT 변동)의 타이밍을 변경할 수 있다. 일부 전송 혼잡 제어 알고리즘(예를 들어, TCP 혼잡 회피)은 엔드 투 엔드 RTT에서 큰 스텝 변화에 비효율적으로 응답할 수 있다. 경로를 독립적 전송 계층 상태 머신을 갖는 2개의 별개의 경로로 분할하는 것은, 전송 매니저 시스템(102*)이 별개의 전송 계층 접속의 엔드 투 엔드 스루풋 레이트를 여전히 변조하도록 하면서 TCP 혼잡 제어 알고리즘을 방해하지 않고 페이스 조정을 수행하는 한가지 방식일 수 있다.
일부 상황에서, 전송 매니저 시스템(102*)은 흐름의 수신기로부터 나오는 패킷 수신 ACK(예를 들어, 암호화된 페이로드를 갖는 확인 응답되지 않은 UDP)를 신뢰성 있게 검출할 수 없을 수 있다. 이는 전송 매니저 시스템(102*)에 의한 네트워크 혼잡 및 트래픽 흐름의 전달 성능의 결정을 복잡하게 할 수 있다. 이들 상황에서, 전송 매니저 시스템(102*)은, 목적지(예를 들어, 사용자 장비(104))가 다수의 방식 중 하나로 흐름에서 ACK 패킷을 송신하게 하기 위해 동작하도록 설계될 수 있다.
예로서, 전송 매니저 시스템(102*)은 일부 실시예에서, 이런 패킷을 수신한 에이전트(312)가 삽입된 TCP 패킷을 확인 응답하도록, 전송 계층 흐름에서 하나 이상의 UDP 패킷 각각이 전송된 이후, 추가 전송 계층(예를 들어, TCP) 패킷을 삽입할 수 있다. 삽입된 TCP 패킷은 동일한 사용자 장비(104) 상의 UDP 패킷 목적지 애플리케이션 이외의 에이전트(312)에 안내될 수 있다. 사용자 장비(104)에 의한 하나 이상의 UDP 패킷의 성공적 수신은 그 후 대응하는 TCP ACK 수신시 전송 매니저 시스템(102*)에 의해 추론될 수 있다. 다른 실시예에서, 전송 매니저 시스템(102*)은 확인 응답되지 않은 전송 흐름 패킷(예를 들어, UDP)의 헤더 또는 페이로드, 또는 다른 프로토콜 계층에 플래그를 설정하거나 확장 필드를 삽입할 수 있고, 이는 수신 사용자 장비(104) 또는 애플리케이션(314)이 전송 흐름 패킷 수신을 확인 응답하게 하거나 전송 흐름 패킷이 수신되었다는 것을 나타내게 한다.
다른 상황(예를 들어, UDP 또는 TCP)에서, 전송 매니저 시스템(102*)은 흐름의 수신기로부터 패킷 수신 ACK를 검출할 필요가 없거나 에이전트(312)를 필요로 하지 않는 모드에서 동작할 수 있다.
전술한 방법 및 예가 일반적으로 원격 서버(예를 들어, 콘텐츠 서버(106))로부터 사용자 장비(104)로의 방향으로 흐르는 콘텐츠 데이터에 관련되지만, 전술한 방법 및 시스템은 전술한 방법 및 시스템의 주요 세부사항을 변경하지 않고 단말 사용자 장비(104)로부터 원격 서버로 콘텐츠 데이터를 전달하는 역방향으로 동등하게 적용될 수 있다.
본 기술의 양태가 특정 예에 관하여 설명되었지만, 본 기술의 실시예는 이들 예에 한정되지 않는다. 예로서, 본 기술분야의 통상의 기술자는 조건부로 유휴 네트워크 용량을 사용함으로써 데이터를 다운로딩하는 것이 본 기술의 개념 또는 범주로부터 벗어나지 않고 다양한 다른 알고리즘 및 프로세스에 따라 수행될 수 있다는 것을 알 수 있을 것이다.

Claims (24)

  1. 방법으로서,
    제1 네트워크 장비로부터 제2 네트워크 장비로 송신되는 제1 데이터 패킷을 검사하는 단계 - 제1 네트워크 장비 및 제2 네트워크 장비는 서로 원격으로 위치되고 적어도 하나의 네트워크에 의해 링크됨 -;
    상기 제1 데이터 패킷의 데이터 흐름을 결정하는 단계;
    상기 데이터 흐름의 데이터 흐름 유형을 결정하는 단계;
    상기 데이터 흐름 유형이 제1 유형일 경우, 흐름 관리 프로세스를 수행하지 않고 상기 제1 데이터 패킷을 상기 제2 네트워크 장비로 송신되도록 하는 단계; 및
    상기 데이터 흐름 유형이 제2 유형일 경우, 상기 흐름 관리 프로세스를 위해 상기 제1 데이터 패킷을 선택하는 단계를 포함하고,
    상기 흐름 관리 프로세스는,
    데이터 흐름 경로를 통한 데이터 흐름의 전달 스루풋을 결정하는 단계 - 상기 데이터 흐름 경로는 복수의 네트워크 노드를 갖고 상기 제1 네트워크 장비와 상기 제2 네트워크 장비 사이의 공유된 접속이며, 상기 전달 스루풋은 상기 데이터 흐름 경로를 통한 상기 제1 네트워크 장비로부터 상기 제2 네트워크 장비로의 데이터 전송 레이트에 관한 것임 -;
    상기 결정된 전달 스루풋을 상기 제2 네트워크 장비로 송신되는 데이터 패킷에 대한 예상 데이터 스루풋 용량과 비교하여 상기 데이터 흐름 경로 상의 네트워크 혼잡을 검출하는 단계; 및
    네트워크 혼잡이 상기 데이터 흐름 경로 상에서 검출될 경우, 상기 제2 네트워크 장비로의 상기 제1 네트워크 장비에 의한 복수의 데이터 패킷들의 송신을 페이스 조정하는(pacing) 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 데이터 흐름 유형의 제2 유형은, 임계 레벨보다 더 큰 네트워크 대역폭의 부분을 소비하는 대규모 흐름(elephant flow)이거나, 임계량을 초과하는 데이터 레이트를 갖거나, 시간의 임계량 보다 길게 지속되거나, 이들의 조합을 포함하는, 방법.
  3. 제1항에 있어서, 상기 데이터 흐름의 데이터 흐름 유형은 상기 제1 데이터 패킷의 소스에 기초하여 상기 제2 유형으로 결정되는, 방법.
  4. 제1항에 있어서, 상기 흐름 관리 프로세스는 상기 제1 네트워크 장비로부터 원격으로 위치하는 제3 네트워크 장비에 의해 수행되고, 상기 제1 네트워크 장비는 콘텐츠 제공자에 대응하는, 방법.
  5. 제1항에 있어서, 상기 제2 네트워크 장비가 상기 제1 네트워크 장비로부터 하나 이상의 데이터 패킷을 수신하는 것에 응답하여 상기 제2 네트워크 장비에 의해 송신되는 하나 이상의 확인 응답(ACK) 패킷을 사용하여 상기 예상 데이터 스루풋 용량을 결정하는 단계를 더 포함하는 방법.
  6. 제5항에 있어서, 상기 하나 이상의 ACK 패킷을 송신하기 위해 상기 제2 네트워크 장비를 프롬프트하는 단계를 더 포함하는 방법.
  7. 제1항에 있어서, 상기 제2 네트워크 장비로의 상기 제1 네트워크 장비에 의한 복수의 데이터 패킷들의 송신을 페이스 조정하는 단계는:
    상기 제1 데이터 패킷을 갖는 복수의 데이터 패킷들을 큐에 버퍼링하는 단계를 포함하는 방법.
  8. 제1항에 있어서, 상기 제2 네트워크 장비로의 상기 제1 네트워크 장비에 의한 복수의 데이터 패킷들의 송신을 페이스 조정하는 단계는,
    복수의 데이터 패킷들의 데이터 패킷들이 상기 제2 네트워크 장비로 송신되기 전에 상기 복수의 데이터 패킷들의 데이터 패킷들의 송신 사이에 하나 이상의 대기시간을 추가하는 단계를 포함하는 방법.
  9. 전송 매니저 시스템으로서,
    서로 통신 가능하게 결합된 하나 이상의 프로세서, 네트워크 인터페이스, 큐, 및 스토리지를 포함하고, 상기 스토리지는 컴퓨터 실행가능 명령어들을 저장하며, 상기 컴퓨터 실행가능 명령어들은 하나 이상의 프로세서에 의해 실행될 때 상기 전송 매니저 시스템으로 하여금:
    제1 네트워크 장비로부터 제2 네트워크 장비로 송신되는 제1 데이터 패킷을 검사하고 - 제1 네트워크 장비 및 제2 네트워크 장비는 서로 원격으로 위치되고 하나 이상의 데이터 네트워크에 의해 링크됨 -;
    상기 제1 데이터 패킷의 데이터 흐름을 결정하고;
    상기 데이터 흐름의 데이터 흐름 유형을 결정하고;
    상기 데이터 흐름 유형이 제1 유형일 경우, 흐름 관리 프로세스를 수행하지 않고 상기 제1 데이터 패킷을 상기 제2 네트워크 장비로 송신되도록 하고;
    상기 데이터 흐름 유형이 제2 유형일 경우, 상기 흐름 관리 프로세스를 수행하여 상기 제1 데이터 패킷의 상기 제2 네트워크 장비로의 송신을 제어하고,
    상기 흐름 관리 프로세스는,
    데이터 흐름 경로를 통한 데이터 흐름의 전달 스루풋을 결정하고 - 상기 데이터 흐름 경로는 복수의 네트워크 노드를 갖고 상기 제1 네트워크 장비와 상기 제2 네트워크 장비 사이의 공유된 접속이며, 상기 전달 스루풋은 상기 데이터 흐름 경로를 통한 상기 제1 네트워크 장비로부터 상기 제2 네트워크 장비로의 데이터 전송 레이트에 관한 것임 -;
    상기 결정된 전달 스루풋을 상기 제2 네트워크 장비로 송신되는 데이터 패킷에 대한 예상 데이터 스루풋 용량과 비교하여 상기 데이터 흐름 경로 상의 네트워크 혼잡을 검출하고;
    검출된 네트워크 혼잡에 기초하여, 상기 제2 네트워크 장비로의 상기 제1 네트워크 장비에 의한 복수의 데이터 패킷들의 송신을 페이스 조정하는, 전송 매니저 시스템.
  10. 제9항에 있어서, 상기 전송 매니저 시스템은 상기 하나 이상의 데이터 네트워크와 통신하는, 전송 매니저 시스템.
  11. 제9항에 있어서, 상기 하나 이상의 데이터 네트워크는 제1 데이터 네트워크 및 제2 데이터 네트워크를 포함하고, 상기 전송 매니저 시스템은 상기 제1 데이터 네트워크 및 제2 데이터 네트워크 사이의 인터페이스에 위치되는, 전송 매니저 시스템.
  12. 제9항에 있어서, 상기 컴퓨터 실행가능 명령어들은 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 전송 매니저 시스템으로 하여금 상기 제2 네트워크 장비가 상기 제1 네트워크 장비로부터 하나 이상의 패킷을 수신하는 것에 응답하여 상기 제2 네트워크 장비에 의해 송신되는 하나 이상의 확인 응답(ACK) 패킷을 사용하여 상기 예상 데이터 스루풋 용량을 결정하게 하는, 전송 매니저 시스템.
  13. 제9항에 있어서, 상기 예상 데이터 스루풋 용량은 상기 제2 네트워크 장비로 송신되는 데이터 패킷에 대한 가장 큰 추정된 데이터 스루풋에 대응하는, 전송 매니저 시스템.
  14. 제9항에 있어서,
    상기 제2 네트워크 장비로의 상기 제1 네트워크 장비에 의한 복수의 데이터 패킷들의 송신을 페이스 조정하는 것은, 상기 복수의 데이터 패킷들의 데이터 패킷들이 상기 제2 네트워크 장비에 송신되기 전에 상기 복수의 데이터 패킷들의 데이터 패킷들의 송신 사이에 하나 이상의 대기시간을 추가하는 것을 포함하고, 상기 하나 이상의 대기시간의 양은 상기 결정된 전달 스루풋에 기초하는, 전송 매니저 시스템.
  15. 시스템으로서,
    하나 이상의 프로세서;
    네트워크 인터페이스;
    큐;
    흐름 검출기 로직 유닛 - 상기 흐름 검출기 로직 유닛은:
    제1 네트워크 장비로부터 제2 네트워크 장비로 송신되는 제1 데이터 패킷을 검사하고 - 제1 네트워크 장비 및 제2 네트워크 장비는 서로 원격으로 위치되고 하나 이상의 데이터 네트워크에 의해 링크됨 -;
    상기 제1 데이터 패킷의 데이터 흐름을 결정하고;
    상기 데이터 흐름의 데이터 흐름 유형을 결정하고;
    상기 데이터 흐름 유형이 제1 유형일 경우, 흐름 관리 프로세스를 수행하지 않고 상기 제1 데이터 패킷을 상기 제2 네트워크 장비로 송신되도록 하고;
    상기 데이터 흐름 유형이 제2 유형일 경우, 상기 흐름 관리 프로세스를 수행하여 상기 제1 데이터 패킷의 상기 제2 네트워크 장비로의 송신을 제어하도록 구성됨 -; 및
    상기 흐름 관리 프로세스를 수행하도록 구성된 흐름 매니저 로직 유닛 - 상기 흐름 매니저 로직 유닛은:
    데이터 흐름 경로를 통한 데이터 흐름의 전달 스루풋을 결정하고 - 상기 데이터 흐름 경로는 복수의 네트워크 노드를 갖고 상기 제1 네트워크 장비와 상기 제2 네트워크 장비 사이의 공유된 접속이며, 상기 전달 스루풋은 상기 데이터 흐름 경로를 통한 상기 제1 네트워크 장비로부터 상기 제2 네트워크 장비로의 데이터 전송 레이트에 관한 것임 -;
    상기 결정된 전달 스루풋을 상기 제2 네트워크 장비로 송신되는 데이터 패킷에 대한 예상 데이터 스루풋 용량과 비교하여 상기 데이터 흐름 경로 상의 네트워크 혼잡을 검출하고;
    상기 검출된 네트워크 혼잡에 기초하여, 상기 제2 네트워크 장비로의 상기 제1 네트워크 장비에 의한 복수의 데이터 패킷들의 송신을 페이스 조정하여, 상기 흐름 관리 프로세스를 수행하도록 구성됨 -
    을 포함하는 시스템.
  16. 제1항에 있어서, 상기 예상 데이터 스루풋 용량은, 상기 제1 네트워크 장비로부터 상기 제2 네트워크 장비로 더 이른 시간에 전달되는 데이터 패킷에 기초하여 결정된 기준 스루풋인, 방법.
  17. 제16항에 있어서,
    상기 제1 데이터 패킷의 전달 스루풋이 상기 기준 스루풋보다 크면, 상기 기준 스루풋을 상기 제1 데이터 패킷의 전달 스루풋으로 업데이트하는 단계를 더 포함하고,
    상기 업데이트 된 기준 스루풋은 다음 흐름 관리 프로세스에서 상기 예상 데이터 스루풋 용량으로서 사용되는, 방법.
  18. 제1항에 있어서, 상기 제2 유형의 데이터 흐름 유형은 미디어 파일의 데이터를 포함하는 데이터 흐름들을 포함하는, 방법.
  19. 제1항에 있어서, 상기 제1 데이터 패킷과 페이스 조정된 복수의 데이터 패킷들은 동일한 미디어 파일에 대한 데이터를 포함하는, 방법.
  20. 제1항에 있어서, 상기 제2 네트워크 장비는 모바일 디바이스이고, 상기 데이터 흐름 경로는 무선 링크를 포함하는, 방법.
  21. 제1항에 있어서, 상기 복수의 데이터 패킷들의 송신을 페이스 조정하는 단계는, 상기 데이터 흐름 경로의 혼잡 레벨에 따라 복수의 데이터 패킷들의 송신을 페이스 조정하는 단계를 포함하는, 방법.
  22. 삭제
  23. 삭제
  24. 삭제
KR1020177028039A 2015-03-03 2016-03-03 데이터 흐름을 페이스 조정하기 위한 시스템 및 방법 KR102536208B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020237017106A KR102583750B1 (ko) 2015-03-03 2016-03-03 데이터 흐름을 페이스 조정하기 위한 시스템 및 방법

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201562127753P 2015-03-03 2015-03-03
US62/127,753 2015-03-03
US201562207529P 2015-08-20 2015-08-20
US62/207,529 2015-08-20
US201662277320P 2016-01-11 2016-01-11
US62/277,320 2016-01-11
PCT/US2016/020774 WO2016141239A1 (en) 2015-03-03 2016-03-03 Systems and methods for pacing data flows

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020237017106A Division KR102583750B1 (ko) 2015-03-03 2016-03-03 데이터 흐름을 페이스 조정하기 위한 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20180004401A KR20180004401A (ko) 2018-01-11
KR102536208B1 true KR102536208B1 (ko) 2023-05-25

Family

ID=56848671

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020237017106A KR102583750B1 (ko) 2015-03-03 2016-03-03 데이터 흐름을 페이스 조정하기 위한 시스템 및 방법
KR1020177028039A KR102536208B1 (ko) 2015-03-03 2016-03-03 데이터 흐름을 페이스 조정하기 위한 시스템 및 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020237017106A KR102583750B1 (ko) 2015-03-03 2016-03-03 데이터 흐름을 페이스 조정하기 위한 시스템 및 방법

Country Status (7)

Country Link
US (4) US10270700B2 (ko)
EP (1) EP3266170B1 (ko)
JP (1) JP6672340B2 (ko)
KR (2) KR102583750B1 (ko)
CN (1) CN107637032A (ko)
ES (1) ES2902497T3 (ko)
WO (1) WO2016141239A1 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2499237A (en) * 2012-02-10 2013-08-14 Ibm Managing a network connection for use by a plurality of application program processes
ES2766267T3 (es) * 2013-11-20 2020-06-12 Opanga Networks Inc Pre-entrega fraccional de contenido a dispositivos de usuario
WO2016033052A1 (en) * 2014-08-26 2016-03-03 Ctera Networks, Ltd. Method and system for routing data flows in a cloud storage system
US9813299B2 (en) * 2016-02-24 2017-11-07 Ciena Corporation Systems and methods for bandwidth management in software defined networking controlled multi-layer networks
CN110121898B (zh) * 2016-09-13 2021-08-27 欧庞戈网络有限公司 切换产生大象流的设备终端的方法和系统和传输管理器
US11805034B1 (en) 2016-12-07 2023-10-31 Reservoir Labs, Inc. Systems and methods for detecting large network flows
WO2018201084A1 (en) 2017-04-28 2018-11-01 Opanga Networks, Inc. System and method for tracking domain names for the purposes of network management
US11095535B2 (en) 2017-08-15 2021-08-17 Gigamon Inc. Adaptive and flexible packet sampling
US10972358B2 (en) 2017-08-30 2021-04-06 Citrix Systems, Inc. Inferring congestion and signal quality
US11153175B2 (en) * 2017-10-16 2021-10-19 International Business Machines Corporation Latency management by edge analytics in industrial production environments
JP6928256B2 (ja) * 2017-11-02 2021-09-01 富士通株式会社 パケット解析プログラム、パケット解析装置、及び、パケット解析方法
US10778568B2 (en) * 2017-12-05 2020-09-15 Mellanox Technologies, Ltd. Switch-enhanced short loop congestion notification for TCP
CN108227614A (zh) * 2018-01-25 2018-06-29 郑州云海信息技术有限公司 一种基于fpga的数据流控制模块、控制方法及电路
WO2019148041A1 (en) 2018-01-26 2019-08-01 Opanga Networks, Inc. Systems and methods for identifying candidate flows in data packet networks
US10924418B1 (en) * 2018-02-07 2021-02-16 Reservoir Labs, Inc. Systems and methods for fast detection of elephant flows in network traffic
CN112136305A (zh) * 2018-03-23 2020-12-25 欧庞戈网络有限公司 虚拟联网环境中的协调数据共享
JP7198102B2 (ja) * 2019-02-01 2022-12-28 日本電信電話株式会社 処理装置及び移動方法
WO2020204771A1 (en) * 2019-04-01 2020-10-08 Telefonaktiebolaget Lm Ericsson (Publ) Methods and arrangements for managing round trip time associated with provision of a data flow via a multi-access communication network
US11115294B2 (en) 2019-05-07 2021-09-07 Gigamon Inc. Automatic dynamic determination of data traffic sampling policy in a network visibility appliance
US11792114B2 (en) 2019-05-23 2023-10-17 Hewlett Packard Enterprise Development Lp System and method for facilitating efficient management of non-idempotent operations in a network interface controller (NIC)
KR102622252B1 (ko) * 2019-05-27 2024-01-08 삼성에스디에스 주식회사 콘텐츠 전송 장치 및 방법
CN112566145A (zh) * 2019-09-25 2021-03-26 深圳市中兴微电子技术有限公司 一种拥塞控制的方法、装置、计算机存储介质及终端
US11432313B2 (en) * 2020-05-29 2022-08-30 Apple Inc. Detecting cellular network bottlenecks through analysis of resource allocation patterns
TWI763261B (zh) * 2021-01-19 2022-05-01 瑞昱半導體股份有限公司 數據流分類裝置
US11838209B2 (en) * 2021-06-01 2023-12-05 Mellanox Technologies, Ltd. Cardinality-based traffic control
KR102471228B1 (ko) * 2022-04-04 2022-11-28 서울대학교산학협력단 네트워크의 패킷 흐름에 대한 공격성 파라미터 동적 제어 방법 및 장치
US20230397047A1 (en) * 2022-06-07 2023-12-07 Microsoft Technology Licensing, Llc Alleviating cell congestion in wireless networks

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140237118A1 (en) * 2013-02-19 2014-08-21 Broadcom Corporation Application Aware Elephant Flow Management
US20140269319A1 (en) * 2013-03-15 2014-09-18 International Business Machines Corporation Network per-flow rate limiting
US20140313909A1 (en) * 2013-04-19 2014-10-23 Dust Networks, Inc. Monitoring of channel stability and interference in wireless networks

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3558044B2 (ja) * 2001-02-09 2004-08-25 日本電気株式会社 パケット転送レート監視制御装置、方法、及びプログラム
JP3853784B2 (ja) * 2003-12-19 2006-12-06 エヌ・ティ・ティ・アドバンステクノロジ株式会社 データ通信管理方法
US7436773B2 (en) * 2004-12-07 2008-10-14 International Business Machines Corporation Packet flow control in switched full duplex ethernet networks
JP4328794B2 (ja) * 2006-10-19 2009-09-09 株式会社エヌ・ティ・ティ・ドコモ 通信システム、通信装置、及び送信制御方法
JP4942040B2 (ja) * 2007-07-18 2012-05-30 国立大学法人電気通信大学 通信装置および通信方法
US7853710B2 (en) * 2008-10-15 2010-12-14 Patentvc Ltd. Methods and devices for controlling the rate of a pull protocol
JP5036743B2 (ja) * 2009-02-20 2012-09-26 日本電信電話株式会社 フロー制御方法とシステムおよびプログラム
WO2011022104A1 (en) * 2009-08-19 2011-02-24 Opanga Networks, Inc. Optimizing channel resources by coordinating data transfers based on data type and traffic
US8340105B2 (en) * 2009-12-18 2012-12-25 Alcatel Lucent Coordination independent rate adaptation deployment methods and systems
WO2011115965A1 (en) * 2010-03-15 2011-09-22 Movik Networks Adaptive chunked and content-aware pacing of multi-media delivery over http transport and network controlled bit rate selection
US9124515B2 (en) * 2010-11-22 2015-09-01 Hewlett-Packard Development Company, L.P. Elephant flow detection in a computing device
WO2012141160A1 (ja) * 2011-04-12 2012-10-18 沢井製薬株式会社 ピタバスタチン含有製剤及びその製造方法
US20140026931A1 (en) * 2012-07-26 2014-01-30 Yu Chieh LEE Pivot mechanism and tent frame using same
US9197568B2 (en) * 2012-10-22 2015-11-24 Electronics And Telecommunications Research Institute Method for providing quality of service in software-defined networking based network and apparatus using the same
US9185015B2 (en) 2013-02-19 2015-11-10 Broadcom Corporation Application aware elephant flow identification
US9380489B2 (en) 2013-07-18 2016-06-28 Verizon Patent And Licensing Inc. Dynamic network traffic analysis and traffic flow configuration for radio networks
US9331943B2 (en) * 2013-09-10 2016-05-03 Robin Systems, Inc. Asynchronous scheduling informed by job characteristics and anticipatory provisioning of data for real-time, parallel processing
US9560549B2 (en) * 2014-09-05 2017-01-31 Cisco Technology, Inc. Reporting of aggregated RAN congestion information
KR101753269B1 (ko) * 2014-09-11 2017-07-05 광주과학기술원 이동통신망을 이용하는 방송시스템 및 방송서비스 제공방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140237118A1 (en) * 2013-02-19 2014-08-21 Broadcom Corporation Application Aware Elephant Flow Management
US20140269319A1 (en) * 2013-03-15 2014-09-18 International Business Machines Corporation Network per-flow rate limiting
US20140313909A1 (en) * 2013-04-19 2014-10-23 Dust Networks, Inc. Monitoring of channel stability and interference in wireless networks

Also Published As

Publication number Publication date
US20160261510A1 (en) 2016-09-08
US10270700B2 (en) 2019-04-23
KR102583750B1 (ko) 2023-09-26
US11546268B2 (en) 2023-01-03
WO2016141239A1 (en) 2016-09-09
KR20230074841A (ko) 2023-05-31
US20210021532A1 (en) 2021-01-21
US10834002B2 (en) 2020-11-10
US20230122266A1 (en) 2023-04-20
JP6672340B2 (ja) 2020-03-25
EP3266170B1 (en) 2021-10-20
JP2018507666A (ja) 2018-03-15
ES2902497T3 (es) 2022-03-28
KR20180004401A (ko) 2018-01-11
CN107637032A (zh) 2018-01-26
US20190215273A1 (en) 2019-07-11
EP3266170A1 (en) 2018-01-10
EP3266170A4 (en) 2018-10-17

Similar Documents

Publication Publication Date Title
US11546268B2 (en) Systems and methods for pacing data flows
US20210006482A1 (en) Broadband communication link performance monitoring method for communication devices
US11677665B2 (en) Systems and methods for identifying candidate flows in data packet networks
US10038639B2 (en) Congestion control based on flow control
Jiang et al. Understanding bufferbloat in cellular networks
US10367738B2 (en) Throughput guidance based on user plane insight
JP2020502948A (ja) パケット伝送システムおよび方法
KR20150074018A (ko) Tcp 매퍼를 위한 시스템 및 방법
KR20180013174A (ko) 무선 통신 시스템에서 데이터의 전송 방법 및 장치
US11785442B2 (en) Data transport network protocol based on real time transport network congestion conditions
US11695847B2 (en) Throughput guidance based on user plane insight
WO2019124290A1 (ja) 送信データ量制御装置、方法および記録媒体
US11184803B2 (en) Data transmission device, method and recording medium
박세용 Multi-path TCP extension for multimedia QoS in wireless networks

Legal Events

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