KR20040084892A - 대역폭 옵티마이저를 사용한 그룹 화상 원격 전자 회의시스템 및 방법 - Google Patents

대역폭 옵티마이저를 사용한 그룹 화상 원격 전자 회의시스템 및 방법 Download PDF

Info

Publication number
KR20040084892A
KR20040084892A KR10-2004-7005895A KR20047005895A KR20040084892A KR 20040084892 A KR20040084892 A KR 20040084892A KR 20047005895 A KR20047005895 A KR 20047005895A KR 20040084892 A KR20040084892 A KR 20040084892A
Authority
KR
South Korea
Prior art keywords
client
transmission
rate
server
backlog
Prior art date
Application number
KR10-2004-7005895A
Other languages
English (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 KR20040084892A publication Critical patent/KR20040084892A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • 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
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • H04L43/0864Round trip delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • 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/11Identifying congestion
    • 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
    • H04L47/2416Real-time 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/26Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
    • H04L47/263Rate modification at the source after receiving feedback
    • 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/28Flow control; Congestion control in relation to timing considerations
    • H04L47/283Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
    • 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/36Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]
    • 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/36Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]
    • H04L47/365Dynamic adaptation of the packet size
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • H04L65/403Arrangements for multi-party communication, e.g. for conferences
    • H04L65/4038Arrangements for multi-party communication, e.g. for conferences with floor control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

네트워크를 지나 멀티미디어를 송수신하는 시스템은 둘 이상의 클라이언트와 하나의 서버를 포함한다. 각 클라이언트는 네트워크에 연결되고 네트워크를 경유하여 음성 및 화상 데이터를 생성하고 수신한다. 서버는 상기 클라이언트로부터 음성 및 화상 데이터를 수신하고 클라이언트에게 음성 및 화상 데이터를 송신한다. 음성 및 화상 데이터를 전송하는 동안, 클라이언트와 서버는 음성 및 화상 데이터의 전송율을 동적으로 결정한다.

Description

