KR20190091565A - 향상된 멀티캐스트 네트워크 통신들 - Google Patents

향상된 멀티캐스트 네트워크 통신들 Download PDF

Info

Publication number
KR20190091565A
KR20190091565A KR1020197022106A KR20197022106A KR20190091565A KR 20190091565 A KR20190091565 A KR 20190091565A KR 1020197022106 A KR1020197022106 A KR 1020197022106A KR 20197022106 A KR20197022106 A KR 20197022106A KR 20190091565 A KR20190091565 A KR 20190091565A
Authority
KR
South Korea
Prior art keywords
data frame
multimedia data
channel
modified multimedia
node
Prior art date
Application number
KR1020197022106A
Other languages
English (en)
Other versions
KR102226146B1 (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 KR20190091565A publication Critical patent/KR20190091565A/ko
Application granted granted Critical
Publication of KR102226146B1 publication Critical patent/KR102226146B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/462Content or additional data management, e.g. creating a master electronic program guide from data received from the Internet and a Head-end, controlling the complexity of a video stream by scaling the resolution or bit-rate based on the client capabilities
    • H04N21/4627Rights management associated to the content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/185Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with management of multicast group membership
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1859Arrangements for providing special services to substations for broadcast or conference, e.g. multicast adapted to provide push services, e.g. data channels
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1886Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with traffic restrictions for efficiency improvement, e.g. involving subnets or subdomains
    • H04L65/4076
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/611Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for multicast or broadcast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/64Addressing
    • H04N21/6402Address allocation for clients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/64Addressing
    • H04N21/6405Multicasting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/64Addressing
    • H04N21/6408Unicasting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W76/00Connection management
    • H04W76/10Connection setup

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

본 발명은, 수정된 멀티미디어 데이터 프레임들을 생성 및 라우팅하기 위한 방법들, 시스템들, 장치(컴퓨터 저장 매체들 상에 인코딩된 컴퓨터 프로그램들을 포함함)에 관한 것이다. 일 양상에서, 방법은, 복수의 채널들 중 각각에 채널에 대해, 복수의 채널들에 대한 리프 노드 멤버십을 표시하는 데이터를 포함하는 채널 멤버십 데이터를 제1 네트워크 노드에 의해 유지하는 단계; 및 복수의 채널들 중 각각의 채널에 대해, 채널 멤버십 데이터에 기반하여, 채널에 액세스하는 것에 대해 가입된 리프 노드들을 결정하는 단계, 채널에 액세스하는 것에 대해 가입된 리프 노드들에 기반하여, (i) 허브 노드 식별자, (ii) 채널에 액세스하는 것에 대해 가입된 각각의 리프 노드의 목적지 어드레스를 설명하는 데이터, 및 (iii) 페이로드를 포함하는, 채널에 대한 수정된 멀티미디어 데이터 프레임을 생성하는 단계, 및 제1 네트워크 노드에 의해, 생성된 수정된 멀티미디어 데이터 프레임을 제2 네트워크 노드에 송신하는 단계를 포함한다.

Description

향상된 멀티캐스트 네트워크 통신들
[0001] 매체 액세스 제어(MAC; Media Access Control) 계층에서의 데이터 프레임들의 종래의 네트워킹된 통신은 통상적으로, 유니캐스트(unicast) 또는 멀티캐스트(multicast) 통신들을 포함한다. 데이터 프레임 통신의 각각의 형태는 알려진 결점들을 갖는다. 이러한 결점들 때문에, 많은 양의 대역폭을 소비하는 서비스들, 이를테면, 텔레비전(TV) 스트리밍 서비스들에 대한 데이터 프레임들의 생성 및 라우팅을 수용하는 대안적이고 개선된 형태의 통신이 요구된다.
[0002] 본 발명은, 수정된 멀티미디어 데이터 프레임(modified multimedia data frame)들을 생성 및 라우팅하기 위한 방법들, 시스템들, 장치(컴퓨터 저장 매체들 상에 인코딩된 컴퓨터 프로그램들을 포함함)에 관한 것이다. 일 양상에서, 방법은, 복수의 채널들 중 각각에 채널에 대해, 복수의 채널들에 대한 리프 노드 멤버십(leaf node membership)을 표시하는 데이터를 포함하는 채널 멤버십 데이터를 제1 네트워크 노드에 의해 유지하는 동작, 및 복수의 채널들 중 각각의 채널에 대해: 채널 멤버십 데이터에 기반하여, 채널에 액세스하는 것에 대해 가입된 리프 노드들을 결정하는 동작, 채널에 액세스하는 것에 대해 가입된 리프 노드들에 기반하여, (i) 허브 노드 식별자, (ii) 채널에 액세스하는 것에 대해 가입된 각각의 리프 노드의 목적지 어드레스를 설명하는 데이터, 및 (iii) 페이로드를 포함하는, 채널에 대한 수정된 멀티미디어 데이터 프레임을 생성하는 동작, 및 제1 네트워크 노드에 의해, 생성된 수정된 멀티미디어 데이터 프레임을 제2 네트워크 노드에 송신하는 동작을 포함할 수 있다. 멀티미디어 콘텐츠 데이터를 네트워크의 다수의 개개의 노드들에 송신하기 위해 다수의 유니캐스트 데이터 프레임들을 사용하는 대신에, 단일의 수정된 멀티미디어 데이터 프레임이 멀티미디어 콘텐츠를 네트워크의 다수의 노드들에 송신하는 데 사용되어, 네트워크 트래픽을 감소시키고, 이용가능한 대역폭을 증가시켜, 이용가능한 대역폭을 사용한 추가의 데이터의 송신을 가능하게 할 수 있다.
[0003] 다른 버전들은, 대응하는 시스템들, 장치, 및 컴퓨터 저장 디바이스들 상에 인코딩된, 방법들의 동작들을 수행하기 위한 컴퓨터 프로그램들을 포함한다.
[0004] 이들 다른 버전들은 선택적으로 다음의 특징들 중 하나 이상을 포함할 수 있다. 예컨대, 일부 구현들에서, 수정된 멀티미디어 데이터 프레임은, MAC 헤더 및 페이로드를 포함할 수 있는 유니캐스트 데이터 프레임을 포함하고, MAC 헤더는 목적지 어드레스 필드를 포함할 수 있다.
[0005] 일부 구현들에서, 수정된 멀티미디어 데이터 프레임을 생성하는 것은, 채널에 액세스하는 것에 대해 가입된 각각의 리프 노드에 대한 목적지 어드레스를 목적지 어드레스들의 인코딩된 비트맵으로 인코딩하는 것, 및 목적지 어드레스 필드를 목적지 어드레스들의 인코딩된 비트맵으로 파퓰레이팅(populating)하는 것을 포함할 수 있다.
[0006] 일부 구현들에서, 방법은, 제2 네트워크 노드에 의해, 수정된 멀티미디어 데이터 프레임들 중 적어도 하나의 수정된 멀티미디어 데이터 프레임을 수신하는 단계, 목적지 어드레스들의 인코딩된 비트맵에 기반하여 제2 네트워크 노드에 의해, 적어도 하나의 수정된 멀티미디어 데이터 프레임의 목적지인 후속 네트워크 노드들의 개수를 식별하는 단계, 및 후속 네트워크 노드들의 개수가 하나의 네트워크 노드보다 더 많다는 결정에 대한 응답으로, (i) 후속 네트워크 노드들 각각의 목적지 어드레스를 설명하는 데이터 및 (ii) 페이로드의 카피를 포함하는 수정된 멀티미디어 데이터 프레임을 생성하는 단계를 포함할 수 있다.
[0007] 일부 구현들에서, 방법은, 제2 네트워크 노드에 의해, 수정된 멀티미디어 데이터 프레임들 중 적어도 하나의 수정된 멀티미디어 데이터 프레임을 수신하는 단계, 목적지 어드레스들의 인코딩된 비트맵에 기반하여 제2 네트워크 노드에 의해, 적어도 하나의 수정된 멀티미디어 데이터 프레임의 목적지인 후속 네트워크 노드들의 개수를 식별하는 단계, 및 후속 네트워크 노드들의 개수가 하나의 네트워크 노드와 동일하다는 결정에 대한 응답으로, (i) 하나의 후속 네트워크 노드의 목적지 어드레스를 설명하는 데이터 및 (ii) 페이로드의 카피를 포함하는 유니캐스트 데이터 프레임을 생성하는 단계를 포함할 수 있다.
[0008] 도 1은 수정된 멀티미디어 데이터 프레임들을 생성 및 라우팅하기 위한 시스템의 예의 문맥적 다이어그램(contextual diagram)이다.
[0009] 도 2는 수정된 멀티미디어 데이터 프레임들을 생성하기 위한 프로세스의 예의 흐름도이다.
[00010] 도 3은 수정된 멀티미디어 데이터 프레임들을 라우팅하기 위한 프로세스의 예의 흐름도이다.
[00011] 도 4는 수정된 멀티미디어 데이터 프레임들을 생성 및 라우팅하기 위한 시스템의 컴포넌트들의 블록 다이어그램이다.
[00012] 본 개시내용은 멀티미디어 데이터 프레임들, 이를테면, 텔레비전(TV) 데이터 프레임들을 브로드캐스팅하기 위한 시스템 및 방법에 관한 것이다. 본 개시내용은, 예컨대 비트맵 어드레스를 리프 네트워크 노드들에 맵핑하는 데이터를 포함할 수 있는 하나 이상의 멤버십 테이블 교환들과 함께 사용하기 위한 수정된 멀티미디어 데이터 프레임들을 생성함으로써, 종래의 방법들에 비해 장점들을 달성한다. 수정된 멀티미디어 데이터 프레임은, 예컨대 다수의 리프 네트워크 노드들 중 각각의 리프 네트워크 노드에 대한 목적지 어드레스를 설명하는 데이터를, 유니캐스트 데이터 프레임의 목적지 어드레스 필드에 삽입될 수 있는 목적지 어드레스들의 비트맵으로 인코딩하기 위해, 콤팩트 어드레싱 방식(compact addressing scheme)을 사용하여 생성되는 데이터를 통신하는 데 사용될 수 있는 유니캐스트 데이터 프레임을 포함할 수 있다. 수정된 멀티미디어 데이터 프레임 및 멤버십 테이블 교환은, 종래의 유니캐스트 송신들과 관련하여 콘텐츠, 이를테면, TV 콘텐츠를 스트리밍하는 데 요구되는 대역폭의 감소를 가능하게 한다. 더욱이, 수정된 멀티미디어 데이터 프레임 및 멤버십 교환 테이블들은 또한, 종래의 멀티캐스트 브로드캐스팅에 의해 요구되는 멀티캐스트 스패닝 트리(multicast spanning tree)들의 빈번한 재계산의 고비용 프로세스를 회피하는 유니캐스트 데이터 프레임을 사용한 멀티캐스트-형 데이터 프레임 브로드캐스팅(multicast-like data frame broadcasting)을 가능하게 한다.
[00013] 도 1은 수정된 멀티미디어 데이터 프레임들을 생성 및 라우팅하기 위한 시스템(100)의 예의 문맥적 다이어그램이다. 시스템(100)은, 네트워크(105), 프라이머리 노드(110)를 포함하는 복수의 네트워크 노드들, 하나 이상의 허브 노드들(112-1, 112-2, 112-n)(여기서, n은 1과 64 사이의 임의의 양의 정수임), 무선 메시 네트워크(120), 및 다수의 리프 노드들("A"(150), "B"(151), "C"(152), "D"(153), "E"(154), "F"(155), "G"(156), "H"(157), "I"(158), "J"(159))을 포함한다.
[00014] 프라이머리 노드(110)는 하나 이상의 허브 노드들(112-1, 112-2, 112-n)과 네트워크(105), 이를테면, 인터넷 사이에 포지셔닝된 네트워크 노드이다. 프라이머리 노드(110)는 유선 연결(102)을 거쳐 데이터, 이를테면, 유선 데이터 프레임들(107)을 수신하고, 무선 허브(112-1, 112-2, 112-n)로의 송신을 위해 무선 데이터 프레임들, 유선 데이터 프레임들, 또는 둘 모두를 생성한다. 프라이머리 노드는, 예컨대 파이버 헛(fiber hut), 광학 네트워크 유닛, 멀티미디어 피드 서버, TV 피드 서버 등을 포함할 수 있다. 프라이머리 노드(110)는, 하나 이상의 신호들, 이를테면, 광 신호들로서 수신된 데이터를 대응하는 허브 노드에 라우팅하는 중계기로서의 역할을 할 수 있다. 허브 노드(112-1, 112-2, 112-n)는, 하나 이상의 리프 노드들("A"(150), "B"(151), "C"(152), "D"(153), "E"(154), "F"(155), "G"(156), "H"(157), "I"(158), "J"(159))의 세트와 프라이머리 노드(110) 사이에 포지셔닝된 네트워크 노드이다. 각각의 개개의 허브 노드(112-1, 112-2, 112-n)는, 착신 데이터 라인들, 이를테면, 파이버 라인들을, 하나 이상의 리프 노드들("A"(150), "B"(151), "C"(152), "D"(153), "E"(154), "F"(155), "G"(156), "H"(157), "I"(158), "J"(159))의 세트에 대응하는 번들들로 그룹화한다.
[00015] 프라이머리 노드(110)는 채널 가입 데이터를 유지하도록 구성된다. 채널 가입 데이터는 복수의 채널들 중 각각의 채널에 대한 리프 노드 멤버십을 설명하는 데이터를 포함할 수 있다. 일부 구현들에서, 채널 가입 데이터는 테이블을 사용하여 채널마다 유지될 수 있다. 채널 가입 데이터는, 각각의 채널에 대해, 채널의 멤버들인 네트워크 노드들, 이를테면, 리프 노드들("A"(150), "B"(151), "C"(152), "D"(153), "E"(154), "F"(155), "G"(156), "H"(157), "I"(158), "J"(159))을 결정하기 위해 액세스될 수 있다. 예컨대, 네트워크 노드가 채널에 의해 제공되는 콘텐츠에 액세스하는 것을 허용하는 가입(subscription)을 네트워크 노드가 한 경우, 네트워크 노드는 채널의 멤버일 수 있다. 채널에 의해 제공되는 콘텐츠에 대한 액세스는, 예컨대 채널에 의해 제공된 콘텐츠를 뷰잉하기 위한 액세스를 포함할 수 있다. 채널은, 예컨대 TV 채널을 포함할 수 있다. 대안적으로, 채널은, 예컨대 인터넷 멀티미디어 채널, 이를테면, YouTube 채널을 포함할 수 있다.
[00016] 프라이머리 노드(110)는 다수의 수정된 멀티미디어 데이터 프레임들(130)을 생성하도록 구성된다. 예컨대, 프라이머리 노드(110)는, (개개의 데이터 스트림으로 각각 고려될 수 있는) 특정 스트리밍 서버에 의해 제공되는 복수의 채널들 중 각각의 채널에 대해 허브 노드(112-1, 112-2, 112-n)마다 수정된 멀티미디어 데이터 프레임(130)을 생성할 수 있다. 대안적으로 또는 부가하여, 프라이머리 노드(110)는 특정 채널로부터의 콘텐츠에 대한 네트워크 노드로부터의 요청에 대한 응답으로, 수정된 멀티미디어 데이터 프레임(130)을 생성할 수 있다.
[00017] 수정된 멀티미디어 데이터 프레임(130)은, 매체 액세스 제어(MAC) 헤더(132) 및 페이로드(134)를 포함하는 MAC 계층에서의 통신을 위한 유니캐스트 데이터 프레임을 포함한다. 수정된 멀티미디어 데이터 프레임(130)의 MAC 헤더(132)는 목적지 어드레스 필드(140)를 포함한다. 수정된 멀티미디어 데이터 프레임(130)의 목적지 어드레스 필드(140)는 수정된 멀티미디어 데이터 프레임(130)을 종래의 유니캐스트 데이터 프레임과 구별짓는다. 수정된 멀티미디어 데이터 프레임(130)은 HubNodeID(142), 상수(144), 및 목적지 어드레스 데이터(146)를 포함한다. HubNodeID(142)는, 수정된 멀티미디어 데이터 프레임(130)이 라우팅되어야 하는 허브 노드(112-1, 112-2, 112-n)를 식별하는 데 사용된다. 상수(144)는, (i) 목적지 어드레스 데이터(146)가 국부적 관리 어드레스(locally administered address)라는 것, (ii) 데이터 프레임이 수정된 멀티미디어 데이터 프레임이라는 것, 또는 (iii) 둘 모두를 표시하는 데 사용된다.
[00018] 목적지 어드레스 데이터(146)는 수정된 멀티미디어 데이터 프레임(130)의 페이로드에 대한 목적지인 다수의 리프 노드들 중 각각의 리프 노드의 목적지 어드레스를 나타내는 데이터를 포함한다. 이는, 종래의 유니캐스트 데이터 프레임의 유일한 목적지인 단일 노드의 단일 목적지 어드레스만을 포함할 수 있는 종래의 유니캐스트 데이터 프레임과 상이하다. 목적지 어드레스 데이터(146)는, 멀티미디어 데이터 프레임(130)이 생성될 때, 생성될 수 있다. 일부 구현들에서, 프라이머리 노드(110)는, 각각의 리프 노드에 대한 목적지 어드레스를 설명하는 데이터를 MAC 헤더(132)의 목적지 어드레스 필드(140)의 목적지 어드레스 데이터 필드(146)에 삽입되는 목적지 어드레스들의 비트맵으로 인코딩함으로써, 수정된 멀티미디어 데이터 프레임(130)을 생성할 수 있다.
[00019] 수정된 멀티미디어 데이터 프레임의 페이로드가 라우팅되어야 하는 복수의 목적지 노드들 중 각각의 목적지 노드의 각각의 목적지 어드레스를 MAC 헤더(132)의 목적지 어드레스 필드(140)로 인코딩하는 것은, 네트워크 대역폭을 더 효율적으로 사용하는 시스템을 초래한다. 왜냐하면, 이는, 멀티미디어 콘텐츠 데이터를 네트워크의 다수의 개개의 노드들에 송신하기 위해 다수의 유니캐스트 데이터 프레임들을 사용하는 대신에, 단일의 수정된 멀티미디어 데이터 프레임(130)이 멀티미디어 콘텐츠를 메시 네트워크(120)의 다수의 노드들에 송신하는 데 사용될 수 있기 때문이다. 이는 네트워크 트래픽을 감소시키고, 이용가능한 대역폭을 증가시키고, 이용가능한 대역폭을 사용한 추가의 데이터의 송신을 가능하게 한다.
[00020] 일부 구현들에서, MAC 헤더(132)의 목적지 어드레스 필드(140)는 48 비트로 구성된 6 바이트를 포함한다. 최상위 바이트의 최하위 2 비트는 상수, 이를테면, 0x11로 동결될 수 있다. 최상위 바이트의 나머지 6 비트는, 프라이머리 노드(110) 아래의 특정 허브 노드(112-1, 112-2, 112-n)를 식별하는 데 사용될 수 있는 HubNodeID(12)이다. 나머지 5 바이트의 각각의 비트는 목적지 어드레스 필드(140)의 HubNodeID(142)에 의해 식별된 허브 노드 아래의 리프 노드에 일-대-일 맵핑된다. 그러한 구현들에서, 나머지 40 비트에 의해 확립된 일-대-일 맵핑은 각각의 허브 노드(112-1, 112-2, 112-n)에 대해 어드레싱될 수 있는 40개의 리프 노드들을 초래할 것이다. 따라서, 이러한 어드레싱 방식은 일반적으로, 프라이머리 노드 아래의 무선 토폴로지 내에서 2^6 * 40 = 2560 노드들을 지원해야 한다. 40-비트 비트맵의 특정 비트로의 리프 노드들의 맵핑은 프라이머리 노드(110)에 의해 미리(ahead of time) 각각의 리프 노드와 공유되고, 이웃 토폴로지의 수명(lifetime) 동안 변경되지 않는다. 즉, 40-비트 비트맵의 특정 비트로의 리프 노드들의 맵핑은, 예컨대 노드 멤버십에서 영구적인 변경이 있을 때, 이를테면, 새로운 가입자가 새로운 가입을 개시할 때에만 업데이트될 수 있으며, 이는 비교적 드문 이벤트일 수 있다. 40-비트 비트맵의 특정 비트로의 리프 노드들의 맵핑의 이러한 준-정적 상태(quasi-static state)는, 각각의 채널 변경에 대한 스패닝 트리들의 동적 재계산을 필요로 할 종래의 멀티캐스팅 통신보다 효율성을 높인다.
[00021] 프라이머리 노드(110)는 수정된 멀티미디어 데이터 프레임(130)을, 수정된 멀티미디어 데이터 프레임(130)의 HubNodeID(142)에 의해 식별된 허브 노드(112-n)에 라우팅할 수 있다. 그런 다음, 허브 노드(112-n)는 수정된 멀티미디어 데이터 프레임(130)을, 허브 노드(112-n)가 연관된 리프 노드 네트워크의 제1 리프 노드, 이를테면, 리프 노드 "A"(150)에 포워딩할 수 있다. 각각의 리프 노드("A"(150), "B"(151), "C"(152), "D"(153), "E"(154), "F"(155), "G"(156), "H"(157), "I"(158), "J"(159))는, 가입자의 집, 사무실, 또는 다른 위치의 잠재적 데이터 프레임 목적지 포인트, 이를테면, 수신 유닛(예컨대, 셋톱 박스, 텔레비전, 데스크톱 컴퓨터, 랩톱 컴퓨터, 스마트폰 등)을 나타낸다.
[00022] "리프 노드"는, (i) 목적지 엔드포인트로서, 수정된 멀티미디어 데이터 프레임을 수신하고 수정된 멀티미디어 데이터 프레임을 프로세싱하여 멀티미디어 데이터 프레임의 페이로드를 획득 및 사용하고, 그리고 (ii) 필요에 따라, 수정된 멀티미디어 데이터 프레임들을 하나 이상의 다른 노드들(그 하나 이상의 다른 노드들은 다른 리프 노드 또는 리프 노드가 아닌 노드를 포함할 수 있음)에 송신하는 노드이다. 그러나, 일부 "리프 노드들", 이를테면, 리프 노드들("H"(157), "I"(158), "J"(159), 및 "G"(156))은, 수정된 멀티미디어 데이터 프레임들의 수신 및 송신 둘 모두를 수행할 수 있지만, 리프 노드들("H"(157), "I"(158), "J"(159), 및 "G"(156))이 임의의 수정된 멀티미디어 데이터 프레임들을 송신할 필요가 없도록 특정 시간 포인트에서 네트워크에 포지셔닝될 수 있다. 예컨대, 리프 노드들("H"(157), "I"(158), "J"(159), 및 "G"(156))이, 그들이 수정된 멀티미디어 데이터 프레임들을 다른 리프 노드들에 송신하지 않는 특정 시간 포인트에서 특정 네트워크 구성에 상주한다고 해서(예컨대, 리프 노드들("H"(157), "I"(158), "J"(159), 및 "G"(156)) 이후에 계층적으로 배열된 어떤 리프 노드들도 없기 때문임), 그러한 리프 노드들이 수정된 멀티미디어 데이터 프레임들을 송신할 수 없거나, 수정된 멀티미디어 데이터 프레임들을 과거에 송신하지 않았거나, 또는 수정된 멀티미디어 데이터 프레임들을 미래에 송신하지 않을 것임을 의미하지는 않는다.
[00023] 예컨대, 메시 네트워크(120)는 미래의 어느 시점에서 재구성되어, 리프 노드들("H"(157), "I"(158), "J"(159), 및 "G"(156)) 이후에 하나 이상의 리프 노드들이 계층적으로 배열되는 것을 초래할 수 있다. 그러한 시나리오 하에서, 리프 노드들("H"(157), "I"(158), "J"(159), 및 "G"(156)) 중 하나 이상이 수정된 멀티미디어 데이터 프레임들을 송신하는 경우들이 발생할 수 있다. 상이한 예를 참조하면, 리프 노드들("H"(157), "I"(158), "J"(159), 및 "G"(156)) 중 하나 이상이, 리프 노드들("H"(157), "I"(158), "J"(159), 및 "G"(156)) 이후에 계층적으로 배열된 하나 이상의 리프 네트워크 노드들을 가졌을 수 있도록, 메시 네트워크(120)가 과거에 상이하게 구성되었을 수 있는 것이 또한 가능하다. 그러한 경우, 리프 노드들("H"(157), "I"(158), "J"(159), 및 "G"(156)) 중 하나 이상은 수정된 멀티미디어 데이터 프레임들을 "H"(157), "I"(158), "J"(159), 및 "G"(156) 이후에 계층적으로 배열된 다른 리프 노드들에 송신하는 것이 가능했을 것이다.
[00024] 각각의 리프 노드는 수정된 멀티미디어 데이터 프레임들, 이를테면, 수정된 멀티미디어 데이터 프레임(130)을 라우팅하는 데 사용될 수 있는 멤버십 교환 테이블, 이를테면, 비트맵 테이블(160)을 저장할 수 있다. 비트맵 테이블(160)은 프라이머리 노드(110)에 의해 생성될 수 있고, 그런 다음, 프라이머리 노드(110)에 의해, 각각의 개개의 리프 노드("A"(150), "B"(151), "C"(152), "D"(153), "E"(154), "F"(155), "G"(156), "H"(157), "I"(158), "J"(159))에 분배될 수 있다. 일부 구현들에서, 비트맵 테이블(160)은 순수 JSON(JavaScript Object Notation) 포맷으로 공유될 수 있다. JSON 포맷은 파일에서, 프로토콜 버퍼를 통해, 또는 프라이머리 노드(110)로부터 각각의 개개의 리프 노드로의 RPC(remote procedure call)를 통해 공유될 수 있다. 이러한 테이블은, 하나 이상의 채널들에 대한 리프 노드의 가입 상태의 변경(이를테면, 가입을 개시하는 리프 노드, 가입을 취소하는 리프 노드 등) 시에만 업데이트된다.
[00025] 일부 구현들에서, 프라이머리 노드(110)는 수정된 멀티미디어 데이터 프레임들을, 가입을 하지 않은 리프 노드에 송신하지 않을 것이기 때문에, 리프 노드 가입 취소는 무시될 수 있다(그리고 비트맵 테이블(160)은 업데이트되지 않을 수 있음). 따라서, 시스템(100)은, 하나 이상의 새로운 리프 노드들이 가입을 개시하는 나중 시간 포인트까지, 하나 이상의 리프 노드들을 제거하기 위해 비트맵 테이블을 업데이트하는 것을 대기할 수 있다.
[00026] 비트맵 테이블(160)은, 특정 허브 노드, 이를테면, 허브(112-n) 아래에 계층적으로 조직화된 각각의 리프 노드에 대한 비트맵 어드레스를 포함한다. 비트맵 테이블(160)의 각각의 행은 리프 노드(160b) 맵핑(161, 162, 163, 164, 165, 166, 167, 168, 169, 170)에 대한 비트맵 어드레스(160a)를 포함한다. 그런 다음, 리프 노드는 (i) 수정된 멀티미디어 데이터 프레임(130)에서 수신된 목적지 어드레스들의 비트맵으로 인코딩된 목적지 어드레스들의 세트를 (ii) 비트맵 테이블(160)의 각각의 리프 노드의 비트맵 어드레스(160a)와 비교하여, 수정된 멀티미디어 데이터 프레임(130)에 대한 목적지인 리프 노드들의 세트 각각을 결정할 수 있다.
[00027] 일부 구현들에서, 비트맵 테이블(160)을 수신하는 각각의 개개의 리프 노드("A"(150), "B"(151), "C"(152), "D"(153), "E"(154), "F"(155), "G"(156), "H"(157), "I"(158), "J"(159))는, 신속하고 효율적인 분기 동작(branching operation)들을 용이하게 하는 데 사용될 수 있는 비트마스크-투-다음 홉 테이블(bitmask-to-next hop table)을 생성할 수 있다. 비트마스크-투-다음 리프 노드 테이블은 수신된 비트맵의 목적지 어드레스들에 대한 각각의 가능한 라우팅 목적지를 미리 컴퓨팅할 수 있다. 이는, 주어진 비트맵의 목적지 어드레스들에 대한 목적지 루트들이 미리 결정되며 그리고 비트맵 테이블(160)을 사용하여 실시간으로 컴퓨팅될 필요가 없기 때문에, 단지 비트맵 테이블(160)을 사용하는 것보다 분기 동작들을 더 효율적이게 만든다.
[00028] 예로서, 리프 노드 "A"(150)는 수정된 멀티미디어 데이터 프레임(130)을 수신하고, 그 수정된 멀티미디어 데이터 프레임(130)을 그 타겟 목적지 노드들에 라우팅하기 위한 분기 동작의 수행을 시작할 수 있다. 리프 노드 "A"(150)는, 각각의 리프 노드에 저장된 비트맵 테이블(160)을 고려하여 목적지 어드레스 데이터(146)를 분석함으로써 분기 동작의 수행을 시작할 수 있다. 목적지 어드레스 데이터(146)를 분석하는 것은, 수정된 멀티미디어 데이터 프레임(130)으로부터 획득된 목적지 어드레스 데이터(146)를 비트맵 테이블(160)에 의해 유지되는 데이터와 비교하는 것을 포함할 수 있다.
[00029] 멀티미디어 데이터 프레임(130)은 목적지 어드레스들의 비트맵을 포함할 수 있다. 즉, 목적지 어드레스들의 비트맵의 각각의 비트는, 특정 리프 노드가 수정된 멀티미디어 데이터 프레임(130)의 목적지인지 여부를 표시할 수 있다. 예컨대, 리프 노드 "A"(150)에서 수신된 멀티미디어 데이터 프레임(130)이 목적지 어드레스들의 비트맵, 이를테면, "0111110110"(180)을 포함한다고 가정한다. 비트맵 테이블(160)을 사용하면, 리프 노드 "A"(150)는, 리프 노드들("B"(151), "C"(152), "E"(154), "F"(155), "G"(156), "H"(157), 및 "I"(158))이 수정된 멀티미디어 데이터 프레임(130)의 목적지들이라는 것을 목적지 어드레스들의 비트맵, 이를테면, "0111110110"(180)이 표시한다는 것을 결정할 수 있다. 따라서, 리프 노드 "A"(150)는, 리프 노드 "A"(150)가 수정된 멀티미디어 데이터 프레임(130)의 목적지가 아니라는 것을 결정할 수 있고, 그리고 수정된 멀티미디어 데이터 프레임(130)과 연관된 페이로드를 리프 노드들("B"(151), "C"(152), "E"(154), "F"(155), "G"(156), "H"(157), 및 "I"(158))에 송신하기 위해 필요한 라우팅 동작들을 수행할 수 있다.
[00030] 리프 노드 "A"(150)는 리프 노드 목적지들을 하나 이상의 다음 리프 노드 목적지들에 의해 그룹화함으로써, 수정된 멀티미디어 데이터 프레임(130)의 라우팅을 계속 수행한다. 예컨대, 리프 노드 "A"(150)는, 수정된 멀티미디어 데이터 프레임의 목적지 어드레스 필드로 인코딩된 목적지 어드레스들의 비트맵에 기반하여, 다음 리프 노드 목적지들이 리프 노드 "B"(151) 및 리프 노드 "C"(152)를 포함한다는 것을 결정할 수 있다. 일부 구현들에서, 다음 리프 노드 목적지들을 결정하는 이러한 스테이지는, 수신된 수정된 멀티미디어 데이터 프레임(130)에 포함된 목적지 어드레스들의 비트맵을, 비트마스크-투-다음 리프 노드 테이블에 액세스하고 그리고 수정된 멀티미디어 데이터 프레임이 라우팅되어야 하는 하나 이상의 다음 리프 노드들을 리턴하는 기능(function)에 제공하는 것을 포함할 수 있다. 대안적으로, 다음 리프 노드 목적지들은, 목적지 어드레스들의 비트맵을 비트맵 테이블(160)과 비교함으로써 컴퓨팅될 수 있다. 그런 다음, 리프 노드 "A"(150)는, 나머지 목적지 어드레스들 각각을 리프 노드 "B"(151) 카테고리 또는 리프 노드 "C"(152) 카테고리로 그룹화할 수 있다. 위에서 설명된 예를 더 고려하면, 리프 노드 "A"(150)는, 리프 노드 "H"(157), 리프 노드 "E"(154), 및 리프 노드 "I"(158)에 대한 목적지 어드레스를 리프 노드 "B"(151) 카테고리로 그룹화하고, 리프 노드 "F"(155) 및 리프 노드 "G"(156)에 대한 목적지 어드레스들을 리프 노드 "C"(152) 카테고리로 그룹화할 수 있다.
[00031] 리프 노드 "A"(150)는 하나 이상의 다음 리프 노드 목적지들, 이를테면, 리프 노드 "B"(151) 및 리프 노드 "C"(152) 각각이 최종 리프 노드 목적지들인지 여부를 결정한다. 리프 노드 "A"(150)는, 리프 노드 목적지들의 개수가 하나의 리프 노드 목적지보다 더 많은지 여부를 결정함으로써, 하나 이상의 다음 리프 노드 목적지들 각각이 최종 리프 노드 목적지인지 여부를 결정할 수 있다. 나머지 리프 노드 목적지들의 개수가 1보다 더 많은 경우, 리프 노드 "A"(150)는, 다음 리프 노드 목적지가 최종 목적지 노드가 아니라는 것을 결정할 수 있다. 나머지 리프 노드 목적지들의 개수가 1과 동일한 경우, 리프 노드 "A"(150)는, 다음 리프 노드 목적지가 최종 리프 노드 목적지라는 것을 결정할 수 있다.
[00032] 리프 노드 "A"(150)는, 리프 노드 "B" 카테고리 및 리프 노드 "C" 카테고리 각각이 하나보다 많은 리프 노드 목적지 어드레스를 포함하고 따라서 최종 리프 노드 목적지들이 아님을 결정할 수 있다. 리프 노드 "B"(151) 및 리프 노드 "C"(152)가 최종 리프 노드 목적지들이 아니라는 결정에 대한 응답으로, 리프 노드 "A"(150)는 새로운 수정된 멀티미디어 데이터 프레임(131) 및 새로운 수정된 멀티미디어 데이터 프레임(132)을 생성한다. 대안적으로, 상이한 시나리오(예컨대, 상이한 수신된 수정된 멀티미디어 데이터 프레임(132)) 하에서, 리프 노드, 이를테면, 리프 노드 "A"(150)는 대신에, 하나 이상의 다음 리프 노드들이 수정된 멀티미디어 데이터 프레임에 대한 최종 리프 노드 목적지라는 것을 결정할 수 있다. 그러한 경우들에서, 리프 노드 "A"(150)는 최종 리프 노드 목적지로의 송신을 위해 유니캐스트 데이터 프레임을 생성할 수 있다. 그러한 대안은 도 1의 예를 참조하여 아래에서 더 상세하게 논의된다.
[00033] 수정된 멀티미디어 데이터 프레임(131)은 수정된 멀티미디어 데이터 프레임(130)의 생성과 유사한 방식으로 생성된다. 구체적으로, 수정된 멀티미디어 데이터 프레임(131)은, 수정된 멀티미디어 데이터 프레임(131)의 목적지 어드레스 필드로 인코딩되는 목적지 어드레스 데이터에 대한 것을 제외하고는, 수정된 멀티미디어 데이터 프레임(130)의 복제(duplicate)이다. 예컨대, 리프 노드 "A"(150)는 단지 리프 노드 카테고리 "B"의 목적지 어드레스들의 세트만을 수정된 멀티미디어 데이터 프레임(131)의 목적지 어드레스 필드로 인코딩할 것이다. 이는, 리프 노드 "A"(150)가 목적지 어드레스들의 비트맵 "0110010010"(181)을 생성하는 것을 초래한다. 목적지 어드레스들의 비트맵 "0110010010"(180)은, 수정된 멀티미디어 데이터 프레임(131)이, "B", "E", "H", "I"를 포함하는 리프 노드 목적지들로 라우팅되어야 한다는 것을 표시한다. 그런 다음, 수정된 멀티미디어 데이터 프레임(131)은 리프 노드 "B"(151)로 라우팅될 수 있다. 수정된 멀티미디어 데이터 프레임(131)의 수신 시에, 리프 노드 "B"(151)는 분기 동작들을 수행한다.
[00034] 수정된 멀티미디어 데이터 프레임(132)은 또한, 수정된 멀티미디어 데이터 프레임(130)의 생성과 유사한 방식으로 리프 노드 "A"(150)에 의해 생성된다. 구체적으로, 수정된 멀티미디어 데이터 프레임(132)은, 수정된 멀티미디어 데이터 프레임(132)의 목적지 어드레스 필드로 인코딩되는 목적지 어드레스 데이터에 대한 것을 제외하고는, 수정된 멀티미디어 데이터 프레임(130)의 복제이다. 예컨대, 리프 노드 "A"(150)는 단지 리프 노드 카테고리 "C"의 목적지 어드레스들의 세트만을 수정된 멀티미디어 데이터 프레임(132)의 목적지 어드레스 필드로 인코딩할 것이다. 이는, 리프 노드 "A"(150)가 목적지 어드레스들의 비트맵 "0001100100"(182)을 생성하는 것을 초래한다. 목적지 어드레스들의 비트맵 "0001100100"(182)은, 수정된 멀티미디어 데이터 프레임(132)이, "C"(152), "F"(155), 및 "G"(156)를 포함하는 리프 노드 목적지들로 라우팅되어야 한다는 것을 표시한다. 그런 다음, 수정된 멀티미디어 데이터 프레임(132)은 리프 노드 "C"(151)로 라우팅될 수 있다. 수정된 멀티미디어 데이터 프레임(132)의 수신 시에, 리프 노드 "C"(152)는 분기 동작들을 수행한다.
[00035] 리프 노드 "B"(151)는 수정된 멀티미디어 데이터 프레임(131)을 수신하고 그리고 리프 노드 "A"(150)와 유사한 방식으로 분기 동작들을 수행할 수 있다. 분기는, 리프 노드 "B"가, 수정된 멀티미디어 데이터 프레임(131)의 목적지 어드레스 필드(181)에 의해 식별된 후속 리프 노드 목적지들을 그룹화하는 것을 포함한다. 예컨대, 리프 노드 "B"(151)는, 다음 리프 노드 목적지들이 리프 노드 "H"(157) 및 리프 노드 "E"(154)를 포함한다는 것을 결정할 수 있다. 일부 구현들에서, 다음 리프 노드 목적지들을 결정하는 이러한 스테이지는, 수신된 수정된 멀티미디어 데이터 프레임(131)에 포함된 목적지 어드레스들의 비트맵을, 비트마스크-투-다음 리프 노드 테이블에 액세스하고 그리고 수정된 멀티미디어 데이터 프레임이 라우팅되어야 하는 하나 이상의 다음 리프 노드들을 리턴하는 기능에 제공하는 것을 포함할 수 있다. 대안적으로, 다음 리프 노드 목적지들은, 목적지 어드레스들의 비트맵을 비트맵 테이블(160)과 비교함으로써 컴퓨팅될 수 있다. 그런 다음, 리프 노드 "B"(151)는, 나머지 목적지 어드레스들 각각을 리프 노드 "H"(157) 카테고리 또는 리프 노드 "E"(154) 카테고리로 그룹화할 수 있다. 위에서 설명된 예를 더 고려하면, 리프 노드 "B"(151)는, 리프 노드 "H"(157)에 대한 목적지 어드레스를 리프 노드 "H"(157) 카테고리로 그룹화하고, 리프 노드 "E"(154) 및 리프 노드 "I"(158)에 대한 목적지 어드레스들을 리프 노드 "E"(154) 카테고리로 그룹화할 수 있다.
[00036] 리프 노드 "B"(151)는 하나 이상의 다음 리프 노드 목적지들, 이를테면, 리프 노드 "H"(157) 및 리프 노드 "E"(154) 각각이 최종 리프 노드 목적지인지 여부를 결정한다. 리프 노드 "B"(151)는, 리프 노드 목적지들의 개수가 하나의 리프 노드 목적지보다 더 많은지 여부를 결정함으로써, 특정 리프 노드 목적지가 최종 리프 노드 목적지인지 여부를 결정할 수 있다. 나머지 리프 노드 목적지들의 개수가 1보다 더 많은 경우, 리프 노드 "B"(151)는, 다음 리프 노드 목적지가 최종 목적지 노드가 아니라는 것을 결정할 수 있다. 나머지 리프 노드 목적지들의 개수가 1과 동일한 경우, 리프 노드 "B"(151)는, 다음 리프 노드 목적지가 최종 리프 노드 목적지라는 것을 결정할 수 있다.
[00037] 리프 노드 "B"(150)는, 리프 노드 "H" 카테고리가 단지 하나의 리프 노드 목적지 어드레스만을 포함하고 따라서 최종 리프 노드 목적지라는 것을 결정할 수 있다. 이러한 경우, "H" 카테고리의 메시 네트워크의 다음 노드(즉, 노드 "D")가 메시지(133)의 최종 목적지 노드가 아니기 때문에, 리프 노드 "B"(150)는 어드레스 "0010000000"(183)을 갖는 수정된 멀티미디어 데이터 프레임(133)을 생성하고 수정된 멀티미디어 데이터 프레임(133)을 노드 "D"에 송신한다.
[00038] 노드 "D"는 수정된 멀티미디어 데이터 프레임(133)을 수신하고, 이전의 리프 노드 "A"(150) 및 리프 노드 "B"(151)와 유사한 방식으로 분기 동작들을 수행한다. 예컨대, 리프 노드 "D"(153)는, 다음 리프 노드 목적지가 리프 노드 "H"(157)라는 것을 결정할 수 있다. 일부 구현들에서, 다음 리프 노드 목적지들을 결정하는 이러한 스테이지는, 수신된 수정된 멀티미디어 데이터 프레임(133)에 포함된 목적지 어드레스들의 비트맵을, 비트마스크-투-다음 리프 노드 테이블에 액세스하고 그리고 수정된 멀티미디어 데이터 프레임이 라우팅되어야 하는 하나 이상의 다음 리프 노드들을 리턴하는 기능에 제공하는 것을 포함할 수 있다. 대안적으로, 다음 리프 노드 목적지들은, 목적지 어드레스들의 비트맵을 비트맵 테이블(160)과 비교함으로써 컴퓨팅될 수 있다. 이러한 분기 동작에서, 리프 노드 "D"(153)는 리프 노드 "H"(157) 너머의 목적지 어드레스들의 비트맵에 어떤 다른 리프 노드 목적지 어드레스들도 없다는 것을 결정할 수 있다.
[00039] 리프 노드 목적지 어드레스들을 그룹화하는 것은, 단일 리프 노드 목적지를 포함하는 단일 리프 노드 "H"(157) 카테고리를 초래한다. 리프 노드 "D"(153)는, 리프 노드 "H"(157) 카테고리가 단일 리프 노드 목적지 어드레스만을 포함한다는 것을 결정할 수 있다. 리프 노드 "H"(157) 카테고리가 단일 리프 노드 목적지 어드레스만을 포함한다는 결정에 대한 응답으로, 리프 노드 "D"(153)는 리프 노드 "H"(157)의 최종 리프 노드 목적지로의 송신을 위해 새로운 유니캐스트 메시지(134)를 생성한다. 유니캐스트 데이터 프레임(134)의 목적지 어드레스 필드는 리프 노드 "H"(157)의 어드레스 "H_Addr"(184)을 포함한다. 어드레스 "H_Addr"은 리프 노드 "H"(157)의 특정 어드레스이다. 유니캐스트 데이터 프레임(134)은 리프 노드 "D"(153)에 의해 리프 노드 "H"(157)에 송신된다.
[00040] 별개로, 리프 노드 "B"(151)는, 리프 노드 "E"(154) 카테고리가 하나보다 많은 리프 노드 목적지 어드레스를 포함하고 따라서 최종 리프 노드 목적지가 아니라는 것을 결정할 수 있다. 리프 노드 "E"(154)가 수정된 멀티미디어 데이터 프레임(131)에 대한 최종 리프 노드 목적지가 아니라는 결정에 대한 응답으로, 리프 노드 "B"(151)는 새로운 수정된 멀티미디어 데이터 프레임(135)을 생성한다.
[00041] 수정된 멀티미디어 데이터 프레임(135)은 수정된 멀티미디어 데이터 프레임(131)의 생성과 유사한 방식으로 생성된다. 구체적으로, 수정된 멀티미디어 데이터 프레임(135)은, 수정된 멀티미디어 데이터 프레임(135)의 목적지 어드레스 필드로 인코딩된 목적지 어드레스 데이터에 대한 것을 제외하고는, 수정된 멀티미디어 데이터 프레임(131)의 복제이다. 예컨대, 리프 노드 "B"(151)는 단지 리프 노드 카테고리 "E"와 연관되어 있는 것으로 식별된 목적지 어드레스들의 세트만을 수정된 멀티미디어 데이터 프레임(135)의 목적지 어드레스 필드로 인코딩할 것이다. 이는, 수정된 멀티미디어 데이터 프레임(135)의 목적지 어드레스 필드에 포함시키기 위해, 리프 노드 "B"(151)가 목적지 어드레스들의 비트맵 "0100010000"(185)을 생성하는 것을 초래한다. 목적지 어드레스들의 비트맵 "0100010000"(185)은, 수정된 멀티미디어 데이터 프레임(135)이, 리프 노드 "E"(154) 및 리프 노드 "I"(158)를 포함하는 리프 노드 목적지들로 라우팅되어야 한다는 것을 표시한다. 그런 다음, 수정된 멀티미디어 데이터 프레임(135)은 리프 노드 "E"(154)로 라우팅될 수 있다. 수정된 멀티미디어 데이터 프레임(135)의 수신 시에, 리프 노드 "E"(154)는 분기 동작들을 수행한다.
[00042] 리프 노드 "E"(154)는 수정된 멀티미디어 데이터 프레임(135)을 수신하고, 이전의 리프 노드 "A"(150) 및 리프 노드 "B"(151)와 유사한 방식으로 분기 동작들을 수행한다. 예컨대, 리프 노드 "E"(154)는, 다음 리프 노드 목적지가 리프 노드 "I"(158)라는 것을 결정할 수 있다. 일부 구현들에서, 다음 리프 노드 목적지들을 결정하는 이러한 스테이지는, 수신된 수정된 멀티미디어 데이터 프레임(135)에 포함된 목적지 어드레스들의 비트맵을, 비트마스크-투-다음 리프 노드 테이블에 액세스하고 그리고 수정된 멀티미디어 데이터 프레임이 라우팅되어야 하는 하나 이상의 다음 리프 노드들을 리턴하는 기능에 제공하는 것을 포함할 수 있다. 대안적으로, 다음 리프 노드 목적지들은, 목적지 어드레스들의 비트맵을 비트맵 테이블(160)과 비교함으로써 컴퓨팅될 수 있다. 이러한 분기 동작에서, 리프 노드 "E"(154)는 리프 노드 "I"(158) 너머의 목적지 어드레스들의 비트맵에 어떤 다른 리프 노드 목적지 어드레스들도 없다는 것을 결정할 수 있다.
[00043] 리프 노드 목적지 어드레스들을 그룹화하는 것은, 단일 리프 노드 목적지를 포함하는 단일 리프 노드 "I"(158) 카테고리를 초래한다. 리프 노드 "E"(154)는, 리프 노드 "I"(158) 카테고리가 단일 리프 노드 목적지 어드레스만을 포함한다는 것을 결정할 수 있다. 리프 노드 "I"(158) 카테고리가 단일 리프 노드 목적지 어드레스만을 포함한다는 결정에 대한 응답으로, 리프 노드 "E"(154)는 리프 노드 "I"(158)의 최종 리프 노드 목적지로의 송신을 위해 새로운 유니캐스트 메시지(136)를 생성한다. 유니캐스트 데이터 프레임(136)의 목적지 어드레스 필드는 리프 노드 "I"(158)의 어드레스 "I_Addr"(186)을 포함한다. 어드레스 "I_Addr"은 리프 노드 "I"(158)의 특정 어드레스이다. 유니캐스트 데이터 프레임(136)은 리프 노드 "E"(154)에 의해 리프 노드 "I"(158)에 송신된다.
[00044] 네트워크 시스템(100)의 하나 이상의 리프 네트워크 노드들에 의해 수행되는 분기 동작들의 위에서 언급된 설명은, 시스템(100)이 수정된 멀티미디어 데이터 프레임들을 프라이머리 노드로부터 개개의 허브 노드로 그리고 리프 노드들의 구성을 통해 라우팅하는 방법의 예를 제공한다. 동일한 프로세스는 멀티미디어 데이터 프레임 데이터 프레임들을 도 1의 나머지 리프 노드들을 통해 라우팅하는 데 사용될 수 있다. 예컨대, 리프 노드 "A"(150)는 수정된 멀티미디어 데이터 프레임(132)을 리프 노드 "C"에 송신할 수 있다. 리프 노드 "C"(152)는 분기 동작들을 수행하고, 개개의 유니캐스트 데이터 프레임들(137 및 138)을 생성한다. 각각의 개개의 유니캐스트 데이터 프레임(137 및 138)은 개개의 유니캐스트 데이터 프레임들(137 및 138)에 대한 유일한 목적지인 특정 리프 노드에 대한 어드레스를 포함할 수 있다. 도 1의 예에서, 유니캐스트 메시지(137)는 어드레스 "F_Addr"(187)을 포함하고, 유니캐스트 메시지(138)는 어드레스 "G_Addr"을 포함한다. 그런 다음, 유니캐스트 데이터 프레임들(137 및 138)은 그들의 개개의 최종 목적지들인 리프 노드 "F"(155) 및 리프 노드 "G"(156)에 각각 송신될 수 있다.
[00045] 수정된 멀티미디어 데이터 프레임들의 위에서 언급된 라우팅은, 유니캐스트 데이터 프레임을 사용한 멀티캐스트-형 통신(multicast-like communication)을 가능하게 하는 방식으로 수정된 어드레스 필드를 갖는 데이터 프레임을 사용함으로써 종래의 방법들에 비해 상당한 장점들을 제공한다. 이는, 사용자가 시청하기를 원하는 채널에 대해 채널마다 탐색하는 동안의 사용자의 신속한 채널 스위핑 및 무선 네트워크에서의 빈번한 링크 손실에 대한 응답으로 멀티캐스트 브로드캐스팅 시스템에서 요구될 시스템(100)이 멀티캐스트 라우팅 스패닝 트리들의 빈번한 재계산 없이, 수정된 멀티미디어 데이터 프레임들을 효율적으로 라우팅하는 것을 가능하게 한다. 종래의 멀티캐스트 브로드캐스팅 시스템이 사용된다면, 수정된 멀티미디어 데이터 프레임들은 목적지 리프 노드들에 도달할 수 없거나 또는 라우팅 스패닝 트리들의 재계산 동안에 최적보다 많은 대역폭이 소비될 것이다.
[00046] 도 1의 예는 10-비트 비트맵을 사용하여 어드레싱된 복수의 리프 네트워크 노드들의 예를 제공한다. 그러나, 본 개시내용은 최대 40-비트를 사용할 수 있는 목적지 어드레스 필드를 제공한다. 6-비트 HubNodeID와 조합하여, 이는 단일 프라이머리 노드 아래에 2^6 * 40 = 2560 리프 노드들을 허용할 수 있다. 그러나, 본 개시내용은 훨씬 더 큰 네트워크 사이즈들을 허용할 수 있다. 예컨대, 40-비트 목적지 어드레스 필드의 하나 이상의 유효 비트(significant bit)들은 클러스터-id로서 사용될 수 있다. 예컨대, 최상위 비트는 허브 노드와 연관된 제1 클러스터 노드 "1" 및 동일한 허브 노드에 의해 식별되는 제2 클러스터 노드 "0"을 식별하는 데 사용될 수 있다. 그런 다음, 나머지 39 비트는, 단일 허브 노드 아래의 총 78 리프 네트워크 노드들에 대해, "1" 최상위 비트와 연관된 제1 클러스터 노드 아래의 39 노드들을 식별하고 그리고 또한 "0" 최상위 비트와 연관된 제2 클러스터 노드 아래의 39 노드들을 식별하는 데 사용될 수 있다. 동일한 6-비트 HubNodeID를 사용하면, 단일 프라이머리 노드 아래에 2^6 * 2^1*39 = 4,992 리프 노드들에 이를 수 있다. 클러스터-id를 사용하여 수정된 멀티미디어 데이터 프레임들을 라우팅하는 것은 수정된 멀티미디어 데이터 프레임을 허브 노드에 의해 클러스터-id에 의해 식별된 대응하는 클러스터 네트워크 노드로 라우팅하는 추가의 스테이지를 수반할 것이다. 일단 수정된 멀티미디어 데이터 프레임이 클러스터 네트워크 노드에 의해 수신되면, 위에서 설명된 방식으로 목적지 어드레스 데이터의 나머지 비트들을 사용하여 분기 동작들이 수행될 수 있다. 따라서, 클러스터-id로서 사용하기 위해 목적지 어드레스 필드의 하나 이상의 비트들을 배분함으로써, 본 개시내용은 수정된 멀티미디어 데이터 프레임을 사용하여 더 많은 수의 리프 네트워크 노드들을 어드레싱할 수 있다.
[00047] 위에서 설명된 도 1의 예는, 리프 노드 A가 목적지 어드레스 데이터(146)를 포함하는 수정된 멀티미디어 데이터 프레임(130)을 수신하는 예를 포함하며, 목적지 어드레스 데이터(146)는 수정된 멀티미디어 데이터 프레임(130)의 페이로드에 대한 목적지인 다수의 리프 노드들 중 각각의 리프 노드의 목적지 어드레스를 나타내는 데이터를 포함한다. 목적지 어드레스 데이터(146)는, 예컨대 목적지 어드레스들의 인코딩된 비트맵을 포함할 수 있다. 그러나, 일부 경우들에서, 리프 노드 A는 특정 데이터 프레임의 유일한 목적지일 수 있다. 그러한 경우들에서, 허브 노드들, 이를테면, 허브 노드(112-n)는 어드레스 "A_Addr"(190a)을 포함하는 리프 노드 A로의 송신을 위해 유니캐스트 메시지(190)를 생성할 수 있다. 어드레스 "A_Addr"(190a)은 리프 노드 "A"(150)의 특정 어드레스이다. 유니캐스트 데이터 프레임(190)은 허브 노드(112-n)에 의해 리프 노드 "A"(150)에 송신된다. 리프 노드, 이를테면, 리프 노드 "A"(150)가 유니캐스트 메시지, 이를테면, 유니캐스트 메시지(190)를 수신하는 그러한 경우들에서, 리프 노드 "A"(150)는 분기를 수행하지 않을 것이다.
[00048] 도 2는 수정된 멀티미디어 데이터 프레임들을 생성하기 위한 프로세스(200)의 예의 흐름도이다. 편의상, 프로세스(200)는 하나 이상의 위치들에 로케이팅된 하나 이상의 컴퓨터들의 시스템에 의해 수행되는 것으로 설명될 것이다. 예컨대, 시스템, 이를테면, 시스템(100)은 프로세스(200)를 수행하기 위해 본 명세서에 따라 적절하게 프로그래밍될 수 있다.
[00049] 프로세스(200)는, 시스템이, 복수의 채널들 중 각각에 채널에 대한 리프 노드 멤버십을 표시하는 데이터를 포함하는 채널 멤버십 데이터를 제1 네트워크 노드에 의해 유지하는 것(210)으로 시작된다. 일부 구현들에서, 채널 멤버십 데이터는 테이블을 사용하여 채널마다 유지될 수 있다. 채널 가입 데이터는, 각각의 채널에 대해, 채널의 멤버들인 네트워크 노드들을 결정하는 데 사용될 수 있다. 예컨대, 리프 네트워크 노드가 채널에 의해 제공되는 콘텐츠에 액세스하는 것을 허용하는 가입(subscription)을 리프 네트워크 노드가 한 경우, 리프 네트워크 노드는 채널에 대한 멤버십을 가질 수 있다. 채널에 의해 제공되는 콘텐츠에 대한 액세스는, 예컨대 채널에 의해 제공된 콘텐츠를 뷰잉하기 위한 액세스를 포함할 수 있다. 채널은, 예컨대 TV 채널을 포함할 수 있다. 대안적으로, 채널은, 예컨대 인터넷 멀티미디어 채널, 이를테면, YouTube 채널을 포함할 수 있다.
[00050] 시스템은, 복수의 채널들 중 각각의 채널에 대해, 복수의 리프 네트워크 노드들 각각이 채널에 액세스하는 것에 대해 가입되어 있는지 여부를 결정한다(220). 리프 노드가 채널에 액세스하는 것에 대해 가입되어 있는지 여부를 결정하는 것은, 제1 네트워크 노드에 의해 유지되는 채널 멤버십 데이터에 액세스하는 것을 포함할 수 있다. 예컨대, 시스템은, 채널 멤버십 데이터 테이블에 액세스하여, 하나 이상의 리프 노드들이, 채널에 액세스하는 것에 대한 가입과 연관되어 있는 것으로 리스트되어 있는지 여부를 결정할 수 있다.
[00051] 시스템은, 적어도 하나의 가입된 리프 노드가 있는 각각의 채널에 대해, 무선 네트워크에서 사용하기 위한 수정된 멀티미디어 데이터 프레임을 생성할 수 있다(230). 채널에 대해 생성된 수정된 멀티미디어 데이터 프레임은, (i) 허브 노드 식별자, (ii) 상수, (iii) 채널과 연관된 각각의 리프 노드에 대한 목적지 어드레스를 설명하는 목적지 어드레스 데이터, 및 (iv) 페이로드를 포함하는 데이터 구조이다. 허브 노드 식별자는, 생성된 수정된 멀티미디어 데이터 프레임이 라우팅되어야 하는 허브 노드를 식별하는 데 사용된다. 상수는, 수정된 멀티미디어 데이터 프레임의 목적지 어드레스 데이터가 국부적 관리 어드레스라는 것, (ii) 데이터 프레임이 수정된 멀티미디어 데이터 프레임이라는 것, 또는 (iii) 둘 모두를 표시하는 데 사용된다. 페이로드는, 예컨대 채널에 의한 콘텐츠 브로드캐스트의 부분을 포함할 수 있다.
[00052] 수정된 멀티미디어 데이터 프레임의 목적지 어드레스 데이터는 종래의 유니캐스트 데이터 프레임에 포함된 목적지 어드레스와 상이한데, 왜냐하면, 목적지 어드레스 데이터는, 수정된 멀티미디어 데이터 프레임의 페이로드에 대한 목적지인 다수의 리프 노드들 각각의 목적지 어드레스의 표현인 데이터를 포함하기 때문이다. 이는, 종래의 유니캐스트 데이터 프레임의 목적지인 단일 노드의 단일 목적지 어드레스만을 포함할 수 있는 종래의 유니캐스트 데이터 프레임과 상이하다. 목적지 어드레스 데이터는, 멀티미디어 데이터 프레임이 생성될 때, 생성될 수 있다. 일부 구현들에서, 수정된 멀티미디어 데이터 프레임을 생성하는 것은, 각각의 리프 노드에 대한 목적지 어드레스를 설명하는 데이터를, MAC 헤더의 목적지 어드레스 필드를 파퓰레이팅하는 데 사용되는 목적지 어드레스들의 비트맵으로 인코딩하는 것을 포함한다.
[00053] 시스템은, 제1 네트워크 노드에 의해, 각각의 생성된 수정된 멀티미디어 데이터 프레임을 제2 네트워크 노드에 송신한다(240). 일부 구현들에서, 제2 네트워크 노드는 수정된 멀티미디어 데이터 프레임의 허브 노드 식별자에 의해 식별되는 허브 노드를 포함할 수 있다.
[00054] 위에서 언급된 프로세스를 수행하는 시스템은, 적어도 하나의 가입자와 연관된 각각의 채널에 대한 수정된 멀티미디어 데이터 프레임을 생성한다. 그러나, 하나 이상의 특정 채널들이 어떤 가입자들도 갖지 않는 경우들이 있을 수 있다. 그러한 경우들에서, 시스템은 채널에 대한 수정된 멀티미디어 데이터 프레임을 생성하지 않기로 결정할 수 있다.
[00055] 도 3은 수정된 멀티미디어 데이터 프레임들을 라우팅하기 위한 프로세스(300)의 예의 흐름도이다. 편의상, 프로세스(300)는 하나 이상의 위치들에 로케이팅된 하나 이상의 컴퓨터들의 시스템에 의해 수행되는 것으로 설명될 것이다. 예컨대, 시스템, 이를테면, 시스템(100)은 프로세스(300)를 수행하기 위해 본 명세서에 따라 적절하게 프로그래밍될 수 있다.
[00056] 프로세스(300)는, 리프 네트워크 노드가 수정된 멀티미디어 데이터 프레임을 수신하는 것(310)으로 시작된다. 수신된 수정된 멀티미디어 데이터 프레임은, 채널과 연관된 각각의 리프 노드에 대한 목적지 어드레스를 설명하는 목적지 어드레스 데이터를 포함하는 데이터 구조이다. 목적지 어드레스 데이터는, 멀티미디어 데이터 프레임이 생성되었을 때, 생성되었을 수 있다. 일부 구현들에서, 목적지 어드레스 데이터는 멀티미디어 데이터 프레임의 목적지인 각각의 리프 노드에 대한 목적지 어드레스들의 비트맵으로서 인코딩될 수 있다. 리프 네트워크 노드는 수정된 멀티미디어 데이터 프레임의 수신 시에 아래의 스테이지들(320 내지 360)에 의해 설명되는 분기 동작들을 개시할 수 있다.
[00057] 시스템은, 수신된 수정된 멀티미디어 데이터 프레임의 목적지 어드레스 데이터를 분석한다(320). 수신된 수정된 멀티미디어 데이터 프레임의 목적지 어드레스 데이터를 분석하는 것(320)은, 예컨대 수신된 수정된 멀티미디어 데이터 프레임의 목적지 어드레스 데이터를 리프 네트워크 노드의 비트맵 테이블에 저장된 데이터와 비교하는 것을 포함할 수 있다. 리프 네트워크 노드는 멀티미디어 데이터 프레임의 목적지인 하나 이상의 리프 노드들 각각을 결정하기 위해 비트맵 테이블을 사용할 수 있다. 예컨대, 일부 구현들에서, 비트맵 테이블은 비트맵-투-리프 네트워크 노드 맵핑(bitmap-to-leaf network node mapping)을 포함할 수 있다. 따라서, 비트맵 테이블은 목적지 어드레스들의 비트맵을 복수의 리프 노드 목적지 어드레스들로 트랜슬레이팅(translate)하는 데 사용될 수 있다.
[00058] 시스템은, 수정된 멀티미디어 데이터 프레임의 목적지인 하나 이상의 다음 리프 노드들을 식별할 수 있다(330). 일부 구현들에서, 스테이지(330)는 다음 리프 노드 목적지들을 식별하는 것을 포함할 수 있고, 이는, 수신된 수정된 멀티미디어 데이터 프레임으로부터 획득된 목적지 어드레스들의 비트맵을, 미리 컴퓨팅된 목적지 어드레스 데이터-투-다음 리프 노드 테이블에 액세스하고 그리고 수정된 멀티미디어 데이터 프레임이 라우팅되어야 하는 하나 이상의 다음 리프 노드들을 리턴하는 기능에 제공할 수 있다. 일부 구현들에서, 목적지 어드레스 데이터-투-다음 리프 노드 테이블은 비트맵-투-다음 리프 노드 테이블이다. 대안적으로, 다음 리프 노드 목적지들은, 목적지 어드레스 데이터를, 본원에서 설명된 비트맵 테이블과 같은 리프 노드의 라우팅 테이블과 비교함으로써 런타임 시에 컴퓨팅될 수 있다.
[00059] 시스템은 다음 리프 노드 목적지들에 기반하는 목적지 어드레스 데이터에 기반하여 식별된 복수의 목적지 어드레스들 각각을 그룹화할 수 있다(340). 목적지 어드레스 데이터에 기반하여 식별된 복수의 목적지 어드레스들 각각을 그룹화하는 것은, 다음 리프 노드에 대한 각각의 개개의 리프 노드의 계층적 관계에 기반하여 각각의 개개의 다음 리프 노드 목적지 아래의 각각의 목적지 어드레스를 클러스터화(clustering)하는 것을 포함한다. 예컨대, 다음 리프 노드 목적지에 대한 차일드 노드인 리프 노드는 다음 리프 노드 목적지와 그룹화될 것이다.
[00060] 시스템은, 각각의 개개의 다음 리프 노드가, 스테이지(310)에서 수신된 수정된 멀티미디어 데이터 프레임의 목적지 어드레스 내에 인코딩된 유일한 나머지 리프 네트워크 노드 목적지인지 여부를 결정할 수 있다(350). 결정 스테이지(350)는, 스테이지(310)에서 수정된 멀티미디어 데이터 프레임을 수신한 리프 네트워크 노드에 의해, 적어도 하나의 수정된 멀티미디어 데이터 프레임의 목적지인 후속 네트워크 노드들의 개수를 식별하는 것을 포함할 수 있다. 후속 네트워크 노드들의 개수가 하나의 리프 네트워크 노드보다 더 많다는 결정에 대한 응답으로, 리프 네트워크 노드는, (i) 후속 네트워크 노드들 각각의 목적지 어드레스를 설명하는 데이터 및 (ii) 페이로드의 카피를 포함하는 수정된 멀티미디어 데이터 프레임을 생성할 수 있다. 후속 네트워크 노드들 각각의 목적지 어드레스를 설명하는 데이터는 후속 네트워크 노드들의 목적지 어드레스들의 비트맵을 포함할 수 있다. 대안적으로, 후속 네트워크 노드들의 개수가 하나의 리프 네트워크 노드와 동일하다는 결정에 대한 응답으로, 리프 네트워크 노드는, (i) 하나의 후속 네트워크 노드의 목적지 어드레스를 설명하는 데이터 및 (ii) 페이로드의 카피를 포함하는 유니캐스트 데이터 프레임을 생성할 수 있다. 이러한 시나리오에서, 하나의 후속 노드의 목적지 어드레스를 설명하는 데이터는 단일 리프 노드 목적지 어드레스만을 포함한다.
[00061] 도 4는 수정된 멀티미디어 데이터 프레임들을 생성 및 라우팅하기 위한 시스템의 컴포넌트들의 블록 다이어그램이다.
[00062] 컴퓨팅 디바이스(400)는, 다양한 형태들의 디지털 컴퓨터들, 이를테면, 랩톱들, 데스크톱들, 워크스테이션들, 개인 휴대 정보 단말(personal digital assistant)들, 서버들, 블레이드 서버들, 메인프레임들, 및 다른 적절한 컴퓨터들을 나타내는 것으로 의도된다. 모바일 컴퓨팅 디바이스(450)는, 다양한 형태들의 모바일 컴퓨팅 디바이스들, 이를테면, 데스크톱들, 랩톱들, 태블릿들, 개인 휴대 정보 단말들, 셀룰러 전화들, 스마트폰들, 및 다른 유사한 컴퓨팅 디바이스들을 나타내는 것으로 의도된다. 여기에 도시된 컴포넌트들, 이들의 연결들 및 관계들, 그리고 이들의 기능들은 단지 예시들로 여겨지며, 제한하는 것으로 여겨지는 것은 아니다.
[00063] 컴퓨팅 디바이스(400)는, 프로세서(402), 메모리(404), 저장 디바이스(406), 메모리(404) 및 다수의 고속 확장 포트들(410)에 연결되는 고속 인터페이스(408), 및 저속 확장 포트(414) 및 저장 디바이스(406)에 연결되는 저속 인터페이스(412)를 포함한다. 프로세서(402), 메모리(404), 저장 디바이스(406), 고속 인터페이스(408), 고속 확장 포트들(410), 및 저속 인터페이스(412) 각각은 다양한 버스들을 사용하여 상호연결되며, 공통 마더보드 상에 또는 다른 방식들로 적절하게 장착될 수 있다. 프로세서(402)는 메모리(404) 내에 또는 저장 디바이스(406) 상에 저장된 명령들을 포함하여 컴퓨팅 디바이스(400) 내에서 실행하기 위한 명령들을 프로세싱하여, 고속 인터페이스(408)에 커플링된 디스플레이(416)와 같은 외부 입력/출력 디바이스 상에 그래픽 사용자 인터페이스(GUI; graphical user interface)에 대한 그래픽 정보를 디스플레이할 수 있다. 다른 구현들에서는, 다수의 메모리들 및 다수의 타입들의 메모리와 함께 다수의 프로세서들 및/또는 다수의 버스들이 적절하게 사용될 수 있다. 또한, 다수의 컴퓨팅 디바이스들이 연결될 수 있으며, 각각의 디바이스는 (예컨대, 서버 뱅크, 블레이드 서버들의 그룹, 또는 멀티프로세서 시스템으로서) 필요한 동작들의 부분들을 제공한다.
[00064] 메모리(404)는 컴퓨팅 디바이스(400) 내의 정보를 저장한다. 일부 구현들에서, 메모리(404)는 휘발성 메모리 유닛 또는 유닛들이다. 일부 구현들에서, 메모리(404)는 비-휘발성 메모리 유닛 또는 유닛들이다. 메모리(404)는 또한 다른 형태의 컴퓨터-판독가능 매체, 이를테면, 자기 또는 광학 디스크일 수 있다. 저장 디바이스(406)는 컴퓨팅 디바이스(400)를 위한 대용량 저장소를 제공할 수 있다. 일부 구현들에서, 저장 디바이스(406)는 컴퓨터-판독가능 매체, 이를테면, 플로피 디스크 디바이스, 하드 디스크 디바이스, 광학 디스크 디바이스, 또는 테이프 디바이스, 플래시 메모리 또는 다른 유사한 고체 상태 메모리 디바이스, 또는 저장 영역 네트워크 또는 다른 구성들의 디바이스들을 포함하는 디바이스들의 어레이일 수 있거나 이를 포함할 수 있다. 다른 구현들에서, 저장 디바이스(406)는 하나의 또는 다수의 클라우드-기반 저장 디바이스들을 포함할 수 있다. 명령들은 정보 캐리어에 저장될 수 있다. 명령들은, 하나 이상의 프로세싱 디바이스들(예컨대, 프로세서(402))에 의해 실행될 때, 하나 이상의 방법들, 이를테면, 위에서 설명된 방법들을 수행한다. 명령들은 또한, 하나 이상의 저장 디바이스들, 이를테면, 컴퓨터- 또는 기계-판독가능 매체들(예컨대, 메모리(404), 저장 디바이스(406), 또는 프로세서(402) 상의 메모리)에 의해 저장될 수 있다.
[00065] 고속 인터페이스(408)는 컴퓨팅 디바이스(400)에 대한 대역폭-집약적 동작들을 관리하는 한편, 저속 인터페이스(412)는 더 낮은 대역폭-집약적 동작들을 관리한다. 기능들의 그러한 할당은 단지 예시일 뿐이다. 일부 구현들에서, 고속 인터페이스(408)는 메모리(404)에, (예컨대, 그래픽 프로세서 또는 가속기를 통해) 디스플레이(416)에, 그리고 다양한 확장 카드들을 수용할 수 있는 고속 확장 포트들(410)에 커플링된다. 그 구현에서, 저속 인터페이스(412)는 저장 디바이스(406) 및 저속 확장 포트(414)에 커플링된다. 다양한 통신 포트들(예컨대, USB, 블루투스, 이더넷, 무선 이더넷)을 포함할 수 있는 저속 확장 포트(414)는 하나 이상의 입력/출력 디바이스들, 이를테면, 키보드, 포인팅 디바이스, 스캐너, 또는 네트워킹 디바이스, 이를테면, 스위치나 라우터에, 예컨대 네트워크 어댑터를 통해 커플링될 수 있다.
[00066] 컴퓨팅 디바이스(400)는 도면에 도시된 바와 같이, 다수의 상이한 형태들로 구현될 수 있다. 예컨대, 이는 표준 서버(420)로서 구현되거나 또는 그러한 서버들의 그룹에서 여러 번 구현될 수 있다. 부가하여, 이는 개인용 컴퓨터, 이를테면, 랩톱 컴퓨터(422)로 구현될 수 있다. 이는 또한, 랙 서버 시스템(424)의 일부로서 구현될 수 있다. 대안적으로, 컴퓨팅 디바이스(400)로부터의 컴포넌트들은 모바일 컴퓨팅 디바이스, 이를테면, 모바일 컴퓨팅 디바이스(450) 내의 다른 컴포넌트들과 조합될 수 있다. 그러한 디바이스들 각각은 컴퓨팅 디바이스(400) 및 모바일 컴퓨팅 디바이스(450) 중 하나 이상을 포함할 수 있고, 전체 시스템은 서로 통신하는 다수의 컴퓨팅 디바이스들로 구성될 수 있다.
[00067] 모바일 컴퓨팅 디바이스(450)는, 다른 컴포넌트들 중에서도, 프로세서(452), 메모리(464), 입력/출력 디바이스, 이를테면, 디스플레이(454), 통신 인터페이스(466), 및 트랜시버(468)를 포함한다. 모바일 컴퓨팅 디바이스(450)는 또한, 추가적인 저장소를 제공하기 위해 저장 디바이스, 이를테면, 마이크로-드라이브 또는 다른 디바이스를 구비할 수 있다. 프로세서(452), 메모리(464), 디스플레이(454), 통신 인터페이스(466), 및 트랜시버(468) 각각은 다양한 버스들을 사용하여 상호연결되며, 컴포넌트들 중 몇몇은 공통 마더보드 상에 또는 다른 방식들로 적절하게 장착될 수 있다.
[00068] 프로세서(452)는 메모리(464)에 저장된 명령들을 포함하여, 모바일 컴퓨팅 디바이스(450) 내의 명령들을 실행할 수 있다. 프로세서(452)는 별개의 다수의 아날로그 및 디지털 프로세서들을 포함하는 칩들의 칩셋으로서 구현될 수 있다. 프로세서(452)는, 예컨대, 모바일 컴퓨팅 디바이스(450)에 의한 무선 통신, 모바일 컴퓨팅 디바이스(450)에 의해 실행되는 애플리케이션들, 및 사용자 인터페이스들의 제어와 같은 모바일 컴퓨팅 디바이스(450)의 다른 컴포넌트들의 조정을 제공할 수 있다.
[00069] 프로세서(452)는 디스플레이(454)에 커플링된 제어 인터페이스(458) 및 디스플레이 인터페이스(456)를 통해 사용자와 통신할 수 있다. 디스플레이(454)는 예컨대, TFT(박막 트랜지스터 액정 디스플레이) 디스플레이 또는 유기 발광 다이오드(OLED; Organic Light Emitting Diode) 디스플레이, 또는 다른 적절한 디스플레이 기술일 수 있다. 디스플레이 인터페이스(456)는 디스플레이(454)를 구동하여 사용자에게 그래픽 및 다른 정보를 제시하기 위한 적절한 회로를 포함할 수 있다. 제어 인터페이스(458)는 사용자로부터 커맨드들을 수신하고 이들을 프로세서(452)에 제출하기 위해 변환할 수 있다. 부가하여, 다른 디바이스들과 모바일 컴퓨팅 디바이스(450)의 근거리 통신을 가능하게 하기 위해, 외부 인터페이스(462)가 프로세서(452)와의 통신을 제공할 수 있다. 외부 인터페이스(462)는 예컨대, 일부 구현들에서는 유선 통신을, 또는 다른 구현들에서는 무선 통신을 제공할 수 있으며, 다수의 인터페이스들이 또한 사용될 수 있다.
[00070] 메모리(464)는 모바일 컴퓨팅 디바이스(450) 내의 정보를 저장한다. 메모리(464)는 컴퓨터-판독가능 매체 또는 매체들, 휘발성 메모리 유닛 또는 유닛들, 또는 비휘발성 메모리 유닛 또는 유닛들 중 하나 이상으로서 구현될 수 있다. 확장 메모리(474)가 또한 제공될 수 있으며, 예컨대 단일 인라인 메모리 모듈(SIMM; Single In Line Memory Module) 카드 인터페이스를 포함할 수 있는 확장 인터페이스(472)를 통해 모바일 컴퓨팅 디바이스(450)에 연결될 수 있다. 확장 메모리(474)는 모바일 컴퓨팅 디바이스(450)를 위한 여분의 저장 공간을 제공할 수 있거나, 모바일 컴퓨팅 디바이스(450)에 대한 애플리케이션들 또는 다른 정보를 또한 저장할 수 있다. 구체적으로, 확장 메모리(474)는 위에서 설명된 프로세스들을 실행하거나 보완하기 위한 명령들을 포함할 수 있고, 보안 정보를 또한 포함할 수 있다. 따라서 예컨대, 확장 메모리(474)는 모바일 컴퓨팅 디바이스(450)에 대한 보안 모듈로서 제공될 수 있고, 모바일 컴퓨팅 디바이스(450)의 보안 사용을 허용하는 명령들로 프로그래밍될 수 있다. 부가하여, 보안 애플리케이션들이 추가적인 정보와 함께 SIMM 카드들을 통해 제공될 수 있는데, 이를테면, 식별 정보를 해킹 가능하지 않은 방식으로 SIMM 카드 상에 배치할 수 있다.
[00071] 메모리는, 예컨대, 아래에서 논의되는 바와 같이, 플래시 메모리 및/또는 NVRAM 메모리(비-휘발성 랜덤 액세스 메모리)를 포함할 수 있다. 일부 구현들에서, 명령들은 정보 캐리어에 저장되며, 그 명령들은, 하나 이상의 프로세싱 디바이스들(예컨대, 프로세서(452))에 의해 실행될 때, 하나 이상의 방법들, 이를테면, 위에서 설명된 방법들을 수행한다. 명령들은 또한, 하나 이상의 저장 디바이스들, 이를테면, 하나 이상의 컴퓨터- 또는 기계-판독가능 매체들(예컨대, 메모리(464), 확장 메모리(474), 또는 프로세서(452) 상의 메모리)에 의해 저장될 수 있다. 일부 구현들에서, 명령들은, 예컨대 트랜시버(468) 또는 외부 인터페이스(462)를 통해 전파되는 신호에서 수신될 수 있다.
[00072] 모바일 컴퓨팅 디바이스(450)는, 필요한 경우, 디지털 신호 프로세싱 회로를 포함할 수 있는 통신 인터페이스(466)를 통해 무선으로 통신할 수 있다. 통신 인터페이스(466)는 다양한 모드들 또는 프로토콜들, 이를테면, 특히, GSM(Global System for Mobile communications), SMS(Short Message Service), EMS(Enhanced Messaging Service), 또는 MMS 메시징(Multimedia Messaging Service), CDMA(code division multiple access), TDMA(time division multiple access), PDC(Personal Digital Cellular), WCDMA(Wideband Code Division Multiple Access), CDMA2000, 또는 GPRS(General Packet Radio Service) 하에서 통신들을 제공할 수 있다. 그러한 통신은, 예컨대, 라디오-주파수를 사용하여 트랜시버(468)를 통해 발생할 수 있다. 부가하여, 이를테면, 블루투스, WiFi, 또는 다른 그러한 트랜시버를 사용하여 단거리 통신이 발생할 수 있다. 부가하여, 글로벌 포지셔닝 시스템(GPS; Global Positioning System) 수신기 모듈(470)이, 모바일 컴퓨팅 디바이스(450) 상에서 실행되는 애플리케이션들에 의해 적절하게 사용될 수 있는 추가적인 내비게이션 및 위치 관련 무선 데이터를 모바일 컴퓨팅 디바이스(450)에 제공할 수 있다.
[00073] 모바일 컴퓨팅 디바이스(450)는 또한, 사용자로부터 구두 정보를 수신하여 이를 사용가능한 디지털 정보로 변환할 수 있는 오디오 코덱(460)을 사용하여 청각적으로 통신할 수 있다. 오디오 코덱(460)은 마찬가지로, 예컨대 모바일 컴퓨팅 디바이스(450)의 핸드셋에서, 이를테면, 스피커를 통해 사용자를 위한 가청 사운드를 생성할 수 있다. 그러한 사운드는 음성 전화 호출들로부터의 사운드를 포함할 수 있고, 녹음된 사운드(예컨대, 음성 메시지들, 음악 파일들 등)를 포함할 수 있으며, 모바일 컴퓨팅 디바이스(450) 상에서 동작하는 애플리케이션들에 의해 생성된 사운드를 또한 포함할 수 있다.
[00074] 모바일 컴퓨팅 디바이스(450)는 도면에 도시된 바와 같이, 다수의 상이한 형태들로 구현될 수 있다. 예컨대, 이는 셀룰러 전화(480)로서 구현될 수 있다. 이는 또한 스마트폰(482), 개인 휴대 정보 단말, 태블릿, 랩톱, 데스크톱, 또는 다른 유사한 모바일 컴퓨팅 디바이스의 일부로서 구현될 수 있다.
[00075] 본 명세서에서 설명되는 청구 대상, 기능적 동작들 및 프로세스들의 실시예들은 디지털 전자 회로에, 유형적으로(tangibly) 구현된 컴퓨터 소프트웨어 또는 펌웨어에, 본 명세서에 개시된 구조들 및 이들의 구조적 등가물들을 포함하는 컴퓨터 하드웨어에, 또는 이들 중 하나 이상의 조합들에 구현될 수 있다. 본 명세서에서 설명된 청구 대상의 실시예들은 하나 이상의 컴퓨터 프로그램들(즉, 데이터 프로세싱 장치에 의한 실행을 위해 또는 데이터 프로세싱 장치의 동작을 제어하기 위해 유형적인 비-휘발성 프로그램 캐리어 상에 인코딩된 컴퓨터 프로그램 명령들의 하나 이상의 모듈들)로서 구현될 수 있다. 대안적으로 또는 부가하여, 프로그램 명령들은, 데이터 프로세싱 장치에 의한 실행을 위해 적합한 수신기 장치로의 송신을 위한 정보를 인코딩하도록 생성되는 인위적으로 생성된 전파 신호(예컨대, 기계에 의해 생성된 전기적, 광학적 또는 전자기적 신호)에 대해 인코딩될 수 있다. 컴퓨터 저장 매체는 기계-판독가능 저장 디바이스, 기계-판독가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 디바이스, 또는 이들 중 하나 이상의 조합일 수 있다.
[00076] "데이터 프로세싱 장치"라는 용어는, 예로서 프로그램가능 프로세서, 컴퓨터, 또는 다수의 프로세서들 또는 컴퓨터들을 포함하여, 데이터를 프로세싱하기 위한 모든 종류들의 장치, 디바이스들, 및 기계들을 포괄한다. 장치는 특수 목적 로직 회로, 예컨대 필드 프로그램가능 게이트 어레이(FPGA: field programmable gate array) 또는 주문형 집적 회로(ASIC: application specific integrated circuit)를 포함할 수 있다. 장치는 또한, 하드웨어에 부가하여, 해당 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예컨대 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 시스템, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다.
[00077] (프로그램, 소프트웨어, 소프트웨어 애플리케이션, 모듈, 소프트웨어 모듈, 스크립트 또는 코드로 또한 지칭되거나 이로서 설명될 수 있는) 컴퓨터 프로그램은 컴파일링된 또는 해석된 언어들, 또는 서술적 또는 절차적 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 작성될 수 있고, 이는 독립형 프로그램으로서 또는 모듈, 컴포넌트, 서브루틴, 또는 컴퓨팅 환경에 사용하기에 적합한 다른 유닛으로서의 형태를 포함하는 임의의 형태로 전개될 수 있다. 컴퓨터 프로그램은 파일 시스템 내의 파일에 대응할 수도 있지만, 반드시 그러할 필요는 없다. 프로그램은, 다른 프로그램들 또는 데이터를 유지하는 파일(예컨대, 마크업 언어 도큐먼트에 저장된 하나 이상의 스크립트들)의 부분에 저장될 수 있거나, 해당 프로그램 전용의 단일 파일에 저장될 수 있거나, 또는 다수의 협력형 파일(coordinated file)들(예컨대, 하나 이상의 모듈들, 서브 프로그램들, 또는 코드의 부분들을 저장하는 파일들)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 상에서 실행되도록 전개될 수 있거나, 또는 하나의 사이트에 위치되거나 또는 다수의 사이트들에 걸쳐 분산되어 통신 네트워크에 의해 상호연결되는 다수의 컴퓨터 상에서 실행되도록 전개될 수 있다.
[00078] 본 명세서에서 설명된 프로세스들 및 로직 흐름들은 입력 데이터에 대해 동작하여 출력을 생성함으로써 기능들을 수행하도록 하나 이상의 컴퓨터 프로그램들을 실행시키는 하나 이상의 프로그램가능 컴퓨터들에 의해 수행될 수 있다. 프로세스들 및 논리 흐름들은 또한 특수 목적 로직 회로, 예컨대 필드 프로그램가능 게이트 어레이(FPGA) 또는 주문형 집적 회로(ASIC)에 의해 수행될 수 있으며, 장치가 또한 이로서 구현될 수 있다.
[00079] 컴퓨터 프로그램의 실행에 적합한 컴퓨터들은, 예로서 범용 마이크로프로세서 또는 특수 목적 마이크로프로세서 또는 둘 모두, 또는 임의의 다른 종류의 중앙 프로세싱 유닛을 포함하며, 이에 기반할 수 있다. 일반적으로, 중앙 프로세싱 유닛은 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령들 및 데이터를 수신할 것이다. 컴퓨터의 필수적인 엘리먼트들은, 명령들을 수행하거나 또는 실행하기 위한 중앙 프로세싱 유닛, 및 명령들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는 또한, 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스들, 예컨대, 자기, 마그네토 광학 디스크들, 또는 광학 디스크들을 포함하거나, 또는 이들로부터 데이터를 수신하거나 또는 이들에 데이터를 전달하거나 또는 둘 모두를 위해 동작가능하게 커플링될 것이다. 그러나, 컴퓨터가 그러한 디바이스들을 가질 필요는 없다. 더욱이, 컴퓨터는 다른 디바이스, 몇 개만 예를 들자면, 예컨대 모바일 전화, 개인 휴대 정보 단말(PDA: personal digital assistant), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, 글로벌 포지셔닝 시스템(GPS: Global Positioning System) 수신기, 또는 휴대용 저장 디바이스(예컨대, 범용 직렬 버스(USB: universal serial bus) 플래시 드라이브)에 내장될 수 있다.
[00080] 컴퓨터 프로그램 명령들 및 데이터를 저장하기에 적합한 컴퓨터 판독가능 매체들은, 예로서 반도체 메모리 디바이스들, 예컨대 EPROM, EEPROM, 및 플래시 메모리 디바이스들; 자기 디스크들, 예컨대 내부 하드 디스크들 또는 착탈식 디스크들; 마그네토 광학 디스크들; 및 CD-ROM 및 DVD-ROM 디스크들을 포함하는 모든 형태들의 비휘발성 메모리, 매체들 및 메모리 디바이스들을 포함한다. 프로세서 및 메모리는 특수 목적 로직 회로에 의해 보완되거나 특수 목적 로직 회로에 포함될 수 있다.
[00081] 사용자와의 상호작용을 제공하기 위해, 본 명세서에서 설명되는 청구 대상의 실시예들은, 정보를 사용자에게 디스플레이하기 위한 디스플레이 디바이스, 예컨대 음극선관(CRT; cathode ray tube) 또는 액정 디스플레이(LCD; liquid crystal display) 모니터, 및 사용자가 컴퓨터에 입력을 제공할 수 있게 하는 키보드 및 포인팅 디바이스, 예컨대 마우스 또는 트랙볼을 갖는 컴퓨터 상에서 구현될 수 있다. 사용자와의 상호작용을 제공하기 위해 다른 종류들의 디바이스들이 또한 사용될 수 있으며; 예컨대 사용자에게 제공되는 피드백은 임의의 형태의 감각적 피드백, 예컨대 시각적 피드백, 청각적 피드백, 또는 촉각적 피드백일 수 있으며; 사용자로부터의 입력은 음향, 스피치(speech), 또는 촉각적 입력을 포함한 임의의 형태로 수신될 수 있다. 부가하여, 컴퓨터는 사용자에 의해 사용되는 디바이스에 문서들을 전송하고 디바이스로부터 문서들을 수신함으로써; 예컨대 사용자의 클라이언트 디바이스 상의 웹 브라우저로부터 수신된 요청들에 대한 응답으로 웹 브라우저에 웹 페이지들을 전송함으로써, 사용자와 상호작용할 수 있다.
[00082] 본 명세서에서 설명되는 청구 대상의 실시예들은, (예컨대, 데이터 서버로서) 백 엔드 컴포넌트(back end component)를 포함하거나, 또는 미들웨어 컴포넌트(예컨대, 애플리케이션 서버)를 포함하거나, 또는 프론트 엔드 컴포넌트(front end component)(예컨대, 사용자가 본 명세서에서 설명되는 발명의 청구 대상의 구현과 상호작용할 수 있게 하는 그래픽 사용자 인터페이스 또는 웹 브라우저를 갖는 클라이언트 컴퓨터)를 포함하거나, 또는 하나 이상의 그러한 백 엔드 컴포넌트, 미들웨어 컴포넌트, 또는 프론트 엔드 컴포넌트의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 컴포넌트들은 임의의 형태 또는 매체의 디지털 데이터 통신(예컨대, 통신 네트워크)에 의해 상호연결될 수 있다. 통신 네트워크들의 예들은, 로컬 영역 네트워크("LAN(local area network)") 및 광역 통신 네트워크("WAN(wide area network)"), 예컨대 인터넷을 포함한다.
[00083] 컴퓨팅 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로 떨어져 있으며, 통상적으로 통신 네트워크를 통해 상호작용한다. 클라이언트와 서버의 관계는, 개개의 컴퓨터들 상에서 실행되고 서로에 대해 클라이언트-서버 관계를 갖는 컴퓨터 프로그램들에 의해 발생한다.
[00084] 본 명세서가 많은 특정 구현 세부사항들을 포함하지만, 이들은 청구될 수 있는 것의 범위에 대한 제한들로서 해석되는 것이 아니라, 특정 실시예들에 특정될 수 있는 특징들에 대한 설명들로서 해석되어야 한다. 별개의 실시예들의 맥락에서 본 명세서에서 설명되는 소정의 특징들은 또한, 단일 실시예로 조합되어 구현될 수 있다. 반대로, 단일 실시예의 맥락에서 설명되는 다양한 특징들은 또한, 다수의 실시예들로 개별적으로 또는 임의의 적합한 하위조합으로 구현될 수 있다. 더욱이, 특징들이 소정의 조합들로 작용하는 것으로 위에서 설명되고 심지어 초기에 이와 같이 청구될 수 있지만, 일부 경우들에서, 청구되는 조합으로부터의 하나 이상의 특징들은 그 조합으로부터 제거될 수 있고, 청구되는 조합은 하위조합 또는 하위조합의 변형에 관련될 수 있다.
[00085] 유사하게, 동작들이 도면들에서 특정한 순서로 도시되지만, 이것은, 바람직한 결과들을 달성하기 위해, 그러한 동작들이 도시된 특정 순서로 또는 순차적 순서로 수행되도록 요구되거나 또는 모든 예시된 동작들이 수행되도록 요구되는 것으로 이해되지 않아야 한다. 소정의 상황들에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다. 더욱이, 위에서 설명된 실시예들의 다양한 시스템 컴포넌트들의 분리는, 모든 실시예들에서 그러한 분리를 요구하는 것으로서 이해되지 않아야 하며, 설명된 프로그램 컴포넌트들 및 시스템들이 일반적으로 단일 소프트웨어 제품으로 함께 통합될 수 있거나 또는 다수의 소프트웨어 제품들로 패키징될 수 있다는 것이 이해되어야 한다.
[00086] 청구 대상의 특정 실시예들이 설명되었다. 다른 실시예들은 다음의 청구항들의 범위 내에 있다. 예컨대, 청구항들에서 언급되는 동작들은 상이한 순서로 수행될 수 있으며, 여전히 바람직한 결과들을 달성할 수 있다. 일 예로서, 첨부 도면들에 도시된 프로세스들은 바람직한 결과들을 달성하기 위해 반드시 도시된 특정 순서 또는 순차적인 순서를 필요로 하는 것은 아니다. 소정의 구현들에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다. 설명된 프로세스들로부터 다른 단계들이 제공될 수 있거나, 또는 단계들이 제거될 수 있다. 따라서, 다른 구현들은 다음의 청구항들의 범위 내에 있다.

Claims (20)

  1. 복수의 채널들 중 각각에 채널에 대해, 복수의 채널들에 대한 리프 노드 멤버십(leaf node membership)을 표시하는 데이터를 포함하는 채널 멤버십 데이터를 제1 네트워크 노드에 의해 유지하는 단계; 및
    상기 복수의 채널들 중 각각의 채널에 대해,
    상기 채널 멤버십 데이터에 기반하여, 상기 채널에 액세스하는 것에 대해 가입된 리프 노드들을 결정하는 단계;
    상기 채널에 액세스하는 것에 대해 가입된 리프 노드들에 기반하여, (i) 허브 노드 식별자, (ii) 상기 채널에 액세스하는 것에 대해 가입된 각각의 리프 노드의 목적지 어드레스를 설명하는 데이터, 및 (iii) 페이로드를 포함하는, 상기 채널에 대한 수정된 멀티미디어 데이터 프레임(modified multimedia data frame)을 생성하는 단계; 및
    상기 제1 네트워크 노드에 의해, 상기 생성된 수정된 멀티미디어 데이터 프레임을 제2 네트워크 노드에 송신하는 단계를 포함하는,
    컴퓨터에서 구현되는 방법.
  2. 제1 항에 있어서,
    상기 복수의 채널들 각각에 대해,
    상기 채널 멤버십 데이터에 기반하여, 복수의 리프 노드들 중 하나 이상의 리프 노드들이 상기 채널에 액세스하는 것에 대해 가입되지 않았다는 결정에 대한 응답으로, 상기 채널에 대한 수정된 멀티미디어 데이터 프레임을 생성하지 않는 단계를 더 포함하는,
    컴퓨터에서 구현되는 방법.
  3. 제1 항 또는 제2 항에 있어서,
    상기 수정된 멀티미디어 데이터 프레임은, MAC 헤더 및 페이로드를 포함하는 유니캐스트 데이터 프레임(unicast data frame)을 포함하고,
    상기 MAC 헤더는 목적지 어드레스 필드를 포함하는,
    컴퓨터에서 구현되는 방법.
  4. 제3 항에 있어서,
    상기 수정된 멀티미디어 데이터 프레임을 생성하는 단계는,
    상기 채널에 액세스하는 것에 대해 가입된 각각의 리프 노드에 대한 목적지 어드레스를 목적지 어드레스들의 인코딩된 비트맵으로 인코딩하는 단계; 및
    상기 목적지 어드레스 필드를 상기 목적지 어드레스들의 인코딩된 비트맵으로 파퓰레이팅(populating)하는 단계를 포함하는,
    컴퓨터에서 구현되는 방법.
  5. 제4 항에 있어서,
    상기 제2 네트워크 노드에 의해, 상기 수정된 멀티미디어 데이터 프레임들 중 적어도 하나의 수정된 멀티미디어 데이터 프레임을 수신하는 단계;
    상기 목적지 어드레스들의 인코딩된 비트맵에 기반하여 상기 제2 네트워크 노드에 의해, 상기 적어도 하나의 수정된 멀티미디어 데이터 프레임의 목적지인 후속 네트워크 노드들의 개수를 식별하는 단계; 및
    상기 후속 네트워크 노드들의 개수가 하나의 네트워크 노드보다 더 많다는 결정에 대한 응답으로, (i) 상기 후속 네트워크 노드들 각각의 목적지 어드레스를 설명하는 데이터 및 (ii) 상기 페이로드의 카피를 포함하는 수정된 멀티미디어 데이터 프레임을 생성하는 단계를 더 포함하는,
    컴퓨터에서 구현되는 방법.
  6. 제4 항에 있어서,
    상기 제2 네트워크 노드에 의해, 상기 수정된 멀티미디어 데이터 프레임들 중 적어도 하나의 수정된 멀티미디어 데이터 프레임을 수신하는 단계;
    상기 목적지 어드레스들의 인코딩된 비트맵에 기반하여 상기 제2 네트워크 노드에 의해, 상기 적어도 하나의 수정된 멀티미디어 데이터 프레임의 목적지인 후속 네트워크 노드들의 개수를 식별하는 단계; 및
    상기 후속 네트워크 노드들의 개수가 하나의 네트워크 노드와 동일하다는 결정에 대한 응답으로, (i) 상기 하나의 후속 네트워크 노드의 목적지 어드레스를 설명하는 데이터 및 (ii) 상기 페이로드의 카피를 포함하는 유니캐스트 데이터 프레임을 생성하는 단계를 더 포함하는,
    컴퓨터에서 구현되는 방법.
  7. 하나 이상의 컴퓨터들, 및 상기 하나 이상의 컴퓨터들에 의해 실행될 때, 상기 하나 이상의 컴퓨터들로 하여금 동작들을 수행하게 하도록 동작가능한 명령들을 저장하는 하나 이상의 저장 디바이스들을 포함하며,
    상기 동작들은,
    복수의 채널들 중 각각에 채널에 대해, 복수의 채널들에 대한 리프 노드 멤버십을 표시하는 데이터를 포함하는 채널 멤버십 데이터를 제1 네트워크 노드에 의해 유지하는 동작; 및
    상기 복수의 채널들 중 각각의 채널에 대해,
    상기 채널 멤버십 데이터에 기반하여, 상기 채널에 액세스하는 것에 대해 가입된 리프 노드들을 결정하는 동작;
    상기 채널에 액세스하는 것에 대해 가입된 리프 노드들에 기반하여, (i) 허브 노드 식별자, (ii) 상기 채널에 액세스하는 것에 대해 가입된 각각의 리프 노드의 목적지 어드레스를 설명하는 데이터, 및 (iii) 페이로드를 포함하는, 상기 채널에 대한 수정된 멀티미디어 데이터 프레임을 생성하는 동작; 및
    상기 제1 네트워크 노드에 의해, 상기 생성된 수정된 멀티미디어 데이터 프레임을 제2 네트워크 노드에 송신하는 동작을 포함하는,
    시스템.
  8. 제7 항에 있어서,
    상기 동작들은,
    상기 복수의 채널들 각각에 대해,
    상기 채널 멤버십 데이터에 기반하여, 복수의 리프 노드들 중 하나 이상의 리프 노드들이 상기 채널에 액세스하는 것에 대해 가입되지 않았다는 결정에 대한 응답으로, 상기 채널에 대한 수정된 멀티미디어 데이터 프레임을 생성하지 않는 동작을 더 포함하는,
    시스템.
  9. 제7 항 또는 제8 항에 있어서,
    상기 수정된 멀티미디어 데이터 프레임은, MAC 헤더 및 페이로드를 포함하는 유니캐스트 데이터 프레임을 포함하는,
    시스템.
  10. 제9 항에 있어서,
    상기 MAC 헤더는 목적지 어드레스 필드를 포함하는,
    시스템.
  11. 제10 항에 있어서,
    상기 수정된 멀티미디어 데이터 프레임을 생성하는 동작은,
    상기 채널에 액세스하는 것에 대해 가입된 각각의 리프 노드에 대한 목적지 어드레스를 목적지 어드레스들의 인코딩된 비트맵으로 인코딩하는 동작; 및
    상기 목적지 어드레스 필드를 상기 목적지 어드레스들의 인코딩된 비트맵으로 파퓰레이팅하는 동작을 포함하는,
    시스템.
  12. 제11 항에 있어서,
    상기 동작들은,
    상기 제2 네트워크 노드에 의해, 상기 수정된 멀티미디어 데이터 프레임들 중 적어도 하나의 수정된 멀티미디어 데이터 프레임을 수신하는 동작;
    상기 목적지 어드레스들의 인코딩된 비트맵에 기반하여 상기 제2 네트워크 노드에 의해, 상기 적어도 하나의 수정된 멀티미디어 데이터 프레임의 목적지인 후속 네트워크 노드들의 개수를 식별하는 동작; 및
    상기 후속 네트워크 노드들의 개수가 하나의 네트워크 노드보다 더 많다는 결정에 대한 응답으로, (i) 상기 후속 네트워크 노드들 각각의 목적지 어드레스를 설명하는 데이터 및 (ii) 상기 페이로드의 카피를 포함하는 수정된 멀티미디어 데이터 프레임을 생성하는 동작을 더 포함하는,
    시스템.
  13. 제11 항에 있어서,
    상기 동작들은,
    상기 제2 네트워크 노드에 의해, 상기 수정된 멀티미디어 데이터 프레임들 중 적어도 하나의 수정된 멀티미디어 데이터 프레임을 수신하는 동작;
    상기 목적지 어드레스들의 인코딩된 비트맵에 기반하여 상기 제2 네트워크 노드에 의해, 상기 적어도 하나의 수정된 멀티미디어 데이터 프레임의 목적지인 후속 네트워크 노드들의 개수를 식별하는 동작; 및
    상기 후속 네트워크 노드들의 개수가 하나의 네트워크 노드와 동일하다는 결정에 대한 응답으로, (i) 상기 하나의 후속 네트워크 노드의 목적지 어드레스를 설명하는 데이터 및 (ii) 상기 페이로드의 카피를 포함하는 유니캐스트 데이터 프레임을 생성하는 동작을 더 포함하는,
    시스템.
  14. 데이터 프로세싱 장치에 의해 실행될 때, 상기 데이터 프로세싱 장치로 하여금 동작들을 수행하게 하는 명령들이 저장된 비-일시적 컴퓨터-판독가능 저장 디바이스로서,
    상기 동작들은,
    복수의 채널들 중 각각에 채널에 대해, 복수의 채널들에 대한 리프 노드 멤버십을 표시하는 데이터를 포함하는 채널 멤버십 데이터를 제1 네트워크 노드에 의해 유지하는 동작; 및
    상기 복수의 채널들 중 각각의 채널에 대해,
    상기 채널 멤버십 데이터에 기반하여, 상기 채널에 액세스하는 것에 대해 가입된 리프 노드들을 결정하는 동작;
    상기 채널에 액세스하는 것에 대해 가입된 리프 노드들에 기반하여, (i) 허브 노드 식별자, (ii) 상기 채널에 액세스하는 것에 대해 가입된 각각의 리프 노드의 목적지 어드레스를 설명하는 데이터, 및 (iii) 페이로드를 포함하는, 상기 채널에 대한 수정된 멀티미디어 데이터 프레임을 생성하는 동작; 및
    상기 제1 네트워크 노드에 의해, 상기 생성된 수정된 멀티미디어 데이터 프레임을 제2 네트워크 노드에 송신하는 동작을 포함하는,
    비-일시적 컴퓨터-판독가능 저장 디바이스.
  15. 제14 항에 있어서,
    상기 동작들은,
    상기 복수의 채널들 각각에 대해,
    상기 채널 멤버십 데이터에 기반하여, 복수의 리프 노드들 중 하나 이상의 리프 노드들이 상기 채널에 액세스하는 것에 대해 가입되지 않았다는 결정에 대한 응답으로, 상기 채널에 대한 수정된 멀티미디어 데이터 프레임을 생성하지 않는 동작을 더 포함하는,
    비-일시적 컴퓨터-판독가능 저장 디바이스.
  16. 제14 항 또는 제15 항에 있어서,
    상기 수정된 멀티미디어 데이터 프레임은, MAC 헤더 및 페이로드를 포함하는 유니캐스트 데이터 프레임을 포함하는,
    비-일시적 컴퓨터-판독가능 저장 디바이스.
  17. 제16 항에 있어서,
    상기 MAC 헤더는 목적지 어드레스 필드를 포함하는,
    비-일시적 컴퓨터-판독가능 저장 디바이스.
  18. 제17 항에 있어서,
    상기 수정된 멀티미디어 데이터 프레임을 생성하는 동작은,
    상기 채널에 액세스하는 것에 대해 가입된 각각의 리프 노드에 대한 목적지 어드레스를 목적지 어드레스들의 인코딩된 비트맵으로 인코딩하는 동작; 및
    상기 목적지 어드레스 필드를 상기 목적지 어드레스들의 인코딩된 비트맵으로 파퓰레이팅하는 동작을 포함하는,
    비-일시적 컴퓨터-판독가능 저장 디바이스.
  19. 제18 항에 있어서,
    상기 제2 네트워크 노드에 의해, 상기 수정된 멀티미디어 데이터 프레임들 중 적어도 하나의 수정된 멀티미디어 데이터 프레임을 수신하는 동작;
    상기 목적지 어드레스들의 인코딩된 비트맵에 기반하여 상기 제2 네트워크 노드에 의해, 상기 적어도 하나의 수정된 멀티미디어 데이터 프레임의 목적지인 후속 네트워크 노드들의 개수를 식별하는 동작; 및
    상기 후속 네트워크 노드들의 개수가 하나의 네트워크 노드보다 더 많다는 결정에 대한 응답으로, (i) 상기 후속 네트워크 노드들 각각의 목적지 어드레스를 설명하는 데이터 및 (ii) 상기 페이로드의 카피를 포함하는 수정된 멀티미디어 데이터 프레임을 생성하는 동작을 더 포함하는,
    비-일시적 컴퓨터-판독가능 저장 디바이스.
  20. 제18 항에 있어서,
    상기 제2 네트워크 노드에 의해, 상기 수정된 멀티미디어 데이터 프레임들 중 적어도 하나의 수정된 멀티미디어 데이터 프레임을 수신하는 동작;
    상기 목적지 어드레스들의 인코딩된 비트맵에 기반하여 상기 제2 네트워크 노드에 의해, 상기 적어도 하나의 수정된 멀티미디어 데이터 프레임의 목적지인 후속 네트워크 노드들의 개수를 식별하는 동작; 및
    상기 후속 네트워크 노드들의 개수가 하나의 네트워크 노드와 동일하다는 결정에 대한 응답으로, (i) 상기 하나의 후속 네트워크 노드의 목적지 어드레스를 설명하는 데이터 및 (ii) 상기 페이로드의 카피를 포함하는 유니캐스트 데이터 프레임을 생성하는 동작을 더 포함하는,
    비-일시적 컴퓨터-판독가능 저장 디바이스.
KR1020197022106A 2017-05-12 2018-05-09 향상된 멀티캐스트 네트워크 통신들 KR102226146B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/593,447 2017-05-12
US15/593,447 US10681417B2 (en) 2017-05-12 2017-05-12 Enhanced multicast network communications
PCT/US2018/031776 WO2018208900A1 (en) 2017-05-12 2018-05-09 Enhanced multicast network communications

Publications (2)

Publication Number Publication Date
KR20190091565A true KR20190091565A (ko) 2019-08-06
KR102226146B1 KR102226146B1 (ko) 2021-03-09

Family

ID=62236025

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197022106A KR102226146B1 (ko) 2017-05-12 2018-05-09 향상된 멀티캐스트 네트워크 통신들

Country Status (6)

Country Link
US (2) US10681417B2 (ko)
EP (1) EP3552349B1 (ko)
JP (1) JP6850893B2 (ko)
KR (1) KR102226146B1 (ko)
CN (1) CN110582989A (ko)
WO (1) WO2018208900A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7155893B2 (ja) * 2018-11-07 2022-10-19 日本電信電話株式会社 中継装置、中継方法及び中継プログラム
CN116743306A (zh) * 2022-03-01 2023-09-12 华为技术有限公司 数据传输方法、电力线通信装置和系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009064165A2 (en) * 2007-11-15 2009-05-22 Mimos Berhad A fast packet forwarding engine for scalable routing
US20120147885A1 (en) * 2010-12-08 2012-06-14 Pravin Kumar Johri Methods and apparatus for network multicasting using hierarchical replication
US8619662B2 (en) * 2004-11-05 2013-12-31 Ruckus Wireless, Inc. Unicast to multicast conversion

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE176744T1 (de) * 1992-11-27 1999-02-15 Ibm Mehrfachsende-leitweglenkung zwischen bereichen
US6873627B1 (en) * 1995-01-19 2005-03-29 The Fantastic Corporation System and method for sending packets over a computer network
US5608726A (en) * 1995-04-25 1997-03-04 Cabletron Systems, Inc. Network bridge with multicast forwarding table
JP3506092B2 (ja) * 2000-02-28 2004-03-15 日本電気株式会社 マルチキャストパケット転送装置、マルチキャストパケット転送システム及び記憶媒体
US6697363B1 (en) * 2000-06-28 2004-02-24 Alcatel Canada Inc. Method and apparatus for longest matching prefix determination in a communication network
KR100667318B1 (ko) * 2004-02-12 2007-01-12 삼성전자주식회사 지그비 네트워크에서 멀티캐스트 방법
US20060018335A1 (en) * 2004-07-26 2006-01-26 Koch Christopher D Multicast to unicast traffic conversion in a network
JP5148275B2 (ja) * 2004-08-12 2013-02-20 インターデイジタル テクノロジー コーポレーション 無線通信媒体へのアクセスを制御するための方法およびシステム
US20060187950A1 (en) 2005-02-18 2006-08-24 Alcatel Architecture and provisioning tools for managed multicast virtual private LAN trees
WO2006115487A1 (en) 2005-04-25 2006-11-02 Thomson Licensing Routing protocol for multicast in a meshed network
CN101491015A (zh) * 2006-07-27 2009-07-22 佛罗里达大学研究基金公司 用于ip查找和更新的动态树位图
US7710963B1 (en) * 2007-04-05 2010-05-04 Juniper Networks, Inc. Binary trees for multicast traffic
US8761069B2 (en) * 2008-04-18 2014-06-24 Marvell World Trade Ltd. Multicast to unicast conversion system
US9106972B2 (en) * 2010-12-30 2015-08-11 Google Technology Holdings LLC Social networking for bandwidth conservation in video on demand systems
US8923294B2 (en) * 2011-06-28 2014-12-30 Polytechnic Institute Of New York University Dynamically provisioning middleboxes
US9253021B2 (en) * 2012-02-28 2016-02-02 Cisco Technology, Inc. Hierarchical schema to provide an aggregated view of device capabilities in a network
US10904144B2 (en) * 2012-12-27 2021-01-26 Sitting Man, Llc Methods, systems, and computer program products for associating a name with a network path
US11177919B2 (en) * 2013-01-18 2021-11-16 Texas Instruments Incorporated Methods for energy-efficient unicast and multicast transmission in a wireless communication system
US10153967B2 (en) * 2014-11-06 2018-12-11 Juniper Networks, Inc. Deterministic and optimized bit index explicit replication (BIER) forwarding
US10033641B2 (en) * 2014-11-06 2018-07-24 Juniper Networks, Inc. Deterministic and optimized bit index explicit replication (BIER) forwarding
US9749410B2 (en) * 2014-11-18 2017-08-29 Cisco Technology, Inc. Using bit index explicit replication (BIER) in low-power and lossy networks
US9900169B2 (en) * 2015-03-18 2018-02-20 Cisco Technology, Inc. Reliable multicast in low-power and lossy networks
US10673742B2 (en) 2015-09-10 2020-06-02 Telefonaktiebolaget Lm Ericsson (Publ) Multicast state reduction via tunneling in a routed system
US10135734B1 (en) * 2015-12-28 2018-11-20 Amazon Technologies, Inc. Pipelined evaluations for algorithmic forwarding route lookup
US10135947B1 (en) * 2016-07-18 2018-11-20 Amazon Technologies, Inc. Wireless multicast transmission and recovery
US20180102965A1 (en) * 2016-10-07 2018-04-12 Alcatel-Lucent Usa Inc. Unicast branching based multicast
US10469379B2 (en) * 2017-02-17 2019-11-05 Cisco Technology, Inc. System and method to facilitate content delivery to multiple recipients in a network environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8619662B2 (en) * 2004-11-05 2013-12-31 Ruckus Wireless, Inc. Unicast to multicast conversion
WO2009064165A2 (en) * 2007-11-15 2009-05-22 Mimos Berhad A fast packet forwarding engine for scalable routing
US20120147885A1 (en) * 2010-12-08 2012-06-14 Pravin Kumar Johri Methods and apparatus for network multicasting using hierarchical replication

Also Published As

Publication number Publication date
US20180332351A1 (en) 2018-11-15
US20200267448A1 (en) 2020-08-20
WO2018208900A1 (en) 2018-11-15
EP3552349A1 (en) 2019-10-16
US10681417B2 (en) 2020-06-09
KR102226146B1 (ko) 2021-03-09
EP3552349B1 (en) 2024-05-01
CN110582989A (zh) 2019-12-17
JP6850893B2 (ja) 2021-03-31
JP2020509636A (ja) 2020-03-26

Similar Documents

Publication Publication Date Title
US8379641B2 (en) Light host management protocol on multicast capable router
US9325605B2 (en) On-demand boot strap router source announcements
US8903972B2 (en) Method and apparatus for sharing contents using information of group change in content oriented network environment
CN101729425B (zh) Vrrp组网中流量发送的方法及设备
JP6774957B2 (ja) マルチメディアブロードキャストマルチキャストサービスに基づくフレキシブルブロードキャストサービスのための方法及び装置
US20200267448A1 (en) Enhanced multicast network communications
CN109067578A (zh) 一种组播快速切换的方法和装置
US9385877B2 (en) Multicast systems, methods, and computer program products
US8325725B2 (en) Efficient host management protocol on multicast capable router
US10348788B2 (en) System and method for delivering content over a multicast network
US11019181B2 (en) Address translation
CN103428638A (zh) 申请频谱的方法、装置及系统
CN103051744A (zh) 组播地址的转换方法及装置
CN110618773B (zh) 菜单处理方法、装置、电子设备及可读存储介质
US20110145374A1 (en) Communication system for supporting communication between distributed modules in distributed communication network and communication method using the same
JP6633244B2 (ja) マルチキャストを使用するストリーミング帯域幅の最適化された利用
CN105577850A (zh) 一种实现voip业务穿越的方法、装置和系统
US20200128103A1 (en) Methods, network node and client device for acquisition and delivery of resources in a communications network
WO2024032599A1 (zh) 会话绑定方法及功能、存储介质及电子设备
CN115426323B (zh) 网络系统、组播流量传输方法及设备
KR20200114774A (ko) 다중 연결을 통한 데이터 전송 장치, 이를 이용한 데이터 전송 방법 및 컴퓨터 프로그램
WO2018064925A1 (zh) 一种会话描述协议消息生成方法和装置
CN117156197A (zh) 频道切换方法、系统、装置、通信设备和存储介质
CN116939504A (zh) 组播管理方法和装置
JP2008109715A (ja) パケット通信システムおよび移動通信システムおよび通信のアドレス方式

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