KR20040103441A - 미디어 구성자 제어 모듈, 미디어 세션 확립 방법, 미디어세션 확립 시스템, 미디어 중계기 제어 방법 및 컴퓨터판독 가능 매체 - Google Patents

미디어 구성자 제어 모듈, 미디어 세션 확립 방법, 미디어세션 확립 시스템, 미디어 중계기 제어 방법 및 컴퓨터판독 가능 매체 Download PDF

Info

Publication number
KR20040103441A
KR20040103441A KR1020040038479A KR20040038479A KR20040103441A KR 20040103441 A KR20040103441 A KR 20040103441A KR 1020040038479 A KR1020040038479 A KR 1020040038479A KR 20040038479 A KR20040038479 A KR 20040038479A KR 20040103441 A KR20040103441 A KR 20040103441A
Authority
KR
South Korea
Prior art keywords
media
session
address
path
control element
Prior art date
Application number
KR1020040038479A
Other languages
English (en)
Other versions
KR101066757B1 (ko
Inventor
일리아 클레이맨
알렉산드루 가브릴레스큐
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20040103441A publication Critical patent/KR20040103441A/ko
Application granted granted Critical
Publication of KR101066757B1 publication Critical patent/KR101066757B1/ko

Links

Classifications

    • 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/10Architectures or entities
    • H04L65/102Gateways
    • H04L65/1043Gateway controllers, e.g. media gateway control protocol [MGCP] controllers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2517Translation of Internet protocol [IP] addresses using port numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2582NAT traversal through control of the NAT server, e.g. using universal plug and play [UPnP]
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/765Media network packet handling intermediate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/142Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/564Enhancement of application control based on intercepted application data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/28Timers or timing mechanisms used in protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2585NAT traversal through application level gateway [ALG]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Security & Cryptography (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 발명은 네트워크 경계를 넘는(crossing) 미디어 스트림(media stream)을 위한 미디어 세션(media session)을 확립하는 장치 및 방법을 소개한다. 상기 시스템은 미디어 구성자 제어 모듈(media configurator control module)에 의해 제어되는 미디어 중계기(media relay)를 포함한다. 미디어 중계기는 미디어 경로(media path:네트워크 경계의 포트를 포함함)를 예약하고, 그 미디어 경로를 열고 닫고, 그 미디어 경로에 대한 정보를 제공한다. 미디어 구성자(media configurator)는 미디어 구성자 제어 모듈 및 미디어 중계기와 통신하는 데 사용된다. 제어 모듈(control module)은 멀티미디어 세션 이벤트(multimedia session event)를 제어하는 이벤트 핸들러(event handler), 미디어 세션의 어드레스 식별자가 전용 어드레스 영역(private address space)에 속해 있는지 여부를 결정하는 로컬 어드레스 리졸버(local address resolver), 그리고 미디어 경로를 설정하는 데 사용되는 제어 요소(control element)를 보유한다. 제어 요소는 미디어 중계기를 위한 자원들을 관리한다. 상태 리프레쉬 타이머(state-refresh timer)는 프록시 엔진(proxy engine)에 의해 제어되는 모든 미디어 중계기들과 제어 요소들 간의 상태 일관성(state consistency)을 유지하는 데 사용된다.

Description

미디어 구성자 제어 모듈, 미디어 세션 확립 방법, 미디어 세션 확립 시스템, 미디어 중계기 제어 방법 및 컴퓨터 판독 가능 매체{CONTROLLED RELAY OF MEDIA STREAMS ACROSS NETWORK PERIMETERS}
본 발명은 일반적으로 전자 데이터 처리에 관한 것으로, 보다 구체적으로는, 네트워크 경계를 넘는 스트리밍 데이터의 흐름 처리에 관한 것이다.
디지털 기반의 멀티미디어, 디지털 장치 상에서 볼 수 있는 디지털 포맷의 비디오 및 오디오의 조합은 그 용량이 급격히 증가하고 있으며 또한 빠르게 확산되고 있다. 오늘날 제조되는 거의 모든 새 퍼스널 컴퓨터는 멀티미디어의 일부 형태를 포함한다. 카메라, 비디오 레코더, 전화, 텔레비젼 등과 같은 디지털 제품의 판매는 꾸준히 증가하고 있다. 멀티미디어도 또한 인터넷이 꾸준히, 빠르게 계속성장함에 따라 인터넷 분야에서 점점 널리 퍼지고 있다. 이와 같은 성장과 함께 이러한 컴퓨터 장치 사용자들의 성능 기대치도 높아지고 있다. 이러한 증가하는 사용자 기대치는 하드웨어 용량 뿐만 아니라, 데이터 그 자체의 처리 용량에까지 미치고 있다.
멀티미디어 애플리케이션은 이러한 증가하는 기대치를 만족시키기 위해 스트리밍(streaming)으로 알려진 기술을 개발하여왔다. 스트리밍은 데이터가 안정적이고 계속되는 스트림으로 처리될 수 있도록 데이터를 전송한다. 이것은 대용량 멀티미디어 파일 그리고 오디오 및 비디오 데이터와 같은 실시간 미디어의 필수 사항이라고 할 수 있는, 즉 전체 파일이 전송되기 전에 데이터를 디스플레이 할 수 있고 들을 수 있다는 이점을 제공한다.
일반적으로 스트리밍 및 미디어 전송이 지닌 하나의 문제점은 네트워크 경계를 넘어 미디어를 통과시키는 것이다. 네트워크 경계는 원치 않는 네트워크의 침해를 막기 위해 사용된다. 일반적으로 네트워크 경계는, 하나의 네트워크 및/또는 인터페이스를 다른 네트워크와 물리적으로 종료시키고, 한 네트워크의 한 논리 어드레스 영역을 종료하고 다른 네트워크에 있는 다른 논리 어드레스 영역을 시작하는 하나의 엔티티(entity)로 정의된다. 업계는 이 문제점에 응답하여 미디어를 전송하는 신호 프로토콜을 개발했다. 미디어 전송에 사용된 많은 신호 프로토콜들은 주소 정보가 잘 알려진 제1 채널 상에서 신호 및 세션 개시(session initiation)를 구현하고, 하나 이상의 보조 채널 상에서 미디어 전송 개시를 준비한다. 보조 채널상의 주소 정보는 고정되지 않고 동적으로 할당된다. 보조 채널에 포트가 할당되어 있는 시간이 너무나 짧기 때문에, 네트워크 경계가 안정적으로 구성될 수 없고 따라서 미디어도 그 네트워크 경계를 지나 통과할 수 없다. 그 결과, 경계에서 "구멍들(holes)"의 개폐를 조절하는 것이 구현되어야만 한다. 포인트-투-포인트 세션(point-to-point session)에서, 미디어는 양 끝점 어느 쪽에서 시작될 수 있다. 양 끝점(endpoint)이 망 형태상으로(topologically) 네트워크 경계의 다른 쪽에 위치하고 있을 경우, 두 양 끝점은 다른 끝점으로 미디어가 지나갈 수 있도록 하나의 솔루션으로 개별적으로 방화벽을 설치할 수도 있다.
업계는 이 문제점에 응답하였다. 대부분의 멀티미디어는 일반적으로 IP 프로토콜을 사용하는 공중 네트워크(public network) 상에서 전송되었다. IP 프로토콜 상에서 전송된 멀티미디어 데이터는 프로토콜 메세지에 IP 어드레스 및 포트를 내장한다. 개발된 하나의 솔루션은 애플리케이션 레벨 게이트웨이(application level gateway, 이하 "ALG"라고 함) 방화벽을 사용하는 것이다. ALG 방화벽은 애플리케이션 프로토콜 흐름을 검사하고 보안 정책(security policies)을 준수하는 메세지만 지나가도록 허용하는 방화벽을 인식하는 애플리케이션이다. 이러한 유형의 방화벽은 어드레스 정보(예를 들어, IP 어드레스 및 포트)를 추출하고, 변경하고, 사용하기 위해 프로토콜에 대한 지식을 필요로 한다. ALG 방화벽은 특정 프로토콜에 대해 프로토콜을 인식할 수 있도록 설계될 수 있다. 그러나, 이러한 ALG 방화벽은 애플리케이션 프로토콜 구문을 분석하고(parse)하고 이해하기 위해 추가적인 로직을 필요로 하기 때문에 네트워크에 잠재적인 병목 현상(bottleneck)을 발생시킨다.
게다가, 멀티미디어 보안 계획이 구현된 시스템에서는 ALG 방화벽이 작동하지 않을 수 있다. 예를 들어, 만약 프로토콜 메세지가 암호화되고, ALG 방화벽이 필수 키(necessary key) 및 알고리즘(algorithm)을 소유하는 데에 있어 신뢰할 만한 엔티티가 아니라면, ALG 방화벽은 라우팅, 보안 등을 결정할 수 없을 것이고 결국 실패할 것이다. 뿐만 아니라, 오늘날 네트워크에 배치된 대부분의 방화벽들은 멀티미디어 프로토콜을 인식하지 못한다. 이러한 방화벽들은 프로토콜을 인식할 수 있도록 업그레이드 되어야 할 것이고, 이는 엄청나게 비쌀 것이다. 게다가, 실제 네트워크의 운영 환경에서는, 일련의 방화벽 및 NAT 장치들이 보통 멀티미디어 스트림의 통과 경로(traversal path)에 따라 배치된다. 멀티미디어의 통과를 보장하기 위해, 각 방화벽은 프로토콜 인식 ALG 방화벽을 필요로 한다. 이것은 이미 배치된 방화벽들에 대한 새로운 투자 및 제어 변화를 의미한다. 프로토콜의 새 버전이 자주 출시되기 때문에, ALG 방화벽은 이러한 새 프로토콜 버젼을 지원하도록 자주 업그레이드되어야 한다. 이러한 제어 변화 및 빈번한 업데이트는 보안에 틈이 생기도록 하고 네트워크를 공격에 노출되도록 할 수 있다.
본 발명은 네트워크 경계를 넘는 미디어 스트림을 위한 미디어 세션을 확립하는 시스템 및 방법을 소개한다. 본 시스템은 미디어 중계기를 제어하는 미디어 구성자 제어 모듈(media configurator control module)을 포함한다. 미디어 중계기는 미디어 경로(네트워크 경계의 포트를 포함함)를 예약하고, 미디어 경로와 포트를 열고, 미디어 경로를 닫고, 미디어 경로에 대한 정보를 제공한다. 미디어 구성자(media configurator)는 중재 구성자 제어 모듈(mediator configurator control module)의 하나의 모듈 부분으로서, 미디어 구성자 제어 모듈 및 미디어 중계기와 통신하는 데 사용된다.
미디어 구성자 제어 모듈은 이벤트 핸들러를 보유하고, 이 이벤트 핸들러는 프록시 엔진으로부터 수신된 멀티미디어 세션 이벤트를 처리한다. 로컬 어드레스 리졸버는 이벤트 핸들러와 통신하며, 미디어 세션의 어드레스 식별자가 전용 어드레스 영역(private address space)에 속해 있는지 여부를 결정하고, 만약 어드레스 식별자가 전용 어드레스 영역에 속해 있을 경우 제어 요소(control element) 또는 제어 요소들의 제어 그룹이 어드레스 식별자의 한 끝과의 미디어 경로를 설정하는데 이용되도록 결정하는 데 사용된다. 제어 요소는 이벤트 핸들러와 통신하는 객체이다. 제어 요소는 미디어 중계기를 위해 자원들을 관리한다.
미디어 구성자 제어 모듈은 또한 상태 리프레쉬 타이머를 보유하고 있다. 상태 리프레쉬 타이머는 정해진 기간보다 더 오랫동안 상태 일관성 검사(state consistency check)를 수행하지 못한 제어 요소를 찾아내는 데 사용된다. 상태 일관성 검사는 미디어 중계기와 미디어 중계기와 관련된 제어 요소간의 상태 일관성을 유지하는데 사용된다. 이런 검사를 수행하는 이유는 미디어 중계기가 미디어 구성자 제어 모듈이 수행되고 있는 기계와 물리적으로 별도인 기계에서 수행될 수 있기 때문이다. 상태 일관성 검사는 정해진 기간보다 더 오랫동안 상태 일관성 검사를 수행하지 못한 각 제어 요소들에 대해 개시된다. 이 상태 일관성 검사는 제어 요소 잠금(locking), 그 제어 요소가 관리하는 미디어 중계기에 의해 설정된 모든 어드레스 매핑 상에서 데이터 검색, 그리고 제어 요소에 의해 관리되는 미디어 중계기 및 제어 요소가 설정된 어드레스 매핑 상에서 동일한 정보를 가지고 있는지 여부를 결정하는 것을 포함한다. 만약 미디어 중계기에 의해 설정된 매핑과 제어 요소에 의해 매핑된 매핑 정보 간에 불일치가 있을 경우, 제어 요소에 의해 매핑되었지만 미디어 중계기의 현재 매핑에 있지 않은 매핑과 관련된 모든 포트는 해제되고, 미디어 중계기에는 있지만 제어 요소 매핑에 있지 않은 매핑은 잠정적으로 예약된다. 그 후에 제어 요소는 잠금이 풀린다.
멀티미디어 세션 이벤트는 세션 개시 메세지(Session Initiated Message), 세션 확인 메세지(Session Confirmed Message), 세션 확립 메세지(Session Established Message), 세션 변경 메세지(Session Changed Message), 세션 종료 메세지(Session Terminated Message)를 포함한다. 이벤트 핸들러는 세션 개시 메세지에 응답하여, 로컬 어드레스 리졸버를 통해 미디어 스트림이 전용 어드레스 영역과 공용 어드레스 영역 사이의 경계를 넘는지 여부를 결정하고, 만약 미디어 스트림이 그 경계를 넘는다면 미디어 스트림에 대해 미디어 경로를 예약하고, 미디어 구성자가 적어도 하나의 포트를 포함한 미디어 경로를 예약할 수 있도록 적어도 하나의 제어 요소를 통해 미디어 구성자로 미디어 경로 예약 요청을 전송하고, 만약 예약 요청이 성공했다면 임시 저장 장소에 예약된 포트에 대해 만들어진 예약을 저장하고, 그 스트림용으로 알려진 어드레스 식별자를 예약 어드레스 식별자로 바꾸기 위해 세션 설명을 변경하고, 변경된 세션 설명을 프록시 엔진으로 전송한다.
이벤트 핸들러는 세션 확인 메세지 수신에 응답하여, 미디어 경로에 대해 예약 공용 어드레스 매개변수를 검색하고, 미디어 구성자로 예약 공용 어드레스 매개변수로 미디어 경로 열기 요청을 전송하고, 만약 미디어 경로 열기 요청이 성공했다면 미디어 경로의 열린 경로를 나타내는 세션 설명을 변경하고, 변경된 세션 설명을 프록시 엔진으로 전송한다.
이벤트 핸들러는 세션 종료 메세지 수신에 응답하여, 미디어 세션을 위해 열려 있는 미디어 경로의 어드레스 매개변수들을 획득하고, 이 어드레스 매개변수로 미디어 경로 닫기 요청을 미디어 구성자로 전송하고, 열려 있는 미디어 경로를 닫은 후 종료 세션 메세지를 프록시 엔진으로 전송한다.
미디어 중계기는 미디어 구성자로 전송된 명령어들로 제어된다. 그 명령어들은 애플리케이션 프로그래밍 인터페이스(application programming interface, 이하 "API"라고 함)을 형성하고, 미디어 구성자를 초기화하는 초기화 명령어를 포함하고, 미디어 중계기의 네트워크 네임, 특정 미디어 경로를 예약하는 reservemediapath 명령어, 특정 미디어 경로를 여는 openmediapath 명령어, 특정 미디어 경로를 닫는 closemediapath 명령어를 제공한다. 또한, closeallmediapaths 명령어는 미디어 구성자에 의해 생성된 모든 미디어 경로를 닫는 데 사용되고, querymediapathinformation 명령어는 미디어 경로에 대한 정보를 획득하는 데 사용된다.
본 발명의 추가적인 특징 및 이점은 첨부된 도면을 참조하여 진행되는 이하의 도시적인 실시예의 상세한 설명을 통해 명백해 질 것이다.
첨부된 청구범위가 본 발명의 특징을 자세히 설명하며, 그 목적 및 이점과더불어 본 발명은 이하의 도면들을 참조하여 이하의 상세한 설명으로부터 잘 이해될 것이다.
도 1은 본 발명이 구현될 수 있는 예시적인 컴퓨터 시스템을 일반적으로 도시한 블록도.
도 2는 본 발명이 동작할 수 있는 예시적인 환경을 일반적으로 도시한 블록도.
도 3a는 본 발명의 내용에 따라 전용 어드레스 영역에서 사용자에 의해 개시된 미디어 세션을 확립하는 단계들을 일반적으로 도시한 블록도.
도 3b는 본 발명의 내용에 따라 공용 어드레스 영역에서 사용자에 의해 개시된 미디어 세션을 확립하는 단계들을 일반적으로 도시한 블록도.
도 4는 본 발명의 내용에 따라 미디어 세션의 클라이언트가 다른 전용 어드레스 영역에 있을 때 미디어 세션을 확립하는 단계를 일반적으로 도시한 블록도.
도 5는 본 발명의 컴포넌트가 실시간 통신 서버의 컴포넌트와 어떻게 인터페이스하는지를 도시한 블록도.
도 6은 본 발명의 미디어 중계기 제어 모듈의 블록도.
도 7은 미디어 세션을 개시하기 위해 미디어 중계기 제어 모듈이 수행하는단계를 도시한 흐름도.
도 8은 미디어 세션을 열기 위해 미디어 중계기 제어 모듈이 수행하는 단계를 도시한 흐름도.
도 9는 미디어 세션을 종료하기 위해 미디어 중계기 제어 모듈이 수행하는 단계를 도시한 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
110: 퍼스널 컴퓨터
120: 처리 장치
130: 시스템 메모리
121: 시스템 버스
본 발명은 오디오 및 비디오 데이터와 같은 실시간 멀티미디어를 한방향 또는 양방향으로 네트워크 경계를 지나 통과시키는 시스템 및 방법을 소개한다. 본 발명의 미디어 중계기는 미디어 경로에 있는 방화벽을 동적으로 구성하여, 미디어가 한방향 또는 양방향으로 흐를 수 있도록 하고, 그 미디어가 흐르고 있는 보조 채널의 헤더에 내장된 어드레스 정보(예를 들어, UDP/IP, TCP/IP 등)를 해석한다. 미디어 중계기는 방화벽을 대신하여 포트 및 IP 어드레스의 영역을 관리한다. 미디어 제어 모듈은 미디어 중계기와 실시간 통신(real time communication, 이하 "RTC"라고 함) 서버의 서버 엔진 또는 프록시 서버가 수행되고 있는 서버 운영 체제간의 인터페이스로 사용된다. 이것은 이미 방화벽이 설치되어 있는 시스템으로 하여금 신호 프로토콜이 변경되거나 새로운 프로토콜이 개발됨에 따라 계속해서 그 방화벽들을 사용할 수 있도록 해 준다. 한 예로서, 서버 엔진은 마이크로소프트(Microsoft)사의 "Microsoft? Real-Time Communication Server 2003"의 서버 엔진일 수도 있다.
도면에서, 유사한 참조 번호는 유사한 구성요소를 나타내고, 본 발명은 적절한 컴퓨팅 환경에서 구현된 것으로 도시된다. 필수는 아니지만, 본 발명은 퍼스날 컴퓨터에 의해 수행되는 프로그램 모듈과 같은 컴퓨터 수행가능 명령어의 일반적인 컨텍스트로 설명될 것이다. 일반적으로 프로그램 모듈은 특정 태스크를 수행하고특정 추상 데이터 타입을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 또한 당업자들은 본 발명이 핸드헬드 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 또는 프로그램 가능한 소비자 전자제품, 네트워크 PC, 미니 컴퓨터, 메인프레임 컴퓨터 등을 포함한 다른 컴퓨터 시스템 구성에서도 수행되어 질 수 있다는 것을 알 것이다. 본 발명은 또한 커뮤니케이션 네트워크를 통해 연결된 원격 처리 장치에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서도 수행되어 질 수 있다. 분산 컴퓨팅 환경에서 프로그램 모듈은 로컬(local) 또는 원격 메모리 기억 장치(remote storage device) 둘 다에 위치할 수도 있다.
도 1은 본 발명이 구현될 수 있는 적절한 컴퓨팅 시스템 환경(100)의 예를 도시하고 있다. 컴퓨팅 시스템 환경(100)은 단지 적절한 컴퓨팅 환경의 한 가지 예일 뿐이며, 본 발명의 사용 범위 또는 기능성에 어떤 제한을 두는 것은 아니다. 컴퓨팅 환경(100)이 예시적인 운영 환경(100)에 도시된 구성요소 중 어느 하나 또는 그 조합에 관해 어떤 종속성 또는 요건을 갖는 것으로 해석되어져서는 안 된다.
본 발명은 많은 기타 범용 또는 특정 목적 컴퓨팅 시스템 환경 또는 구성에서 동작될 수 있다. 본 발명을 사용하기에 적절한 컴퓨팅 시스템, 환경, 및/또는 구성의 잘 알려진 예로는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드 또는 랩탑 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스, 프로그램가능 가전 제품, 네트워크 PC, 미니 컴퓨터, 메인 프레임 컴퓨터, 위의 시스템 및 장치 중 어느 하나를 포함하는 분산 컴퓨팅 환경 등이 있지만 이에 제한되는 것은 아니다.
본 발명은 컴퓨터에 의해 수행되는 프로그램 모듈과 같은 컴퓨터 수행가능명령어의 일반적인 컨텍스트로 설명될 것이다. 일반적으로 프로그램 모듈은 특정 태스크를 수행하고 특정 추상 데이터 타입을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 또한 커뮤니케이션 네트워크를 통해 연결된 원격 처리 장치에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서도 수행되어 질 수 있다. 분산 컴퓨팅 환경에서 프로그램 모듈은 메모리 기억 장치를 포함하는 로컬 또는 원격 컴퓨터 기억 장치 미디어 둘 다에 위치할 수도 있다.
도 1에서, 본 발명을 구현하는 예시적인 시스템은 컴퓨터(110)의 형태인 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 구성 요소로는 처리 장치(120), 시스템 메모리(130), 및 시스템 메모리(130)를 포함한 각종 시스템 컴포넌트를 처리 장치(120)에 연결시키는 시스템 버스(121)를 포함한다. 시스템 버스(121)는 메모리 버스 또는 메모리 콘트롤러, 주변장치 버스 및 각종 버스 아키텍처 중 임의의 것을 사용하는 로컬 버스를 포함한 몇가지 유형의 버스 구조 중 어느 것이라도 될 수 있다. 예로서, 이러한 구조는 ISA(industry standard architecture) 버스, MCA(micro channel architecture) 버스, EISA(Enhanced ISA) 버스, VESA(video electronics standard association) 로컬 버스, 그리고 메자닌 버스(mezzanine bus)로도 알려진 PCI(peripheral component interconnect) 버스 등을 포함하지만 이에 제한되는 것은 아니다.
컴퓨터(110)는 여러 컴퓨터 판독가능 매체를 포함한다. 컴퓨터(110)에 의해 액세스 가능한 매체는 그 어떤 것이든지 컴퓨터 판독가능 매체가 될 수 있고, 이러한 컴퓨터 판독가능 매체는 휘발성 및 불휘발성 매체, 이동식 및 이동불가식 매체를 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 기억장치 매체 및 통신 매체를 포함하며 이제 제한되는 것은 아니다. 컴퓨터 기억장치 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보 저장을 위해 모든 방법과 기술로 구현된 휘발성 및 불휘발성, 이동식 및 이동불가식 매체를 포함한다. 컴퓨터 기억장치 매체는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 기억장치, 자기 카세트, 자기 테이프, 자기 디스크 기억장치 또는 기타 자기 기억장치, 또는 컴퓨터(110)에 의해 액세스되고 원하는 정보를 저장할 수 있는 기타 모든 매체를 포함하지만 이에 제한되는 것은 아니다. 통신 매체는 일반적으로 반송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)에서 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등을 구현하고 모든 전달 매체 정보를 포함한다. "피변조 데이터 신호"라는 용어는, 하나 이상의 특성 셋(characteristics set)을 가지고 있는 신호 또는 신호에서 정보가 암호화되는 것과 같은 방식으로 신호가 변경된 것을 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 다이렉트 유선 연결과 같은 유선 매체, 그리고 음향, RF, 적외선, 기타 무선 매체와 같은 무선 매체를 포함하지만 이에 제한되는 것은 아니다. 위에서 언급된 매체들의 모든 조합이 또한 컴퓨터 판독가능 매체의 영역 안에 포함되어야 한다.
시스템 메모리(130)는 판독 전용 메모리(ROM)(131) 및 랜덤 액세스 메모리(RAM)(132)와 같은 휘발성 및/또는 비휘발성 메모리의 모양으로 컴퓨터 기억장치 매체를 포함한다. 시동 시 퍼스널 컴퓨터(110) 내의 구성요소들 사이의 정보의 전송을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(BIOS)(133)은 일반적으로 ROM(131)에 저장되어 있다. RAM(132)은 일반적으로 즉시 액세스 가능하고/가능하거나 현재 처리 장치(120)에 의해 동작되고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 예로서, 도 1은 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136) 그리고 프로그램 데이터(137)를 도시하고 있지만 이에 제한되는 것은 아니다.
컴퓨터(110)는 또한 기타 이동식/이동불가식, 휘발성/불휘발성 컴퓨터 기억장치 매체를 포함한다. 단지 예로서, 도 1은 이동불가식, 불휘발성 자기 매체로의 기록 또는 그로부터의 판독을 위한 하드 디스크 드라이브(141), 이동식, 불휘발성 자기 디스크(152)로의 기록 또는 그로부터의 판독을 위한 자기 디스크 드라이브(151), CD-ROM 또는 기타 광 매체 등의 이동식, 비휘발성 광 디스크(156)로의 기록 또는 그로부터의 판독을 위한 광 디스크 드라이브(155)를 포함한다. 예시적인 운영 환경에서 사용될 수 있는 기타 이동식/이동불가식, 휘발성/불휘발성 컴퓨터 기억장치 매체로는 자기 테이프 카세트, 플래쉬 메모리 카드, DVD, 디지털 비디오 테이프, 고체(solid state) RAM, 고체 ROM 등이 있지만 이에 제한되는 것은 아니다. 하드 디스크 드라이브(141)는 일반적으로 인터페이스(140)와 같은 이동불가능형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 일반적으로 인터페이스(150)와 같은 이동식 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
위에서 설명되고 도 1에 도시된 드라이브들 및 이들과 관련된 컴퓨터 기억장치 매체는, 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 및 컴퓨터(110)의 다른 데이터에 대한 기억장치를 제공한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)를 저장한다. 여기서 주의할 점은 이 컴포넌트들이 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)와 동일할 수도 있고 다를 수도 있다는 것이다. 이에 관해, 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)에 다른 번호가 주어졌다는 것은 적어도 이들이 서로 다른 본(copy)라는 것을 도시한다. 사용자는 키보드(162), 일반적으로 마우스라고 알려진 포인팅 디바이스(161), 트랙볼(trackball) 또는 터치 패드 등의 입력 장치를 통해 명령 및 정보를 컴퓨터(110)에 입력할 수 있다. 다른 입력 장치(도시 생략)로는 마이크, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등이 있을 수 있다. 이들 및 다른 입력 장치는 종종 시스템 버스에 연결된 사용자 입력 인터페이스(160)를 통해 처리 장치(120)에 접속되지만, 병렬 포트, 게임 포트, USB(universal serial bus) 등의 다른 인터페이스 및 버스 구조에 의해 연결될 수도 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치도 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 연결될 수 있다. 모니터 이외에, 컴퓨터는 또한 스피커(197) 및 프린터(196) 등의 다른 주변 출력 장치를 포함할 수 있고, 이들은 출력 주변장치 인터페이스(195)를 통해 연결될 수 있다.
컴퓨터(110)는 하나 이상의 원격 컴퓨터(180)로의 논리적 연결을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 또 하나의 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 공통 네트워크 노드일 수 있고, 일반적으로 퍼스널 컴퓨터(110)와 관련하여 위에서 설명한 컴포넌트의 대부분 또는 그 전부를 포함하지만, 도 1에는 메모리 저장 장치(181)만이 도시되어 있다. 도 1에 도시된 논리적 연결로는 LAN(171) 및 WAN(173)이 있고, 또한 다른 네트워크를 포함할 수 있다. 이러한 네트워킹 환경은 사무실, 회사 전체에 걸친 컴퓨터 네트워크, 인트라넷 및 인터넷에서 통상적인 것이다.
LAN 네트워킹 환경에서 사용될 때, 퍼스널 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 연결된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 일반적으로 인터넷과 같은 WAN(173)상에서의 통신을 설정하기 위한 모뎀(172) 또는 다른 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 다른 적절한 메커니즘을 통해 시스템 버스(121)에 연결된다. 네트워크화된 환경에서, 퍼스널 컴퓨터(110) 또는 그의 일부와 관련하여 기술된 프로그램 모듈은 원격 메모리 저장 장치에 저장될 수 있다. 그 예로서, 도 1은 메모리 장치(181)에 위치하고 있는 원격 애플리케이션 프로그램(185)을 도시하고 있지만 이에 제한되는 것은 아니다. 도시된 네트워크 연결은 예시적인 것이며 이 컴퓨터들 사이의 통신 링크를 설정하는 다른 수단이 사용될 수 있다는 것을 이해할 것이다.
이하의 설명에서, 다른 언급이 없다면, 본 발명은 하나 이상의 컴퓨터에 의해 수행되는 동작의 단계(acts) 및 상징적인 표현(symbolic representation)을 참조하여 설명될 것이다. 이와 같이, 이러한 단계 및 동작은 때때로 컴퓨터 수행가능한 것이며, 구조화된 형태로 데이터를 나타내는 전자 신호인 컴퓨터의 처리 장치에 의한 조작을 포함한다는 것을 이해할 것이다. 이 조작은 데이터를 변환시키거나 컴퓨터 메모리 시스템 내의 위치에서 데이터를 보유하고, 이는 당업자들에게 잘 알려진 방법으로 컴퓨터 동작을 재구성하거나 그렇지 않으면 변경시킨다. 데이터가 보유된 데이터 구조는 데이터 포맷에 의해 정의된 특정 속성들을 가지고 있는 메모리의 물리적 위치이다. 그러나, 이상의 문맥에서 본 발명이 설명되는 동안, 당업자는 이하에 설명되는 여러 단계 및 동작들이 하드웨어로도 구현될 수 있다는 것을 이해할 것이므로, 제한되지 않는다는 것을 알 것이다. 본 발명을 설명하기 위해 세션 개시 프로토콜(session initiation protocol, 이하 "SIP"라고 함)(RFC2843)이 사용될 것이다. 본 발명의 컴포넌트와 다른 컴포넌트간의 메세지 네임(message name)은 SIP 네임을 이용할 것이다. 다른 프로토콜 및 메세지 네임이 사용될 수 있다는 것을 이해할 것이다.
도 2에서는, 본 발명이 동작할 수 있는 적절한 운영 환경(200)의 예시적인 예를 보여준다. 도 2는 본 발명이 배치될 수 있는 여러 방법을 도시한다. 방화벽(202, 204, 206, 208)은 기업(210)의 경계에 위치하고 있다. 미디어 중계기(220)는 프록시 엔진(222)에 의해 제어되고, 미디어 싱크(sink)/소스(source)(2281-2283)를 보유하는 논리 도메인(logical domain)(224,226)을 제공한다. 미디어 중계기(230)는 프록시 엔진(232)에 의해 제어되고, 미디어 싱크/소스(2284-2285)를 보유하는 논리 도메인(234)을 제공한다. 미디어 중계기(236)는 프록시 엔진(232)에 의해 제어되고, 미디어 싱크/소스(2286)를 보유하는 논리 도메인(logical domain)(238)을 제공한다. 하나의 프록시 엔진이 하나의 미디어 중계기 또는 다수의 미디어 중계기를 위해 동작할 수 있고, 다수의 프록시 엔진이 하나의 미디어 중계기(각 프록시 엔진에 할당된 어드레스 자원들이 공통사항을 갖지 않을 때) 또는 다수의 미디어 중계기를 제어할 수 있다는 것을 이해할 것이다. 또한 이 운영 환경(200)은 적절한 운영 환경의 단지 하나의 예일 뿐이며, 본 발명의 사용 범위 또는 기능성에 어떤 제한을 두는자 하는 것이 아니라는 것을 이해할 것이다. 운영 환경(200)이 예시적인 운영 환경(200)에 도시된 구성요소 중 어느 하나 또는 그 조합에 관해 어떤 종속성을 지닌다거나 또는 그것을 필요로 한다고 해석되어져서도 안 된다.
도 3a 및 3b에서는, 동작하는 동안 인바이트 요청(invite request, 즉, 송신측과 수신측 간의 세션에 참여할 것을 요청하는 것으로, 사용자로 또는 서비스로 전송된 요청)이 프록시 엔진(300)으로 전송된다. 아웃바운드 호출(outbound call)에서, 인바이트 요청이 클라이언트(302)로부터 전송된다(선 320). 프록시 엔진(300)은 미디어 IP 어드레스 및 포트를 추출하고 이를 저장한다. 프록시 엔진(300)은 어드레스 자원 풀(address resources pool)로부터 세션이 확립되었을 때 사용될 공용 식별자(public identifier)를 예약한다(즉, 미디어 트래픽 설정을위한 공용 UDP/IP 또는 TCP/IP 어드레스 및 포트의 풀(pool)). 프록시 엔진(300)은 또한 세션 설명 프로토콜(session description protocol:SDP) "blob(binary large object)"을 변경하여, 인바이트 요청의 미디어 어드레스/포트를 미디어 중계기(304)의 공용 어드레스/포트로 바꾼다. 프록시 엔진(300)은 변경된 인바이트 요청을 방화벽(306)을 통해 공용 클라이언트(308)로 전달한다(선 322-326). 클라이언트(308)는 OK로 응답한다(선 328, 330). 방화벽(306)은 OK 메세지를 프록시 엔진(300)으로 전송한다(선 332). 프록시 엔진(300)은 OK 메세지로부터 미디어 IP 어드레스 및 포트를 추출하고 이를 저장한다. 프록시 엔진(300)은 또한 SDP "blob"을 변경하여, 미디어 어드레스/포트가 미디어 중계기(304)의 전용 어드레스/포트로 바뀌도록 한다. 프록시 엔진은 OK 메세지를 클라이언트(302)로 전송한다(선 334). OK 메세지를 수신한 후, 클라이언트(302)는 미디어를 시작하고(선 336) ACK을 전송한다. 프록시 엔진(300)은 ACK을 수신하고 자신이 저장했던 정보(미디어 IP 어드레스 및 포트)와 함께 미디어 중계기(304)로 요청을 전송한다(선 338). 미디어 중계기(304)는 클라이언트(302, 308) 간에 흐르는 RTP 및 RTCP 스트리밍을 위한 어드레스 매핑을 설정한다. ACK이 클라이언트(308)에 도착하고(선 340-344) 클라이언트(308)는 만약 미디어가 양방향으로 흐른다면 미디어 흐름을 시작한다. 미디어는 선(336-344) 상에서 흐른다.
인바운드 호출(inbound call)시, 인바이트 요청이 공용 네트워크상에서 클라이언트(308)로부터 전송된다(선 350). 인바이트 요청이 방화벽(306)에 도착한다(즉, 방화벽의 포트(5060)로)(선 352). 포트(5060)로 전송된 인바운드 연결이 전용어드레스 영역 내에서 미디어 구성기 제어 모듈이 위치하고 있는 RTC 서버로 전송될 수 있도록 방화벽이 구성되어야 한다는 것을 인식해야 한다. 기존의 방화벽들은 이러한 매핑 설정을 허용한다. 방화벽(306)은 인바이트 요청을 프록시 엔진으로 전달한다(선 354). 프록시 엔진(300)은 미디어 IP 어드레스 및 포트를 추출하고 이를 저장한다. 프록시 엔진(300)은 어드레스 자원 풀로부터 세션이 확립되었을 때 사용될 공용 식별자를 예약한다. 프록시 엔진(300)은 또한 SDP "blob(binary large object)"을 변경하여, 인바이트 요청의 미디어 어드레스/포트를 미디어 중계기(304)의 공용 어드레스/포트로 바꾼다. 프록시 엔진(300)은 변경된 인바이트 요청을 클라이언트(302)로 전달한다(선 356). 클라이언트(302)는 OK로 응답한다(선 358). 프록시 엔진(300)은 OK 메세지로부터 미디어 IP 어드레스 및 포트를 추출하고 이를 저장한다. 프록시 엔진(300)은 또한 SDP "blob"을 변경하여, 미디어 어드레스/포트가 미디어 중계기(304)의 전용 어드레스/포트로 바뀌도록 한다. 프록시 엔진은 방화벽(306)을 통해 클라이언트(308)로 OK 메세지를 전송한다(선 360-364). OK 메세지를 수신한 후, 클라이언트(308)는 미디어를 시작하고(선 366) ACK을 전송한다. 프록시 엔진(300)은 ACK을 수신하고 자신이 저장했던 정보(미디어 IP 어드레스 및 포트)와 함께 미디어 중계기(304)로 요청을 전송한다(선 370). 미디어 중계기(304)는 클라이언트(302, 308) 간에 흐르는 RTP 및 RTCP 스트리밍을 위한 어드레스 매핑을 설정한다. ACK이 클라이언트(302)에 도착하고 클라이언트(302)는 만약 미디어가 양방향으로 흐른다면 미디어 흐름을 시작한다. 미디어는 선(366-368, 372-374) 상에서 흐른다.
도 4에서는, 두 클라이언트 모두가 전용 네트워크(private network)에 있을 때 유사한 제어 흐름이 발생한다. 도 4에서, 클라이언트(302)는 방화벽(306) 뒤의 전용 네트워크(400)에 있고, 클라이언트(308)는 방화벽(404) 뒤의 전용 네트워크(402)에 있다. 방화벽들(306, 404) 사이에는 인터넷과 같은 공용 네트워크(406)가 있다. 네트워크(402)는 프록시 엔진/미디어 중계기(408)를 보유한다. 미디어 세션을 확립하는 제어 메세지(control message)가 선(410-418)을 통해 전송되고, 미디어 스트림은 선(420-428) 상에서 흐른다. 프록시 엔진/미디어 중계기는 인바이트 요청을 수신하고, 앞서 설명한 대로 SDP "blob"을 변경시켜, 미디어 스트림이 클라이언트에 앞서 미디어 중계기로 흐를 수 있도록 한다.
많은 유형의 방화벽들이 지금까지 설치되어 왔고 개발되고 있다. 이들 중 많은 방화벽들이 라우터, 클라이언트 등과의 인터페이스를 위해 자신만의 전용 소스프웨어를 보유한다. 도 5에서, 프록시 엔진(500)은 미디어 제어 모듈(520)을 통해 미디어 중계기(510)와 통신한다. 미디어 제어 모듈(520)은 관련 메세지(예를 들어, 인바이트 요청)로부터 미디어 라우팅 정보(IP 어드레스, UDP 포트)를 추출하고, 미디어 중계기(520)가 미디어 흐름으로부터 NAT(network address translator) 매핑을 설정하도록/해제하도록 명령하고, 설정된 NAT 매핑에 대한 정보를 프록시 엔진(500)으로 전한다.
프록시 엔진(500)은 베이스 스택(502) 및 프록시 로직(504)을 포함한다. 베이스 스택(502)은 윈속(Winsock; TCP 또는 UDP 전송을 통함) 등으로부터 수신된 원시 문자 스트림(raw character stream)을 프로토콜 메세지 스트림(stream ofprotocol message)으로 변환시킨다. 예를 들어, 베이스 스택(502)이 SIP 베이스 스택이라면, 이것은 원시 문자 스트림을 SIP 메세지 스트림으로 변환시킨다. 프록시 로직은 프로토콜 메세지(예를 들어, SIP 메세지)를 트랜잭션 이벤트, 멀티미디어 세션 이벤트, 또는 호출 이벤트를 등록한 확장 모듈(extension module)들에 디스패치한다(dispatch). 미디어 중계기 제어 모듈(520)은 하나의 확장 모듈로 분류된다. 미디어 중계기 제어 모듈(520)은 프록시 엔진(500)에 모든 멀티미디어 세션 이벤트 전달을 위한 모듈로 등록된다. 프록시 엔진(500)이 미디어 중계기 제어 모듈이 등록한 멀티미디어 세션 이벤트를 검출할 때, 프록시 엔진(500)은 미디어 중계기 제어 모듈에게 통보하고 그 메세지를 미디어 중계기 제어 모듈로 전달한다. 미디어 중계기 제어 모듈(520)은 그 메세지로부터 필요한 정보를 추출하고, 어떤 미디어 중계기(510)와 접촉할 것인지 결정하고, 미디어 중계기(510)로 요청을 전송하여, (i) 그 메세지에 지정된 매개변수에 따라 양방향 미디어 흐름이 가능하도록 준비하는 것; (ii) 그 메세지가 속해 있는 세션을 위해 양방향 미디어 경로를 여는 것; (iii) 그 메세지가 속해 있는 세션을 위해 양방향 미디어 경로를 닫는 것; 또는 (iv) 프록시 엔진(500)을 위해 중요한 통계를 구하는 것 중 어느 하나를 수행한다.
관리 엔티티(506)는 확장 모듈을 위한 관리 서비스를 제공한다. 이러한 관리 서비스로는 모듈 시동(startup) 및 종료(shutdown), 시스템 전체가 시작되거나 종료되었을 때 모듈 구성을 저장하고 복구하는 것, 모듈 구성의 동적인 변경에 대한 메커니즘 등이 있다. 관리 엔티티의 예로는 관리 모듈(administrationmodule), SIP 모듈 컨트롤러(SIP module controllers), 명령행 인터프리터(command-line interpreter), 및 그래픽 UI 지원 모듈(graphical UI support module) 등이 있다.
도 6에서, 미디어 중계기 제어 모듈(520)은 변환 관리 계층(translation management layer)(522)과 미디어 구성자(media configurator)(5241- 524N)로 구성되어 있다. 변환 관리 계층(522)은 프록시 엔진(500)에 의해 관리되는 모든 미디어 중계기(510)에 할당된 어드레스 자원들을 관리한다. 변환 관리 계층(522)은 여러 논리 기능을 수행한다. 변환 관리 계층(522)은 프록시 엔진(500)으로부터 멀티미디어 세션 이벤트 및 관련된 프로토콜 메세지(예를 들어, SIP 메세지)를 수신하고, 전달된 메세지 내에서 알려진 미디어 스트림에 대한 정보를 추출한다. 변환 관리 계층(522)은 미디어 세션 내에 있는 미디어 스트림이 기업 네트워크의 전용/공용 경계를 넘는지 여부를 결정한다. 만약 세션 내에 있는 미디어 스트림이 기업의 전용/공용 경계를 넘는다면, 변환 관리 계층(522)은 어떤 미디어 구성자가 그 스트림을 위한 미디어 경로를 제어할 것인지를 결정한다. 변환 관리 계층(522)은 세션 이벤트를 미디어 경로를 예약하고, 열고, 닫는 적절한 요청들로 변환시킨다. 그리고 나서, 변환 관리 계층(522)은 그 요청들을 선택된 미디어 구성자로 전송하고, 만약 미디어 구성자가 스트림의 미디어 경로를 열거나 닫을 수 없을 경우 필요한 조치를 수행한다. 미디어 구성자(5241- 524N)는 프록시 엔진(500)과 미디어 중계기 간의 통신을 구현하는 엔티티이다. 각 미디어 구성자는 대응하는 미디어 중계기와 통신하기 위해 대응하는 미디어 중계기가 이해할 수 있는 제어 프로토콜을 사용한다.
앞서 설명된 대로, 관리 엔티티(506)는 관리 서비스를 제공한다. 미디어 제어 모듈(520)에 대해, 이 관리 서비스는 시작, 멈춤, 저장, 복구, 초기화 그리고 종료 명령을 포함한다. 상태 관리 계층(state management layer)(508)은 베이스 스택(502)으로부터 프로토콜 메세지 스트림을 수신하고, 그 프로토콜 메세지를 이벤트 핸들러(526)로 전달한다. 예를 들어, 베이스 스택이 SIP 베이스 스택이라면, 프로토콜 메세지는 인바이트 요청, OK 메세지, ACK 메세지, BYE 메세지, 및 CANCEL 메세지 등을 포함할 것이다. 상태 관리 계층(508)은 이 프로토콜 메세지들을 세션 개시, 세션 확인, 세션 확립, 세션 변경, 및 세션 종료 메세지로 변환한다.
이벤트 핸들러(526)는 프록시 엔진(500)으로부터 전달된 멀티미디어 이벤트를 처리한다. 로컬 어드레스 변환자(528)는 주어진 어드레스 식별자(IP 어드레스 또는 도메인 네임)에 대해 그 어드레스 식별자가 전용 어드레스 영역에 속해있는지 여부를 결정한다. 로컬 어드레스 리졸버는 미디어 제어 모듈(520)에 의해 제어되는전용 도메인 내에 있는 어드레스의 로컬 어드레스 데이터베이스 및 도메인의 로컬 도메인 데이터베이스를 사용한다. 만약 어드레스 식별자가 전용 어드레스 영역에 속해 있을 경우, 로컬 어드레스 변환자(528)는 미디어 경로를 설정하기 위해 어떤 제어 요소(530) 또는 어떤 제어 그룹을 사용할 것인지를 결정한다.
제어 요소(530)는 변환 관리 계층(522)에 의해 생성된 미디어 중계기(510)의 추상 오브젝트이며, 하나의 미디어 중계기(510)를 그에 할당된 모든 자원으로 나타낸다. 제어 요소(530)는 미디어 중계기에 할당된 어드레스 자원에 대해 모든 것을 알고 있으며 미디어 중계기를 대신하여 이 자원들을 관리한다. 제어 요소가 보유한 정보로는 미디어 중계기의 제어 IP 어드레스, 그것의 도메인 네임, 미디어 중계기 서버의 전용 어드레스 영역, 미디어 중계기에 할당된 공용 어드레스 식별자 영역(즉, 공용 IP 어드레스 및 포트 영역), 미디어 중계기와 통신하는 데 사용되는 제어 프로토콜, 및 미디어 중계기에 대한 기타 구성 정보가 있다. 로드 밸런싱(load balancing)을 위해, 제어 요소는 결합하여 제어 그룹(532)을 형성한다. 제어 그룹(532)은 제어 요소들의 집합이고 전용 어드레스 식별자의 동일한 부집합(즉, 논리 도메인)을 제공한다. 제어 그룹은 다수의 중계기 및/또는 방화벽 사이의 아주 많은 논리 도메인으로부터 부하를 분산시키기 위해 생성된다.
예를 들어, 제어 그룹(5321)은 미디어 중계기와 통신하기 위해 미디어 구성자(5241)와 인터페이스하는 제어 요소(5301)를 포함한다. 유사하게, 제어 그룹(5322)은 제어 요소(5302,5303)를 포함하고, 제어 그룹(5323)은 제어 요소 (5304,5305,5306)를 포함한다. 전용 어드레스 영역이 처리할 미디어 중계기 제어 모듈에 제공되면, 로컬 어드레스 변환기는 각 영역에 대해 제어 그룹(530)의 인스턴스를 생성한다. 제어 그룹 참조는 어드레스 영역과 관련이 있고, 이는 데이터베이스 내에 저장된다.
상태 리프레쉬 타이머(534)는 프록시 엔진(500)에 의해 제어되는 모든 미디어 중계기들과 제어 요소들(530) 간의 상태 일관성을 유지시키는 엔티티이다. 상태 일관성이 필요한 이유는 미디어 중계기(510)가 프록시 엔진(500)이 수행되고 있는 기계와 물리적으로 별도인 기계에서 수행될 수 있고, 이로 인해 신선하지 않은 연결(stale connection)이 될 수 있기 때문이다. 스케쥴링되면, 상태 리프레쉬 타이머는 정해진 기간보다 더 오랫동안 상태 일관성 검사를 수행하지 못한 제어 요소들을 찾는다. 각 제어 요소에 대해 타이머(534)는 상태 일관성 검사를 개시한다. 상태 일관성 검사는 제어 요소를 잠그고, 그 제어 요소가 관리하는 미디어 중계기에 의해 설정된 모든 어드레스 매핑 상에 있는 데이터를 검색하고, 미디어 중계기(510)와 제어 요소(530)가 설정된 어드레스 매핑 상에 정확히 동일한 정보를 가지고 있는지 여부를 결정한다. 만약 미디어 중계기에 의해 설정된 매핑과 미디어 중계기의 제어 요소에 의해 매핑된 매핑 정보 간에 불일치가 있을 경우, 타이머(534)는 이 불일치를 해결하려 한다. 타이머(534)는 제어 요소에 의해 매핑되었지만 미디어 중계기의 현재 매핑에 있지 않은 매핑과 관련된 모든 포트를 해제하고, 미디어 중계기에는 있지만 제어 요소 매핑에 있지 않은 매핑을 잠정적으로 예약한다. 그리고 나서, 타이머(534)는 제어 요소의 잠금을 해제한다.
앞서 설명된 대로, 이벤트 핸들러(526)는 프록시 엔진(500)에 의해 전달된 멀티미디어 이벤트를 처리한다. 전달된 메세지로는 세션 개시, 세션 확인, 세션 확립, 세션 변경, 및 세션 종료 메세지가 있다. 프록시 엔진(500)이 인바이트 메세지를 수신하면, 프록시 엔진(500)은 세션 개시 메세지를 이벤트 핸들러(526)로 전송한다. 도 7에서, 이벤트 핸들러(526)는 세션 개시 예약 루틴(session initiated reservation routine)을 수행한다. 이벤트 핸들러(526)는 세션 개시 메세지의 세션 설명이 공백인지 여부를 결정한다(단계 700). 만약 세션 설명이 공백이면, 포트는 예약되지 않는다. 만약 세션 설명이 공백이 아니라면 세션 설명 내에 알려진 모든 미디어 스트림에 대해, 이벤트 핸들러(526)는 로컬 어드레스 리졸버(528)를 통해 미디어 스트림이 전용 어드레스 영역과 공용 어드레스 영역 사이의 경계를 넘는지 여부를 결정한다(단계 702). 만약 미디어 스트림이 그 경계를 넘지 않는다면, 그 스트림을 위한 미디어 경로는 이미 열려 있고 다음 미디어 스트림이 검사된다. 만약 미디어 스트림이 경계를 넘는다면, 그 미디어 스트림을 위한 미디어 경로는 예약된다. 이것은 스트림을 위한 미디어 경로 예약을 담당하는 미디어 구성자를 결정함으로써 행해진다(단계 704). 미디어 경로를 위한 공용 포트가 예약된다(단계 706). 미디어 경로 예약 요청(media path reservation request)이 적절한 제어 요소를 통해 미디어 구성자로 전송된다(단계 708). 예약 요청이 성공했을 경우, 예약된 포트에 대해 만들어진 예약은 임시 저장 장소에 저장된다(단계 710). 그 미디어 스트림용으로 알려진 어드레스 식별자가 수신측에 대한 의미를 가질 수 있도록 세션 설명이 변경된다. 이것이 실패할 경우, 그 세션을 위해 이전에 만들어졌던 모든 미디어 경로 예약이 해제되고(단계 712), 프록시 엔진(500)은 세션을 종료해야 한다는 통보를 받는다(단계 714).
세션 내에서 최소 하나의 미디어 스트림이 어드레스 영역 경계를 넘을 경우, 세션 설명이 변경되어, 그 스트림용으로 알려진 어드레스 식별자는 어드레스 자원 풀(address resource pool)로부터 예약된 어드레스 식별자로 바뀐다(단계 716). 예약된 포트는 신호 세션을 위해 확장 모듈(extension module:EM) 세션 컨텍스트를형성하고, EM 컨텍스트로서 저장하기 위해 프록시 엔진(500)으로 전달하는데 사용된다(단계 718). 변경된 메세지는 원격 클라이언트로 전송된다(단계 720).
프록시 엔진(500)은 OK 응답을 수신하면, 세션 확인 메세지를 이벤트 핸들러(526)로 전송한다. 도 8에서, 이벤드 핸들러는 세션 확인 자원 위임 루틴(session confirmed resource committal routine)을 실행한다. 프록시 엔진으로부터 EM 컨텍스트가 검색된다(단계 800). 이벤트 핸들러는 EM 컨텍스트가 공백인지 여부를 결정한다(단계 802). 만약 EM 컨텍스트가 공백이면, 세션 개시 예약 루틴이 수행된다(도 7 참조). 만약 EM 컨텍스트가 공백이 아니라면, 세션 설명 내에 알려진 모든 미디어 스트림에 대해, 이벤트 핸들러(526)는 로컬 어드레스 리졸버(528)를 통해 미디어 스트림이 전용 어드레스 영역과 공용 어드레스 영역 사이의 경계를 넘는지 여부를 결정한다(단계 804). 만약 미디어 스트림이 그 경계를 넘지 않는다면, 다음 미디어 스트림이 검사된다. 만약 미디어 스트림이 경계를 넘을 경우, EM 컨텍스트로부터 그 미디어 스트림에 대해 이전에 예약된 공용 어드레스 매개변수들이 검색된다(단계 806). EM 컨텍스트로부터 제어하는 미디어 구성자에 대한 참조를 검색한다(단계 808). 미디어 경로 열기 요청이 이전에 예약된 어드레스 매개변수를 매개 변수로 하여 미디어 구성자로 전송된다(즉, 대기된다(queued))(단계 810). 대기(queuing)가 성공할 경우, 다음 미디어 스트림이 검사된다. 대기가 실패할 경우, 세션 내에 열려 있는 모든 경로에 대해 미디어 경로 닫기 요청(media path closing request)이 대기되고(단계 812), 프록시 엔진은 세션을 종료해야 한다는 통보를 받는다(단계 814).
세션 내에서 최소 하나의 미디어 스트림이 어드레스 영역 경계를 넘을 경우, 미디어 스트림에 대해 열린 경로를 참조하기 위해 세션 설명이 변경된다(단계 816). 열린 포트들은 신호 세션을 위해 EM 컨텍스트로서 저장되고, EM 컨텍스트로 저장되기 위해 프록시 엔진(500)으로 전달된다(단계 818). 변경된 메세지는 원격 클라이언트로 전송된다(단계 820).
세션이 종료되면, 프록시 엔진(500)은 세션 종료 메세지를 이벤트 핸들러(526)로 전송한다. 도 9에서, 이벤트 핸들러는 세션 종료 루틴을 수행한다. 열린 미디어 경로의 정보는 프록시 엔진(500)으로부터 검색된 EM 컨텍스트로부터 획득된다(단계 900). 세션을 위해 열린 각 미디어 경로에 대해, 미디어 경로의 어드레스 매개변수는 EM 세션 컨텍스트로부터 검색된다(단계 902). 제어 미디어 구성자에 대한 참조 또한 EM 세션 컨텍스트로부터 검색된다(단계 904). 미디어 중계기에게 미디어 경로를 닫으라고 명령하기 위해 미디어 경로 닫기 요청이 제어 미디어 구성자로 전송된다(단계 906). 모든 미디어 경로들이 닫힌 후, 종료 세션 메세지가 프록시 엔진(500)으로 전송된다(단계 908).
앞서 설명된 대로, 미디어 구성자(524x)는 일반적으로 미디어 중계기(510)로의 제어 요청 통신을 담당한다. 일반적으로, 각 NAT 제어 프로토콜(NAT control protocol)에 대해 하나의 미디어 구성자가 존재한다. 미디어 구성자는 동적 개방을 생성하기 위해 방화벽과 통신할 수 있다. 미디어 구성자는 다음과 같은 것을 수행한다: 변환 관리 계층(522)으로부터 요청을 수신하여(제어 요소를 통해) 미디어 중계기로(IMediaConfigurator 인터페이스를 통해) 전송하고; 모듈이 지원하는 특정 제어 프로토콜 포맷으로 요청을 변환하고; 요청을 미디어 중계기로 전송하고; 동적 개방 생성 요청(request to create a dynamic poening)을 방화벽으로 전송하고; 미디어 중계기로부터 응답을 수신하고; 구성자가 지원하는 특정 제어 프로토콜 포맷에서 제어 요소가 이해할 수 있는 포맷으로 요청을 변환하고; 변환된 응답을 변환 관리 계층으로 전달한다.
모든 미디어 구성자는 프로그래밍 인터페이스를 구현한다. 프로그래밍 인터페이스에 대한 명령어로는 Initialize, ReserveMediaPath, OpenMediaPath, CloseMediaPath, CloseAllMediaPaths, QueryMediaPathInformation, 및 Shutdown이 있다. Initialize 명령어는 미디어 구성자를 초기화하고 미디어 중계기의 네트워크 네임을 제공한다. 초기화 시, 미디어 구성자는 전용 데이터 구조를 생성하고 그 전용 데이터 구조를 초기화시키며, 미디어 중계기 및 방화벽과의 제어 채널(control channel)을 설정한다. 미디어 경로가 성공적으로 예약된 경우 명령어는 OK를 리턴한다. 성공적이지 못할 경우, 에러 코드가 리턴된다. ReserveMediaPath 명령어는 미디어 경로를 예약하고, 예약된 미디어 경로의 전체 또는 일부 사양(specification)을 제공한다. 미디어 경로가 성공적으로 예약된 경우 명령어는 성공 메세지를 리턴한다. 성공적이지 못할 경우, 에러 코드가 리턴된다.
OpenMediaPath 명령은 제공된 매개변수에 지정된 대로 미디어 경로를 연다. 제공된 매개변수들은 열릴 미디어 경로의 완전한 사양이다. 미디어 구성자는 경로열기 요청을 미디어 중계기로 전달하고(이전에 예약된 매핑을 저장하기 위해), 또한 포트를 열기 위해 경로 열기 요청을 방화벽으로 전달한다. 미디어 경로는 미리 예약되어 있어야 한다. 미디어 경로가 성공적으로 열릴 경우 명령어는 성공 메세지를 리턴한다. 성공적이지 못할 경우, 에러 코드가 리턴된다.
CloseMediaPath 명령은 미디어 경로를 닫는다. 미디어 경로를 처리하기 위해 명령어가 제공된다. 미디어 구성자는 미디어 경로에 대해 이전에 설정되었던 매핑을 제거하기 위해 미디어 중계기와 통신하고, 미디어 경로에 대해 이전에 열렸던 공용 포트를 닫기 위해 방화벽과 통신한다. 미디어 경로가 성공적으로 닫힐 경우 명령어는 성공 메세지를 리턴한다. 성공적이지 못할 경우, 에러 코드가 리턴된다.
CloseAllMediaPaths 명령은 미디어 구성자를 통해 생성되었던 모든 미디어 경로를 닫는다. 미디어 구성자는 미디어 구성자에 의해 이전에 설정되었던 모든 매핑을 제거하기 위해 미디어 중계기와 통신하고, 미디어 구성자를 위해 방화벽에 의해 열렸던 모든 공용 포트를 닫기 위해 방화벽과 통신한다.
QueryMediaPathInformation 명령은 미디어 경로에 대한 정보를 획득하기 위해 사용된다. 정보가 검색되고 있는 미디어 경로 및 미디어 데이터 경로 길이에 대한 처리가 제공된다. 정보가 전달될 메모리에 대한 포인터 또한 제공된다. 미디어 경로정보가 성공적으로 검색될 경우 명령어는 성공 메세지를 리턴한다. 성공적이지 못할 경우, 에러 코드가 리턴된다. Shutdown 명령어는 미디어 구성자를 종료시킨다. 사용 중이던 모든 자원들은 해제된다.
본 발명의 원리가 적용될 수 있는 여러 가능한 실시예의 관점에서, 도면과 관련하여 본 명세서에 기술된 실시예는 단지 도시적인 것이고 본 발명의 범위를 제한하지 않는다는 것을 인식해야 한다. 예를 들어, 당업자들은 소프트웨어에서 보여지는 도시된 실시예의 구성 요소들이 하드웨어에서 구현될 수 있고 또한 그 반대의 경우도 가능하다는 것을 인식할 것이고, 도시된 실시예가 본 발명의 개념을 벗어나지 않고 구성 및 상세사항이 변경될 수 있다는 것을 인식할 것이다. 그러므로, 본 명세서에 기술된 본 발명은 첨부된 청구항 및 그의 균등물의 범위 내에 이르는 모든 실시예를 포함한다.
네트워크 경계를 통해 실시간 미디어를 통과시키는 시스템 및 방법이 소개되었다. SIP(Session Initiation Protocol)의 측면에서 설명되었지만, 본 발명은 또한 다른 신호 프로토콜에 적용될 수 있다. 본 발명의 미디어 중계기는 방화벽을 대신하여 포트 및 어드레스 영역을 관리하여, 방화벽의 설계를 단순화시킨다. 미디어 중계기와의 통신을 위해 사용된 본 발명의 미디어 중계기 제어 모듈은 관리자들로 하여금 모든 형태의 방화벽을 사용할 수 있도록 해준다.