대역폭 옵티마이저를 사용한 그룹 화상 원격 전자 회의 시스템 및 방법 {System and method for group video teleconferencing using a bandwidth optimizer}
종래의 화상 원격 전자 회의 기술에는 비교적 높은 대기시간(latency), 저효율, 및 부족한 확장성(scalability)이라는 문제가 있다. 이러한 문제의 한가지 이유는 종래의 기술들은 패킷(packet) 크기와 전송 속도를 결정하는데 있어 "최저 공통 대역폭(lowest common bandwidth)" 방법을 사용하기 때문이다. 그리하여, 복수의 클라이언트(clients)들이 동시에 원격 전자 회의를 하는 경우에, 화상 데이터의 전송 속도는 최저 대역폭이 허용하는 속도가 될 수밖에 없다. 그 결과, 원격 전자 회의에서 일부 클라이언트들은 상대적으로 느린 다이얼업(dialup) 연결을 사용하고, 다른 일부 클라이언트들은 T1, DSL, 또는 유사한 광대역 연결을 사용하고 있는 경우, 상기 광대역 연결을 사용하고 있는 클라이언트는 다이얼업 연결의 비율로만 데이터를 수신하게 되므로 능력을 충분히 사용하지 못하게 된다.
종래의 화상 원격 전자 회의 기술은 화상 프레임을 전송하는데 있어 축적 전송 (store and forward) 방법을 사용하고 있다. 화상 프레임이 생성되면, 화상 프레임들은 전부 생성된 컴퓨터에 저장된다. 그 후 화상들은 화상 전부가 저장되는 서버로 전송되고, 이어서 수신 컴퓨터에 전송된다. 이로 인해 서버에 많은 사용가능한 메모리가 필요하게 되고 서버의 작업부하가 증가된다. 그 결과, 종래의 시스템은 확장성이 부족하고 대기시간이 증가하게 되었다.
종래의 화상 원격 전자 회의 기술은 종종 방화벽이나 프락시(proxy)서버를 통과하려 할 때 문제점이 발생하게 된다. 방화벽은 통상 화상 원격 전자 회의 기술에서 사용되는 프로토콜인 UDP(사용자 데이터그램 프로토콜; user datagram protocol)을 사용하여 보내진 데이터와 호환되지 않는다. 프락시 서버는 요구(request)를 필터링하는데 사용되고 그 결과, 종종 화상 원격 전자 회의 트래픽(traffic)을 포함한 특정 유형의 트래픽을 필터하게 된다.
상기한 문제점들에 대해서, 화상 원격 전자 회의에 있어 모든 클라이언트의 대역폭 사용능력을 보다 더 잘 활용할 수 있고, 감소된 대기시간을 제공하고, 확장성을 개선하고 방화벽과 프락시 서버에 호환되도록 할 필요가 있다.
본 발명은 화상 원격 전자 회의에 관한 것이고, 보다 상세하게는 화상 원격 전자 회의 동안 대역폭의 사용가능성에 기초한 전송율 변화에 관한 것이다.
도 1은 본 발명의 일 실시예를 포함하는 네트워크 다이어그램이다.
도 2는 본 발명의 일 실시예에 따른 멀티미디어 스트리밍(streaming) 다이어그램이다.
도 3은 본 발명의 일 실시예에 따른 방 서버의 블록 다이어그램이다.
도 4는 본 발명의 일 실시예에 따른 클라이언트의 블록 다이어그램이다.
도 5는 본 발명의 일 실시예에 따른 스레딩(threading) 모델의 다이어그램이다.
도 6은 본 발명의 일 실시예에 따른 동적 데이터 전송의 플로우차트이다.
도 7은 대역폭 옵티마이저의 일 실시예의 블록 다이어그램이다.
도 8은 대역폭 옵티마이저 공정의 일 실시예의 플로우차트이다.
도 9는 전송 대기시간을 결정하기 위해 본 발명에 의해 사용되는 대기시간타임라인(timeline)의 일 실시예의 묘사도이다.
도 10은 본 발명에 의해 사용되는 대역폭 지시기(bandwidth indicator)의 일 실시예 묘사하는 블록 다이어그램이다.
도 11은 대역폭 미터(bandwidth meter)의 사용자 인터페이스의 일 실시예를 도시한다.
도 12는 마이크로폰 큐(microphone queue)를 포함하는 사용자 인터페이스의 일 실시예의 스크린 샷(screen shot)이다.
도 13은 인스턴트 미팅(instant meeting) 특성을 가지고 사용되는 접속 리스트의 일 실시예의 스크린 샷이다.
본 발명은 층상 서버 아키텍처를 포함하는 테이터를 동적으로 전송하는 시스템을 제공하여 멀티미디어 그룹 회의의 효율성을 증가시키고 대기시간을 감소시킨다. 멀티미디어 그룹 회의 시스템을 사용하는 클라이언트는 네트워크에 접속되고 네트워크를 통해 음성 및 화상 데이터를 전송하고 수신한다. 클라이언트가 시스템에 접속하면, 서버 중 하나는 상기 클라이언트와의 연결에 사용 가능한 최대의 대역폭을 결정한다. 그리고 나서 서버는 사용 가능한 대역폭을 충분히 이용하기 위해 전송되는 데이터의 적절한 패킷 크기와 전송율을 설정한다. 멀티미디어 데이터의 전송 동안, 대역폭 옵티마이저는 가장 효율적인 전송율을 결정하기 위해 패킷 손실율과 실제 왕복 전송 시간(round trip transmission times)을 모니터링하면서 전송율을 조절한다. 대역폭 옵티마이저가 백로그(backlog)를 검출하면, 그것은 데이터의 전송 간격과 패킷 크기를 줄여서 데이터 전송율을 감소시킨다. 대역폭 옵티마이저가 백로그를 검출하지 않는 경우에는 다시 백로그가 검출될 때까지 데이터 전송율을 점차적으로 증가시킨다.
도 1은 본 발명을 포함하는 시스템의 일 실시예의 다이어그램이다. 시스템에는 네트워크(100), 라우터(router;112), 하나 이상의 클라이언트(102), 및 하나 이상의 서버(104)가 포함된다. 일 실시예에서, 둘 이상의 클라이언트(102)는 네트워크(100)을 경유해서 각각 다른 클라이언트들에게 멀티미디어 데이터를 전송하고 수신한다. 서버(104)는 클라이언트로부터 클라이언트로의 정확한 데이터 전송을 위해 요구되는 어떠한 멀티미디어 기능성에도 도움을 준다. 라우터(112)는 서버(104)로부터 오고 서버(104)로 가는 데이터 플로우를 돕는데 일반적으로 사용되는 어떠한 라우팅 기구도 될 수 있다. 일 실시예에서, 층상 서버 아키텍처는 일부 또는 전부의 엔트리 서버(106), 로비(lobby) 서버(108), 및 방 서버(110)를 포함하고, 상기의 서버들은 집합적으로 서버(104)로 나타낸다. 로비와 방의 메타포어(metaphor)는부하 밸런싱과 장소 지향적인(place-oriented) 회의 환경을 용이하게 한다. 개개인간의 회의를 선택하는 대신, 각 클라이언트(102)는 로비나 그 로비안에 있는 방에 들어가는 것을 선택할 수 있다. 온라인 채팅방과 유사하게, 각 클라이언트(102)는 방안에 있는 하나 이상의 다른 클라이언트에게 음성, 화상, 및 데이터를 전송할 수 있다.
서버(104)는 네트워크(100)을 경유하여 클라이언트(102)에 연결된다. 특정한 실시예에서, 네트워크(100)은 인터넷, 사립 네트워크 또는 인트라넷일 수 있으나, 다른 네트워크 역시 사용될 수 있고 특정한 유형의 네트워크가 한정되는 것은 아니다. 택일적으로, 일부 실시예에서는, 서버(104)와 클라이언트(102)는 네트워크(100)을 통과함이 없이 간접적 또는 직접적으로 통신할 수 있다. 클라이언트(102)는 음성과 화상 신호를 전송하고 수신하는 것을 용이하게 하는 다수의 음성 및 화상 장치로 구성될 수 있다. 이러한 장치는 화상 표시 장치, 스피커, 마이크로폰, 카메라와 아래에서 서술하는 회의 기능성을 만족시키기에 적합한 소프트웨어를 실행하는 프로세싱 장치를 포함할 수 있다. 클라이언트(102)의 일 구성예가 아래의 도 4의 설명과 함께 보다 더 상세하게 기재된다.
멀티미디어 데이터를 전송하고 수신하기 위해 클라이언트(102)는 서버(104)와 정보를 교환한다. 일 구성예에는 하나 또는 두개의 엔트리 서버(106)을 포함하는데, 시스템은 이러한 엔트리 서버(106)의 수에 한정되는 것은 아니다. 엔트리 서버(106)은 로그인 하는 클라이언트(102)의 관리 기능성을 책임지고, 관리 기능성은 로그인 과정동안 비밀번호 암호화를 제공하는 것을 포함한다. 엔트리 서버(106)은사용가능한 로비들의 디렉토리를 유지하는 것, 각 클라이언트(102)에게 로비를 선택하도록 허용하는 것과 클라이언트(102)가 상기 로비에 들어갈 수 있는 허가를 갖는다는 것을 보증하는 것에 대해서도 역시 책임을 진다. 엔트리 서버(106)에 들어 있는 유일한 상태 정보는 사용가능한 로비의 디렉토리이기 때문에, 엔트리 서버(106)은 쉽게 모여진다. 엔트리 서버(106)은 대역폭, 대기시간과 프로토콜 사용가능성에 대한 클라이언트에 의해 개시되는(client-initiated) 분석에도 역시 도움을 준다. 클라이언트가 로그인을 하면, 클라이언트(102)와 엔트리 서버는 다른 요구되는 정보와 함께 클라이언트(102)에 연결 및 클라이언트(102)로부터의 연결의 대역폭을 설정하고 전송 프로토콜로 UDP가 동작하는 지 여부를 결정하는 시험 전송을 교환한다. UDP의 사용이 방화벽이나 프락시 서버에 의해 제한되지 않는다면, 세션동안 장래의 전송은 UDP를 사용하여 전송될 것이다. 그러나 UDP의 사용이 제한된다면, 장래의 전송은 TCP(전송 제어 프로토콜; transmission control protocol)를 사용하여 전송될 것이다.
로비 서버(108)은 엔트리 서버(106)에 식별 정보를 전송한다. 이 정보는 로비에 접근하지 않은 클라이언트의 리스트를 포함한다. 로비 서버(108)은 부하 밸런싱 기능도 수행한다. 클라이언트(102)가 새로운 방을 생성할 것을 요구하면, 로비 서버(108)은 최소한의 부하를 갖는 방 서버(110)에 방을 생성한다. 일 실시예에서, 로비에 로그인한 어떠한 클라이언트(102)도 새로운 방을 생성할 것을 요구할 수 있다. 선택적으로, 새로운 방을 생성하는 것은 미리 정해진 클라이언트(102) 또는 어떤 기준을 만족하는 클라이언트에게는 제한된다. 예를 들어, 새로운 방을 생성하는것을 요구하는 것은 빌링(billing) 정보를 제공했던 클라이언트(102)에게는 제한되어 클라이언트(102)에 의한 방의 사용에 대해 생성되는 클라이언트(102)에게 요금을 청구할 수 있게 된다. 또 다른 예로, 클라이언트(102)는 논쟁적이거나 외설적이거나 그렇지 않으면 제한된 물질을 함유하는 방을 생성하는 것이 제한된다.
일 실시예에서, 새로운 방이나 모더레이터(moderator)을 생성하는 것을 요구하는 클라이언트(102)는 회의에 대해 특별한 제어 특권을 할당받는다. 예를 들어, 모더레이터는 특정한 클라이언트(102)가 회의에 참가하는 것을 계속하는 것을 방지할 수 있거나, 어떤 클라이언트(102)가 특정한 정보에 접근하는지를 제어할 수 있거나 방을 닫을 수 있다. 모더레이터는 다른 클라이언트(102)에게 특별한 특권을 위임할 수도 있다. 일 실시예에서, 로비 서버(108)은 복수의 방 서버(110), 예를 들어 7개 이상의 방 서버(110)을 지지할 수 있다. 로비에서, 클라이언트(102)는 새로운 방을 생성하는 것 또는 존재하는 방에 들어가는 것을 요구하는 선택권을 갖는다.
일 실시예에서, 방 서버(110)은 시스템의 멀티미디어 기능성을 용이하게 한다. 방 서버(110)은 아래에서 도 3의 설명과 함께 더욱 상세하게 기술된다. 도 1은 단순히 가능한 아키텍처의 일례를 도시하는 것이고 본 발명은 도 1에 도시되는 아티텍처의 일례에 한정되지 않는다. 예를 들어, 서버(104)의 전체 숫자는 엔트리 서버(106), 로비 서버(108) 또는 방 서버(110)의 숫자가 변화하는 것처럼 변화한다. 물론 시스템에는 다른 유형의 서버들도 포함될 수 있다. 다른 대체적 실시예에서는, 시스템은 라우터(112)없이 동작할 수 있다. 물론, 클라이언트(102)와서버(104)는 중간에 네트워크의 연결 없이 직접적으로 연결될 수도 있다.
도 2는 본 발명의 일 실시예에 따른 멀티미디어 스트리밍(streaming) 다이어그램이다. 클라이언트(102A, 102B, 102N;집합적으로 클라이언트(102))는 방 서버(110)을 경유하여 각각 서로 음성 및 화상 데이터를 교환한다. 각 클라이언트(102)는 송신기(204)와 수신기(202)를 포함할 수 있다. 방 서버(110)은 방 서버(110)을 통해 테이터를 전송하고 있는 클라이언트(102) 각각에 대해 유일한 수신기(210)과 송신기(212)를 정한다. 클라이언트(102)는 네트워크(100; 도 2에 도시되지 않음)을 경유하여 방 서버(110)에 연결된다. 클라이언트(102)와 방 서버(110)은 아래에서 도 3의 설명과 함께 더욱 상세하게 기술된다.
음성 데이터(216)과 화상 데이터(214)는 생성되는 클라이언트(102)의 송신기(204)에서 방 서버(110)에 있는 클라이언트(102)의 수신기(210)으로 전송된다. 일 실시예에서, 각 클라이언트(102)는 보고 들을 화상 및 음성을 선택한다. 이러한 선택은 가입자(subscriber) 리스트와 가입(subscription) 리스트를 사용함으로써 용이하게 할 수 있다. 가입자 리스트는 방에 있는 다른 클라이언트에게 데이터를 재분배하기 위해 수신기(202, 210)에 연결되어 사용된다. 각 수신기(202, 210)은 하나의 음성 테이터를 위한 가입자 리스트와 하나의 화상 데이터를 위한 가입자 리스트로 그룹 지어진다. 가입자 리스트는 주어진 음성 또는 화상 스트림에 가입한 클라이언트를 식별한다. 가입 리스트는 화상 스트림을 특정한 화상 채널과 상호관계시켜 이 데이터가 다중송신될 수 있도록 하기 위해 송신기(204, 212)에 연결되어 사용된다. 각 송신기(204, 212)는 음성을 위한 하나의 가입 리스트와 화상을 위한 하나의 가입 리스트로 그룹 지어진다. 가입 리스트는 가입자 리스트의 클라이언트에게 전송되는 클라이언트의 음성 및 화상을 식별한다. 그리하여 가입자 리스트상의 클라이언트들은 음성 및 화상을 수신하게 될 것이고 가입 리스트상의 클라이언트들은 음성 및 화상을 전송하게 될 것이다. 일 실시예에서, 각 클라이언트(102) 한번에 하나의 음성 스트림만을 들을 수 있기 때문에 가입 리스트는 하나의 엔트리만을 함유한다. 대체적 실시예에서는, 시스템은 멀티 채널 음성을 지지할 수 있고, 이러한 경우 음성 스트림은 화상 스트림과 유사한 방식으로 다중송신될 것이다. 화상 가입 리스트는 동시에 표시되는 각 화상 윈도우에 대해 하나씩, 8개 엔트리까지 포함할 수 있다.
가입자 리스트 및 가입 리스트에 있는 정보에 근거하여, 방 서버(110)에 있는 수신기(210)은 방 서버(110)에서 수신하고 있는 클라이언트(102)의 송신기(212)에 화상 및 음성 스트림(214, 216)을 전송한다. 그러면 송신기(212)는 각각의 클라이언트(102)에게 화상 및 음성을 전송한다.멀티미디어 데이터의 전송은 아래에서 도3, 4의 설명과 함께 더욱 상세하게 기재된다.
도 2에서 도시되는 실시예에서, 클라이언트(102A)는 화상 데이터(214A)와 음성 데이터(216A)를 전송하고 있다. 도시되는 다른 두 클라이언트(102B, 102N)은 각각 화상 데이터(214B, 214N)을 전송하고 있다. 클라이언트(102A)는 그 자신의 화상(214A)와 클라이언트(102B)로부터의 화상(214B)를 수신하고 있다. 그 결과로, 송신기(212A)에 대한 화상 가입 리스트는 클라이언트(102A, 102B)를 포함하고, 수신기(202A, 202B)에 대한 화상 가입자 리스트는 클라이언트(102A)를 포함한다. 도시된 실시예에서, 클라이언트(102A)의 화상(214A)는 네트워크(100)을 지나 방 서버(110)으로 전송되고 돌아온다는 것을 유념해야 한다. 대체적 실시예에서는, 클라이언트(102A)는 화상(214A)가 네트워크를 지나 전송되고 돌아옴이 없이 직접적인 피드백으로서의 로컬 화상 이미지를 볼 수 있다. 이러한 직접적인 피드백은 대기시간을 감소기키고 확장성을 증가시킨다. 클라이언트(102B)는 클라이언트(102A)롤부터 화상(214A)와 음성(216A)를 수신하고 클라이언트(102N)으로부터 화상(214N)을 수신한다. 클라이언트(102N)은 클라이언트(102A)으로부터 화상(214A)와 음성(216A)를 수신하고 클라이언트(102B)으로부터 화상(214B)를 수신한다. 클라이언트(102B)와 클라이언트(102N)이 먼저 이러한 음성 및 화상 데이터를 보고 들을 것을 요구하는 경우, 관련되는 가입 및 가입자 리스트는 업데이트(update)된다.
클라이언트(102A)의 송신기(204A)는 클라이언트(102A)에서 생성되는 화상 스트림(214A)와 음성 스트림(216A)를 방 서버(110)에 있는 수신기(210A)에 전송한다. 수신기(210A)는 클라이언트(102B, 102N)에 대한 개별적인 전송으로서 송신기(212B, 212N)에게 음성 스트림(216A)를 전송한다. 수신기(210A)는 화상 스트림(214A)를 송신기(212A, 212B, 212N)에 클라이언트(102A, 102B, 102N)에 대한 개별적인 전송으로서 전송한다. 클라이언트(102B)의 송신기(204B)는 방 서버(110)에 있는 수신기(210B)에 클라이언트(102B)에서 생성되는 화상 스트림(214B)를 전송한다. 수신기(210B)는 화상 스트림(214B)를 송신기(212A, 212N)에 클라이언트(102A, 102B, 102N)에 대한 개별적인 전송으로서 전송한다. 송신기(204N)은 방 서버(110)에 있는 수신기(210N)에 클라이언트(102N)에서 생성되는 화상 스트림(214N)을 전송한다. 수신기(210N)은 화상 스트림(214N)를 송신기(212B)에 클라이언트(102B)에 대한 전송으로서 전송한다.
송신기(212A)는 클라이언트(102A)의 수신기(202A)에 화상(214A, 214B)를 전송한다. 송신기(212B)는 클라이언트(102B)의 수신기(202B)에 화상(214A, 214N)과 음성(216A)를 전송한다. 송신기(212N)는 클라이언트(102N)의 수신기(202N)에 화상(214A, 214B)와 음성(216A)를 전송한다. 송신기(212A, 212B, 212N)로부터의 이러한 전송들은 그러한 송신기들에 대한 각각의 가입 리스트에 의해 제어된다.
화상 및 음성 전송에 덧붙여, 클라이언트는 슬라이드 쇼 프리젠테이션(slide show presentation), 덱스트 문서들, 사진 이미지들, 음악 파일 등과 같은 데이터 역시 전송할 수 있다. 도 2에서 묘사되는 화상 및 음성 스트림과 같이, 데이터 스트림은 어떠한 클라이언트(102)로부터라도 하나이상의 수신 클라이언트(102)로 전송될 수 있다. 도 2는 세개의 클라이언트(102)를 도시하고 있지만, 방 서버(110)에서 유일한 송신기(212)와 수신기(210)을 각각 갖는 여러개의 클라이언트(102)가 있을 수 있다.
도 3은 본 발명의 일 실시예에 따른 방 서버의 블록 다이어그램이다. 방 서버(110)은 수신기(210)과 송신기(212)를 하나 이상 또는 하나도 없는 것을 포함한다. 일 실시예에서, 수신기(210)과 송신기(212)는 소프트웨어에서 실행되고 방 서버(110)은 유일한 수신기(210)과 송신기(212)를 멀티미디어 데이터를 전송하거나 수신하는 각 클라이언트(102)에 대하여 생성한다. 수신기(210)은 시퀀서(sequencer; 306)을 포함할 수 있다. 송신기(212)는 음성리시퀀서(resequencer; 308), 화상 리시퀀서(310), 멀티미디어 음성 큐(queue; 312), 화상 멀티플렉서(314) 및 패킷 인코더(encoder; 316)중 일부 또는 전부를 포함할 수 있다.
각 수신기(210)은 클라이언트(102)로부터 멀티미디어 데이터를 받기 위해 네트워크(100)에 연결된다. 수신기(210)는 하나 이상의 송신기(212)에도 연결된다. 수신기(210)은 클라이언트(102)에서 받은 데이터를 송신기(212)로 이송한다. 송신기(212) 역시 네트워크(100)에 연결되고 수신기(210)에 의해 송신기(212)로 이송된 데이터는 수신하는 클라이언트(102)에 네트워크(100)을 지나 전송된다.
방 서버(110)은 전송하는 클라이언트(102)로부터 멀티미디어 블럭의 형태로 데이터를 수신한다. 일 실시예에서, 멀티미디어 블럭은 시퀀스 넘버(sequence number), 음성 프레임, 화상 프레임, 화상 채널, 수신(receipt), 화상 파라미터(parameter), 음성 파라미터, 화상 엔드 플래그(end flag)와 음성 엔드 플래그 중 일부 또는 전부를 포함하는 데이터 패킷 형태이다. 시퀀스 넘버는 멀티미디어 블럭이 음성이나 화상 데이터를 포함하면 그것들을 리오더(reorder)하기 위해 사용된다. 멀티미디어 블럭이 음성 데이터를 포함하면, 이러한 데이터는 음성 프레임 형식이 될 것이다. 멀티미디어 블럭이 화상 데이터를 포함하면, 이러한 데이터는 화상 프레그먼트(fragment) 형식이 될 것이다. 화상 프레그먼트는 화상 프레임의 시작, 중간, 또는 끝부분을 표시하는 데이터 구조이다. 화상 프레그먼트는 전체 화상 프레임이 되거나 화상 프레그먼트가 앞선 전송동안 분실되었다는 것을 지시하는 특별한 값이 될 수도 있다. 화상 채널은 화상 데이터가 있는 경우,화상 프레그먼트에 할당되는 채널이다. 수신은 다른 부분에의해 수신된 가장 최근의 멀티미디어 블럭의 시퀀스 넘버이다. 수신은 아래의 도 6에서 설명되는 것처럼 대역폭의 할당을 결정하는데 사용된다. 화상 및 음성 파라미터는 새로운 화상 또는 음성 데이터를 전송하기 시작할 때 멀티미디어 블럭의 일부로서 전송된다. 화상 및 음성 엔드 플래그는 음성 또는 화상 전송의 끝을 지시한다. 화상 데이터에 대하여, 파라미터와 엔드 플래그는 새로운 채널에 데이터를 전송하는 것을 시작하는 것 또는 화상 스트림의 끝에서 채널을 닫는 것을 포함한다. 일 실시예에서, 음성 데이터는 화상 데이터보다 높은 우선권을 가질 수 있고, 그리하여 일부 데이터가 전송될 수 없는 경우 음성 데이터의 정확성을 보장하게 된다. 이와 같은 경우, 멀티미디어 블럭은 모든 사용가능한 음성 데이터를 포함하게 된다. 일 실시예에서, 시퀀서(306)은 멀티미디어 블럭을 수신하고 그것을 음성 미디어 블럭과 화상 미디어 블럭으로 분리한다. 시퀀서(306)은 멀티미디어 블럭의 적절한 주문을 보장하기 위해 네트워크(100)을 지나 수신된 멀티미디어 블럭의 시퀀스 넘버 역시 사용한다. 시퀀서(306)은 다음에 기대되는 멀티미디어 블럭을 수신하는 동안 시퀀스 멀티미디어 블럭으로부터 일시적으로 저장한다. 분실된 멀티미디어 블럭이 저장 공간이 소모되기 전에 수신되지 않는다면, 시퀀서(306)은 멀티미디어 블럭이 분실된 것으로 간주한다.
음성 미디어 블럭은 방 서버(110)에 의해 시퀀서(306)으로부터 송신기(212)의 음성 리시퀀서(308)로 이전된다. 시퀀서(306)과 같이, 음성 리시퀀서(308)은 음성 데이터를 음성 미디어 블럭으로부터 적절한 순서, 즉 그것들이 생성된 순서대로놓는다. 일 실시예에서, 음성 리시퀀서(308)은 그것이 패킷 손실을 취급하지 않는다는 점에서 시퀀서(306)과 다르다. 그 결과, 그것은 시퀀스에서 받은 패킷의 더욱 일시적인 저장을 제공한다. 음성 리시퀀서(308)에서, 순서화된(sequenced) 음성 미디어 블럭은 멀티미디어 음성 큐(312)로 보내진다. 멀티미디어 음성 큐(312)는 부가적인 멀티미디어 데이터를 받기 위해 수신하는 클라이언트(102)에서 사용가능한 대역폭이 있을 때까지 음성 미디어 블럭을 버퍼(buffer)한다. 그리고 나서 음성 미디어 블럭은 멀티미디어 블럭을 형성하기 위해 화상 미디어 블럭과 결합되고, 네트워크(100) 또는 다른 정해진 전송 연결을 경유하여 수신 클라이언트(102)에 전송된다.
방 서버(110)은 화상 리시퀀서(310)에 화상 미디어 블럭을 이전한다. 일 실시예에서, 8개의 화상 채널 각각에 대하여 하나의 화상 리시퀀서가 있다. 각 채널은 유일한 표시창에 표시되는 화상 데이터를 클라이언트(102)의 표시(404)에서 취급한다. 그리하여 8개의 화상 채널이 있는 일 실시예에서, 최대 8개 까지 동시에 표시되는 화상 스트림이 있을 수 있다. 화상 미디어 블럭은 화상 멀티플렉서(314)로 이전된다.
화상 멀티플렉서(314)는 각 화상 채널에 대한 화상 큐를 포함한다. 화상 큐는 선입선출(FIFO; first in first out)이고 화상 프레그먼트를 저장한다. 화상 프레그먼트는 전체 화상 프레임, 화상 프레임의 시작, 화상 프레임의 중간, 화상 프레임의 끝 부분 또는 분실된 화상 프레임을 표시하는 특정한 값이 될 수 있다. 일 실시예에서, 특정한 화상 프레그먼트의 순서만이 화상 큐로의 입력이 될 수 있다.예를 들어, '시작' 다음에 '중간'이 뒤따라 오고, '중간' 다음에 '끝'이 뒤따라 올 수는 있지만, '시작' 다음에 다른 '시작'이 뒤따라 올 수는 없다. 화상 큐에서의 프레그먼트의 순서화(sequencing)는 프레그먼트로부터 화상 프레임을 재결합하는 것을 용이하게 한다. 전체 화상 프레임 또는 특정한 바이트의 화상 프레임은 화상 큐로부터 출력될 수 있다. 예를 들어, 화상 큐가 200 바이트의 '시작' 프레그먼트를 저장하고 있다면, 큐는 요구시에 100 바이트의 '시작' 프레그먼트를 출력하고 100 바이트의 '중간' 프레그먼트를 큐에서의 다음 프레그먼트로서 남겨둘 수 있다.
화상 멀티플렉서(314)에 있는 화상 큐는 화상 데이터에 대한 버퍼로 기능한다. 화상 미디어 블럭이 화상 멀티플렉서(314)에 의해 순서대로 수신됨에 따라, 그것들은 화상 큐에서 완전한 화상 프레임으로 결합된다. 전체 화상 프레임이 결합되기만 하면, 수신하는 클라이언트(102)에 연결된 화상 데이터를 받기 위해 사용가능한 대역폭이 없는 경우, 화상 큐는 프레임을 드롭(drop)한다. 대역폭이 수신하는 클라이언트(102)에 연결되어 사용가능해지면, 화상 미디어 블럭은 그것들이 멀티미디어 블럭을 형성하기 위해 음성 미디어 블럭과 결합되는 패킷 인코더(316)로 보내 진다. 멀티미디어 블럭은 네트워크(100) 또는 다른 정해진 전송 연결을 통해 수신하는 클라이언트(102)로 전송된다.
도 4는 본 발명의 일 실시예에 따른 클라이언트(102)의 블록 다이어그램이다. 일 실시예에서, 클라이언트(102)는 수신기(202), 송신기(204), 표시장치(404), 스피커(406), 카메라(408) 및 마이크로폰(410)을 포함한다. 각 클라이언트(102)는 모두 멀티미디어 데이터를 송신하고 수신할 있다.
전송측에서는, 카메라(408)이 화상 이벤트를 생성하고 마이크로폰(410)은 음성 이벤트를 생성한다. 화상 이벤트는 화상 멀티플렉서(314)로 전송된다. 방 서버(110)에 있는 화상 멀티플렉서(314)와 같이, 클라이언트에 있는 화상 멀티플렉서(314)는 다중 화상 신호를 다루는 다중 채널을 가진다. 그리하여, 클라이언트(102)는 다중 화상 카메라를 포함할 수 있다. 또한 방 서버(110)에 있는 화상 멀티플렉서(314)와 같이, 클라이언트(102)에 있는 화상 멀티플렉서(314)는 각 채널에 대하여 화상 큐를 포함하고, 화상 큐는 대역폭 요구를 감소시키기 위해 화상 프레임을 순서화하고 드롭핑하는데 사용된다.
음성 이벤트는 마이크로폰(410)에서 멀티미디어 음성 큐(312)로 전송된다. 대역폭이 데이터를 전송하는데 사용가능해지면, 화상 미디어 블럭과 음성미디어 블럭은 그것들이 결합하여 멀티미디어 블럭을 형성하는 패킷 인코더(316)으로 전송된다. 멀티미디어 블럭은 네트워크(100) 또는 다른 정해진 전송 연결을 통해 수신하는 방 서버(110)로 전송된다.
수신측에서는, 수신기(202)가 방 서버(110)에서 네트워크(100)을 지나 멀티미디어 불럭을 수신한다. 수신기(202)의 시퀀서(306)은 적절한 순서로 멀티미디어 블럭을 배열하고 그것들을 화상 미디어 블럭과 음성 미디어 블럭으로 분리한다. 음성 미디어 블럭은 그것들이 사운드로 변환되는 스피커(406)으로 전송되고, 특별한 실행에 의존하여 아날로그나 디지털 형태로 생성된다. 화상 미디어 블럭은 그것들이 개별 화상 프레임으로 분해되는 화상 디멀티플렉서(demultiplexer;402)로 전송된다. 화상 멀티플렉서(314)와 유사하게, 화상 디멀티플렉서(402)는 화상 프레임ㅇ르 결합하고 드롭핑하는데 사용되는 화상 큐를 포함한다. 화상 프레임은 그것들이 통상적인 방식으로 표시되는 화상 표시장치(404)로 전송된다.
도 5는 본 발명의 일 실시예에 따른 스레딩(threading) 모델의 다이어그램이다. 멀티미디어 전송에 부가하여, 방 서버(110)에 있는 수신기(210)과 송신기(212)는 그것들 각각의 클라이언트(102)로 그리고 각각의 클라이언트로부터 요구를 전송하고 송신한다. 이러한 이벤트는 음성 또는 와상을 특정한 클라이언트에 전송하게 하는 요구, 특정한 클라이언트의 화상을 보게하는 요구, 화상을 보는 것을 방지하게 하는 요구 등을 포함한다. 모더레이터의 위치에 할당된 클라이언트는 모더레이터로 제한되는 요구를 생성한다. 이러한 요구들의 예는 클라이언트를 배출하는 요구, 특정 데이터 형태에 접근하는 특정 클라이언트의 특권을 배치하는 요구, 방을 닫는 요구, 또는 다른 클라이언트가 모더레이터 위치를 추정하도록 만드는 요구들을 포함한다.
도 5에서 도시되는 실시예에서, 요구 처리기(request processor;500)은 입력 이벤트 스레드 풀(input event thread pool;502), 주 스레드 풀(504), 출력 이벤트 스레드 풀(506), 및 요구 큐(request que;508)을 포함한다. 입력 이벤트 스레드 풀(502)는 수신기(210)과 요구 큐(508)에 연결된다. 요구 큐(508)은 입력 이벤트 스레드 풀(502)와 주 스레드 풀(504), 출력 이벤트 스레드 풀에 연결된다. 주 스레드 풀(504)는 요구 큐(508)에 연결된다. 출력 이벤트 스레드 풀(506)은 요구 큐(508)와 송신기(212)에 연결된다. 요구 처리기(500)는 메모리에 저장되는 소프트웨어 코드일 수 있고 컴퓨터 프로세서에 의해 실행되는데, 본 발명은 이러한 실시예에 한정되지 않는다. 일 실시예에서, 메모리와 컴퓨터 프로세서는 방 서버(110)의 구성요소이다. 소프트웨어 명령은 플로피 디스크, CD ROM, 또는 기타 다른 적절한 저장 매체와 같은 컴퓨터로 읽을 수 있는 매체에 저장될 수 있다. 요구 처리기(500) 구성요소의 연결은 소프트웨어 코드에 의해 정의되는 논리적 결합일 수 있다.
수신기(210)은 클라이언트(102)에서 받은 입력 요구를 요구 처리기(500)으로 전송한다. 입력 요구는 입력 이벤트 스레드 풀(502)로 처리를 위해 전송된다. 입력 요구는 오랜 기간의 동작(long term action)이나 즉시적인 응답을 필요로 하는 요구를 포함한다. 즉시적인 응답을 요구하는 입력 요구는 TCP를 경유하여 전송된 내향(incoming) 네트워크 트래픽을 조절하기 위해 생성된다. 오랜 기간의 동작을 요구하는 입력 요구는 연결이 송신 프로토콜로 UDP를 지원하는 경우라면, UDP를 경유하여 전송된 내향 네트워크 트래픽을 조절하기 위해 생성된다.
출력 요구는 처리를 위해 출력 이벤트 스레딩 풀(506)로 전송된다. 출력 요구는 연결이 송신 프로토콜로 UDP를 지원하는 경우라면, UDP를 경유하여 전송된 외향(outbound) 데이터를 조절하기 위해 생성된다. 출력 요구를 처리에서, 출력 이벤트 스레드 풀(506)은 출력 이벤트를 생성한다. 이 이벤트는 하나이상의 송신기(212)를 클라이언트(102)로 외향 데이터를 전송하기 위해 호출한다.
내부 요구(internal request)는 방 서버(110)의 내부에 있는 태스크(task)를 수행하게 위해 사용된다. 내부 요구는 잠재적인 잠금(potential locking)이나 차단 문제(blocking issue)로 인해 입력이나 출력 요구에서 다루기가 적절하지 못한 다른 태스크 뿐 아니라 방 서버(110) 내에 있는 음성 및 화상의 재전송으로 구성된다. 내부 요구는 요구 큐(508)에 저장되고, 스레드가 사용가능해 질때 주 스레드 풀(504)로 디스패치(dispatch)된다.
도 6은 본 발명의 일 실시예에 따른 동적 데이터 전송의 플로우차트이다. 동적 데이터 송신 프로세스는 멀티미디어 데이터의 송, 수신에 있어서의 대기시간을 최소화하는 것을 보장하기 위해 클라이언트(102)와 방 서버(110) 모두에 의해 촉진된다. 클라이언트(102)가 엔트리 서버(106)을 지나 로그인함으로써 회의 세션을 개시할 때, 대역폭 조절기(bandwidth regulator)는 현재의 대역폭과 외향 및 내향 멀티미디어 전송의 대기시간을 결정한다(단계 602). 클라이언트(102)와 방 서버(110)은 각각 대역폭 조절기를 포함하는데, 일 실시예에서는 소프트웨어로 실행된다. 대역폭과 대기시간 정보에 기초하여, 대역폭 조절기는 최적의 패킷 크기와 각각의 연결에 있어서 최적의 패킷 간격을 결정한다(단계 604). 방 서버(110)은 실행기록(journal), 표, 또는 다른 유사한 데이터 구조에 패킷 크기와 송신기(212)에 의해 전송된 다음 패킷의 출발 시간을 기록한다(단계 606). 클라이언트(102)는 다음 패킷과 패킷 크기와 이 패킷의 출발시간 기록을 실행기록(journal), 표, 또는 다른 유사한 데이터 구조에 전송한다(단계 606).
일 실시예에서, 송출기(방 서버(110) 또는 클라이언트(102))은 수신기에 더이상 보내질 데이터가 있는지 여부를 결정한다(단계 608). 더이상 보낼 데이터가 없다면, 프로세스는 끝난다. 전송되어야 할 부가적인 데이터가 있다면, 대역폭 조절기는 내향(inbound) 멀티미디어 스트림에서 수신된 각각의 수신에 대한 실행기록으로부터 기록을 제거함으로써 실행기록을 업데이트한다(단계 610). 방 서버(110)에서, 수신은 수신기(210)에서 받아들여진다. 클라이언트(102)에서, 수신은 수신기(202)에서 받아들여진다. 대역폭 조절기는 또한 분실된 패킷에 대한 실행기록으로부터 기록을 제거한다. 그리고 나서 대역폭 조절기는 실행기록에 있는 각각의 남아있는 엔트리에 대응하는 수신에 대한 예상되는 도착 시간을 결정한다(단계 612). 예상 도착 시간은 패킷의 출발 시간, 대기시간, 바깥쪽 및 안쪽 패킷 크기와 대역폭을 사용함으로써 결정된다.
그리고 나서 클라이언트(102)와 방 서버(110)에 있는 대역폭 조절기는 예상 도착 시간을 어떤 실행기록된 패킷이 연착(overdue)되었는지를 결정하는데 사용한다(단계 614). 연착된 패킷이 있으면, 대역폭 조절기는 송신기(204, 212)가 음성 데이터만 전송하는 모드로 진입한다(단계 616). 음성 데이터는 화상이나 음성과 화상이 결합된 데이터보다 전송 대역폭이 낮은 것을 요구하기 때문에, 전송 대기 시간은 데이터가 음성에만 한정되는 경우에 감소될 것이다. 연착된 패킷이 없다면, 대역폭 조절기는 송신기(204,212)가 음성 및 화상 데이터 모두를 전송하는 모드로 진입한다(단계 618). 음성 및 화상 데이터를 다루기 위한 연결에 충분히 사용가능한 대역폭이 있으면, 연착되는 패킷은 없을 것이고 대역폭 조절기는 음성 및 화상 데이터 모두를 전송하는 것을 허용할 것이다. 이러한 두가지 모델을 스위칭하는 결과 낮은 대역폭 연결에서는 화상 데이터의 간헐적인 전송과 함께 음성 데이터가 연속적으로 전송된다. 음성 모드 또는 음성 및 화상 모드가 진입되게 되면, 클라이언트(102) 또는 방 서버(110)은 다음 패킷을 전송하고 이 패킷의 크기와 출발 시간을기록한다(단계 606).
대역폭 옵티마이저
도 7은 대역폭 옵티마이저(700)의 일 실시예의 블록 다이어그램이다. 대역폭 옵티마이저는 가장 효율적인 전송율을 결정하기 위해 실제 왕복 전송 시간과 패킷 손실율을 모니터링하면서 전송율을 조절한다. 일 실시예에서, 이러한 효율적인 전송율은 네트워크 대기시간이나 패킷 손실의 실질적인 증가없이 데이터가 전송될 수 있는 최대 비율로 정의된다. 실시예의 실행에서, 대역폭 옵티마이저(700)과 아래에서 기술되는 대역폭 옵티마이저(700)의 구성요소는 소프트웨어로 실행된다. UDP 프로토콜이 전송용 프로토콜로 사용되면, 이러한 스프트웨어는 클라이언트(102)와 방 서버(110) 모두에 위치할 수 있다. 대역폭 옵티마이저(700)은 데이터에 있는 백로그의 외향 및 내향 멀티미디어 트래픽을 연속적으로 감시한다. 대역폭 옵티마이저가 백로그를 검출하면, 그것은 패킷 크기와 데이터의 전송 간격을 감소기킴으로써 데이터 전송율을 낮춘다. 대역폭 옵티마이저가 백로그를 검출하지 않는다면, 백로그가 다시 검출될 때까지 데이터 전송율을 점차적으로 증가시킨다. 이러한 과정은 아래에서 더욱 상세하게 기술한다.
대역폭 옵티마이저(700)에 대하 이 실시예에는 연결 분석기(connection analyzer;702), 안정기(stabilizer;704), 모니터(706), 제어기(708), 제한 모듈(restriction module;710) 및 스로틀(throttle;712)가 포함된다. 연결 분석기(702)는 내향 및 외향 최대 전송율과 네트워크 대기시간을 결정한다. 클라이언트(102)는 수동으로 전송율을 정하거나 연결 분석기(702)가 자동으로 입력 및 출력 전송율과 네트워크 대기시간을 검출할 것을 요구 할 수 있다. 예시적인 배열에서, 이러한 세가지 변수들은 멀티미디어 데이터를 송신하거나 수신하기에 앞서 한번 결정된다.
안정기(704)는 내향 및 외향 전송율의 "현재 상한값(current ceiling)"을 조절한다. 전송율의 현재 상한값은 연결 분석기(702)에 의해 결정되는 최대 전송율과는 다른 값이 될 수 있다. 전송율의 현재 상한값은 처음에는 연결 분석기(702)에 의해 결정되는 최대 전송율에 맞춰진다. 안정기(704)는 연결이 미리 정해진 시간 기간에 대해 백로그되는 것으로 보였던 시간의 백분율을 결정함으로써 전송율의 현재 상한값을 조절한다. 예를 들어, 일 실시예에서, 안정기(704)는 연결이 앞선 2초 에 대해 백로그되는 것으로 보였던 시간의 백분율을 결정할 수 있다. 이러한 시간의 백분율이 0이고 전송율의 현재 상한값이 최대 전송율보다 낮다면, 현재 상한값은 주어진 백분율에 의해 증가될 것이다. 예를 들어, 이러한 증가는 2%가 될 수 있다. 전송율이 증가하면, 상기 증가 후 주어진 시간 기간에 대해서는 더이상 증가(또는 감소)가 허용되지 않는다. 일례로, 증가 후 750ms 동안 더이상의 증가나 감소가 허용되지 않을 수 있다. 백로그된 시간의 백분율이 25보다 큰 경우, 현재 상한값은 연결이 백로그되는 것으로 보였던 시간의 백분율에 의해 감소된다. 상한값이 감소하면, 주어진 시간 기간, 예를 들어 2초 동안은 더이상의 감소(또는 증가)가 허용되지 않을 것이다. 이러한 조절은 연결 분석기(702)와 제한 모듈(710)에서의 입력에 기초한다. 일 실시예에서, 제한 모듈(710)은 마지막 2초간의 전송에서 검출된 백로그의 백분율의 지시기를 안정기(704)로 보낸다. 안정기(704)는 연결이 백로그되었던 시간의 백분율을 결정하기 위해 제한 실행 기록(restriction journal)을 본다. 안정기(704)는 제한 모듈(710)에 조절된 상한값을 전송한다.
일 실시예에서, 모니터는 밀리세컨드 단위로 백로그의 양을 결정하고 제어기(708)에 이것을 보낸다. 모니터(706)은 데이터 패킷이 원격 수신기로 전송되는 시간, 전송된 데이터 패킷의 크기, 그러한 원격 수신기에 의해 전송된 수신으로 서버 대기시간에 대한 값 뿐 아니라 데이터 패킷이 실제로 수신되는 시간을 포함하는 수신(receipt), 및 수신을 포함하는 내향 패킷의 크기를 입력으로서 수신한다. 모니터(706)은 언제 데이터 패킷이 수신되었어야 하는지와 데이터 패킷의 수신(receipt)이 언제 수신되었어야 하는지를 계산하기 위해 데이터 패킷이 송신된 시간과 알려진 대기시간 정보를 사용한다. 대기시간의 결정은 아래의 도 9의 설명에서 더욱 상세하게 기술한다. 밀리세컨드 단위로 백로그의 양을 결정하기 위해, 모니터(706)은 데이터 패킷과 데이터 패킷의 수신 모두가 수신되는 것으로 예측되는 시간의 경로를 따라가고 이러한 시간과 그것들이 실제로 수신된 시간을 비교한다. 이러한 정보로부터, 모니터(706)은 실제 전송율을 계산할 수 있다. 모니터(706)은 실제와 예상되는 전송율 사이의 차이를 결정한다. 이러한 백로그 시간은 제어기(708)로 전송된다.
일 실시예에서, 제어기(708)은 모니터(706)에서 받은 백로그가 미리 정해진 문턱값(threshold)을 넘는지 여부를 결정한다. 백로그가 주어진 문턱값을 넘으면, 제어기(708)은 제한 모듈(710)에 양(positive)의 지시기를 보낸다. 그렇지 않으면, 제어기(708)은 제한 모듈(710)에 음(negative)의 지시기를 보낸다. 예를 들어, 문턱값은 30 밀리세컨드 백로그로 설정될 수 있고 제어기(708)은 백로그가 이러한 문턱값을 넘는 경우 양의 지시기를 전송할 것이다.
제한 모듈(710)은 안정기(704)로부터 전송율의 현재 상한값을 수신하고 제어기(708)로부터 지시기를 수신한다. 지시기가 양의 값이면, 제한 모듈은 현재 전송율을 미리 정해진 최소 전송율로 제한한다. 지시기가 음의 값이면, 제한 모듈은 현재 전송율로서 전송율 현재 상한값을 사용한다. 결과로 나오는 현재 전송율은 스로틀(712)로 전송된다. 또한 제한 모듈은 제한 히스토리의 실행기록을 유지한다. 실행 기록은 표 형식이거나 다른 유사한 데이터 구조가 될 수 있다. 이러한 실행 기록은 안정기(704)에 대한 백로그의 백분율을 결정하기 위해 조사된다.
일 실시예에서, 스로틀(712)는 제한 모듈(710)으로부터 전송율을 수신한다. 스로틀(712)는 최적의 패킷 크기와 외향 및 내향 데이터의 패킷 전송 간격을 결정하기 위해 전송율을 사용한다. 전송 프로토콜로 TCP를 사용하는 경우 내향 간격은 언제나 외향 간격과 동일할 것이다. UDP가 전송 프로토콜로 사용되는 경우라면, 내향 간격은 원격 송출기에서 스로틀(712)에 의해 결정된다.
도 8은 대역폭 옵티마이저 공정의 일 실시예의 플로우차트이다. 대역폭 옵티마이저(700)은 최대 현재 대역폭을 결정한다(단계 802). 대역폭 옵티마이저(700)에 있는 모니터(706)은 현재의 백로그를 결정한다(단계 804). 단계 806에서 제어기(708)은 현재 백로그가 미리 정해진 문턱값을 초과하는지 여부를 결정한다. 만약 현재 백로그가 미리 정해진 문턱값을 초과한다면, 제한 모듈(710)은 평균 전송율로 현재 대역폭 값을 제한한다. 현재 백로그가 미리 정해진 문턱값을 초과하지않으면, 안정기(704)는 단계 810에서 백로그가 0보다 더 큰지 여부를 결정한다. 백로그가 0보다 크면, 대역폭 옵티마이저는 현재 대역폭을 유지한다. 백로그가 없으면, 안정기(704)는 미리 정해진 양만큼 현재 대역폭 값을 증가시킨다. 그리고 나서 스로틀은 현재 대역폭 값에 의해 지시되는 전송율에 기초하여 현재 패킷 크기와 전송속도를 조절한다.
도 9는 전송 대기시간을 결정하기 위해 본 발명에 의해 사용되는 대기시간 타임라인(900)의 일 실시예의 묘사도이다. 대역폭 옵티마이저(700)은 데이터가 생성 지점에서 멀티미디어 표시까지 이동할 때 데이터를 추적하기 위해 타임 스탬프(time stamp)를 사용한다. 전송 경로에서 각 데이터 패킷이 특정한 지점(902)를 지나갈 때, 데이터 패킷은 타임 스탬프와 연결된다. 타임 스탬프는 데이터 패킷 그 자체에 부가될 수 있거나 데이터 패킷의 식별자와 연결되어 데이터 패킷과는 다른 위치로 보내어질 수도 있다. 실시예에서, 각 데이터 패킷은 데이터가 송출기에서 검색하여 포착(capture)되는 경우 지점(902A)에서 타임 스탬프와 연결된다. 송출기는 데이터 패킷이 이동하고 있는 방향에 의존하여 클라이언트(102)이거나 서버(104)일 수 있다. 또한 데이터 패킷은 송출기가 수신기에 데이터 패킷을 전송할 때, 지점(902B)에서 타임 스탬프와 연결된다. 송출기와 같이, 수신기도 이경우 클라이언트(102)이거나 서버(104)일 수 있다. 그리고 나서 데이터 패킷은 수신기가 데이터를 받고 수신을 생성할 때, 지점(902C)에서 타임 스탬프와 연결되고, 수신기가 송출기에 수신을 전송할 때 지점(902D)에서 타임 스탬프와 연결되고, 송출기가 수신을 받을 때, 지점(902E)에서 타임 스탬프와 연결되고, 송출기가 데이터 패킷의 대기시간을 결정할 때 지점(902F)에서 타임 스탬프와 연결된다.
지점 902A와 902B 사이와 지점 902E와 902F 사이에서 발생하는 대기시간은 송출기에 기인한다. 지점 902B와 902B 사이와 지점 902D와 902E 사이에서 발생하는 대기시간은 네트워크에 기인한다. 마지막으로, 지점 902C와 902D 사이에서 발생하는 대기시간은 수신기에 기인한다. 그리하여, 데이터 패킷을 전송 스트림을 거쳐 추적함으로써, 전체 전송에 대한 대기시간이 결정될 수 있다. 그리고 나서 모니터(706)은 현재 백로그를 결정하게 위해 이러한 대기 시간 정보를 사용한다.
도 10은 본 발명에 의해 사용되는 대역폭 지시기의 일 실시예 묘사하는 블록 다이어그램이다. 대역폭 지시기는 사용자 인터페이스에 필요한 정보를 얻기 위해 대역폭 옵티마이저와 인터페이스로 접속한다. 사용자 인터페이스는 아래의 도 11의 설명에서 더욱 상세하게 기술한다. 실시예에서, 대역폭 지시기(1000)는 소프트웨어로 실행되고 지시기 모듈(1002)과 대역폭 미터(1004)를 포함한다. 지시기 모듈(1002)은 대역폭 결정 모듈(702), 모니터(706), 및 제한 모듈(710)으로부터 정보를 수신하고 대역폭 미터(1004)로 정보를 출력한다. 대역폭 미터(1004)는 이 정보를 도 11에서 도시되는 사용자 인터페이스를 생성하기 위해 사용한다. 대역폭 결정 모듈(702)은 지시기 모듈(1002)에 내향 및 외향 대역폭의 최대값을 전송한다. 백로그 정보는 실제로 전송된 데이터의 전송율과 백로그를 방지하기 위해 필요한 전송율 모두를 결정하기 위해 사용된다. 제한 모듈(710)은 지시기 모듈(1002)에 외향 제한율을 전송한다. 송출기는 지시기 모듈(1002)에 내향 제한율을 제공한다. 내향 제한율 또는 외향 제한율이 제한 되면, 이들 중 낮은 제한율은 대역폭 미터 사용자 인터페이스에 대한 스케일로 사용된다. 비율이 제한되지 않는다면, 대역폭 결정 모듈로부터 수신된 최대 대역폭은 사용자 인터페이스에 대한 스케일로 사용될 것이다. 지시기 모듈(1002)은 내향 및 외향 값을 대역폭 미터(1004)에 제공하기 위해 비율 정보를 사용한다. 이러한 값들은 최대 전송율, 현재 전송율, 백로그 없이 데이터 플로우를 유지하게 위해 필요한 비율을 포함한다.
도 11은 대역폭 미터(bandwidth meter)의 사용자 인터페이스의 일 실시예를 도시한다. 대역폭 미터 창(1100)은 내향 대역폭 스케일(1102)와 외향 대역폭 스케일(1104)를 포함한다. 각 스케일(1102, 1104)는 수평방향 히스토그램 미터(histogram meter; 1108)과 백분율 값(1106)을 포함한다. 백분율 값(1106)은 수평 히스토그램 미터에서 그래픽으로 표시된다. 각 스케일은 멀티미디어 데이터의 최대 전송율을 표시하고 3 부분을 포함한다. 제 1 부분(1110)은 현재 데이터 전송율을 지시하고, 제 2 부분(1112)은 사용가능한 대역폭의 양을 지시하고, 제 3 부분(1114)은 백로그없이 요구되는 데이터 플로우를 유지하기 위해 필요한 비율의 증가를 지시한다.
도 11a는 외향 및 내향 전송율이 최대값에 가깝다는 것과 백로그가 없다는 것을 지시하고 있는 대역폭 미터를 도시한다. 도 11b는 외향 전송율이 백로그 없이 최대값에 가깝고, 내향 전송율은 요구값보다 약간 낮고 소량의 백로그가 발생하고 있다는 것을 지시하고 있는 대역폭 미터를 도시한다. 도 11c는 내향 전송율이 요구되는 값보다 아주 조금 낮고, 외향 전송율은 요구되는 값보다 매우 낮다는 것을 지시하고 있는 대역폭 미터를 도시한다. 이러한 낮은 전송율은 히스토그램(1108)의부분(1114)에 의해 지시되고 있는 것처럼 다량의 백로그를 유발한다. 도 11d는 내향 및 외향 전송율이 허용가능한 최대 전송율과 비교하여 낮고 백로그가 없다는 것을 지시하고 있는 대역폭 미터를 도시한다.
마이크로폰 큐
도 2에서 도시되는 것과 같이, 하나의 클라이언트(102)만 한번에 음성(216)을 전송한다. 도 2에서, 클라이언트(102A)는 음성(216A)를 전송하고 있는데, 이 음성은 클라이언트(102B)와 클라이언트(102N)에 의해 수신된다. 클라이언트가 음성을 보내는 경우, 상기 클라이언트는 마이크로폰을 구비한다. 마이크로폰 큐는 마이크로폰의 조정(arbitration)을 용이하게 하기 위해 방서버(106)에 의해 실행되는 데이터 구조이다. 큐의 앞에 있는 클라이언트(102)는 마이크로폰을 구비하며 방에서 다른 클라이언트에 의해 들리게 된다. 각 클라이언트(102)는 두가지 요구를 하는 선택권을 갖는다: 이야기하라는 요구와 중단하라는 요구. 이러한 요구들은 상기의 도 5에 대한 설명에서 기재되어 있는 요구 처리기(500)에 의해 취급된다. 클라이언트(102)가 이야기 하라는 요구를 하면, 상기 클라이언트는 마이크로폰 큐의 끝에 위치하게 된다. 마이크로폰을 구비하는 클라이언트가 마이크로폰을 놓으면, 상기 클라이언트는 큐에 있는 다음 클라이언트가 마이크로폰을 구비하는 것을 허용하면서 마이크로폰 큐로부터 제거된다. 클라이언트(102)가 중단하라는 요구를 하면, 상기 클라이언트는 마이크로폰 큐 앞에 위치한다. 그리하여 상기 클라이언트는 마이크로폰을 획득하고, 전에 마이크로폰을 구비하고 있던 클라이언트를 포함한 나머지 클라이언트는 상기 클라이언트의 뒤에서 큐내의 순서를 유지하게 된다.
마이크로폰 큐(1202)에 대한 사용자 인터페이스의 실시예는 두가지 아이콘(icon)을 포함한다. 제 1 아이콘은 마이크로폰을 구비(1204)하는 것을 표시하고 마이크로폰을 구비하고 있는 클라이언트의 이름에 접하여 표시된다. 제 2 아이콘은 마이크로폰 큐에서의 위치(1206)를 표시하고 이야기하라는 요구를 받은 클라이언트(1208)의 이름에 접하여 표시된다. 마이크로폰 큐내에서의 순서는 사용자 인터페이스 내의 클라이언트 리스트의 순서에 의해 표시된다. 그리하여, 마이크로폰을 구비하는 클라이언트의 이름은 리스트의 상단에 위치할 것이고 상기 클라이언트의 이름 옆에 표시되는 제 1 아이콘을 가지게 될 것이다. 마이크로폰에 대해 줄을 서게 되는 다음 클라이언트의 이름은 리스트상에서 다음이 되고 제 2 아이콘이 상기 클라이언트 이름 옆에 표시된다.
인스턴트 메신저 인티그레이션(instant messenger integration)
일 실시예에서, 도 1에서 도시되고 있는 화상 원격 전자 회의 시스템은 라우터(112)에 연결되는 하나 이상의 인스턴트 메신저 서버를 포함한다. 인스턴트 메신저 서버는 인스턴트 미팅 특성을 충족시킨다. 이러한 특성은 도 13에서 도시되고 있는 종래 사용가능한 인스턴트 메신저 프로그램과 유사한 사용자 인터페이스를 사용한다. 실시예에서, 각 클라이언트는 접속 리스트(1300)을 생성할 수 있다. 접속 리스트(1300)는 클라이언트(102)에게 유일하고 클라이언트의 스크린 명칭(1308)에 의해 식별된다. 접속 리스트(1300)을 생성함에 있어서, 클라이언트(1020는 여러개의 다른 클라이언트(102)의 스크린 명칭을 부가할 수 있다. 상기 스크린 명칭들은 리스트(1302)에 표시된다. 각 이름 옆에는 각 클라이언트(102)가 인스턴트 미팅 서비스에 사인하고 들어와 있는지 여부를 지시하는 아이콘(1304)이 있다. 실시예에서, 클라이언트(102)는 하나 이상의 다른 클라이언트(102)가 미팅에 참석하도록 선택함으로써 방을 생성하는 것을 간접적으로 요구한다. 참석하도록 초대된 클라이언트를 선택하기 위해, 요구하는 클라이언트는 스크린 명칭 리스트(1302)에 초대된 클라이언트의 명칭을 환하게 비추게(highlight) 할 수 있다. 그리고 나서 요구하는 클라이언트는 화상 호출 버튼(1306)을 선택하고, 화상 호출 버튼은 인스턴트 메신저 서버가 새로운 방을 생성하도록 신호를 주고 모든 초대된 클라이언트에서 접근을 허용한다. 그리고 나서 요구하는 클라이언트는 요구하는 클라이언트가 새로운 방에 들어가고 서버가 초대된 클라이언트에게 초대(invitation)를 전송하는 시점에서 화상 호출을 시작하는 것을 선택할 수 있다. 초대된 클라이언트가 초대를 수락하면, 상기 클라이언트 역시 새로운 방에 들어온다.
방에 있는 때, 클라이언트(102)는 화상, 음성 및 텍스트를 교환할 수 있다. 수시로, 상기 정보 교환은 미팅에 참석한 클라이언트(102)사이에서 충돌을 생성할 수 있다. 그러면 상기 사용자들은 충돌을 해결하는 것을 기대하여 화상 원격 전자 회의를 운영하는 회사에 불만사항을 등록할 수 있다. 충돌을 해결하기 위해, 회사는 방대한 분량의 조사를 수행하도록 요구되고 충돌이 되는 사건에 수반하는 클라이언트의 진술에만 의존해야 할 수도 있다. 증거 실행기록 특성은 상기와 같은 일이 일어나는 것을 방지한다. 클라이언트(102)가 다른 클라이언트(102)에 대해 불평하기를 원한다면, 불평하는 클라이언트는 증거 실행기록을 활성화할 수 있다. 활성화되면, 증거 실행기록은 가장 최근의 음성, 화상 및 텍스크를 기록한다. 예를 들어, 실행 기록은 5분간의 텍스크, 5초간의 음성 및 10초간의 화상을 캡쳐할 수 있다. 시간 간격은 미리 결정되고 회사의 필요에 기초하여 변할 수 있다.
본 발명의 실시예와 다양한 대체물들이 상세하게 기술되었기 때문에, 당해 기술 분야의 당업자들은 본 명세서의 설명을 가지고 본 발명의 범위내에 다양한 대체물이나 등가물이 존재한다는 것을 인식할 수 있을 것이다. 그러므로 본 발명은 상기에서 기술한 내용에 의해 한정되는 것이 아니라 청구항에 의해서만 한정된다.

Claims (15)

  1. 클라이언트와 서버 사이의 연결에 대한 최대의 내향 및 외향 전송율을 결정하는 단계;
    연결에 대한 전송의 대기 시간값을 결정하는 단계;
    연결에 대한 전송의 백로그값을 결정하는 단계; 및
    백로그값과 대기 시간 값에 대응하는 연결에 대한 내향 및 외향 전송율을 변화시키는 단계를 포함하는, 둘 이상의 클라이언트 사이에서 멀티미디어 전송을 송수신하는 컴퓨터 실행 방법.
  2. 제 1항에 있어서, 상기 멀티미디어 전송은 데이터 패킷을 포함하고 상기 전송율의 변화시키는 단계는,
    데이터 패킷의 크기를 변화시키는 단계; 및
    각 데이터 패킷의 전송 사이의 시간 간격을 변화시키는 단계를 더 포함하는 것을 특징으로 하는 둘 이상의 클라이언트 사이에서 멀티미디어 전송을 송수신하는 컴퓨터 실행 방법.
  3. 제 1항에 있어서, 상기 전송율을 변화시키는 단계가,
    백로그가 없고 전송율이 최대 전송율 미만인 경우 전송율을 증가시키는 단계; 및
    백로그가 미리 정해진 문턱값을 초과하는 경우 전송율을 감소시키는 단계를 더 포함하는 것을 특징으로 하는 둘 이상의 클라이언트 사이에서 멀티미디어 전송을 송수신하는 컴퓨터 실행 방법.
  4. 제 1항에 있어서, 상기 전송은 상기 클라이언트에서 시작되고 상기 서버에서 종료되는 것을 특징으로 하는 둘 이상의 클라이언트 사이에서 멀티미디어 전송을 송수신하는 컴퓨터 실행 방법.
  5. 제 1항에 있어서, 상기 전송은 상기 서버에서 시작되고 상기 클라이언트에서 종료되는 것을 특징으로 하는 둘 이상의 클라이언트 사이에서 멀티미디어 전송을 송수신하는 컴퓨터 실행 방법.
  6. 멀티미디어 전송을 수신하는 수신기;
    가변 전송율로 멀티미디어 전송을 송신하는 송신기; 및
    상기 송신기에 연결되는 대역폭 옵티마이저를 포함하는 둘 이상의 클라이언트 사이에서 멀티미디어 전송을 송수신하는 시스템에 있어서,
    상기 대역폭 옵티마이저는 최대의 내향 및 외향 전송율을 결정하고, 멀티미디어 데이터 전송에서 백로그를 모니터링하고, 백로그에 대응하여 전송율을 변화시키는 것을 특징으로 하는 둘 이상의 클라이언트 사이에서 멀티미디어 전송을 송수신하는 시스템.
  7. 제 6항에 있어서, 상기 멀티미디어 전송은 데이터 패킷을 포함하고 상기 전송율의 변화는,
    데이터 패킷의 크기 변화; 및
    각 데이터 패킷의 전송 사이의 시간 간격 변화를 더 포함하는 것을 특징으로 하는 둘 이상의 클라이언트 사이에서 멀티미디어 전송을 송수신하는 시스템.
  8. 제 6항에 있어서, 상기 전송율의 변화는,
    백로그가 없고 전송율이 최대 전송율 미만인 경우 전송율을 증가시키는 것; 및
    백로그가 미리 정해진 문턱값을 초과하는 경우 전송율을 감소시키는 것을 더 포함하는 것을 특징으로 하는 둘 이상의 클라이언트 사이에서 멀티미디어 전송을 송수신하는 시스템.
  9. 제 6항에 있어서, 상기 전송은 상기 클라이언트에서 시작되고 상기 서버에서 종료되는 것을 특징으로 하는 둘 이상의 클라이언트 사이에서 멀티미디어 전송을 송수신하는 시스템.
  10. 제 6항에 있어서, 상기 전송은 상기 서버에서 시작되고 상기 클라이언트에서 종료되는 것을 특징으로 하는 둘 이상의 클라이언트 사이에서 멀티미디어 전송을송수신하는 시스템.
  11. 둘 이상의 클라이언트 사이에서 멀티미디어 전송을 송수신하는 컴퓨터로 읽을 수 있는 매체에 저장된 컴퓨터 프로그램 제품으로서,
    클라이언트와 서버 사이의 연결에 대한 최대의 내향 및 외향 전송율을 결정하는 연산;
    연결에 대한 전송의 대기 시간값을 결정하는 연산;
    연결에 대한 전송의 백로그값을 결정하는 연산; 및
    백로그값과 대기 시간 값에 대응하는 연결에 대한 내향 및 외향 전송율을 변화시키는 연산을 수행하기 위해 상기 매체에 연결된 처리기를 제어하는 것을 특징으로 하는 둘 이상의 클라이언트 사이에서 멀티미디어 전송을 송수신하는 컴퓨터로 읽을 수 있는 매체에 저장된 컴퓨터 프로그램 제품.
  12. 제 11항에 있어서, 상기 멀티미디어 전송은 데이터 패킷을 포함하고 상기 전송율의 변화시키는 연산은,
    데이터 패킷의 크기를 변화시키는 연산; 및
    각 데이터 패킷의 전송 사이의 시간 간격을 변화시키는 연산을 더 포함하는 것을 특징으로 하는 둘 이상의 클라이언트 사이에서 멀티미디어 전송을 송수신하는 컴퓨터로 읽을 수 있는 매체에 저장된 컴퓨터 프로그램 제품.
  13. 제 11항에 있어서, 상기 전송율을 변화시키는 연산은,
    백로그가 없고 전송율이 최대 전송율 미만인 경우 전송율을 증가시키는 연산; 및
    백로그가 미리 정해진 문턱값을 초과하는 경우 전송율을 감소시키는 연산을 더 포함하는 것을 특징으로 하는 둘 이상의 클라이언트 사이에서 멀티미디어 전송을 송수신하는 컴퓨터로 읽을 수 있는 매체에 저장된 컴퓨터 프로그램 제품.
  14. 제 11항에 있어서, 상기 전송은 상기 클라이언트에서 시작되고 상기 서버에서 종료되는 것을 특징으로 하는 둘 이상의 클라이언트 사이에서 멀티미디어 전송을 송수신하는 컴퓨터로 읽을 수 있는 매체에 저장된 컴퓨터 프로그램 제품.
  15. 제 11항에 있어서, 상기 전송은 상기 서버에서 시작되고 상기 클라이언트에서 종료되는 것을 특징으로 하는 둘 이상의 클라이언트 사이에서 멀티미디어 전송을 송수신하는 컴퓨터로 읽을 수 있는 매체에 저장된 컴퓨터 프로그램 제품.
KR10-2004-7005895A 2001-10-23 2002-10-23 대역폭 옵티마이저를 사용한 그룹 화상 원격 전자 회의시스템 및 방법 KR20040084892A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/045,133 2001-10-23
US10/045,133 US20030041165A1 (en) 2001-08-24 2001-10-23 System and method for group video teleconferencing using a bandwidth optimizer
PCT/US2002/034024 WO2003036499A1 (en) 2001-10-23 2002-10-23 System and method for group video teleconferencing using a bandwidth optimizer

Publications (1)

Publication Number Publication Date
KR20040084892A true KR20040084892A (ko) 2004-10-06

Family

ID=21936163

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2004-7005895A KR20040084892A (ko) 2001-10-23 2002-10-23 대역폭 옵티마이저를 사용한 그룹 화상 원격 전자 회의시스템 및 방법

Country Status (6)

Country Link
US (1) US20030041165A1 (ko)
EP (1) EP1444594A1 (ko)
JP (1) JP2005507200A (ko)
KR (1) KR20040084892A (ko)
CA (1) CA2464505A1 (ko)
WO (1) WO2003036499A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102279356B1 (ko) * 2020-10-16 2021-07-20 (주)아크로비젼 케이블 기반 개폐식 지붕의 모니터링을 위한 영상 전송 방법 및 장치

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7058817B1 (en) 1999-07-02 2006-06-06 The Chase Manhattan Bank System and method for single sign on process for websites with multiple applications and services
US8571975B1 (en) 1999-11-24 2013-10-29 Jpmorgan Chase Bank, N.A. System and method for sending money via E-mail over the internet
US10185936B2 (en) 2000-06-22 2019-01-22 Jpmorgan Chase Bank, N.A. Method and system for processing internet payments
US8335855B2 (en) * 2001-09-19 2012-12-18 Jpmorgan Chase Bank, N.A. System and method for portal infrastructure tracking
US7103556B2 (en) * 2000-11-02 2006-09-05 Jpmorgan Chase Bank, N.A. System and method for aggregate portfolio client support
US8849716B1 (en) 2001-04-20 2014-09-30 Jpmorgan Chase Bank, N.A. System and method for preventing identity theft or misuse by restricting access
WO2002099598A2 (en) 2001-06-07 2002-12-12 First Usa Bank, N.A. System and method for rapid updating of credit information
US7266839B2 (en) 2001-07-12 2007-09-04 J P Morgan Chase Bank System and method for providing discriminated content to network users
US7103576B2 (en) * 2001-09-21 2006-09-05 First Usa Bank, Na System for providing cardless payment
US7574597B1 (en) 2001-10-19 2009-08-11 Bbn Technologies Corp. Encoding of signals to facilitate traffic analysis
AU2002363138A1 (en) * 2001-11-01 2003-05-12 First Usa Bank, N.A. System and method for establishing or modifying an account with user selectable terms
US7987501B2 (en) 2001-12-04 2011-07-26 Jpmorgan Chase Bank, N.A. System and method for single session sign-on
US20180165441A1 (en) 2002-03-25 2018-06-14 Glenn Cobourn Everhart Systems and methods for multifactor authentication
US7376235B2 (en) * 2002-04-30 2008-05-20 Microsoft Corporation Methods and systems for frustrating statistical attacks by injecting pseudo data into a data system
KR20030095995A (ko) * 2002-06-14 2003-12-24 마츠시타 덴끼 산교 가부시키가이샤 미디어 전송방법 및 그 송신장치 및 수신장치
US7058660B2 (en) * 2002-10-02 2006-06-06 Bank One Corporation System and method for network-based project management
US7353253B1 (en) * 2002-10-07 2008-04-01 Webex Communicatons, Inc. Peer-to-peer messaging system
US8301493B2 (en) 2002-11-05 2012-10-30 Jpmorgan Chase Bank, N.A. System and method for providing incentives to consumers to share information
US7873706B2 (en) * 2003-03-19 2011-01-18 Cgi Communications, Inc. System and method for seamlessly providing video content to client systems over a network
US9432463B2 (en) * 2003-03-25 2016-08-30 Sandvine Incorporated Ulc System and method for diverting established communication sessions on the basis of content
US7580976B2 (en) * 2003-04-18 2009-08-25 Microsoft Corporation Identifying an appropriate connection point for connecting to an application layer session
JP4183586B2 (ja) * 2003-09-12 2008-11-19 三洋電機株式会社 映像表示装置
US20050091395A1 (en) * 2003-10-08 2005-04-28 Jason Harris Method and system for transferring data files
US8359349B2 (en) * 2004-03-18 2013-01-22 Nokia Corporation System and associated terminal, method and computer program product for uploading content
US7720983B2 (en) * 2004-05-03 2010-05-18 Microsoft Corporation Fast startup for streaming media
US20060055771A1 (en) * 2004-08-24 2006-03-16 Kies Jonathan K System and method for optimizing audio and video data transmission in a wireless system
US20060190723A1 (en) * 2005-02-18 2006-08-24 Jp Morgan Chase Bank Payload layer security for file transfer
US7500010B2 (en) * 2005-04-07 2009-03-03 Jeffrey Paul Harrang Adaptive file delivery system and method
US8583926B1 (en) 2005-09-19 2013-11-12 Jpmorgan Chase Bank, N.A. System and method for anti-phishing authentication
US20070127521A1 (en) * 2005-12-02 2007-06-07 The Boeing Company Interface between network data bus application and avionics data bus
US7746374B2 (en) * 2006-01-25 2010-06-29 Seiko Epson Corporation Videoconference data relay server
US8140618B2 (en) * 2006-05-04 2012-03-20 Citrix Online Llc Methods and systems for bandwidth adaptive N-to-N communication in a distributed system
EP2039107A1 (en) * 2006-06-29 2009-03-25 Telecom Italia S.p.A. Method and apparatus for improving bandwith exploitation in real-time audio/video communications
US8793490B1 (en) 2006-07-14 2014-07-29 Jpmorgan Chase Bank, N.A. Systems and methods for multifactor authentication
US9275372B2 (en) * 2006-10-03 2016-03-01 International Business Machines Corporation Controlling active and passive participation in a thread of conversation
US8473735B1 (en) 2007-05-17 2013-06-25 Jpmorgan Chase Systems and methods for managing digital certificates
US8180029B2 (en) * 2007-06-28 2012-05-15 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US9154333B2 (en) * 2007-12-26 2015-10-06 International Business Machines Corporation Balanced management of scalability and server loadability for internet protocol (IP) audio conferencing based upon monitored resource consumption
US8321682B1 (en) 2008-01-24 2012-11-27 Jpmorgan Chase Bank, N.A. System and method for generating and managing administrator passwords
DE102008013349B4 (de) * 2008-03-10 2017-07-06 Hytera Mobilfunk Gmbh Kommunikationsverfahren und Kommunikationssystem mit Paketabstands- und Paketlängen-Regelung
US8516121B1 (en) * 2008-06-30 2013-08-20 Symantec Corporation Method and apparatus for optimizing computer network usage to prevent congestion
US9608826B2 (en) 2009-06-29 2017-03-28 Jpmorgan Chase Bank, N.A. System and method for partner key management
MX2012009363A (es) * 2010-02-12 2013-02-11 Lightspeed Vt Llc Sistema y metodo para aprovisionamiento de presentacion remota.
US9043509B2 (en) * 2011-01-14 2015-05-26 Broadcom Corporation Method and system for low-latency networking
US9179169B2 (en) * 2012-03-14 2015-11-03 Imagine Communications Corp. Adaptive media delivery
US9515942B2 (en) * 2012-03-15 2016-12-06 Intel Corporation Method and system for access point congestion detection and reduction
US9419957B1 (en) 2013-03-15 2016-08-16 Jpmorgan Chase Bank, N.A. Confidence-based authentication
EP3032807B1 (en) * 2013-08-08 2019-12-18 Ricoh Company, Ltd. Program, communication quality estimation method, information processing apparatus, communication quality estimation system, and storage medium
US9344218B1 (en) 2013-08-19 2016-05-17 Zoom Video Communications, Inc. Error resilience for interactive real-time multimedia applications
US9621636B1 (en) 2013-09-10 2017-04-11 Google Inc. Distributed processing system throttling
US10148726B1 (en) 2014-01-24 2018-12-04 Jpmorgan Chase Bank, N.A. Initiating operating system commands based on browser cookies
US9794078B2 (en) * 2014-03-05 2017-10-17 Ricoh Company, Ltd. Fairly adding documents to a collaborative session
DE102014115188A1 (de) * 2014-10-17 2016-04-21 Visocon Gmbh Verfahren zur Anpassung eines zu übertragenden Datenstroms an eine Ressourcenauslastung
FR3079704A1 (fr) * 2018-03-29 2019-10-04 Orange Communication par video conference
US10917323B2 (en) * 2018-10-31 2021-02-09 Nutanix, Inc. System and method for managing a remote office branch office location in a virtualized environment

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5822540A (en) * 1995-07-19 1998-10-13 Fujitsu Network Communications, Inc. Method and apparatus for discarding frames in a communications device
US6185121B1 (en) * 1998-02-26 2001-02-06 Lucent Technologies Inc. Access structure for high density read only memory
DE19809385A1 (de) * 1998-03-05 1999-09-09 Bosch Gmbh Robert Schaltregler
US6590885B1 (en) * 1998-07-10 2003-07-08 Malibu Networks, Inc. IP-flow characterization in a wireless point to multi-point (PTMP) transmission system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102279356B1 (ko) * 2020-10-16 2021-07-20 (주)아크로비젼 케이블 기반 개폐식 지붕의 모니터링을 위한 영상 전송 방법 및 장치

Also Published As

Publication number Publication date
WO2003036499A1 (en) 2003-05-01
EP1444594A1 (en) 2004-08-11
US20030041165A1 (en) 2003-02-27
CA2464505A1 (en) 2003-05-01
JP2005507200A (ja) 2005-03-10

Similar Documents

Publication Publication Date Title
KR20040084892A (ko) 대역폭 옵티마이저를 사용한 그룹 화상 원격 전자 회의시스템 및 방법
US7257641B1 (en) Multipoint processing unit
US8144632B1 (en) Methods, systems and program products for efficient communications during data sharing event
US6453336B1 (en) Video conferencing with adaptive client-controlled resource utilization
JP4566177B2 (ja) 電気通信システム
EP1654873B1 (en) Distributed mcu
EP2062395B1 (en) Method and system for optimizing a jitter buffer
US9661209B2 (en) Remote controlled studio camera system
JP5129989B2 (ja) 会議レイアウト制御及び制御プロトコル
US11363082B2 (en) Video conference telepresence controller
US20010009014A1 (en) Facilitating real-time, multi-point communications over the internet
WO2008039077A1 (en) Method and device for providing scalability in streaming/archiving systems for conference calls
US20020133611A1 (en) System and method for facilitating real-time, multi-point communications over an electronic network
EP2675132B1 (en) System for dynamic stream management in audio video bridged networks
US20050010638A1 (en) Videoconference application user interface with messaging system
JP2008210381A (ja) サーバ呼び出しタイムスケジューリングテレビ会議
JP2008042889A (ja) インテリジェント音声制限方法、システム及びノード
EP1131935B1 (en) Announced session control
JP2008048383A (ja) 会議コールに独立したマルチメディアソースを結び付ける方法
JP2006229416A (ja) 多地点会議システム
CN110445723A (zh) 一种网络数据调度方法及边缘节点
CN105122791A (zh) 用于优化大规模视频会议的方法和设备
AU2002363069A1 (en) System and method for group video teleconferencing using a bandwidth optimizer
EP1461708A1 (en) System and method for group video teleconferencing with variable bandwidth
Loh et al. Experience with implementation of multi-party video-conferencing application over packet networks

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid