KR100985237B1 - 패킷 라우팅을 위한 방법, 장치 및 시스템, 메시지 라우팅을 위한 방법 및 장치, 디지탈 컨텐트 분배를 위한 네트워크 및 방법, 및 라우팅 및 캐싱을 위한 방법, 네트워크 및 장치 - Google Patents

패킷 라우팅을 위한 방법, 장치 및 시스템, 메시지 라우팅을 위한 방법 및 장치, 디지탈 컨텐트 분배를 위한 네트워크 및 방법, 및 라우팅 및 캐싱을 위한 방법, 네트워크 및 장치 Download PDF

Info

Publication number
KR100985237B1
KR100985237B1 KR1020057000385A KR20057000385A KR100985237B1 KR 100985237 B1 KR100985237 B1 KR 100985237B1 KR 1020057000385 A KR1020057000385 A KR 1020057000385A KR 20057000385 A KR20057000385 A KR 20057000385A KR 100985237 B1 KR100985237 B1 KR 100985237B1
Authority
KR
South Korea
Prior art keywords
routing
network
packet
module
message
Prior art date
Application number
KR1020057000385A
Other languages
English (en)
Other versions
KR20050017108A (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 KR20050017108A publication Critical patent/KR20050017108A/ko
Application granted granted Critical
Publication of KR100985237B1 publication Critical patent/KR100985237B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/16Multipoint routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/52Multiprotocol routers
    • 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
    • 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/568Storing data temporarily at an intermediate stage, e.g. caching
    • 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/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
    • 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/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/185Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with management of multicast group membership
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1895Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for short real-time information, e.g. alarms, notifications, alerts, updates
    • 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/565Conversion or adaptation of application format or content
    • 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]

Landscapes

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

Abstract

비디오, 음악 및 소프트웨어 등과 같은 디지털 콘텐트의 분배에 있어서, 경보 서비스의 제공에 있어서, 그리고 서비스 보증의 품질에 따라, 분산 네트워크의 코어 내의 라우터들에서 페이로드 검사를 통해 패킷 라우팅을 이용한다. 패킷은 라우팅 정보에 부가하여 주제들 및 속성들을 포함한다. 주제들은 가입 콘텐트의 특별한 타입에들에 대응하고, 속성들은 데이터 또는 콘텐트를 캡슐화한다. 가입은 서비스 보증의 특별한 품질 또는 서비스 레벨과 연관될 수 있다. 라우터들은 콘텐트에 대한 가입에 대응한 필터들을 저장한다. 패킷을 수신하면, 속성들을 포함하는 패킷의 페이로드 섹션을 검사하여 속성들을 검색하고, 카메라로부터의 콘텐트에 대한 가입들에 대한 필터들에 이들을 적용한다. 속성이 필터를 충족시킨다면, 패킷은 그 다음 링크로 라우트된다. 속성들이 필터들을 충족시키지 않는다면, 라우터는 패킷을 무시한다. 이 라우팅 결정은 네트워크 코어 내의 라우터들 중에 분산되어 있다. 라우터는 네트워크 코어 내에 데이터를 국지적으로 캐시한다.
분산 네트워크, 경보 서비스, 라우터, 패킷, 속성, 필터, 디지털 콘텐트

Description

패킷 라우팅을 위한 방법, 장치 및 시스템, 메시지 라우팅을 위한 방법 및 장치, 디지탈 컨텐트 분배를 위한 네트워크 및 방법, 및 라우팅 및 캐싱을 위한 방법, 네트워크 및 장치{PACKET ROUTING VIA PAYLOAD INSPECTION FOR ALERT SERVICES, FOR DIGITAL CONTENT DELIVERY AND FOR QUALITY OF SERVICE MANAGEMENT AND CACHING WITH SELECTIVE MULTICASTING IN A PUBLISH-SUBSCRIBE NETWORK}
본 발명은 경보 서비스들(alert services)을 제공하는 데 사용하기 위한 패킷 내의 페이로드(payload)의 검사(inspection)에 기초하여 네트워크 코어(network core)에서 패킷들을 라우팅하기 위한 방법 및 장치에 관한 것이다.
[관련 출원의 참조]
본 출원은 2002년 7월 8일에 출원되고 발명의 명칭이 "Packet Routing Via Payload Inspection for Quality of Service Management"인 미국 가출원 제60/394,631호에 기초한 우선권을 주장하며, 이는 본 명세서에 참조로서 포함된다. 본 출원은 또한, 발명의 명칭이 "Packet Routing Via Payload Inspection"인 미국 특허 출원 제10/199,356호, 발명의 명칭이 "Method and Apparatus For Content-Based Routing And Filtering At Routers Using Channels"인 미국 특허 출원 제10/199,368호, 발명의 명칭이 "Method For Sending And Receiving A Boolean Function Over A Network"인 미국 특허 출원 제10/199,439호, 발명의 명칭이 "Method For Storing Boolean Functions To Enable Evaluation, Modification , Reuse, And Delivery Over A Network"인 미국 특허 출원 제10/199,369호, 및 발명의 명칭이 "Efficient Implementation of Wildcard Matching On Variable-Sized Fields In Connect-Based Routing"인 미국 특허 출원 제10/199,388호의 일부계속출원(Continuation-in-part(CIP))이며, 이들은 모두 2002년 7월 19일에 출원되었고 모두 본 명세서에 참조로서 포함된다.
본 출원은 또한, 역시 앞서 참조된 출원들의 일부계속출원들이며 2003년 3월 28일에 출원된 이하의 미국 특허 출원들을 참조로서 포함하는데, 이들은 발명의 명칭이 "Method and Apparatus for Reliable Publishing and Subscribing in an Unreliable Network"인 출원 제10/400,671호, 발명의 명칭이 "Method and Apparatus For Content-Based Routing Using Compact Filter Storage and Off-Line Pre-computation"인 출원 제10/400,465호, 발명의 명칭이 "Method and Apparatus for Implementing Query-Response Interactions in a Publish-Subscribe Network"인 출원 제10/400,453호, 발명의 명칭이 "Method and Apparatus for Implementing Persistent and Reliable Message Delivery"인 출원 제10/400,462호, 및 발명의 명칭이 "Method and Apparatus for Propagating Content Filters for a Publish-Subscribe Network"인 출원 제10/400,444호이다.
네트워크 대역폭은 기하급수적으로 증가하고 있다. 한편, 네트워크 인프라구조(라우터, 서버, 데몬(daemon), 프로토콜 등을 포함)는 여전히 상대적으로 오래된 기술들을 사용하고 있다. 그 결과, 인터넷 애플리케이션들 및 네트워크 라우터들은 대역폭 증가 속도를 따라갈 수가 없다. 동시에, 점점 많은 장치들 및 애플리케이션들이 네트워크에서 사용 가능하게(network enabled) 되고 있다. 이러한 장치들 및 애플리케이션들이 네트워크 노드들 상에 가하는 부하가 엄청나게 증가하게 되었다. 네트워크 부하 및 애플리케이션들의 수가 증가는 또한 네트워크 애플리케이션들의 구현 및 유지를 훨씬 복잡하게 한다. 그 결과, 네트워크 대역폭의 증가 및 네트워크 장치들 및 애플리케이션들의 편재하는(ubiquitous) 사용은, 특히 콘텐트를 가입자들(subscribers)에게 발행(publish)할 때, 오래된 네트워크 인프라구조에서의 데이터의 라우팅 및 전송에 대해 문제를 가져올 수 있다.
네트워크로 하여금 서버들로부터 클라이언트들로 정보를 전달하게(push) 하기 위한 모델이 발행-가입 형태(publish-subscribe style)이다. 이러한 모델에서, 어떤 클라이언트들이 서버의 정보에 관심을 가질 수 있는지 또는 그들이 네트워크에서 어디에 위치하는지와 무관하게, 서버는 그 정보의 단순화된 발행자가 된다. 클라이언트들은 정보에 대한 가입자들이 되는데, 정보는 그것이 네트워크에서 어디서 발행되었는지에 관한 세부 사항들과 잠재적으로 무관하게, 그것이 이용 가능하게 된 때에 전달된다. 이어서 네트워크는 발행된 정보를 가입자들에게 효율적으로 라우팅하고, 능동 가입들(active subscriptions)과 정보를 매칭하며, 발행자들 및 가입자들에게 투명한(transparent) 방식으로 이러한 모든 일들을 행하는 것에 대한 책임을 진다.
발행-가입 모델에서 서버의 복잡도(complexity)가 상당히 감소하게 때문에, 큰 부하의(heavyweight) 서버 및 작은 부하의(lightweight) 클라이언트 간의 구별이 사라지기 시작할 수도 있고, 오히려 발행자, 또는 가입자, 또는 양자일 수 있는 피어(peer)의 개념(notion)으로 통합되기 시작할 수도 있다. 여러 종류의 애플리케이션들은 피어들 간의 발행-가입 형태의 상호작용(interaction)에 대해 자연적 동질성(natural affinity)을 갖는다. 이러한 애플리케이션들의 기반에 있는 공통된 주제(theme)는 발행되고 가입되고 있는 정보가 이벤트들의 형태로 되어 있다는 점이다. 예를 들어, 투자자는 주식을 사거나 팔아서 그 주식의 가격에 변동을 초래한다. 도로에서 교통 사고가 발생하면 도로 상의 교통량의 정체를 초래한다. 소프트웨어 시스템의 보안 구멍(security hole)이 발견되면, 그 소프트웨어의 사용자들을 위해 패치가 개발되도록 한다. 인터넷 게임에서 플레이어가 무기를 발사하면, 다른 플레이어의 아바타(avatar)가 죽게 된다. 이러한 모든 예시적인 현상은 많은 수의 가입자들에게 잠재적으로 관심의 대상인 이벤트들이며 그러한 가입자들에게 그 이벤트들이 발생했음을 통지하기 위해 네트워크를 거쳐 전파(propagate)될 수 있다. 따라서 이벤트는, 네트워크 상의 소정의 장소에서 소정의 시점에서 발생한 잠재적으로 흥미로운 어떤 일에 관한, 자체-완비된(self-contained) 간결한(succinct) 하나의 정보이다.
통상적으로 서버 또는 발행자는 발행-가입 모델에서 어느 곳으로 발행된 콘텐트를 전송할 것인지를 네트워크에게 지시하기 위해 네트워크에 대해 라우팅 결정들(routing decisions)을 수행한다. 발행자는 그가 발행한 콘텐트에 대한 가입들 을 저장한다. 새로운 콘텐트를 수신하거나 생성하는 때에, 발행자는 그 콘텐트를 각각의 가입들과 비교하여 부합(match)하는 것이 있는지 식별한다. 콘텐트(이벤트)가 임의의 가입들을 충족하는 경우에, 발행자는 네트워크를 통해 그 콘텐트를 대응하는 가입자에게 전달(push)한다. 이러한 전통적인 발행-가입 모델은, 특히 점점 많은 장치들이 네트워크에서 사용 가능하게 되고 가입들의 수가 증가함에 따라, 발행자에게 엄청난 부담(burden)을 지운다.
인터넷에 걸쳐 있는 막대한 수의 애플리케이션들이 보다 크게 집중(convergence)되면, 이벤트 통지(event notification)의 이용에 대한 가능성들이 무한하게 된다. 그러나, 그러한 가능성들은, 라우팅 결정들을 행하고 이벤트들이 가입들을 충족하는 시기를 결정하여 발행자들의 부담을 덜어주는 보다 효율적인 방식을 필요로 한다. 따라서, 널리 보급되며(pervasive), 지속적인(persistent) 이벤트 통지 서비스는 인터넷 애플리케이션들뿐만 아니라 다른 애플리케이션들 및 구현들에 대하여 상당한 부가가치가 있는 이점을 제공할 수 있다.
본 방법 및 장치는 네트워크에서 경보 서비스들을 제공하는데 사용되기 위한 패킷들의 라우팅을 제공한다. 본 방법 및 장치는 종래 기술의 단점들을 극복한다. 본 방법 및 장치의 장점은 비디오 클립들의 처리 및 라우팅에 있어서 네트워크의 부담을 상당히 감소시키는 것을 포함한다. 다른 장점은 비디오 클립들의 라우팅에 대한 대역폭 요구사항들(bandwidth requirements)을 감소시키는 것을 포함한다. 또 다른 장점은 디지털 비디오 레코더 근거리 네트워크(digital video recorder local area network) 상의 국부적 트래픽(local traffic)을 감소시키는 것을 포함한다.
이들 및 다른 장점들을 달성하기 위한 실시예에서, 헤더 가입(header section) 및 페이로드 가입(payload section)을 갖는 패킷이 수신되며, 페이로드 섹션은 특정 카메라로부터의 비디오 클립에 관한 정보를 포함한다. 페이로드 섹션은, 특정 카메라로부터의 정보에 관련된 가입자들에게 패킷을 어떻게 라우팅하는지를 결정하기 위해, 네트워크 코어에서 검사(inspect)되며, 그 패킷은 검사에 기초하여 선택적으로 라우팅된다. 이들 및 다른 장점들은 또한, 예를 들어, 이러한 단계들을 수행하기 위한 모듈들을 포함하는 장치에 의해 달성될 수 있다.
이들 및 다른 장점들은 또한, 예를 들어, 경보 서비스들을 제공하는 네트워크에서 메시지들을 라우팅하기 위한 방법에 의해 달성될 수 있다. 그 방법은 헤더 가입, 적어도 하나의 주제(subject), 특정 카메라로부터의 비디오 클립과 관련된 적어도 하나의 속성(attribute)을 갖는 메시지를 수신하는 단계, 그 주제 및 속성을 메시지로부터 검색하는 단계, 주제에 기초하여 가입을 검색하는 단계, 및 특정 카메라로부터의 정보에 관련된 가입자에게 패킷을 어떻게 라우팅할지 결정하기 위해 네트워크 코어에서 속성을 가입에 적용하는 단계를 포함한다. 이들 및 다른 장점들은 또한, 예를 들어, 이러한 단계들을 수행하기 위한 모듈들을 포함하는 장치에 의해서 달성될 수 있다.
이와 유사하게, 이들 및 다른 장점들은, 예를 들어, 네트워크에서 경고 서비스들을 제공하는데 사용되기 위한 패킷들을 라우팅하기 위한 방법에 의해 달성될 수 있다. 이 방법은 특정 경보 서비스에 대한 이벤트에 관한 정보를 포함하는 페이로드 가입 및 헤더 가입을 갖는 패킷을 수신하는 단계, 경보 서비스에 대한 정보에 관련된 가입자들에게 패킷을 어떻게 라우팅할지 결정하기 위해 네트워크 코어에서 패킷의 페이로드 가입을 검사하는 단계, 및 그 검사에 기초하여 패킷을 선택적으로 라우팅하는 단계를 포함한다. 이들 및 다른 장점들은 또한, 예를 들어, 이러한 단계들을 수행하기 위한 모듈들을 포함하는 장치에 의해서 달성될 수 있다.
도 1은 네트워크 코어에서의 지능형 라우팅을 도시하는 도면.
도 2는 발행자들 및 가입자들을 위한 지능형 라우터들을 도시하는 네트워크도(network diagram).
도 3은 지능형 라우터들 및 백본 라우터들에 대한 네트워크 인프라구조를 도시하는 도면.
도 4는 지능형 라우터의 하드웨어 컴포넌트들의 도면.
도 5는 발행자 및 사용자 기기들의 도면.
도 6은 지능형 라우터들의 채널 관리자들을 도시한 도면.
도 7은 사용자 머신을 지능형 라우터들과 인터페이스하기 위한 사용자 머신의 소프트웨어 컴포넌트를 도시한 도면.
도 8은 지능형 라우터를 위한 소프트웨어 컴포넌트들을 도시한 도면.
도 9는 메시지를 위한 패킷 구조를 도시한 도면.
도 10은 발행자(publisher) 메소드의 흐름도.
도 11은 가입자(subscriber) 메소드의 흐름도.
도 12는 채널 및 가입자 스크린들을 도시한 도면.
도 13은 콘텐트 기반 라우팅 메소드(content-based routing method)의 흐름도.
도 14는 캐싱 메소드(caching method)의 흐름도.
도 15는 캐시 인덱스(cache index)를 도시하는 도면.
도 16은 발신 메시지(outgoing message)를 위한 에이전트 메소드(agent method)의 흐름도.
도 17은 착신 메시지(incoming message)를 위한 에이전트 메소드의 흐름도.
도 18은 메시지 인코딩의 예를 도시하는 도면.
도 19는 가입을 저장하기 위한 데이터베이스 구조를 도시하는 도면.
도 20은 와일드카드 메소드(wildcard method)의 흐름도.
도 21은 디지털 비디오 감시 시스템(digital video surveillance system)을 도시하는 도면.
도 22는 2단계 접근법(two-stage approach)에서 디지털 비디오 감시 시스템을 위한 프락시(proxy)를 도시하는 도면.
도 23은 디지털 콘텐트 전달을 위한 구조를 도시하는 도면.
도 24는 디지털 콘텐트 전달을 위한 제1단 구조(phase 1 architecture)를 도시하는 도면.
도 25는 디지털 콘텐트 전달을 위한 제2단 구조(phase 2 archtecture)를 도 시하는 도면.
도 26은 서비스 관리 품질을 위한 다수의 아웃 링크(out-link)들을 도시하는 도면.
도 27은 서비스 관리 품질을 위한 단일 아웃 링크를 도시하는 도면.
도 28은 ISP 외부에서의 필터링 및 동적 캐싱을 도시하는 도면.
도 29는 네트워크에서의 캐시(cache)를 도시하는 도면.
도 30은 업스트림 라우터(upstream router)에서 백업 지속 캐시(backup persistent cache)를 도시하는 도면.
도 31은 프락시를 갖는 캐시와 라우터의 상호작용을 도시하는 도면.
도 32는 가입자 상에서의 캐시 생성을 도시하는 도면.
도 33은 인덱싱 트리(indexing tree)를 도시하는 도면.
도 34는 다수의 캐시들로부터의 검색(retrieval)을 도시하는 도면.
도 35는 시스템 내의 다른 모듈들과 캐시 관리자의 상호작용을 도시하는 도면.
도 36은 캐시를 위한 파일 디렉토리 구조를 도시하는 도면.
첨부된 도면들은 본 명세서에 포함되며 그 일부를 구성하고, 실시예와 함께 본 발명의 장점들 및 원리들을 설명한다.
개요
인터넷 규모 또는 다른 분산 네트워크 규모의 이벤트 통지 시스템은 발행-가입(publish-subscribe) 네트워킹을 강력하고 융통성있게 실현한 애플리케이션을 제공한다. 이러한 시스템에서, 통지의 발행 및/또는 네트워크 내에서 발생한 이벤트들에 대한 가입과 그에 관한 통지의 수신을 위하여 애플리케이션 프로그램은 이벤트 통지 API(Application Program Interface)들을 사용한다.
시스템 내의 통지에는, 통지가 캡슐화한(encapsulate) 정보의 종류를 구분하는 문자열 또는 다른 구조인 주제(subject)가 주어진다. 또한, 통지는, 통지에 특정한 정보를 포함하는 한 세트의 속성들(attributes)로 완성된다. 예컨대, 애플리케이션은 quotes.nyse라는 주제와, 심볼 및 가격 속성을 이용하여 뉴욕 주식 시장에서의 거래에 대한 통지들을 발행할 수 있다. 애플리케이션은 특정 속성 값들, 예컨대 SNE(Sony에 대한 주식 속보 심볼)에 해당하는 심볼 및 85.25에 해당하는 가격을 갖는 개별 통지를 발행할 수 있다. 속성들이 동일한 주제 군(family of subject)을 위한 모든 통지들에서 발견된다는 의미에서, 통지의 모두는 아니지만 대부분의 속성들은 사전 정의되어 있다. 하지만, 발행자들은 부가적인 이벤트에 특정한 정보를 제공하기 위하여 통지당(per-notification) 또는 다른 기반으로 임의의 속성들을 추가할 수 있다. 따라서, 모든 또는 임의의 속성들이 사전 정의될 필요가 있는 것은 아니다.
이러한 시스템에서, 가입자들은 주제들 또는 전체 채널들에 대해서만 가입하도록 제한되지는 않는다. 채널들에 대해서는 이하에서 추가로 설명하고, 정의될 것이다. 그들은 예컨대, 주제 필드 및 하나 이상의 수준의 관련 서브 필드(하위-주제)를 지정하는 계층적 구조(hierarchical structure)를 포함할 수 있다. 그러므로, 가입자들은 통지의 속성에 대하여 콘텐트 기반 필터들을 지정함으로써 보다 정교하게 조절된 관심 표현들(expressions of interest)을 제공할 수 있다. 예컨대, 가입자는 SNE에 해당하는 심볼 및 (아마도 가입자가 소유한 한 블록의 주식들을 위한 매도 기회를 나타내는)90.00에 해당하는 가격을 갖는 quotes.nyse라는 주제에 대한 모든 통지들에 대해 가입할 수 있다. 가입자가 자신의 가입을 등록하는 시점 또는 다른 시점들에서 가입자가 제공한 콜백(callback) 또는 다른 타입의 메소드를 통해 가입자에게 상기 가입과 일치하는 모든 통지들이 전달될 수 있다. 하나의 가입은 많은 필터들로 나누어질 수 있다.
콜백은 단말기에 메시지를 기록하거나 이메일을 송신하는 것과 같은 단순한 일부터 한 블록의 주식의 매도를 시작하는 복잡한 일 및 (예컨대, 75.00 가격의 매수 기회를 위하여 기존의 가입을 신규 가입으로 대체하거나, 가입자의 포트폴리오가 변경되었다는 신규 통지를 발행하는) 새로운 발행-가입 활동을 시작하는 훨씬 복잡한 일까지를 포함하는 많은 연산을 수행할 수 있다.
애플리케이션들은 자신들의 발행 및 가입 활동에 있어 예컨대, 에이전트들의 도움을 받을 수 있다. 에이전트들은 프락시들을 이용하거나 이들을 이용하여 구현될 수 있다. 에이전트가 사용되는 경우, 에이전트들은 발신 통지들 및 가입들을 위한 네트워크 접속과, 가입자들로의 통지와 일치하는 착신의 전달을 제공한다. 통지가 네트워크에 진입하면, 라우터들의 시스템 네트워크는 가입이 통지와 일치하는 모든 가입자들에게 상기 통지들을 전파시킨다. 이러한 작업을 수행하는 한 가 지 방법은 네트워크의 모든 지점에 통지를 브로드캐스팅(broadcast)하고, 애플리케이션 에이전트들이 해당 통지가 자신의 가입자와 관련된 것인지를 결정하도록 하는 것이 될 것이다. 하지만, 이는 확장가능한 접근법은 아닌데, 네트워크는 통상 메시지 트래픽의 부하로 금방 뒤덮혀버리고, 특히 많은 수의 활동적이고 다수의 트래픽을 유발시키는 발행자들이 존재하는 경우에 더욱 그러하기 때문이다. 충분한 대역폭이 문제가 아니라 할지라도, 가입자들은 지나치게 많은 통지들을 처리해야 함으로써 압도되어 버릴 것이다.
본 시스템의 예시적인 네트워크는 통지들을 라우팅하는 방식에 있어서 훨씬 효율적이다. 첫 번째로, 그것은 통지가 예컨대, 네트워크의 임의의 링크에 대하여 최대 한번만 전파된다는 것을 보장하기 위하여 멀티캐스트 라우팅(multicast routing)을 사용할 수 있다. 두 번째로, 그것은 가능한한 통지들의 전파를 감소시키기 위하여 필터들에 다수의 정교한 최적화를 사용할 수 있다.
도 1은 네트워크 코어(network core)에서의 이러한 지능형 라우팅을 개념적으로 도시하는 도면이다. 발행자(14)는 에지 라우터(edge router; 16)를 통해 발행-가입 네트워크에서 사용되는 네트워크 코어(10)로 메시지 내의 콘텐트를 전송한다. 발행자로부터 가입자들에게 데이터 또는 콘텐트를 라우팅하기 위한 발행-가입 네트워크는 임의의 타입의 네트워크를 포함한다. 라우터들과 다른 장치들 사이의 논리적인 접속들을 나타내는 하나 이상의 채널들(18)을 통해 콘텐트가 전송된다. 네트워크 코어(10)의 지능형 라우터(12)는 메시지를 라우팅 또는 포워딩할 것인지를 결정한다. 특히, 지능형 라우터(12)는 메시지가 가입자(24)에 의해 가입된 대로의 콘텐트를 포함하는지를 판단할 수 있다.
각각의 가입은 주제 필터 및 속성 필터를 캡슐화할 수 있다. 라우터들은 주제 필터를 한 세트의 일치하는 주제들로 확장하고, 속성 필터들을 주제당 기반(per-subject basis)으로 병합할 수 있다. 지능형 라우터는 통지의 주제에 대하여 주제 필터를 평가하고, 통지들의 속성 값에 대하여 속성 필터를 평가한다. 주제 필터들을 위한 문법은 와일드카드들을 사용할 수 있고, 속성 필터들을 위한 문법은 부울 표현식(Boolean expression)을 사용할 수 있는데, 이들 모두에 대하여 이하에서 추가로 설명된다. "필터"라는 용어는, 가입자가 발행자들로부터 수신하고자 하는 한 세트의 이벤트들을 기술하기 위하여 사용된다. 라우팅 규칙들이 필터들로부터 생성되고, 라우팅 결정을 내리기 위하여 지능형 라우터들에 의해 사용된다.
따라서, 예컨대, 전체 필터 세트가 메시지(26)에 의해 만족되지 않으면, 지능형 라우터(12)는 메시지(26)을 버리는데(폐기하는데), 이는 메시지가 포워딩되지 않음을 의미한다. 예컨대, 주제 및 속성 필터의 평가에 의해 전체 세트 중의 임의의 필터가 메시지(20)에 의해 만족되면, 지능형 라우터(12)는 에지 라우터(22) 및 다른 장치들을 통해 메시지(20)를 가입자(24)에게 라우팅(포워딩)하거나, 그 부합하는 필터에 대하여 정의된 모든 라우팅 및/ 또는 동작 규칙들에 따라서 메시지(20)에 대하여 라우터(12) 내부적으로 다른 기능들을 수행한다. 이러한 검색은 필터들의 전체 세트를 다 검토하는 것, 또는 모든 규칙들에 대한 판정이 이루어지는 것 중 어느 것이든 먼저 완료될 때까지 계속된다.
네트워크 코어에서의 이러한 타입의 지능형 콘텐트 기반 라우팅은 예컨대, 경보 및 업데이트의 실시간 데이터 전달(real-time data delivery)을 제공한다. 경보를 위한 실시간 데이터 전달의 예는 주식 시세, 교통, 뉴스, 여행, 날씨, 사기 적발(fraud detection), 보안, 텔레매틱스(telematics), 공장 자동화, 공급망 관리(supply chain management) 및 네트워크 관리를 포함하지만, 이에 제한되지는 않는다. 업데이트를 위한 실시간 데이터 전달의 예는 소프트웨어 업데이트, 안티-바이러스 업데이트, 영화 및 음악 전달, 워크플로우(workflow), 저장 관리 및 캐시 일관성(cache consistency)을 포함하지만, 이에 제한되지 않는다. 가입에 대한 정보 전달에 있어서 많은 다른 애플리케이션들이 가능하다.
표 1은 필터링을 위한 주제(subject) 및 술어(predicate)를 포함한 가입의 저장에 관하여 보여주고 있다. 이들은 네트워크상 어느 곳에나, 요청과 필요에 따라, 어떠한 데이터 구조로도 저장될 수 있다. 이하 설명하는 바와 같이, 술어는 가입의 구성 요소이다. 가입은 임의의 방식으로도 표현될 수 있으며, 그 예가 다음과 같이 제공된다.
표 1
가입1 주제 1 술어 1
...
가입 N 주제 N 술어 N
표 2는 인용 서버(quote server)에 대한 가입 및 발행의 예를 제공한다. 이 예는 예시적 목적으로만 제공되는 것이며, 가입은 임의의 타입의 데이터나 콘텐트에 관한 어떠한 수의, 그리고 어떠한 타입의 파라미터도 포함할 수 있다.
표 2
인용 서버 예
주제 트리
Quotes.NYSE
Quotes.AMEX
Quotes.NASDAQ
발행
주제 = Quotes.NYSE
속성
Symbol = SNE
Price = 51
Volume = 1000000
속성
Symbol
Price
Volume
가입
주제 = Quotes.NYSE
필터
(Symbol = SNE) & (Price > 55)
상기 술어는 가입에 관하여 부울 표현식을 제공하고 상기 주제는 가입을 위한 채널 표지를 제공한다. 가입은 많은 상이한 방식으로 표현될 수 있다. 부울 표현식을 사용한 것은 그 한 가지 예이며 콘텐트 기반 라우팅을 위하여 가입을 주제 필터 및 속성 필터로 용이하게 변환할 수 있는 능력을 제공한다. 이와 달리, 가입은 주제를 참조하지 않고서 표현될 수도 있다. 그러나, 채널(추후 설명됨)이나 주제의 사용은 속성에 대한 필터의 적용과 해석에 관한 문맥(context)을 제공한다.
라우팅 결정이 네트워크 코어에서 이루어져 네트워크 전체에 걸쳐 분배되어, 발행자와 가입자 머신 상의 처리 부담을 경감시키며, 네트워크의 효율을 크게 강화시킨다. 도 1은 한 명의 발행자, 한 명의 가입자, 그리고 하나의 지능형 라우터를 오로지 예시적 목적으로 도시하고 있으며, 다수의 발행자, 다수의 가입자, 그리고 다수의 지능형 라우터를 포함하여 구현될 수도 있다. 지능형 라우터라는 용어는 네트워크 코어 또는 기타 위치에서 패킷이나 메시지의 페이로드를 검사함으로써 라우팅 결정을 내릴 수 있는 능력을 갖춘 라우터나 기타 엔티티를 말한다.
네트워크 인프라구조
도 2는 발행자 및 가입자를 위한 지능형 라우터를 보여주는 네트워크를 도시한 도면이다. 채널 서비스를 제공하는 라우팅 엔티티(30)는, 예컨대 이하 설명되는 바와 같이, 지능형 라우터들 간에 메시지를 라우팅하도록 네트워크 인프라구조 상에 유효하게 계층화된다. 개념적으로, 발행자(32)는, 예컨대 발행되는 콘텐트의 표지(예를 들어, 콘텐트 검색을 위한 포인터)를 송신하는 애플리케이션(34)과, 채널 서비스(30)를 통한 네트워크 송신을 위하여 콘텐트를 인코딩하는 에이전트(36)를 포함한다. 논리적으로 상호 접속된 지능형 라우터들(38,40,42,44,46,48)의 모음은 가입에 관한 주제 필터 및 속성 필터로부터 생성된 라우팅 규칙을 이용해서 발행자로부터의 콘텐트를 라우팅한다. 복수의 링크(39,41,43,45)가 지능형 라우터(38,40,42,44,46,48)들 간에 논리 접속을 제공한다. 또 다른 링크(37,47)는, 각각, 발행자(32)와 지능형 라우터(38) 사이, 그리고 가입자(54)와 지능형 라우터(46) 사이에 논리 접속을 제공한다. 가입자(54)는 가입한 콘텐트를 검출하고 수신하는 에이전트(50)와, 콘텐트를 제시하는 애플리케이션(52)을 포함한다.
채널은, 예컨대, 분산 방식으로 구현된, 관련된 일군의 논리적 멀티캐스트형 접속을 포함할 수 있다. 본 예시적 실시예에 있어서 채널은 콘텐트를 교환하는 발행자와 가입자 커뮤니티를 지원하는데 이용되는 논리적으로 관련된 네트워크 리소스 모음이다. 콘텐트는 채널 주제 이름공간에 따라 분류되고, 리소스는 채널 관리자에 의하여 제공되는 채널 서비스를 통해서 관리, 제어 및 공급된다. 다수의 채널이 동일한 리소스를 공유할 수 있다. 채널은 고도로 스케일 가능한 디렉토리 서 비스, 예컨대 발행자 및 가입자 정보, 증명 및 인증 정보, 메시지 타입, 관리 정보, 그리고 계정 및 과금 정보를 제공할 수 있으며, 다만 이로써 제한되는 것은 아니다. 채널은 또한 예컨대, 캐싱을 통한 지속성(persistence), 고속 데이터 전달 메카니즘, 보안, 그리고 사용자 및 네트워크 관리를 제공할 수 있다. 채널은 임의의 기타 목적을 위해서도 이용될 수 있다.
지능형 라우터에 의한 필터링이 네트워크 코어에서 발생하여 라우팅 결정을 분배할 수 있다. 또한, 지능형 라우터는 발행자나 가입자 등의 사용자 장치를 네트워크 코어와 연결하는 에지 라우터로도 기능한다. 또한, 네트워크에 연결된 동일한 장치가 발행자로서 기능하여 네트워크에서의 라우팅 결정을 통해 콘텐트를 가입자에게 전달(push)하고, 아울러 수신된 전달 콘텐트에 대한 가입자로 기능할 수 있다. 지능형 라우터 및 채널은, 특정 구현을 위하여 요구되고 필요로 되는 바와 같이, 임의의 구성으로 접속될 수 있으며, 도 2에 도시된 구성은 예시적 목적으로 제공된 것이다.
도 3은 지능형 라우터 및 통상적 백본 라우터에 관한 예시적 네트워크 인프라구조를 도시한 도면으로서, 채널에 관한 논리 접속을 보여주고 있다. 본 실시예에서의 지능형 라우터는 네트워크, 예컨대 인터넷이나 기타 분산형 네트워크에 있어서 기존의 백본 라우터를 이용하며, 따라서 그 지능형 라우터는 백본 라우터 상에 유효하게 계층화된다. 본 실시예에서, 인터넷 서비스 제공자(Internet Service Provide;ISP) 네트워크(58,59,60) 각각은 메시지 또는 패킷의 통상적 라우팅을 위한 수 개의 백본 라우터를 포함한다. 복수의 지능형 라우터(61-70)는 ISP 네트워크(58,59,60)에서의 하나 이상의 백본 라우터와 연결되어 있다. 또한, 복수의 지능형 라우터(61-70)는 복수의 링크(73-85)(링크의 예를 나타냄)에 의하여 상호 접속되며, 그러한 링크에 의하여 최종 사용자 장치로도 연결될 수 있다. 지능형 라우터(61-70)는 엔티티(71) 등과 같은 하나 이상의 관리자 머신 및 엔티티(72) 등과 같은 하나 이상의 가상 사설 네트워크(Vitual Private Network;VPN) 제어기에 의하여 제어될 수 있다. ISP 네트워크(58,59,60)도 또한 발행자 및 가입자 머신으로 연결될 것이다(도 3에는 도시되지 않음). ISP(58,59,60) 내의, 그리고 이들 상호 간의 백본 라우터가 기존의 네트워크 인프라구조 내에서 임의의 통상적 방식으로 상호 접속된다.
지능형 라우터(61-70) 및 링크(73-85)는, 도시된 바와 같이, 기존의 네트워크 인프라구조를 이용해서 구현될 수 있고, 이는 네트워크 코어에서 콘텐트 기반 라우팅을 제공한다. 링크(73-85)는 지능형 라우터(61-70)들 간 논리 접속을 나타내며, 예컨대 기존의 네트워크 인프라구조나 기타 장치를 이용하여 구현될 수 있다. 링크는, 예컨대, 터널이라 불리는 논리 접속을 이용해서 구현될 수 있다. 터널은 링크를 구현하는 네트워크 인프라구조인 하드웨어와, 가능하다면 소프트웨어를 포함할 것이며, 하나의 터널은 복수의 채널의 일구성 부분이 될 수 있다. 채널은 특정 타입의 콘텐트를 위한 논리 접속을 제공하고 따라서 채널을 통하여 송신된 속성들에 관한 문맥을 제공함으로써 지능형 라우터에서 콘텐트 기반 라우팅을 가능하게 한다. 지능형 라우터는 채널없이 라우팅 결정을 수행할 수도 있지만, 채널은 네트워크 코어 내에서 지능형 라우터에 의한 콘텐트 기반 라우팅의 효율을 증대시 킨다.
본 예시적 실시예에서는 채널 및 링크의 사용이 포함된다. 링크는 두 개의 라우터(지능형 라우터) 간 접속이다. 채널은, 일군의 라우터(대개 대규모)를 포함하며, 링크들을 상호 접속시켜 일-대-다(one-to-many) 또는 다-대-다(many-to-many) 논리 접속을 이루도록 정적 또는 동적으로 구성되는 네트워크 엔티티이다. 구체적으로, 채널은 그 채널의 본질적 특성을 나타내는 최상위 레벨 논리 엔티티이다. 하나의 채널 하에, 많은 수의 주제가 존재할 수 있다. 각각의 주제는 일군의 상호 접속형 라우터들을 포함하는 하나의 서브-네트워크(예컨대, 멀티캐스트 트리)를 형성할 것이다. 이들 주제-기반 서브-네트워크는 서로 상이한 방식으로 할당되고, 적응되며, 구성될 수 있다. 채널은 그 채널 하의 주제들에 대하여 형성된 모든 서브-네트워크의 모음이므로, 예컨대, 네트워크 메시와 유사할 수 있다.
도 4는 지능형 라우터(92)의 예시적 하드웨어 구성 요소들을 도시한 도면으로서, 이는 기타 참조되는 임의의 지능형 라우터와도 대응할 수 있다. 네트워크 노드(90)는 통상적 백본 라우터(95)와 접속된 지능형 라우터(92)를 포함할 수 있다. 지능형 라우터(92)는 메모리(94)와 보조 저장 장치(97)에 접속된 프로세서(93)를 포함하며, 메모리(94)와 보조 저장 장치(97) 각각은 데이터를 저장할 수 있고 캐싱할 수 있으며, 프로세서(93)에 의해서 실행할 수 있는 애플리케이션을 저장할 수 있다. 보조 저장 장치(97)는 비휘발성 데이터 저장 기능을 제공한다. 소프트웨어 제어 하에서 이하 설명되는 바와 같이, 프로세서(93)는 백본 라우터(95)에 대해 가입에 관한 주제 필터 및 속성 필터로부터 생성된 라우팅 규칙에 따라 그 백 본 라우터(95)가 메시지나 패킷을 라우팅(포워드)하거나 라우팅하지 않도록(폐기)하는 명령을 제공한다. 별도의 프로세서 제어형 장치로 구현된 것으로 도시되어 있지만, 이와 달리 지능형 라우터(92)는 백본 라우터(95) 내의 ASIC(application specific integrated circuit)으로 구현되어 가능하다면 내장형 소프트웨어를 구비한 하드웨어로써 지능형 라우팅 기능을 제공할 수도 있다. 이와 달리, 지능형 라우팅 기능은 또한 하나 또는 다수의 라우팅 장치에 있어서의 소프트웨어 및 하드웨어의 조합으로써 구현될 수도 있다.
도 5는 예시적 발행자 및 가입자 머신을 도시한 도면이다. 발행자 머신(100,118)은, 하나 이상의 발행자 애플리케이션(104) 및 에이전트 애플리케이션(105)을 저장한 메모리(102)와, 비휘발성 데이터 저장 기능을 제공하는 보조 저장 장치(112)와, 정보나 명령을 입력하기 위한 입력 장치(108)와, 메모리(102)에 저장된 애플리케이션이나 기타 저장 장치로부터 수신한 애플리케이션을 실행하는 프로세서(114)와, 정보를 출력하는 출력 장치(110)와, 정보의 비주얼 디스플레이를 제공하는 디스플레이 장치(116)를 포함할 수 있다.
가입자 머신(122,140)은, 하나 이상의 애플리케이션(126) 및 에이전트 애플리케이션(128)을 저장한 메모리(124)와, 비휘발성 데이터 저장 기능을 제공하는 보조 저장 장치(130)와, 정보나 명령을 입력하기 위한 입력 장치(132)와, 메모리(124)에 저장된 애플리케이션이나 기타 저장 장치로부터 수신한 애플리케이션을 실행하는 프로세서(134)와, 정보를 출력하는 출력 장치(136)와, 정보의 비주얼 디스플레이를 제공하는 디스플레이 장치(138)를 포함할 수 있다. 이와 달리, 발행자와 가입자 머신은, 임의의 구성으로써, 더 많거나 또는 더 적은 수의 구성 요소를 포함할 수 있고, 또는 상이한 구성 요소들을 포함할 수도 있다.
발행자 머신(100,118)은 네트워크(120), 예컨대 앞서 기술한 네트워크 등을 통하여 가입자 머신(122,140)에 접속된다. 네트워크(120)는 패킷이나 메시지에 의하여 네트워크 코어 내에서 콘텐트나 데이터의 분산형 라우팅을 제공하는 지능형 라우터를 포함한다. 단지 두 개의 발행자 및 가입자 머신이 도시되어 있지만, 네트워크(120)는 더 많은 발행자 및 가입자 머신을 포함하도록 스케일링될 수 있다. 발행자 및 가입자 머신은 임의의 프로세서 제어형 장치, 예컨대 서버, PC, 노트북 컴퓨터, PDA, 전화, 셀룰러 전화, 페이저, 기타 장치 등으로 구현될 수 있으나, 이들로 제한되는 것은 아니다. 지능형 라우터를 갖춘 네트워크(120)는, 유선 장치, 무선 장치 또는 양 장치들 모두를 연결하는, 임의의 유선 또는 무선 분산형 네트워크를 포함할 수 있다. 네트워크(120)는 또한 잠재적으로는 기존의 통상적 네트워크 인프라구조를 이용할 수 있다.
도 6은 지능형 라우터를 위한 채널 관리자(150)를 도시한 도면이다. 본 실시예에서, 채널 관리자(150)는 다수의 서버(152,154,156)를 포함하도록 구현되어 있다. 각 서버는 그 자신의 로컬 저장 장치(158,160,162)를 갖는다. 지능형 라우터(164,166,168)는 특정 채널에 관한 정보를 위하여 채널 관리자와 접속한다. 채널 관리자는 또한 데이터 지속성, 장애 극복 기능(fail over function), 기타 기능 등에 대해서도 대비할 수 있다. 그러므로, 채널 관리자는, 예컨대 채널 관련형 정보, 데이터 지속성에 관한 속성, 발행자 및 가입자에 대한 사용자 정보, 및 인프라 구조 정보 등을 지정하는 네트워크 내 임의의 위치의 데이터베이스 또는 데이터베이스 세트를 포함하는 채널 서비스를 제공한다. 인프라구조 정보에는, 예컨대 지능형 라우터의 식별자 및 지능형 라우터들을 연결하는 대응 터널, 채널에 대한 주제, 및 채널에 대한 속성(각 속성에 관한 이름과 타입) 등이 포함될 수 있다. 패킷이나 메시지가 또한 불변 속성 및 가변 속성들의 식별을 포함한 채널 관련형 정보를 운반할 수도 있다.
온라인시, 사용자는 채널 정보를 다운로드할 수 있다. 예컨대, 사용자는 사용자 이름과 패스워드를 이용하여 등록할 수 있다. 사용자의 로그온이 확인되면, 사용자는 채널을 개방(호출)하고 채널 관리자로부터 그 채널에 관한 정보를 가져올 수 있다. 발행자는 발행의 문맥에서 그 정보를 이용할 수 있고, 가입자는 가입의 입력 및 등록과 관련하여 그 정보를 이용할 수 있다.
채널 관리자(152,154,156)는 바람직하게 지속적이고, 신뢰할 수 있는 채널 디렉토리 서비스를 수행하도록 그룹을 형성한다. 채널 관리자 중 하나가 1차 채널 관리자가 되고 나머지는 백업 채널 관리자가 될 것이다. 1차 채널 관리자에 장애가 발생하면, 그 1차 채널 관리자의 이웃 채널 관리자가 이어받아 새로운 1차 채널 관리자가 되어 서비스를 신뢰할 수 있는 상태로 유지한다. 각각의 지능형 라우터는 이들 채널 관리자의 어드레스를 보유한다. 1 채널 관리자가 있고 지능형 라우터가 그 채널 관리자에 접촉할 수 없는 경우라면, 그 지능형 라우터는 정보 검색을 위하여 다른 것을 찾을 것이다. 네트워크 내의 장치들은, 예컨대 채널 정보를 검색하기 위한 명령을 이용할 수 있고, 그 예들이 표 3에 제공되어 있다. 이와 달 리, 지능형 라우터는 1차 채널 관리자만을 갖거나 셋 이상의 채널 관리자를 가질 수도 있다.
도 7은 사용자 머신이나, 지능형 라우터를 포함한 네트워크에 그 사용자 머신을 연결하는 장치에 있어서의 스택(180) 내의 예시적 소프트웨어 구성 요소들을 도시한 도면이다. 사용자 머신은 발행자, 가입자, 또는 양자 모두로 이용될 수 있고, 앞서 확인된 예시적 장치들을 포함할 수 있다. 스택(180)은 하나 이상의 사용자 애플리케이션(182)을 포함할 수 있으며, 그 사용자 애플리케이션(182)들은 사용자로부터의 가입 수신, 발행자로부터의 채널 정보 수신, 또는 발행된 콘텐트나 데이터의 수신에 대비한 것일 수 있다. 사용자 애플리케이션(182)에는 또한 사용자 머신이나 장치가 실행할 또 다른 임의의 타입의 애플리케이션이 포함될 수 있다.
또한, 스택(180)은, 예를 들어 에이전트(184), 이벤트 라이브러리(186), 캐시 라이브러리(cache library; 188), 채널 라이브러리(190), 메시징 라이브러리(192), 및 디스패처 라이브러리(194)를 포함할 수 있다. 에이전트(184)는 네트워크 접속(connection) 확립 또는 다른 기능들을 제공하고, 표 3은 프락시 명령어(command) 또는 다른 유형의 명령어들을 사용할 수 있는, 에이전트(184)에 의하여 구현되는 명령어의 예를 제공한다. 이벤트 라이브러리(186)는 사용자 머신 또는 다른 이벤트나 정보에 관한 이벤트들을 기록한다. 캐시 라이브러리(188)는 데이터의 로컬 캐싱(local caching)을 제공한다. 채널 라이브러리(190)는 채널의 식별 및 그에 대한 정보를 저장한다. 디스패처 라이브러리(194)는 제어 경로(196), 채널 관리자(198), 및 하나 이상의 지능형 라우터(200)와의 접속을 제공하고, 표 4에 나타낸 예시적인 기능을 포함할 수 있다. 메시징 라이브러리(192)는 데이터 경로(204)에의 접속을 제공한다.
표 5 내지 9는 C 프로그래밍 언어로 된 메시징 API의 예를 나타낸다. 표 5 및 6은 메시지를 송신 및 추출하는 API의 예를 나타낸다. 표 7 및 8은 통지를 송신 및 추출하는 API의 예를 나타낸다. 표 9는 제어 메시지를 송신 및 추출하는 API의 예를 나타낸다. 본 명세서에서의 이들 API 및 다른 API, 프로그램과 데이터 구조는 특정 기능 또는 특징을 구현하기 위한 예로서 제공되는 것이며, 구현은 임의의 유형의 API 또는 임의의 프로그래밍 언어로 된 다른 소프트웨어 엔티티(entity)를 포함할 수 있다.
표 3
에이전트 명령어의 예
명령어 기능
pc.chn.open 채널 열기, 채널을 위한 모든 정보 추출, 및 로컬 캐싱
pc.chn.close 채널 닫기
pc.chn.getRouterInfo 채널상 라우터를 위한 정보 추출
pc.chn.getAttributeInfo 채널 속성을 위한 정보 추출
pc.chn.getProperties 채널을 위한 특성 추출

