KR101278861B1 - Applicaton-level multicasting architecture - Google Patents

Applicaton-level multicasting architecture Download PDF

Info

Publication number
KR101278861B1
KR101278861B1 KR1020087008016A KR20087008016A KR101278861B1 KR 101278861 B1 KR101278861 B1 KR 101278861B1 KR 1020087008016 A KR1020087008016 A KR 1020087008016A KR 20087008016 A KR20087008016 A KR 20087008016A KR 101278861 B1 KR101278861 B1 KR 101278861B1
Authority
KR
South Korea
Prior art keywords
node
nodes
session
alm
module
Prior art date
Application number
KR1020087008016A
Other languages
Korean (ko)
Other versions
KR20080068808A (en
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 KR20080068808A publication Critical patent/KR20080068808A/en
Application granted granted Critical
Publication of KR101278861B1 publication Critical patent/KR101278861B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/16Multipoint routing
    • 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/1813Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for computer conferences, e.g. chat rooms
    • H04L12/1827Network arrangements for conference optimisation or adaptation
    • 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/1854Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with non-centralised forwarding system, e.g. chaincast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • 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/15Flow control; Congestion control in relation to multipoint traffic
    • 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/24Traffic characterised by specific attributes, e.g. priority or QoS

Abstract

다수의 노드가 노드들 간의 연결 상태에 관한 정보에 기초하여 라우팅되는 데이터 패킷과 실시간으로 상호작용할 수 있게 해주는 애플리케이션-레벨 멀티캐스팅 아키텍처가 제공된다. 각각의 노드는 동일한 대화형 세션에 있는 다른 노드들과 그들의 연결 상태를 공유한다. 데이터 패킷들이 전송 노드 상에서 이용가능한 다수의 패킷 전송 프로토콜을 사용하여 애플리케이션 레벨에서 라우팅될 수 있다. 데이터 패킷의 QoS(Quality of Service, 서비스 품질) 요건에 기초하여 특정의 전송 프로토콜이 선택될 수 있다. 대화형 세션에 있는 노드들은 연결 상태에 기초하여 생성되는 라우팅 맵(routing map)에 따라 데이터 패킷을 다른 노드들로 중계할 수 있다. 화상 회의, 멀티플레이어 게임, 원격 교육(distance learning), 가상 회의(virtual meeting) 및 음성 통신을 위한 애플리케이션 등의 임의의 다중-당사자 대화형 애플리케이션에 대해 애플리케이션-레벨 멀티캐스팅 아키텍처가 구현될 수 있다.An application-level multicasting architecture is provided that allows multiple nodes to interact in real time with data packets being routed based on information about connection status between nodes. Each node shares their connection state with other nodes in the same interactive session. Data packets can be routed at the application level using multiple packet transfer protocols available on the transmitting node. The particular transport protocol may be selected based on the quality of service (QoS) requirements of the data packet. Nodes in the interactive session can relay data packets to other nodes according to a routing map generated based on the connection state. An application-level multicasting architecture can be implemented for any multi-party interactive application, such as video conferencing, multiplayer games, distance learning, virtual meetings, and applications for voice communication.

멀티캐스팅, 연결 상태, QoS, 대화형 세션, 라우팅 맵 Multicasting, Connection Status, QoS, Interactive Sessions, Routing Maps

Description

다수의 노드들이 대화형 세션에 참여하는 시스템 및 그에 관련된 장치-판독 가능 매체{APPLICATON-LEVEL MULTICASTING ARCHITECTURE}System in which multiple nodes participate in an interactive session and its associated device-readable medium {APPLICATON-LEVEL MULTICASTING ARCHITECTURE}

인터넷 기술 및 광대역 네트워크의 발달에 따라, 시장에서 이용가능한 다중-당사자 대화형 애플리케이션의 수가 증가하고 있다. 다중-당사자 대화형 애플리케이션은 일반적으로 다수의 당사자가 실시간으로 상호작용할 수 있게 해준다. 이들 애플리케이션의 예들로는 화상 회의, 인터넷 게임, 원격 교육, 기타 등등이 있다. 이들 애플리케이션에서의 미디어 전송은 일대다 시맨틱스(one-to-many semantics)를 특징으로 한다.With the development of Internet technologies and broadband networks, the number of multi-party interactive applications available on the market is increasing. Multi-party interactive applications generally allow multiple parties to interact in real time. Examples of these applications are video conferencing, internet gaming, distance learning, and the like. Media transfers in these applications feature one-to-many semantics.

다중-당사자 대화형 애플리케이션은 애플리케이션들 간의 패킷들의 전송을 관리하기 위해 네트워크 계층에서의 통신 메카니즘을 이용한다. 일반적으로, 한가지 유형의 전송 프로토콜만이 사용된다. 예를 들어, 다중-당사자 대화형 애플리케이션은 TCP(Transmission Control Protocol, 전송 제어 프로토콜) 메카니즘을 사용하여 패킷들을 다른 애플리케이션들로 전송할 수 있다. TCP는 제어된 메시지 전달(controlled message delivery)을 위한 신뢰성있는 프로토콜이며 각각의 소스-목적지 쌍에 대해 개별적인 연결을 필요로 한다. 따라서, 전적으로 TCP 메카니즘만을 사용하는 것은 다수의 참여자를 관여시키는 대화형 세션에 방해가 될 수 있다.Multi-party interactive applications utilize a communication mechanism at the network layer to manage the transmission of packets between applications. In general, only one type of transport protocol is used. For example, a multi-party interactive application can send packets to other applications using the Transmission Control Protocol (TCP) mechanism. TCP is a reliable protocol for controlled message delivery and requires a separate connection for each source-destination pair. Thus, using only the TCP mechanism entirely can interfere with interactive sessions involving multiple participants.

UDP(user datagram protocol)의 사용이 다중-당사자 대화형 애플리케이션이 패킷들을 다른 애플리케이션들에 전송하는 더 빠른 방법일 수 있다. 그렇지만, UDP는 비연결형(connectionless)이며, 에러 복구 서비스를 거의 제공하지 않는다. 따라서, UDP는 신뢰도(reliability)가 중요한 요건인 경우에 바람직한 전송 메카니즘이 아니다.The use of user datagram protocol (UDP) may be a faster way for a multi-party interactive application to send packets to other applications. However, UDP is connectionless and provides little error recovery service. Thus, UDP is not a desirable transmission mechanism when reliability is an important requirement.

다중-당사자 대화형 애플리케이션은 또한 데이터 전송을 처리하는 데 IP 멀티캐스트를 이용할 수 있다. IP 멀티캐스트는 메시지가 일련의 목적지로 동시에 전송될 수 있는 방법이다. 불행히도, IP 멀티캐스트는 일반적으로 프로토콜을 이해하고 적절한 때에 패킷들을 복제할 수 있는 특수화된 라우터를 필요로 한다. 따라서, 비록 IP 멀티캐스트가 사설망에서는 효과적일 수 있지만, IP 멀티캐스트는 전혀 다른 네트워크에 있는 노드들이 인터넷을 통해 실시간으로 상호작용하는 데는 유용하지 않다.Multi-party interactive applications can also use IP multicast to handle data transmission. IP multicast is a way that messages can be sent simultaneously to a series of destinations. Unfortunately, IP multicast generally requires specialized routers that understand the protocol and can replicate packets in a timely manner. Thus, although IP multicast can be effective in private networks, IP multicast is not useful for real-time interaction of nodes on completely different networks over the Internet.

이하에서는 읽는 사람에게 기본적인 이해를 제공하기 위해 본 발명 내용의 간략화된 요약을 제공한다. 이 요약은 본 발명 내용의 전반적인 개요가 아니며, 본 발명의 주요/중요 구성요소를 확인하거나 본 발명의 범위를 정하지 않는다. 그의 유일한 목적은 나중에 제공되는 보다 상세한 설명에 대한 서론으로서 본 명세서에 기술된 몇몇 개념들을 간단화된 형태로 제공하는 데 있다.The following provides a simplified summary of the subject matter in order to provide a basic understanding for the reader. This summary is not an exhaustive overview of the subject matter, and does not identify or delineate the major / critical components of the present invention. Its sole purpose is to present some concepts described herein in a simplified form as a prelude to the more detailed description that is presented later.

본 발명의 실시예는 다수의 노드가 노드들 간의 연결 상태들에 관한 정보에 기초하여 라우팅되는 데이터 패킷들과 실시간으로 상호작용할 수 있게 해주는 애플리케이션-레벨 멀티캐스팅 아키텍처를 제공한다. 한 구현에서, 각각의 노드는 동일한 대화형 세션에 있는 다른 노드들과 그들의 연결 상태를 공유한다. 데이터 패킷들이 전송 노드 상에서 이용가능한 다수의 패킷 전송 프로토콜을 사용하여 애플리케이션 레벨에서 라우팅될 수 있다. 데이터 패킷의 QoS(Quality of Service, 서비스 품질) 요건에 기초하여 특정의 전송 프로토콜이 선택될 수 있다. 대화형 세션에 있는 노드들은 연결 상태에 기초하여 생성되는 라우팅 맵(routing map)에 따라 데이터 패킷을 다른 노드들로 중계할 수 있다. 화상 회의, 멀티플레이어 게임, 원격 교육(distance learning), 가상 회의(virtual meeting) 및 음성 통신을 위한 애플리케이션 등의 임의의 다중-당사자 대화형 애플리케이션에 대해 이 멀티캐스팅 아키텍처가 구현될 수 있다.Embodiments of the present invention provide an application-level multicasting architecture that allows multiple nodes to interact in real time with routed data packets based on information about connection states between nodes. In one implementation, each node shares their connection state with other nodes in the same interactive session. Data packets can be routed at the application level using multiple packet transfer protocols available on the transmitting node. The particular transport protocol may be selected based on the quality of service (QoS) requirements of the data packet. Nodes in the interactive session can relay data packets to other nodes according to a routing map generated based on the connection state. This multicasting architecture can be implemented for any multi-party interactive application, such as applications for video conferencing, multiplayer games, distance learning, virtual meetings, and voice communication.

부수적인 특징들 중 다수가 첨부 도면과 관련하여 고려되는 이하의 상세한 설명을 참조하면 더 잘 이해될 것이다.Many of the incidental features will be better understood with reference to the following detailed description considered in connection with the accompanying drawings.

도 1은 예시적인 애플리케이션-레벨 멀티캐스팅(ALM, application-level multicasting) 시스템(100)을 나타낸 도면.1 illustrates an example application-level multicasting (ALM) system 100.

도 2는 도 1에 도시된 ALM 모듈에 대한 예시적인 아키텍처를 나타낸 도면.FIG. 2 shows an exemplary architecture for the ALM module shown in FIG. 1.

도 3은 애플리케이션-레벨 멀티캐스팅 시스템에 대한 예시적인 라우팅 맵을 나타낸 도면.3 illustrates an example routing map for an application-level multicasting system.

도 4는 애플리케이션-레벨 멀티캐스팅 시스템에 대한 예시적인 프로토콜 계층화 모델을 나타낸 도면.4 illustrates an example protocol layering model for an application-level multicasting system.

도 5는 애플리케이션-레벨 멀티캐스팅 시스템에 대한 연결-레벨 프로토콜 데 이터 패킷에 대한 예시적인 헤더를 나타낸 도면.5 illustrates an example header for a connection-level protocol data packet for an application-level multicasting system.

도 6은 애플리케이션-레벨 멀티캐스팅 시스템에 대한 라우팅-레벨 프로토콜 데이터 패킷에 대한 예시적인 헤더를 나타낸 도면.6 illustrates an example header for a routing-level protocol data packet for an application-level multicasting system.

도 7은 애플리케이션-레벨 멀티캐스팅 시스템에 대한 라우팅-레벨 프로토콜 링크 상태 정보를 갖는 예시적인 데이터 패킷을 나타낸 도면.7 illustrates an example data packet with routing-level protocol link state information for an application-level multicasting system.

도 8은 애플리케이션-레벨 멀티캐스팅 시스템에 대한 대역폭 측정 정보를 갖는 예시적인 데이터 패킷을 나타낸 도면.8 illustrates an example data packet with bandwidth measurement information for an application-level multicasting system.

도 9는 애플리케이션-레벨 멀티캐스팅 시스템에 대한 대역폭 측정 보고를 갖는 예시적인 데이터 패킷을 나타낸 도면.9 illustrates an example data packet with bandwidth measurement reports for an application-level multicasting system.

도 10은 애플리케이션-레벨 멀티캐스팅 시스템에서 대화형 세션의 노드들과 통신하기 위한 예시적인 프로세스를 나타낸 도면.10 illustrates an example process for communicating with nodes of an interactive session in an application-level multicasting system.

도 11은 대화형 세션과 연관된 노드들과의 연결 상태를 모니터링하는 예시적인 프로세스를 나타낸 도면.FIG. 11 illustrates an example process for monitoring a connection state with nodes associated with an interactive session. FIG.

도 12는 대화형 세션과 연관된 데이터 패킷을 처리하는 예시적인 프로세스를 나타낸 도면.12 illustrates an example process for processing a data packet associated with an interactive session.

도 13은 기술된 시스템 및 방법을 구현하는 예시적인 컴퓨터 장치를 나타낸 도면.13 illustrates an example computer device that implements the described systems and methods.

본 설명은 첨부 도면을 바탕으로 이하의 상세한 설명을 읽어보면 더 잘 이해될 것이다.The description will be better understood upon reading the following detailed description based on the accompanying drawings.

첨부 도면에서 유사한 참조 번호는 유사한 부분을 나타내는 데 사용된다.Like reference numerals in the accompanying drawings are used to indicate like parts.

첨부 도면과 관련하여 이하에 제공되는 상세한 설명은 본 발명의 실시예들을 설명하기 위한 것이며, 본 발명의 실시예들이 구성 또는 이용될 수 있는 유일한 형태를 나타내기 위한 것이 아니다. 본 설명은 이들 실시예의 기능들 및 이들 실시예를 구성하고 동작시키는 단계들의 시퀀스를 기술하고 있다. 그렇지만, 동일한 또는 등가의 기능들 및 시퀀스들이 다른 실시예에 의해 달성될 수 있다.DETAILED DESCRIPTION The detailed description provided below with reference to the accompanying drawings is intended to describe embodiments of the present invention and is not intended to represent the only form in which embodiments of the present invention can be constructed or used. This description describes the functions of these embodiments and a sequence of steps for configuring and operating these embodiments. However, the same or equivalent functions and sequences may be achieved by other embodiments.

도 1은 예시적인 애플리케이션-레벨 멀티캐스팅(ALM) 시스템(100)을 나타낸 것이다. 멀티캐스팅은 공통의 메시지를 선택된 수신자 그룹으로 전달하는 프로세스이다. 네트워크 라우터가 패킷 전달 경로를 결정하고 필요한 경우 패킷을 복제해야 하는 IP 멀티캐스팅과는 달리, 애플리케이션-레벨 멀티캐스팅은 모든 기능들을 종단 시스템(end system)에 맡긴다. ALM은 네트워크 라우터로부터의 어떤 특별한 지원을 필요로 하지 않으며, 따라서 기존의 네트워크 기반구조 상부에 용이하게 채택될 수 있다. 도 1에 도시된 바와 같이, 시스템(100)은 장치(103-105)에 다중-당사자 대화형 애플리케이션(113-115)을 포함한다. 다중-당사자 대화형 애플리케이션은 대화형 세션의 멤버들이 네트워크(135)에서의 멀티캐스팅을 통해 서로 상호작용할 수 있게 해주도록 구성되어 있다. 이 예에서, 다중-당사자 대화형 애플리케이션(113-115)은 화상 회의, 멀티플레이어 게임, 원격 교육, 가상 회의, 음성 통신, 기타 등등의 실시간으로 상호작용할 수 있는 임의의 유형의 애플리케이션일 수 있다. 대화형 세션은 다중-당사자 대화형 애플리케이션(113-115)이 데이터를 교환할 수 있게 해주는 모든 세션을 포함한다. 예를 들어, 대화형 세션은 화상 회의, 음성 회의, 멀티미디어 회의, 온라인 게임, 또는 다수의 사용자를 관여시키는 임의의 이벤트일 수 있다. 서버(130) 내의 세션 제어기(131)는 다중-당사자 대화형 애플리케이션(113-115) 간에 통신 세션을 설정하도록 구성되어 있다.1 illustrates an example application-level multicasting (ALM) system 100. Multicasting is the process of delivering a common message to a selected group of recipients. Unlike IP multicasting, where a network router must determine the packet forwarding path and replicate packets if necessary, application-level multicasting leaves all functions to the end system. ALM does not require any special support from network routers and can therefore be easily adapted on top of existing network infrastructure. As shown in FIG. 1, system 100 includes a multi-party interactive application 113-115 in devices 103-105. The multi-party interactive application is configured to allow members of the interactive session to interact with each other via multicasting in the network 135. In this example, the multi-party interactive application 113-115 can be any type of application that can interact in real time, such as video conferencing, multiplayer games, distance learning, virtual conferencing, voice communication, and the like. The interactive session includes all sessions that allow the multi-party interactive applications 113-115 to exchange data. For example, an interactive session may be a video conference, voice conference, multimedia conference, online game, or any event involving multiple users. Session controller 131 in server 130 is configured to establish a communication session between multi-party interactive applications 113-115.

실제의 통신 프로세스를 위해, 다중-당사자 대화형 애플리케이션(113-115)은 장치(103-105) 내의 ALM 모듈(123-125)과 상호작용하도록 구성되어 있다. ALM 모듈(123-125)은 애플리케이션-레벨 네트워크 모니터링 및 데이터 패킷 라우팅으로 다중-당사자 대화형 애플리케이션(113-115) 간의 통신을 처리하도록 구성되어 있다. 상세하게는, ALM 모듈(123-125)은 이용가능한 전송 메카니즘을 결정하고 이용가능한 가장 적절한 메카니즘으로 데이터 패킷을 전송하도록 구성되어 있다. ALM 모듈(123-125)은 또한 장치(103-105) 간의 연결 상태들을 모니터링하고 가장 업데이트된 상태에 따라 데이터 패킷들을 라우팅하도록 구성되어 있다. 예시적인 ALM 모듈에 대해 도 2와 관련하여 이하에서 기술한다.For the actual communication process, the multi-party interactive application 113-115 is configured to interact with the ALM modules 123-125 in the device 103-105. The ALM modules 123-125 are configured to handle communication between the multi-party interactive applications 113-115 with application-level network monitoring and data packet routing. In particular, the ALM modules 123-125 are configured to determine the available transport mechanisms and to transmit data packets with the most appropriate mechanism available. The ALM modules 123-125 are also configured to monitor the connection states between the devices 103-105 and route data packets according to the most updated state. An example ALM module is described below with respect to FIG. 2.

예시적인 동작에서, 다중-당사자 대화형 애플리케이션(113)은 장치(104-105)에서의 다른 사용자들과 대화형 세션을 개시하라는 사용자로부터의 요청을 수신한다. 다중-당사자 대화형 애플리케이션(113)은 세션 제어기(131)와의 세션을 설정하고, 세션 제어기(131)는 개시하는 사용자를 세션에 가입(join)시키기 위해 이 세션에 관한 정보를 다른 멤버들에 대한 다중-당사자 대화형 애플리케이션(114-115)에 제공한다. 다중-당사자 대화형 애플리케이션(113-115)은 이어서 서로 간의 연결(즉, 링크)을 설정하기 위해 ALM 모듈(123-125)과 상호작용한다. ALM 모듈(123-125)은 이어서 지연시간, 연결성, 이용가능한 전송 프로토콜, 기타 등등의 서로에 대한 연결 상태를 결정하고 이 정보를 서로에게 전송한다. 이 정보에 기초하여, 각각의 ALM 모듈은 대화형 세션에 있는 나머지 장치들 각각으로 데이터 패킷을 전송하기 위한 경로를 계산한다.In an example operation, the multi-party interactive application 113 receives a request from a user to initiate an interactive session with other users at the devices 104-105. The multi-party interactive application 113 establishes a session with the session controller 131, and the session controller 131 sends information about this session to other members in order to join the initiating user to the session. To the multi-party interactive application 114-115. The multi-party interactive applications 113-115 then interact with the ALM modules 123-125 to establish a connection (ie, a link) between each other. The ALM modules 123-125 then determine the connection status to each other, such as latency, connectivity, available transport protocols, and so forth, and send this information to each other. Based on this information, each ALM module calculates a path for sending data packets to each of the remaining devices in the interactive session.

도 2는 도 1에 도시된 ALM 모듈(123)에 대한 예시적인 아키텍처를 나타낸 것이다. ALM 모듈(123)은 노드(예를 들어, 다중-당사자 대화형 애플리케이션을 실행시키는 장치)가 다수의 멤버들을 갖는 대화형 세션에 있는 다른 노드들과 통신할 수 있게 해준다. 상세하게는, 다중-당사자 대화형 애플리케이션은 직접적인 일대일 연결에만 의존하지 않고 데이터 패킷 라우팅을 능동적으로 관리하기 위해 ALM 모듈(123)에 의존할 수 있다. ALM 모듈(123)은 데이터 패킷 라우팅을 처리하기 위해 다수의 유형의 프로토콜 중에서 선택할 수 있다. 이들 프로토콜은 일반적으로 TCP(Transmission Control Protocol), UDP(User Datagram Protocol), 및 IP 멀티캐스트와 관련된 프로토콜을 포함한다. UDP는 미디어 스트림 전송에 적합한 경량 프로토콜(light-weight protocol)이다. TCP는 제어 메시지 전달에 적합한 신뢰성있는 프로토콜이다. 동일한 대화형 세션에 있는 종단 시스템들은 서로 간에 TCP 및 UDP 채널 둘다를 구축하도록 구성될 수 있다. 이 연결 시도는, 클라이언트가 로컬적으로 보는 사설 주소(private address), 서버에 의해 발견된 공인 주소(public address), 클라이언트가 UPnP(Universal Plug and Play) 지원 NAT(Network Address Translation)으로부터 검색하는 공인 주소, IP 멀티캐스트 주소, 기타 등등의 다양한 유형의 네트워크 주소로 전송될 수 있다.FIG. 2 shows an exemplary architecture for the ALM module 123 shown in FIG. 1. The ALM module 123 allows a node (eg, a device running a multi-party interactive application) to communicate with other nodes in an interactive session with multiple members. In particular, a multi-party interactive application may rely on the ALM module 123 to actively manage data packet routing instead of relying directly on one-to-one connections. The ALM module 123 may select from a number of types of protocols to handle data packet routing. These protocols generally include Transmission Control Protocol (TCP), User Datagram Protocol (UDP), and protocols related to IP multicast. UDP is a light-weight protocol suitable for media stream transmission. TCP is a reliable protocol suitable for control message delivery. End systems in the same interactive session may be configured to establish both TCP and UDP channels between each other. This connection attempt is made by a private address that the client sees locally, a public address found by the server, or a public address that the client retrieves from Universal Plug and Play (UPnP) -capable network address translation (NAT). It can be sent to various types of network addresses such as addresses, IP multicast addresses, and so on.

서로 다른 NAT 배후에 있는 종단 시스템들 간에 UDP 통신을 가능하게 해주기 위해, UDP 펀칭 프로토콜(punching protocol)이 정의되며, 이는 STUN(Simple Traversal of UDP through NAT)과 유사하다. 한 예시적인 구현에서, 각각의 노드는 대화형 세션에 있는 나머지 노드들의 각각의 이용가능한 네트워크 주소로 어떤 수의 UDP 패킷(예를 들어, 10개의 패킷)을 전송한다. 전송 노드가 이들 패킷 전부를 특정 노드에 전송한 후에 응답을 받을 수 없는 경우, 전송 노드는 그 특정의 노드가 UDP를 통해서는 도달될 수 없는 것으로 가정한다.In order to enable UDP communication between end systems behind different NATs, a UDP punching protocol is defined, similar to the Simple Traversal of UDP through NAT (STUN). In one example implementation, each node sends some number of UDP packets (eg, 10 packets) to each available network address of the remaining nodes in the interactive session. If a transmitting node cannot receive a response after sending all of these packets to a particular node, the transmitting node assumes that that particular node cannot be reached via UDP.

TCP 및 UDP 이외에, ALM 모듈(123)은 이용가능한 경우 IP 멀티캐스트를 이용한다. IP 멀티캐스트는 일대다 데이터 배포(one-to-many data distribution)에 효율적인 메카니즘이다. 그렇지만, IP 멀티캐스트는 일반적으로 본질적인 문제점으로 인해 전세계적으로 설치되어 있지는 않다. 일반적으로, IP 멀티캐스트는 대체로 사설망에서 산발적 배치(spotty deployment)를 갖는다. 이용가능할 때 IP 멀티캐스트를 이용하면 데이터 전달의 효율성을 크게 향상시킬 수 있다. 예시적인 구현에서, 각각의 대화형 세션은 IP 멀티캐스트 주소와 연관되어 있으며, 이 주소는 세션을 개시한 노드 또는 서버에 의해 랜덤하게 발생될 수 있다. 이 주소는 서버 상의 세션 제어기에 등록될 수 있고 나머지 노드들이 가입할 때 그들에게 배포될 수 있다. 이 대화형 세션에 가입하는 각각의 노드는 그 자신의 정보를 송출한다. 한 노드가 IP 멀티캐스트 채널을 통해 동일한 세션에 있는 멤버로부터 프로빙 패킷(probing packet)을 수신하는 경우, 그 노드는 TCP/UDP 프로빙을 중단하고 모든 차후의 통신을 위해 IP 멀티캐스트를 사용할 수 있다.In addition to TCP and UDP, ALM module 123 uses IP multicast when available. IP multicast is an efficient mechanism for one-to-many data distribution. However, IP multicast is generally not installed worldwide due to inherent problems. In general, IP multicast generally has spotty deployments in private networks. When available, IP multicast can significantly improve the efficiency of data delivery. In an example implementation, each interactive session is associated with an IP multicast address, which may be randomly generated by the node or server that initiated the session. This address can be registered with the session controller on the server and distributed to them when the remaining nodes join. Each node that joins this interactive session sends out its own information. If a node receives a probing packet from a member in the same session over an IP multicast channel, that node may stop TCP / UDP probing and use IP multicast for all subsequent communications.

도 2에 도시된 바와 같이, ALM 모듈(123)은 애플리케이션 레벨에 컴포넌트들 을 포함한다. 이 컴포넌트들은 세션 계층(session layer)(202), 멤버 계층(member layer)(203) 및 라우팅 계층(routing layer)(204)에 구현될 수 있다. ALM 모듈(123)은 또한 네트워크 레벨에 컴포넌트들을 포함할 수 있다. 이들 컴포넌트는 연결 계층(connection layer)(208) 및 전송 계층(transport layer)(209)에 포함될 수 있다.As shown in FIG. 2, the ALM module 123 includes components at the application level. These components may be implemented in a session layer 202, a member layer 203, and a routing layer 204. The ALM module 123 may also include components at the network level. These components may be included in a connection layer 208 and a transport layer 209.

ALM 모듈(123)은 사용자가 다수의 대화형 세션을 동시에 개시하고 그에 참여할 수 있게 해주도록 구성되어 있다. 예를 들어, ALM 모듈(123)은 사용자가 서로 다른 멤버 노드 세트와 다수의 회의 세션을 설정할 수 있게 해주는 다중-당사자 A/V 회의 애플리케이션을 지원하도록 구성될 수 있다. ALM 모듈(123)은 또한 사용자가 동시에 다수의 회의 세션에 참석할 수 있게 해줄 수 있다. 세션 계층(202)에서, 세션 객체(214, 215) 등의 세션 객체(session object)는 대화형 세션 및 각각의 세션에 대한 멤버 또는 참석자의 리스트를 유지하도록 구성되어 있다. 세션 객체(214, 215)는 세션 관리자(212)에 의해 관리된다.The ALM module 123 is configured to allow a user to initiate and participate in multiple interactive sessions simultaneously. For example, ALM module 123 may be configured to support a multi-party A / V conferencing application that allows a user to establish multiple conference sessions with different member node sets. The ALM module 123 may also allow a user to attend multiple conference sessions at the same time. In session layer 202, session objects, such as session objects 214 and 215, are configured to maintain an interactive session and a list of members or attendees for each session. Session objects 214 and 215 are managed by session manager 212.

ALM 모듈(123)이 서로 다른 계층에 있는 컴포넌트들을 포함하기 때문에, 연결 계층(208)에 있는 컴포넌트들은 멤버 노드가 어느 대화형 세션에 참여하고 있는지를 알지 못할 수 있다. 따라서, 노드가 2개 이상의 세션에 존재할 때조차도, ALM 모듈(123)은 단지 하나의 노드 연결 모듈 인스턴스를 생성할 수 있고, 유형별로 단지 하나의 연결을 유지할 수 있다.Because the ALM module 123 includes components at different layers, the components at the connection layer 208 may not know which interactive session the member node is participating in. Thus, even when a node is present in more than one session, the ALM module 123 can create only one node connection module instance and maintain only one connection per type.

멤버 계층(203)에서, 멤버 모듈(227-229) 각각은, 멤버 ID, 멤버가 참여하고 있는 대화형 세션, 기타 등등의, 멤버의 애플리케이션-레벨 속성들을 유지하도록 구성되어 있다. 일반적으로, 애플리케이션 레벨에서의 멤버 모듈(227-229)과 네트워크 레벨에서의 노드 연결 모듈(247-249) 간에 일대일 매핑이 있다. 멤버 모듈(227-229) 각각은 또한 대응하는 멤버로부터의 미디어 데이터를 관리하고 채널 코딩이 사용되는 경우 A/V 패킷을 조립하도록 구성되어 있다.In the member hierarchy 203, each of the member modules 227-229 is configured to maintain the member's application-level attributes, such as the member ID, the interactive session in which the member is participating, and so forth. In general, there is a one-to-one mapping between member modules 227-229 at the application level and node connection modules 247-249 at the network level. Each of the member modules 227-229 is also configured to manage media data from the corresponding member and to assemble A / V packets when channel coding is used.

로컬 멤버 모듈(225)은 동일 노드에 있는 다중-당사자 대화형 애플리케이션에 의해 발생되는 로컬 스트림(223)을 관리하도록 구성되어 있다. 예를 들어, 로컬 멤버 모듈(225)은 노드 내의 미디어 캡처 모듈로부터 데이터 스트림을 수신하고 멤버 모듈(227-229)에 의해 제공되는 정보를 사용하여 이 스트림을 대화형 세션에 있는 다른 노드들로 전송할 수 있다.The local member module 225 is configured to manage the local stream 223 generated by the multi-party interactive application on the same node. For example, local member module 225 receives a data stream from a media capture module within the node and sends this stream to other nodes in the interactive session using the information provided by member modules 227-229. Can be.

라우팅 계층(204)에 있는 컴포넌트들은 애플리케이션 레벨 상의 멀티캐스트-지원 라우터로서 기능한다. 일반적으로, ALM 모듈(123)에 대한 발신 및 착신 패킷은 라우팅 계층(204)을 통과한다. 라우팅 레벨(204)에 있는 컴포넌트들은 애플리케이션-정의된 패킷들을 대화형 세션에 있는 나머지 멤버들에게로 포워드한다. 패킷 내의 목적지 ID는 패킷을 포워드할 그 다음 홉(next-hop)을 선택하는 데 사용될 수 있다. 도 2에 도시된 바와 같이, 라우팅 계층(204) 내의 컴포넌트들은 네트워크 모니터(234), 라우팅 관리자(236), 및 소켓(238)을 포함할 수 있다.Components in the routing layer 204 function as multicast-supported routers at the application level. In general, outgoing and incoming packets for ALM module 123 pass through routing layer 204. Components at routing level 204 forward the application-defined packets to the remaining members in the interactive session. The destination ID in the packet can be used to select the next hop to forward the packet. As shown in FIG. 2, the components in the routing layer 204 can include a network monitor 234, a routing manager 236, and a socket 238.

라우팅 관리자(236)는 ALM 모듈(123)을 위해 데이터 패킷 라우팅을 처리하도록 구성되어 있다. ALM(123)에 의해 처리되는 데이터 패킷은 다수의 목적지를 가질 수 있다. 예를 들어, 로컬 노드가 유일한 목적지가 아니거나 심지어 그 노드가 수신한 패킷의 목적지도 아닐 수 있다. 따라서, 임의의 착신 패킷에 대해, 라우팅 관리자(236)는 로컬 노드가 목적지들 중 하나인지를 검사하도록 구성되어 있다. 그러한 경우, 라우팅 관리자(236)는 그 패킷을 상위 계층으로 포워드한다. 라우팅 관리자(236)는 또한 이 패킷이 다른 노드들로 중계되어야 하는지를 검사하도록 구성되어 있다. 라우팅 정보는 라우팅 관리자(236)에 의해 유지되는 로컬 라우팅 테이블에서 발견될 수 있거나 패킷에 의해 전달될 수 있다.The routing manager 236 is configured to handle data packet routing for the ALM module 123. The data packet processed by the ALM 123 may have multiple destinations. For example, the local node may not be the only destination or even the destination of packets received by that node. Thus, for any incoming packet, routing manager 236 is configured to check whether the local node is one of the destinations. In such case, routing manager 236 forwards the packet to the higher layer. The routing manager 236 is also configured to check if this packet should be relayed to other nodes. Routing information may be found in a local routing table maintained by routing manager 236 or may be carried by packet.

ALM 모듈(123)은 애플리케이션-레벨 연결 상태 라우팅으로 구성되어 있다. 각각의 노드는 주기적으로 그의 이웃들의 네트워크 상태를 측정하고 이 정보를 동일한 대화형 세션에 있는 모든 다른 노드들로 전파한다. 네트워크 모니터(234)는 네트워크 정보를 프로빙하고 전파하도록 구성되어 있다. 네트워크 모니터(234)는 또한 동일한 대화형 세션에 있는 노드들의 맵을 유지하도록 구성되어 있다. 연결 상태 메시지가 도착할 때마다, 네트워크 모니터(234)는 이 정보를 사용하여 맵을 업데이트한다.The ALM module 123 consists of application-level connection state routing. Each node periodically measures the network status of its neighbors and propagates this information to all other nodes in the same interactive session. Network monitor 234 is configured to probe and propagate network information. Network monitor 234 is also configured to maintain a map of nodes in the same interactive session. Each time a connection status message arrives, network monitor 234 uses this information to update the map.

연결 상태가 변할 때, 라우팅 관리자(236)는 Dijkstra의 SPF 알고리즘, 확장된 BPF(extended broadest path first) 알고리즘, 기타 등등의 임의의 방법에 의해 각각의 활성 스트림(active stream)에 대한 경로를 재계산하도록 구성되어 있다. 라우팅 관리자(236)는 또한 활성 스트림과 연관된 노드의 가입 상태가 변하는 경우 활성 스트림에 대한 경로를 재계산할 수 있다. 라우팅 정보는 라우팅 테이블에 저장된다. 패킷별 IP 라우팅과 달리, ALM(123)은 소스-관련 스트림별 라우팅(source-specific per-stream routing)으로 구성된다. 데이터 전달 경로가 소스에서 계산되어 모든 중계 노드로 포워드된다. 따라서, 라우팅 관리자(236)는 로컬 스트림 뿐만 아니라 그가 중계해야 하는 스트림에 대한 라우팅 테이블을 유지한다.When the connection state changes, the routing manager 236 recalculates the path for each active stream by any method such as Dijkstra's SPF algorithm, extended broadest path first (BPF) algorithm, and so forth. It is configured to. The routing manager 236 can also recalculate the path to the active stream when the subscription status of the node associated with the active stream changes. Routing information is stored in the routing table. Unlike packet-specific IP routing, ALM 123 consists of source-specific per-stream routing. Data propagation paths are computed at the source and forwarded to all relay nodes. Thus, routing manager 236 maintains a routing table for the local stream as well as the stream to which it should relay.

네트워크 레벨의 연결 계층(208)에서, 노드 연결(247-249) 각각은 특정의 노드로의 TCP, UDP, 및 IP 멀티캐스트 등의 이용가능한 연결을 유지하도록 구성되어 있다. 노드 연결(247-249)은 대화형 세션과 연관되어 있는 각각의 노드와의 통신을 위한 추상적인 네트워크 채널을 제공한다. 이용가능한 연결의 유형은 일반적으로 라우팅 계층(204) 이상에 투명하다. 로컬 스트림(223) 또는 네트워크 모니터(234)에 의해 발생되는 발신 패킷은 그 다음 홉 정보를 얻기 위해 일반적으로 라우팅 테이블을 조사한다. 이어서, 패킷들은 대응하는 노드 연결 모듈(247-249)로 전달된다. 노드 연결 모듈(247-249)은 지정된 QoS(Quality of Service) 요건에 따라 패킷을 전송하기에 가장 적절한 연결을 자동적으로 선택한다.At the network layer connection layer 208, each node connection 247-249 is configured to maintain an available connection, such as TCP, UDP, and IP multicast to a particular node. Node connections 247-249 provide an abstract network channel for communication with each node associated with the interactive session. The type of connection available is generally transparent beyond the routing layer 204. Outgoing packets generated by local stream 223 or network monitor 234 typically look through the routing table to obtain next hop information. The packets are then forwarded to the corresponding node connection module 247-249. The node connection module 247-249 automatically selects the most appropriate connection for sending packets according to the specified quality of service requirements.

노드 연결 모듈(247-249)은, 모듈 인스턴스를 추가, 삭제, 및 갱신하도록 구성되어 있는 노드 연결 관리자(244)에 의해 관리된다. 한 구현에서, 착신 패킷은 일반적으로 곧바로 노드 연결 모듈(247-249)로 가지 않는다. 그 대신에, 착신 패킷은, 각각의 TCP 소켓에 대한 수신 버퍼를 유지하도록 구성되어 있는 노드 연결 관리자(244)로 전달될 수 있는데, 그 이유는 TCP 소켓이 기반 네트워크(underlying network)에 의해 결합 또는 분할될 수 있기 때문이다. 노드 연결 관리자(244)는 착신 비트스트림을 유지하도록 구성될 수 있으며 완전한 패킷이 수신될 때까지 이들 스트림을 노드 연결 모듈(247-249)로 전달하지 않는다. UDP 패킷의 경우, 노드 연결 관리자(244)는 패킷을 올바른 노드 연결 모듈로 전달하기 이전에 패킷을 언패킹하고 소스 ID를 검색하도록 구성될 수 있다.Node connection modules 247-249 are managed by node connection manager 244 that is configured to add, delete, and update module instances. In one implementation, incoming packets generally do not go directly to node connection module 247-249. Instead, incoming packets can be forwarded to node connection manager 244, which is configured to maintain a receive buffer for each TCP socket, because TCP sockets are joined or joined by an underlying network. Because it can be divided. Node connection manager 244 may be configured to maintain an incoming bitstream and do not forward these streams to node connection module 247-249 until a complete packet is received. For UDP packets, node connection manager 244 may be configured to unpack the packet and retrieve the source ID before delivering the packet to the correct node connection module.

전송 계층(209)에서, ALM 모듈(123)은 노드에서 이용가능한 전송 메카니즘을 이용하도록 구성되어 있다. 이 예에서, 노드에서의 전송 메카니즘은 TCP(253), UDP(254), 및 IP 멀티캐스트(255)를 포함한다.At the transport layer 209, the ALM module 123 is configured to use the transport mechanism available at the node. In this example, the transport mechanism at the node includes TCP 253, UDP 254, and IP multicast 255.

ALM 모듈(123)은, 도 1의 다중-당사자 대화형 애플리케이션(113) 등의 애플리케이션이 ALM 모듈(123)과 상호작용할 수 있게 해주는 애플리케이션 프로그램 인터페이스(API)를 노출시킬 수 있다. 이하에 ALM 모듈(123)의 소켓(238)에 의해 노출될 수 있는 예시적인 API들이 있다.The ALM module 123 may expose an application program interface (API) that allows applications such as the multi-party interactive application 113 of FIG. 1 to interact with the ALM module 123. Below are example APIs that may be exposed by the socket 238 of the ALM module 123.

InitSocket() 애플리케이션 레벨 소켓을 초기화한다.InitSocket () Initializes an application level socket.

CloseSocket() 애플리케이션 레벨 소켓을 닫는다.CloseSocket () Closes an application level socket.

AddMember(MemberID id, ADDRESS address) 대화형 세션에 있는 새로운 멤버 노드를 라우팅 계층 및 연결 계층에 알려주기 위해 이 인터페이스를 호출한다. 이 인터페이스를 호출하지 않고, 라우팅 계층은 어떤 데이터도 전송하지 않을 수 있고 이 멤버로부터 어떤 데이터도 받지 않을 수 있다.AddMember (MemberID id, ADDRESS address) Call this interface to inform the routing and connection layers of new member nodes in the interactive session. Without calling this interface, the routing layer may not send any data or receive any data from this member.

UpdateMember(MemberID id, ADDRESS address) 멤버 노드의 주소 정보를 갱신하기 위해 이 인터페이스를 호출한다.UpdateMember (MemberID id, ADDRESS address) Call this interface to update address information of member node.

CloseMember(MemberID, id) 멤버 노드의 탈퇴(leave)를 라우팅 계층 및 연결 계층에 알려주기 위해 이 인터페이스를 호출한다. 이 메서드가 처리된 후에, 로컬 사이트는 데이터를 멤버에게 더 이상 전송하지 않을 수 있다.CloseMember (MemberID, id) Call this interface to inform the routing and connection layers of the member node's leave. After this method is processed, the local site may no longer send data to its members.

CreateStream(StreamType type, StreamInfo info) 오디오 및 비디오 등의 새로운 스트림을 등록하기 위해 이 인터페이스를 호출한다. StreamInfo는 스트림 의 비트 레이트를 포함한다.CreateStream (StreamType type, StreamInfo info) Call this interface to register a new stream, such as audio or video. StreamInfo contains the bit rate of the stream.

UpdateStream(StreamID id, StreamInfo info) 특정의 스트림의 StreamInfo를 갱신하기 위해 이 인터페이스를 호출한다. UpdateStream (StreamID id, StreamInfo info) Call this interface to update the StreamInfo of a particular stream.

DeleteStream(StreamID id) 기존의 스트림을 등록 해제(unregister)시키기 위해 이 인터페이스를 호출한다. 대응하는 라우팅 정보가 라우팅 테이블로부터 삭제될 수 있다.DeleteStream (StreamID id) Call this interface to unregister an existing stream. The corresponding routing information may be deleted from the routing table.

AddSourceMembership(MemberID id, StreamType type) 사용자가 특정의 멤버 노드의 특정의 스트림에 가입하고자 하는 경우 이 인터페이스를 호출한다.AddSourceMembership (MemberID id, StreamType type) Call this interface when a user wants to subscribe to a particular stream of a particular member node.

DropSourceMembership(MemberID id, StreamType type) 사용자가 특정의 멤버 노드의 특정의 스트림에의 가입을 해지(unsubscribe)하기 위해 이 인터페이스를 호출한다.DropSourceMembership (MemberID id, StreamType type) Call this interface to unsubscribe a user from a particular member node to a particular stream.

AddReceiver(StreamType type, MemberID id) 로컬 사이트가 멤버 id로부터 가입 메시지를 수신하는 경우, 이 인터페이스를 호출한다.AddReceiver (StreamType type, MemberID id) Call this interface when the local site receives a subscription message from the member id.

RemoveReceiver(StreamType type, MemberID id) 로컬 사이트가 멤버 id로부터 가입 해지 메시지(unsubscription message)를 수신하는 경우 이 인터페이스를 호출한다.RemoveReceiver (StreamType type, MemberID id) Call this interface when the local site receives an unsubscription message from the member id.

UpdateReceivers(StreamType type, MemberIDSet idSet) 특정의 스트림의 수신자 세트를 갱신하기 위해 이 인터페이스를 호출한다.UpdateReceivers (StreamType type, MemberIDSet idSet) Call this interface to update the receiver set of a particular stream.

Send(StreamlD id, LPVOID data, UINT length) 특정의 스트림의 데이터를 전송하기 위해 이 인터페이스를 호출한다. 애플리케이션 계층이 수신자 세트를 지 정할 필요가 없을 수 있는데, 그 이유는 ALM(123)이 스트림별 라우팅 프로토콜(per-stream routing protocol)로서 구현될 수 있기 때문이다. 각각의 스트림의 수신자 세트는 라우팅 계층에 의해 유지된다.Send (StreamlD id, LPVOID data, UINT length) Call this interface to send data for a specific stream. The application layer may not need to specify a receiver set because the ALM 123 can be implemented as a per-stream routing protocol. The receiver set of each stream is maintained by the routing layer.

BroadcastMessage(Message msg) ALM 그룹 내의 멤버들이 로컬 스트림들 중 임의의 스트림에 가입해 있는지에 상관없이 이들 모두에게로 제어 메시지를 브로드캐스트한다.BroadcastMessage (Message msg) Broadcasts a control message to all of the members in an ALM group whether or not they subscribe to any of the local streams.

SetOnReceiveCallback() 다른 회의 구성원(conference member)으로부터 오디오 및 비디오 등의 애플리케이션 레벨 데이터를 수신하도록 콜백 함수(callback function)를 설정하기 위해 이 인터페이스를 호출한다.SetOnReceiveCallback () Calls this interface to set a callback function to receive application level data, such as audio and video, from other conference members.

이하는 라우팅 관리자(236)에 의해 노출될 수 있는 예시적인 API이다.The following is an example API that may be exposed by the routing manager 236.

GetRoutingTopo(MemberID id, StreamType t, CTopology &tp) 이 인터페이스는 개발자/사용자가 애플리케이션 레벨 전송 경로를 시각화할 수 있게 해준다. 토폴로지가 메모리 블록에 저장되고 라우팅-레벨 프로토콜에 정의된 것과 동일한 형식(format)으로 구현될 수 있다.GetRoutingTopo (MemberID id, StreamType t, CTopology & tp) This interface allows developers / users to visualize application level transfer paths. The topology may be stored in a block of memory and implemented in the same format as defined in the routing-level protocol.

이하는 네트워크 모니터(234)에 의해 노출될 수 있는 예시적인 API이다. The following is an example API that may be exposed by the network monitor 234.

SetBWMeasurementData(LPVOID data[], UINT unitLen, UINT packets) 이 인터페이스는 개발자가 대역폭 측정을 위해 사용되는 데이터를 설정할 수 있게 해준다. 데이터가 애플리케이션 레벨에서 세그먼트화(segment)되고 (개발자가 채널 코딩을 하고자 하는 경우) 코딩(code)된다.SetBWMeasurementData (LPVOID data [], UINT unitLen, UINT packets) This interface allows the developer to set the data used for bandwidth measurements. Data is segmented at the application level and coded (if the developer wishes to do channel coding).

SetBWDataProcessCallback() 개발자가 대역폭 측정 데이터를 이용하고자 하 는 경우, 개발자는 이 인터페이스를 호출하여 콜백 함수를 설정할 수 있다.SetBWDataProcessCallback () If the developer wants to use the bandwidth measurement data, the developer can set this callback function by calling this interface.

도 3은 애플리케이션-레벨 멀티캐스트 시스템에 대한 예시적인 라우팅 맵(300)을 나타낸 것이다. 이 예시적인 라우팅 맵(300)은 애플리케이션-레벨 멀티캐스팅 시스템에 의해 처리되는 대화형 세션에 참여하고 있는 6개의 노드를 포함한다. 일반적으로, 노드(103)는 네트워크 모니터에 의해 수집된 노드들 간의 연결 상태 등의 네트워크 정보에 기초하여 맵(300)을 구축한다. 예시적인 라우팅 맵(300)은 노드(103)에 의해 발생되는 또는 자식 노드(104-108)에 관련시키기 위해 노드(103)로 전송되는 스트림에 대한 데이터 패킷 라우팅을 나타낸 것이다. 도 3에 도시된 바와 같이, 노드(103)는 연결(312, 313)을 통해 각각 노드(104, 105)로 데이터 패킷을 직접 전송하도록 구성되어 있다. 연결(312, 313)은 임의의 유형의 프로토콜로 구현될 수 있다. 예를 들어, 연결(312, 313)은 QoS 요건에 따라 TCP, UDP 또는 IP 멀티캐스트를 이용할 수 있다. 데이터 패킷 라우팅은 다양한 방법으로 구현될 수 있다. 예를 들어, 라우팅 맵(300) 또는 라우팅 테이블 등의 라우팅 정보는 노드(105) 등의 중계 노드(relay node)로 전달될 수 있다. 소스 및 목적지 식별자 등을 비롯한 라우팅 정보는 또한 데이터 패킷에 포함되어 있을 수 있다.3 shows an example routing map 300 for an application-level multicast system. This example routing map 300 includes six nodes participating in an interactive session handled by an application-level multicasting system. In general, node 103 builds map 300 based on network information, such as connection status between nodes collected by the network monitor. Exemplary routing map 300 illustrates data packet routing for a stream generated by node 103 or sent to node 103 to relate to child nodes 104-108. As shown in FIG. 3, node 103 is configured to send data packets directly to nodes 104 and 105 via connections 312 and 313, respectively. Connections 312 and 313 may be implemented in any type of protocol. For example, connections 312 and 313 may use TCP, UDP or IP multicast depending on QoS requirements. Data packet routing can be implemented in a variety of ways. For example, routing information such as the routing map 300 or the routing table may be transferred to a relay node such as the node 105. Routing information, including source and destination identifiers and the like, may also be included in the data packet.

예시적인 라우팅 맵(300)에서, 노드(103)는 데이터 패킷을 연결(314-316)에 의해 노드(106-108)로 포워드하기 위해 노드(105)에 의존한다. 예를 들어, 노드(105-108)는 IP 멀티캐스트가 이용가능한 사설망의 일부일 수 있다. 따라서, 노드(105)는 IP 멀티캐스트 프로토콜을 구현하는 연결(314-316)에 의해 데이터 패킷을 전송하도록 구성될 수 있다.In the exemplary routing map 300, node 103 relies on node 105 to forward data packets to nodes 106-108 by connection 314-316. For example, nodes 105-108 may be part of a private network for which IP multicast is available. Thus, node 105 may be configured to transmit data packets by connection 314-316 implementing the IP multicast protocol.

도 4는 애플리케이션-레벨 멀티캐스팅 시스템에 대한 예시적인 프로토콜 계층화 모델(protocol layering model)(400)을 나타낸 것이다. 예시적인 계층화 모델(400)은 애플리케이션-레벨 멀티캐스팅 시스템이 연결 계층, 라우팅 계층, 및 애플리케이션 계층에서의 프로토콜을 정의할 수 있게 해준다. 예를 들어, 애플리케이션-레벨 헤더(402) 및 데이터(412)를 갖는 애플리케이션-레벨 메시지는 데이터(413)를 갖는 라우팅 레벨 데이터그램에 캡슐화될 수 있다. 라우팅 레벨 헤더(403) 및 데이터(413)를 포함하는 라우팅-레벨 메시지는 데이터(414)를 갖는 연결-레벨 데이터그램에 캡슐화될 수 있다. 헤더(404)를 갖는 연결-레벨 메시지는 이어서 전송 계층 프로토콜을 사용하여 헤더(405-406) 및 데이터(415-416)를 갖는 메시지로 전송된다.4 illustrates an example protocol layering model 400 for an application-level multicasting system. Exemplary layering model 400 allows an application-level multicasting system to define protocols at the connection layer, routing layer, and application layer. For example, an application-level message with an application-level header 402 and data 412 may be encapsulated in a routing level datagram with data 413. Routing-level messages, including routing level header 403 and data 413, may be encapsulated in a connection-level datagram with data 414. The connection-level message with the header 404 is then sent in a message with the headers 405-406 and data 415-416 using the transport layer protocol.

도 5는 애플리케이션-레벨 멀티캐스팅 시스템에 대한 연결-레벨 프로토콜 데이터 패킷의 예시적인 헤더(500)를 나타낸 것이다. 일반적으로, 연결 계층은 애플리케이션-레벨 멀티캐스팅 시스템이 제어하는 최하위 계층이다. 연결 계층에서의 메시지는 일반적으로 도 2의 노드 연결 모듈(247-249) 등의 대화형 세션에 있는 노드에 대응하는 노드 연결 관리자 또는 노드 연결 모듈에 의해 처리된다.5 shows an exemplary header 500 of a connection-level protocol data packet for an application-level multicasting system. In general, the connection layer is the lowest layer controlled by the application-level multicasting system. Messages at the connection layer are generally handled by the node connection manager or node connection module corresponding to the node in the interactive session, such as node connection modules 247-249 of FIG.

도 5에 도시된 바와 같이, 예시적인 연결-레벨 데이터 패킷 헤더(500)는 매직 워드(magic word) 필드, 버전 필드, 신뢰도(reliability) 필드, 메시지 ID 필드, 메시지 길이 필드, 송신자 ID 필드, 및 ACK 순서 필드를 포함할 수 있다. 매직 워드 필드는 애플리케이션-레벨 멀티캐스팅 시스템을 식별해준다. 버전 필드는 애플리케이션-레벨 멀티캐스팅 시스템의 버전을 보여준다. 신뢰도 필드는 현재의 패킷이 신뢰성있는 전송 채널을 통해 전송되도록 되어 있는지를 나타낸다. 이 패킷이 신뢰성있는 전송을 필요로 하고 UDP 채널로부터 수신되는 경우, 이 메시지를 수신할 시에 ACK가 전송될 필요가 있다. ACK 순서 필드는 ACK-필요 패킷(need-ACK packet)의 수신의 확인 응답을 위해 사용되는 패킷의 순서 번호를 포함한다.As shown in FIG. 5, an example connection-level data packet header 500 includes a magic word field, a version field, a reliability field, a message ID field, a message length field, a sender ID field, and It may include an ACK order field. The magic word field identifies the application-level multicasting system. The version field shows the version of the application-level multicasting system. The reliability field indicates whether the current packet is to be transmitted through a reliable transport channel. If this packet requires reliable transmission and is received from a UDP channel, an ACK needs to be sent upon receiving this message. The ACK Order field contains the sequence number of the packet used for acknowledgment of receipt of the ACK-needed packet.

메시지 ID 필드는 메시지 유형 정보를 포함한다. 일례에서, 메시지 유형은 다음과 같이 정의될 수 있다.The message ID field contains message type information. In one example, the message type may be defined as follows.

enum CLP_MESSAGE_TYPEenum CLP_MESSAGE_TYPE

{{

CLP_HEL = 0x0001 , // HelloCLP_HEL = 0x0001, // Hello

CLP_PRB = 0x0002, // RTT를 측정하는 데 사용되는 프로브 메시지CLP_PRB = 0x0002, // Probe message used to measure RTT

CLP_APR = 0x0004, // 프로브 메시지에 대한 대답CLP_APR = 0x0004, // Answer to Probe Message

CLP_ACK = 0x0008, // ack_필요 패킷에 대한 확인 응답CLP_ACK = 0x0008, // acknowledgment for ack_required packet

CLP_OTH = 0x0010, // 기타CLP_OTH = 0x0010, // other

} }

메시지 길이 필드는 연결 계층 헤더(500)를 포함하는 패킷의 길이를 보여준다. 송신자 ID 필드는, 패킷 소스와 다른 ID일 수 있는 패킷 송신자의 멤버 ID를 포함한다.The message length field shows the length of a packet including the connection layer header 500. The sender ID field contains a member ID of a packet sender, which may be an ID different from the packet source.

한 예시적인 구현에서, 매직 워드 필드는 6-비트이고, 버전 필드는 2 비트이며, 신뢰도 필드는 1 비트이고, ACK 순서 필드는 8 비트이며, 메시지 ID 필드는 16 비트이고, 메시지 길이 필드는 16 비트이며, 송신자 ID 필드는 128 비트이다.In one example implementation, the Magic Word field is 6 bits, the Version field is 2 bits, the Reliability field is 1 bit, the ACK Order field is 8 bits, the Message ID field is 16 bits, and the Message Length field is 16 bits. Bit, and the sender ID field is 128 bits.

상기한 바와 같이, 메시지 유형은 Hello 메시지(CLP_HEL), 프로브 메시지(CLP_PRB), 대답 프로브 메시지(answer probe message)(CLP_APR) 및 확인 응답 메시지(CLP_ACK)를 포함할 수 있다. Hello 메시지는 연결을 설정하는 데 주로 사용된다. 노드가 TCP 연결 요청을 수락할 때, 그 노드가 이 연결로부터 수신하는 첫번째 메시지는 일반적으로 Hello 메시지이다. 그렇지 않은 경우, 호스트 노드는 이 연결을 닫을 수 있다. 호스트 노드는 또한 UDP 및 IP 멀티캐스트 채널을 통해 대화형 세션에 있는 다른 노드를 ping하기 위해 Hello 메시지를 사용할 수 있다. Hello 메시지를 수신할 시에, 노드 연결 관리자는 데이터 패킷의 헤더에 있는 송신자 ID와 연관되어 있는 노드 연결 모듈이 이미 존재하는지 여부를 검사할 수 있다. 그러한 경우, 노드 연결 관리자는 노드 연결 모듈에 대한 연결성 정보를 갱신한다(예를 들어, Hello 메시지가 UDP로부터 수신되는 경우 UDP 채널 상태를 "이용가능"으로 설정한다). 그렇지 않은 경우, 노드 연결 관리자는 새로운 노드 연결 모듈 인스턴스를 생성하고 이를 패킷 헤더에 있는 송신자 ID와 연관시킨다. Hello 메시지의 보디(body)가 비어 있는데, 그 이유는 Hello 메시지에 있는 소스 ID와 항상 동일한 송신자 ID가 이미 연결-레벨 프로토콜 패킷 헤더로 전달되었기 때문이다.As described above, the message type may include a Hello message CLP_HEL, a probe message CLP_PRB, an answer probe message CLP_APR, and an acknowledgment message CLP_ACK. Hello messages are often used to establish a connection. When a node accepts a TCP connection request, the first message it receives from this connection is usually a Hello message. Otherwise, the host node can close this connection. The host node can also use the Hello message to ping other nodes in an interactive session over UDP and IP multicast channels. Upon receiving the Hello message, the node connection manager may check whether a node connection module already associated with the sender ID in the header of the data packet already exists. In that case, the node connection manager updates the connectivity information for the node connection module (eg, sets the UDP channel state to "available" if a Hello message is received from UDP). Otherwise, the node connection manager creates a new node connection module instance and associates it with the sender ID in the packet header. The body of the Hello message is empty because the sender ID that is always the same as the source ID in the Hello message has already been passed in the connection-level protocol packet header.

Hello 메시지는 또한 킵-얼라이브(keep-alive message)로서 사용될 수 있다. 예를 들어, 호스트 노드는 링크를 살아있는 상태로 유지(keep alive)하기 위해 매 5초마다 모든 이용가능한 UDP 및 IP 멀티캐스트 채널로 Hello 메시지를 전송할 수 있다. 호스트 노드가 특정의 링크로부터 어떤 시간 동안(예를 들어, 30초 동안) Hello 메시지를 수신하지 않은 경우, 호스트 노드는 연결이 단절된 것으로 가정할 수 있다. 이러한 경우에, 노드 연결 모듈 인스턴스는 재연결하려고 시도한다.The Hello message can also be used as a keep-alive message. For example, the host node may send a Hello message to all available UDP and IP multicast channels every 5 seconds to keep the link alive. If the host node has not received a Hello message for some time (eg, for 30 seconds) from a particular link, the host node may assume that the connection is disconnected. In this case, the node connection module instance attempts to reconnect.

종단간 지연 시간(end-to-end latency)을 측정하기 위해 프로브(Probe) 및 대답 프로브(Answer Probe) 메시지가 사용될 수 있다. 이들 메시지 둘다는 동일한 보디 구조(body structure), 즉 타임스탬프(timestamp)를 포함하는 DWORD 필드를 가질 수 있다. 한 예시적인 구현에서, 대화형 세션의 호스트 노드는 모든 이용가능한 UDP 채널로 프로브 메시지를 매 10초마다 전송한다. 패킷 내의 타임스탬프는 전송 시간을 나타낸다. 이 메시지를 수신할 시에, 대화형 세션에 있는 멤버 노드는 메시지 ID를 대답 프로브(Answer Probe)로 변경하고 즉각 그 패킷을 되돌려보낸다. 호스트 노드가 반환 패킷을 수신하면, 호스트 노드는 현재 시간에서 패킷으로 전달된 타임스탬프를 감산함으로써 RTT를 계산할 수 있다. 이 결과가 네트워크 모니터에 보고된다.Probe and Answer Probe messages may be used to measure end-to-end latency. Both of these messages may have a DWORD field that contains the same body structure, that is, a timestamp. In one example implementation, the host node of the interactive session sends a probe message every 10 seconds on all available UDP channels. The time stamp in the packet indicates the transmission time. Upon receiving this message, the member node in the interactive session changes the message ID to Answer Probe and immediately returns the packet. When the host node receives the return packet, the host node can calculate the RTT by subtracting the timestamp delivered in the packet from the current time. This result is reported to Network Monitor.

애플리케이션-레벨 멀티캐스팅 시스템에서, 기본적으로 2가지 종류의 패킷, 즉 제어 메시지 및 미디어 스트림이 있다. 미디어 데이터의 손실이 통신 품질에 영향을 주는 반면, 제어 메시지의 손실은 보통 파괴적이다. 예를 들어, 가입 요청의 손실은 가입자를 기다리게 하고, 네트워크 상태 업데이트의 손실은 네트워크 혼잡(network congestion)을 가져올 수 있다. 따라서, 제어 메시지를 전송함에 있어서는 신뢰성있는 TCP 채널이 보통 선호된다.In application-level multicasting systems, there are basically two kinds of packets: control messages and media streams. Loss of media data affects communication quality, while loss of control messages is usually disruptive. For example, the loss of a subscription request may cause the subscriber to wait, and the loss of network status updates may result in network congestion. Thus, a reliable TCP channel is usually preferred for sending control messages.

그렇지만, 방화벽 및 NAT의 존재로, TCP 연결이 항상 이용가능한 것은 아니다. 때때로, UDP가 2개의 종단 시스템이 통신하는 데 이용가능한 유일한 채널이다. 한 예시적인 구현에서, 애플리케이션-레벨 멀티캐스팅 시스템은 UDP를 통한 신뢰성있는 전달을 보장하기 위해 TCP에서의 "타임아웃 및 재전송(timeout and retransmission)" 방식과 유사한 경량 메카니즘을 사용할 수 있다. 연결-레벨 프로토콜 패킷 헤더에서의 신뢰도 필드가 사용될 수 있다. 이 필드에서의 표시(예를 들어, 1 비트 신뢰도 필드에서의 1)는 데이터 패킷이 확인 응답을 필요로 한다는 것을 나타낸다. 슬라이딩 윈도우 메카니즘이 선호되지 않을 수 있는데, 그 이유는 순차적 전달(in sequence delivery)을 보장할 필요가 없을 수 있기 때문이다.However, with the presence of firewalls and NATs, TCP connections are not always available. Sometimes, UDP is the only channel available for two end systems to communicate. In one example implementation, an application-level multicasting system may use a lightweight mechanism similar to the “timeout and retransmission” approach in TCP to ensure reliable delivery over UDP. The reliability field in the connection-level protocol packet header may be used. An indication in this field (eg, 1 in the 1 bit reliability field) indicates that the data packet requires an acknowledgment. Sliding window mechanisms may not be preferred because there may not be a need to ensure in sequence delivery.

CLP_ACK 메시지는 ack-필요 패킷의 수신을 확인 응답하는 데 사용된다. 예를 들어, 패킷의 보디는 멤버 노드가 어느 패킷을 수신했는지를 나타내는 순서 번호를 포함할 수 있다. 순서 번호에 대해 작은 필드(예를 들어, 8-비트)가 사용될 수 있는데, 그 이유는 ack-필드 패킷의 양이 많지 않을 것이기 때문이다.The CLP_ACK message is used to acknowledge receipt of an ack-needed packet. For example, the body of the packet may include a sequence number indicating which packet the member node received. Small fields (eg 8-bits) can be used for the sequence number because the amount of ack-field packets will not be high.

CLP_OTH 메시지는 패킷이 상위 계층에 속한다는 것을 나타내는 데 사용될 수 있다. 이러한 경우에, 연결 레벨에 있는 컴포넌트들은 연결-레벨 프로토콜 헤더를 분리(detach)시켜 그 데이터를 라우팅 레벨 프로토콜로 전달할 수 있다.The CLP_OTH message can be used to indicate that the packet belongs to a higher layer. In such a case, components at the connection level may detach the connection-level protocol header and pass the data to the routing level protocol.

도 6은 애플리케이션-레벨 멀티캐스팅 시스템에 대한 라우팅-레벨 프로토콜 데이터 패킷의 예시적인 헤더(600)를 나타낸 것이다. 도 6에 도시된 바와 같이, 예시적인 라우팅-레벨 데이터 패킷 헤더(600)는 소스 ID 필드, 메시지 유형 필드, 미디어 유형 필드, 수신자 수(number of receiver) 필드, 토폴로지 길이(topology length) 필드, 수신자 리스트(receiver list) 필드, 순서 번호(sequence number) 필드, 비트 레이트(bit rate) 필드, 및 토폴로지 필드를 포함할 수 있다. 소스 ID(source ID) 필드는 패킷 소스의 멤버 ID를 포함한다. 메시지 유형 필드는 메시 지 유형 정보를 포함하고 있다. 일례에서, 이 메시지 유형은 다음과 같이 정의될 수 있다.6 shows an exemplary header 600 of a routing-level protocol data packet for an application-level multicasting system. As shown in FIG. 6, an exemplary routing-level data packet header 600 includes a source ID field, a message type field, a media type field, a number of receiver field, a topology length field, a receiver. It may include a list list field, a sequence number field, a bit rate field, and a topology field. The source ID field includes a member ID of a packet source. The message type field contains message type information. In one example, this message type may be defined as follows.

enum RLP_MESSAGE_TYPEenum RLP_MESSAGE_TYPE

{{

RLP_LKST = OxOl , // 링크 상태 정보RLP_LKST = OxOl, // link status information

RLP_SBSC = 0x02, // 가입 요청RLP_SBSC = 0x02, // Join Request

RLP_UNSB = 0x04, // 가입 해지 요청RLP_UNSB = 0x04, // Unsubscribe Request

RLP_ACTP = 0x08, // 토폴로지 수락RLP_ACTP = 0x08, // Accept Topology

RLP_RJTP = 0x10, // 토폴로지 거부RLP_RJTP = 0x10, // Deny Topology

RLP_BWMS = 0x20, // 대역폭 측정RLP_BWMS = 0x20, // Bandwidth Measurement

RLP_BWRP = 0x21 , // 대역폭 측정 보고RLP_BWRP = 0x21, // Report Bandwidth Measurement

RLP_STRM = 0x40, // 미디어 스트림RLP_STRM = 0x40, // media stream

RLP_APPM = 0x80; // 애플리케이션-레벨 메시지RLP_APPM = 0x80; // application-level messages

RLP_QUIT = OxFF, // 세션 종료RLP_QUIT = OxFF, // End Session

}}

미디어 유형 필드는 데이터 패킷에 포함된 미디어 데이터의 유형을 나타낸다. 수신자 수 필드는 이 패킷의 수신자의 수를 나타낸다. 토폴로지 길이 필드는 토폴로지 필드에서의 엔트리의 수를 나타낸다. 수신자 리스트 필드는 엔트리를 포함하며, 리스트에서의 각각의 엔트리는 멤버 ID를 포함한다. 순서 번호 필드는 토폴로지의 순서 번호를 포함한다. 스트림 비트 레이트 필드는 토폴로지와 연관된 스트림의 새로운 비트 레이트를 포함한다. 토폴로지 필드는 멀티캐스트 트리의 토폴로지를 포함한다. 이 필드는, 스트림의 라우팅 정보를 포함할 수 있는 RLP_STRM 타입의 메시지 내에 포함될 수 있다.The media type field indicates the type of media data included in the data packet. The number of recipients field indicates the number of recipients of this packet. The topology length field indicates the number of entries in the topology field. The recipient list field contains an entry, and each entry in the list contains a member ID. The sequence number field contains the sequence number of the topology. The stream bit rate field contains the new bit rate of the stream associated with the topology. The topology field contains the topology of the multicast tree. This field may be included in a message of type RLP_STRM, which may include routing information of the stream.

한 예시적인 구현에서, 메시지 유형 필드는 8 비트를 포함하고, 소스 ID 필드는 128 비트를 포함하며, 미디어 유형 필드는 7 비트를 포함하고, 수신자 수 필드는 8 비트를 포함하며, 토폴로지 길이 필드는 8 비트를 포함하고, 수신자 리스트 필드 내의 각각의 엔트리는 128 비트를 포함하며, 순서 번호 필드는 32 비트를 포함하고, 스트림 비트 레이트 필드는 32 비트를 포함하며, 토폴로지 필드의 각각의 엔트리는 128 비트의 멤버 ID 및 32 비트의 자식 번호를 포함한다.In one example implementation, the message type field includes 8 bits, the source ID field includes 128 bits, the media type field includes 7 bits, the receiver number field includes 8 bits, and the topology length field is Includes 8 bits, each entry in the recipient list field includes 128 bits, an order number field contains 32 bits, a stream bit rate field contains 32 bits, and each entry in the topology field is 128 bits It contains a member ID and a 32-bit child number.

도 7은 애플리케이션-레벨 멀티캐스팅 시스템에 대한 라우팅-레벨 프로토콜 링크 상태 정보를 갖는 예시적인 데이터 패킷(700)을 나타낸 것이다. 일반적으로, 라우팅-레벨 프로토콜 링크 상태 데이터 패킷은 대화형 세션과 연관된 다른 노드들과의 연결 또는 링크를 모니터링하기 위해 노드의 네트워크 모니터에 의해 전송된다. 네트워크 모니터는 네트워크 상태를 수집하고 라우팅-레벨 프로토콜 링크 상태 데이터 패킷으로 이 정보를 다른 멤버 노드로 주기적으로 전파한다. 도 7에 도시한 바와 같이, 예시적인 라우팅-레벨 링크 상태 데이터 패킷(700)은 링크 수(number of links) 필드, 목적지 ID 필드, RTT 필드, 가용 대역폭 필드, 및 추가 링크(more links) 필드를 포함할 수 있다.7 illustrates an example data packet 700 with routing-level protocol link state information for an application-level multicasting system. In general, routing-level protocol link state data packets are sent by a node's network monitor to monitor a link or link with other nodes associated with an interactive session. The network monitor collects network status and periodically propagates this information to other member nodes in routing-level protocol link status data packets. As shown in FIG. 7, an exemplary routing-level link state data packet 700 may include a number of links field, a destination ID field, an RTT field, an available bandwidth field, and a more links field. It may include.

링크 수 필드는 이 패킷에서의 링크 상태 엔트리의 수를 나타낸다. 각각의 링크 상태 엔트리는 목적지 ID, RTT 및 링크의 가용 대역폭을 포함한다. 노드는 일반적으로 그 노드로부터 시작하는 링크들의 링크 상태를 게시한다. 각각의 목적지 ID 필드 엔트리는 종단 노드의 멤버 ID만을 포함할 수 있다. RTT 필드 및 대역폭 필드는 각각 링크의 RTT(round trip time, 왕복 시간) 및 전송 대역폭에 관한 정보를 포함한다. 추가 링크 필드는 그 노드로부터 시작한 다른 가용 링크에 관한 정보를 포함할 수 있다.The link number field indicates the number of link state entries in this packet. Each link state entry includes the destination ID, the RTT and the available bandwidth of the link. A node typically posts the link state of links starting from that node. Each destination ID field entry may contain only the member ID of the end node. The RTT field and the bandwidth field each contain information about a round trip time (RTT) and a transmission bandwidth of a link. The additional link field may contain information about other available links starting from that node.

일반적으로, 라우팅-레벨 프로토콜 링크 상태 데이터 패킷은 네트워크 모니터로 전달된다. 미디어 전달 경로(media delivery route)는 새로운 정보에 기초하여 각각의 스트림에 대해 재계산된다. 이들 경로가 이전의 계산과 다른 경우, 이 토폴로지가 새로운 멀티캐스트 트리 내의 내부 노드들(inner nodes) 전부에 의해 수락될 때까지, 이 미디어 유형의 모든 발신 데이터 패킷으로 새로운 토폴로지가 전달될 수 있다.In general, routing-level protocol link state data packets are forwarded to the network monitor. The media delivery route is recalculated for each stream based on the new information. If these paths differ from previous calculations, the new topology can be carried in all outgoing data packets of this media type until this topology is accepted by all of the inner nodes in the new multicast tree.

애플리케이션-레벨 멀티캐스팅 시스템에서의 다중-당사자 대화형 애플리케이션의 사용자는 대화형 세션에 있는 특정의 멤버의 특정의 미디어 스트림에 가입/가입 해지하기로 선택할 수 있다. 가입/가입 해지 메시지가 이 선택을 위해 사용될 수 있다. 이들 메시지는 미디어 유형을 포함할 수 있다. 소스 ID 및 수신자 ID에 대응하는 가입자 ID 및 미디어 제공자 ID는 라우팅-레벨 프로토콜 데이터 패킷 헤더로부터 검색될 수 있다. 이들 메시지는 일반적으로 라우팅 레벨에 있는 컴포넌트들로 전달된다. 네트워크 상태(network dynamics) 및 가입 상태(subscription status)가 라우팅 관리자에 입력될 수 있다. 어느 한 입력에 변동이 있는 경우 멀티캐스트 트리를 재계산해야 할지도 모른다.A user of a multi-party interactive application in an application-level multicasting system may choose to subscribe / unsubscribe to a particular media stream of a particular member in an interactive session. A subscribe / unsubscribe message can be used for this selection. These messages may include the media type. The subscriber ID and media provider ID corresponding to the source ID and receiver ID may be retrieved from the routing-level protocol data packet header. These messages are typically delivered to components at the routing level. Network dynamics and subscription status may be entered into the routing manager. If there is a change in either input, you may need to recalculate the multicast tree.

대화형 세션과 연관되어 있는 소스 노드로부터 토폴로지 정보를 수신할 시에, 예를 들어, 가장 최신의 가용 대역폭 측정에 따라, 토폴로지가 요구할 때, 수신 노드는 스트림을 중계할 수 있는지를 검사할 수 있다. 그러한 경우, 수신 노드는 라우팅 테이블을 갱신하고 RLP_ACTP 메시지를 소스 노드로 전송한다. 그렇지 않은 경우, 수신 노드는 라우팅 테이블을 그대로 두며 RLP_RJTP 메시지를 소스 노드로 전송한다.Upon receiving topology information from the source node associated with the interactive session, for example, according to the most recent available bandwidth measurement, the receiving node can check whether the receiving node can relay the stream as required. . In such case, the receiving node updates the routing table and sends an RLP_ACTP message to the source node. Otherwise, the receiving node leaves the routing table and sends an RLP_RJTP message to the source node.

RLP_ACTP 메시지는 토폴로지의 순서 번호를 포함할 수 있다. 이 순서 번호는 소스 노드에 의해 발생되며 패킷의 토폴로지 섹션으로 전달된다. 이 순서 번호는 소스 노드가 그 수락이 가장 최신의 토폴로지에 대한 것인지를 확인하는 데 도움을 준다. 소스 노드는 멀티캐스트 트리에서의 내부 노드들 전부로부터 RLP_ACTP를 수신한 후에 토폴로지를 전송하는 것을 중단한다.The RLP_ACTP message may include the sequence number of the topology. This sequence number is generated by the source node and passed to the topology section of the packet. This sequence number helps the source node verify that its acceptance is for the most recent topology. The source node stops transmitting the topology after receiving RLP_ACTP from all internal nodes in the multicast tree.

때때로, 특히 2개 이상의 소스 노드가 유사한 때에 그의 토폴로지를 변경할 때, 다수의 소스 노드는 동일한 수신 노드에게 그의 데이터를 중계하라고 할 수 있다. 가용 대역폭이 먼저 FCFS(first-come-first-served) 방식으로 사용되기 때문에, 어떤 늦게 도착된 중계 요청은 이행되지 않을 수 있다. 이러한 경우에, 중계 노드는 RLP_RJTP 메시지를 소스 노드로 전송한다. 거부된 토폴로지의 순서 번호 이외에, 패킷은 수신 노드의 최신의 링크 상태 정보를 포함할 수 있다. 이 새로운 정보에 기초하여, 소스 노드는 그의 멀티캐스트 트리를 재계산할 수 있고 또 새로운 순서 번호를 갖는 새로운 토폴로지를 배포할 수 있다.Sometimes, especially when two or more source nodes change their topology at a similar time, multiple source nodes may tell the same receiving node to relay their data. Because the available bandwidth is first used in first-come-first-served (FCFS) fashion, any late arrival relay request may not be fulfilled. In this case, the relay node sends an RLP_RJTP message to the source node. In addition to the sequence number of the rejected topology, the packet may contain the latest link state information of the receiving node. Based on this new information, the source node can recalculate its multicast tree and deploy a new topology with a new sequence number.

도 8은 애플리케이션-레벨 멀티캐스팅 시스템에 대한 대역폭 측정 정보를 갖 는 예시적인 데이터 패킷(800)을 나타낸 것이다. 패킷(800)은 일반적으로 네트워크 모니터에 의해 데이터 통신 성능을 측정하는 데 사용된다. 라운드 번호(round number) 필드는 어느 측정 라운드(round of measurement)에 패킷이 속하는지를 나타낸다. 반올림 수 필드는 연속적인 측정 프로세스들로부터의 패킷들이 뒤섞이는 것을 방지하는 역할을 한다. 순서 번호 필드는 이 패킷의 시퀀스내 번호(in-sequence number)를 포함한다. 타임스탬프 필드는 전송 시간을 기록한다. 데이터 필드는 대역폭 측정 정보와 연관된 데이터를 포함한다.8 shows an example data packet 800 with bandwidth measurement information for an application-level multicasting system. Packet 800 is generally used by a network monitor to measure data communication performance. The round number field indicates which round of measurement the packet belongs to. The rounding number field serves to prevent the packets from successive measurement processes from intermingling. The sequence number field contains the in-sequence number of this packet. The timestamp field records the transmission time. The data field contains data associated with bandwidth measurement information.

애플리케이션-레벨 멀티캐스팅 시스템은 사용자가 애플리케이션 계층에서 대역폭 측정 데이터를 설정 및 처리할 수 있게 해준다. 애플리케이션 계층 할당 데이터의 예들은 사용자의 디스플레이 이미지 및 실시간 비디오의 가장 최근의 I-프레임이다. 이들 데이터는 노출된 인터페이스를 통해 네트워크 모니터로 전달될 수 있다. 기본적으로, 네트워크 모니터는 대역폭 측정을 위해 무의미 데이터 블록(block of nonsense data)을 사용할 수 있다. 개발자는 또한 측정 데이터를 처리하기 위해 콜백 함수를 설정할 수 있다. 데이터 부분의 구조는 개발자에 의해 정의될 수 있다.Application-level multicasting systems allow users to set up and process bandwidth measurement data at the application layer. Examples of application layer allocation data are the most recent I-frames of a user's display image and real-time video. These data can be passed to the network monitor through the exposed interface. By default, network monitors can use block of nonsense data to measure bandwidth. Developers can also set up callback functions to process measurement data. The structure of the data portion can be defined by the developer.

도 9는 애플리케이션-레벨 멀티캐스팅 시스템에 대한 대역폭 측정 보고를 갖는 예시적인 데이터 패킷(900)을 나타낸 것이다. 패킷(900)은 일반적으로 노드의 네트워크 모니터에 의해 대화형 세션과 연관된 다른 노드들로 전달된다. 라운드 번호 필드는 특정의 측정 라운드를 식별한다. 증가 경향(increasing trend) 필드는 단방향 지연의 증가 경향이 특정의 측정 라운드에서 관찰되는지를 나타낸다. 현재의 라운드에서 증가 경향이 관찰되지 않는 경우, 송신자는 그 다음 라운드에서 프로빙 레이트(probing rate)를 증가시킬 수 있다. 가용 대역폭(available bandwidth) 필드는 측정된 경로의 계산된 가용 대역폭을 기록한다. 9 shows an example data packet 900 with bandwidth measurement reports for an application-level multicasting system. Packet 900 is generally forwarded by the node's network monitor to other nodes associated with the interactive session. The round number field identifies the specific round of measurement. The increasing trend field indicates whether the increasing trend of one-way delay is observed in a particular round of measurement. If no tendency to increase is observed in the current round, the sender may increase the probing rate in the next round. The Available Bandwidth field records the calculated available bandwidth of the measured path.

애플리케이션-레벨 멀티캐스팅 시스템에서의 노드는 동일한 대화형 세션에서 다른 데이터 패킷을 다른 노드들로 전송할 수 있다. 예를 들어, 대화형 세션을 탈퇴하기 전에, 노드는 이용가능한 채널이라면 어느 것을 통해서라도 세션의 노드들 전부로 RLP_QUIT 메시지를 전송할 수 있다. 이 메시지를 수신할 시에, 애플리케이션-레벨 멀티캐스팅 시스템에서의 각각의 노드는 라우팅 테이블에서의 대응하는 엔트리를 클리어할 수 있고 탈퇴하는 노드(leaving node)가 그의 스트림의 가입자인 경우 멀티캐스트 트리를 재계산할 수 있다.Nodes in an application-level multicasting system may send different data packets to other nodes in the same interactive session. For example, prior to leaving the interactive session, the node may send an RLP_QUIT message to all nodes of the session via any of the available channels. Upon receiving this message, each node in the application-level multicasting system can clear the corresponding entry in the routing table and scan the multicast tree if the leaving node is a subscriber to its stream. Can be recalculated.

애플리케이션-레벨 멀티캐스팅 시스템에 의해 처리되는 미디어 스트림 데이터는 오디오, 비디오 또는 임의의 사용자-정의 스트림일 수 있다. RLP_STREAM 패킷을 수신할 시에, 라우팅 관리자 등의 라우팅 레벨에 있는 컴포넌트들은 패킷이 토폴로지 정보를 포함하는지를 검사할 수 있다. 그 다음에, 로컬 가입 리스트(local subscription list)로부터, 라우팅 관리자는 로컬 사용자가 패킷과 연관된 스트림에 가입해 있는지를 검사할 수 있다. 그러한 경우, 라우팅 관리자는 라우팅-레벨 프로토콜 헤더를 분리시켜 라우팅-레벨 프로토콜 패킷의 데이터를 애플리케이션-레벨 프로토콜 컴포넌트로 전달할 수 있다. 라우팅 관리자는 이 패킷을 대화형 세션에 있는 다른 노드들로 포워드해야 하는지를 알아보기 위해 라우팅 테이블을 탐색할 수 있다. 포워드해야 하는 경우, 라우팅 관리자는 라우팅-레벨 프 로토콜 헤더를 패킹하고 이 패킷을 아래의 연결 계층으로 전달한다.The media stream data processed by the application-level multicasting system may be audio, video or any user-defined stream. Upon receiving the RLP_STREAM packet, components at the routing level, such as the routing manager, can check whether the packet contains topology information. Then, from the local subscription list, the routing manager can check whether the local user is subscribed to the stream associated with the packet. In such a case, the routing manager may separate the routing-level protocol headers and pass the data of the routing-level protocol packets to the application-level protocol component. The routing manager can search the routing table to see if this packet should be forwarded to other nodes in the interactive session. If it is necessary to forward, the routing manager packs the routing-level protocol header and forwards this packet to the underlying link layer.

애플리케이션-레벨 멀티캐스팅 시스템의 애플리케이션-레벨 컴포넌트는 하위 계층들이 이해할 수 없을지도 모르는 그 자신의 메시지를 정의할 수 있다. 이러한 메시지를 수신할 때, 라우팅 계층은 이를 직접 애플리케이션 레벨로 전달하게 된다. 애플리케이션-레벨 컴포넌트들은 임의의 사용자-정의 스트림을 비롯한 미디어 스트림을 처리하도록 구성되어 있다. 개발자는 필요에 따라 애플리케이션-레벨 헤더를 정의할 수 있다. 채널 코딩이 사용되는 경우, 애플리케이션 레벨에서 프래그먼트화(fragmentation) 및 리젬블링(resembling)이 처리된다.An application-level component of an application-level multicasting system may define its own message that lower layers may not understand. When receiving such a message, the routing layer passes it directly to the application level. Application-level components are configured to process media streams, including any user-defined streams. Developers can define application-level headers as needed. If channel coding is used, fragmentation and reembling are handled at the application level.

도 10은 애플리케이션-레벨 멀티캐스팅 시스템에서 대화형 세션의 노드들과 통신하는 예시적인 프로세스(1000)를 나타낸 것이다. 예시적인 프로세스(1000)는 대화형 세션을 개시 및 구성하도록 노드에 의해 구현될 수 있다. 블록(1002)에서, 대화형 세션에 대한 요청이 세션 제어기로 전송된다. 블록(1004)에서, 대화형 세션과 연관되어 있는 노드들에 관한 정보가 수신된다. 블록(1006)에서, 노드들 각각과 연결이 설정된다. 블록(1008)에서, 노드들 각각으로부터 연결 상태 정보가 수신된다. 블록(1010)에서, 데이터 패킷을 노드들 각각으로 전송하기 위한 라우팅 맵이 계산된다. 블록(1012)에서, 계산된 라우팅 맵이 노드들에 제공된다. 블록(1014)에서, 그 경로들(routes)을 사용하여 컨텐츠가 전송된다. 블록(1016)에서, 각각의 노드에 대한 연결 상태가 모니터링된다. 연결 상태들을 모니터링하는 예시적인 프로세스에 대해 도 11과 관련하여 기술된다. 10 illustrates an example process 1000 for communicating with nodes of an interactive session in an application-level multicasting system. The example process 1000 can be implemented by a node to initiate and configure an interactive session. At block 1002, a request for an interactive session is sent to the session controller. At block 1004, information about nodes associated with an interactive session is received. At block 1006, a connection is established with each of the nodes. At block 1008, connection state information is received from each of the nodes. At block 1010, a routing map for sending data packets to each of the nodes is calculated. At block 1012, the calculated routing map is provided to the nodes. At block 1014, the content is transmitted using its routes. At block 1016, the connection status for each node is monitored. An example process for monitoring connection states is described in connection with FIG. 11.

도 11은 대화형 세션과 연관된 노드들과의 연결 상태를 모니터링하는 예시적 인 프로세스(1100)를 나타낸 것이다. 블록(1102)에서, 데이터 패킷이 식별된다. 결정 블록(1104)에서, 데이터 패킷이 노드에 대한 상태 정보를 포함하는지의 결정이 행해진다. 포함하는 경우, 프로세스(1100)는 결정 블록(1106)으로 간다. 데이터 패킷이 연결 상태 정보를 포함하지 않는 경우, 프로세스(1100)는 블록(1114)로 가서 데이터 패킷이 처리된다. 데이터 패킷을 처리하는 예시적인 프로세스는 도 12와 관련하여 기술될 것이다.11 illustrates an example process 1100 for monitoring a connection state with nodes associated with an interactive session. At block 1102, a data packet is identified. At decision block 1104, a determination is made whether the data packet includes state information for the node. If yes, process 1100 goes to decision block 1106. If the data packet does not include link state information, process 1100 goes to block 1114 where the data packet is processed. An example process of processing data packets will be described with respect to FIG.

결정 블록(1106)에서, 연결 상태가 변동되었는지가 결정한다. 변동되지 않은 경우, 이 프로세스는 블록(1102)으로 되돌아간다. 연결 상태가 변동된 경우, 프로세스(1100)는 라우팅 맵이 변동된 연결 상태에 따라 재계산되는 블록(1108)에서 계속된다. 블록(1110)에서, 재계산된 경로가 노드에 제공된다. At decision block 1106, it is determined whether the connection state has changed. If not changed, the process returns to block 1102. If the connection state has changed, process 1100 continues at block 1108 where the routing map is recalculated according to the changed connection state. At block 1110, the recalculated path is provided to the node.

도 12는 대화형 세션과 연관된 데이터 패킷을 처리하는 예시적인 프로세스(1200)를 나타낸 것이다. 데이터 패킷은 대화형 세션과 연관된 노드들 중 임의의 노드에 의해 전송될 수 있다. 블록(1202)에서, 대화형 세션과 연관된 데이터 패킷이 수신된다. 결정 블록(1204)에서, 패킷이 로컬 목적지와 연관되어 있는지가 판정된다. 그러한 경우, 프로세스(1200)는 패킷이 처리를 위해 다중-당사자 대화형 애플리케이션으로 포워드되는 블록(1206)으로 계속된다. 이 프로세스는 이어서 결정 블록(1208)으로 간다. 패킷이 로컬 목적지와 연관되어 있지 않은 경우, 프로세스(1200)는 또한 결정 블록(1208)으로 간다.12 illustrates an example process 1200 for processing a data packet associated with an interactive session. The data packet may be sent by any of the nodes associated with the interactive session. At block 1202, a data packet associated with an interactive session is received. At decision block 1204, it is determined whether the packet is associated with a local destination. If so, process 1200 continues to block 1206 where the packet is forwarded to the multi-party interactive application for processing. This process then goes to decision block 1208. If the packet is not associated with a local destination, process 1200 also goes to decision block 1208.

결정 블록(1208)에서, 데이터 패킷을 중계해야 하는지의 판정이 행해진다. 패킷이 중계되지 않는 경우, 프로세스(1200)는 블록(1202)으로 되돌아간다. 패킷 이 중계되는 경우, 이 프로세스는 대화형 세션과 연관된 라우팅 맵이 식별되는 블록(1210)으로 간다. 블록(1212)에서, 패킷이 라우팅 정보에 따라 하나 이상의 중계 노드로 포워드된다. 예를 들어, 패킷이 라우팅 트리에서 자식 노드들로 포워드될 수 있다. 이 프로세스는 이어서 블록(1202)으로 되돌아간다.At decision block 1208, a determination is made whether the data packet should be relayed. If the packet is not relayed, process 1200 returns to block 1202. If the packet is relayed, this process goes to block 1210 where the routing map associated with the interactive session is identified. At block 1212, the packet is forwarded to one or more relay nodes according to the routing information. For example, a packet can be forwarded to child nodes in the routing tree. This process then returns to block 1202.

도 13은 기술된 시스템 및 방법을 구현하는 예시적인 컴퓨터 장치(1300)를 나타낸 것이다. 그의 가장 기본적인 구성에서, 컴퓨팅 장치(1300)는 일반적으로 적어도 하나의 중앙 처리 장치(CPU)(1305) 및 메모리(1310)를 포함한다.13 illustrates an example computer device 1300 that implements the described systems and methods. In its most basic configuration, computing device 1300 generally includes at least one central processing unit (CPU) 1305 and memory 1310.

컴퓨팅 장치의 정확한 구성 및 유형에 따라, 메모리(1310)는 휘발성(RAM 등), 비휘발성(ROM, 플래쉬 메모리, 기타 등등) 또는 이 둘의 어떤 조합일 수 있다. 그에 부가하여, 컴퓨팅 장치(1300)는 또한 부가적인 특징/기능을 가질 수 있다. 예를 들어, 컴퓨팅 장치(1300)는 다수의 CPU를 포함할 수 있다. 기술된 방법은 컴퓨팅 장치(1300) 내의 임의의 처리 장치에 의해 임의의 방식으로 실행될 수 있다. 예를 들어, 기술된 프로세스는 다수의 CPU 둘다에 의해 병렬로 실행될 수 있다.Depending on the exact configuration and type of computing device, memory 1310 may be volatile (RAM, etc.), nonvolatile (ROM, flash memory, etc.) or some combination of the two. In addition, computing device 1300 may also have additional features / functions. For example, computing device 1300 may include multiple CPUs. The described method may be executed in any manner by any processing device in computing device 1300. For example, the described process can be executed in parallel by both CPUs.

컴퓨팅 장치(1300)는 또한 자기 또는 광 디스크 또는 테이프(이에 한정되지 않음)를 비롯한 부가적인 저장 장치(이동식 및/또는 비이동식)를 포함할 수 있다. 이러한 부가적인 저장 장치는 도 13에서 저장 장치(1315)로 나타내어져 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등의 정보를 저장하는 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 메모리(1310) 및 저장 장치(1315)는 모두 컴퓨터 저장 매체의 예이다. 컴퓨터 저장 매체는 RAM, ROM, EPROM, 플래쉬 메 모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 원하는 정보를 저장하는 데 사용될 수 있거나 컴퓨팅 장치(1300)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이에 한정되지 않는다. 임의의 이러한 컴퓨터 저장 매체는 컴퓨팅 장치(1300)의 일부일 수 있다.Computing device 1300 may also include additional storage devices (removable and / or non-removable), including but not limited to magnetic or optical disks or tapes. This additional storage device is shown as storage device 1315 in FIG. 13. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storing information such as computer readable instructions, data structures, program modules or other data. Memory 1310 and storage 1315 are both examples of computer storage media. Computer storage media may include RAM, ROM, EPROM, flash memory or other memory technology, CD-ROMs, digital versatile disks or other optical storage devices, magnetic cassettes, magnetic tapes, magnetic disk storage devices or other magnetic storage devices, Or any other medium that can be used to store desired information or can be accessed by the computing device 1300. Any such computer storage media may be part of computing device 1300.

컴퓨팅 장치(1300)는 또한 이 장치가 다른 장치들과 통신할 수 있게 해주는 통신 장치(들)를 포함할 수 있다. 통신 장치(들)(1340)는 통신 매체의 일례이다. 통신 매체는 일반적으로 반송파 또는 기타 전송 메카니즘 등의 피변조 데이터 신호에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터를 구현하며 모든 정보 전달 매체를 포함한다. "피변조 데이터 신호"라는 용어는 이 신호에 정보를 인코딩하도록 그의 특성들 중 하나 이상이 설정 또는 변경된 신호를 의미한다. 제한이 아닌 예로서, 통신 매체는 유선 네트워크 또는 직접 배선 연결 등의 유선 매체 및 음향, RF, 적외선 및 기타 무선 매체 등의 무선 매체를 포함한다. 용어 '컴퓨터 판독가능 매체'는, 본 명세서에서 사용되는 바와 같이, 컴퓨터 저장 매체 및 통신 매체 둘다를 포함한다. 기술된 방법들은 데이터, 컴퓨터 실행가능 명령어, 기타 등등의 임의의 형태로 임의의 컴퓨터-판독가능 매체에 인코딩될 수 있다.Computing device 1300 may also include communication device (s) that allow the device to communicate with other devices. Communication device (s) 1340 is an example of communication media. Communication media generally embody computer readable instructions, data structures, program modules or other data on a modulated data signal, such as a carrier or other transmission mechanism, and include all information delivery media. The term " modulated data signal " means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in this signal. By way of example, and not limitation, communication media includes wired media such as wired networks or direct wire connections and wireless media such as acoustic, RF, infrared and other wireless media. The term 'computer readable medium' as used herein includes both computer storage media and communication media. The methods described may be encoded in any computer-readable medium in any form of data, computer executable instructions, and the like.

컴퓨팅 장치(1300)는 또한 키보드, 마우스, 펜, 음성 입력 장치, 터치 입력 장치 기타 등등의 입력 장치(들)(1335)를 포함할 수 있다. 디스플레이, 스피커, 프린터, 기타 등등의 출력 장치(들)(1330)도 역시 포함될 수 있다. 이들 장치 모 두는 기술 분야에 공지되어 있으며 상세히 기술할 필요가 없다.Computing device 1300 may also include input device (s) 1335, such as a keyboard, mouse, pen, voice input device, touch input device, and the like. Output device (s) 1330 such as displays, speakers, printers, and the like may also be included. All of these devices are known in the art and need not be described in detail.

당업자라면 프로그램 명령어들을 저장하는 데 이용되는 저장 장치가 네트워크에 걸쳐 분산될 수 있다는 것을 잘 알 것이다. 예를 들어, 원격 컴퓨터는 기술된 프로세스의 일례를 소프트웨어로서 저장할 수 있다. 로컬 또는 단말 컴퓨터는 원격 컴퓨터에 액세스하고 프로그램을 실행시키기 위해 소프트웨어의 일부 또는 그 전부를 다운로드할 수 있다. 다른 대안으로서, 로컬 컴퓨터는 필요에 따라 소프트웨어를 다운로드할 수 있거나 어떤 소프트웨어 명령어들을 로컬 단말기에서 실행하고 어떤 것들을 원격 컴퓨터(또는 컴퓨터 네트워크)에서 실행함으로써 분산 처리할 수 있다. 당업자라면 또한 당업자에게 잘 알려진 종래 기술들 또는 소프트웨어 명령어들의 일부분을 이용하는 것이 DSP, 프로그램가능 로직 어레이, 기타 등등의 전용 회로에 의해 수행될 수 있다는 것을 잘 알 것이다.Those skilled in the art will appreciate that the storage device used to store program instructions may be distributed across a network. For example, the remote computer can store an example of the described process as software. The local or terminal computer may download some or all of the software to access the remote computer and run the program. Alternatively, the local computer can download the software as needed or distribute it by executing some software instructions on the local terminal and executing some on the remote computer (or computer network). Those skilled in the art will also appreciate that the use of some of the prior art or software instructions that are well known to those skilled in the art can be performed by dedicated circuitry such as a DSP, a programmable logic array, and the like.

Claims (20)

하나의 노드가 다른 노드들과 통신하는 프로세스를 실행하도록 하는 명령어들을 저장하는 컴퓨터 판독가능 매체로서,A computer readable medium storing instructions for causing one node to execute a process of communicating with other nodes, 각 노드는 컴퓨팅 장치를 포함하고, 각 노드는 제각각 로컬 애플리케이션 레벨 멀티캐스팅(ALM) 모듈을 호스팅하며, 상기 노드들 중 임의의 주어진 하나의 노드(a given node)가 복수의 멀티캐스팅 세션에 참여하고, 세션에 참여하는 상기 노드들은 그들의 제각기의 로컬 ALM 모듈을 통해 멀티캐스트 전송을 서로에게 송신 및 수신하며, 임의의 노드의 상기 로컬 ALM 모듈은 이 임의의 노드에서 실행되는 임의적인 애플리케이션에 의해 사용되도록 구성되고, 각 ALM 모듈은 노드들 간의 상기 멀티캐스트 전송을 송신 및 수신하기 위해 해당 호스트 노드의 기반 IP 구현(host node's underlying IP implementation)을 사용하는 애플리케이션을 포함하고,Each node comprises a computing device, each node hosting a respective local application level multicasting (ALM) module, wherein a given node participates in a plurality of multicasting sessions. The nodes participating in the session transmit and receive multicast transmissions to each other via their respective local ALM modules, and the local ALM modules of any nodes are to be used by any application running on this arbitrary node. Each ALM module comprises an application that uses a host node's underlying IP implementation of the host node to send and receive the multicast transmissions between the nodes, 상기 주어진 노드의 상기 로컬 ALM 모듈에 의해 실행되는 프로세스는,The process executed by the local ALM module of the given node, 상기 주어진 노드가 참여하는 세션들을 식별하는 정보를 유지하는 단계- 각 세션은 제각기의 로컬 ALM 모듈을 통해 연결되는 다른 노드들의 각기 다른 집합을 포함하고, 상기 주어진 노드에서 실행되는 애플리케이션은 세션 내의 상기 다른 노드들로 멀티캐스팅하기 위해 상기 주어진 노드의 상기 로컬 ALM 모듈을 사용하고 상기 애플리케이션은 상기 세션 내의 상기 다른 노드들로부터 멀티캐스트를 수신하기 위해 상기 주어진 노드의 상기 로컬 ALM 모듈을 사용함 -;Maintaining information identifying the sessions in which the given node participates, each session comprising a different set of different nodes connected through respective local ALM modules, wherein an application running on the given node Use the local ALM module of the given node to multicast to nodes and the application uses the local ALM module of the given node to receive multicasts from the other nodes in the session; 애플리케이션 레벨 라우팅을 실행하는 단계- 상기 실행하는 단계는,Executing application level routing, wherein the executing step includes: 복수의 상이한 라우팅 맵을 저장하는 단계- 각 라우팅 맵은 상기 주어진 노드가 그의 로컬 ALM 모듈을 통해 참여하는 다른 세션에 대응하고, 각 라우팅 맵은 상기 대응하는 세션에서 다른 노드로의 경로를 기술함 -;Storing a plurality of different routing maps, each routing map corresponding to another session in which the given node participates through its local ALM module, each routing map describing a route from the corresponding session to another node; ; 노드들의 연결 상태를 나타내는 패킷들- 상기 패킷들 중 일부는 상기 주어진 노드에 의해 전송된 프로브(probe)에 대한 응답임 -을 수신하고, 제1 세션에서 노드의 상태 변경에 응답하여, 그에 따라 상기 제1 세션에 대한 상기 라우팅 맵을 변경하는 단계;Receiving packets indicative of the connection status of the nodes, some of the packets being in response to a probe sent by the given node, and in response to changing the state of the node in the first session, accordingly Changing the routing map for a first session; 상기 주어진 노드 상의 애플리케이션에 의해 상기 주어진 노드가 참여하는 세션 내의 상기 다른 노드들로 멀티캐스팅되는 출력 패킷들을 수신하는 단계- 주어진 패킷에 대해, 상기 대응하는 세션의 상기 라우팅 맵은 상기 패킷을 전송할 세션의 노드를 선택하는데 사용됨-; 및Receiving output packets that are multicast by the application on the given node to the other nodes in the session in which the given node participates—for a given packet, the routing map of the corresponding session is determined of the session to which the packet is to be sent. Used to select a node; And 상기 다른 노드들의 상기 ALM 모듈에 의해 멀티캐스팅된 인입 패킷들을 수신하고, 상기 주어진 노드가 상기 인입 패킷의 목적지인지 여부를 판정하는 단계- 상기 주어진 노드가 목적지인 것으로 판정된 인입 패킷들은 상기 주어진 노드에서 실행되는 대응하는 애플리케이션으로 전달되고, 상기 주어진 노드가 인입 패킷들의 목적지가 아닌 것으로 판정되면, 상기 인입 패킷들은 상기 라우팅 맵에 따라 선택된 다른 노드들로 전송됨 -를 포함함-;Receiving incoming packets multicasted by the ALM module of the other nodes, and determining whether the given node is the destination of the incoming packet, wherein incoming packets determined to be the destination are at the given node; And if it is determined that the given node is not the destination of incoming packets, the incoming packets are sent to other nodes selected according to the routing map. 노드 연결을 유지 및 사용하는 단계- 상기 유지 및 사용하는 단계는,Maintaining and using the node connection, wherein maintaining and using the node is performed. 노드 연결이 생성된 경우, IP 멀티캐스트 전송 계층 프로토콜을 포함하는 복수의 IP 전송 계층 프로토콜 중 사용할 IP 전송 계층 프로토콜을 자동으로 판정하고, 상기 판정된 IP 전송 계층 프로토콜의 노드의 구현에 의해 처리되는 네트워크 연결을 개방하는 단계- 상기 IP 멀티캐스트 전송 계층 프로토콜은 적어도 하나의 노드 연결을 위해 선택되고 상기 적어도 하나의 노드 연결을 위해 IP 멀티캐스트 전송 계층 프로토콜 연결이 개방됨 -;When a node connection is created, the network is automatically determined by the implementation of the node of the determined IP transport layer protocol, automatically determining an IP transport layer protocol to use among a plurality of IP transport layer protocols including the IP multicast transport layer protocol. Opening a connection, wherein the IP multicast transport layer protocol is selected for at least one node connection and an IP multicast transport layer protocol connection is opened for the at least one node connection; 상기 네트워크 연결을 통해 상기 다른 노드들로부터 상기 인입 패킷들을 수신하는 단계- 동일한 노드에 대한 상이한 노드 연결들은 상기 동일한 노드로의 동일한 네트워크 연결을 사용하여 상기 동일한 노드로부터 인입 패킷들을 수신하고, 상기 인입 패킷들은 상기 애플리케이션 레벨 라우팅으로 전달되고, 상기 인입 패킷들 중 일부는 상기 IP 멀티캐스트 전송 계층 프로토콜 연결에 의해 수신됨 -;Receiving the incoming packets from the other nodes via the network connection—different node connections to the same node receive incoming packets from the same node using the same network connection to the same node, and the incoming packet Are passed to the application level routing, and some of the incoming packets are received by the IP multicast transport layer protocol connection; 상기 애플리케이션 레벨 라우팅으로부터 상기 출력 패킷들을 수신하고, 상기 출력 패킷들을 상기 네트워크 연결을 통해 상기 다른 노드들에 전송하는 단계- 동일한 노드에 대한 상이한 노드 연결은 상기 동일한 노드로의 동일한 네트워크 연결을 사용하여 상기 동일한 노드로 상기 출력 패킷들을 전송하고, 상기 출력 패킷들 중 일부는 상기 IP 멀티캐스트 전송 계층 프로토콜 연결에 의해 수신됨 -를 포함함-Receiving the output packets from the application level routing, and transmitting the output packets to the other nodes via the network connection, wherein different node connections to the same node use the same network connection to the same node; Send the output packets to the same node, some of the output packets being received by the IP multicast transport layer protocol connection; 를 포함하는 Containing 컴퓨터 판독가능 매체.Computer readable medium. 제1항에 있어서,The method of claim 1, 상기 프로세스는 상기 라우팅 맵을 다른 노드들에 제공하는 단계를 더 포함하되 상기 다른 노드들의 상기 ALM 모듈은 상기 라우팅 맵을 사용하는The process further includes providing the routing map to other nodes, wherein the ALM module of the other nodes uses the routing map. 컴퓨터 판독가능 매체.Computer readable medium. 제1항에 있어서,The method of claim 1, 상기 라우팅 맵은 Dijkstra의 SPF 알고리즘 및 확장된 BPF(extended broadest path first) 알고리즘 중 적어도 하나를 적용하는 것에 기초하여 재계산되는The routing map is recalculated based on applying at least one of Dijkstra's SPF algorithm and an extended broadest path first algorithm. 컴퓨터 판독가능 매체.Computer readable medium. 제3 항에 있어서, The method of claim 3, 세션은 화상 회의(video conference), 음성 회의(audio conference), 멀티미디어 회의(multimedia conference), 온라인 게임(online gaming), 또는 다수의 사용자를 관여시키는 이벤트 중 적어도 하나와 연관되는The session may be associated with at least one of a video conference, an audio conference, a multimedia conference, an online game, or an event involving multiple users. 컴퓨터 판독가능 매체.Computer readable medium. 제1항에 있어서, The method of claim 1, 상기 사용할 IP 전송 프로토콜을 판정하는 프로세스는 출력 패킷과 연관된 서비스 품질(Quality of Service) 요건에 기초하는The process of determining the IP transport protocol to use is based on a quality of service requirement associated with an output packet. 컴퓨터 판독가능 매체.Computer readable medium. 제1항에 있어서, The method of claim 1, 상기 인입 패킷들 및 출력 패킷들 중 일부는 화상 회의와 연관된 데이터 스트림에 대응하는Some of the incoming packets and output packets correspond to a data stream associated with a video conference. 컴퓨터 판독가능 매체.Computer readable medium. 다른 노드들과 통신하도록 구성된 주어진 노드(given node)로서,A given node configured to communicate with other nodes, 상기 주어진 노드 및 각각의 다른 노드는 컴퓨팅 장치를 포함하고, 상기 주어진 노드 및 각각의 다른 노드는 로컬 애플리케이션 레벨 멀티캐스팅(ALM) 모듈을 구비하며, 상기 주어진 노드는 그의 로컬 ALM 모듈을 사용하여 멀티캐스팅 세션에 참여하도록 구성되며 세션 내의 노드들은 서로에 대한 멀티캐스트 전송을 그들의 제각기의 로컬 ALM 모듈을 통해 송신 및 수신하고, 각 ALM 모듈은 그의 대응하는 노드에서 실행되는 임의적인 애플리케이션에 의해 사용되도록 구성되고, 각 ALM 모듈은 그의 노드에서 실행되는 애플리케이션을 포함하고 그의 노드의 기반 IP 구현과 인터페이싱하여 노드들 간에 상기 멀티캐스트 전송을 송신 및 수신하고,The given node and each other node comprises a computing device, wherein the given node and each other node has a local application level multicasting (ALM) module, and the given node is multicasted using its local ALM module. Configured to participate in a session, and nodes within the session send and receive multicast transmissions to each other through their respective local ALM modules, each ALM module configured to be used by any application running on its corresponding node and Each ALM module includes an application running on its node and interfaces with its node's underlying IP implementation to send and receive the multicast transmissions between nodes, 상기 주어진 노드의 상기 ALM 모듈은,The ALM module of the given node, 상기 주어진 노드가 참여하는 세션들을 식별하는 정보를 유지하는 세션 계층- 각 세션은 제각기의 로컬 ALM 모듈을 통해 연결되는 다른 노드들의 각기 다른 집합을 포함하고, 상기 주어진 노드에서 실행되는 애플리케이션은 세션 내의 상기 다른 노드들로 멀티캐스팅하기 위해 상기 주어진 노드의 상기 로컬 ALM 모듈을 사용하고 상기 세션 내의 상기 다른 노드들로부터 멀티캐스트를 수신하기 위해 상기 주어진 노드의 상기 로컬 ALM 모듈을 사용함 -;A session layer that maintains information identifying sessions in which the given node participates, each session comprising a different set of different nodes connected through respective local ALM modules, wherein an application running on the given node Use the local ALM module of the given node to multicast to other nodes and use the local ALM module of the given node to receive multicasts from the other nodes in the session; 애플리케이션 레벨 라우팅 계층- 상기 애플리케이션 레벨 라우팅 계층은,Application level routing layer-The application level routing layer, 복수의 상이한 라우팅 맵을 사용- 각 라우팅 맵은 제각각 상기 주어진 노드가 상기 주어진 노드의 상기 ALM 모듈을 통해 참여하는 다른 세션에 대응하고, 각 라우팅 맵은 상기 대응하는 세션에서 노드들로의 경로를 기술함 -하고,Use a plurality of different routing maps, each routing map corresponding to a different session in which the given node participates through the ALM module of the given node, each routing map describing a path to nodes in the corresponding session. - 상기 주어진 노드 상의 애플리케이션에 의해 상기 노드가 참여하는 세션 내의 상기 다른 노드들로 멀티캐스팅되는 출력 패킷을 수신- 주어진 패킷에 대해, 상기 대응 세션의 상기 라우팅 맵은 상기 주어진 패킷을 전송할 상기 대응 세션의 노드들을 선택하는데 사용됨 -하며,Receiving an output packet multicasted to the other nodes in the session in which the node participates by an application on the given node, for a given packet, the routing map of the corresponding session is a node of the corresponding session to send the given packet to Used to select them, 다른 노드들의 상기 ALM 모듈에 의해 멀티캐스팅된 인입 패킷들을 수신하고, 상기 주어진 노드가 상기 인입 패킷들의 목적지인지 여부를 판정하되 상기 주어진 노드가 목적지인 것으로 판정된 인입 패킷들은 상기 주어진 노드에서 실행되는 대응하는 애플리케이션으로 전달되고, 상기 주어진 노드가 인입 패킷들의 목적지가 아닌 것으로 판정되면, 상기 인입 패킷들은 상기 라우팅 맵에 따라 선택된 다른 노드들로 전송됨 -;A corresponding packet that receives incoming packets multicasted by the ALM module of other nodes and determines whether the given node is the destination of the incoming packets, wherein incoming packets determined to be the destination are executed at the given node. And if it is determined that the given node is not the destination of incoming packets, the incoming packets are sent to other nodes selected according to the routing map; 노드 연결 계층- 상기 노드 연결 계층은,Node connection layer-The node connection layer, 노드 연결이 생성된 경우, IP 멀티캐스트 프로토콜을 포함하는 복수의 IP 전송 계층 프로토콜 중 사용할 IP 전송 계층 프로토콜을 자동으로 판정하고, 상기 판정된 IP 전송 계층 프로토콜의 상기 주어진 노드의 구현에 의해 처리되는 네트워크 연결을 개방- 세션 내의 일부 노드는 상기 IP 멀티캐스트 프로토콜이 이용가능한 경우 상기 IP 전송 계층 프로토콜용으로 상기 IP 멀티캐스트 프로토콜을 사용하고 상기 세션 내의 다른 노드들은 상기 IP 전송 계층 프로토콜용으로 TCP 또는 UDP를 사용함 -하고,When a node connection is created, a network is automatically determined of an IP transport layer protocol to use among a plurality of IP transport layer protocols including an IP multicast protocol and processed by the given node's implementation of the determined IP transport layer protocol. Opening a connection-Some nodes in the session use the IP multicast protocol for the IP transport layer protocol if the IP multicast protocol is available and other nodes in the session use TCP or UDP for the IP transport layer protocol. Used-and, 상기 네트워크 연결을 통해 상기 다른 노드들로부터 상기 인입 패킷들을 수신- 동일한 노드에 대한 상이한 노드 연결들은 상기 동일한 노드로의 동일한 네트워크 연결을 사용하여 상기 동일한 노드로부터 인입 패킷들을 수신하고, 상기 인입 패킷들은 상기 애플리케이션 레벨 라우팅으로 전달됨 -하고,Receiving the incoming packets from the other nodes via the network connection-different node connections to the same node receive incoming packets from the same node using the same network connection to the same node, the incoming packets being Delivered to application level routing, 상기 애플리케이션 레벨 라우팅으로부터 출력 패킷을 수신하고, 상기 출력 패킷을 상기 네트워크 연결을 통해 상기 다른 노드들에 전송하되 동일한 노드에 대한 상이한 노드 연결은 상기 동일한 노드로의 동일한 네트워크 연결을 사용하여 상기 동일한 노드로 상기 출력 패킷을 전송함-Receive an output packet from the application level routing, and send the output packet to the other nodes via the network connection, but different node connections to the same node to the same node using the same network connection to the same node. Sends the output packet 을 포함하는 노드.Node containing. 제7항에 있어서, The method of claim 7, wherein 상기 멀티캐스팅 세션과 연관된 상기 노드들의 상기 연결 상태들에 관한 정보를 갖는 데이터 패킷들을 수신하고 라우팅 테이블을 유지하는 라우팅 모듈로 상기 연결 상태들을 제공하도록 구성되어 있는 네트워크 모니터를 더 포함하는And a network monitor configured to receive data packets with information regarding the connection states of the nodes associated with the multicasting session and provide the connection states to a routing module that maintains a routing table. 노드.Node. 제8항에 있어서, 9. The method of claim 8, 상기 라우팅 모듈은 상기 노드의 애플리케이션 레벨에서 구현되는 The routing module is implemented at the application level of the node. 노드.Node. 제7항에 있어서, The method of claim 7, wherein 상기 노드는 상기 ALM 모듈을 사용하여 다른 멀티캐스트 세션에 참여하고, 상기 ALM 모듈은 각 멀티캐스트 세션마다, 상기 노드에 대응하는 식별자 및 상기 노드가 참여하는 멀티캐스트 세션에 대응하는 식별자를 유지하는The node participates in another multicast session using the ALM module, and the ALM module maintains, for each multicast session, an identifier corresponding to the node and an identifier corresponding to the multicast session in which the node participates. 노드.Node. 제7항에 있어서, The method of claim 7, wherein 상기 ALM 모듈은 상기 인입 패킷들을 형성하기 위해 네트워크 레벨 연결을 통해 수신된 네트워크 데이터 패킷들을 조립하는The ALM module assembles network data packets received over a network level connection to form the incoming packets. 노드.Node. 제11항에 있어서, 12. The method of claim 11, 복수의 노드 연결 인스턴스를 관리하는 것을 더 포함하며, Further comprising managing a plurality of node connection instances, 각각의 노드 연결 인스턴스는 상기 네트워크 레벨 연결들 중 적어도 하나에 대응하는Each node connection instance corresponds to at least one of the network level connections. 노드.Node. 제12항에 있어서, The method of claim 12, 각각의 노드 연결 인스턴스는 또한, 상기 데이터 패킷과 연관된 서비스 품질(Quality of Service) 요건에 기초하여, 대응하는 노드로 데이터 패킷를 전송하기 위한 전송 프로토콜을 선택하도록 구성되는Each node connection instance is further configured to select a transport protocol for transmitting the data packet to the corresponding node based on a Quality of Service requirement associated with the data packet. 노드.Node. 제13항에 있어서, 14. The method of claim 13, 각각의 노드 연결 인스턴스는 또한 TCP, UDP 및 IP 멀티캐스트를 비롯한 전송 프로토콜들 중에서 선택하도록 구성된Each node-connection instance is also configured to choose from among transport protocols, including TCP, UDP, and IP multicast. 노드.Node. 노드들 간의 애플리케이션 레벨 멀티캐스팅(ALM)을 위한 방법으로서,A method for application level multicasting (ALM) between nodes, 각 노드는 컴퓨팅 장치를 포함하고, 각 노드는 애플리케이션 레벨 멀티캐스팅(ALM) 모듈을 구비하며, 멀티캐스트 세션 내의 노드들은 서로에 대한 ALM 전송을 그들의 제각기의 ALM 모듈을 통해 송신 및 수신하고, 상기 ALM 모듈은 노드들에서 실행되는 임의적인 애플리케이션에 의해 사용되도록 구성되고, 상기 ALM 모듈은 상기 노드에 의해 제공되는 전송 프로토콜과 인터페이싱하여 노드들 간에 멀티캐스트 전송을 송신 및 수신하고,Each node comprises a computing device, each node having an application level multicasting (ALM) module, wherein nodes in a multicast session send and receive ALM transmissions to each other through their respective ALM modules, and wherein the ALM The module is configured for use by any application running on the nodes, the ALM module interfaces with the transport protocol provided by the node to send and receive multicast transmissions between the nodes, 상기 방법은 노드 상에서 상기 ALM 모듈에 의해 실행되며,The method is executed by the ALM module on a node, 상기 노드가 참여하는 멀티캐스트 세션을 식별하는 정보를 유지하는 단계- 상기 멀티캐스트 세션은 상기 노드들의 집합을 포함함 -;Maintaining information identifying a multicast session in which the node participates, wherein the multicast session includes a collection of nodes; 애플리케이션 레벨 라우팅을 실행하는 단계- 상기 실행하는 단계는, Executing application level routing, wherein the executing step includes: 상기 노드가 상기 ALM 모듈을 통해 참여하는 상기 멀티캐스트 세션에 대한 라우팅 맵을 액세스는 단계- 상기 라우팅 맵은 상기 멀티캐스트 세션에서 상기 노드들 각각으로의 경로를 기술함 -;Accessing a routing map for the multicast session in which the node participates via the ALM module, the routing map describing a path to each of the nodes in the multicast session; 상기 노드에서 실행되는 애플리케이션에 의해 멀티캐스팅되는 출력 패킷을 수신하는 단계- 주어진 출력 패킷에 대해, 상기 패킷을 전송할 상기 세션의 노드들을 선택하는데 상기 라우팅 맵이 사용되며, 상기 다른 노드들 중 하나는 상기 패킷의 최종 수신지이고, 상기 노드들 중 다른 하나는 상기 패킷을 상기 멀티캐스트 세션 내의 또 다른 노드로 전송하게 될 중간 노드임 -; 및Receiving an output packet multicasted by an application running on the node—for a given output packet, the routing map is used to select nodes of the session to send the packet, one of the other nodes being A final destination of a packet, wherein one of the nodes is an intermediate node that will forward the packet to another node in the multicast session; And 상기 세션 내의 상기 다른 노드들의 상기 ALM 모듈에 의해 멀티캐스팅된 인입 패킷들을 수신하고, 상기 인입 패킷들 중 일부를 상기 노드에서 실행되는 상기 애플리케이션으로 전달하며 상기 라우팅 맵을 사용하여 상기 인입 패킷들 중 일부가 전송되는 상기 멀티캐스트 세션 내의 다른 노드들을 식별하는 단계를 포함함 -; 및Receive incoming packets multicast by the ALM module of the other nodes in the session, pass some of the incoming packets to the application running at the node, and use the routing map to send some of the incoming packets. Identifying other nodes in the multicast session to which is transmitted; And 상기 ALM 모듈에 의해, 전송 계층 IP 멀티캐스트 모듈을 사용하여 상기 세션 내의 노드들 중 일부로 및 그로부터 상기 인입 패킷들 및 출력 패킷들의 일부분을 송신 및 수신하고, TCP 또는 UDP를 사용하여 상기 세션 내의 다른 노드들로 및 그로부터 상기 인입 패킷들 및 출력 패킷들의 다른 부분을 송신 및 수신하는 단계- 상기 노드는 TCP 전송 모듈, UDP 전송 모듈 및 전송 계층 IP 멀티캐스팅을 수행하는 상기 IP 멀티캐스트 전송 모듈을 포함하는 복수의 전송 계층 모듈과 통신하는 IP 모듈을 포함하는 네트워크 스택을 구비함 -Send and receive, by the ALM module, a portion of the incoming packets and output packets to and from some of the nodes in the session using a transport layer IP multicast module, and another node within the session using TCP or UDP Sending and receiving other incoming and outgoing packets and other portions of output packets therein, wherein the node comprises a TCP transport module, a UDP transport module and the IP multicast transport module for performing transport layer IP multicasting; A network stack comprising an IP module for communicating with a transport layer module of 를 포함하는 노드들 간의 애플리케이션 레벨 멀티캐스팅(ALM)을 위한 방법.Method for application level multicasting (ALM) between nodes comprising a. 제15항에 있어서, 16. The method of claim 15, 전송 계층 IP 멀티캐스팅이 이용가능한지 여부를 판정하고, 이용 가능한 것으로 판정되면 상기 전송 계층 IP 멀티캐스팅을 이용하는 단계를 더 포함하는 Determining whether transport layer IP multicasting is available and if so determined, using the transport layer IP multicasting; 노드들 간의 애플리케이션 레벨 멀티캐스팅(ALM)을 위한 방법.Method for application level multicasting (ALM) between nodes. 제15항에 있어서, 16. The method of claim 15, 서비스 품질 기준에 기초하여 사용할 전송 모듈을 결정하는 단계를 더 포함하는Determining which transport module to use based on the quality of service criteria; 노드들 간의 애플리케이션 레벨 멀티캐스팅(ALM)을 위한 방법.Method for application level multicasting (ALM) between nodes. 삭제delete 삭제delete 삭제delete
KR1020087008016A 2005-10-21 2006-10-19 Applicaton-level multicasting architecture KR101278861B1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/255,797 US7778273B2 (en) 2005-10-21 2005-10-21 Application-level multicasting architecture
US11/255,797 2005-10-21
PCT/US2006/041057 WO2007047936A1 (en) 2005-10-21 2006-10-19 Application-level multicasting architecture

Publications (2)

Publication Number Publication Date
KR20080068808A KR20080068808A (en) 2008-07-24
KR101278861B1 true KR101278861B1 (en) 2013-07-30

Family

ID=37962849

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087008016A KR101278861B1 (en) 2005-10-21 2006-10-19 Applicaton-level multicasting architecture

Country Status (5)

Country Link
US (1) US7778273B2 (en)
EP (1) EP1938530B1 (en)
KR (1) KR101278861B1 (en)
CN (1) CN101292474B (en)
WO (1) WO2007047936A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101535633B1 (en) * 2014-07-07 2015-07-09 엘아이지넥스원 주식회사 Data transmission method and apparatus and data transmission system in ad -hoc network
KR101951192B1 (en) * 2017-10-31 2019-05-22 삼성에스디에스 주식회사 Method for providing path information, method for determining path and apparauts thereof

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110246642A1 (en) * 2006-03-31 2011-10-06 Cohen Alexander J Aggregating network activity using software provenance data
KR20080026795A (en) * 2006-09-21 2008-03-26 삼성전자주식회사 Apparatus and method of selection routing protocol in network
US7672240B2 (en) * 2006-12-14 2010-03-02 Sun Microsystems, Inc. Method and system for using Bayesian network inference for selection of transport protocol algorithm
JP4869169B2 (en) * 2007-07-11 2012-02-08 パナソニック株式会社 Data transmission apparatus and data retransmission method
US7920569B1 (en) * 2008-05-05 2011-04-05 Juniper Networks, Inc. Multi-link transport protocol translation
US8416776B2 (en) * 2008-06-19 2013-04-09 Panasonic Corporation Communication channel building device and N-tree building method
US20100113159A1 (en) * 2008-11-06 2010-05-06 International Business Machines Corporation Method and apparatus for partitioning virtual worlds using prioritized topic spaces in virtual world systems
US20100113158A1 (en) * 2008-11-06 2010-05-06 International Business Machines Corporation Method and apparatus for hosting a distributed virtual world system
US20100086981A1 (en) * 2009-06-29 2010-04-08 Qteros, Inc. Compositions and methods for improved saccharification of biomass
JP5355222B2 (en) * 2009-05-25 2013-11-27 パナソニック株式会社 Path setting device and path setting method
KR20100133205A (en) 2009-06-11 2010-12-21 (주)씨디네트웍스 Method for selecting optimized transfer protocol and apparatus for thereof
US8149831B2 (en) * 2009-11-19 2012-04-03 Alcatel Lucent Technique for packet compression in an application level multicast
US8868658B2 (en) * 2012-04-27 2014-10-21 Cisco Technology, Inc. Client assisted multicasting for audio and video streams
CN105164972B (en) * 2013-05-10 2019-11-29 华为技术有限公司 The addressing of dynamic multi-destination
EP3742687A1 (en) 2014-04-23 2020-11-25 Bequant S.L. Method and apparatus for network congestion control based on transmission rate gradients
US9843513B2 (en) * 2015-03-20 2017-12-12 Juniper Networks, Inc. Multicast flow overlay using registration over a reliable transport
FR3049140A1 (en) 2016-03-15 2017-09-22 Orange METHOD FOR DYNAMICALLY MANAGING ROUTE COMMUNICATION PATHS BASED ON APPLICATION NEEDS
EP3338378A4 (en) * 2016-10-28 2018-10-24 Aruba Networks, Inc. Multicast multi-user group
CN115314569B (en) * 2022-05-10 2023-11-28 浙江大学 UDP-based lightweight MQTT design method
US11956204B1 (en) * 2022-12-23 2024-04-09 Plume Design, Inc. IPv4-in-IPv6 relaying systems and methods to preserve IPv4 public addresses

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030120917A1 (en) 2001-12-20 2003-06-26 Nec Corporation Application layer multicast system and intermediate node therefor

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3581430B2 (en) * 1995-05-18 2004-10-27 キヤノン株式会社 Wireless switching system, communication device, and communication method
US6321270B1 (en) * 1996-09-27 2001-11-20 Nortel Networks Limited Method and apparatus for multicast routing in a network
US6813714B1 (en) * 1999-08-17 2004-11-02 Nortel Networks Limited Multicast conference security architecture
US6687358B1 (en) 2000-03-04 2004-02-03 Intel Corporation Method and apparatus for joining a party to a multipoint conference using digital techniques
US7007100B1 (en) * 2000-12-20 2006-02-28 Nortel Networks Limited Method for synchronization of multicast routing table changes with a plurality of multicast routing protocols
US7099323B1 (en) * 2000-12-20 2006-08-29 Nortel Networks Limited Method, apparatus and system for management of multicast routes for a plurality of routing protocols in a network device
US8218555B2 (en) * 2001-04-24 2012-07-10 Nvidia Corporation Gigabit ethernet adapter
ITMI20010916A1 (en) * 2001-05-04 2002-11-04 Marconi Comm Spa METHOD FOR MULTICAST ROUTING DISTRIBUTED IN CONNECTION-ORIENTED NETWORKS AND APPLICATION NETWORK SUCH METHOD
US20040205219A1 (en) * 2003-02-19 2004-10-14 Wen-Syan Li Virtual active network for live streaming media
US7644177B2 (en) * 2003-02-28 2010-01-05 Cisco Technology, Inc. Multicast-routing-protocol-independent realization of IP multicast forwarding
US6950432B2 (en) * 2003-05-23 2005-09-27 Matsushita Electric Industrial Co., Ltd. Architecture for dense multicast networks with provisioned routes
WO2006023484A1 (en) * 2004-08-16 2006-03-02 Flarion Technologies, Inc. Methods and apparatus for transmitting group communication signals
CN100391212C (en) * 2005-01-26 2008-05-28 清华大学 Method for realizing interactive multimedia data transmission on internet
US8089964B2 (en) * 2005-04-05 2012-01-03 Cisco Technology, Inc. Transporting multicast over MPLS backbone using virtual interfaces to perform reverse-path forwarding checks
US7400596B1 (en) * 2005-08-17 2008-07-15 Rockwell Collins, Inc. Dynamic, multicast routing using a quality of service manager

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030120917A1 (en) 2001-12-20 2003-06-26 Nec Corporation Application layer multicast system and intermediate node therefor

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101535633B1 (en) * 2014-07-07 2015-07-09 엘아이지넥스원 주식회사 Data transmission method and apparatus and data transmission system in ad -hoc network
KR101951192B1 (en) * 2017-10-31 2019-05-22 삼성에스디에스 주식회사 Method for providing path information, method for determining path and apparauts thereof

Also Published As

Publication number Publication date
EP1938530B1 (en) 2012-12-26
CN101292474A (en) 2008-10-22
CN101292474B (en) 2013-04-24
EP1938530A1 (en) 2008-07-02
US20070091918A1 (en) 2007-04-26
KR20080068808A (en) 2008-07-24
US7778273B2 (en) 2010-08-17
WO2007047936A1 (en) 2007-04-26
EP1938530A4 (en) 2011-11-02

Similar Documents

Publication Publication Date Title
KR101278861B1 (en) Applicaton-level multicasting architecture
KR101150110B1 (en) Transport system for instant messaging
US7827304B2 (en) Method and system for virtual multicast networking
US9143333B2 (en) System and method for multicast transmission
US20020143951A1 (en) Method and system for multicast to unicast bridging
Jia A scalable multicast source routing architecture for data center networks
EP2200220A1 (en) Method and apparatus for reliable multicast streaming
Zhu et al. Chronos: Serverless multi-user chat over NDN
CN101291240B (en) Multicast flow transmission method and system
KR20150001362A (en) Apparatus and method for processing multicast traffic in an openflow environment
US20140337478A1 (en) Peer-to-peer network communications
US9426041B2 (en) Communication system and method
Malhotra et al. UDP based chat application
US8861520B1 (en) Packet cloning for enhanced delivery of communication from a source device to one or more destination devices
Eraslan et al. A scalable network architecture for distributed virtual environments with dynamic QoS over 1Pv6
KR100281643B1 (en) Session Multicast Method for Multi-Party Information Transmission
KR20010083840A (en) Serverless casting mechanism for realtime multimedia presentation, and a technique for duplex communication
KR100296138B1 (en) Method for multimedia conference service using dynamic multicast tree
Shah et al. Performance under a failure of wide-area datagram networks with unicast and multicast traffic routing
Huang Design of A Global Multicast Demonstrator for Live Video Streaming
Huang Master Thesis (60 credits)
Secka IP multicasting in hybrid networks
Stais School of Information Sciences and Technology Department of Informatics
Hassan Explicit Multicast Routing
Wang EECS 589 Final Report Host Level Multicasting

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
LAPS Lapse due to unpaid annual fee