Claims (40)

  1. 미디어 중계기(media relay)를 제어하는 미디어 구성자 제어 모듈(media configurator control module)에 있어서,
    프록시 엔진(proxy engine)으로부터 수신된 멀티미디어 세션 이벤트들을 처리하도록 적응된 이벤트 핸들러(event handler),
    상기 이벤트 핸들러와 통신하고, 어드레스 식별자(address identifier)가 전용 어드레스 영역(private address space)에 속하는지 여부를 결정하고, 상기 어드레스 식별자가 전용 어드레스 영역에 속할 경우 상기 어드레스 식별자의 한 끝단(one end)과의 미디어 경로(media path)를 설정하는데 사용되는 제어 요소와 제어 그룹 중 적어도 하나를 결정하도록 적응된 로컬 어드레스 리졸버(local address resolver), 및
    상기 이벤트 핸들러와 통신하고, 미디어 중계기를 위한 자원들을 관리하는 적어도 하나의 제어 요소(control element)
    를 포함하는 미디어 구성자 제어 모듈.
  2. 제1항에 있어서, 상기 적어도 하나의 제어 요소는 하나의 제어 그룹과 적어도 다른 하나의 제어 요소를 포함하는 미디어 구성자 제어 모듈.
  3. 제1항에 있어서,
    정해진 기간보다 더 오랫동안 상태 일관성 검사(state consistency check)가 행해지지 않은 제어 요소들을 찾도록 적응된 상태 리프레쉬 타이머(state refresh timer)를 더 포함하며,
    상기 정해진 기간보다 더 오랫동안 상기 상태 일관성 검사가 행해지지 않은 각 제어 요소에 대해, 상기 상태 일관성 검사를 개시하며,
    상기 상태 일관성 검사는,
    상기 제어 요소를 잠그며,
    상기 제어 요소가 관리하는 상기 미디어 중계기에 의해 설정된 모든 어드레스 매핑 상에 있는 데이터를 검색하며,
    상기 제어 요소가 관리하는 상기 미디어 중계기와 상기 제어 요소가 상기 설정된 어드레스 매핑 상에 동일한 정보를 가지고 있는지 여부를 판정하며,
    상기 제어 요소가 관리하는 상기 미디어 중계기에 의해 설정된 상기 매핑과 상기 제어 요소에 의해 매핑된 상기 매핑 정보 간에 불일치가 있을 경우, 상기 제어 요소에 의해 매핑되었지만 상기 미디어 중계기의 현재 매핑에 있지 않은 매핑과 관련된 모든 포트를 해제하고, 상기 미디어 중계기에는 있지만 상기 제어 요소 매핑에 있지 않은 매핑을 조건적으로 예약하며, 및
    상기 제어 요소의 잠금을 해제하는 것을 포함하는
    미디어 구성자 제어 모듈.
  4. 제1항에 있어서, 상기 적어도 하나의 제어 요소 및 상기 미디어 중계기와 통신하도록 적응된 미디어 구성자(media configurator)를 더 포함하는 미디어 구성자 제어 모듈.
  5. 제1항에 있어서, 상기 멀티미디어 세션 이벤트는 세션 개시 메세지(session initiated message)를 포함하고, 상기 세션 개시 메세지 수신에 응답하는 상기 이벤트 핸들러는 또한,
    상기 로컬 어드레스 리졸버를 통해 미디어 스트림이 전용 어드레스 영역과 공용 어드레스 영역 사이의 상기 경계를 넘는지 여부를 판정하고,
    상기 미디어 스트림이 상기 경계를 넘을 경우, 상기 미디어 스트림에 대해 미디어 경로를 예약하고, 적어도 하나의 포트를 포함하는 상기 미디어 경로를 예약하기 위해 미디어 구성자의 상기 적어도 하나의 제어 요소를 통해 상기 미디어 구성자로 미디어 경로 예약 요청을 전송하고,
    상기 예약 요청이 성공했을 경우, 상기 예약된 포트들에 대해 행해진 상기 예약들을 임시 저장 장소에 저장하고, 상기 매체 스트림용으로 알려진 어드레스 식별자들이 예약된 어드레스 식별자들로 변경되도록 세션 설명을 변경하고,
    변경된 세션 설명을 프록시 엔진으로 전송하도록 적응된 미디어 구성자 제어 모듈.
  6. 제1항에 있어서, 상기 멀티미디어 세션 이벤트는 세션 확인 메세지(session confirmed message)를 포함하고, 상기 세션 확인 메세지 수신에 응답하는 상기 이벤트 핸들러는 또한,
    상기 미디어 경로에 대해 예약된 공용 어드레스 매개변수들을 검색하고,
    상기 예약된 공용 어드레스 매개변수들로 미디어 경로 열기 요청을 미디어 구성자에게 전송하고,
    상기 미디어 경로 열기 요청이 성공할 경우, 상기 미디어 경로에 대해 열린 경로들을 나타내도록 세션 설명을 변경하고,
    상기 변경된 세션 설명을 프록시 엔진으로 전송하도록 적응된 미디어 구성자 제어 모듈.
  7. 제1항에 있어서, 상기 멀티미디어 세션 이벤트는 세션 종료 메세지(session terminated message)를 포함하고, 상기 세션 종료 메세지 수신에 응답하는 상기 이벤트 핸들러는 또한,
    상기 미디어 세션을 위해 열려 있는 상기 미디어 경로들의 어드레스 매개변수들을 획득하고,
    상기 어드레스 매개변수들로 상기 미디어 경로 닫기 요청을 미디어 구성자에게 전송하고,
    상기 열려 있는 미디어 경로들을 닫은 후, 종료 세션 메세지를 프록시 엔진으로 전송하도록 적응된 미디어 구성자 제어 모듈.
  8. 송신측에서 수신측으로 미디어 스트림을 전송하기 위한 미디어 세션을 확립하는 방법에 있어서,
    상기 미디어 스트림이 제1 어드레스 영역과 제2 어드레스 영역간의 네트워트 경계를 넘는지 여부를 판정하는 단계,
    상기 미디어 스트림이 상기 네트워크 경계를 넘을 경우,
    사용할 미디어 중계기를 결정하는 단계,
    상기 미디어 중계기에게 상기 미디어에 대해 적어도 하나의 포트를 갖는 미디어 경로를 예약하도록 명령하는 단계,
    상기 적어도 하나의 포트가 예약된 경우,
    상기 적어도 하나의 포트에 대한 예약을 임시 저장 장소에 저장하는 단계,
    어드레스 식별자들을 어드레스 자원 풀 중에서 예약된 어드레스 식별자들로 변경하는 단계,
    상기 미디어 스트림에 대한 어드레스 식별자들을 상기 예약된 어드레스 식별자들로 변경되도록 세션 설명을 변경하는 단계,
    메세지 내의 상기 세션 설명을 수신측으로 전송하는 단계
    를 포함하는 방법.
  9. 제8항에 있어서, 상기 적어도 하나의 포트가 예약되지 않을 경우 상기 세션을 종료하는 단계를 더 포함하는 방법.
  10. 제9항에 있어서, 상기 임시 저장 장소에 저장된 예약들을 해제하는 단계를더 포함하는 방법.
  11. 제8항에 있어서, 상기 미디어 중계기에게 상기 미디어 경로를 예약하도록 명령하는 상기 단계는 미디어 구성자에게 상기 미디어 경로를 예약하도록 명령하는 단계를 포함하는 방법.
  12. 제8항에 있어서, 상기 미디어 세션에 대해 이벤트 메세지(event message:EM) 세션 컨텍스트를 형성하는 단계를 더 포함하는 방법.
  13. 제12항에 있어서, 상기 EM 세션 컨텍스트를 프록시 엔진으로 전송하는 단계를 더 포함하는 방법.
  14. 제8항에 있어서,
    상기 세션 설명 전송에 대한 응답으로 세션 확인 메세지를 수신하는 단계,
    상기 미디어 스트림이 상기 경계 영역을 넘을 경우,
    상기 미디어 중계기에게 상기 미디어 경로를 열도록 명령하는 단계, 및
    상기 송신측으로부터 상기 수신측으로 상기 미디어 경로를 통해 미디어를 전송하는 단계
    를 더 포함하는 방법.
  15. 제14항에 있어서, 상기 미디어 세션에 대해 이벤트 메세지 컨텍스트(event message context)를 검색하는 단계를 더 포함하는 방법.
  16. 제14항에 있어서, 상기 미디어 중계기에게 상기 미디어 경로를 열도록 명령하는 상기 단계는 미디어 구성자에게 상기 미디어 경로를 열도록 명령하는 단계를 포함하는 방법.
  17. 제14항에 있어서, 상기 미디어 중계기가 상기 미디어 경로를 열지 못할 경우 상기 미디어 세션을 종료하는 단계를 더 포함하는 방법.
  18. 제14항에 있어서, 상기 미디어 중계기에게 상기 미디어 경로를 열도록 명령하는 상기 단계는 상기 적어도 하나의 포트를 여는 단계를 포함하는 방법.
  19. 제14항에 있어서, 상기 세션을 종료시키는 단계를 더 포함하는 방법.
  20. 제19항에 있어서, 상기 세션을 종료시키는 상기 단계는 상기 미디어 중계기에게 상기 미디어 경로를 닫도록 명령하는 단계를 포함하는 방법.
  21. 제20항에 있어서, 상기 미디어 중계기에게 상기 미디어 경로를 닫도록 명령하는 상기 단계는,
    상기 미디어 경로에 대해 어드레스 매개변수들을 획득하는 단계,
    어느 미디어 구성자가 상기 미디어 중계기를 제어하고 있는지를 판정하는 단계, 및
    상기 미디어 중계기에게 상기 미디어 경로를 닫도록 명령하는 요청을 상기 미디어 구성자로 전송하는 단계 -단, 상기 요청은 상기 미디어 경로에 대해 상기 어드레스 매개변수들을 포함함-
    를 포함하는 방법.
  22. 제19항에 있어서, 상기 미디어 세션을 종료시키는 상기 단계는 상기 미디어 세션이 종료된 후 프록시 엔진으로 종료 세션 메세지를 전송하는 단계를 포함하는 방법.
  23. 송신측에서 수신측으로 미디어 스트림을 전송하기 위한 미디어 세션을 확립하는 시스템에 있어서,
    네트워크 경계 장치와 통신하고, 상기 네트워크 경계에서 미디어 경로를 열고 닫는 미디어 중계기,
    상기 미디어 중계기와 통신하고, 상기 미디어 중계기로 전송하기 위한 요청들을 미디어 구성자 제어 모듈로부터 수신하고, 상기 요청들을 상기 미디어 중계기가 지원하는 제어 프로토콜에 특정한 포맷으로 변환하고, 상기 요청들을 상기 미디어 중계기로 전송하고, 동적 열기 생성 요청(request to create a dynamicopening)을 상기 네트워크 경계 장치로 전송하고, 상기 미디어 중계기로부터 응답들을 수신하고, 상기 응답을 상기 구성자가 지원하는 상기 제어 프로토콜에 특정한 포맷에서 상기 미디어 구성자 제어 모듈이 이해할 수 있는 포맷으로 변환하고, 변환된 응답을 상기 미디어 구성자 제어 모듈로 전달하도록 적응된 미디어 구성자
    를 포함하는 시스템.
  24. 제23항에 있어서, 상기 미디어 구성자 제어 모듈은 상기 미디어 구성자 및 프록시 엔진과 통신하는 시스템.
  25. 제23항에 있어서, 상기 미디어 구성자 제어 모듈은,
    프록시 엔진(proxy engine)으로부터 수신된 멀티미디어 세션 이벤트들을 처리하도록 적응된 이벤트 핸들러(event handler),
    상기 이벤트 핸들러와 통신하고, 어드레스 식별자(address identifier)가 전용 어드레스 영역(private address space)에 속하는지 여부를 판정하고, 상기 어드레스 식별자가 전용 어드레스 영역에 속할 경우 상기 어드레스 식별자의 한 끝단(one end)과의 미디어 경로(media path)를 설정하는데 사용되는 제어 요소와 제어 그룹 중 적어도 하나를 결정하도록 적응된 로컬 어드레스 리졸버(local address resolver), 및
    상기 로컬 어드레스 리졸버와 통신하고, 미디어 중계기를 위한 자원들을 관리하는 적어도 하나의 제어 요소(control element)
    를 포함하는 시스템.
  26. 제25항에 있어서, 상기 적어도 하나의 제어 요소는 하나의 제어 그룹과 적어도 다른 하나의 제어 요소를 포함하는 시스템.
  27. 제25항에 있어서,
    정해진 기간보다 더 오랫동안 상태 일관성 검사(state consistency check)가 행해지지 않은 제어 요소들을 찾도록 적응된 상태 리프레쉬 타이머(state refresh timer)를 더 포함하며,
    상기 정해진 기간보다 더 오랫동안 상기 상태 일관성 검사가 행해지지 않은 각 제어 요소에 대해, 상기 상태 일관성 검사를 개시하며,
    상기 상태 일관성 검사는,
    상기 제어 요소를 잠그며,
    상기 제어 요소가 관리하는 상기 미디어 중계기에 의해 설정된 모든 어드레스 매핑 상에 있는 데이터를 검색하며,
    상기 제어 요소가 관리하는 상기 미디어 중계기와 상기 제어 요소가 상기 설정된 어드레스 매핑 상에 동일한 정보를 가지고 있는지 여부를 판정하며,
    상기 제어 요소가 관리하는 상기 미디어 중계기에 의해 설정된 상기 매핑과 상기 제어 요소에 의해 매핑된 상기 매핑 정보 간에 불일치가 있을 경우, 상기 제어 요소에 의해 매핑되었지만 상기 미디어 중계기의 현재 매핑에 있지 않은 매핑과관련된 모든 포트를 해제하고, 상기 미디어 중계기에는 있지만 상기 제어 요소 매핑에 있지 않은 매핑을 조건적으로 예약하며, 및
    상기 제어 요소의 잠금을 해제하는 것을 포함하는 시스템.
  28. 미디어 중계기를 제어하는 방법에 있어서,
    미디어 구성자를 초기화하고(initialize) 상기 미디어 중계기의 네트워크 네임을 제공하기 위해 초기화 명령(initialize command)을 전송하는 단계,
    특정 미디어 경로를 예약하기 위해 reservemediapath 명령을 전송하는 단계,
    상기 특정 미디어 경로를 열기 위해 openmediapath 명령을 전송하는 단계, 및
    상기 특정 미디어 경로를 닫기 위해 closemediapath 명령을 전송하는 단계
    를 포함하는 방법.
  29. 제28항에 있어서, 상기 미디어 구성자에 의해 생성된 모든 미디어 경로들을 닫기 위해 closeallmediapath 명령을 전송하는 단계를 더 포함하는 방법.
  30. 제28항에 있어서, 미디어 경로에 대한 정보를 획득하기 위해 querymediapathinformation 명령을 전송하는 단계를 더 포함하는 방법.
  31. 미디어 세션을 확립하기 위한 컴퓨터 실행가능 명령어를 포함하는 컴퓨터 판독가능 매체에 있어서, 상기 컴퓨터 실행가능 명령어는,
    미디어가 네트워크 경계를 넘을 경우, 미디어 중계기에게 적어도 하나의 포트를 포함하는 미디어 경로를 예약하도록 명령하는 단계,
    상기 미디어 세션의 어드레스 식별자를 예약된 어드레스 식별자들로 변경하는 단계,
    상기 예약된 어드레스 식별자들과 함께 상기 미디어 세션의 수신측으로 상기 미디어 세션의 변경된 설명을 전송하는 단계
    를 수행하는 컴퓨터 판독가능 매체.
  32. 제31항에 있어서,
    세션 확인 메세지 수신에 응답하여 상기 미디어 중계기에게 상기 미디어 경로를 열도록 명령하는 단계, 및
    상기 미디어 경로를 통해 미디어를 상기 미디어 세션의 수신측에 전송하는 단계
    를 수행하는 컴퓨터 실행가능 명령어를 더 포함하는 컴퓨터 판독가능 매체.
  33. 제32항에 있어서, 상기 미디어 세션을 종료시키는 단계를 수행하는 컴퓨터 실행가능 명령어를 더 포함하는 컴퓨터 판독가능 매체.
  34. 제33항에 있어서, 상기 미디어 세션을 종료시키는 상기 단계는 상기 미디어중계기에게 상기 미디어 경로를 닫으라고 명령하는 단계를 포함하는 컴퓨터 판독가능 매체.
  35. 제34항에 있어서, 상기 미디어 중계기에게 상기 미디어 경로를 닫으라고 명령하는 상기 단계는 미디어 구성자에게 상기 미디어 경로를 닫으라고 명령하는 단계를 포함하는 컴퓨터 판독가능 매체.
  36. 제31항에 있어서,
    어떤 미디어 중계기를 사용할 것인지 결정하는 단계, 및
    상기 적어도 하나의 포트가 예약되었을 경우, 임시 저장 장소에 상기 적어도 하나의 포트에 대한 예약을 저장하는 단계
    를 수행하는 컴퓨터 실행가능 명령어를 더 포함하는 컴퓨터 판독가능 매체.
  37. 제31항에 있어서, 상기 미디어 중계기에게 상기 미디어 경로를 열도록 명령하는 상기 단계는 미디어 구성자에게 상기 미디어 경로를 열도록 명령하는 단계를 포함하는 컴퓨터 판독가능 매체.
  38. 미디어 중계기를 제어하는 방법에 있어서,
    초기화 명령 수신에 응답하여 상기 미디어 중계기의 네트워크 네임을 제공하는 단계,
    reservemediapath 명령 수신에 응답하여 상기 미디어 중계기에게 특정 미디어 경로를 예약하도록 명령하는 단계,
    openmediapath 명령 수신에 응답하여 상기 미디어 중계기에게 상기 특정 미디어 경로를 열도록 명령하는 단계, 및
    closemediapath 명령 수신에 응답하여 상기 미디어 중계기에게 상기 특정 미디어 경로를 닫도록 명령하는 단계
    를 포함하는 방법.
  39. 제38항에 있어서, closeallmediapath 명령 수신에 응답하여 상기 미디어 중계기에게 미디어 구성자에 의해 생성된 모든 미디어 경로들을 닫도록 명령하는 단계를 더 포함하는 방법.
  40. 제38항에 있어서, querymediapathinformation 명령 수신에 응답하여 미디어 경로에 대한 정보를 제공하는 단계를 더 포함하는 방법.
KR1020040038479A 2003-05-29 2004-05-28 미디어 세션 확립 방법 KR101066757B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/447,615 US7454510B2 (en) 2003-05-29 2003-05-29 Controlled relay of media streams across network perimeters
US10/447,615 2003-05-29

Publications (2)

Publication Number Publication Date
KR20040103441A true KR20040103441A (ko) 2004-12-08
KR101066757B1 KR101066757B1 (ko) 2011-09-21

Family

ID=33159481

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040038479A KR101066757B1 (ko) 2003-05-29 2004-05-28 미디어 세션 확립 방법

Country Status (5)

Country Link
US (2) US7454510B2 (ko)
EP (1) EP1484883A3 (ko)
JP (1) JP2004355628A (ko)
KR (1) KR101066757B1 (ko)
CN (1) CN1574798B (ko)

Cited By (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8045512B2 (en) 2005-10-27 2011-10-25 Qualcomm Incorporated Scalable frequency band operation in wireless communication systems
US8098568B2 (en) 2000-09-13 2012-01-17 Qualcomm Incorporated Signaling method in an OFDM multiple access system
US8446892B2 (en) 2005-03-16 2013-05-21 Qualcomm Incorporated Channel structures for a quasi-orthogonal multiple-access communication system
US8462859B2 (en) 2005-06-01 2013-06-11 Qualcomm Incorporated Sphere decoding apparatus
US8477684B2 (en) 2005-10-27 2013-07-02 Qualcomm Incorporated Acknowledgement of control messages in a wireless communication system
US8565194B2 (en) 2005-10-27 2013-10-22 Qualcomm Incorporated Puncturing signaling channel for a wireless communication system
US8582548B2 (en) 2005-11-18 2013-11-12 Qualcomm Incorporated Frequency division multiple access schemes for wireless communication
US8582509B2 (en) 2005-10-27 2013-11-12 Qualcomm Incorporated Scalable frequency band operation in wireless communication systems
US8599945B2 (en) 2005-06-16 2013-12-03 Qualcomm Incorporated Robust rank prediction for a MIMO system
US8611284B2 (en) 2005-05-31 2013-12-17 Qualcomm Incorporated Use of supplemental assignments to decrement resources
US8644292B2 (en) 2005-08-24 2014-02-04 Qualcomm Incorporated Varied transmission time intervals for wireless communication system
US8693405B2 (en) 2005-10-27 2014-04-08 Qualcomm Incorporated SDMA resource management
US8879511B2 (en) 2005-10-27 2014-11-04 Qualcomm Incorporated Assignment acknowledgement for a wireless communication system
US8885628B2 (en) 2005-08-08 2014-11-11 Qualcomm Incorporated Code division multiplexing in a single-carrier frequency division multiple access system
US8917654B2 (en) 2005-04-19 2014-12-23 Qualcomm Incorporated Frequency hopping design for single carrier FDMA systems
US9088384B2 (en) 2005-10-27 2015-07-21 Qualcomm Incorporated Pilot symbol transmission in wireless communication systems
US9130810B2 (en) 2000-09-13 2015-09-08 Qualcomm Incorporated OFDM communications methods and apparatus
US9136974B2 (en) 2005-08-30 2015-09-15 Qualcomm Incorporated Precoding and SDMA support
US9137822B2 (en) 2004-07-21 2015-09-15 Qualcomm Incorporated Efficient signaling over access channel
US9144060B2 (en) 2005-10-27 2015-09-22 Qualcomm Incorporated Resource allocation for shared signaling channels
US9143305B2 (en) 2005-03-17 2015-09-22 Qualcomm Incorporated Pilot signal transmission for an orthogonal frequency division wireless communication system
US9148256B2 (en) 2004-07-21 2015-09-29 Qualcomm Incorporated Performance based rank prediction for MIMO design
US9154211B2 (en) 2005-03-11 2015-10-06 Qualcomm Incorporated Systems and methods for beamforming feedback in multi antenna communication systems
US9172453B2 (en) 2005-10-27 2015-10-27 Qualcomm Incorporated Method and apparatus for pre-coding frequency division duplexing system
US9179319B2 (en) 2005-06-16 2015-11-03 Qualcomm Incorporated Adaptive sectorization in cellular systems
US9184870B2 (en) 2005-04-01 2015-11-10 Qualcomm Incorporated Systems and methods for control channel signaling
US9209956B2 (en) 2005-08-22 2015-12-08 Qualcomm Incorporated Segment sensitive scheduling
US9210651B2 (en) 2005-10-27 2015-12-08 Qualcomm Incorporated Method and apparatus for bootstraping information in a communication system
US9225416B2 (en) 2005-10-27 2015-12-29 Qualcomm Incorporated Varied signaling channels for a reverse link in a wireless communication system
US9225488B2 (en) 2005-10-27 2015-12-29 Qualcomm Incorporated Shared signaling channel
US9246560B2 (en) 2005-03-10 2016-01-26 Qualcomm Incorporated Systems and methods for beamforming and rate control in a multi-input multi-output communication systems
US9307544B2 (en) 2005-04-19 2016-04-05 Qualcomm Incorporated Channel quality reporting for adaptive sectorization
US9461859B2 (en) 2005-03-17 2016-10-04 Qualcomm Incorporated Pilot signal transmission for an orthogonal frequency division wireless communication system
US9520972B2 (en) 2005-03-17 2016-12-13 Qualcomm Incorporated Pilot signal transmission for an orthogonal frequency division wireless communication system
US9660776B2 (en) 2005-08-22 2017-05-23 Qualcomm Incorporated Method and apparatus for providing antenna diversity in a wireless communication system

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7185082B1 (en) * 2000-08-09 2007-02-27 Microsoft Corporation Fast dynamic measurement of connection bandwidth using at least a pair of non-compressible packets having measurable characteristics
US7266613B1 (en) 2000-08-09 2007-09-04 Microsoft Corporation Fast dynamic measurement of bandwidth in a TCP network environment
US6792449B2 (en) * 2001-06-28 2004-09-14 Microsoft Corporation Startup methods and apparatuses for use in streaming content
US7725557B2 (en) * 2002-06-24 2010-05-25 Microsoft Corporation Client-side caching of streaming media content
US7650421B2 (en) * 2002-12-30 2010-01-19 Microsoft Corporation Adaptable accelerated content streaming
US7454510B2 (en) * 2003-05-29 2008-11-18 Microsoft Corporation Controlled relay of media streams across network perimeters
US20040268400A1 (en) * 2003-06-26 2004-12-30 Microsoft Corporation Quick starting video content
US7054774B2 (en) * 2003-06-27 2006-05-30 Microsoft Corporation Midstream determination of varying bandwidth availability
US7391717B2 (en) * 2003-06-30 2008-06-24 Microsoft Corporation Streaming of variable bit rate multimedia content
US8214256B2 (en) * 2003-09-15 2012-07-03 Time Warner Cable Inc. System and method for advertisement delivery within a video time shifting architecture
US7417981B2 (en) * 2003-10-15 2008-08-26 Vonage Holdings Corp. Method and apparatus for enhanced Internet Telephony
CN100399768C (zh) * 2003-12-24 2008-07-02 华为技术有限公司 实现网络地址转换穿越的方法、系统
US7162533B2 (en) * 2004-04-30 2007-01-09 Microsoft Corporation Session description message extensions
US7626950B2 (en) * 2004-08-18 2009-12-01 At&T Intellectual Property, I,L.P. SIP-based session control among a plurality of multimedia devices
US7630328B2 (en) * 2004-08-18 2009-12-08 At&T Intellectual Property, I,L.P. SIP-based session control
US10116691B2 (en) * 2004-11-23 2018-10-30 Kodiak Networks, Inc. VoIP denial-of-service protection mechanisms from attack
US20060168626A1 (en) * 2005-01-21 2006-07-27 U-Turn Media Corporation Methods and systems for providing video content to a mobile client
US20060168578A1 (en) * 2005-01-21 2006-07-27 U-Turn Media Corporation Methods and systems for managing a mobile client in a client-server system connected via a public network
KR101181174B1 (ko) * 2005-01-26 2012-09-18 삼성전자주식회사 푸쉬투토크 오버 셀룰러 시스템 사용자의 단말 교체시세션 지속 보장 방법 및 그 시스템
US8139729B2 (en) 2005-04-27 2012-03-20 Verizon Business Global Llc Systems and methods for handling calls associated with an interactive voice response application
US8432896B2 (en) * 2005-07-22 2013-04-30 Cisco Technology, Inc. System and method for optimizing communications between session border controllers and endpoints in a network environment
US9021134B1 (en) * 2006-03-03 2015-04-28 Juniper Networks, Inc. Media stream transport conversion within an intermediate network device
US8930560B2 (en) * 2006-07-10 2015-01-06 Verizon Patent And Licensing Inc. Re-directing video according to a standard protocol
ES2685443T3 (es) 2006-11-02 2018-10-09 Voip-Pal.Com, Inc. Producir mensajes de enrutamiento para comunicaciones de voz sobre IP
BRPI0719682B1 (pt) 2006-11-29 2020-11-24 Voip-Pal.Com, Inc. Interceptando comunicaqoes de voz via ip e outras comunicaqoes de dados
EP1933519A1 (en) * 2006-12-12 2008-06-18 Koninklijke KPN N.V. Streaming media service for mobile telephones
WO2008116296A1 (en) 2007-03-26 2008-10-02 Digifonica (International) Limited Emergency assistance calling for voice over ip communications systems
CN101137043B (zh) * 2007-04-13 2010-04-21 华为技术有限公司 流媒体频道切换的方法、系统及装置
US20080320263A1 (en) * 2007-06-20 2008-12-25 Daniel Nemiroff Method, system, and apparatus for encrypting, integrity, and anti-replay protecting data in non-volatile memory in a fault tolerant manner
US8051185B2 (en) * 2008-05-16 2011-11-01 Fastsoft, Inc. Network communication through a specified intermediate destination
EP2311292B1 (en) 2008-07-28 2020-12-16 Voip-Pal.Com, Inc. Mobile gateway
TWI408936B (zh) * 2009-09-02 2013-09-11 Ind Tech Res Inst 網路穿透方法及網路通訊系統
CA2812174C (en) 2009-09-17 2018-05-15 Digifonica (International) Limited Uninterrupted transmission of internet protocol transmissions during endpoint changes
US7921150B1 (en) * 2009-10-23 2011-04-05 Eastman Kodak Company Method for viewing videos on distributed networks
US8776202B2 (en) * 2011-04-08 2014-07-08 Cisco Technology, Inc. Method and apparatus to scale authenticated firewall traversal using trusted routing point
CN102413136B (zh) * 2011-11-21 2014-07-09 国网重庆市电力公司信息通信分公司 实现VoIP语音流穿透防火墙的VoIP系统及方法
US9143722B2 (en) * 2011-11-22 2015-09-22 Cisco Technology, Inc. Method and apparatus for providing session description for a media session
CN103580986B (zh) * 2012-07-30 2016-12-21 华为终端有限公司 一种实时通信方法、终端设备、实时通信服务器及系统
US20140199044A1 (en) 2013-01-15 2014-07-17 Qualcomm Incorporated Supporting transport diversity and time-shifted buffers for media streaming over a network
US10320676B2 (en) * 2014-02-28 2019-06-11 Cisco Technology, Inc. Smarter policy decisions based on metadata in data flows
US10001298B1 (en) * 2014-12-08 2018-06-19 National Technology & Engineering Solutions Of Sandia, Llc Methods for operating solar-thermochemical processes
KR101889841B1 (ko) * 2018-02-20 2018-08-21 (주)지란지교시큐리티 멀티미디어 파일 보안용 컨텐트 방화벽, 컨텐트 보안 시스템 및 기록매체
CN114553931B (zh) * 2022-02-23 2024-03-08 广州小鹏汽车科技有限公司 车辆共享存储空间的处理方法、设备、车辆及系统
CN117615023B (zh) * 2024-01-24 2024-04-12 浙江大华技术股份有限公司 跨网络边界的传输方法、电子设备和计算机可读存储介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6418476B1 (en) * 1998-06-29 2002-07-09 Nortel Networks, Limited Method for synchronizing network address translator (NAT) tables using the open shortest path first opaque link state advertisement option protocol
US6195705B1 (en) * 1998-06-30 2001-02-27 Cisco Technology, Inc. Mobile IP mobility agent standby protocol
CA2299824C (en) * 2000-03-01 2012-02-21 Spicer Corporation Network resource control system
US7114008B2 (en) * 2000-06-23 2006-09-26 Cloudshield Technologies, Inc. Edge adapter architecture apparatus and method
US7003555B1 (en) * 2000-06-23 2006-02-21 Cloudshield Technologies, Inc. Apparatus and method for domain name resolution
US7032031B2 (en) * 2000-06-23 2006-04-18 Cloudshield Technologies, Inc. Edge adapter apparatus and method
US6829654B1 (en) * 2000-06-23 2004-12-07 Cloudshield Technologies, Inc. Apparatus and method for virtual edge placement of web sites
GB2369746A (en) * 2000-11-30 2002-06-05 Ridgeway Systems & Software Lt Communications system with network address translation
US7133923B2 (en) * 2000-12-11 2006-11-07 Acme Packet, Inc. System and method for assisting in controlling real-time transport protocol flow through multiple networks via screening
AU2002258113A1 (en) * 2001-02-20 2002-09-24 Innomedia Pte Ltd. Device and system for sending datagrams in a real time streaming media communication system
US20020143957A1 (en) * 2001-04-03 2002-10-03 Murata Kikai Kabushiki Kaisha Relay server, network device, communication system, and communication method
US7274684B2 (en) * 2001-10-10 2007-09-25 Bruce Fitzgerald Young Method and system for implementing and managing a multimedia access network device
US7509425B1 (en) * 2002-01-15 2009-03-24 Dynamicsoft, Inc. Establishing and modifying network signaling protocols
WO2004023263A2 (en) * 2002-09-09 2004-03-18 Netrake Corporation System for allowing network traffic through firewalls
WO2004063843A2 (en) * 2003-01-15 2004-07-29 Matsushita Electric Industrial Co., Ltd. PEER-TO-PEER (P2P) CONNECTION DESPITE NETWORK ADDRESS TRANSLATOR (NATs) AT BOTH ENDS
US7454510B2 (en) 2003-05-29 2008-11-18 Microsoft Corporation Controlled relay of media streams across network perimeters

Cited By (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10313069B2 (en) 2000-09-13 2019-06-04 Qualcomm Incorporated Signaling method in an OFDM multiple access system
US8098568B2 (en) 2000-09-13 2012-01-17 Qualcomm Incorporated Signaling method in an OFDM multiple access system
US8098569B2 (en) 2000-09-13 2012-01-17 Qualcomm Incorporated Signaling method in an OFDM multiple access system
US9426012B2 (en) 2000-09-13 2016-08-23 Qualcomm Incorporated Signaling method in an OFDM multiple access system
US9130810B2 (en) 2000-09-13 2015-09-08 Qualcomm Incorporated OFDM communications methods and apparatus
US11032035B2 (en) 2000-09-13 2021-06-08 Qualcomm Incorporated Signaling method in an OFDM multiple access system
US10237892B2 (en) 2004-07-21 2019-03-19 Qualcomm Incorporated Efficient signaling over access channel
US10517114B2 (en) 2004-07-21 2019-12-24 Qualcomm Incorporated Efficient signaling over access channel
US11039468B2 (en) 2004-07-21 2021-06-15 Qualcomm Incorporated Efficient signaling over access channel
US10194463B2 (en) 2004-07-21 2019-01-29 Qualcomm Incorporated Efficient signaling over access channel
US9137822B2 (en) 2004-07-21 2015-09-15 Qualcomm Incorporated Efficient signaling over access channel
US10849156B2 (en) 2004-07-21 2020-11-24 Qualcomm Incorporated Efficient signaling over access channel
US9148256B2 (en) 2004-07-21 2015-09-29 Qualcomm Incorporated Performance based rank prediction for MIMO design
US9246560B2 (en) 2005-03-10 2016-01-26 Qualcomm Incorporated Systems and methods for beamforming and rate control in a multi-input multi-output communication systems
US9154211B2 (en) 2005-03-11 2015-10-06 Qualcomm Incorporated Systems and methods for beamforming feedback in multi antenna communication systems
US8547951B2 (en) 2005-03-16 2013-10-01 Qualcomm Incorporated Channel structures for a quasi-orthogonal multiple-access communication system
US8446892B2 (en) 2005-03-16 2013-05-21 Qualcomm Incorporated Channel structures for a quasi-orthogonal multiple-access communication system
US9461859B2 (en) 2005-03-17 2016-10-04 Qualcomm Incorporated Pilot signal transmission for an orthogonal frequency division wireless communication system
US9143305B2 (en) 2005-03-17 2015-09-22 Qualcomm Incorporated Pilot signal transmission for an orthogonal frequency division wireless communication system
US9520972B2 (en) 2005-03-17 2016-12-13 Qualcomm Incorporated Pilot signal transmission for an orthogonal frequency division wireless communication system
US9184870B2 (en) 2005-04-01 2015-11-10 Qualcomm Incorporated Systems and methods for control channel signaling
US9408220B2 (en) 2005-04-19 2016-08-02 Qualcomm Incorporated Channel quality reporting for adaptive sectorization
US9307544B2 (en) 2005-04-19 2016-04-05 Qualcomm Incorporated Channel quality reporting for adaptive sectorization
US9036538B2 (en) 2005-04-19 2015-05-19 Qualcomm Incorporated Frequency hopping design for single carrier FDMA systems
US8917654B2 (en) 2005-04-19 2014-12-23 Qualcomm Incorporated Frequency hopping design for single carrier FDMA systems
US8611284B2 (en) 2005-05-31 2013-12-17 Qualcomm Incorporated Use of supplemental assignments to decrement resources
US8462859B2 (en) 2005-06-01 2013-06-11 Qualcomm Incorporated Sphere decoding apparatus
US8599945B2 (en) 2005-06-16 2013-12-03 Qualcomm Incorporated Robust rank prediction for a MIMO system
US9179319B2 (en) 2005-06-16 2015-11-03 Qualcomm Incorporated Adaptive sectorization in cellular systems
US8885628B2 (en) 2005-08-08 2014-11-11 Qualcomm Incorporated Code division multiplexing in a single-carrier frequency division multiple access system
US9693339B2 (en) 2005-08-08 2017-06-27 Qualcomm Incorporated Code division multiplexing in a single-carrier frequency division multiple access system
US9246659B2 (en) 2005-08-22 2016-01-26 Qualcomm Incorporated Segment sensitive scheduling
US9209956B2 (en) 2005-08-22 2015-12-08 Qualcomm Incorporated Segment sensitive scheduling
US9860033B2 (en) 2005-08-22 2018-01-02 Qualcomm Incorporated Method and apparatus for antenna diversity in multi-input multi-output communication systems
US9240877B2 (en) 2005-08-22 2016-01-19 Qualcomm Incorporated Segment sensitive scheduling
US9660776B2 (en) 2005-08-22 2017-05-23 Qualcomm Incorporated Method and apparatus for providing antenna diversity in a wireless communication system
US8644292B2 (en) 2005-08-24 2014-02-04 Qualcomm Incorporated Varied transmission time intervals for wireless communication system
US8787347B2 (en) 2005-08-24 2014-07-22 Qualcomm Incorporated Varied transmission time intervals for wireless communication system
US9136974B2 (en) 2005-08-30 2015-09-15 Qualcomm Incorporated Precoding and SDMA support
US8879511B2 (en) 2005-10-27 2014-11-04 Qualcomm Incorporated Assignment acknowledgement for a wireless communication system
US9225488B2 (en) 2005-10-27 2015-12-29 Qualcomm Incorporated Shared signaling channel
US8693405B2 (en) 2005-10-27 2014-04-08 Qualcomm Incorporated SDMA resource management
US9210651B2 (en) 2005-10-27 2015-12-08 Qualcomm Incorporated Method and apparatus for bootstraping information in a communication system
US8842619B2 (en) 2005-10-27 2014-09-23 Qualcomm Incorporated Scalable frequency band operation in wireless communication systems
US9088384B2 (en) 2005-10-27 2015-07-21 Qualcomm Incorporated Pilot symbol transmission in wireless communication systems
US9172453B2 (en) 2005-10-27 2015-10-27 Qualcomm Incorporated Method and apparatus for pre-coding frequency division duplexing system
US8045512B2 (en) 2005-10-27 2011-10-25 Qualcomm Incorporated Scalable frequency band operation in wireless communication systems
US9225416B2 (en) 2005-10-27 2015-12-29 Qualcomm Incorporated Varied signaling channels for a reverse link in a wireless communication system
US9144060B2 (en) 2005-10-27 2015-09-22 Qualcomm Incorporated Resource allocation for shared signaling channels
US8582509B2 (en) 2005-10-27 2013-11-12 Qualcomm Incorporated Scalable frequency band operation in wireless communication systems
US8477684B2 (en) 2005-10-27 2013-07-02 Qualcomm Incorporated Acknowledgement of control messages in a wireless communication system
US10805038B2 (en) 2005-10-27 2020-10-13 Qualcomm Incorporated Puncturing signaling channel for a wireless communication system
US8565194B2 (en) 2005-10-27 2013-10-22 Qualcomm Incorporated Puncturing signaling channel for a wireless communication system
US8582548B2 (en) 2005-11-18 2013-11-12 Qualcomm Incorporated Frequency division multiple access schemes for wireless communication
US8681764B2 (en) 2005-11-18 2014-03-25 Qualcomm Incorporated Frequency division multiple access schemes for wireless communication

Also Published As

Publication number Publication date
US20090028146A1 (en) 2009-01-29
US7454510B2 (en) 2008-11-18
CN1574798A (zh) 2005-02-02
CN1574798B (zh) 2011-03-16
US20040244010A1 (en) 2004-12-02
US7945685B2 (en) 2011-05-17
JP2004355628A (ja) 2004-12-16
EP1484883A2 (en) 2004-12-08
KR101066757B1 (ko) 2011-09-21
EP1484883A3 (en) 2012-05-02

Similar Documents

Publication Publication Date Title
KR101066757B1 (ko) 미디어 세션 확립 방법
Scharf et al. Multipath TCP (MPTCP) application interface considerations
US7316028B2 (en) Method and system for transmitting information across a firewall
US7483437B1 (en) Method of communicating packet multimedia to restricted endpoints
US8239520B2 (en) Network service operational status monitoring
US7227864B2 (en) Methods and systems for establishing communications through firewalls and network address translators
KR101495946B1 (ko) 직접 액세스 및 보안 평가 공유를 가능하게 하는 하드웨어 인터페이스
US20100274922A1 (en) System and method for managing long lived connections from a plurality of applications running on a wireless device
EP1977585A2 (en) Dynamic discovery of a network service on a mobile device
US9332068B2 (en) Mechanisms for transparently converting client-server software agents to peer-to-peer software agents
US8195806B2 (en) Managing remote host visibility in a proxy server environment
JP2009528757A (ja) ピアツーピア通信の検出及び制御
US6651174B1 (en) Firewall port switching
US20040117485A1 (en) Apparatus, method, and computer program product for tunneling TCP based client-server applications
Enghardt et al. TAPS Working Group B. Trammell, Ed. Internet-Draft Google Switzerland GmbH Intended status: Standards Track M. Welzl, Ed. Expires: 6 May 2021 University of Oslo
Enghardt et al. TAPS Working Group B. Trammell, Ed. Internet-Draft Google Switzerland GmbH Intended status: Standards Track M. Welzl, Ed. Expires: August 26, 2021 University of Oslo
Enghardt et al. TAPS Working Group B. Trammell, Ed. Internet-Draft Google Intended status: Standards Track M. Welzl, Ed. Expires: 10 September 2020 University of Oslo
Enghardt et al. TAPS Working Group B. Trammell, Ed. Internet-Draft Google Switzerland GmbH Intended status: Standards Track M. Welzl, Ed. Expires: January 28, 2021 University of Oslo
Enghardt et al. TAPS Working Group B. Trammell, Ed. Internet-Draft Google Switzerland GmbH Intended status: Standards Track M. Welzl, Ed. Expires: 14 January 2021 University of Oslo
Brunstrom et al. TAPS Working Group T. Pauly, Ed. Internet-Draft Apple Inc. Intended status: Standards Track B. Trammell, Ed. Expires: 12 May 2024 Google Switzerland GmbH
Brunstrom et al. TAPS Working Group T. Pauly, Ed. Internet-Draft Apple Inc. Intended status: Standards Track B. Trammell, Ed. Expires: 1 December 2023 Google Switzerland GmbH
Pauly et al. TAPS Working Group B. Trammell Internet-Draft ETH Zurich Intended status: Informational C. Perkins Expires: April 30, 2018 University of Glasgow
Banerjee Application Layer Concepts and Design Issues
Hegde SNA OVER SOCKETS DYNAMIC CONVERSION FROM SNA TO TCPIIP
Guide Unicenter® SOLVE: CPT™

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