표 4
디스패처 기능(dispatcher function)
서버측 접속 청취(수락 대기). 각각의 접속을 핸들하기 위한 스레드(thread) 생성. 스레드는 접속에서 오는 모든 요청을 받고 프로세싱하는 것을 책임진다.
클라이언트측 접속을 시작하고 접속으로 오는 모든 데이터를 받고 프로세싱하는 것을 책임지는 스레드를 생성.
Figure 112005001061850-pct00001

Figure 112005001061850-pct00002

Figure 112005001061850-pct00003

Figure 112005001061850-pct00004

Figure 112005001061850-pct00005

도 8은 위에서 식별된 것과 도 4에 제시된 지능형 라우터(92)와 같은 지능형 라우터에 대한 예시적인 소프트웨어 컴포넌트(210)의 다이어그램이다. 예를 들어 소프트웨어 컴포넌트(210)는 지능형 라우터(92)에서의 프로세서(93)에 의한 실행을 위한 메모리(94)에 저장될 수 있다. 예를 들어 컴포넌트(210)는 필터링 데몬(filtering daemon; 212), 디스패처(214), 라우팅 데몬(routing daemon; 216), 및 캐시 관리자(218)를 포함한다. 필터링 데몬(212)은 콘텐트 기반 라우팅이 아래에서 설명하는 바와 같은 라우팅 규칙에 따라 가입(subscription)을 위한 콘텐트를 처리할 수 있도록 필터링을 제공한다. 디스패처(214)는 경로(220)를 통하여 필터를 전파하기 위하여 요구되는 것과 같은 제어 메시지의 통신을 제공하며, 또한 사용자들을 위한 하나의 진입점과 채널 관리자들을 위한 하나의 보안 소켓을 제공하여 네트워크의 보안을 강화할 수 있다. 다시 말하면, 사용자는 대체 구현일지라도, 이 예에서의 채널 관리자를 직접 접촉하지 않는다. 디스패처(214)는 채널 관리자로부터 속성(이름-값 쌍)을 얻기 위하여 제어 메시지를 이용한다.
라우팅 데몬(216)은 도 4에서 도시된 관용 백본 라우터 또는 다른 라우팅 장치를 통하여 발생할 수 있는, 데이터 경로(222)와의 통신을 제공한다. 캐시 관리자(218)는 대응하는 지능형 라우터를 포함하는 네트워크 노드에서 데이터의 로컬 캐싱(local caching)을 제공한다. 캐시 관리자(218)의 동작(operation)은 아래에 더 자세히 설명되어 있으며, 네트워크 코어(network core)를 통하여 분산된 데이터 캐싱을 제공한다.
콘텐트 기반 라우팅은 애플리케이션 레벨(application level)에 대한 대체로서, 커널 레벨(kernel level)에 구현될 수 있다. 커널에 의해 접근 가능한 메모리는 애플리케이션 레벨에 있는 것과는 분리되어 있다. 콘텐트 기반 라우팅이 애플리케이션에서 실행되기 위해서는, 예를 들어 메시지 데이터가 커널 메모리 영역에서 애플리케이션 영역으로 복사되는 것, 애플리케이션의 콘텍스트가 커널에서 라우팅 애플리케이션으로 교환되는 것이 요구된다. 두 가지 모두 상당한 부하가 야기된다. 만약 대신에 커널이 콘텐트 기반 라우팅을 지원하도록 수정된다면, 라우팅은 위에서 서술한 부하가 제거되어 더 빠르게 수행될 수 있다.
커널에서의 콘텐트 기반 라우팅의 특징으로, 라우팅 데몬(216)은 구현에 따라 결정되는 데이터 경로(222)를 통하여 데이터를 보내고 받는 것을 직접적으로 할 수 있을 수도 없을 수도 있다. 데몬은 커널에 도입되는 콘텐트 기반 라우팅 표를 미리 계산하는, 애플리케이션 레벨에서 동작하는 프로세스이다. 그러나 한번 도입 되면, 라우팅 표는 라우팅 결정을 내리기 위해서 커널에서 사용될 수 있다. 유사하게, 필터링 데몬은 필터링 표를 미리 계산하고 그것을 커널에 도입한다. 이러한 커널 구현에서, 라우팅 데몬과 필터링 데몬은 모두 데이터 경로와 직접적으로 상호작용하지 않는다.
도 9는 가입을 위한 콘텐트를 포함하고 있을 수 있는 메시지를 위한 패킷 구조(230) 예의 다이어그램이다. 콘텐트 기반 라우팅에서 사용하기 위한 패킷 또는 메시지는, 예를 들어 헤더 가입(header section)과 페이로드 가입(payload section)을 포함한다. 헤더 가입은 라우팅 또는 다른 정보를 명시한다. 페이로드 섹션은 데이터, 콘텐트 또는, 데이터 또는 콘텐트의 표시를 명시한다. 패킷 구조(230)는 IP 헤더(232), 사용자 데이터그램 프로토콜(UDP) 전송 제어 프로토콜(TCP) 헤더(234), 길이 값(238), 하나 이상의 주제 필드(subject field; 240), 및 하나 이상의 속성(242)을 포함한다. 패킷 구조(230)는 길이 값, 주제(subject) 및 속성을 위한 기본 구조를 도시한다. 콘텐트 기반 라우팅에 사용되는 패킷은 또한, 아래 설명되어 있는 도 18의 예에 도시된 것과 같은 다른 요소를 포함할 수 있고, 콘텐트 기반 라우팅을 위한 패킷은 어떠한 방식으로도 구성될 수 있다. 또한, 속성은, 예를 들어 메시지의 끝에 덧붙은 임의의 속성(discretionary attribute)을 포함할 수 있다. 이 임의의 속성은, 채널을 위해 규정된 메시지 포맷을 사용하여 전달될 필요 없이, 예를 들어 발행자(또는 라우터)에 의하여 더해진 애드-혹 정보(ad-hoc information)이다.
발행자와 가입자 방법론
도 10은 발행자가 채널을 설정하고 콘텐트를 발행하는데 사용하기 위한 예시적인 발행자 메소드(publisher method; 250)의 순서도(flow chart)이다. 예를 들어 메소드(250)는 발행자 머신(100)의 프로세서(114)에 의한 실행을 위한 에이전트(106)를 포함한 소프트웨어 모듈로 구현될 수 있다. 메소드(150)에서, 발행자 머신의 에이전트(106)는 채널을 위한 프락시의 발행자 생성(publisher creation)을 수신한다(단계 252). 프락시는 네트워크와의 통신을 제공한다. 에이전트(106)는 인터페이스를 통해 채널을 위한 메시지 포맷을 결정하고(단계 253), 포맷 정보는, 예를 들어 채널 관리자 또는 네트워크의 다른 엔티티로부터 획득할 수 있다. 에이전트(106)는 수신한 채널 정보를 이용하여 채널을 위한 프락시를 설정하는데(단계 254), 이것은 채널을 위한 속성을 수신하는 것(단계 256)과 채널에 통지(notification)를 생성하는 것(단계 258)을 포함한다. 통지는 채널의 콘텐트를 "듣는(listening)" 장치를 위한 콘텐트를 제공한다. 속성은 통지를 위한 특성 및 파라미터를 정의한다.
에이전트(106)는 가입 처리(processing subscription)에의 사용을 위해 채널의 식별자(identifier; ID)와 콘텐트 정보를 네트워크 코어의 지능형 라우터에게 전송한다(단계 260). 발행자는 통지 속성을 적당한 값으로 파퓰레이트(populate)하고(단계 261), 그 후 채널 속성에 따라 통지에 콘텐트를 발행할 수 있다(단계 262). 이 예에서 단계 260 내지 262는 특정한 구현에 따른 다르거나 추가적인 단계를 수반할 수 있는 통지를 발행하는 것을 완수한다. 따라서 이 예에서 통지와 관련된 정보는 각각 이름, 통지 내에서의 위치(1에서 시작), 유형(type), 값(value)으로 된, 속성의 순서(ordered sequence of attributes)로 분할된다. 택일적으로, 속성은 특정한 구현에 따른 다른 특성을 가질 수 있다. 예를 들어 속성은 미리 정의된 속성, 임의의 속성, 또는 두 가지 모두를 포함할 수 있다.
지능형 라우터는 채널을 통하여 전송되는 패킷을 위한 구조 또는 포맷을 결정하는 대응 채널을 위한 속성을 얻기 위해 패킷의 채널 ID를 사용할 수 있다. 특히, 각각의 패킷은, 예를 들어 발행자 ID, 주제와 같은 다른 헤더 정보 및 채널 ID와 관련된 태그를 함유할 수 있다. 태그는 도 18에 보여진 예인, 메시지 포맷의 숫자에 주제를 매핑(mapping)하는데 사용될 수 있다. 예를 들어 16비트 값과 같은 작은 정수 값은 숫자로 사용될 수 있다. 택일적으로, 어떠한 다른 유형의 숫자 또는 정보도 주제를 매핑하는데 사용될 수 있다. 주제를 숫자에 매핑하는 것은 특별한 이점을 제공할 수 있다; 예를 들면 메시지 포맷에서 공간을 절약하고, 메시지에서 주제의 표시를 지정하는 균일한 또는 표준 방식을 제공하여, 그 표시가 빠르게 찾아지고 식별되게 할 수 있다. 지능형 라우터는 명령어(command)를 통하여 대응하는 주제를 원격으로 얻기 위하여, 매핑을 로컬로 저장하거나 다르게 그 숫자들을 사용할 수 있다.
표 10은 이 예에서는 정수 값을 사용하여, 숫자를 주제에 매핑하기 위한 구조를 도시한다. 표에 있는 주제 트리 파라미터(subject tree parameter)는 주제는 계층적 관계로 하나 이상의 주제 필드(subject field)를 포함할 수 있음을 나타낸다; 예를 들면 주제 트리(subject tree)는 특별 기호에 의해 구별된 주제 필드의 문자열(string)을 포함할 수 있다. 주제 트리의 예는 표 2에 제공되어 있다. 예로서, 주제 트리 quotes.nyse는 다른 네트워크 주소 또는 URL에서 볼 수 있는 "."에 의해서 구별되는 두 용어인 주제 "quotes"와 서브 필드(sub-field) "nyse"를 포함한다. 마침표를 사용하고 URL-유형(type) 문자열(string)을 지정하는 것과는 별도로, 주제 트리는 구분을 위한 어떠한 기호 및 문자를 사용하는 방식으로도 지정될 수 있다.
표 10
숫자 주제 트리(subject tree)
정수값 1 주제 트리 1
정수값 2 주제 트리 2
정수값 N 주제 트리 N

따라서, 특정한 채널을 위한 패킷 포맷 또는 구조를 알고, 지능형 라우터가 콘텐트 기반 라우팅을 위한 패킷에 주제, 속성 또는 다른 정보를 빠르게 지정할 수 있다. 예를 들어 채널은 패킷의 카운팅 바이트(counting byte)에 의해 지정하기 쉽게 만들어, 채널을 통해 전송된 주제 및 속성의 바이트 위치를 찾을 수 있다. 택일적으로, 지능형 라우터는 주제 및 속성 또는 다른 정보들을 찾기 위해 패킷을 분해(parsing)할 수 있다.
표 11은 C++ 프로그래밍 언어로 된 발행자 프로그램의 예를 제공한다. 표 12는 채널을 생성하는 API의 예를 제공한다. 표 13은 도시된 바와 같은 채널 관련 정보를 제공하며 채널 관리자에 의해 유지되는 채널 설정 파일의 예를 제공한다(도 6 참조). 시스템은 프로세싱 로드를 분산하기 위한 로컬 채널 관리자로서 기능하는 지리적으로 분산된 서버의 IP 주소를 제공하는 글로벌 채널 관리자를 택일적으로 가질 수 있다.
Figure 112005001061850-pct00006

Figure 112005001061850-pct00007

Figure 112005001061850-pct00008

도 11은 수신 및 가입(subscription) 프로세싱에의 사용을 위한 가입자 메소드(subscriber method; 264)의 순서도(flow chart)이다. 예를 들어 메소드(266)는 가입자 머신(122)의 프로세서(134)에 의한 실행을 위한 에이전트(128)를 포함한 소프트웨어 모듈로 구현될 수 있다. 메소드(264)에서, 예를 들어 그래픽 사용자 인터페이스(GUI)는 사용자에게 사용가능한 채널의 지시를 주며(단계 266), 이것은 애플리케이션(126)에 의해 완수될 수 있다. 채널을 지시하는 정보는, 예를 들어 채널 관련 정보를 제공하는 채널 관리자로부터 받을 수 있다. 애플리케이션(126)의 어떠한 유형도 특정한 방법 또는 포맷으로 채널의 식별을 주기 위하여 사용될 수 있다. 애플리케이션은 사용자의 채널 선택을 받고(단계 268) 선택된 채널을 위하여 API 또는 다른 프로그램을 호출한다(단계 270). API는 선택된 옵션에 따른 채널을 위하여 사용자에게 가입 옵션(subscription option)을 준다(단계 272). API는 사용자로부터 가입(subscription)을 위한 값을 받고(단계 274), 아래에 설명된 바와 같이 프로세싱을 위하여 에이전트(128)에게 가입(subscription)을 보낸다(단계 276).
가입을 위한 파라미터는, 예를 들어 표 1에 도시된 바와 같은 술어(predicate)를 포함할 수 있다. 각각의 채널은, 예를 들어 대응하는 채널을 위한 파라미터 또는 특정 요구에 따른 가입을 프로세스하기 위하여 각자의 API를 사용할 수 있다. 이 API들은, 예를 들어 가입을 받기 위한 웹기반(web-based) 또는 자바기반(Java-based)의 API를 포함할 수 있고, 가입에 관한 정보를 받고 그것을 에이전트 애플리케이션을 따라 전달하기 위한 프로세싱 및 사용자 인터페이스의 어떠한 유형도 사용할 수 있다.
도 12는 가입을 받기 위한 메소드(method; 264)와 관련하여 사용될 수 있는, 채널 및 가입자 스크린 또는 GUI(278 및 284)를 개념적으로 도시하는 다이어그램이다. 스크린(278)은 사용자에 의한 선택을 위한 사용가능한 채널을 식별하는 다수의 섹션(282)을 포함한다. 특정 채널의 선택에 따라, 스크린(284)은 섹션(286)에 있는 가입을 위한 사용자의 값을 받기 위하여 디스플레이 될 수 있다. 사용자는 가입을 제출하기 위하여 섹션(288)을 선택할 수도 가입을 취소하기 위하여 섹션(290)을 선택할 수도 있다. 스크린(278 및 284)은, 예를 들어 하이퍼텍스트 생성 언어(HTML) 웹 페이지 또는 어떠한 다른 포맷으로도 포맷될 수 있다. 또한, 스크린은 바람직하게 가입자를 위한 사용자 친화적인 또는 시각적으로 끄는 인터페이스를 제공하기 위하여, 텍스트, 그래픽, 사진, 다양한 컬러 또는 멀티미디어 정보를 가능한 한 포함하여 콘텐트 및 섹션의 어떤 구성도 포함할 수 있다. 또한 스크린은 예를 들어 관용 브라우저 기능(conventional browser function)을 제공하는 툴바(280)를 포함할 수 있다.
표 14는 C++ 프로그래밍 언어로 된 가입자 프로그램의 예를 제공한다.
Figure 112005001061850-pct00009
Figure 112005001061850-pct00010

페이로드 검사와 채널을 통한 콘텐트 기반 라우팅
도 13은 페이로드 검사와 채널을 통한 콘텐트 기반 라우팅 메소드(300)의 플로우 차트를 나타낸 것이다. 메소드(300)는 예를 들어, 지능형 라우터(92)에서 프로세서(93)에 의한 실행 소프트웨어 모듈 내에서 구현될 수 있는데, 지능형 라우터(92)는 필터링 데몬(daemon)(212)에 의해 표현된다. 이와 다르게, 메소드(300)를 하나의 ASIC으로 또는 하드웨어와 소프트웨어의 결합으로도 구현할 수 있다. 메소드(300)에서 설명한 콘텐트 기반 라우팅은 네트워크의 코어이든 에지 라우터이든 네트워크내 어느 곳에서도 지능형 라우터 내에서 실행될 수 있다.
총괄하면, 콘텐트 기반 라우팅이란 패킷을 어떻게 처리할지 결정하기 위해 패킷에서 페이로드 섹션을 검사하는 것을 의미하는 것이다. 이러한 콘텐트 기반 라우팅 메소드에서는 예를 들면, 어떤 순서로 가입 목록을 처리하기(예를 들어, 필터를 사용하기), 메시지의 라우팅을 결정하기 위해 라우팅 규칙에 따라 주제별, 속성별로 메시지를 비교하기, 그리고 네트워크 코어에서 처리를 수행하기와 같은 것을 포함할 수 있다. 규칙에는 인-라우터 처리를 조절하는 규칙들이나 필터와 관련된 어떠한 규칙들이라도 포함될 수 있다. 이러한 라우팅 결정들은 그 후 네트워크 코어 전체로 배포될 수 있다. 채널로 표현된 주제를 사용하여 메시지 포맷이 결정되면, 지능형 라우터는 메시지 내에서 속성들의 위치를 빠르게 알아낸다. 예를 들면, 특정 채널의 메시지 또는 패킷에서 속성들의 바이트 위치가 알려져 있는 것이다.
메소드(300)에서, 지능형 라우터(92)는 메시지에 대한 패킷을 수신한다 (단계 302). 패킷에서 대응하는 메시지에 대한 채널 ID를 결정하고 (단계 304) 채널 ID를 이용하여 채널에 대한 속성들을 추출한다 (단계 306). 이 예에서, (채널 ID로 결정된) 채널의 유형은 그 패킷 내 속성들의 위치와 데이타 유형을 결정한다. 채널에 대한 속성들은 국부적으로 저장되거나, 채널 관리자를 통하여 원격적으로 추출될 수 있다. 지능형 라우터(92)는 하나의 가입에 대응하는 필터를 추출한다 (단계 308). 이 필터는 하나 또는 그 이상의 속성 테스트들을 포함하는데, 대개는 가입에 대한 하나의 속성 테스트 그룹을 포함한다. 지능형 라우터(92)는 패킷내 속성들을 필터 기술내 대응하는 속성 테스트(들)에 적용시킨다 (단계 310).
만약, 필터 기술내 모든 속성 테스트(들)의 결과가 긍정적이면 (단계 312), 즉 속성들이 모든 속성 테스트(들)를 만족시키면, 지능형 라우터는 그 필터와 관련된 규칙들이 지시하는 일련의 메소드들을 수행한다. 이 메소드에는 예를 들어, 그 패킷을 다음 링크에 라우팅하기 그리고/또는 규칙에 지시된 대로 로컬 라우터에서 그 패킷의 콘텐트에 어떤 액션이나 계산을 수행하기와 같은 것이 포함될 수 있다. 그 액션 또는 다음 링크는 예를 들면, 대응하는 가입을 지정하는 데이터 구조내에서 식별될 수 있다. 규칙이 하나의 링크이면, 그것은 전형적으로 패킷을 수신할 다음 네트워크의 노드를 식별하는 것인데, 여기에는 지능형 라우터, 백본 라우터, 네트워크 연결된 장비, 또는 다른 장비 등이 포함될 수 있다. 이와 다르게, 다른 방식들로 다음 링크를 가입에 지정하거나 관련지을 수도 있다.
만약 필터 기술내 모든 속성 테스트(들)의 결과가 긍정적인 것이 아니라면 (단계 312), 즉 속성들이 모든 속성 테스트(들)를 만족시키는 것은 아니라면, 그 필터는 불일치라고 선언된다 (단계 315). 지능형 라우터는 필터 기술내 모든 속성 테스트들을 다 완료하거나 부정적인 결과를 처음 만나는 것 중, 어느 것이든 먼저 될 때까지 상기 절차를 반복하여 수행한다.
한 차례 필터에 대한 모든 속성 테스트들이 수행되면, 지능형 라우터는 남은 필터가 있는지를 결정한다 (단계 316). 만약 남은 필터가 있으면, 단계(308)로 되돌아가서 다음 필터에 대한 속성들을 처리하기 위해 그 필터에 대한 속성 테스트(들)를 추출한다. 매칭 절차는 (단계 308, 310, 312, 314, 315, 그리고 316) 모든 필터 세트들이 다 수행되거나, 모든 액션에 대한 결과 또는 라우팅 규칙들이 결정될 수 있을 때까지 중 어느 것이든 먼저 될 때까지 계속된다. 만약 패킷이 어떤 필터도 만족시키지 않는다면, 그것은 중단되고(버려지고), 전달되지 않을 것이다.
지능형 라우터(92)는 어떤 특정한 순서로 필터를 정렬할 수 있다. 예를 들면, 표 15에 나타난 바와 같이 하나의 열 또는 라우팅 표로 가입에 대한 필터를 저장하고, 일직선으로 필터를 훑어가면서 속성들을 필터(속성 테스트들)에 적용시킬 수 있다. 이와 다르게, 라우팅 표는 필터에 대한 포인터 또는 링크를 포함할 수도 있다.
콘텐트 기반 라우팅은 예를 들면 트래픽 상태에 따른 알고리듬 교환과 같은성능-향상 휴리스틱(heuristic)과 애플리케이션에 따라 임의로 하나 이상의 메소드를 동시에 사용할 수 있다. 처리를 위한 필터는 콘텐트 기반 라우팅에 필요한 페이로드 섹션 검사의 수행을 위해 네트워크 내 하나의 라우터에서 임의로 암호화, 번역화, 변환되고, 병합될 수 있다. 예를 들면, 가격 > 3.54122 달러는 끝을 잘라서 가격 > 3.54 달러로 될 것이다. 왜냐하면, 애플리케이션에서 발행은 소수점이하 두번째보다 작은 자리의 통화 속성을 포함하지 않는다고 알려져 있기 때문이다. 또한 예를 들어, 외국에서 부친 발행이 미국에 위치한 라우터에 처음 도착할 때, 외국 통화는 미국 통화로 번역될 수 있다.
일직선으로 필터를 훑어가는 것에 대한 하나의 대안으로서, 지능형 라우터(92)는 다른 순서 또는 아마도 처리 속도, 효율을 향샹시킬 수 있는 다양한 알고리듬에 따라 처리를 위한 필터를 선택할 수도 있다. 표 16은 가입과 그에 대응하는 링크의 예를 나타낸다; 이 예에서 주제들은 특정 채널과 관련되어 있고, 그 주제에 대한 가입은 필터에 대한 라우팅 규칙으로 표현될 수 있다. 주제들은 예를 들면, 콘텐트의 출처를 식별하는 Uniform Resource Locators(URLs)와 같은 네트워크 주소를 포함할 수 있다.
표 15
채널 1
가입 링크
필터 1a 링크 1a
필터 2a 링크 2a
필터 Na 링크 na
채널 N
가입 링크
필터 1N 링크 1a
필터 2N 링크 1b
필터 NN 링크 1n

Figure 112005001061850-pct00011

네트워크 노드에서 캐싱
도 14는 캐싱메소드(320)의 플로우 차트를 나타낸 것이다. 메소드(320)는 예를 들어, 지능형 라우터(92)에서 프로세서(93)에 의한 실행 소프트웨어 모듈 내에서 구현될 수 있는데, 지능형 라우터(92)는 캐시 관리자(218)로써 표현된다. 이와 다르게, 메소드(320)를 하나의 ASIC으로 또는 하드웨어와 소프트웨어의 결합, 대응하는 지능형 라우터와 동일하거나 다른 물리적 장치로도 구현할 수 있다. 메소드(320)에서, 지능형 라우터(92)는 데이터 또는 콘텐트와, 하나의 채널 ID, 주제들을 포함한 메시지를 수신한다 (단계 322). 지능형 라우터(92)는 데이타에 시간을 마크하고(단계 324), 메모리(94)나 2차 저장소(97)에 국부적으로 캐시(저장)한다 (단계 326). 지능형 라우터(92)는 캐시 데이터를 예를 들어, 채널 ID, 주제들과 시간 스탬프로 인덱스한다 (단계 328).
만약 지능형 라우터(92)가 데이터에 대한 요청을 수신하면 (단계 330), 요청에 따라 인덱스를 이용하여 캐시된 데이터를 검색한다 (단계 332). 지능형 라우터(92)는 캐시 데이터를 백본 라우터(95), 또는 요청자나 다른이에게 궁극적으로 전송하기 위한 다른 라우팅 장치로 전달한다. 메소드(320)를 반복 실행하여 데이터 캐시 및 요청에 대한 캐시 데이터 검색을 지속적으로 할 수 있다.
도 15는 메소드(320)에 사용되는 캐시 인덱스(336)를 설명하는 도해이다. 캐시 인덱스(336)는 데이터(338)를 수신하고 시간 스탬프(340)와 함께 저장한다. 데이터가 수집되면, 매 델타 t시간마다 마크된다. 여기서 델타 t는 마크 사이의 시간 간격을 표시하는데, 예를 들면, t2 - t1 가 된다. 어떤 방식으로 시간을 마크하던지 다른 유형의 인덱스를 대안으로 사용할 수 있다.
표 17은 캐시 데이터의 인덱스를 개념적으로 설명한 것이다. 표 18은 캐시에 대한 연결 히스토리를 저장하는 데이터 구조를 개념적으로 설명한 것이다. 표 19는 지능형 라우터를 포함한 네트워크 노드에서 국부적으로 데이터를 캐시하는데 사용되는 데이터 구조들의 예를 보여준다.
시간 마크의 간격은 길이에 관계없이 고정되거나 변할 수 있다. 예를 들면, 매 5분마다 데이터를 캐시하고, 인덱스할 수 있다. 하나의 시간과 주제를 지정하는 캐시 데이터의 검색 명령(#.getCache와 같은)이 수신되면, 캐시 관리자(218)는 단계(332)에서 캐시 인덱스를 이용하여 요청에 상응하는 캐시데이터를 검색할 수 있는지 여부를 결정한다.
각 주제 또는 채널은 예를 들어, 하나의 멀티캐스트 트리와 한 세트의 지능형 라우터 내에서 그 자신의 IP 주소를 포함할 수 있다. 그러므로, 표 18은 사용자 머신에 국부적으로 저장될 수 있는 라우터들 사이의 연결 히스토리를 표현한 것이다; 만약 에지 라우터가 끊어지면, 머신은 에지 라우터가 온-라인 복귀되었을 때 그 채널에 대해서 어떻게 업스트림 라우터를 다시 연결할지 결정하기 위해 연결 히스토리에 액세스할 수 있다. 머신은 또한 예를 들면, 연결이 끊긴 시간 동안 가입에 대해 계류중인 어떤 콘텐트를 확보하기 위해 get cache 명령을 실행할 수도 있다.
표 17
t1 채널 ID 1 주제 1 - n 캐시 데이터에 대한 포인터 1
t2 채널 ID 2 주제 1 - n 캐시 데이터에 대한 포인터 2
tn 채널 ID 4 주제 1 - n 캐시 데이터에 대한 포인터 N

표 18
연결 히스토리
시간 라우터 네트워크 주소
t1 R2 UR2 UR3
t2 R2 UR2 UR3

표 19
지능형 라우터를 위한 캐시 데이터 구조의 예
채널 노드
Figure 112005001061850-pct00012
주제 노드
Figure 112005001061850-pct00013
데이터 노드
Figure 112005001061850-pct00014
저장된 시간 그레인 노드
Figure 112005001061850-pct00015
지난 시간 그레인 노드
Figure 112005001061850-pct00016
이 대표적인 데이터 구조에는 다음의 정보가 포함되어 있다. 하나의 주제 노드에는 하나의 주제 식별자(identifier), 주제 계층(level), 상위(parent) 채널 또는 주제 노드에 대한 포인터, 그 자신의 디렉토리에 대한 파일 기술자(descriptor), 다음 계층(level) 주제 노드를 포함하는 해시(hash) 표에 대한 포인터와 데이터 노드에 대한 포인터 등이 있다. 하나의 데이터 노드에는 그것의 주제 상위(parent) 노드에 대한 포인터, 그 데이터 디렉토리에 대한 파일 기술자(descriptor), 각 저장 장치에 저장된 데이터에 대한 데이타 구조를 포함하는 원형 버퍼, 버퍼의 헤드(head)와 테일(tail), 그리고 검색과 저장기간 동안 데이터 노드를 잠그기 위한 락(lock) 등이 있다. 저장된 시간 그레인(last time grain) 노드는 현재의 데이터 파일을 표현하는 노드이고, 지난 시간 그레인(grain) 노드는 저장 장치에 아직 저장되지 않고, 메모리에서 유지되고 있는 지난 버퍼를 표현한다. 이 예에서 캐시와 데이터 저장 스레드(threads)는 지난 시간 그레인(grain) 노드의 mutex를 사용하여 지난 시간 그레인(grain) 노드를 동시에 액세스(access)하는 것을 방지한다.
에이전트 처리
도 16은 발신 가입 메시지에 대한 에이전트 메소드(350)의 플로우 차트를 나타낸 것이다. 메소드(350)는 예를 들어, 사용자(가입자) 머신(122)에서 프로세서(134) 실행을 위한 에이전트(128)로 표현되는 소프트웨어 모듈 내에서 구현될 수 있다. 메소드(350)에서, 에이전트(128)는 상기 도 11과 도 12에서 기술된 메소드 등을 통해 하나의 가입을 수신한다 (단계 352). 에이전트(128)는 그 가입을 위해 부울(Boolean) 표현식을 지정하는 하나의 문자열을 생성하고 (단계 354), 가입 내 오류여부를 감지하기 위해 문자열을 구문 분석(parse)한다 (단계 356). 만약, 오류가 있으면, 에이전트(128)는 사용자에게 오류 메시지를 제출할 수 있는데 (단계 360), 사용자가 오류를 수정하여 가입을 다시 입력하게 하기 위함이다. 만약, 가입에 오류가 없으면 (단계 358), 에이전트(128)는 후술하는 예와 같은 하나의 데이터 구조에 그 표현식을 저장한다 (단계 362). 에이전트(128)는 데이터 구조 내의 같지 않다는 표현식(not-equal expression)을 긍정 형식으로 변환하고 (단계 364), 데이터 구조를 상응하는 선언 표준형(disjunctive normal form, DNF) 구조로 변환한다 (단계 366). 에이전트(128)는 또한 DNF 구조의 AND 표현식들을 단순화하여 오직 범위 필터들(range filters)과 자격(membership) 테스트들만을 포함하도록 한다 (단계 368).
DNF는 기본적인 형식으로 잘 알려져 있는데, 이 형식에서는 부울(Boolean) 표현식이 하나 또는 그 이상의 선언(disjunct)이라 불리는 부-표현식들을 하나의 OR로 표현한 것으로, 각 부-표현식은 하나 또는 그 이상의 속성 테스트들을 하나의 AND로 표현한 것이다. 예를 들면, 부울(Boolean) 표현식(가격 >=10 AND ((심볼=="LU" OR 심볼=="T"))은 다음과 같은 등가의 DNF 표현식을 갖는다 ((가격 >=10 AND 심볼=="LU") OR (가격 >=10 AND 심볼=="T")).
단계(364)에서 변환은 "같지 않다" 연산자 (대표적으로 기호 !=으로 표현되는)를 등가의 "긍정" 형식, 즉 하나의 불허된 값보다는 모든 허가된 값을 지정하는형식으로 변환하는 것을 의미하는 것이다. 이 변환은 DNF의 생성 전에 먼저 수행되는데, 이렇게 해야하는 이유는 이 예에서 라우터가 긍정 형식의 방정식을 요구하기 때문이다. 예를 들면, 표현식(가격 !=80)은 등가의 긍정 표현식 (가격 <=79 OR 가격 >=81)로 변환될 수 있다.
단계(368)에서 변환은 DNF가 생성된 후 수행되며, 결과적인 AND 표현식에 대 해 가외로 단순화를 시키는 것이다. 이것 또한 이 예에서 라우터 작업을 단순화하기 위해 수행된다. 특별히, 동일한 속성에 대한 다수의 속성 테스트들을 하나의 AND로 표현한 것은 하나의 기본적인 "범위 필터"로 단순화될 수 있는데, 이 범위 필터는 하나의 하한 또는 상한만 있거나 상, 하한 모두 있거나 또는 동일성 테스트의 경우에는 하나의 값이 된다. 특별 유형의 범위 필터는 그 후 표 22에 따라 암호화된다.
예를 들면, 표현식 (가격 >= 10 AND 가격 <= 80 AND 가격 >= 20 AND 가격 <= 100)은 표현식 (가격 >= 20 AND 가격 <= 80)으로 단순화될 수 있는데, 이것은 상, 하한 모두 있는 범위 필터의 한 예이다. 단순화후 다른 유형의 예는 다음과 같다: (가격 >=20) (하한만); (가격<=80) (상한만); 그리고 (가격==50) (하나의 값). 이러한 범위 필터를 생성하면서 어떤 부 표현식은 진실 또는 거짓으로 단순화시킬 가능성이 있는데, 이 경우 부 표현식은 부울(Boolean) 대수 법칙에 따라 제거될 수 있고, 따라서 메시지 내 표현식의 암호화가 한층 더 최적화된다. 예를 들면, 표현식 (가격 >= 50 AND 가격 <= 20)은 거짓으로 단순화되는데, 왜냐하면 "가격"에 대해 어떤 값도 이 표현식을 만족시킬 수 없기 때문이다. 전체 필터 표현식이 거짓으로 단순화 되는 특별한 경우에는 에이전트는 메시지 전부를 생성할 필요가 없으며, 따라서 라우터의 불필요한 작업이 경감된다.
만약 주제 필터(subject filter)가 와일드카드를 포함하고 있으면, 에이전트(128)는 그것을 임의로 아래(단계 370)와 같이 바꿀 수 있다. 반면, 와일드카드는 사용자의 컴퓨터나 다른 장치에서 보다 네트워크에서 바뀔 수 있다. 그 대표적인 예로, 주제 필터의 신택스는 와일드카드를 사용하는 유일한 신택스이고 속성 필터는 부울 연산식을 사용하는 유일한 신택스이다. 대신에, 구현에 있어서는 주제 필터나 속성 필터에서 다르거나 다양한 형태의 신택스의 사용이 가능하다.
에이전트(128)는 결과물인 DNF 표현을 메시지(단계 372)로 암호화하고, 그 메시지를 지능형 라우터(단계 374)로 옮긴다. 암호화 과정은 가입(subscription)을 플랫(flat) 메시지 형태로 전환하는 것을 포함하며, 이것은 데이터의 문자열을 구성한다는 것을 의미힌다. 이 전달과정은 하나나 그 이상의 지능형 라우터나 네트워크상의 다른 라우팅 기기에 가입(subscription)하기 위한 주제 필터와 속성 필터로부터 생긴 전달된 라우팅 규칙을 포함한다. 예를 들어서 전달을 위해서는 가입(subscription) 표현은 전형적인 패킷 구조로 맵핑될 수 있다.
단계(372)의 암호화과정은, 한 채널을 통해 전파하기 위해서 한 채널에 대한 가입(subscription)을 메시징 API 포맷으로 정렬하는 것을 포함한다. 가입(subscription)은 예를 들어 내부적으로는 #.SUBSCRIPTION으로 통신된다. 왜냐하면, 중요한 주제 필터 필드와 중요한 속성 테스트 양쪽 모두가 존재하기 때문이며, 한쌍의 바이트(one pair of bytes)는 주제 필터 필드의 수를 저장하기 위해서 사용되고 다른 쌍의 바이트는 이 예에서의 속성테스트수(the number of attribute test)를 저장하기 위해서 사용되기 때문이다. 예를 들어서 각각의 주제 필터의 필드는 본래의 가입에서 구체화된 순서에 있어서 연속적으로 정렬되며, 메시지의 2바이트 부분으로 각각 정렬된다. 와일드카드 필드는 아래에 설명하는 것과 같이 정렬될 수 있다.
속성테스트를 정렬함에 있어서, 테스트의 피 연산자는 통지의 속성 값을 정렬하는 것과 같은 이치로 메시지의 끝에서 정렬이 된다. 속성 테스트와 피연산자를 정렬하기에 앞서서 각각 분리된 DNF하에서 위치 순서에 따른 미리 설정된 속성들에 대한 테스트를 통해 속성 순서로 분류되고, 이름 순으로 임의의 속성에 따라 테스트를 거친다. 더욱이 각각의 선언 하에서 관련된 일련의 스칼라 값의 속성들에 대한 테스트는 하나의 한계(왼쪽 -또는 오른쪽- 개방 범위 또는 균등 테스트)나 두개의 한계(분리된 경계 사이의 닫힌 범위)를 가진 범위(range) 필터의 정규형으로 단순화 된다. 테스트의 다른 정보들은 예를 들어서 피연산자와 같은 순서의 2바이트 쌍으로 암호화 된다. 이 2바이트 쌍의 연속은 메시지 내에서 주제 필터 필드의 2바이트 암호 연속 바로 다음의 자리잡게 된다. 2바이트 쌍은 속성 테스트의 비트(bit)-문자열 암호화 연속의 한 형태를 구성하며, 이것은 또한 2바이트 쌍은 별 문제로하고 다른 암호화 형태를 대표하는 것으로 사용될 수 있다. 속성테스트의 예는 아래와 같이 제공된다.
속성 테스트의 암호화하는 과정의 개요는 표20에 서술한다. 표21은 2바이트 쌍을 암호화하는 방법을 서술하며, 표 22는 2바이트 쌍의 연산자 아이디(ID)를 암호화하는 방법을 서술한다.
표20
암호화 규칙
1 디비트(D bit)의 0은 DNF의 새로운 선언의 시작을 가리키며, 디비트(D bit)의 1은 현재 선언에서 추가적인 선언을 가리킨다.
2 통지 속성 위치의 모두 1인 값은 테스트가 적용되는 미리 정의된 속성(채널의 통지 태양에 따라 정의된)의 위치를 가리킨다. ; 테스트의 연산자는 도 18에서 묘사된 예와 같이 정렬된다.
3 통지 속성 위치의 모두 1인 값은 테스트가 임의의 속성에 적용되는 것을 가리킨다. 이 경우에 이름의 길이와 테스트가 적용되는 속성의 이름은 연산자로 정리된다.
4 연산자 형태 아이디(ID)의 비트는 속성의 미리 정의된 형태 중의 하나로 암호화 된다.
5 연산자 아이디(ID)의 비트는 표 22에서 정의된 것과 같이 테스트에서 사용된 연산자로 암호화된다.

표21
첫 번째 바이트
0 1 2 3 4 5 6 7
D 통지 속성 위치
두 번째 바이트
0 1 2 3 4 5 6 7
연산자 유형 ID 연산자 아이디

표 22
연산자 연산자 아이디
좌 개방 범위 000
우 개방 범위 001
닫힌 범위 010
동일성 테스트 011
긍정적 자격 테스트 100
부정적 자격 테스트 101
테스트를 위한 2바이트 쌍이 이미 테스트의 연산자 형태와 그 테스트가 미리 정의된 또는 임의의 속성에 적용되는지 여부 양쪽을 모두 가리키기 때문에, 임의의 속성이나 그 태양에 대해 수행된 다수의 테스트를 분리하여 정렬(marshalling)할 필요가 없다. 이런 설계는 통지에 있어서 미리 정의된 속성이 127개 이상이 없다는 것을 가정하고 있다. 대신에 이런 설계는 속성 테스트를 암호화하는데 더 많은 비트를 사용을 할 수 있다.
이와 같은 속성 필터의 정렬 관습(marshal convention)은 DNF에 따른 속성 테스트를 순서화하고 그룹화했지만, (라우터와 같은) 하부조직 요소는 모든 속성 필터의 평가를 더욱 효과적으로 하기 위해서 다른 어떤 순서에 따라 (아마도 다른 테스트의 성공이나 실패의 확률에 대해 동적으로 얻어진 국부적 데이터에 따라)에 따라 테스트를 평가하기로 선택할 수 있다. 메시지의 가입(subscription) 아이디(ID) 필드는 에이전트의 에지(edge) 라우터와 가입(subscription)을 완전히 일치시키기 위해서 계속되는 요구하에서 가입(subscription)을 변경하거나 가입 해제(unsubscribe)하기 위해서 에이전트에 의해 생성되는 값이다. 특히, 가입의 속성 필터에 대한 동적인 변경은 주제가 #.RESUBSCRIPTION인 경우를 제외하고 도 18의 예에서 보여지는 메시지 형태를 사용하여 전달되고, 가입 아이디는 미리 등록된 변경되어진 가입의 가입 아이디이다. 그리고 가입 해제(unsubscription)는 예를 들어서 주제가 #.UNSUBSCRIPTION이고 가입 아이디 필드를 통해서 도 18의 메시지 형태를 사용하여 전달된 것이며, 가입 아이디는 미리 등록된 가입 해제(unsubscribe)되어진 가입의 가입 아이디이다.
이하 상기에서 설명된 에이전트에 의한 변환과 암호화를 설명하는 예를 든다. 아래와 같은 속성필터 표현의 예에 대해서 생각해보자. 가격 >=10 and (부호 ="LU" 또는 (부피>= 1000 and 부피<=10000)). 도 19는 이 표현을 저장하기 위한 단계 362의 에이전트에 의해 사용된 객체를 설명하는 통합된 모델링 언어(UML) 도식 390을 나타낸다. 이 도식은 변수, 상수 또는 양쪽 모두를 포함하는 가입을 구체화하기 위한 계층적 관계를 설명하는 것이다. 도식의 객체는 특정 구현에 따른 필터 종류의 예가 될 수 있다. 각각의 단순필터(SimpleFilter) 객체는 부합하는 필터 표현의 속성 테스트에 대한 정보를 저장하기 위해 사용된 속성의 값을 표현한다. 도 19의 표현에 의하면, 하나의 OR 필터(396)가 2개의 앤드필터(392와 400)와 연결된다. 앤드필터(392)는 가입을 위한 속성을 가진 단순 필터(394)를 포함한다. 같은 방식으로 OR 필터(396)는 단순필터(398)를 포함하고 앤드필터(400)는 단순 필터(402와 404)를 포함한다.
이 예의 사용을 위해서는 속성 가격, 부호와 부피는 연결된 채널의 미리 정의된 속성으로 가정되고, 각각 위치 0,1,2로 정의된 것으로 가정된다. 더욱이 속성의 태양은 각각 언사인드 인티저(unsigned integer)(타이프코드 6), 캐릭터 어레이(타이프코드 12)와 언사인드 인티저(타이프코드6)로 가정된다.
다음으로 속성 필터로서의 속성필터표현의 예를 포함하는 가입을 생각해보자. 도 18은 가입을 메시지로 정렬하는 것을 나타낸다. 도 18의 왼쪽에 나타난 도식(386)은 실제 메시지의 내용을 나타내고, 오른쪽의 도식(388)은 메시지의 다른 부분에 대한 부호를 제공한다. 이 예의 각 도식의 넓이는 4바이트이다. 정렬을 하기에 앞서서 필터는 동등한 DNF로 변형된다. (가격 >=10 and 부호 ="LU")또는(가격 >= 10 and 부피>=1000 and 부피 <= 10000).
16비트 속성 테스트 암호화는 비트의 연속으로 나타내며, 간격은 다른 부분으로 분리하는 것을 나타낸다. 이 예에서의 가격에 대한 2개의 테스트는 분리된 영역(disjunct)에 있으므로 결합될 수 없다는 것을 주의하여야 하며, 따라서 오른쪽 경계가 없는 범위(우 개방 영역)에서 분리되어 정렬된다. 한편, 부피에 대한 2개의 테스트는 같은 영역에 있기 때문에 결합될 수 있으며, 한 개의 닫힌 영역 테스트에서 함께 정렬될 수 있다.
끝으로, 어떠한 필드들은 "가정된(assumed)" 것으로 특징지어질 수 있다는 것을 알아야 한다. 이것은 이 필드들에서의 값은 예를 들기 위해서 임의로 선택되어진 것이고, 정렬된 가입으로부터 일반적으로 독립된 것임을 의미한다. 부가한다면, 가입의 주제 필터는 임의로 ">"로 선택되고, 이것은 연결된 채널에 의해 정의된 어떤 주제와도 합치한다. 상기에서 서술되고 도 18과 19에서 보여진 예는 설명을 하기 위한 목적을 위해서만 제공된 것이고, 정렬은 가입의 다른 어떤 태양에 대해서도 사용될 수 있다. 또한, 방법(350)은 가입을 정렬하는 단 하나의 예를 보여준 것이고, 그것들은 다른 어떤 방식으로도 정렬될 수 있다.
도 17은 들어온 메시지에 대한 에이전트 방법(376)의 플로우차트이다. 방법(376)은 예를 들어서 사용자 머신(122)에서 에이전트(128)와 애플리케이션(126)에 의해 구현될 수 있다. 방법(376)에서 에이전트(128)는 가입에 부합하는 지능형 라우터로부터 메시지를 전달받는다(단계 378). 에이전트(128)는 가입에 따라 채널을 선택을 하고(단계 380), 메시지의 채널 아이디에 따른 예에서 채널의 API를 호출한다(단계 382). API는 GUI나 사용자 머신의 다른 태양의 가입에 대한 데이터를 나타낸다(단계 384). 들어온 메시지에 대한 처리 절차는 상기에 서술된 암호화 과정을 역으로 하는 해독과정을 사용하며, 이 해독(암호화의 반대)은 라우터나 다른 네트워크 기기에서 수행되어질 수 있다.
와일드카드 절차
도 20은 와일드카드 방법(410)의 플로우 차트이다. 이 방법은 가입을 위한 표현으로 와일드카드를 바꾸는데 사용되는 필터에 대한 일련의 라우팅 규칙을 적용하는 예를 설명한다. 방법(410)은 예를 들어서 사용자 머신(122)의 프로세서(134)에 의해 실행하기 위해서 에이전트(128)로 나타내어진 소프트웨어 모듈에서 구현될 수 있다. 대신에, 와일드카드는 지능형 라우터(92)나 ASIC(91)에 포함된 부합하는 기능의 소프트웨어 통제 하에서 프로세서(93)에 의해 네트워크에서 수행될 수 있다. 와일드카드는 열린 영역이나 변수 길이 영역을 포함하며, 그 예는 표 21에 제공된다.
방법(410)에서 에이전트(128)나 다른 기기는 와일드카드를 가진 가입을 제공받는다(단계 412). 가입의 주제 길이는 콘텐트를 발행할 때 발행자(publisher)에 의해 지정될 수 있다. 그리고 예를 들어서 주제의 필드를 세고, 그것의 필드 카운트(길이)를 얻기 위해서, 영역 주제는 발행자 머신에서 미리 처리될 수 있다.
에이전트(128)는 필터 연산자에서 필드의 수를 세고(단계 414) 필드 길이=N의 새 규칙(필터)을 초기화한다(단계 416). 에이전트(128)는 가입의 서브 필드를 검색하며, 필터 연산자 서브 필드 O[i]가 와일드카드인지를 결정한다(단계 420). 만약 필터 연산자 서브 필드가 와일드 카드가 아니면 에이전트(128)는 필드[i]=O[i]인 연결조항(conjunctive clause)을 규칙에 삽입한다(단계 422). 필터 연산자에 더 많은 서브 필드가 있는 경우 (단계 424). 에이전트(128)는 단계 418로 돌아가서 추가적인 서브 필드를 처리한다. 매개변수 i는 이 예에서 필드들을 나타내는 것으로서, "i"는 필드 번호를 나타내는 정수이다.
서브 필드를 처리하고 나서, 에이전트(128)는 마지막 필터 연산자 서브 필드가 ">"인지 여부를 결정하고(단계 426), 만약 그렇다면, 길이 제한을 필드 길이>N-1로 변경한다(단계 428). 와일드 카드 절차는 어떤 형태의 부호도 사용할 수 있고, ">"는 단지 그 예일 뿐이다. 이 예에서 "a.>"는 a.b, a.c. a.d 등과, 모든 수준에서의 모든 하위 주제를 의미한다(예를 들어 a.b.x, a.c.x, a.b.x.y, 기타). 다른 부호는 와일드카드의 다른 구현에 사용될 수 있다.
만일 필요하다면 에이전트(128)는 전달된 규칙을 지능형 라우터나 다른 네트워크상의 기기로 전달한다(단계 430). 따라서, 그 방법은 와일드 카드를 비와일드 규칙(와일드카드를 포함하지 않는 규칙을 의미함)로 변환하기 위해서 서브 필드들을 처리하기 위해 서브 필드들에 대해 반복된다. 와일드카드의 변환은 네트워크상의 어디에서나 일어날 수 있으며, 예를 들어 가입자의 머신이나 지능형 라우터에서도 일어날 수 있다. 따라서, 변환이 한 엔터티에서 발생하고, 변환된 규칙이 다른 엔터티로 전달될 수 있고, 이것은 동적으로 이루어질 수 있다.
표 23은 와일드카드를 처리하는 것에 대한 라우팅 규칙의 표본들에 대해서 예와 함께 요약한 것이다. 이런 라우팅 규칙은 예를 들어서 지능형 라우터나 다른 네트워크 엔터티에서 생성되어, 지능형 라우터로 전파될 수 있다. 부가하자면, 표 23의 라우팅 규칙은 설명에 도움이 되기 위한 목적이고 와일드카드를 변환하는 다른 라우팅 규칙도 가능하다.
표 23
Figure 112005001061850-pct00017

경보 서비스
상기에 서술한 지능형 콘텐트 기반의 라우팅은 다른 장치에도 사용될 수 있으며, 그 중에 하나는 디지털 비디오 감시 시스템(DVSS)이 있다. 예컨대, 법 집행자 또는 보안 에이전시와 같은 사용자는 특정 위치에 있는 카메라로부터의 비디오 클립에 가입한다. 카메라는 디지털 비디오 클립을 캡쳐할 수 있으며, 네트워크 코어에서 가입에 따라 비디오 클립을 처리하고 컨텐츠 기반 라우팅을 구비한 인터넷과 같은 네트워크를 통해 이들 클립을 송신한다. 따라서, 사용자는 해당 비디오 클립을 수신하고, 이들의 필터링은 네트워크를 통해 분배된다. 비디오 클립뿐만 아니라, 임의의 다른 타입의 컨텐츠는 예컨대 보안 침범, 화재 및 사기 검거를 포함하는 임의의 타입의 경고에 제공되도록 분배될 수 있다.
다른 예로서, 특정 카메라는 연관된 움직임 센서를 포함할 수 있다. 움직임 검출시, 움직임 센서는 카메라를 트리거하여 동시에 촬영된 비디오 클립을, 비디오 클립을 가입자에게 라우팅하기 위해 컨텐츠 기반 라우팅을 이용하는 네트워크에 송신한다.
따라서, 상술한 컨텐츠 기반 라우팅은 비디오 클립의 처리 및 라우팅시 네트워크 부담을 크기 감소시킬 수 있다. 예컨대, 모든 CCD(Charge Coupled Device)에 의해 생성된 비디오 신호는 DVR(Digital Video Recorder)에 의해 4개의 다른 목적지, 즉 DVR에 의해 관리되는 로컬 스토리지와, 네트워크에 부착된 글로벌 스토리지와, DVSS 시스템과, iDSS 관리 서버에 기록될 필요가 있다. 이런 대형 데이터 볼륨을 운반하는데 필요한 네트워크 대역폭을 고려하면, iDSS에 의해 관리되는 CCD 또는 DVR의 전체량은 소비자의 용량 요건을 만족하지 않는다. 결국, 필요한 대역폭은 예컨대 중간 또는 큰 소비자에 대한 기술을 이용하여 제한된다. 도 21은 각 DVR이 4개 또는 16개의 CCD를 관리하는 하나의 감시 시스템의 전체 아키텍쳐도를 나타낸다.
아키텍쳐 개요:
도 22는 도 21에 도시된 감시 시스템의 용량을 개선하기 위해, 상술한 기술에 주로 기반을 둔 2개의 인헨스먼트를 도시한다. 도 22에 도시된 바와 같이, 제1 인헨스먼트는 DVR 백본 트래픽을 감소시키는 방법에 집중되고, 제2 인헨스먼트는 데이터 전달 효율을 증가시키기 위해 상술한 기능과 같은 컨텐츠 기반 라우팅 기능을 제공하는 z-박스로 언급되는 디바이스를 이용한다.
DVR 백본에 대한 로컬 트래픽 감소:
데이터 분배 스킴에서의 비효율은 심각한 스캘러빌리티(scalability) 문제를 야기한다. 즉, DVR에 의해 발생된 이미지 파일이 TCP 기반 프로토콜을 이용하여 다른 박스에 전달되기 때문에, 대역폭 소비는 LAN(Local Area Network)에 부착된 디바이스의 수에 따라 선형적으로 증가한다. iDSS의 일 양상에서, 동일한 스트리밍 비디오 데이터는 네트워킹된 스토리지(SAN 또는 NAS), iDSS 모니터, 및 원격 모니터링 소프트웨어인 각각의 DVSS에 전송될 필요가 있다.
이런 문제를 해결하기 위한 한 접근법은 각 DVR이 LAN상에 단지 하나의 데이터 스트림을 발행하며, 다른 네트워크 부착 디바이스가 가입의 결과로서 동일한 데이터 스트림을 수신하게 하는 것이다. 따라서, DVR의 출력 레이트가 10 메가비트/초(Mbps)이라면, 동일 네트워크상에서 3개의 가입 디바이스를 가지려면 네트워크로부터 30Mbps가 아니라 10Mbps만을 요구해야 한다.
이런 목적을 달성하기 위하여, 전술한 발행-가입 방식의 이벤트 통신 API는 DVR 박스 및 DVR 데이터를 이용하는 임의의 디바이스(예컨대, iDSS, 글로벌 스토리지)상에서 이용될 수 있다. API는 단순하지만 효율적이고, 이는 IP 멀티캐스팅 및 복구 프로토콜을 이용할 수 있다. API는 상술한 발행-가입 모델을 따를 수 있어, 다른 구현이 코드를 변경시킬 필요는 없으나, API를 제공하는 라이브러리의 풀버전과 단순히 재링크될 수 있게 한다.
DVSS에 대한 프락시:
각각의 DVSS는 스트리밍 비디오 데이터를 수신하기 위하여 DVR 박스와의 일 접속(TCP-기반)을 행할 수 있다. 스캘러빌리티는 전술한 바와 같은 동일한 이슈를 제공한다.
도 22를 참조하면, 이런 접근법은 예컨대 2 스테이지로서 기술될 수 있다. 제1 스테이지, LAN측의 스테이지 1에서, 프락시 서버(예컨대, z-박스 1)는 모든 DVSS 아웃고잉 데이터(즉, DVR로부터 DVSS로 나가는 데이터)를 조작하는데 제공될 수 있다. 이런 프락시 서버는 LAN에 대한 모든 DVR 데이터에 가입하고, 이 데이터를 외부 네트워크(예컨대, 인터넷)상에 발행한다. DVSS는 이런 데이터에 가입한다. 따라서, 프락시 서버, z-박스 1은 DVR로부터 데이터를 수집하는 가입자 에이전트(예컨대, 에이전트(128))와, 전술한 발행-가입 네트워크와 같은 발행-가입 네트워크를 통해 이런 데이터를 발행하는 발행자 에이전트(예컨대, 에이전트(36))를 제공한다.
비록 스테이지 1에서 트래픽이 LAN측에서 크게 감소될 수 있을지라도, 트래픽은 전형적인 비대칭 디지털 가입자 라인(ADSL)이 단지 64 킬로비트/초(kbps) 업링크 속도를 가질 때, 임의의 국가에서 특히 아웃고잉 링크를 계속해서 잼(jam)한다.
계속해서 도 22를 참조하면, 스테이지 2는 바람직하게 서비스 제공자의 머신 룸에서의 접속을 리스 아니면 획득하고, z-박스 2와 같은 제2 z-박스 디바이스를 로케이팅하는 것과 관련된다. 예컨대, z-박스 디바이스는 Hi-Net 백본상에 둘 수 있다. 이런 디바이스로부터 z-박스 2로의 단일 접속(터널)은 소비자 설비(premise)에서 설정될 수 있다.
이 경우, 소비자 설비에서의 z 박스 2는 가입자 에이전트(예컨대, 에이전트(128))로서 작용한다. Z-박스 2는 또한 라우팅 데몬(예컨대, 라우팅 데몬(216))으로서 작용한다. 가입자 에이전트로서, z-박스 2(예컨대, Hi-Net 머신 룸에서)는 바람직하게 DVR이 z-박스 1을 통해 발행하는 것에 가입한다. z-박스 1과 z-박스 2사이에는 전술한 바와 같은 발행-가입 네트워크가 있다. 이에 따라, z-박스 1은 DVR로부터 비디오를 발행하며, DVSS에 의해 요구되는 비디오를 가입한다. 이런 방식으로, 경고 서비스의 데이터 전달 효율은 본 명세서에 기재된 이벤트 통지 시스템을 이용하여 증가된다. z-박스(예컨대, z-박스 1 및 z-박스 2)는 바람직하게 전술한 바와 같이 이런 발행-가입 네트워크를 통해 발행 및 가입하기 위한 모듈을 포함한다.
디지털 컨텐츠 전달
전술한 지능형 컨텐츠-기반 라우팅은 비디오, 음악 및 소프트웨어 업데이트를 가입을 통해 라우팅하는 것을 포함하는 많은 수의 구현에서 사용될 수 있다. 예컨대, 사용자는 안티-바이러스 소프트웨어와 같은 소프트웨어 업데이트를 가입할 수 있으며, 사용자에게 자동적으로 라우팅되는 업데이트를 가진다. 다른 예로서, 사용자는 특정 비디오 및 음악 컨텐츠를 가입할 수 있으며, 또한 사용자에 자동적으로 라우팅된 그런 가입 컨텐츠를 가진다. 비디오 및 음악은 예컨대 디지털 컨텐츠를 스트리밍할 때 수신될 수 있다. 또한, 네트워크 코어에서 분배 처리는 실질적으로 소프트웨어, 비디오 및 음악 컨텐츠를 제공하는 서버에 대한 처리 부담을 경감시킨다. 따라서, 네트워크 대역폭은 다른 이점들중에서도 컨텐츠를 제공하기 위해 동일한 네트워크 하부구조를 이용하여 효율적으로 증가될 수 있다.
이런 라우팅을 구현하는 한 특정 아키텍쳐는 도 23에 도시된다. 이 아키텍쳐가 바람직하게 네트워크 서비스 제공자의 공동-로케이션 오피스(co-location office)에 상주하는 2 레벨의 캐시 서버들 C1 및 C2를 가정함에 유의해야 한다. 그러나, 단지 C1 캐시 서버가 이용가능할 때만 이점이 달성될 수 있다. 용어 C1 및 C2 캐시 서버는 전술한 바와 같이 분배된 네트워크 캐싱을 제공하는 서버를 언급한다(도 14-15 및 관련된 설명을 참조). 아키텍쳐는 예컨대 2개의 상태로 전개된다. C2 캐시 서버가 존재하지 않는다고 가정하는 제1 상태는 중앙 분배기(450)와 C1 캐시 서버간의 급속 파일 전송 메카니즘을 이용하여 대형 미디어 파일을 전송하는데 요구되는 시간 및 서버 로드를 감소시키는 것이다. 이런 급속 파일 전송 메카니즘(fast file transfer mechanism)은 중앙 분배기(450)와 C1 캐시 서버 사이에 라우팅 박스(도 23에서 470)를 부가함에 의해 바람직하게 달성된다. 제2 상태는 사용자(예컨대, 사용자 머신(460))와 C2 캐시 서버 사이에 C2 캐시 서버에서의 라우팅 박스와, 전술한 가입 메카니즘을 부가하는 것이다.
라우팅 박스를 이용하는 이점:
라우팅 박스(470)는 바람직하게 전술한 컨텐츠 기반 라우팅을 구현하기 위한 모듈(예컨대, 전술한 지능형 라우터(92))을 포함한다. 전술한 컨텐츠 기반 라우팅을 구현하는 라우팅 박스(470)를 이용하는 데에는 2개의 주요 이점이 있다. 이들 라우팅 박스(470)를 이용하는 급속 라우팅 및 파일 전송 솔루션은 파일 전송을 FTP 또는 RCP와 같은 종래의 파일 전송 프로토콜보다 5배까지 가속한다. WAN을 통한 효율적인 멀티캐스트가 또한 달성될 수 있다. 데이터가 중앙 로케이션에서 수신기의 그룹으로 전송될 때, 라우팅 솔루션은 네트워크 멀티캐스트 토폴로지를 이용하고 WAN을 통해 멀티캐스트 터널을 구성함에 의해 컨텐츠 전달을 가속하여 서버 로드 및 네트워크 대역폭 요건을 감소시킨다.
아키텍쳐
미디어 컨텐츠는 중앙 분배기로부터 C1 캐시 서버로 전달된다. C1 캐시는 모든 컨텐츠 파일을 저장한다. 각각의 C1 캐시 서버는 예컨대, 모든 컨텐츠를 저장하기 위한 테라 바이트의 디스크 공간을 요구한다. 사용자(예컨대, 가입자 머신(122)과 같은 사용자 머신(460)을 이용하는)는 컨텐츠의 일부만을 저장하는 C2 캐시 서버로부터 컨텐츠를 요구한다. C2 캐시 서버는 예컨대 수백의 기가 바이트의 디스크 공간을 요구한다.
사용자와 C2 캐시간의 파일 전송:
사용자(460)가 가입을 발행함에 의해 미디어 파일을 요구할 때, 이 요구는 C2 캐시 서버들중 하나에 의해 처리된다. 요구된 미디어 파일이 이미 C2 서버에 캐시되어 있다면, 파일은 바로 전달된다. 그렇지 않다면, 가입은 C1 캐시 서버로 전송되고, C1 캐시 서버로부터 C2 캐시 서버로 전송된다.
C1 캐시에서 C2 캐시로의 미디어 데이터 프리캐싱:
사용자 가입 또는 가입의 패턴에 기초하여, 미디어 파일은 C1 캐시 서버로부터 C2 캐시 서버로 프리캐싱된다. 예컨대, C2 캐시 서버와 연결되는 사용자(460)가 주로 팝송에 관심이 있다면, C1 캐시 서버는 심지어 C2 캐시 서버상의 임의의 사용자(460)가 노래를 요구하기 전에 새로운 팝송을 C2 캐시 서버에 푸시할 수 있다.
구현 상태:
제1 상태는 예컨대 분배기(450)와 C1 캐시 서버간의 컨텐츠 라우팅을 갖는 급속 파일 전송 메카니즘을 설치하는 것과 관련된다. C2 캐시 서버는 필요치 않 다. 이 경우, 모든 사용자(460)는 C1 캐시에 직접 연결된다. C1 캐시 서버는 분배기(450)로부터 규칙적으로 새로운 미디어 파일을 수신한다. 상태-1 아키텍쳐는 도 24에 도시된다.
도 24에서 분배기(450)가 전술한 지능형 컨텐츠 기반 라우팅 기술에 의해 강화된 라우팅 박스(470)에 새로운 미디어 파일을 단지 한번 전송한다. 따라서, 분배기(450)의 로드는 감소된다. 라우팅 박스(470)는 급속 파일 전송 메카니즘을 이용하여 파일을 각각의 C1 캐시 서버에 전송한다. 이 경우, 부가의 라우팅 박스가 수신기(460) 단에 요구되지 않는다. 대안적으로, 다른 타입의 서버는 C1 캐시 서버에 사용될 수 있다.
도 25를 참조하면, 상태 2를 구현하는 일 실시예의 아키텍쳐가 도시된다. 본 예에서 상태 2는 바람직하게 데이터를 라우팅 및 전송하기 위한 커널(kernel) 구현 라우팅 박스(470)를 사용한다. 커널층 솔루션은 버퍼 사본 및 컨텍스트 스위칭 시간을 덜 요구하기 때문에 파일 전송시 오버헤드를 더욱 감소시킨다. 또한, 상태 2 솔루션은 C2 캐시 서버를 도 25에 도시된 바와 같이 아키텍쳐에 부가한다. 이와 같이, 도시된대로, 라우팅 박스(470)는 바람직하게 서비스 제공자 네트워크에서 공동 로케이션을 이용하는 C2 사이트에 부가된다. 이는 잠재적으로 수백배의 대역폭 감소로 대역폭 요건을 크게 감소시킨다.
도 25에 도시된 바와 같이, C1 캐시 서버와 C2 캐시 서버간에 전달된 파일은 C1 캐시 서버와 연관된 라우팅 박스(470)와 C2 캐시 서버와 연관된 라우팅 박스(470)와 연관된 라우팅 박스들을 통해 전달된다. 이런 방식으로, C1과 C2 캐시 서 버들간의 급속 라우팅 및 파일 전송 솔루션은 이들 라우팅 박스들(470)을 이용하여 달성된다.
서비스 관리의 품질
전술한 지능형 컨텐츠 기반 라우팅은 예컨대 특정 전달 보증(particular delivery guarantees)을 갖는 컨텐츠 라우팅에 사용될 수 있다. 예컨대, SLA(Service Level Agreement)에 기초하여, ISP 또는 컨텐츠 제공자는 QoS(Quality of Service)를 보증하기 위한 대역폭을 보유할 수 있다. 이는 전술한 컨텐츠 기반 지능형 라우팅에 의해 효율적으로 달성될 수 있다.
아키텍쳐:
컨텐츠 전달에서 QoS를 보증하기 위한 적어도 2개의 가능한 구성이 있다. 제1 구성은 많은 수의 링크를 하나 이상의 전화 회사(TELCO) 네트워크에 연결한다. 제2 구성은 TELCO 네트워크에 대한 단지 하나의 링크를 사용한다. 도 26에 도시된 일 예에서는 라우팅 박스(R-박스)의 2 층이 있다. R-박스 1은 데이터 패킷의 컨텐츠에 기초하여 R-박스 2 및 R-박스 3에 패킷을 라우팅한다. R-박스 2 및 R-박스 3은 데이터 패킷을 다른 네트워크 링크(예컨대, L1-L4)로 라우팅하며, 각각의 링크는 TELCO 네트워크로 연결된다. 프리미엄 소비자용 대역폭을 보유하기 위해, 최상위 SLA 소비자에 대해 발생된 데이터 패킷은 최상위 대역폭(최상위 우선순위)과의 링크로 라우팅되어, 이들 소비자에 대한 특정 QoS를 보장한다.
도 27에 도시된 일 예로서, R-박스 1은 R-박스 2 및 R-박스 3으로 데이터 패킷을 라우팅한다. R-박스 2 및 R-박스 3은 데이터 패킷을 다른 통신 링크로 라우팅하는 R-박스 4에 연결한다. R-박스 4는 각각의 링크의 QoS 레벨에 기초하여 4개의 링크로부터 데이터 패킷을 픽업한다. 그 후, R-박스 4는 네트워크 링크(예컨대, L5)를 통해 데이터 패킷을 인터넷 ISP로 전송한다. 각 링크에서 데이터를 픽업하기 위한 여러 알고리즘을 구현함에 의해, 시스템은 다수의 링크 구성(multiple-link configuration) 보다 양호한 QoS 관리를 위해 각 링크용 대역폭을 동적으로 할당할 수 있다.
기술:
QoS 보증은 전술한 지능형의 분배 컨텐츠 기반 라우팅 기술을 레버리지(leverage)할 수 있다. 라우팅될 각 패킷은 컨텐츠 기반 라우팅을 위해 태그된다. 솔루션은 다른 가능한 이점들 중에서도, 경제적으로 적당한 ASP/컨텐츠 제공자에 대한 QoS의 개발을 행한다.
이점:
솔루션은 인터넷 서비스 제공자(예컨대, IDCs) 또는 컨텐츠 제공자(예컨대, MOD(media on demand))에 제공될 수 있어, 서로 다른 소비자에 대하여 그들의 SLA에 기초하여 대역폭을 보유한다.
실시간 경고:
경고는 서로 다른 우선순위를 가질 수 있다. 예컨대, 보안 및 화재 경고는 최상위 우선순위로 주어질 수 있으며, 뉴스 경고는 하위 우선순위로 주어진다. QoS 라우팅이 없으면, 최상위 우선순위 경고는 ASP의 네트워크 대역폭이 하위 우선순위 경고 및 통신에 의해 점유될 수 있기 때문에, 실시간으로 그 가입자에 도달할 수 없게 된다. 이런 솔루션은 이런 문제가 일어나는 것을 방지한다. 또한, 경고는 SLA에 기초를 두고 각 소비자에 전송될 수 있다. 프리미엄 소비자는 더 많이 비용을 지불하며, 이들에 대해 더 많은 대역폭이 할당된다.
실시간 데이터 전달:
VOD(voice on demand), MOD 또는 VoIP(voice over IP)와 같은 몇몇 애플리케이션에서, 대역폭 이용가능성은 애플리케이션의 품질에 영향을 미친다. 이런 솔루션은 전술한 바와 같이 패킷의 컨텐츠를 조사함에 의해 메시지 타입에 기초하여 데이터 패킷을 라우팅할 수 있다. 대역폭이 민감한 애플리케이션에서, 이들 데이터 패킷은 상위 우선순위 링크로 라우팅될 수 있다. 데이터 패킷은 메시지 타입뿐만 아니라, 그 SLA 레벨에 기초하여 여러 가입자에 라우팅될 수 있다. 상위 SLA 소비자용 패킷은 이런 솔루션을 이용하여 상위 우선순위 링크에 라우팅될 수 있다.
소프트웨어 또는 안티 바이러스 업데이트는 이런 솔루션을 활용할 수 있다. 예컨대, 안티 바이러스 파일은 최상위 우선순위 링크로 라우팅되어 안티 바이러스 업데이트를 보장하고, 오디오 드라이버 파일은 하위 우선순위 링크로 라우팅된다.
컨텐츠 기반 필터링:
공동 로케이션 서비스를 이용하고 R-박스를 TELCO 네트워크내에 두면, 시스템은 도 28에 도시된 바와 같이 ISP 외부에서 필터링 및 동적 캐싱을 수행할 수 있다. TELCO내의 R-박스는 전술한 컨텐츠 필터링 기술에 기초하여 데이터를 필터링하는데 사용될 수 있어 IDC/ISP 네트워크로 가는 트래픽을 감소시킨다. 이는 DOS 공격 또는 비인가 데이터 액세스와 같은 해커 공격을 차단하는데 사용될 수 있다. 요구되는 컨텐츠를 조사할 수 있음으로, R-박스는 정적 및 동적 웹 데이터에 대한 캐시 박스일 수 있다. 이런 솔루션의 이점은 예컨대 보안, TELCO와 ISP간의 네트워크 대역폭의 절감, 및 ISP 서버의 로드의 절감을 포함한다.
선택적인 멀티캐스팅의 캐싱
메시지 영속성(message persistence)은 메시지를 저장하고 차후에 이를 검색하는 능력이다. 많은 수의 특정 애플리케이션, 예컨대, 이메일은 일반적으로 네트워크를 통해 가는 메시지에 대한 메시지 영속성을 크게 요구한다. 이상적인 조건에서, 네트워크의 고장이 없다면, 항상-연결된 가입자는 이들 특정 애플리케이션에 대해 요구되는 임의의 영속성을 초과해서 요구해서는 안된다. 그러나, 실제로 메시지는, 여러 이유, 즉 (1) 네트워크내 또는 사용자측에서 일어나는 고장 또는 버퍼 오버플로우, 또는 (2) 사용자가 네트워크로부터 암시적인 단절을 행하고 일정 시간 주기 후에 다시 연결하는 등의 이유에 기인하여, 네트워크를 통해 이동하는 동안 "상실"될 수 있다.
전술한 이벤트 통지 시스템의 영속성 모델은 2 레벨로 분할된다: 단기 영속성 및 장기 영속성. 단기 영속성은 네트워크 혼잡 또는 단기 링크 실패에 기인한 패킷 상실로부터 복구하도록 설계된다. 장기 영속성은 예컨대, 사용자 접속의 상실 또는 ISP 네트워크 고장, 사용자 머신의 고장, 장기 네트워크 고장, 및/또는 다른 고장을 포함하는 다른 고장으로부터 복구하도록 설계된다. 이들 2개의 스킴의 예는 이하 후술된다.
단기 지속성: 데이터 재송신 및 플로우 제어
데이터 네트워크에서, 데이터 손실의 원인은 단순하게 링크 장애(failure) 및 버퍼 오버플로우로서 분류될 수 있다. 이벤트 통지 시스템에 대한 신뢰성있는 채널을 제공하기 위하여, 이러한 쟁점이 다루어질 필요가 있다. 링크 장애에 대하여, 순방향 오류 정정(FEC) 스킴으로 링크 장애에 의해 야기되는 몇몇 오류를 정정하도록 하는 것이 가능하다. 그러나, 오류가 심각해서 FEC 스킴이 이를 정정할 수 없는 경우에 패킷을 복구할 스킴을 제공하는 것이 여전히 필요하다. 버퍼 오버플로우에 대하여, 버퍼 플로우가 발생하는 것을 방지하는 것이 필요하다. 이러한 문제를 피하기 위하여 데이터 네트워크에서 플로우 제어 스킴이 전형적으로 사용된다.
단기 지속성 스킴에서, 송신 제어 프로토콜(TCP) 터널은 바람직하게 홉-대-홉으로(hop-by-hop) 이벤트 라우터(예를 들어, 지능형 라우터(12))를 연결하는데 사용된다. 신뢰성있는 전송 프로토콜(예를 들어, RMTP)을 이용하는 대신에 신뢰성있는 층-2 터널에 의존하는 이유는 다양하다. 이벤트 통지 시스템의 단기 지속성 스킴에서, 메시지가 필터 규칙을 만족하지 않으면, 메시지는 라우터에 의해 바람직하게 필터링될 수 있다. 결과적으로, 수신 라우터는 소스 시퀀스 번호와 같은 스킴을 이용하여 일반적으로 패킷의 손실을 검출할 수 없다. 유사하게, 모든 수신 라우터가 자신이 수신하는 각 패킷마다 확인하는 것은 확인(acknowledgement)의 과부하(즉, 확인-급증(ACK-explosion))를 야기할 것이기 때문에 바람직하지 못하다. 게다가, 버퍼 오버플로우를 피하기 위하여, 라우터의 버퍼 공간이 다하기 전에 라우터가 자신에게 메시지를 전달하는 인접 라우터에게 속도를 늦추도록 요청할 수 있도록, 단기 지속성 모델은 플로우 제어 스킴을 구현한다. 이들 스킴은 TCP에 의해 커버된다.
TCP 송신 정책: 단기 지속성 스킴에 사용되는 TCP에서, 송신 윈도우는 바람직하게 재송신된 데이터를 추적하도록 데이터 송신기에 대하여 국부적으로 바람직하게 사용된다. 송신 윈도우의 사용의 목적은 2가지이다. 우선, 송신 윈도우는 데이터가 수신기에 의해 올바르게 수신된 것을 송신기가 명확하게 알도록 보장하고, 둘째로, 송신 윈도우가 채널 용량을 더 낫게 사용하도록 한다. TCP에서, 송신기가 송신한 각각의 바이트는 암시적으로 또는 명확하게(implicitly or explicitly) 확인될 것이 요구된다. 송신 윈도우는 송신기가 송신되고 확인된 데이터를 추적하도록 돕는다. 또한 송신기가 정지하고 이전 패킷이 확인되기를 기다리지 않고서 송신기가 송신 윈도우 내에서 데이터를 송신하도록 하므로, 송신 윈도우는 채널 활용을 향상시킨다. 일단 이전 데이터가 확인되면, 윈도우가 자동적으로 진척된다.
또한 수신기 윈도우는 TCP에서 관리된다. 수신기 윈도우는 바람직하게 데이터 수신기단에서 이용가능한 버퍼 공간을 나타내는데 사용된다. 그 이용가능한 버퍼 공간값은 송신기에 송신되어 어떻게 수신기측에서 버퍼의 오버플로우를 피하는지를 송신기가 알게 된다.
TCP 정체 제어: TCP는 단-대-단(end-to-end) 전송 프로토콜로서 설계되었기 때문에, 단기 지속성 스킴에서 이용되는 TCP는 발행-가입(publish-subscribe) 네트워크 내측의 버퍼 오버플로우도 해결한다. 이를 해결하기 위하여, 단기 지속성 모델에 이용되는 TCP는, 바람직하게 제3 윈도우, 즉, 정체 윈도우를 사용한다. 정체 윈도우(congestion window)는 송신기가 경로를 따른 라우터들 상의 최대 버퍼 공간을 추정하는데 사용된다. 즉, 송신기가 패킷의 손실을 검출하는 경우에는 정체 윈도우 크기는 감소되고, 반대의 경우에는 증가된다.
장기 지속성: 지속 채널에 대한 캐시
채널(예를 들어, 상술됨)은 지속적이거나 또는 실시간일 수 있다. 실시간 채널은 일반적으로 실시간에만 유용하고 어떤 애플리케이션-특정 지속성 요건을 갖지 않는 데이터를 송신한다. 지속 채널은 지속 시간 프레임 T 동안 네트워크를 통해 가로지르는 데이터를 저장한다. 다시 말해, 지속 채널 동안 지속성은 시간 프레임 T 동안 보장된다. 데이터의 이 지속성은 다음을 통해 달성된다. 예를 들어, 채널의 지속 기간 동안 각 에지 노드에서 데이터의 캐시, 장애 조건하에서 사용자에게 투과성의 캐시로부터 데이터의 검색, 사용자가 캐시로부터 데이터를 명시적으로 검색하도록 함, 라우터 장애에 대하여 보호하고 라우터간의 신뢰성있는 터널을 설정함으로써 네트워크를 통한 데이터의 플로우를 지속적이게 함, 및 복제를 통해 장애에 대한 채널 구성요소를 보호함이다.
그러므로, 이하에 설명될 바와 같이, 장기 지속성 스킴은 바람직하게 지속 채널에 등록된 가입자가 충돌하고 지속 채널에 대해 시간 프레임 T 내에 다시 되돌아올 때, 가입자가 최종 "X" 시간 프레임 (X<T) 동안 네트워크에서 캐시된 구 데이터를 검색하는 것을 가능하게 한다.
장기 지속성 스킴에서, 가입자 애플리케이션(예를 들어, 애플리케이션(126))은 바람직하게 관련 가입자 에이전트(예를 들어, 에이전트(128))로부터 데이터(예를 들어, 메지시)를 명확하게 접속(pull)할 수 있다. 상술된 바와 같이, 에이전트는 프락시를 이용하거나 프락시로 구현될 수 있다. 에이전트 또는 프락시가 네트워크 장애로부터 복구된 후에, 에이전트는 바람직하게 에지 라우터로부터 단절된 기간동안 캐시로부터 데이터를 투과성으로 검색한다. 또한, 가입자는 장기 지속성 스킴에서 최종 T 타임프레임까지의 데이터만을 액세스할 수 있도록 허용되는 것이 바람직하다. 이를 위해 에이전트(또는 프락시)가 접속되는 에지 라우터에 관한 시간이 결정되는 것이 바람직하다. 바람직하기로는 검색된 캐시 데이터는 대역외 송출되며 실시간을 보증할 필요는 없다. 장기 지속성 스킴의 실시예는 에지 라우터(예컨대 에지 라우터(16))와의 접속이 중단된 후 접속이 복구(crashes and comes back up again)된 또는 에지 라우터와의 접속을 잃은 기존의 가입자를 대상으로 한다. 신규 가입자는 캐시된 정보를 획득하지 못할 수도 있다.
지속성의 정의: 가입자에 대한 시간이 정해진(timed) 지속성(타임프레임 T)은 발행-가입 네트워크로부터의 최종 타임프레임 T의 데이터를 검색할 수 있는 능력으로서 정의된다. 가입자가 네트워크를 떠나면, 가입자의 부재중에 수신된 퍼시스턴트 채널의 데이터는 [데이터의 수신시부터] 타임프레임 T 동안 네트워크에 유지된다. 타임프레임 T 중에 가입자가 복귀한다면 데이터를 잃어버리는 경우는 일어나지 않는다. 그러나, 가입자가 T와 2T 타임프레임 사이에 복귀한다면 데이터를 잃어버리게 될 것이다. 또한, 가입자가 2T 타임프레임 후에 복귀한다면 이전의 데이터에 대한 액세스를 보증하지 않는 것이 바람직하다.
이러한 정의에서는, 가입자가 떠난 후 타임프레임 T 동안 수신된 신규 데이터가 타임프레임 T의 만료 시간에 도달할 때까지는 유지될 수 있도록, 가입자측에 형성된 발행-가입 네트워크 트리가 가입자의 이탈 후 타임프레임 T 동안 유지된 다 음에 제거될 수 있도록 하는 것이 요구된다.
아키텍처: 도 29는 캐싱을 통해 지속성을 제공하는 발행-가입 네트워크의 일부 구성요소를 도시한 블록도이다. 상기한 네트워크는 도시된 바와 같이 코어 라우팅 노드(548) 및 에지 라우팅 노드(545)를 포함한다. 이들 라우팅 노드는 도 4에서 설명한 바와 같이 지능형 라우터(92; 에지 라우팅 노드와 함께 도시됨)와 통상의 백본 라우터(미도시)를 구비하는 것이 바람직하다. 퍼시스턴트 채널에 대한 캐싱을 수행하고자 하는 지능형 라우터(92)는 도 29에 도시된 바와 같이 같은 장소에 배치된 캐시 관리자(218)를 구비하는 것이 바람직하다. 캐시 관리자(218)는 도 8과 관련하여 이미 설명한 바 있다. 지능형 라우터(92)는 잃어버린 데이터를 검색하거나 라우터의 장애를 복구하는 단기 지속성을 책임지는 것이 바람직하다. 캐시 관리자(218)는 데이터를 캐시하여 채널의 장기 지속성을 제공하는 기능을 수행한다. 캐시 관리자(218)는 이 데이터를 캐시(540)에 캐싱하는 것이 바람직하다. 캐시(540)는 메모리 및 디스크(미도시)를 구비하는 것이 바람직하다.
지능형 라우터(92)에 대신하여, 캐시 관리자(218)로 하여금 장기 지속성을 위해 데이터를 캐시하도록 함으로써, 캐시된 데이터를 인덱싱하는 계산 집중적인 동작을 별도의 프로세서에서 수행할 수 있으며, 이로 인해 라우팅 및 필터링 프로세서의 성능이 영향받지 않고, 캐시된 데이터를 정기적으로 디스크에 이동시키는 디스크 I/O 동작을 또다른 프로세서에서 수행할 수 있게 됨으로써, 라우팅과 필터링을 위한 사이클을 빼앗기지 않게 되며 에지 라우터를 규칙적인 I/O 동작을 수행하는데 할애할 필요가 없게 된다.
도 29에는 에이전트(128)가 도시되어 있으며, 이는 도 5에서 이미 설명한 바와 같이 가입자 머신(122)(도 29에는 미도시됨)에 존재하는 것이 바람직하다. 에이전트(128)는 캐시 관리자(218)와 통신하여 캐시(540)로부터 데이터를 검색하고, 검색된 데이터를 수신하여 검색된 데이터를 정리(organize)하는 역할을 한다. 전술한 바와 같이 에이전트(128)는 프락시를 이용하거나 프락시로 구현될 수 있다.
장애가 없는 상황에는 에지 라우터 노드(545)에만 캐시 관리자(218)가 접속된다. 도 29에는 도시되지 않았지만 장기 지속성 스킴은 장애를 고려한 것이므로, 에지 라우팅 노드(545)로부터의 제1 순위의 업스트림 코어 라우팅 노드(548)는 각각 데이터를 저장하는 캐시 관리자(218)를 포함하는 것이 바람직하다. 업스트림은 에이전트(128)(즉, 가입자 머신(122))로부터 멀어지는 방향이다. 제1 순위의 업스트림 코어 라우팅 노드는 에지 라우팅 노드(545)의 바로 상류의 라우팅 노드를 지칭한다. 발행-가입 네트워크는 복수의 제1 순위의 업스트림 코어 라우팅 노드를 포함하는 경우가 많지만, 도 29에는 하나의 제1 순위의 업스트림 코어 라우팅 노드, 즉 코어 라우팅 노드(548)를 도시하고 있다. 전술한 바와 같이, 캐시 관리자(218)는 자신이 위치한 네트워크 노드에 있는 데이터에 대한 로컬 캐싱을 제공한다. 따라서 예컨대 코어 라우팅 노드(548)를 포함한 각종 코어 라우팅 노드에 위치한 캐시 관리자(218)의 동작에 의해 네트워크 코드 전체에 있어서 데이터의 분산 캐싱이 실현된다. 이러한 분산 캐싱은 에지 라우팅 노드(545)에서의 캐싱에 대한 백업을 제공한다.
도 30은 업스트림 라우터(예컨대 코어 라우팅 노드(548))에서의 백업 캐싱을 도시한 도면이다. 장기 지속성 스킴에서, 각각의 캐시는 다음 업스트림 라우터의 캐시에 의해 백업되는 것이 바람직하다. 업스트림 캐시는 모든 인커밍 데이터를 저장하며 모든 후위 다운스트림 에지 라우터 캐시에 대한 백업으로서 기능한다. 업스트림 캐시의 데이터는 에지 라우터 캐시와 동일한 메커니즘에 따라 저장되는 것이 바람직하다.
이하, 도 31을 참조하면, 영구적 채널들을 캐시하기 위한 아키텍쳐는 네 개의 다른 모듈들에 걸쳐 스패닝(spanning)하는 기능을 제공하는 것이 바람직하다. 네 개의 다른 모듈들은 이하를 포함한다:
캐시 관리자(218) - 바람직하게는, 지능형 라우터(92)를 지나는 데이터의 저장을 맡고 있는 서버 프로세스;
라우터 캐시 API(552) - 바람직하게는, 지능형 라우터(92)로부터 캐시 관리자(218)로의 모든 제어 평면 액세스들(control plane accesses)을 맡고 있는 라이브러리, 예컨대, 캐시를 생성 및 소멸시킴;
에이전트 (또는 프락시) 캐시 API(554) - 바람직하게는, 에이전트(128)(또는 에이전트(128) 프락시)로부터 캐시 관리자(218)로의 모든 제어 평면 액세스들을 맡고 있는 라이브러리, 예컨대, 데이터를 검색함; 및
에이전트(128)(또는 프락시) - 바람직하게는, 캐시(546)로부터 검색된 데이터의 취합과 이 데이터의 조직화를 맡고 있음.
도 31은 이들 네 개 모듈들의 상호동작을 나타낸다. 에이전트(128) 및 지능형 라우터(92) 양측은 캐시 API 라이브러리 (552 및 554)를 통해 캐시를 액세스 하는 것이 바람직하다. 캐시 API 라이브러리(552 및 554)는 캐시(546)로의 초기화, 주제에 대한 캐시들의 생성 및 소멸, 캐시 어드레스의 검색, 및 가장 중요하게는 캐시(546)로부터의 데이터를 검색하기 위한 API를 제공한다. 라우팅 데몬(216)은 캐시 API(552)를 지나지 않는 데이터 경로를 통해 캐시 관리자(218)로 데이터를 보내는 것이 바람직하다. 캐시 API들(552 및 554)은 데이터 검색을 포함하는 모든 제어 메시지들에 대하여 제어 경로를 사용하는 것이 바람직하다.
캐시 관리자 - 캐시 관리: 도 32를 참조하면, 캐시 관리자(218)가 새로운 채널을 만나는 경우, 캐시 관리자(218)는 채널에 대한 채널 관리자(150)를 취득하도록 정보 서버(예컨대, 전술한 서버들(152, 154, 및/또는 156))를 호출(invoke)한다. 일단, 캐시 관리자(218)가 채널 관리자(150)의 어드레스를 취득하면, 캐시 관리자(218)는 채널 관리자(150)로부터 채널 특성을 검색하는 것이 바람직하다. 채널 특성은, 예컨대, 채널 주제 트리(channel subject tree) 및 속성, 채널의 영구적 특성, 채널의 영구적 시간 프레임(T), 캐시의 입도(granularity) 등을 포함하는 것이 바람직하다. 캐시 관리자(218)가 주어진 주제의 채널을 통한 데이터 흐름을 캐시하기 시작할 수 있기 전에, 그 주제의 캐시가 캐시 관리자(218)내에 생성될 필요가 있다. 캐시 관리자(218)는 캐시 생성 메시지를 대기하다가, 이 메시지에 응답하여 주제 캐시를 생성한다. 다음, 이 주제 캐시는 요청에 따라 소멸, 중지, 또는 재개될 수 있다. 도 32는 가입에 따른 캐시 생성을 나타낸다.
캐시 관리자-캐시 데이터 입력(Cache Manager - Cache Data Input):
캐시 관리자(218)는 지능형 라우터(92)로 유입되는 데이터를 여러 방식으로 액세스하는 것이 바람직하다. 예를 들어, 지능형 라우터(92)의 입중계 링크(incoming link)상의 모든 데이터 또한 캐시 관리자(218)에게로 전달되는 IP형 솔루션(IP like solution); (지능형 라우터(92)의 네트워크상에서 이동중인 모든 패킷들에 대해 캐시 관리자(218)가 주의를 기울이게 되는) 스니핑 메카니즘을 이용하는 것; 필터링 후, 상기 지능형 라우터(92)가 하나 이상의 링크로의 전파(propagate)가 요구되는 각각의 메시지를 캐시(554)에 전달하는 것; 상기 캐시 관리자(218)가 지능형 라우터(92)에 들어오는 모든 데이터에 대해 가입자(subscriber)처럼 동작하는 것이 있다.
캐시 관리자 - 캐시 데이터 스토리지: 도 33을 참조하면, 캐시 관리자(218)는 여러 방식, 예를 들어, 채널 id, 주제, 발행자 id(publisher id), 타임 스탬프, 타임 그레인들(G), 주 캐싱 속성(primary cachingg attribute), (장애(failure)에 대해 캐싱이 수행되는 특수한 경우에서의) 링크 혹은 기타 방식을 이용하여 캐시(546)의 데이터를 색인화한다. 데이터는 파일 시스템 혹은 메모리에 계층적 디렉토리 구조(hierarchical directory structure)로 색인화되어 저장된다. 데이터는 메모리에 캐싱된 후 주기적으로 디스크로 이동된다. 메모리내의 캐싱은 "G" 타임 그레인이 지속되는 동안에 한해 이루어진다. 타임 G 가 만료된 이후에는, 트리내의 특정 브렌치에 관련된 모든 데이터는 그 브렌치 하에서 그 브렌치에 대한 최초(earliest)의 파일을 오버라이트(overwriting)하는 파일로 이동되는 것이 바람직하다. (G는 슬라이딩 윈도우로는 구현되지 않지만, 절대 윈도우(absolute window)로는 구현되는 것이 바람직하며, 이는 각각의 메시지를 디스크에 개별적으로 기록하게 되면 비용 상승을 유발하게 되고, 한 동작으로 디스크에 G 인터벌 전체를 기록하는 것이 보다 효율적이기 때문이다.) 도 33은 전형적인 색인화 트리를 나타내는 도면이다. 지속성을 위해 데이터를 캐싱하는 경우에는 도 33의 제1 색인화 트리가 사용되는 것이 바람직하다.
도 33을 계속 참조해보면, 주제는 계층으로 저장되는 것이 바람직하며, 여기서 "a"는 "a.b", "a.c""a.d" 등과 같은 주제들의 페어런트(parent)이다, 캐시 관리자(218)는 모든 주제들을 이들의 대응하는 파일 위치들에 맵핑하는 캐시(546)를 위한 해시 테이블(hash table)을 유지하는 것이 바람직하다. 어느 경우에는, 캐시(546)는 그 링크 중의 하나에서 다운스트림 라우터(예를 들어, 에지 라우팅 노드(545))의 장애를 업스트림 라우터(예를 들어, 코어 라우팅 노드(548))가 탐지했을 경우 장애 상태하에서 데이터를 저장하는 것이 요구될 수도 있다. 복구(recovery)를 위한 첫번째 접근 방식은 다운스트림 라우터(수분 정도 소요될 수도 있음)를 재시동하는 것이다. 다운스트림 라우터가 재시동되고 있을 경우, 업스트림 라우터는 그 링크로 하향 전달되고 있는 데이터를 캐싱할 필요가 있을 것이다. 이러한 캐시(예를 들어, 도 33의 소위 FM Cache)는 발신(outgoing) 중인 링크들에서 색인화되는 것이 바람직하다.
캐시 관리자 - 가비지 수집: 채널이 지속적이지 않으면, 캐시(546)는 그 데이터를 저장하지 않고 즉시 놓아 버린다. 채널이 지속적이면, 캐시(546)는 데이터를 저장하게 된다. 특정 채널에 대한 지속 시간 프레임 "T"는 각각의 사이즈 G인 N개의 시간 그레인들로 분할된다. 메모리의 캐슁은 G의 기간동안만을 위한 것이다. 캐쉬 관리자가 시간 간격 G가 지나갔다고 결정한 후에, 데이터를 디스크로 이동시킨다. 캐쉬 관리자(218)는 지속적인 시간 프레임 간격 T의 기간 동안 데이터를 디스크에 저장한다.
시간 간격 G에 대응하는 데이터는, 일단 시간이 채널 + 간격의 상한에 대한 지속적인 타임아웃(T)보다 크게 되면 디스크로부터 삭제된다. 이것을 더욱 잘 이해하기 위해서, 채널이 2시간의 T를 갖는다고 가정한다. 예로서, 캐쉬 관리자(218)는 15분의 시간 입도(time granularity) G를 사용한다. 디스크로부터 데이터를 삭제하기 위해서, 바람직하게 사용되는 정책은 시간 간격 G(15분) 동안 캐쉬된 최종 데이터가 T(2시간) 동안 저장되었던 경우에, 그 15분 간격 중에 캐쉬된 전체 데이터는 폐기될 것이라는 것이다. 본 예에서, 각각의 15분 간격 중에 캐쉬된 데이터는 데이터의 블록이다. 지속적인 시간 프레임 T가 N 간격들로 분할되면, 시간의 임의의 포인트에서 각 주제에 대해 캐쉬(546)에 N+1개의 블럭들의 데이터가 있을 것이다(디스크 상의 N개 및 메모리의 1개).
캐쉬 관리자 - 캐쉬 데이터 검색: 이제 도 34를 참조하면, 에이전트(128)(또는 프락시)는 바람직하게는 GetCache 동작을 호출하여 데이터가 현재 시간으로부터 시간 "T"로 돌아가게 한다. GetCache 동작을 호출하기 위해 에이전트(128)가 접속하는 캐쉬 관리자(218)는 도 34에서 포탈 캐쉬(Portal Cache)로 라벨 붙여진다. 라우터 또는 에이전트(128)의 실패/접속해제에 기인하여, 포탈 캐쉬는 에이전트(128)가 요청한 모든 데이터를 가지지 않을 수도 있다. 이 경우에, 그외의 모든 캐쉬들(예를 들어, 업스트림 캐쉬들)로부터 데이터를 검색하고, 데이터를 대조하여 그것을 에이전트(128)에게 리턴하는 것이 포탈 캐쉬의 역할이다. 도 34는 상이한 시간 스탬프들(TS1, TS2 및 TS3 )에 대해 다수의 캐쉬들(A, B 및 C)로부터의 검색을 도시한다.
캐쉬 관리자(218)는 바람직하게는 시간 단위 G의 블럭들의 데이터만을 검색할 수 있다. 그래서 에이전트(128)는 그것이 예상하거나 또는 요청하는 것보다 더 많은 데이터를 얻을 수 있다. 또한, 다수의 캐쉬로부터의 검색 중에, 캐쉬들 사이에서 일부 중첩되는 간격들이 있을 수 있으므로, 에이전트(128)는 데이터의 복사본을 보게될 것이며, 에이전트(128)는 캐쉬에 의해 제공된 데이터 스트림에 대해 복사 억제를 해야만 한다.
캐쉬 관리자와 그외의 모듈들과의 상호작용: 캐쉬 관리자(218)는 바람직하게는, 도 35에 도시된 바와 같이, 이벤트 통지 시스템 인프라구조의 몇개의 모듈들과 상호작용한다. 캐쉬 관리자(218)는 새로운 채널(생성 캐쉬 시간에)을 만나게 되는 경우에, 바람직하게는 정보 서버(Information Server)(550)를 호출하여 그 채널에 대한 채널 관리자(150)를 얻는다. 일단 캐쉬 관리자(218)가 채널 관리자(150)의 어드레스를 가지면, 캐쉬 관리자(218)는 채널 관리자(150)로부터 바람직하게는 채널 특성들을 얻는다. 관리자 모듈(552)은 바람직하게는 캐슁의 단위와 같은 일부 특성들을 설정/변경하도록 허용된다. 관리자 모듈(552)은 바람직하게는 채널 캐쉬를 수동적으로 생성하거나 삭제하는 것이 허용되기도 한다.
에이전트 캐쉬 API - 애플리케이션 - 에이전트 상호작용: 애플리케이션(예를 들어, 애플리케이션(216))은 바람직하게는 에이전트 캐쉬 API(554)를 호출하여 소정의 주제 및 필터를 가진 캐쉬(546)를 얻는다. 바람직하게는, 애플리케이션은 그것이 이미 그 데이타에 가입되었다면, 캐쉬(546)로부터의 데이터만을 검색할 수 있다. 에이전트 캐쉬 API(554)는 바람직하게는 2개의 API를 실제적으로 제공한다.
제1 API는 비가입된 애플리케이션이 동시에 캐쉬에 가입하고 검색할 수 있게 한다. "fifo" 플래그가 설정되면, 가입을 생성하여 경계 라우터 노드(545)로 전송한다. 그러나, 가입은 바람직하게는 즉시 "일시정지" 모드로 들어간다. 에이전트(128)가 모든 캐쉬된 데이터를 수신한 후에, 에이전트(128)는 먼저 모든 캐쉬된 데이터를 전달하고, 데이터의 모든 발행자(publisher)에 대해 보여지지 않는 최종 시퀀스를 기억하고, 그 다음에 각각의 발행자들에 대해 보여지지 않는 최종 시퀀스로부터 일시정지된 데이터를 전달한다.
제2 API에서는, 애플리케이션이 이미 일부 데이터에 가입되었으며 캐쉬 데이터를 요청하고 있다고 가정한다. 이 경우에, 애플리케이션은 캐쉬 데이터에 대해 차례로 나열될 수 없는 일부 데이터가 이미 전달되었다. 그러므로, 이 경우의 "fifo" 플래그는 오직, 캐쉬(546)로부터 검색된 데이터가 그 자체내에서 차례로 나열되어야만 하며, 정규의 데이터 스트림에 걸쳐 나열될 필요는 없다는 것을 나타낼 뿐이다.
에이전트(128)는 바람직하게는 데이터의 하나의 큰 블록의 모든 이벤트들을 검색한다. 캐쉬 API(554)로부터 데이터를 검색한 후에, 에이전트(128)는 바람직하게는 콜백 동작을 호출하기 전에 데이터 상에서 이하의 동작들을 행할 필요가 있다 (위를 참조): 통지 리스트로부터 통지를 작성; 각각의 발행자에 대한 최종 시퀀스 번호를 기억 및 필터링. 에이전트(128)가 모든 이벤트들을 콜백으로 밀어내기를 행한 경우, 그것은 바람직하게는 콜백에게 DoneCache 이벤트를 전송하여, 모든 캐쉬된 데이터가 전달되었음을 나타낸다. 이점에 있어서, 가입이 FIFO이고 정규 데이터가 일시정지되면, 에이전트(128)는 바람직하게는 모든 일시정지된 통지들을 전송한다. 에이전트(128)는 오직 시퀀스 번호들이 캐쉬 데이터의 최종 시퀀스 번호보다 큰 통지들만을 전달한다.
에이전트 캐쉬 API 대 캐쉬 상호작용: 가입자가 캐쉬된 데이터를 요청하는 경우에, 에이전트(128) 종단(554)의 캐쉬 API는 바람직하게는 먼저 에이전트(128)가 접속되었던 경계 라우터들의 히스토리를 찾아보고 GetCache 요청에서 제공된 시간 간격을 사용하여 리스트를 필터링한다. API(554)는 그 다음에 GetCache(채널, 주제, 필터, local_pubs, time_period, fifo, 라우터들의 어레이) 메시지를 그것이 접속되어 있는 최종 경계 캐쉬로 전송한다. 캐쉬 관리자(218)는 바람직하게는 채널 id, 주제 및 타임스탬프에 기초하여 데이터를 꺼내어, 그 데이터를 에이전트(128)로 되돌린다. 캐쉬 관리자(218)가 데이터를 밀어내는 것을 완료한 경우에, 그것은 DoneCache 이벤트를 Cache-API에 전송하여 데이터 전송이 완료되었음을 나타낸다.
캐쉬 관리자(218)가 데이터를 국부적으로 찾지 않으면, 캐쉬 관리자(218)는 에이전트(128)에 의해 제공된 "라우터들의 리스트"를 사용하여, 필요한 데이터를 배치시킨다. 일단 캐쉬 관리자(218)가 모든 필요한 데이터를 수집하면, 캐쉬 관리자(218)는 필요한 데이터를 대조하여, 그것을 에이전트(128)에게 전송하기 전에 그것에 대한 복사 억제를 행한다.
캐쉬 접속 히스토리: 캐쉬(546)로부터의 데이터를 검색할 수 있기 위해, 업스트림 캐쉬뿐 아니라 에지 모두에 대해 캐쉬 접속 히스토리가 에이전트(128)에서 유지되는 것이 바람직하다. 이러한 정보는 에이전트(128) 셧다운(shutdown) 및 충돌(crash)에 걸쳐서 필요하기 때문에, 이러한 정보는 계속해서 파일 내에 유지되어야 한다. 디스크 상의 캐쉬 접속 히스토리는 다음 파일들 및 포맷에 저장되는 것이 바람직하다.
에지 캐쉬 위치들: 에지 캐쉬(예를 들어, 에지 라우팅 노드(546)에 있는 캐쉬(546))의 위치는 채널 관리자/채널 라이브러리로부터 얻어지는 것이 바람직하다. 이것은 부팅 시간에 및 에지 캐쉬가 변하는 임의의 후속 시간, 즉 접속 소실/회복되는 시간, 접속이 이동되는 시간에 발생한다. 디스패쳐(dispatcher)는 에지 캐쉬 접속시 임의의 변화들을 에이전트(128)에게 통지하고 그 후 이러한 변화들은 에이전트(128) 캐쉬 라이브러리로 전달된다. 변화가 발생할 때마다 변화는 유지된다.
영구 저장: CACHE_ROOT/channel_id/Channel - 캐쉬된 데이터를 위한 예시적인 경로.
데이터는 다음 포맷으로 저장되는 것이 바람직하다.
에지 캐쉬의 수(Number of Edge Caches);
Edge Cache1: Number of time intervals, StartTime1:EndTime1, StartTime:EndTime2,...; 및
Edge Cache2: Number of time intervals, StartTime1:EndTime1, StartTime:EndTime2,...
가장 최근의 타임스탬프(timestamp)는 리스트의 선두에 있다. 2개의 상이한 에지 캐쉬는 중첩되는 간격을 갖지 않는다는 것을 주의하라(그 이유는 에이전트(128)가 한번에 하나의 에지 캐쉬에만 접속되기 때문이다). 새로운 엔트리가 추가될 때마다, 이전 엔트리들은 그들이 아직 유효한지를 알아보기 위해 검사되고; 무효이면 엔트리가 버려진다. 다음과 같은 경우에 시간 간격은 무효하게 된다.
Interval EndTime + channel's persistent timeout < current time
엔트리의 모든 간격이 무효로 되면 에지 캐쉬 엔트리는 무효로 된다. "EndTime"이 0이라는 것은 간격이 현재 활성 상태라는 것을 의미함에 주의하라.
업스트림 캐쉬 위치들: 업스트림 캐쉬(예를 들어, 코어 라우팅 노드(548)에 있는 캐쉬(546))의 위치는 주제에 의존한다. 각 주제는 자신의 멀티캐스트 트리(multicast tree)를 갖기 때문에 제1 레벨의 업스트림 캐쉬 세트는 주제의 함수이다. 사용자가 주제에 가입할 때에는, 지능형 라우터(29)가 그 주제와 관련된 업스트림 캐쉬의 리스트를 반환하는 것이 바람직하다. 마찬가지로, 멀티캐스트 트리에서의 고장(failure) 또는 개편(reorganization)으로 인한 업스트림 캐쉬 위치들의 임의의 변경은 제어 채널을 통해 에이전트(128)로 전달되는 것이 바람직하다. 이러한 변화들은 영구 저장 스토어(파일)에서 국부적으로 문서화된다.
영구 저장: CACHE_ROOT/channel_identifier/subject(계층적이 아닌 전체 주제) - 캐쉬된 데이터를 위한 예시적인 경로.
데이터는 다음 포맷으로 저장되는 것이 바람직하다.
Number of Upstream Caches;
Upstream Cache1: Number of time intervals, StartTime1:EndTime1, StartTime2:EndTime2,...; 및
Upstream Cache2: Number of time intervals, StartTime1:EndTime1, StartTime2:EndTime2,...
다시, 가장 최근의 타임스탬프는 리스트의 선두에 있다. 에지 캐쉬 간격과 달리, 2개의 업스트림 캐쉬는 중첩 간격을 가질 수 있는데, 그 이유는 에이전트(128)가 하나의 주어진 주제에 대해 여러개의 업스트림 캐쉬를 가질 수 있기 때문이다. 또한 업스트림 캐쉬 파일의 콘텐트는 에지 캐쉬에서와 동일한 알고리즘을 사용하여 수집된 폐기물이다.
데이터 검색 중의 캐쉬 유효성: 에이전트(128)의 일생동안, 에이전트는 상이한 에지 라우터 및 업스트림 라우터와의 접속을 경험한다. 에이전트 캐쉬 API(554)는 로컬 스토어 내에 이러한 접속 히스토리를 저장하는 것이 바람직하다. 에이전트(128)가 캐쉬(546)로부터 최종 T개의 데이터 간격을 검색할 필요가 있는 경우, 에이전트 캐쉬 API(554)는 접속 히스토리를 조사하여 데이터를 액세스하는 캐쉬를 결정하는 것이 바람직하다. 이를 위해 사용되기에 양호한 알고리즘은 다음과 같다: 1) 캐쉬 라이브러리는 모든 에지 캐쉬 간격을 조사하고 T 시간프레임 내에 있는 간격들을 검사한다. 간격이 시간 프레임 내에 있으면, 그것은 유효 에지 캐쉬의 리스트 Le에 추가된다. 2) 간격 시작 시간을 사용하여 리스트 Le가 저장된다. 3)Le 내의 에지 캐쉬들에 의해 포함되지 않는 각 간격에 대해서는, 업스트림 캐쉬를 조사하여 이 간격을 포함할 수 있는 모든 업스트림 캐쉬 간격들을 얻고 유효 간격들을 리스트 Lu에 추가한다. Lu를 Le에 추가하고 간격 시작 시간을 사용하여 Le를 정렬함으로써 L을 생성한다.
이 알고리즘은 캐쉬들의 리스트 L를 제공하고 각 캐쉬에 대해 데이터를 검색하는 시간 간격을 제공한다. 그 후 이 캐쉬들의 리스트 L는 4) 획득 캐쉬 메시지(get cache message)로 정렬(marshalling)되어 캐쉬 관리자(218)로 전송된다. 캐쉬 관리자(218) 측에서, 캐쉬 관리자(218)는 5) 획득 캐쉬 메시지로부터 캐쉬 간격들을 정렬해제(un-marshalling)하고 시작 시간의 증가 순서로 소팅된 리스트 L를 재생성하는 것이 바람직하다. 리스트 L 내의 각 간격에 대해, 캐쉬 관리자(218)는 6) 이전 간격과 현재 간격 사이에 간격이 존재하는지를 알아보기 위해 검사를 하고, 간격이 있으면, 로컬 캐쉬에게 데이터를 요구하는 것이 바람직하다. 간격이 없으면, 캐쉬 관리자(218)는 7) 적절한 캐쉬에게 데이터를 획득하도록 하는 것이 바람직하다. 캐쉬 관리자(218)는 8) 모든 캐쉬로부터의 데이터를 대조하고 그것을 에이전트(128)에 보내는 것이 바람직하다.
라우터 캐쉬 API: 지능형 라우터(92)에 있는 라우터 캐쉬 API(552)는 캐쉬 관리자(218)를 호출하여 특정 주제에 대한 캐싱(caching)을 생성, 파괴, 중지 및 재개시키는 기능을 한다. 라우터 캐쉬 API(552)는 또한 초기 구성을 다루는데, 지능형 라우터(92)로부터의 캐쉬 어드레스를 채널 관리자(150)로 업로딩하여, 필요한 경우에 에이전트(128)측(에이전트 캐쉬 API(554))이 이러한 정보를 얻을 수 있도록 하고, 다른 라우터들에 대한 캐쉬들(546)의 위치를 검색한다(이것은, 예를 들어 가입 응답시 및 주제 트리가 변한 후에, 지능형 라우터(92)가 주어진 주제에 대한 업스트림 캐쉬를 에이전트(128)에 통지하기를 원할 때 사용된다).
획득(pull)을 위한 캐쉬의 사용: 상기 논의는 영구 채널들을 구현하고 리턴 가입자(returning subscriber)들이 네트워크로부터 데이터를 획득할 수 있기 위해 캐쉬를 사용하는 것에 초점을 두고 있다. 다른 실시예는 임의의 가입자(신규 또는 리턴)가 (예를 들어, 가입자가 이미 가입된 것은 아니지만 누군가 다른 사람의 가입 때문에 캐시(546) 내에 있는 데이터를 포함하는) 임의의 종류의 데이터를 캐시(546)로부터 풀(pull)하도록 한다. 이 실시예와 선행하는 실시예의 차이점은, 리턴 가입자에 대해서는 데이터가 현재로 보증되고 데이터의 위치가 공지되지만 신규 가입자에 대해서는 저장된 데이터의 위치가 공지되지 않는다는 것이다. 이 다른 실시예를 구현하는 간단한 방법은 채널 상의 "FindCache" 요구를 발행하는 것이다. "FindCache" 요구는 채널 id, 주제, 필터, 시간 간격 및 요구된 캐시 데이터로 캐시(546)를 탐색하는 에이전트(128)의 위치를 포함한다. 모든 캐시(546)는 "FindCache" 요구를 수신한다. 각각의 캐시(546)가 요구를 수신하면, 캐시(546)는 대응하는 데이터가 그 데이터 스토어 내에 있는지를 확인하고, 그러면, 그 자신의 위치를 유니캐스트 메시지로 다시 전송한다. 에이전트(128)는 캐시(546) 중의 하나를 선택하고 그에 대한 GetCache 동작을 인보크하여 데이터를 획득한다.
최종 데이터 풀(pull): 다른 실시예는 가입자 애플리케이션(예를 들어, 애플리케이션(126))이 주어진 주제에 대한 최종 메시지를 획득하도록 하는 특징, 최종 데이터 풀을 포함한다. 이것은 주식 시세 경보 등의 데이터에 유용하고, 사용자는 히스토리가 아닌 최종 주식 가격을 알기를 원한다.
캐시 관리자의 구현: 예를 들어 캐시 관리자(218) 구현에는 바람직하게 3가지 유형의 스레드(thread)가 있다. 즉, 데이터 캐싱 스레드 - 데이터 캐싱 스레드는 바람직하게 지능형 라우터(92)로의 접속으로부터 데이터를 픽업하고 데이터를 인덱싱하여 메모리에 저장한다 -, 데이터 저장 스레드 - 시간 간격의 끝에 도달하면, 데이터 저장 스레드는 바람직하게 메모리에 저장된 데이터를 디스크로 이동시키고 프로세스에서 또한 만료된 데이터에 대한 폐영역 회수(garbage collection)를 수행한다 -, 데이터 검색 스레드 - 데이터 검색 스레드는 바람직하게 캐시 데이터에 대한 요구를 픽업하고 캐시(546)로부터 데이터를 검색하는 것을 담당한다 - 가 있다. 이 3가지 유형의 스레드는 단일 스레드 또는 스레드의 풀(pool)로서 구현될 수 있다. 바람직하게, 데이터 캐싱 스레드 및 데이터 저장 스레드는 데이터가 디스크로 이동되고 있는 동안 동기된다. 데이터 저장 스레드와 데이터 검색 스레드간의 동기화는 데이터가 검색되는 동안 데이터가 제거되는 것을 방지한다.
데이터 구조: 캐싱을 위한 데이터 구조의 예는 상기의 표 19 및 첨부된 설명에 제공된다.
데이터 저장: 도 36은 "아퀼라 캐시(Aquila Cache)"로 명명된 캐시(546)에 데이터 파일을 저장하는데 사용되는 바람직한 디렉토리 구조를 나타내는 도면이다. 각각의 주제 레벨 디렉토리는 바람직하게 한 세트의 차일드(child) 주제 디렉토리 뿐만 아니라 그 주제에 대해 발행되는 데이터를 저장하는 데이터 디렉토리를 갖는다. 예를 들어 엔터테인먼트 채널 상의 Fox.Movies에 대해 발행된 데이터는 디렉토리 AquilaCache/Entertainment/Fox/Movies/Data 내의 파일로 전달되고 주제 Fox에 대해 발행된 데이터는 디렉토리 AquilaCache/Entertainment/Fox/Data 내의 파일로 전달된다. 데이터 저장 속도를 증가시키기 위하여, 지능형 라우터(92)가 캐시(546)에게 주어진 채널 및 주제에 대한 캐싱을 시작할 것을 요청할 때 특정 주제를 위한 디렉토리 계층이 바람직하게 생성된다.
데이터 검색: 캐시(546)로부터의 데이터 검색은 데이터 저장 및 캐시(546)를 방해하지 않도록 효율적이어야 한다. 데이터 검색은 디스크 및 메모리 둘다로부터 데이터를 검색한다. 데이터 검색을 위해 취해지는 단계는 바람직하게 다음과 같다: 1) 데이터 노드의 위치를 찾고, 2) 데이터 노드를 록킹하고, 3) 검색될 필요가 있는 데이터의 타임 스탬프의 위치를 찾고, 3) 데이터를 검색하고 데이터를 메모리에 저장하고, 4) 데이터 노드를 언록킹하고, 5) 에이전트(128) 클라이언트에 발행하기 전에 메모리에 저장된 검색 데이터를 필터링하고 시퀀싱한다.
본 발명은 예시적인 실시예와 결합하여 설명되었지만, 많은 변경이 가능함은 당업자에게 자명한 것이고, 이 출원은 임의의 적응 또는 변경을 커버하기 위한 것이다. 예를 들어, 다양한 유형의 발행자 머신, 사용자 또는 가입자 머신, 채널 및 그들의 구성, 및 콘텐트-기반(content-based) 라우팅 및 다른 기능의 하드웨어 및 소프트웨어 구현이 본 발명의 범위를 벗어나지 않고 사용될 수 있다. 본 발명은 청구범위 및 그 동등물에 의해서만 한정된다.

Claims (113)

  1. 경보 서비스의 제공에 사용되는 네트워크 내의 라우터에서 패킷들을 라우팅하기 위한 방법으로서,
    헤더 섹션과, 특정 카메라로부터의 비디오 클립에 관한 정보를 포함하는 페이로드 섹션을 갖는 패킷을 수신하는 단계와,
    상기 패킷을 상기 특정 카메라로부터의 정보에 관련된 가입자들에게 라우팅하는 방식을 결정하는 데 사용하기 위해 네트워크 코어에서 상기 패킷의 상기 페이로드 섹션을 검사하는 단계와,
    상기 검사에 기초하여 상기 패킷을 선택적으로 라우팅하는 단계
    를 포함하는 패킷 라우팅 방법.
  2. 제1항에 있어서,
    상기 검사 단계는 콘텐트 술어 정보가 대응하는 네트워크 수신처에 연관되어지는 구조에서 상기 페이로드 섹션의 정보가 상기 콘텐트 술어 정보와 일치하는가를 판정하는 단계를 포함하는 패킷 라우팅 방법.
  3. 제1항에 있어서,
    상기 네트워크 코어 내의 라우터에서 상기 검사 단계를 수행하는 단계를 더 포함하는 패킷 라우팅 방법.
  4. 제1항에 있어서,
    상기 검사 단계는 상기 페이로드 섹션의 정보에 대해 필터를 적용시키는 단계를 포함하는 패킷 라우팅 방법.
  5. 제4항에 있어서,
    상기 검사를 행하는 데 사용하기 위해 상기 네트워크 내의 라우터에 상기 필터를 전파시키는 단계를 더 포함하는 패킷 라우팅 방법.
  6. 제1항에 있어서,
    상기 수신 단계, 상기 검사 단계, 및 상기 라우팅 단계를 수행하도록 상기 네트워크 내의 라우터를 프로그래밍하는 단계를 더 포함하는 패킷 라우팅 방법.
  7. 제1항에 있어서,
    상기 검사 단계는 상기 패킷의 라우팅 방식을 결정하는 데 사용하기 위해 속성을 검사하는 단계를 포함하는 패킷 라우팅 방법.
  8. 제1항에 있어서,
    선택적으로 라우팅하는 상기 단계는 상기 패킷을 디지탈 비디오 감시 시스템에 선택적으로 라우팅하는 단계를 포함하는 패킷 라우팅 방법.
  9. 제1항에 있어서,
    근거리 네트워크에서 상기 검사 단계를 수행하는 단계를 더 포함하는 패킷 라우팅 방법.
  10. 제1항에 있어서,
    인터넷 서비스 제공자 위치에서 상기 검사 단계를 수행하는 단계를 더 포함하는 패킷 라우팅 방법.
  11. 제1항에 있어서,
    상기 특정 카메라는 디지탈 비디오 레코더 및 전하 결합 소자를 포함하는 패킷 라우팅 방법.
  12. 제11항에 있어서,
    상기 디지탈 비디오 레코더는 상기 헤더 섹션 및 상기 페이로드 섹션을 포함하는 상기 패킷을 생성하며, 상기 페이로드 섹션은 상기 특정 카메라로부터의 상기 비디오 클립에 관한 정보를 포함하는 패킷 라우팅 방법.
  13. 경보 서비스를 제공하는 네트워크 내의 라우터에서 메시지들을 라우팅하기 위한 방법으로서,
    헤더 섹션, 적어도 하나의 주제, 및 특정 카메라로부터의 비디오 클립에 관한 적어도 하나의 속성을 포함하는 메시지를 수신하는 단계와,
    상기 메시지로부터 상기 주제 및 상기 속성을 검색하는 단계와,
    상기 주제에 기초하여 가입을 검색하는 단계와,
    상기 특정 카메라로부터의 정보에 관련된 가입자에게 상기 메시지를 라우팅하는 방식을 결정하기 위해 네트워크 코어에서 상기 가입에 대해 상기 속성을 적용하는 단계
    를 포함하는 메시지 라우팅 방법.
  14. 제13항에 있어서,
    상기 가입을 검색하는 단계는 상기 가입에 대응하는 필터를 검색하는 단계를 포함하는 메시지 라우팅 방법.
  15. 제13항에 있어서,
    상기 속성이 상기 가입을 만족시키면 상기 메시지를 라우팅하는 단계를 더 포함하는 메시지 라우팅 방법.
  16. 제13항에 있어서,
    상기 속성이 상기 가입을 만족시키지 않으면 상기 메시지를 폐기시키는 단계를 더 포함하는 메시지 라우팅 방법.
  17. 제13항에 있어서,
    복수의 가입에 대응하는 복수의 필터를 검색하는 단계와,
    상기 메시지로부터 복수의 속성을 검색하는 단계와,
    상기 필터들 각각에 대해 상기 속성 각각을 적용시켜, 대응하는 가입들 중 어느 하나가 만족되는가를 판정하는 단계와,
    상기 복수의 가입 중 어느 하나가 만족되는가에 기초하여, 상기 메시지를 선택적으로 라우팅하는 단계
    를 더 포함하는 메시지 라우팅 방법.
  18. 제13항에 있어서,
    상기 네트워크 코어 내의 라우터에서 상기 적용 단계를 수행하는 단계를 더 포함하는 메시지 라우팅 방법.
  19. 제13항에 있어서,
    상기 특정 카메라는 디지탈 비디오 레코더 및 전하 결합 소자를 포함하는 메시지 라우팅 방법.
  20. 제19항에 있어서,
    상기 디지탈 비디오 레코더는 상기 헤더 섹션, 상기 적어도 하나의 주제, 및 특정 카메라로부터의 비디오 클립에 관한 상기 적어도 하나의 속성을 포함하는 상기 메시지를 생성하는 메시지 라우팅 방법.
  21. 경보 서비스를 제공하는 데 사용하기 위한 네트워크 내의 라우터에서 패킷들을 라우팅하기 위한 방법으로서,
    헤더 섹션과, 특정 경보 서비스에 대한 이벤트에 관한 정보를 포함하는 페이로드 섹션을 갖는 패킷을 수신하는 단계와,
    상기 패킷을 상기 경보 서비스의 정보에 관련된 가입자들에게 라우팅하는 방식을 결정하는 데 사용하기 위해 네트워크 코어에서 상기 패킷의 상기 페이로드 섹션을 검사하는 단계와,
    상기 검사에 기초하여 상기 패킷을 선택적으로 라우팅하는 단계
    를 포함하는 패킷 라우팅 방법.
  22. 경보 서비스를 제공하는 데 사용하기 위한 네트워크 내에서 패킷들을 라우팅하기 위한 장치로서,
    헤더 섹션과, 특정 카메라로부터의 비디오 클립에 관한 정보를 포함하는 페이로드 섹션을 갖는 패킷을 수신하기 위한 수신 모듈과,
    상기 패킷을 상기 특정 카메라로부터의 정보에 관련된 가입자들에게 라우팅하는 방식을 결정하는 데 사용하기 위해 네트워크 코어에서 상기 패킷의 상기 페이로드 섹션을 검사하기 위한 검사 모듈과,
    상기 검사에 기초하여 상기 패킷을 선택적으로 라우팅하기 위한 라우팅 모듈
    을 포함하는 패킷 라우팅 장치.
  23. 제22항에 있어서,
    상기 검사 모듈은 콘텐트 술어 정보가 대응하는 네트워크 수신처들 또는 인-라우터(in-router) 처리를 통제하는 대응하는 규칙들에 연관되어지는 구조에서 상기 페이로드 섹션의 정보가 상기 콘텐트 술어 정보와 일치하는가를 판정하기 위한 모듈을 포함하는 패킷 라우팅 장치.
  24. 제22항에 있어서,
    상기 네트워크 코어 내의 라우터에서 상기 검사를 수행하기 위한 모듈을 더 포함하는 패킷 라우팅 장치.
  25. 제22항에 있어서,
    상기 검사 모듈은 상기 페이로드 섹션의 정보에 대해 필터를 적용시키기 위한 모듈을 포함하는 패킷 라우팅 장치.
  26. 제25항에 있어서,
    상기 검사를 행하는 데 사용하기 위해 상기 네트워크 내의 라우터에 상기 필터를 전파시키기 위한 모듈을 더 포함하는 패킷 라우팅 장치.
  27. 제22항에 있어서, 상기 수신, 검사 및 처리를 수행하도록 상기 네트워크에서 라우터를 프로그래밍하는 모듈을 더 포함하는 패킷 라우팅 장치.
  28. 제22항에 있어서, 상기 검사 모듈은 상기 패킷을 라우팅하는 방식을 결정하는 데 사용하기 위해 속성들을 검사하는 모듈을 포함하는 패킷 라우팅 장치.
  29. 제22항에 있어서, 상기 패킷 라우팅 장치는 디지탈 비디오 레코더를 포함하는 네트워크 내에 위치하는 패킷 라우팅 장치.
  30. 제22항에 있어서, 상기 특정 카메라는 디지탈 비디오 레코더 및 전하 결합 소자를 포함하는 패킷 라우팅 장치.
  31. 경보 서비스를 제공하는 네트워크에서 메시지들을 라우팅하는 장치로서,
    헤더 섹션, 적어도 하나의 주제, 및 특정 카메라로부터의 비디오 클립에 관련된 적어도 하나의 속성을 가진 메시지를 수신하는 수신 모듈;
    상기 메시지로부터 상기 주제 및 속성을 검색하는 모듈;
    상기 주제에 기초하여 가입을 검색하는 모듈; 및
    상기 특정 카메라로부터의 정보에 관련된 가입자에게 상기 메시지를 라우팅하는 방식을 결정하기 위하여 네트워크 코어에서 상기 속성을 상기 가입에 적용하는 적용 모듈
    을 포함하는 메시지 라우팅 장치.
  32. 제31항에 있어서, 상기 가입을 검색하는 모듈은 상기 가입에 대응하는 필터를 검색하는 모듈을 포함하는 메시지 라우팅 장치.
  33. 제31항에 있어서, 상기 속성이 상기 가입을 만족시키는 경우에, 그리고 서비스 품질의 보증에 기초하여 상기 메시지를 선택적으로 라우팅하는 모듈을 더 포함하는 메시지 라우팅 장치.
  34. 제31항에 있어서, 상기 속성이 모든 가입을 만족시키지 못하는 경우에 상기 메시지를 폐기하는 모듈을 더 포함하는 메시지 라우팅 장치.
  35. 제31항에 있어서,
    복수의 가입에 대응하는 복수의 필터를 검색하는 모듈;
    상기 메시지로부터 복수의 속성을 검색하는 모듈;
    대응하는 가입들 중 어느 하나가 만족되는지를 결정하기 위하여 상기 속성들의 각각을 상기 필터들의 각각에 적용하는 모듈; 및
    상기 복수의 가입들 중 어느 하나가 만족되는지의 여부에 기초하여 상기 메시지를 선택적으로 라우팅하는 모듈
    을 더 포함하는 메시지 라우팅 장치.
  36. 제31항에 있어서, 상기 네트워크 코어 내의 라우터에서 상기 적용을 수행하는 하나 이상의 모듈을 더 포함하는 메시지 라우팅 장치.
  37. 제31항에 있어서, 상기 메시지 라우팅 장치는 디지탈 비디오 레코더를 포함하는 네트워크 내에 위치하는 메시지 라우팅 장치.
  38. 제31항에 있어서, 상기 특정 카메라는 디지탈 비디오 카메라 및 전하 결합 소자를 포함하는 메시지 라우팅 장치.
  39. 경보 서비스를 제공하는 데 사용되는 네트워크에서 패킷들을 라우팅하는 시스템으로서,
    디지탈 비디오 출력을 생성하는 복수의 디지탈 비디오 카메라;
    상기 디지탈 비디오 카메라들을 접속시키는 근거리 네트워크(LAN);
    상기 LAN에 접속되어, 상기 디지탈 비디오 출력을 발행하는 발행자 에이전트;
    상기 발행자 에이전트에 접속되는 발행-가입 네트워크; 및
    상기 발행된 디지탈 비디오 출력을 상기 발행-가입 네트워크를 통해 수신하는 디지탈 비디오 감시 시스템(DVSS)
    을 포함하는 패킷 라우팅 시스템.
  40. 제39항에 있어서, 상기 발행-가입 네트워크에 접속되어, 상기 디지탈 비디오 출력에 가입하고, 상기 가입된 디지탈 비디오 출력을 상기 DVSS로 푸시하는 가입자 에이전트를 더 포함하는 패킷 라우팅 시스템.
  41. 제39항에 있어서, 상기 발행-가입 네트워크는 복수의 지능형 라우터를 포함하는 패킷 라우팅 시스템.
  42. 제41항에 있어서, 상기 지능형 라우터는
    헤더 섹션과, 상기 복수의 디지탈 비디오 카메라 중 하나로부터의 디지탈 비디오 컨텐트에 관련된 정보를 포함하는 페이로드 섹션을 가진 패킷을 수신하는 수신 모듈;
    상기 디지탈 비디오 카메라로부터의 정보에 관련된 가입자들에게 상기 패킷을 라우팅하는 방식을 결정하는 데 사용하기 위해 네트워크 코어에서 상기 패킷의 페이로드 섹션을 검사하는 검사 모듈; 및
    상기 검사에 기초하여 상기 패킷을 선택적으로 라우팅하는 라우트 모듈
    을 포함하는 패킷 라우팅 시스템.
  43. 가입자들에게 디지탈 컨텐트를 분배하는 네트워크로서,
    복수의 사용자 기계;
    디지탈 컨텐트를 규칙적으로 분배하는 중앙 분배기;
    상기 분배된 디지탈 컨텐트를 수신하여 캐싱하는 복수의 캐시 서버-상기 캐시 서버는 상기 캐싱된 디지탈 컨텐트의 일부에 대한 사용자 요구들을 사용자 기계로부터 주기적으로 수신하고, 상기 요구된 디지탈 컨텐트를 상기 사용자 기계들로 전송함-; 및
    상기 중앙 분배기로부터 상기 분배된 디지탈 컨텐트를 파일들로서 수신하고, 발행-가입 컨텐트 기반 라우팅을 이용하여 상기 디지탈 컨텐트 파일들을 상기 복수의 캐시 서버로 전송하는 라우팅 박스-상기 디지탈 컨텐트 파일은 발행물(publication)들이며, 상기 사용자 요구는 가입들임-
    를 포함하는 디지탈 컨텐트 분배 네트워크.
  44. 제43항에 있어서, 상기 라우팅 박스는 제1 라우팅 박스이고, 상기 네트워크는 상기 복수의 캐시 서버와 함께 위치하는 제2 라우팅 박스를 더 포함하며, 상기 제1 라우팅 박스는 상기 디지탈 컨텐트 파일들을 상기 복수의 캐시 서버 중 적어도 하나와 함께 위치하는 상기 제2 라우팅 박스로 라우팅하는 디지탈 컨텐트 분배 네트워크.
  45. 제43항에 있어서, 상기 복수의 캐시 서버는 네트워크 서비스 제공자에 위치하는 디지탈 컨텐트 분배 네트워크.
  46. 제43항에 있어서, 상기 복수의 캐시 서버는 상기 중앙 분배기에 의해 분배된 모든 디지탈 컨텐트를 저장하는 제1 레벨의 캐시 서버들인 디지탈 컨텐트 분배 네트워크.
  47. 제46항에 있어서, 상기 중앙 분배기에 의해 분배된 디지탈 컨텐트의 일부를 저장하는 제2 레벨의 캐시 서버들을 더 포함하는 디지탈 컨텐트 분배 네트워크.
  48. 제47항에 있어서, 상기 라우팅 박스는 제1 라우팅 박스이고, 상기 네트워크는 상기 제2 레벨의 캐시 서버들과 함께 위치하는 제2 라우팅 박스를 더 포함하며, 상기 제1 라우팅 박스 및 상기 제2 라우팅 박스는 발행-가입 컨텐트 기반 라우팅을 이용하여 디지탈 컨텐트 파일들을 상기 제1 레벨의 캐시 서버들에서 상기 제2 레벨의 캐시 서버들로 전송하는 디지탈 컨텐트 분배 네트워크.
  49. 제48항에 있어서, 상기 라우팅 박스들 각각은,
    헤더 섹션과, 디지탈 컨텐트 파일에 관련된 정보를 포함하는 페이로드 섹션을 가진 패킷을 수신하는 수신 모듈;
    상기 패킷을 라우팅하는 방식을 결정하는 데 사용하기 위해 상기 패킷의 상기 페이로드 섹션을 검사하는 검사 모듈; 및
    상기 검사에 기초하여 상기 패킷을 상기 제1 레벨의 캐시 서버들에서 상기 제2 레벨의 캐시 서버들로 선택적으로 라우팅하는 라우트 모듈
    을 포함하는 디지탈 컨텐트 분배 네트워크.
  50. 제47항에 있어서, 상기 제2 레벨의 캐시 서버들에 저장된 디지탈 컨텐트의 일부는 수신된 사용자 요구의 히스토리에 기초하여 결정되는 디지탈 컨텐트 분배 네트워크.
  51. 제47항에 있어서, 상기 제2 레벨의 캐시 서버들은 상기 사용자 요구를 직접 수신하며, 상기 제2 레벨의 캐시 서버들에 의해 저장되지 않은 디지탈 컨텐트에 대한 사용자 요구를 상기 제1 레벨의 캐시 서버들로 전송하는 디지탈 컨텐트 분배 네트워크.
  52. 제43항에 있어서, 상기 라우팅 박스는,
    헤더 섹션과, 디지탈 컨텐트 파일에 관련된 정보를 포함하는 페이로드 섹션을 가진 패킷을 수신하는 수신 모듈;
    상기 패킷을 라우팅하는 방식을 결정하는 데 사용하기 위해 상기 패킷의 페이로드 섹션을 검사하는 검사 모듈; 및
    상기 검사에 기초하여 상기 패킷을 상기 중앙 분배기에서 상기 복수의 캐시 서버로 선택적으로 라우팅하는 라우트 모듈
    을 포함하는 디지탈 컨텐트 분배 네트워크.
  53. 제43항에 있어서, 상기 중앙 분배기는 하나 이상의 서버를 포함하는 디지탈 컨텐트 분배 네트워크.
  54. 제43항에 있어서, 상기 디지탈 컨텐트는 비디오, 음악 및 소프트웨어를 포함하는 디지탈 컨텐트 분배 네트워크.
  55. 네트워크에서 디지탈 컨텐트를 가입자들에게 분배하는 방법으로서,
    중앙 분배기에서 디지탈 컨텐트를 분배하는 단계;
    상기 분배된 디지탈 컨텐트를 복수의 캐시 서버로 컨텐트 기반 라우팅하는 단계;
    상기 복수의 캐시 서버에서 상기 컨텐트 기반 라우팅된 디지탈 컨텐트를 캐싱하는 단계;
    요구된 캐시 디지탈 컨텐트에 대한 사용자 가입들을 수신하는 단계; 및
    상기 수신된 사용자 가입들에 기초하여, 요구된 디지탈 컨텐트를 상기 복수의 캐시 서버로부터 사용자들에게 전송하는 단계
    를 포함하는 디지탈 컨텐트 분배 방법.
  56. 제55항에 있어서, 상기 컨텐트 기반 라우팅 단계는
    헤더 섹션과, 디지탈 컨텐트 파일에 관련된 정보를 포함하는 페이로드 섹션을 가진 패킷을 수신하는 단계;
    상기 패킷을 라우팅하는 방식을 결정하는 데 사용하기 위해 상기 패킷의 페이로드 섹션을 검사하는 단계; 및
    상기 검사에 기초하여 상기 패킷을 상기 복수의 캐시 서버로 선택적으로 라우팅하는 단계
    를 포함하는 디지탈 컨텐트 분배 방법.
  57. 제56항에 있어서, 상기 검사 단계는 상기 컨텐트 술어 정보와 대응하는 수신처들을 연관시키는 구조에서 상기 페이로드 섹션의 정보가 상기 컨텐트 술어 정보와 일치하는지를 결정하는 단계를 포함하는 디지탈 컨텐트 분배 방법.
  58. 제56항에 있어서, 상기 검사 단계는 상기 페이로드 섹션의 정보에 필터를 적용하는 단계를 포함하는 디지탈 컨텐트 분배 방법.
  59. 제58항에 있어서, 상기 검사를 행하는 데 사용하기 위해 상기 네트워크에서 라우팅 박스로 상기 필터를 전파시키는 단계를 더 포함하는 디지탈 컨텐트 분배 방법.
  60. 제56항에 있어서, 상기 수신, 검사 및 라우팅 단계를 수행하도록 상기 네트워크에서 라우팅 박스를 프로그래밍하는 단계를 더 포함하는 디지탈 컨텐트 분배 방법.
  61. 제56항에 있어서, 상기 검사 단계는 상기 패킷을 라우팅하는 방식을 결정하는 데 사용하기 위해 속성들을 검사하는 단계를 포함하는 디지탈 컨텐트 분배 방법.
  62. 제56항에 있어서, 라우팅 박스에서 상기 검사 단계를 행하는 단계를 더 포함하는 디지탈 컨텐트 분배 방법.
  63. 제55항에 있어서, 상기 복수의 캐시 서버는 제1 레벨의 캐시 서버이며, 상기 방법은 컨텐트 기반 라우팅을 이용하여, 캐싱된 디지탈 컨텐트를 제2 레벨의 캐시 서버들로 전송하는 단계를 더 포함하는 디지탈 컨텐트 분배 방법.
  64. 제63항에 있어서, 상기 요구된 디지탈 컨텐트가 상기 제2 레벨의 캐시 서버들에 있는지를 결정하는 단계를 더 포함하는 디지탈 컨텐트 분배 방법.
  65. 제64항에 있어서, 상기 결정에 기초하여, 수신된 사용자 가입들을 상기 제1 레벨의 캐시 서버들로 전송하는 단계를 더 포함하는 디지탈 컨텐트 분배 방법.
  66. 제63항에 있어서,
    상기 전송 단계는, 수신된 사용자 가입들의 히스토리에 기초한 콘텐트 기반 라우팅을 이용하여, 캐싱된 디지털 콘텐트를 상기 제2 레벨의 캐시 서버들로 전송하는 디지탈 컨텐트 분배 방법.
  67. 서비스 품질 보증(a quality of service guarantee)과 관련하여 네트워크 내의 라우터에서 패킷을 라우팅하는 방법으로서,
    헤더 섹션과 페이로드 섹션을 갖는 패킷을 수신하는 단계와,
    상기 패킷을 라우팅하는 방식을 결정하는데 이용하기 위해 네트워크 코어에서 상기 패킷의 페이로드 섹션을 검사하는 단계와,
    상기 패킷에 대한 서비스 품질 보증을 결정하는 단계와,
    상기 검사와 상기 서비스 품질 보증에 기초하여 상기 패킷을 선택적으로 라우팅하는 단계
    를 포함하는 패킷 라우팅 방법.
  68. 제67항에 있어서,
    상기 검사 단계는, 콘텐트 술어 정보가 대응하는 네트워크 수신처와 연관되어 있는 구조에서 상기 콘텐트 술어 정보가 상기 페이로드 섹션에서의 정보와 일치하는지 여부를 결정하는 단계를 포함하는 패킷 라우팅 방법.
  69. 제67항에 있어서,
    상기 네트워크 코어의 라우터에서 상기 검사 단계를 수행하는 단계를 더 포함하는 패킷 라우팅 방법.
  70. 제67항에 있어서,
    상기 검사 단계는, 필터를 상기 페이로드 섹션의 정보에 매칭시키는 단계를 포함하는 패킷 라우팅 방법.
  71. 제70항에 있어서,
    상기 검사를 수행하는데 이용하기 위해 상기 필터를 상기 네트워크의 라우터에 전파시키는 단계를 더 포함하는 패킷 라우팅 방법.
  72. 제67항에 있어서,
    상기 수신 단계, 검사 단계, 및 라우팅 단계를 수행하도록 상기 네트워크의 라우터를 프로그래밍하는 단계를 더 포함하는 패킷 라우팅 방법.
  73. 제67항에 있어서,
    상기 검사 단계는, 상기 패킷을 라우팅하는 방식을 결정하거나 상기 패킷을 모두 드롭(drop)할지 여부를 결정하는데 이용하기 위해 속성들을 검사하는 단계를 포함하는 패킷 라우팅 방법.
  74. 네트워크 내의 라우터에서 메시지들을 라우팅하는 방법으로서,
    헤더 섹션, 적어도 하나의 주제, 및 적어도 하나의 속성을 갖는 메시지를 수신하는 단계와,
    상기 메시지로부터 상기 주제와 속성을 검색하는 단계와,
    상기 주제에 기초하여 가입을 검색하는 단계와,
    상기 메시지에 대한 서비스 품질 보증을 결정하는 단계와,
    상기 메시지를 라우팅하는 방식을 결정하기 위해 네트워크 코어에서 상기 속성을 상기 가입에 적용하는 단계와,
    상기 적용 및 상기 서비스 품질 보증에 기초하여 상기 메시지를 선택적으로 라우팅하는 단계
    를 포함하는 메시지 라우팅 방법.
  75. 제74항에 있어서,
    상기 가입을 검색하는 단계는, 상기 가입에 대응하는 필터를 검색하는 단계를 포함하는 메시지 라우팅 방법.
  76. 제74항에 있어서,
    상기 속성이 상기 가입을 만족하면 상기 메시지를 라우팅하는 단계를 더 포함하는 메시지 라우팅 방법.
  77. 제74항에 있어서,
    상기 속성이 상기 가입을 만족하지 않으면 상기 메시지를 폐기하는 단계를 더 포함하는 메시지 라우팅 방법.
  78. 제74항에 있어서,
    복수의 가입에 대응하는 복수의 필터를 검색하는 단계와,
    상기 메시지로부터 복수의 속성을 검색하는 단계와,
    대응하는 가입들 중 어느 하나가 만족되는지를 결정하기 위해, 상기 속성의 각각을 상기 필터의 각각에 매칭시키는 단계와,
    상기 복수의 가입 중 어느 하나가 만족되는지 여부에 기초하여 상기 메시지를 선택적으로 라우팅하는 단계
    를 더 포함하는 메시지 라우팅 방법.
  79. 삭제
  80. 서비스 품질 보장과 관련하여 네트워크에서 패킷들을 라우팅하는 장치로서,
    헤더 섹션과 페이로드 섹션을 갖는 패킷을 수신하는 모듈과,
    상기 패킷을 라우팅하는 방식을 결정하는데 이용하기 위해 네트워크 코어에서 상기 패킷의 페이로드 섹션을 검사하는 적어도 하나의 모듈과,
    상기 패킷에 대한 서비스 품질 보증을 결정하는 모듈과,
    위에서 결정된 서비스 품질 보증 및 검사 결과에 기초하여, 상기 패킷을 선택적으로 라우팅하는 모듈
    을 포함하는 패킷 라우팅 장치.
  81. 제80항에 있어서,
    상기 검사 모듈은, 콘텐트 술어 정보가 대응하는 네트워크 수신처들 또는 인-라우터 처리를 관리하는 대응 규칙들과 연관되어 있는 구조에서 상기 콘텐트 술어 정보가 상기 페이로드 섹션의 정보와 일치하는지 여부를 결정하는 모듈을 포함하는 패킷 라우팅 장치.
  82. 제80항에 있어서,
    상기 네트워크 코어의 라우터에서 상기 검사 단계를 수행하는 모듈을 더 포함하는 패킷 라우팅 장치.
  83. 제80항에 있어서,
    상기 검사 모듈은 필터를 상기 페이로드 섹션의 정보에 매칭시키는 모듈을 포함하는 패킷 라우팅 장치.
  84. 제83항에 있어서,
    상기 검사를 수행하는데 이용하기 위해 상기 필터를 상기 네트워크의 라우터에 전파시키는 모듈을 더 포함하는 패킷 라우팅 장치.
  85. 제80항에 있어서,
    상기 수신, 검사, 및 라우팅을 수행하도록 상기 네트워크의 라우터를 프로그래밍하는 모듈을 더 포함하는 패킷 라우팅 장치.
  86. 제80항에 있어서,
    상기 패킷 라우팅 장치는 라우터인 패킷 라우팅 장치.
  87. 네트워크에서 메시지들을 라우팅하는 장치로서,
    헤더 섹션, 적어도 하나의 주제, 및 적어도 하나의 속성을 갖는 메시지를 수신하는 모듈과,
    상기 메시지로부터 상기 주제와 속성을 검색하는 모듈과,
    상기 주제에 기초하여 가입을 검색하는 모듈과,
    상기 메시지를 라우팅하는 방식을 결정하기 위해 네트워크 코어에서 상기 속성을 상기 가입에 매칭시키는 모듈과,
    상기 메시지에 대해 서비스 품질 보증을 결정하는 모듈
    을 포함하는 메시지 라우팅 장치.
  88. 제87항에 있어서,
    상기 가입을 검색하는 모듈은, 상기 가입에 대응하는 필터를 검색하는 모듈을 포함하는 메시지 라우팅 장치.
  89. 제87항에 있어서,
    상기 속성이 상기 가입을 만족하는 경우, 그리고 상기 서비스 품질 보증에 기초하여, 상기 메시지를 선택적으로 라우팅하는 모듈을 더 포함하는 메시지 라우팅 장치.
  90. 제87항에 있어서,
    상기 가입은 상기 장치에 저장된 가입들로부터 검색되고, 상기 장치는 상기 속성이 상기 장치에 저장된 가입들 중 어느 것도 만족시키지 않으면 상기 메시지를 폐기하는 모듈을 더 포함하는 메시지 라우팅 장치.
  91. 제87항에 있어서,
    복수의 가입에 대응하는 복수의 필터를 검색하기 위한 모듈;
    상기 메시지로부터 복수의 속성을 검색하기 위한 모듈;
    상기 속성들 각각을 상기 필터들 각각에 매칭시켜 대응하는 가입들 중 어느 하나가 만족하는지를 판정하는 필터링 모듈; 및
    상기 복수의 가입 중 어느 하나가 만족하는지 여부에 기초하여 상기 메시지를 선택적으로 라우팅하기 위한 모듈
    을 포함하는 메시지 라우팅 장치.
  92. 제87항에 있어서,
    상기 네트워크 코어의 라우터에서 필터링 단계를 실행하기 위한 하나 이상의 모듈을 더 포함하는 메시지 라우팅 장치.
  93. 제87항에 있어서, 상기 메시지 라우팅 장치는 라우터인 메시지 라우팅 장치.
  94. 멀티캐스트 네트워크 내의 라우터에서 데이터의 패킷들을 라우팅하고 캐싱하는 방법으로서,
    헤더 섹션 및 페이로드 섹션을 갖는 패킷을 수신하는 단계;
    상기 패킷을 가입자에게 라우팅하는 방식을 결정하는데 사용하기 위해 네트워크 코어에서 패킷의 페이로드 섹션을 검사하는 단계;
    상기 검사에 기초하여 상기 패킷을 선택적으로 라우팅하는 단계; 및
    상기 네트워크 코어에서 상기 패킷으로부터의 데이터를 로컬 캐싱하는 단계
    를 포함하는 라우팅 및 캐싱 방법.
  95. 제94항에 있어서, 라우터에서 상기 검사 단계를 수행하는 단계를 더 포함하는 라우팅 및 캐싱 방법.
  96. 제94항에 있어서, 상기 검사 단계는 상기 페이로드 섹션의 정보에 필터를 적용하는 단계를 포함하는 라우팅 및 캐싱 방법.
  97. 제96항에 있어서, 상기 검사를 실시하는데 사용하기 위해 상기 네트워크의 라우터로 상기 필터를 전파시키는 단계를 더 포함하는 라우팅 및 캐싱 방법.
  98. 제94항에 있어서, 상기 수신 단계, 검사 단계, 라우팅 단계를 수행하도록 상기 네트워크의 라우터를 프로그래밍하는 단계를 더 포함하는 라우팅 및 캐싱 방법.
  99. 제94항에 있어서, 상기 검사 단계는 상기 패킷을 라우팅하는 방식을 결정하는데 사용하기 위해 속성들을 검사하는 단계를 포함하는 라우팅 및 캐싱 방법.
  100. 제94항에 있어서, 상기 캐싱된 데이터를 타임 마킹하는 단계를 더 포함하는 라우팅 및 캐싱 방법.
  101. 제94항에 있어서, 상기 캐싱된 데이터를 인덱싱하는 단계를 더 포함하는 라우팅 및 캐싱 방법.
  102. 제94항에 있어서,
    데이터 요청을 수신하는 단계; 및
    상기 캐싱된 데이터가 상기 요청을 만족하는지 판정하는 단계
    를 더 포함하는 라우팅 및 캐싱 방법.
  103. 제94항에 있어서, 엣지 라우팅 노드에서 상기 패킷으로부터의 데이터를 로컬 캐싱하는(locally caching) 단계를 더 포함하는 라우팅 및 캐싱 방법.
  104. 제94항에 있어서, 시간 프레임 T의 만료후에, 상기 캐싱된 데이터를 제거하는 단계를 더 포함하는 라우팅 및 캐싱 방법.
  105. 데이터의 패킷들을 라우팅하고 캐싱하기 위한 네트워크로서,
    헤더 섹션 및 페이로드 섹션을 갖는 패킷을 수신하고 라우팅하는 엣지 라우팅 노드; 및
    상기 패킷을 수신하고 라우팅하는 하나 이상의 코어 라우팅 노드를 포함하고,
    상기 엣지 라우팅 노드는,
    상기 수신된 패킷을 라우팅하는 지능형 라우터; 및
    상기 지능형 라우터와 동작상 연결된 캐시 관리자를 포함하고,
    상기 지능형 라우터는,
    상기 패킷을 가입자들에게 라우팅하는 방식을 결정하는데 사용하기 위해 네트워크 코어에서 패킷의 페이로드 섹션을 검사하기 위한 명령; 및
    상기 검사에 기초하여 패킷을 선택적으로 라우팅하기 위한 명령을 포함하고,
    상기 캐시 관리자는 상기 패킷으로부터의 데이터를 로컬 캐시에 로컬 캐싱하기 위한 명령을 포함하는 라우팅 및 캐싱 네트워크.
  106. 제105항에 있어서, 상기 엣지 라우팅 노드에 동작가능하게 연결되어,
    캐싱된 데이터의 위치를 결정하기 위한 명령;
    상기 로컬 캐시로부터 캐싱된 데이터를 검색하기 위한 명령; 및
    검색된 캐싱된 데이터를 처리하기 위한 명령
    을 포함하는 에이전트를 더 포함하는 라우팅 및 캐싱 네트워크.
  107. 제105항에 있어서, 상기 하나 이상의 코어 라우팅 노드중 하나는 상기 엣지 라우팅 노드로부터의 직접 업스트림이고,
    상기 직접 업스트림 코어 라우팅 노드는,
    상기 수신된 패킷을 라우팅하는 지능형 라우터; 및
    상기 지능형 라우터와 동작상 연결된 캐시 관리자를 포함하고,
    상기 지능형 라우터는,
    상기 패킷을 가입자에게 라우팅하는 방식을 결정하는 데 사용하기 위해 네트워크 코어에서 패킷의 페이로드 섹션을 검사하기 위한 명령; 및
    상기 검사에 기초하여 패킷을 선택적으로 라우팅하기 위한 명령을 포함하고,
    상기 캐시 관리자는 상기 패킷으로부터의 데이터를 로컬 캐시에 로컬 캐싱하기 위한 명령을 포함하는 라우팅 및 캐싱 네트워크.
  108. 제105항에 있어서, 복수의 채널에 특성을 제공하는 복수의 채널 관리자를 더 포함하는 라우팅 및 캐싱 네트워크.
  109. 제105항에 있어서, 상기 캐시 관리자는 캐싱된 데이터를 타임 마킹하기 위한 명령을 더 포함하는 라우팅 및 캐싱 네트워크.
  110. 제105항에 있어서, 상기 캐시 관리자는 캐싱된 데이터를 인덱싱하기 위한 명령을 더 포함하는 라우팅 및 캐싱 네트워크.
  111. 제105항에 있어서, 상기 캐시 관리자는
    데이터 요청을 수신하기 위한 명령; 및
    상기 캐싱된 데이터가 상기 요청을 만족하는지 판정하기 위한 명령
    을 더 포함하는 라우팅 및 캐싱 네트워크.
  112. 멀티캐스트 네트워크에서 데이터의 패킷들을 라우팅하고 캐싱하는 장치로서,
    복수의 프로세서를 포함하고,
    상기 복수의 프로세서는,
    헤더 섹션 및 페이로드 섹션을 갖는 패킷을 수신하기 위한 명령;
    상기 패킷을 가입자에게 라우팅하는 방식을 결정하는데 사용하기 위해 네트워크 코어에서 상기 패킷의 페이로드 섹션을 검사하기 위한 명령;
    상기 검사에 기초하여 상기 패킷을 선택적으로 라우팅하기 위한 명령; 및
    상기 네트워크 코어의 상기 패킷으로부터의 데이터를 로컬 캐싱하기 위한 명령
    을 실행하도록 구성된 라우팅 및 캐싱 장치.
  113. 제112항에 있어서, 상기 복수의 프로세서는 제1 프로세서 및 제2 프로세서를 포함하고, 상기 제1 프로세서는 상기 검사 및 선택적 라우팅 명령을 실행하고, 상기 제2 프로세서는 상기 로컬 캐싱 명령을 실행하는 라우팅 및 캐싱 장치.
KR1020057000385A 2002-07-08 2003-07-08 패킷 라우팅을 위한 방법, 장치 및 시스템, 메시지 라우팅을 위한 방법 및 장치, 디지탈 컨텐트 분배를 위한 네트워크 및 방법, 및 라우팅 및 캐싱을 위한 방법, 네트워크 및 장치 KR100985237B1 (ko)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US39456102P 2002-07-08 2002-07-08
US39463102P 2002-07-08 2002-07-08
US39464102P 2002-07-08 2002-07-08
US39471402P 2002-07-08 2002-07-08
US60/394,561 2002-07-08
US60/394,631 2002-07-08
US60/394,641 2002-07-08
US60/394,714 2002-07-08
PCT/US2003/021338 WO2004006486A2 (en) 2002-07-08 2003-07-08 Packet routing via payload inspection for alert services, for digital content delivery and for quality of service management and caching with selective multicasting in a publish-subscribe network

Publications (2)

Publication Number Publication Date
KR20050017108A KR20050017108A (ko) 2005-02-21
KR100985237B1 true KR100985237B1 (ko) 2010-10-04

Family

ID=30119330

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057000385A KR100985237B1 (ko) 2002-07-08 2003-07-08 패킷 라우팅을 위한 방법, 장치 및 시스템, 메시지 라우팅을 위한 방법 및 장치, 디지탈 컨텐트 분배를 위한 네트워크 및 방법, 및 라우팅 및 캐싱을 위한 방법, 네트워크 및 장치

Country Status (6)

Country Link
EP (1) EP1535157A4 (ko)
JP (2) JP2005532748A (ko)
KR (1) KR100985237B1 (ko)
CN (1) CN1701304B (ko)
AU (1) AU2003256463A1 (ko)
WO (1) WO2004006486A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101487859B1 (ko) 2014-01-15 2015-02-02 주식회사 이디엄 자바 프로그램 실행시 유저 데이터그램 프로토콜 패킷을 수집하는 방법

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0629764A (ja) * 1991-07-16 1994-02-04 Nec Ic Microcomput Syst Ltd 風雑音低減マイクロフォン増幅装置
JP4614128B2 (ja) 2004-12-10 2011-01-19 日本電気株式会社 パケット配送システム、pan登録装置、pan管理装置及びパケット転送装置
MX2007007461A (es) * 2004-12-23 2007-08-20 Ericsson Telefon Ab L M Metodo para informar a multiples terminales moviles de un evento de emergencia.
US20070005725A1 (en) * 2005-06-30 2007-01-04 Morris Robert P Method and apparatus for browsing network resources using an asynchronous communications protocol
CN100456753C (zh) * 2005-07-13 2009-01-28 华为技术有限公司 一种消息匹配的方法及***
CN1925482B (zh) * 2005-09-01 2013-03-27 中兴通讯股份有限公司 一种人机命令格式的转换方法和装置
US8194701B2 (en) 2005-12-06 2012-06-05 Lippershy Celestial Llc System and/or method for downstream bidding
US9686183B2 (en) 2005-12-06 2017-06-20 Zarbaña Digital Fund Llc Digital object routing based on a service request
US8055897B2 (en) 2005-12-06 2011-11-08 Lippershy Celestial Llc Digital object title and transmission information
US8014389B2 (en) 2005-12-06 2011-09-06 Lippershy Celestial Llc Bidding network
US7894447B2 (en) 2005-12-06 2011-02-22 Lippershy Celestial Llc Digital object routing
JP4680068B2 (ja) * 2006-01-05 2011-05-11 富士通株式会社 通信制御方法、ネットワーク及びネットワーク機器
US9330190B2 (en) 2006-12-11 2016-05-03 Swift Creek Systems, Llc Method and system for providing data handling information for use by a publish/subscribe client
WO2012002726A2 (ko) * 2010-06-30 2012-01-05 한국전자통신연구원 통신 노드 및 통신 방법
KR20120002424A (ko) 2010-06-30 2012-01-05 한국전자통신연구원 통신 노드 및 통신 방법
CN101969469B (zh) 2010-10-25 2013-11-06 华为技术有限公司 电信能力开放中的回调处理方法及装置
US9402200B2 (en) 2011-11-29 2016-07-26 Telefonaktiebolaget L M Ericsson (Publ) Flow based packet manipulation congestion control
CN103166851B (zh) * 2011-12-16 2016-06-15 中国电信股份有限公司 互联网信息的传送处理方法与***
US9026410B2 (en) * 2012-03-16 2015-05-05 The Boeing Company System and method for rapid management of logic formulas
CN106455140A (zh) * 2014-01-24 2017-02-22 北京奇虎科技有限公司 属性信息的显示***和路由器
CN104811740B (zh) * 2015-04-29 2019-01-08 北京奇艺世纪科技有限公司 一种视频文件的分发方法、***及装置
JP6665697B2 (ja) 2016-06-09 2020-03-13 富士通株式会社 過去情報提供プログラム、過去情報提供方法及び過去情報提供装置
US10824598B2 (en) * 2018-08-07 2020-11-03 Dell Products L.P. Handling file commit and commit-delete operations in an overlay optimizer
JP2020126283A (ja) * 2019-01-31 2020-08-20 有二 菱沼 企業情報送受信システム
CN112383582A (zh) * 2020-10-09 2021-02-19 爱普(福建)科技有限公司 一种边缘层实时数据的管理方法和***
WO2022180690A1 (ja) * 2021-02-24 2022-09-01 日本電信電話株式会社 通信システム、通信装置、データ配信方法、及びプログラム
JP2022164421A (ja) * 2021-04-16 2022-10-27 Jcc株式会社 放送録画装置及び放送録画装置用プログラム
CN114900555A (zh) * 2021-12-14 2022-08-12 合肥哈工轩辕智能科技有限公司 基于无损压缩算法的数据分发方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020087881A1 (en) 2000-12-29 2002-07-04 Shlomi Harif System, method and program for identifying and binding a process in a heterogeneous network
US20020162025A1 (en) 2001-04-30 2002-10-31 Sutton Lorin R. Identifying unwanted electronic messages
US6523068B1 (en) 1999-08-27 2003-02-18 3Com Corporation Method for encapsulating and transmitting a message includes private and forwarding network addresses with payload to an end of a tunneling association

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2242844A1 (en) * 1995-12-15 1997-06-26 Bell Communications Research, Inc. Systems and methods employing video combining for intelligent transportation applications
US5873084A (en) * 1996-01-18 1999-02-16 Sun Microsystems, Inc. Database network connectivity product
GB2350758A (en) * 1999-06-04 2000-12-06 Ibm Message broker providing a publish/subscribe sevice and method of processing messages in a publish/subscribe environment
JP3685651B2 (ja) * 1999-06-04 2005-08-24 沖電気工業株式会社 相互接続装置及びアクティブQoSマッピング方法
GB2354349A (en) * 1999-09-16 2001-03-21 Ibm Event notification data processing with command and command notification combined into a single event
US7283502B1 (en) * 2000-09-21 2007-10-16 Lucent Technologies Inc. Enhancement of framing protocol frame format to support quality of service
US7046680B1 (en) * 2000-11-28 2006-05-16 Mci, Inc. Network access system including a programmable access device having distributed service control

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6523068B1 (en) 1999-08-27 2003-02-18 3Com Corporation Method for encapsulating and transmitting a message includes private and forwarding network addresses with payload to an end of a tunneling association
US20020087881A1 (en) 2000-12-29 2002-07-04 Shlomi Harif System, method and program for identifying and binding a process in a heterogeneous network
US20020162025A1 (en) 2001-04-30 2002-10-31 Sutton Lorin R. Identifying unwanted electronic messages

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101487859B1 (ko) 2014-01-15 2015-02-02 주식회사 이디엄 자바 프로그램 실행시 유저 데이터그램 프로토콜 패킷을 수집하는 방법

Also Published As

Publication number Publication date
WO2004006486A3 (en) 2004-05-27
EP1535157A2 (en) 2005-06-01
WO2004006486A2 (en) 2004-01-15
AU2003256463A1 (en) 2004-01-23
KR20050017108A (ko) 2005-02-21
CN1701304A (zh) 2005-11-23
JP2010148118A (ja) 2010-07-01
EP1535157A4 (en) 2010-09-08
CN1701304B (zh) 2010-05-05
AU2003256463A8 (en) 2004-01-23
JP2005532748A (ja) 2005-10-27

Similar Documents

Publication Publication Date Title
KR100985237B1 (ko) 패킷 라우팅을 위한 방법, 장치 및 시스템, 메시지 라우팅을 위한 방법 및 장치, 디지탈 컨텐트 분배를 위한 네트워크 및 방법, 및 라우팅 및 캐싱을 위한 방법, 네트워크 및 장치
US7672275B2 (en) Caching with selective multicasting in a publish-subscribe network
US7376092B2 (en) Method and apparatus for implementing persistent and reliable message delivery
US7587517B2 (en) Packet routing via payload inspection for quality of service management
US7551629B2 (en) Method and apparatus for propagating content filters for a publish-subscribe network
KR100971506B1 (ko) 발행 구독 네트워크에서 신뢰할 수 있고 효과적인 콘텐츠 기반 라우팅 및 질의와 응답을 위한 방법 및 장치
CN1656749B (zh) 数字内容分发***、方法、程序及服务器和客户机
US20040083305A1 (en) Packet routing via payload inspection for alert services
US20030195946A1 (en) Method and apparatus for reliable publishing and subscribing in an unreliable network
US7545805B2 (en) Method and apparatus for content-based routing and filtering at routers using channels
US20010034788A1 (en) System and method for receiving packet data multicast in sequential looping fashion
US20020013897A1 (en) System and method for secure delivery of rich media
US20040078450A1 (en) Packet routing via payload inspection for digital content delivery
US7653753B2 (en) Method and apparatus for content-based packet routing using compact filter storage and off-line pre-computation
JP2008211835A (ja) ペイロード検査を介したパケット・ルーティング、及びパブリッシュ/サブスクライブ型ネットワークにおけるサブスクリプション処理
CN111125426A (zh) 一种数据存储和查询的方法及装置
US20030165139A1 (en) Packet routing via payload inspection
US7117270B2 (en) Method for sending and receiving a Boolean function over a network
JP4429173B2 (ja) デジタル通信データに基づいてアクションをトリガーする方法及びコンピュータ・システム
US11616849B2 (en) Distributed split edge application architecture
US7411954B2 (en) Efficient implementation of wildcard matching on variable-sized fields in content-based routing
Calvert et al. Scalable network management using lightweight programmable network services
KR20040039288A (ko) 게시-가입 네트워크에서의 페이로드 조사 및 가입 처리를통한 패킷 라우팅
Kodeswaran COCONET: CONTENT AND CONTEXT AWARE NETWORKING
Ratnasamy et al. Inference of Multicast Routing Trees and Bottleneck Bandwidths using

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
FPAY Annual fee payment

Payment date: 20130911

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150909

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160912

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170914

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180907

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190917

Year of fee payment: 10