KR100985237B1 - 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 - Google Patents

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 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
Korean (ko)
Other versions
KR20050017108A (en
Inventor
엔넌 후앙
알렉스 더블유.피. 펑
데이비드 에스. 로센블럼
살리니 야즈닉
라두 데오도레스쿠
츠-웨이 첸
치-메이 린
청-이 왕
핑-파이 양
로저 씨. 렝
Original Assignee
프리캐시 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 프리캐시 인크. filed Critical 프리캐시 인크.
Publication of KR20050017108A publication Critical patent/KR20050017108A/en
Application granted granted Critical
Publication of KR100985237B1 publication Critical patent/KR100985237B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/16Multipoint routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • 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]

Abstract

비디오, 음악 및 소프트웨어 등과 같은 디지털 콘텐트의 분배에 있어서, 경보 서비스의 제공에 있어서, 그리고 서비스 보증의 품질에 따라, 분산 네트워크의 코어 내의 라우터들에서 페이로드 검사를 통해 패킷 라우팅을 이용한다. 패킷은 라우팅 정보에 부가하여 주제들 및 속성들을 포함한다. 주제들은 가입 콘텐트의 특별한 타입에들에 대응하고, 속성들은 데이터 또는 콘텐트를 캡슐화한다. 가입은 서비스 보증의 특별한 품질 또는 서비스 레벨과 연관될 수 있다. 라우터들은 콘텐트에 대한 가입에 대응한 필터들을 저장한다. 패킷을 수신하면, 속성들을 포함하는 패킷의 페이로드 섹션을 검사하여 속성들을 검색하고, 카메라로부터의 콘텐트에 대한 가입들에 대한 필터들에 이들을 적용한다. 속성이 필터를 충족시킨다면, 패킷은 그 다음 링크로 라우트된다. 속성들이 필터들을 충족시키지 않는다면, 라우터는 패킷을 무시한다. 이 라우팅 결정은 네트워크 코어 내의 라우터들 중에 분산되어 있다. 라우터는 네트워크 코어 내에 데이터를 국지적으로 캐시한다. In the distribution of digital content, such as video, music and software, packet routing is used through payload inspection at routers in the core of the distributed network, in the provision of alerting services, and in accordance with the quality of service assurance. The packet contains subjects and attributes in addition to the routing information. Subjects correspond to particular types of subscription content, and attributes encapsulate data or content. Subscription may be associated with a particular quality of service guarantee or service level. Routers store filters corresponding to subscriptions to content. Upon receiving the packet, it examines the payload section of the packet containing the attributes to retrieve the attributes and applies them to filters for subscriptions to content from the camera. If the attribute satisfies the filter, the packet is routed to the next link. If the attributes do not satisfy the filters, the router ignores the packet. This routing decision is distributed among the routers in the network core. The router caches data locally within the network core.

분산 네트워크, 경보 서비스, 라우터, 패킷, 속성, 필터, 디지털 콘텐트Distributed Networks, Alert Services, Routers, Packets, Attributes, Filters, Digital Content

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}PACKET ROUTING VIA PAYLOAD INSPECTION FOR ALERT SERVICES, FOR DIGITAL, A method and apparatus for packet routing, a method and apparatus for message routing, a network and method for digital content distribution, and a method and network for routing and caching. CONTENT DELIVERY AND FOR QUALITY OF SERVICE MANAGEMENT AND CACHING WITH SELECTIVE MULTICASTING IN A PUBLISH-SUBSCRIBE NETWORK}

본 발명은 경보 서비스들(alert services)을 제공하는 데 사용하기 위한 패킷 내의 페이로드(payload)의 검사(inspection)에 기초하여 네트워크 코어(network core)에서 패킷들을 라우팅하기 위한 방법 및 장치에 관한 것이다. The present invention relates to a method and apparatus for routing packets in a network core based on an inspection of a payload in a packet for use in providing alert services. .

[관련 출원의 참조][Reference to Related Applications]

본 출원은 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일에 출원되었고 모두 본 명세서에 참조로서 포함된다. This application claims priority based on US Provisional Application No. 60 / 394,631, filed on July 8, 2002 and entitled "Packet Routing Via Payload Inspection for Quality of Service Management", which is incorporated herein by reference. do. The present application also discloses US Patent Application No. 10 / 199,356, entitled "Packet Routing Via Payload Inspection," US Patent Application, entitled "Method and Apparatus For Content-Based Routing And Filtering At Routers Using Channels." 10 / 199,368, US Patent Application No. 10 / 199,439, entitled "Method For Sending And Receiving A Boolean Function Over A Network", entitled "Method For Storing Boolean Functions To Enable Evaluation, Modification, Reuse" , US Patent Application No. 10 / 199,369 entitled "And Delivery Over A Network" and US Patent Application No. 10 / 199,388 entitled "Efficient Implementation of Wildcard Matching On Variable-Sized Fields In Connect-Based Routing" Continuation-in-part (CIP), all of which were filed on July 19, 2002 and are all incorporated herein by reference.

본 출원은 또한, 역시 앞서 참조된 출원들의 일부계속출원들이며 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호이다.
The present application also contains some of the following U.S. patent applications, also filed on March 28, 2003, which are also part of the previously referenced applications, which are entitled "Method and Apparatus for Reliable Publishing and Subscribing in Application No. 10 / 400,671 entitled "An Unreliable Network," Application No. 10 / 400,465, titled "Method and Apparatus For Content-Based Routing Using Compact Filter Storage and Off-Line Pre-computation," Method No. 10 / 400,453, Method and Apparatus for Implementing Query-Response Interactions in a Publish-Subscribe Network, Application No. 10 / 400,462, titled "Method and Apparatus for Implementing Persistent and Reliable Message Delivery," and invention No. 10 / 400,444 entitled "Method and Apparatus for Propagating Content Filters for a Publish-Subscribe Network".

네트워크 대역폭은 기하급수적으로 증가하고 있다. 한편, 네트워크 인프라구조(라우터, 서버, 데몬(daemon), 프로토콜 등을 포함)는 여전히 상대적으로 오래된 기술들을 사용하고 있다. 그 결과, 인터넷 애플리케이션들 및 네트워크 라우터들은 대역폭 증가 속도를 따라갈 수가 없다. 동시에, 점점 많은 장치들 및 애플리케이션들이 네트워크에서 사용 가능하게(network enabled) 되고 있다. 이러한 장치들 및 애플리케이션들이 네트워크 노드들 상에 가하는 부하가 엄청나게 증가하게 되었다. 네트워크 부하 및 애플리케이션들의 수가 증가는 또한 네트워크 애플리케이션들의 구현 및 유지를 훨씬 복잡하게 한다. 그 결과, 네트워크 대역폭의 증가 및 네트워크 장치들 및 애플리케이션들의 편재하는(ubiquitous) 사용은, 특히 콘텐트를 가입자들(subscribers)에게 발행(publish)할 때, 오래된 네트워크 인프라구조에서의 데이터의 라우팅 및 전송에 대해 문제를 가져올 수 있다. Network bandwidth is growing exponentially. Meanwhile, network infrastructure (including routers, servers, daemons, protocols, etc.) still use relatively old technologies. As a result, Internet applications and network routers cannot keep up with the pace of bandwidth growth. At the same time, more and more devices and applications are becoming network enabled. The load that these devices and applications put on network nodes has increased tremendously. Increasing network load and number of applications also complicates the implementation and maintenance of network applications. As a result, the increase in network bandwidth and the ubiquitous use of network devices and applications are particularly important for the routing and transmission of data in older network infrastructures, especially when publishing content to subscribers. Can bring about problems.

네트워크로 하여금 서버들로부터 클라이언트들로 정보를 전달하게(push) 하기 위한 모델이 발행-가입 형태(publish-subscribe style)이다. 이러한 모델에서, 어떤 클라이언트들이 서버의 정보에 관심을 가질 수 있는지 또는 그들이 네트워크에서 어디에 위치하는지와 무관하게, 서버는 그 정보의 단순화된 발행자가 된다. 클라이언트들은 정보에 대한 가입자들이 되는데, 정보는 그것이 네트워크에서 어디서 발행되었는지에 관한 세부 사항들과 잠재적으로 무관하게, 그것이 이용 가능하게 된 때에 전달된다. 이어서 네트워크는 발행된 정보를 가입자들에게 효율적으로 라우팅하고, 능동 가입들(active subscriptions)과 정보를 매칭하며, 발행자들 및 가입자들에게 투명한(transparent) 방식으로 이러한 모든 일들을 행하는 것에 대한 책임을 진다. The model for allowing the network to push information from servers to clients is a publish-subscribe style. In this model, the server becomes a simplified publisher of that information, regardless of which clients may be interested in the server's information or where they are located in the network. Clients become subscribers to the information, which is delivered when it becomes available, potentially regardless of the details of where it was published in the network. The network is then responsible for efficiently routing the published information to subscribers, matching information with active subscriptions, and doing all these things in a transparent manner to publishers and subscribers. .                 

발행-가입 모델에서 서버의 복잡도(complexity)가 상당히 감소하게 때문에, 큰 부하의(heavyweight) 서버 및 작은 부하의(lightweight) 클라이언트 간의 구별이 사라지기 시작할 수도 있고, 오히려 발행자, 또는 가입자, 또는 양자일 수 있는 피어(peer)의 개념(notion)으로 통합되기 시작할 수도 있다. 여러 종류의 애플리케이션들은 피어들 간의 발행-가입 형태의 상호작용(interaction)에 대해 자연적 동질성(natural affinity)을 갖는다. 이러한 애플리케이션들의 기반에 있는 공통된 주제(theme)는 발행되고 가입되고 있는 정보가 이벤트들의 형태로 되어 있다는 점이다. 예를 들어, 투자자는 주식을 사거나 팔아서 그 주식의 가격에 변동을 초래한다. 도로에서 교통 사고가 발생하면 도로 상의 교통량의 정체를 초래한다. 소프트웨어 시스템의 보안 구멍(security hole)이 발견되면, 그 소프트웨어의 사용자들을 위해 패치가 개발되도록 한다. 인터넷 게임에서 플레이어가 무기를 발사하면, 다른 플레이어의 아바타(avatar)가 죽게 된다. 이러한 모든 예시적인 현상은 많은 수의 가입자들에게 잠재적으로 관심의 대상인 이벤트들이며 그러한 가입자들에게 그 이벤트들이 발생했음을 통지하기 위해 네트워크를 거쳐 전파(propagate)될 수 있다. 따라서 이벤트는, 네트워크 상의 소정의 장소에서 소정의 시점에서 발생한 잠재적으로 흥미로운 어떤 일에 관한, 자체-완비된(self-contained) 간결한(succinct) 하나의 정보이다. Because the complexity of the servers in the publish-subscribe model is significantly reduced, the distinction between heavyweight servers and lightweight clients may begin to disappear, rather than issuers, subscribers, or both. It may begin to integrate into the notion of a possible peer. Different types of applications have a natural affinity for publish-subscribe forms of interaction between peers. A common theme underlying these applications is that the information being published and subscribed to is in the form of events. For example, an investor buys or sells a stock, causing the price of the stock to change. Traffic accidents on the roads lead to traffic congestion on the roads. If a security hole in the software system is found, a patch can be developed for users of the software. When a player fires a weapon in an internet game, the avatar of another player dies. All these example phenomena are events of potential interest to a large number of subscribers and can be propagated across the network to notify such subscribers that such events have occurred. Thus, an event is one self-contained succinct information about something potentially interesting that occurred at a given point in time on a network.

통상적으로 서버 또는 발행자는 발행-가입 모델에서 어느 곳으로 발행된 콘텐트를 전송할 것인지를 네트워크에게 지시하기 위해 네트워크에 대해 라우팅 결정들(routing decisions)을 수행한다. 발행자는 그가 발행한 콘텐트에 대한 가입들 을 저장한다. 새로운 콘텐트를 수신하거나 생성하는 때에, 발행자는 그 콘텐트를 각각의 가입들과 비교하여 부합(match)하는 것이 있는지 식별한다. 콘텐트(이벤트)가 임의의 가입들을 충족하는 경우에, 발행자는 네트워크를 통해 그 콘텐트를 대응하는 가입자에게 전달(push)한다. 이러한 전통적인 발행-가입 모델은, 특히 점점 많은 장치들이 네트워크에서 사용 가능하게 되고 가입들의 수가 증가함에 따라, 발행자에게 엄청난 부담(burden)을 지운다. Typically the server or publisher makes routing decisions for the network to instruct the network where to send the published content in the publish-subscribe model. The publisher stores subscriptions to the content he has published. When receiving or creating new content, the publisher compares the content with respective subscriptions to identify if there is a match. If the content (event) meets any subscriptions, the publisher pushes the content over the network to the corresponding subscriber. This traditional publish-subscribe model places enormous burden on publishers, especially as more and more devices become available in the network and the number of subscriptions increases.

인터넷에 걸쳐 있는 막대한 수의 애플리케이션들이 보다 크게 집중(convergence)되면, 이벤트 통지(event notification)의 이용에 대한 가능성들이 무한하게 된다. 그러나, 그러한 가능성들은, 라우팅 결정들을 행하고 이벤트들이 가입들을 충족하는 시기를 결정하여 발행자들의 부담을 덜어주는 보다 효율적인 방식을 필요로 한다. 따라서, 널리 보급되며(pervasive), 지속적인(persistent) 이벤트 통지 서비스는 인터넷 애플리케이션들뿐만 아니라 다른 애플리케이션들 및 구현들에 대하여 상당한 부가가치가 있는 이점을 제공할 수 있다. As the enormous number of applications across the Internet converge more heavily, the possibilities for the use of event notifications are endless. However, such possibilities require a more efficient way of making routing decisions and determining when events meet subscriptions to offload the issuer. Thus, a pervasive, persistent event notification service can provide significant added value for Internet applications as well as other applications and implementations.

본 방법 및 장치는 네트워크에서 경보 서비스들을 제공하는데 사용되기 위한 패킷들의 라우팅을 제공한다. 본 방법 및 장치는 종래 기술의 단점들을 극복한다. 본 방법 및 장치의 장점은 비디오 클립들의 처리 및 라우팅에 있어서 네트워크의 부담을 상당히 감소시키는 것을 포함한다. 다른 장점은 비디오 클립들의 라우팅에 대한 대역폭 요구사항들(bandwidth requirements)을 감소시키는 것을 포함한다. 또 다른 장점은 디지털 비디오 레코더 근거리 네트워크(digital video recorder local area network) 상의 국부적 트래픽(local traffic)을 감소시키는 것을 포함한다. The method and apparatus provide routing of packets for use in providing alert services in a network. The method and apparatus overcome the disadvantages of the prior art. Advantages of the method and apparatus include significantly reducing the burden on the network in the processing and routing of video clips. Another advantage includes reducing bandwidth requirements for the routing of video clips. Another advantage includes reducing local traffic on a digital video recorder local area network.

이들 및 다른 장점들을 달성하기 위한 실시예에서, 헤더 가입(header section) 및 페이로드 가입(payload section)을 갖는 패킷이 수신되며, 페이로드 섹션은 특정 카메라로부터의 비디오 클립에 관한 정보를 포함한다. 페이로드 섹션은, 특정 카메라로부터의 정보에 관련된 가입자들에게 패킷을 어떻게 라우팅하는지를 결정하기 위해, 네트워크 코어에서 검사(inspect)되며, 그 패킷은 검사에 기초하여 선택적으로 라우팅된다. 이들 및 다른 장점들은 또한, 예를 들어, 이러한 단계들을 수행하기 위한 모듈들을 포함하는 장치에 의해 달성될 수 있다. In an embodiment to achieve these and other advantages, a packet having a header section and a payload section is received, the payload section containing information about a video clip from a particular camera. The payload section is inspected at the network core to determine how to route packets to subscribers related to information from a particular camera, and the packets are optionally routed based on the inspection. These and other advantages may also be achieved by an apparatus comprising modules for performing these steps, for example.

이들 및 다른 장점들은 또한, 예를 들어, 경보 서비스들을 제공하는 네트워크에서 메시지들을 라우팅하기 위한 방법에 의해 달성될 수 있다. 그 방법은 헤더 가입, 적어도 하나의 주제(subject), 특정 카메라로부터의 비디오 클립과 관련된 적어도 하나의 속성(attribute)을 갖는 메시지를 수신하는 단계, 그 주제 및 속성을 메시지로부터 검색하는 단계, 주제에 기초하여 가입을 검색하는 단계, 및 특정 카메라로부터의 정보에 관련된 가입자에게 패킷을 어떻게 라우팅할지 결정하기 위해 네트워크 코어에서 속성을 가입에 적용하는 단계를 포함한다. 이들 및 다른 장점들은 또한, 예를 들어, 이러한 단계들을 수행하기 위한 모듈들을 포함하는 장치에 의해서 달성될 수 있다. These and other advantages can also be achieved by, for example, a method for routing messages in a network that provides alert services. The method includes receiving a message having a header subscription, at least one subject, at least one attribute associated with a video clip from a particular camera, retrieving the subject and attributes from the message, Retrieving a subscription based on, and applying an attribute to the subscription at the network core to determine how to route packets to subscribers related to information from a particular camera. These and other advantages can also be achieved by an apparatus comprising modules for performing these steps, for example.

이와 유사하게, 이들 및 다른 장점들은, 예를 들어, 네트워크에서 경고 서비스들을 제공하는데 사용되기 위한 패킷들을 라우팅하기 위한 방법에 의해 달성될 수 있다. 이 방법은 특정 경보 서비스에 대한 이벤트에 관한 정보를 포함하는 페이로드 가입 및 헤더 가입을 갖는 패킷을 수신하는 단계, 경보 서비스에 대한 정보에 관련된 가입자들에게 패킷을 어떻게 라우팅할지 결정하기 위해 네트워크 코어에서 패킷의 페이로드 가입을 검사하는 단계, 및 그 검사에 기초하여 패킷을 선택적으로 라우팅하는 단계를 포함한다. 이들 및 다른 장점들은 또한, 예를 들어, 이러한 단계들을 수행하기 위한 모듈들을 포함하는 장치에 의해서 달성될 수 있다. Similarly, these and other advantages can be achieved, for example, by a method for routing packets for use in providing alert services in a network. The method comprises the steps of receiving a packet with a payload subscription and a header subscription containing information about an event for a particular alert service, and at the network core to determine how to route the packet to subscribers involved in the alert service information. Checking the payload subscription of the packet, and selectively routing the packet based on the checking. These and other advantages can also be achieved by an apparatus comprising modules for performing these steps, for example.

도 1은 네트워크 코어에서의 지능형 라우팅을 도시하는 도면.1 illustrates intelligent routing in a network core.

도 2는 발행자들 및 가입자들을 위한 지능형 라우터들을 도시하는 네트워크도(network diagram).2 is a network diagram illustrating intelligent routers for publishers and subscribers.

도 3은 지능형 라우터들 및 백본 라우터들에 대한 네트워크 인프라구조를 도시하는 도면.3 illustrates a network infrastructure for intelligent routers and backbone routers.

도 4는 지능형 라우터의 하드웨어 컴포넌트들의 도면.4 is a diagram of hardware components of an intelligent router.

도 5는 발행자 및 사용자 기기들의 도면.5 is a diagram of publisher and user devices.

도 6은 지능형 라우터들의 채널 관리자들을 도시한 도면.6 shows channel managers of intelligent routers.

도 7은 사용자 머신을 지능형 라우터들과 인터페이스하기 위한 사용자 머신의 소프트웨어 컴포넌트를 도시한 도면.7 illustrates a software component of a user machine for interfacing the user machine with intelligent routers.

도 8은 지능형 라우터를 위한 소프트웨어 컴포넌트들을 도시한 도면.8 illustrates software components for an intelligent router.

도 9는 메시지를 위한 패킷 구조를 도시한 도면.9 illustrates a packet structure for a message.

도 10은 발행자(publisher) 메소드의 흐름도. 10 is a flow chart of a publisher method.                 

도 11은 가입자(subscriber) 메소드의 흐름도.11 is a flow diagram of a subscriber method.

도 12는 채널 및 가입자 스크린들을 도시한 도면.12 shows channel and subscriber screens.

도 13은 콘텐트 기반 라우팅 메소드(content-based routing method)의 흐름도.13 is a flow diagram of a content-based routing method.

도 14는 캐싱 메소드(caching method)의 흐름도.14 is a flow chart of a caching method.

도 15는 캐시 인덱스(cache index)를 도시하는 도면.FIG. 15 illustrates a cache index. FIG.

도 16은 발신 메시지(outgoing message)를 위한 에이전트 메소드(agent method)의 흐름도.16 is a flow chart of an agent method for an outgoing message.

도 17은 착신 메시지(incoming message)를 위한 에이전트 메소드의 흐름도.17 is a flow diagram of an agent method for an incoming message.

도 18은 메시지 인코딩의 예를 도시하는 도면.18 illustrates an example of message encoding.

도 19는 가입을 저장하기 위한 데이터베이스 구조를 도시하는 도면.Fig. 19 illustrates a database structure for storing subscriptions.

도 20은 와일드카드 메소드(wildcard method)의 흐름도.20 is a flow chart of a wildcard method.

도 21은 디지털 비디오 감시 시스템(digital video surveillance system)을 도시하는 도면.21 illustrates a digital video surveillance system.

도 22는 2단계 접근법(two-stage approach)에서 디지털 비디오 감시 시스템을 위한 프락시(proxy)를 도시하는 도면.FIG. 22 illustrates a proxy for a digital video surveillance system in a two-stage approach.

도 23은 디지털 콘텐트 전달을 위한 구조를 도시하는 도면.Fig. 23 is a diagram showing a structure for digital content delivery.

도 24는 디지털 콘텐트 전달을 위한 제1단 구조(phase 1 architecture)를 도시하는 도면.FIG. 24 illustrates a phase 1 architecture for digital content delivery.

도 25는 디지털 콘텐트 전달을 위한 제2단 구조(phase 2 archtecture)를 도 시하는 도면.FIG. 25 illustrates a phase 2 archtecture for digital content delivery. FIG.

도 26은 서비스 관리 품질을 위한 다수의 아웃 링크(out-link)들을 도시하는 도면.FIG. 26 illustrates a number of out-links for quality of service management. FIG.

도 27은 서비스 관리 품질을 위한 단일 아웃 링크를 도시하는 도면.27 illustrates a single out link for service management quality.

도 28은 ISP 외부에서의 필터링 및 동적 캐싱을 도시하는 도면.FIG. 28 illustrates filtering and dynamic caching outside an ISP.

도 29는 네트워크에서의 캐시(cache)를 도시하는 도면.FIG. 29 illustrates a cache in a network. FIG.

도 30은 업스트림 라우터(upstream router)에서 백업 지속 캐시(backup persistent cache)를 도시하는 도면.FIG. 30 illustrates a backup persistent cache at an upstream router. FIG.

도 31은 프락시를 갖는 캐시와 라우터의 상호작용을 도시하는 도면.FIG. 31 illustrates the interaction of a router with a cache and a proxy. FIG.

도 32는 가입자 상에서의 캐시 생성을 도시하는 도면.32 illustrates cache generation on a subscriber.

도 33은 인덱싱 트리(indexing tree)를 도시하는 도면.FIG. 33 illustrates an indexing tree. FIG.

도 34는 다수의 캐시들로부터의 검색(retrieval)을 도시하는 도면.34 illustrates a retrieval from multiple caches.

도 35는 시스템 내의 다른 모듈들과 캐시 관리자의 상호작용을 도시하는 도면.FIG. 35 illustrates the interaction of a cache manager with other modules in the system. FIG.

도 36은 캐시를 위한 파일 디렉토리 구조를 도시하는 도면.36 shows a file directory structure for a cache.

첨부된 도면들은 본 명세서에 포함되며 그 일부를 구성하고, 실시예와 함께 본 발명의 장점들 및 원리들을 설명한다.
The accompanying drawings are included in and constitute a part of this specification and together with the embodiments illustrate the advantages and principles of the present invention.

개요summary

인터넷 규모 또는 다른 분산 네트워크 규모의 이벤트 통지 시스템은 발행-가입(publish-subscribe) 네트워킹을 강력하고 융통성있게 실현한 애플리케이션을 제공한다. 이러한 시스템에서, 통지의 발행 및/또는 네트워크 내에서 발생한 이벤트들에 대한 가입과 그에 관한 통지의 수신을 위하여 애플리케이션 프로그램은 이벤트 통지 API(Application Program Interface)들을 사용한다.Event notification systems on the Internet scale or other distributed network scale provide applications that provide powerful and flexible implementations of publish-subscribe networking. In such a system, an application program uses event notification APIs for issuing notifications and / or for subscribing to and receiving notifications about events that occur within the network.

시스템 내의 통지에는, 통지가 캡슐화한(encapsulate) 정보의 종류를 구분하는 문자열 또는 다른 구조인 주제(subject)가 주어진다. 또한, 통지는, 통지에 특정한 정보를 포함하는 한 세트의 속성들(attributes)로 완성된다. 예컨대, 애플리케이션은 quotes.nyse라는 주제와, 심볼 및 가격 속성을 이용하여 뉴욕 주식 시장에서의 거래에 대한 통지들을 발행할 수 있다. 애플리케이션은 특정 속성 값들, 예컨대 SNE(Sony에 대한 주식 속보 심볼)에 해당하는 심볼 및 85.25에 해당하는 가격을 갖는 개별 통지를 발행할 수 있다. 속성들이 동일한 주제 군(family of subject)을 위한 모든 통지들에서 발견된다는 의미에서, 통지의 모두는 아니지만 대부분의 속성들은 사전 정의되어 있다. 하지만, 발행자들은 부가적인 이벤트에 특정한 정보를 제공하기 위하여 통지당(per-notification) 또는 다른 기반으로 임의의 속성들을 추가할 수 있다. 따라서, 모든 또는 임의의 속성들이 사전 정의될 필요가 있는 것은 아니다.Notifications in the system are given a subject, which is a string or other structure that identifies the type of information that the notification encapsulates. In addition, a notification is completed with a set of attributes that contain information specific to the notification. For example, an application may issue notifications about transactions in the New York stock market using the theme quotes.nyse and the symbol and price attributes. The application may issue an individual notification with specific attribute values, such as a symbol corresponding to SNE (Stock Breaking Symbol for Sony) and a price corresponding to 85.25. In the sense that attributes are found in all notifications for the same family of subject, most but not all of the notifications are predefined. However, publishers may add any attributes on a per-notification or other basis to provide specific information for additional events. Thus, not all or arbitrary attributes need to be predefined.

이러한 시스템에서, 가입자들은 주제들 또는 전체 채널들에 대해서만 가입하도록 제한되지는 않는다. 채널들에 대해서는 이하에서 추가로 설명하고, 정의될 것이다. 그들은 예컨대, 주제 필드 및 하나 이상의 수준의 관련 서브 필드(하위-주제)를 지정하는 계층적 구조(hierarchical structure)를 포함할 수 있다. 그러므로, 가입자들은 통지의 속성에 대하여 콘텐트 기반 필터들을 지정함으로써 보다 정교하게 조절된 관심 표현들(expressions of interest)을 제공할 수 있다. 예컨대, 가입자는 SNE에 해당하는 심볼 및 (아마도 가입자가 소유한 한 블록의 주식들을 위한 매도 기회를 나타내는)90.00에 해당하는 가격을 갖는 quotes.nyse라는 주제에 대한 모든 통지들에 대해 가입할 수 있다. 가입자가 자신의 가입을 등록하는 시점 또는 다른 시점들에서 가입자가 제공한 콜백(callback) 또는 다른 타입의 메소드를 통해 가입자에게 상기 가입과 일치하는 모든 통지들이 전달될 수 있다. 하나의 가입은 많은 필터들로 나누어질 수 있다.In such a system, subscribers are not limited to subscribing only to topics or entire channels. Channels will be further described and defined below. They may include, for example, a hierarchical structure specifying a subject field and one or more levels of related subfields (sub-topics). Therefore, subscribers can provide more finely tuned expressions of interest by specifying content-based filters on the nature of the notification. For example, a subscriber may subscribe for all notifications on the subject of quotes.nyse with a symbol corresponding to SNE and a price corresponding to 90.00 (possibly representing an opportunity to sell for a block of shares owned by the subscriber). . All notifications that match the subscription may be delivered to the subscriber through a callback or other type of method provided by the subscriber at the time the subscriber registers for its subscription or at other times. One subscription can be divided into many filters.

콜백은 단말기에 메시지를 기록하거나 이메일을 송신하는 것과 같은 단순한 일부터 한 블록의 주식의 매도를 시작하는 복잡한 일 및 (예컨대, 75.00 가격의 매수 기회를 위하여 기존의 가입을 신규 가입으로 대체하거나, 가입자의 포트폴리오가 변경되었다는 신규 통지를 발행하는) 새로운 발행-가입 활동을 시작하는 훨씬 복잡한 일까지를 포함하는 많은 연산을 수행할 수 있다.Callback can be a complex task of starting to sell a block of shares from a simple task, such as writing a message or sending an email to a terminal, and replacing an existing subscription with a new subscription (eg Many operations can be performed, including a much more complicated task of starting a new publish-subscribe activity (issuing a new notification that a portfolio of has changed).

애플리케이션들은 자신들의 발행 및 가입 활동에 있어 예컨대, 에이전트들의 도움을 받을 수 있다. 에이전트들은 프락시들을 이용하거나 이들을 이용하여 구현될 수 있다. 에이전트가 사용되는 경우, 에이전트들은 발신 통지들 및 가입들을 위한 네트워크 접속과, 가입자들로의 통지와 일치하는 착신의 전달을 제공한다. 통지가 네트워크에 진입하면, 라우터들의 시스템 네트워크는 가입이 통지와 일치하는 모든 가입자들에게 상기 통지들을 전파시킨다. 이러한 작업을 수행하는 한 가 지 방법은 네트워크의 모든 지점에 통지를 브로드캐스팅(broadcast)하고, 애플리케이션 에이전트들이 해당 통지가 자신의 가입자와 관련된 것인지를 결정하도록 하는 것이 될 것이다. 하지만, 이는 확장가능한 접근법은 아닌데, 네트워크는 통상 메시지 트래픽의 부하로 금방 뒤덮혀버리고, 특히 많은 수의 활동적이고 다수의 트래픽을 유발시키는 발행자들이 존재하는 경우에 더욱 그러하기 때문이다. 충분한 대역폭이 문제가 아니라 할지라도, 가입자들은 지나치게 많은 통지들을 처리해야 함으로써 압도되어 버릴 것이다.Applications can, for example, benefit from agents in their publishing and subscription activities. Agents can be implemented using or using proxies. When an agent is used, the agents provide network connectivity for outgoing notifications and subscriptions, and delivery of incoming calls consistent with the notification to subscribers. When a notification enters the network, the router's system network propagates the notifications to all subscribers whose subscription matches the notification. One way to do this would be to broadcast a notification to every point in the network and allow the application agents to determine whether the notification is related to their subscribers. However, this is not a scalable approach, since the network is usually overwhelmed by the load of message traffic, especially when there are a large number of active and generating traffic. Although sufficient bandwidth is not a problem, subscribers will be overwhelmed by having to handle too many notifications.

본 시스템의 예시적인 네트워크는 통지들을 라우팅하는 방식에 있어서 훨씬 효율적이다. 첫 번째로, 그것은 통지가 예컨대, 네트워크의 임의의 링크에 대하여 최대 한번만 전파된다는 것을 보장하기 위하여 멀티캐스트 라우팅(multicast routing)을 사용할 수 있다. 두 번째로, 그것은 가능한한 통지들의 전파를 감소시키기 위하여 필터들에 다수의 정교한 최적화를 사용할 수 있다.The example network of the present system is much more efficient in the way of routing notifications. First, it may use multicast routing to ensure that the notification is propagated only once for any link in the network, for example. Second, it can use a number of sophisticated optimizations on the filters to reduce the propagation of notifications as much as possible.

도 1은 네트워크 코어(network core)에서의 이러한 지능형 라우팅을 개념적으로 도시하는 도면이다. 발행자(14)는 에지 라우터(edge router; 16)를 통해 발행-가입 네트워크에서 사용되는 네트워크 코어(10)로 메시지 내의 콘텐트를 전송한다. 발행자로부터 가입자들에게 데이터 또는 콘텐트를 라우팅하기 위한 발행-가입 네트워크는 임의의 타입의 네트워크를 포함한다. 라우터들과 다른 장치들 사이의 논리적인 접속들을 나타내는 하나 이상의 채널들(18)을 통해 콘텐트가 전송된다. 네트워크 코어(10)의 지능형 라우터(12)는 메시지를 라우팅 또는 포워딩할 것인지를 결정한다. 특히, 지능형 라우터(12)는 메시지가 가입자(24)에 의해 가입된 대로의 콘텐트를 포함하는지를 판단할 수 있다.1 conceptually illustrates such intelligent routing in a network core. The publisher 14 sends the content in the message via an edge router 16 to the network core 10 used in the publish-subscribe network. A publish-subscribe network for routing data or content from a publisher to subscribers includes any type of network. Content is transmitted over one or more channels 18 representing logical connections between routers and other devices. The intelligent router 12 of the network core 10 determines whether to route or forward the message. In particular, intelligent router 12 may determine whether the message contains content as subscribed by subscriber 24.

각각의 가입은 주제 필터 및 속성 필터를 캡슐화할 수 있다. 라우터들은 주제 필터를 한 세트의 일치하는 주제들로 확장하고, 속성 필터들을 주제당 기반(per-subject basis)으로 병합할 수 있다. 지능형 라우터는 통지의 주제에 대하여 주제 필터를 평가하고, 통지들의 속성 값에 대하여 속성 필터를 평가한다. 주제 필터들을 위한 문법은 와일드카드들을 사용할 수 있고, 속성 필터들을 위한 문법은 부울 표현식(Boolean expression)을 사용할 수 있는데, 이들 모두에 대하여 이하에서 추가로 설명된다. "필터"라는 용어는, 가입자가 발행자들로부터 수신하고자 하는 한 세트의 이벤트들을 기술하기 위하여 사용된다. 라우팅 규칙들이 필터들로부터 생성되고, 라우팅 결정을 내리기 위하여 지능형 라우터들에 의해 사용된다.Each subscription can encapsulate a topic filter and an attribute filter. Routers may extend the subject filter to a set of matching subjects and merge attribute filters on a per-subject basis. The intelligent router evaluates the subject filter against the subject of the notification and evaluates the attribute filter against the attribute value of the notifications. The syntax for subject filters can use wildcards, and the syntax for attribute filters can use Boolean expressions, all of which are described further below. The term "filter" is used to describe a set of events that a subscriber wishes to receive from publishers. Routing rules are generated from the filters and used by intelligent routers to make routing decisions.

따라서, 예컨대, 전체 필터 세트가 메시지(26)에 의해 만족되지 않으면, 지능형 라우터(12)는 메시지(26)을 버리는데(폐기하는데), 이는 메시지가 포워딩되지 않음을 의미한다. 예컨대, 주제 및 속성 필터의 평가에 의해 전체 세트 중의 임의의 필터가 메시지(20)에 의해 만족되면, 지능형 라우터(12)는 에지 라우터(22) 및 다른 장치들을 통해 메시지(20)를 가입자(24)에게 라우팅(포워딩)하거나, 그 부합하는 필터에 대하여 정의된 모든 라우팅 및/ 또는 동작 규칙들에 따라서 메시지(20)에 대하여 라우터(12) 내부적으로 다른 기능들을 수행한다. 이러한 검색은 필터들의 전체 세트를 다 검토하는 것, 또는 모든 규칙들에 대한 판정이 이루어지는 것 중 어느 것이든 먼저 완료될 때까지 계속된다.Thus, for example, if the entire set of filters is not satisfied by message 26, intelligent router 12 discards (discards) message 26, which means that the message is not forwarded. For example, if any filter in the entire set is satisfied by the message 20 by evaluation of the subject and attribute filters, then the intelligent router 12 may subscribe the message 20 via the edge router 22 and other devices to the subscriber 24. The router 12 performs other functions internally for the message 20 in accordance with all routing and / or operational rules defined for the corresponding filter. This search continues until either a complete review of the entire set of filters or a determination of all the rules is made first.

네트워크 코어에서의 이러한 타입의 지능형 콘텐트 기반 라우팅은 예컨대, 경보 및 업데이트의 실시간 데이터 전달(real-time data delivery)을 제공한다. 경보를 위한 실시간 데이터 전달의 예는 주식 시세, 교통, 뉴스, 여행, 날씨, 사기 적발(fraud detection), 보안, 텔레매틱스(telematics), 공장 자동화, 공급망 관리(supply chain management) 및 네트워크 관리를 포함하지만, 이에 제한되지는 않는다. 업데이트를 위한 실시간 데이터 전달의 예는 소프트웨어 업데이트, 안티-바이러스 업데이트, 영화 및 음악 전달, 워크플로우(workflow), 저장 관리 및 캐시 일관성(cache consistency)을 포함하지만, 이에 제한되지 않는다. 가입에 대한 정보 전달에 있어서 많은 다른 애플리케이션들이 가능하다.This type of intelligent content-based routing in the network core provides, for example, real-time data delivery of alerts and updates. Examples of real-time data delivery for alerts include stock quotes, traffic, news, travel, weather, fraud detection, security, telematics, factory automation, supply chain management, and network management. However, the present invention is not limited thereto. Examples of real-time data delivery for updates include, but are not limited to, software updates, anti-virus updates, movie and music delivery, workflows, storage management, and cache consistency. Many other applications are possible for conveying information about subscriptions.

표 1은 필터링을 위한 주제(subject) 및 술어(predicate)를 포함한 가입의 저장에 관하여 보여주고 있다. 이들은 네트워크상 어느 곳에나, 요청과 필요에 따라, 어떠한 데이터 구조로도 저장될 수 있다. 이하 설명하는 바와 같이, 술어는 가입의 구성 요소이다. 가입은 임의의 방식으로도 표현될 수 있으며, 그 예가 다음과 같이 제공된다. Table 1 shows the storage of subscriptions including subjects and predicates for filtering. They can be stored anywhere in the network, in any data structure, upon request and need. As explained below, predicates are components of a subscription. Subscriptions may be expressed in any manner, an example of which is provided as follows.

표 1TABLE 1 가입1Join1 주제 1Topic 1 술어 1Predicate 1 ...... 가입 NJoin N 주제 NTopic N 술어 NPredicate N

표 2는 인용 서버(quote server)에 대한 가입 및 발행의 예를 제공한다. 이 예는 예시적 목적으로만 제공되는 것이며, 가입은 임의의 타입의 데이터나 콘텐트에 관한 어떠한 수의, 그리고 어떠한 타입의 파라미터도 포함할 수 있다. Table 2 provides an example of subscription and publication for a quote server. This example is provided for illustrative purposes only, and the subscription may include any number and any type of parameters relating to any type of data or content.

표 2TABLE 2 인용 서버 예Cited Server Example 주제 트리
Quotes.NYSE
Quotes.AMEX
Quotes.NASDAQ
Topic tree
Quotes.NYSE
Quotes.AMEX
Quotes.NASDAQ
발행
주제 = Quotes.NYSE
속성
Symbol = SNE
Price = 51
Volume = 1000000
publish
Topic = Quotes.NYSE
property
Symbol = SNE
Price = 51
Volume = 1000000
속성
Symbol
Price
Volume
property
Symbol
Price
Volume
가입
주제 = Quotes.NYSE
필터
(Symbol = SNE) & (Price > 55)
join
Topic = Quotes.NYSE
filter
(Symbol = SNE) &(Price> 55)

상기 술어는 가입에 관하여 부울 표현식을 제공하고 상기 주제는 가입을 위한 채널 표지를 제공한다. 가입은 많은 상이한 방식으로 표현될 수 있다. 부울 표현식을 사용한 것은 그 한 가지 예이며 콘텐트 기반 라우팅을 위하여 가입을 주제 필터 및 속성 필터로 용이하게 변환할 수 있는 능력을 제공한다. 이와 달리, 가입은 주제를 참조하지 않고서 표현될 수도 있다. 그러나, 채널(추후 설명됨)이나 주제의 사용은 속성에 대한 필터의 적용과 해석에 관한 문맥(context)을 제공한다. The predicate provides a boolean expression in terms of subscription and the subject provides a channel marker for subscription. Subscriptions can be expressed in many different ways. Using boolean expressions is one example and provides the ability to easily convert subscriptions to subject and attribute filters for content-based routing. Alternatively, subscriptions may be expressed without reference to a subject. However, the use of channels (described later) or subjects provides a context for the application and interpretation of filters on attributes.

라우팅 결정이 네트워크 코어에서 이루어져 네트워크 전체에 걸쳐 분배되어, 발행자와 가입자 머신 상의 처리 부담을 경감시키며, 네트워크의 효율을 크게 강화시킨다. 도 1은 한 명의 발행자, 한 명의 가입자, 그리고 하나의 지능형 라우터를 오로지 예시적 목적으로 도시하고 있으며, 다수의 발행자, 다수의 가입자, 그리고 다수의 지능형 라우터를 포함하여 구현될 수도 있다. 지능형 라우터라는 용어는 네트워크 코어 또는 기타 위치에서 패킷이나 메시지의 페이로드를 검사함으로써 라우팅 결정을 내릴 수 있는 능력을 갖춘 라우터나 기타 엔티티를 말한다.
Routing decisions are made at the network core and distributed throughout the network, reducing the processing burden on the issuer and subscriber machines and greatly enhancing the efficiency of the network. 1 illustrates one issuer, one subscriber, and one intelligent router for illustrative purposes only, and may be implemented with multiple issuers, multiple subscribers, and multiple intelligent routers. The term intelligent router refers to a router or other entity that has the ability to make routing decisions by examining the payload of packets or messages at the network core or elsewhere.

네트워크 인프라구조Network infrastructure

도 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)을 포함한다. 2 illustrates a network showing intelligent routers for issuers and subscribers. The routing entity 30 that provides the channel service is effectively layered on the network infrastructure to route messages between intelligent routers, for example, as described below. Conceptually, the issuer 32 may, for example, have an application 34 that transmits a beacon (e.g., a pointer for content retrieval) of the published content and encodes the content for network transmission via the channel service 30. Agent 36. The collection of logically interconnected intelligent routers 38, 40, 42, 44, 46 and 48 routes content from the publisher using routing rules generated from subject filters and attribute filters on subscriptions. A plurality of links 39, 41, 43, 45 provide logical connections between the intelligent routers 38, 40, 42, 44, 46, 48. Another link 37, 47 provides a logical connection between the issuer 32 and the intelligent router 38, and between the subscriber 54 and the intelligent router 46, respectively. Subscriber 54 includes an agent 50 for detecting and receiving subscribed content, and an application 52 for presenting content.

채널은, 예컨대, 분산 방식으로 구현된, 관련된 일군의 논리적 멀티캐스트형 접속을 포함할 수 있다. 본 예시적 실시예에 있어서 채널은 콘텐트를 교환하는 발행자와 가입자 커뮤니티를 지원하는데 이용되는 논리적으로 관련된 네트워크 리소스 모음이다. 콘텐트는 채널 주제 이름공간에 따라 분류되고, 리소스는 채널 관리자에 의하여 제공되는 채널 서비스를 통해서 관리, 제어 및 공급된다. 다수의 채널이 동일한 리소스를 공유할 수 있다. 채널은 고도로 스케일 가능한 디렉토리 서 비스, 예컨대 발행자 및 가입자 정보, 증명 및 인증 정보, 메시지 타입, 관리 정보, 그리고 계정 및 과금 정보를 제공할 수 있으며, 다만 이로써 제한되는 것은 아니다. 채널은 또한 예컨대, 캐싱을 통한 지속성(persistence), 고속 데이터 전달 메카니즘, 보안, 그리고 사용자 및 네트워크 관리를 제공할 수 있다. 채널은 임의의 기타 목적을 위해서도 이용될 수 있다. The channel may include, for example, a group of related logical multicast-type connections, implemented in a distributed fashion. In this example embodiment the channel is a collection of logically related network resources used to support the community of publishers and subscribers exchanging content. Content is classified according to the channel topic namespace, and resources are managed, controlled, and supplied through channel services provided by the channel manager. Multiple channels can share the same resource. Channels can provide, but are not limited to, highly scalable directory services such as issuer and subscriber information, credentials and authentication information, message types, management information, and accounting and billing information. The channel may also provide persistence, high speed data transfer mechanisms, security, and user and network management, for example through caching. The channel can also be used for any other purpose.

지능형 라우터에 의한 필터링이 네트워크 코어에서 발생하여 라우팅 결정을 분배할 수 있다. 또한, 지능형 라우터는 발행자나 가입자 등의 사용자 장치를 네트워크 코어와 연결하는 에지 라우터로도 기능한다. 또한, 네트워크에 연결된 동일한 장치가 발행자로서 기능하여 네트워크에서의 라우팅 결정을 통해 콘텐트를 가입자에게 전달(push)하고, 아울러 수신된 전달 콘텐트에 대한 가입자로 기능할 수 있다. 지능형 라우터 및 채널은, 특정 구현을 위하여 요구되고 필요로 되는 바와 같이, 임의의 구성으로 접속될 수 있으며, 도 2에 도시된 구성은 예시적 목적으로 제공된 것이다. Filtering by intelligent routers can occur at the network core to distribute routing decisions. Intelligent routers also function as edge routers connecting user devices such as publishers and subscribers with the network core. In addition, the same device connected to the network can function as an issuer to push content to subscribers through routing decisions in the network and also serve as a subscriber to the received delivery content. Intelligent routers and channels may be connected in any configuration, as required and required for a particular implementation, and the configuration shown in FIG. 2 is provided for illustrative purposes.

도 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) 내의, 그리고 이들 상호 간의 백본 라우터가 기존의 네트워크 인프라구조 내에서 임의의 통상적 방식으로 상호 접속된다. 3 illustrates an exemplary network infrastructure for an intelligent router and a conventional backbone router, showing a logical connection for a channel. The intelligent router in this embodiment uses an existing backbone router in a network, such as the Internet or other distributed network, so that the intelligent router is effectively layered on the backbone router. In this embodiment, each of the Internet Service Provide (ISP) networks 58, 59, and 60 includes several backbone routers for conventional routing of messages or packets. The plurality of intelligent routers 61-70 are connected with one or more backbone routers in the ISP network 58, 59, 60. In addition, the plurality of intelligent routers 61-70 are interconnected by a plurality of links 73-85 (representing examples of links), and can also be connected to end user devices by such links. The intelligent routers 61-70 may be controlled by one or more administrator machines, such as entity 71, and one or more virtual private network (VPN) controllers, such as entity 72, and the like. ISP networks 58, 59, 60 will also be connected to the issuer and subscriber machines (not shown in FIG. 3). Backbone routers within ISPs 58, 59, and 60, and between each other, are interconnected in any conventional manner within existing network infrastructure.

지능형 라우터(61-70) 및 링크(73-85)는, 도시된 바와 같이, 기존의 네트워크 인프라구조를 이용해서 구현될 수 있고, 이는 네트워크 코어에서 콘텐트 기반 라우팅을 제공한다. 링크(73-85)는 지능형 라우터(61-70)들 간 논리 접속을 나타내며, 예컨대 기존의 네트워크 인프라구조나 기타 장치를 이용하여 구현될 수 있다. 링크는, 예컨대, 터널이라 불리는 논리 접속을 이용해서 구현될 수 있다. 터널은 링크를 구현하는 네트워크 인프라구조인 하드웨어와, 가능하다면 소프트웨어를 포함할 것이며, 하나의 터널은 복수의 채널의 일구성 부분이 될 수 있다. 채널은 특정 타입의 콘텐트를 위한 논리 접속을 제공하고 따라서 채널을 통하여 송신된 속성들에 관한 문맥을 제공함으로써 지능형 라우터에서 콘텐트 기반 라우팅을 가능하게 한다. 지능형 라우터는 채널없이 라우팅 결정을 수행할 수도 있지만, 채널은 네트워크 코어 내에서 지능형 라우터에 의한 콘텐트 기반 라우팅의 효율을 증대시 킨다. Intelligent routers 61-70 and links 73-85 can be implemented using existing network infrastructure, as shown, which provides content-based routing in the network core. Links 73-85 represent logical connections between intelligent routers 61-70 and may be implemented, for example, using existing network infrastructure or other devices. Links may be implemented using, for example, logical connections called tunnels. The tunnel will include hardware, the network infrastructure that implements the link, and possibly software, and a tunnel can be part of multiple channels. Channels enable content-based routing in intelligent routers by providing a logical connection for certain types of content and thus providing a context for attributes transmitted over the channel. Intelligent routers may make routing decisions without channels, but channels increase the efficiency of content-based routing by intelligent routers within the network core.

본 예시적 실시예에서는 채널 및 링크의 사용이 포함된다. 링크는 두 개의 라우터(지능형 라우터) 간 접속이다. 채널은, 일군의 라우터(대개 대규모)를 포함하며, 링크들을 상호 접속시켜 일-대-다(one-to-many) 또는 다-대-다(many-to-many) 논리 접속을 이루도록 정적 또는 동적으로 구성되는 네트워크 엔티티이다. 구체적으로, 채널은 그 채널의 본질적 특성을 나타내는 최상위 레벨 논리 엔티티이다. 하나의 채널 하에, 많은 수의 주제가 존재할 수 있다. 각각의 주제는 일군의 상호 접속형 라우터들을 포함하는 하나의 서브-네트워크(예컨대, 멀티캐스트 트리)를 형성할 것이다. 이들 주제-기반 서브-네트워크는 서로 상이한 방식으로 할당되고, 적응되며, 구성될 수 있다. 채널은 그 채널 하의 주제들에 대하여 형성된 모든 서브-네트워크의 모음이므로, 예컨대, 네트워크 메시와 유사할 수 있다. This example embodiment involves the use of channels and links. A link is a connection between two routers (intelligent routers). A channel comprises a group of routers (usually large) and is static or configured to interconnect links to form a one-to-many or many-to-many logical connection. Dynamically configured network entity. Specifically, a channel is a top level logical entity that represents the essential characteristics of that channel. Under one channel, there may be a large number of subjects. Each subject will form one sub-network (eg, multicast tree) that contains a group of interconnected routers. These subject-based sub-networks can be allocated, adapted and configured in different ways from each other. A channel may be similar to a network mesh, for example, because it is a collection of all sub-networks formed for the topics under that channel.

도 4는 지능형 라우터(92)의 예시적 하드웨어 구성 요소들을 도시한 도면으로서, 이는 기타 참조되는 임의의 지능형 라우터와도 대응할 수 있다. 네트워크 노드(90)는 통상적 백본 라우터(95)와 접속된 지능형 라우터(92)를 포함할 수 있다. 지능형 라우터(92)는 메모리(94)와 보조 저장 장치(97)에 접속된 프로세서(93)를 포함하며, 메모리(94)와 보조 저장 장치(97) 각각은 데이터를 저장할 수 있고 캐싱할 수 있으며, 프로세서(93)에 의해서 실행할 수 있는 애플리케이션을 저장할 수 있다. 보조 저장 장치(97)는 비휘발성 데이터 저장 기능을 제공한다. 소프트웨어 제어 하에서 이하 설명되는 바와 같이, 프로세서(93)는 백본 라우터(95)에 대해 가입에 관한 주제 필터 및 속성 필터로부터 생성된 라우팅 규칙에 따라 그 백 본 라우터(95)가 메시지나 패킷을 라우팅(포워드)하거나 라우팅하지 않도록(폐기)하는 명령을 제공한다. 별도의 프로세서 제어형 장치로 구현된 것으로 도시되어 있지만, 이와 달리 지능형 라우터(92)는 백본 라우터(95) 내의 ASIC(application specific integrated circuit)으로 구현되어 가능하다면 내장형 소프트웨어를 구비한 하드웨어로써 지능형 라우팅 기능을 제공할 수도 있다. 이와 달리, 지능형 라우팅 기능은 또한 하나 또는 다수의 라우팅 장치에 있어서의 소프트웨어 및 하드웨어의 조합으로써 구현될 수도 있다. 4 illustrates exemplary hardware components of an intelligent router 92, which may correspond to any other intelligent router referenced. The network node 90 may include an intelligent router 92 connected with a conventional backbone router 95. Intelligent router 92 includes a processor 93 connected to memory 94 and secondary storage 97, each of memory 94 and secondary storage 97 capable of storing and caching data, In addition, an application executable by the processor 93 may be stored. The secondary storage device 97 provides a nonvolatile data storage function. As described below under software control, the processor 93 may cause the backbone router 95 to route messages or packets to the backbone router 95 in accordance with routing rules generated from the subject filter and attribute filters relating to subscriptions. Command to forward or not route (discard). Although shown as being implemented as a separate processor-controlled device, the intelligent router 92 is otherwise implemented as an application specific integrated circuit (ASIC) within the backbone router 95 and, where possible, hardware with embedded software to provide intelligent routing functionality. You can also provide Alternatively, the intelligent routing function may also be implemented as a combination of software and hardware in one or multiple routing devices.

도 5는 예시적 발행자 및 가입자 머신을 도시한 도면이다. 발행자 머신(100,118)은, 하나 이상의 발행자 애플리케이션(104) 및 에이전트 애플리케이션(105)을 저장한 메모리(102)와, 비휘발성 데이터 저장 기능을 제공하는 보조 저장 장치(112)와, 정보나 명령을 입력하기 위한 입력 장치(108)와, 메모리(102)에 저장된 애플리케이션이나 기타 저장 장치로부터 수신한 애플리케이션을 실행하는 프로세서(114)와, 정보를 출력하는 출력 장치(110)와, 정보의 비주얼 디스플레이를 제공하는 디스플레이 장치(116)를 포함할 수 있다. 5 illustrates an example issuer and subscriber machine. The publisher machines 100 and 118 may include a memory 102 storing one or more publisher applications 104 and an agent application 105, an auxiliary storage device 112 providing a nonvolatile data storage function, and input information or commands. An input device 108, a processor 114 for executing an application stored in the memory 102 or an application received from another storage device, an output device 110 for outputting information, and a visual display of the information. The display device 116 may be included.

가입자 머신(122,140)은, 하나 이상의 애플리케이션(126) 및 에이전트 애플리케이션(128)을 저장한 메모리(124)와, 비휘발성 데이터 저장 기능을 제공하는 보조 저장 장치(130)와, 정보나 명령을 입력하기 위한 입력 장치(132)와, 메모리(124)에 저장된 애플리케이션이나 기타 저장 장치로부터 수신한 애플리케이션을 실행하는 프로세서(134)와, 정보를 출력하는 출력 장치(136)와, 정보의 비주얼 디스플레이를 제공하는 디스플레이 장치(138)를 포함할 수 있다. 이와 달리, 발행자와 가입자 머신은, 임의의 구성으로써, 더 많거나 또는 더 적은 수의 구성 요소를 포함할 수 있고, 또는 상이한 구성 요소들을 포함할 수도 있다. Subscriber machines 122 and 140 may include a memory 124 that stores one or more applications 126 and agent applications 128, an auxiliary storage device 130 that provides non-volatile data storage functionality, and input information or commands. Providing an input device 132, a processor 134 for executing an application stored in the memory 124 or an application received from another storage device, an output device 136 for outputting information, and a visual display of the information. The display device 138 may be included. Alternatively, the publisher and subscriber machines may, in any configuration, include more or fewer components, or may include different components.

발행자 머신(100,118)은 네트워크(120), 예컨대 앞서 기술한 네트워크 등을 통하여 가입자 머신(122,140)에 접속된다. 네트워크(120)는 패킷이나 메시지에 의하여 네트워크 코어 내에서 콘텐트나 데이터의 분산형 라우팅을 제공하는 지능형 라우터를 포함한다. 단지 두 개의 발행자 및 가입자 머신이 도시되어 있지만, 네트워크(120)는 더 많은 발행자 및 가입자 머신을 포함하도록 스케일링될 수 있다. 발행자 및 가입자 머신은 임의의 프로세서 제어형 장치, 예컨대 서버, PC, 노트북 컴퓨터, PDA, 전화, 셀룰러 전화, 페이저, 기타 장치 등으로 구현될 수 있으나, 이들로 제한되는 것은 아니다. 지능형 라우터를 갖춘 네트워크(120)는, 유선 장치, 무선 장치 또는 양 장치들 모두를 연결하는, 임의의 유선 또는 무선 분산형 네트워크를 포함할 수 있다. 네트워크(120)는 또한 잠재적으로는 기존의 통상적 네트워크 인프라구조를 이용할 수 있다. Publisher machines 100 and 118 are connected to subscriber machines 122 and 140 via network 120, such as the networks described above. Network 120 includes an intelligent router that provides distributed routing of content or data within the network core by packet or message. Although only two publisher and subscriber machines are shown, the network 120 can be scaled to include more publisher and subscriber machines. Publisher and subscriber machines may be implemented with any processor controlled device, such as, but not limited to, servers, PCs, notebook computers, PDAs, phones, cellular phones, pagers, other devices, and the like. The network 120 with the intelligent router may include a wired device, a wireless device, or any wired or wireless distributed network that connects both devices. Network 120 can also potentially use existing conventional network infrastructure.

도 6은 지능형 라우터를 위한 채널 관리자(150)를 도시한 도면이다. 본 실시예에서, 채널 관리자(150)는 다수의 서버(152,154,156)를 포함하도록 구현되어 있다. 각 서버는 그 자신의 로컬 저장 장치(158,160,162)를 갖는다. 지능형 라우터(164,166,168)는 특정 채널에 관한 정보를 위하여 채널 관리자와 접속한다. 채널 관리자는 또한 데이터 지속성, 장애 극복 기능(fail over function), 기타 기능 등에 대해서도 대비할 수 있다. 그러므로, 채널 관리자는, 예컨대 채널 관련형 정보, 데이터 지속성에 관한 속성, 발행자 및 가입자에 대한 사용자 정보, 및 인프라 구조 정보 등을 지정하는 네트워크 내 임의의 위치의 데이터베이스 또는 데이터베이스 세트를 포함하는 채널 서비스를 제공한다. 인프라구조 정보에는, 예컨대 지능형 라우터의 식별자 및 지능형 라우터들을 연결하는 대응 터널, 채널에 대한 주제, 및 채널에 대한 속성(각 속성에 관한 이름과 타입) 등이 포함될 수 있다. 패킷이나 메시지가 또한 불변 속성 및 가변 속성들의 식별을 포함한 채널 관련형 정보를 운반할 수도 있다. 6 illustrates a channel manager 150 for an intelligent router. In this embodiment, the channel manager 150 is implemented to include a number of servers 152, 154, 156. Each server has its own local storage 158, 160, 162. Intelligent routers 164, 166, and 168 connect with channel managers for information about a particular channel. Channel managers can also be prepared for data persistence, fail over functions, and other features. Therefore, the channel manager may provide a channel service that includes a database or set of databases at any location in the network that specifies, for example, channel-related information, attributes about data persistence, user information for publishers and subscribers, and infrastructure information. to provide. The infrastructure information may include, for example, an identifier of the intelligent router and a corresponding tunnel connecting the intelligent routers, a subject for the channel, and an attribute (name and type for each attribute) for the channel, and the like. The packet or message may also carry channel-related information, including the identification of invariant and variable attributes.

온라인시, 사용자는 채널 정보를 다운로드할 수 있다. 예컨대, 사용자는 사용자 이름과 패스워드를 이용하여 등록할 수 있다. 사용자의 로그온이 확인되면, 사용자는 채널을 개방(호출)하고 채널 관리자로부터 그 채널에 관한 정보를 가져올 수 있다. 발행자는 발행의 문맥에서 그 정보를 이용할 수 있고, 가입자는 가입의 입력 및 등록과 관련하여 그 정보를 이용할 수 있다. When online, the user can download channel information. For example, a user can register using a username and password. Once the user's logon is confirmed, the user can open (call) the channel and get information about the channel from the channel manager. The issuer can use the information in the context of the publication and the subscriber can use the information in connection with entering and registering a subscription.

채널 관리자(152,154,156)는 바람직하게 지속적이고, 신뢰할 수 있는 채널 디렉토리 서비스를 수행하도록 그룹을 형성한다. 채널 관리자 중 하나가 1차 채널 관리자가 되고 나머지는 백업 채널 관리자가 될 것이다. 1차 채널 관리자에 장애가 발생하면, 그 1차 채널 관리자의 이웃 채널 관리자가 이어받아 새로운 1차 채널 관리자가 되어 서비스를 신뢰할 수 있는 상태로 유지한다. 각각의 지능형 라우터는 이들 채널 관리자의 어드레스를 보유한다. 1 채널 관리자가 있고 지능형 라우터가 그 채널 관리자에 접촉할 수 없는 경우라면, 그 지능형 라우터는 정보 검색을 위하여 다른 것을 찾을 것이다. 네트워크 내의 장치들은, 예컨대 채널 정보를 검색하기 위한 명령을 이용할 수 있고, 그 예들이 표 3에 제공되어 있다. 이와 달 리, 지능형 라우터는 1차 채널 관리자만을 갖거나 셋 이상의 채널 관리자를 가질 수도 있다. Channel managers 152,154 and 156 preferably form groups to perform persistent, reliable channel directory services. One of the channel managers will be the primary channel manager and the other will be the backup channel manager. If the primary channel manager fails, the neighboring channel manager of the primary channel manager takes over and becomes a new primary channel manager to keep the service reliable. Each intelligent router holds the address of these channel managers. If there is one channel manager and the intelligent router cannot contact the channel manager, the intelligent router will look for something else to retrieve the information. Devices in the network may use, for example, instructions to retrieve channel information, examples of which are provided in Table 3. In contrast, an intelligent router may have only a primary channel manager or three or more channel managers.

도 7은 사용자 머신이나, 지능형 라우터를 포함한 네트워크에 그 사용자 머신을 연결하는 장치에 있어서의 스택(180) 내의 예시적 소프트웨어 구성 요소들을 도시한 도면이다. 사용자 머신은 발행자, 가입자, 또는 양자 모두로 이용될 수 있고, 앞서 확인된 예시적 장치들을 포함할 수 있다. 스택(180)은 하나 이상의 사용자 애플리케이션(182)을 포함할 수 있으며, 그 사용자 애플리케이션(182)들은 사용자로부터의 가입 수신, 발행자로부터의 채널 정보 수신, 또는 발행된 콘텐트나 데이터의 수신에 대비한 것일 수 있다. 사용자 애플리케이션(182)에는 또한 사용자 머신이나 장치가 실행할 또 다른 임의의 타입의 애플리케이션이 포함될 수 있다. FIG. 7 is a diagram illustrating exemplary software components in stack 180 in a user machine or device that connects the user machine to a network including an intelligent router. The user machine can be used as a publisher, a subscriber, or both, and can include the example devices identified above. Stack 180 may include one or more user applications 182, which are prepared for receiving subscriptions from users, receiving channel information from publishers, or receiving published content or data. Can be. User application 182 may also include any other type of application that the user machine or device will execute.

또한, 스택(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)에의 접속을 제공한다.In addition, the stack 180 may include, for example, an agent 184, an event library 186, a cache library 188, a channel library 190, a messaging library 192, and a dispatcher library 194. It may include. Agent 184 provides for establishing a network connection or other functions, and Table 3 provides examples of commands implemented by agent 184 that may use proxy commands or other types of commands. . The event library 186 records events relating to user machines or other events or information. Cache library 188 provides local caching of data. The channel library 190 stores the identification of the channel and information about it. Dispatcher library 194 provides a connection with control path 196, channel manager 198, and one or more intelligent routers 200, and may include the example functionality shown in Table 4. The messaging library 192 provides a connection to the data path 204.

표 5 내지 9는 C 프로그래밍 언어로 된 메시징 API의 예를 나타낸다. 표 5 및 6은 메시지를 송신 및 추출하는 API의 예를 나타낸다. 표 7 및 8은 통지를 송신 및 추출하는 API의 예를 나타낸다. 표 9는 제어 메시지를 송신 및 추출하는 API의 예를 나타낸다. 본 명세서에서의 이들 API 및 다른 API, 프로그램과 데이터 구조는 특정 기능 또는 특징을 구현하기 위한 예로서 제공되는 것이며, 구현은 임의의 유형의 API 또는 임의의 프로그래밍 언어로 된 다른 소프트웨어 엔티티(entity)를 포함할 수 있다. Tables 5-9 show examples of messaging APIs in the C programming language. Tables 5 and 6 show examples of APIs for sending and extracting messages. Tables 7 and 8 show examples of APIs for sending and extracting notifications. Table 9 shows examples of APIs for sending and extracting control messages. These APIs and other APIs, programs, and data structures herein are provided as examples for implementing particular functions or features, and implementations may refer to any type of API or other software entity in any programming language. It may include.

표 3TABLE 3 에이전트 명령어의 예Agent Command Example 명령어command 기능function pc.chn.openpc.chn.open 채널 열기, 채널을 위한 모든 정보 추출, 및 로컬 캐싱Open channel, extract all information for the channel, and local caching pc.chn.closepc.chn.close 채널 닫기Close channel pc.chn.getRouterInfopc.chn.getRouterInfo 채널상 라우터를 위한 정보 추출Extract Information for Routers on Channels pc.chn.getAttributeInfopc.chn.getAttributeInfo 채널 속성을 위한 정보 추출Extract Information for Channel Attributes pc.chn.getPropertiespc.chn.getProperties 채널을 위한 특성 추출Feature Extraction for Channels

표 4Table 4 디스패처 기능(dispatcher function)Dispatcher function 서버측Server side 접속 청취(수락 대기). 각각의 접속을 핸들하기 위한 스레드(thread) 생성. 스레드는 접속에서 오는 모든 요청을 받고 프로세싱하는 것을 책임진다.Listen for connection (waiting to accept). Create a thread to handle each connection. The thread is responsible for receiving and processing all requests coming from the connection. 클라이언트측Client side 접속을 시작하고 접속으로 오는 모든 데이터를 받고 프로세싱하는 것을 책임지는 스레드를 생성.Create a thread that is responsible for initiating a connection and receiving and processing all data coming into the connection.

Figure 112005001061850-pct00001

Figure 112005001061850-pct00001

Figure 112005001061850-pct00002

Figure 112005001061850-pct00002

Figure 112005001061850-pct00003

Figure 112005001061850-pct00003

Figure 112005001061850-pct00004

Figure 112005001061850-pct00004

Figure 112005001061850-pct00005

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)는 채널 관리자로부터 속성(이름-값 쌍)을 얻기 위하여 제어 메시지를 이용한다.8 is a diagram of an example software component 210 for an intelligent router such as the intelligent router 92 identified above and presented in FIG. 4. For example, software component 210 may be stored in memory 94 for execution by processor 93 in intelligent router 92. For example, component 210 includes a filtering daemon 212, a dispatcher 214, a routing daemon 216, and a cache manager 218. The filtering daemon 212 provides filtering so that content-based routing can process content for subscriptions in accordance with routing rules as described below. Dispatcher 214 provides communication of control messages such as those required to propagate filters through path 220, and also provides one entry point for users and one secure socket for channel managers. It can enhance security. In other words, the user does not directly contact the channel manager in this example, even if it is an alternative implementation. Dispatcher 214 uses a control message to obtain attributes (name-value pairs) from the channel manager.

라우팅 데몬(216)은 도 4에서 도시된 관용 백본 라우터 또는 다른 라우팅 장치를 통하여 발생할 수 있는, 데이터 경로(222)와의 통신을 제공한다. 캐시 관리자(218)는 대응하는 지능형 라우터를 포함하는 네트워크 노드에서 데이터의 로컬 캐싱(local caching)을 제공한다. 캐시 관리자(218)의 동작(operation)은 아래에 더 자세히 설명되어 있으며, 네트워크 코어(network core)를 통하여 분산된 데이터 캐싱을 제공한다.Routing daemon 216 provides communication with data path 222, which may occur via the conventional backbone router or other routing device shown in FIG. Cache manager 218 provides local caching of data at the network node that includes the corresponding intelligent router. The operation of the cache manager 218 is described in more detail below and provides distributed data caching across a network core.

콘텐트 기반 라우팅은 애플리케이션 레벨(application level)에 대한 대체로서, 커널 레벨(kernel level)에 구현될 수 있다. 커널에 의해 접근 가능한 메모리는 애플리케이션 레벨에 있는 것과는 분리되어 있다. 콘텐트 기반 라우팅이 애플리케이션에서 실행되기 위해서는, 예를 들어 메시지 데이터가 커널 메모리 영역에서 애플리케이션 영역으로 복사되는 것, 애플리케이션의 콘텍스트가 커널에서 라우팅 애플리케이션으로 교환되는 것이 요구된다. 두 가지 모두 상당한 부하가 야기된다. 만약 대신에 커널이 콘텐트 기반 라우팅을 지원하도록 수정된다면, 라우팅은 위에서 서술한 부하가 제거되어 더 빠르게 수행될 수 있다.Content-based routing can be implemented at the kernel level as a replacement for the application level. The memory accessible by the kernel is separate from that at the application level. In order for content-based routing to run in an application, for example, message data is copied from the kernel memory area to the application area, and the context of the application is exchanged from the kernel to the routing application. Both cause significant loads. If instead the kernel is modified to support content-based routing, routing can be performed faster with the above-mentioned load removed.

커널에서의 콘텐트 기반 라우팅의 특징으로, 라우팅 데몬(216)은 구현에 따라 결정되는 데이터 경로(222)를 통하여 데이터를 보내고 받는 것을 직접적으로 할 수 있을 수도 없을 수도 있다. 데몬은 커널에 도입되는 콘텐트 기반 라우팅 표를 미리 계산하는, 애플리케이션 레벨에서 동작하는 프로세스이다. 그러나 한번 도입 되면, 라우팅 표는 라우팅 결정을 내리기 위해서 커널에서 사용될 수 있다. 유사하게, 필터링 데몬은 필터링 표를 미리 계산하고 그것을 커널에 도입한다. 이러한 커널 구현에서, 라우팅 데몬과 필터링 데몬은 모두 데이터 경로와 직접적으로 상호작용하지 않는다.As a feature of content-based routing in the kernel, the routing daemon 216 may or may not be able to directly send and receive data through the data path 222, which is implementation dependent. Daemons are processes that operate at the application level, precomputing content-based routing tables introduced into the kernel. But once introduced, routing tables can be used by the kernel to make routing decisions. Similarly, the filtering daemon precomputes the filtering table and introduces it into the kernel. In this kernel implementation, neither the routing daemon nor the filtering daemon interacts directly with the data path.

도 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)이다. 9 is a diagram of an example packet structure 230 for a message that may contain content for subscription. Packets or messages for use in content-based routing include, for example, a header section and a payload section. Header subscriptions specify routing or other information. The payload section specifies the data, content or representation of the data or content. Packet structure 230 includes an IP header 232, a User Datagram Protocol (UDP) Transmission Control Protocol (TCP) header 234, a length value 238, one or more subject fields 240, and one or more subject fields. Attribute 242 is included. Packet structure 230 shows the basic structure for length values, subjects and attributes. Packets used for content-based routing may also include other elements, such as shown in the example of FIG. 18 described below, and packets for content-based routing may be configured in any manner. In addition, the attribute may include, for example, any attribute that is appended to the end of the message. This optional attribute is, for example, ad-hoc information added by the issuer (or router) without having to be delivered using the message format defined for the channel.

발행자와 가입자 방법론Publisher and Subscriber Methodology

도 10은 발행자가 채널을 설정하고 콘텐트를 발행하는데 사용하기 위한 예시적인 발행자 메소드(publisher method; 250)의 순서도(flow chart)이다. 예를 들어 메소드(250)는 발행자 머신(100)의 프로세서(114)에 의한 실행을 위한 에이전트(106)를 포함한 소프트웨어 모듈로 구현될 수 있다. 메소드(150)에서, 발행자 머신의 에이전트(106)는 채널을 위한 프락시의 발행자 생성(publisher creation)을 수신한다(단계 252). 프락시는 네트워크와의 통신을 제공한다. 에이전트(106)는 인터페이스를 통해 채널을 위한 메시지 포맷을 결정하고(단계 253), 포맷 정보는, 예를 들어 채널 관리자 또는 네트워크의 다른 엔티티로부터 획득할 수 있다. 에이전트(106)는 수신한 채널 정보를 이용하여 채널을 위한 프락시를 설정하는데(단계 254), 이것은 채널을 위한 속성을 수신하는 것(단계 256)과 채널에 통지(notification)를 생성하는 것(단계 258)을 포함한다. 통지는 채널의 콘텐트를 "듣는(listening)" 장치를 위한 콘텐트를 제공한다. 속성은 통지를 위한 특성 및 파라미터를 정의한다.10 is a flow chart of an example publisher method 250 for use by publishers to set up channels and publish content. For example, method 250 may be implemented as a software module including an agent 106 for execution by processor 114 of publisher machine 100. In method 150, agent 106 of the publisher machine receives the publisher creation of the proxy for the channel (step 252). The proxy provides communication with the network. The agent 106 determines the message format for the channel via the interface (step 253), and the format information can be obtained, for example, from the channel manager or other entity in the network. Agent 106 uses the received channel information to establish a proxy for the channel (step 254), which is to receive an attribute for the channel (step 256) and to generate a notification to the channel (step). 258). The notification provides the content for the device to "listening" the content of the channel. The attribute defines the characteristics and parameters for the notification.

에이전트(106)는 가입 처리(processing subscription)에의 사용을 위해 채널의 식별자(identifier; ID)와 콘텐트 정보를 네트워크 코어의 지능형 라우터에게 전송한다(단계 260). 발행자는 통지 속성을 적당한 값으로 파퓰레이트(populate)하고(단계 261), 그 후 채널 속성에 따라 통지에 콘텐트를 발행할 수 있다(단계 262). 이 예에서 단계 260 내지 262는 특정한 구현에 따른 다르거나 추가적인 단계를 수반할 수 있는 통지를 발행하는 것을 완수한다. 따라서 이 예에서 통지와 관련된 정보는 각각 이름, 통지 내에서의 위치(1에서 시작), 유형(type), 값(value)으로 된, 속성의 순서(ordered sequence of attributes)로 분할된다. 택일적으로, 속성은 특정한 구현에 따른 다른 특성을 가질 수 있다. 예를 들어 속성은 미리 정의된 속성, 임의의 속성, 또는 두 가지 모두를 포함할 수 있다.Agent 106 sends the channel's identifier (ID) and content information to the intelligent router of the network core for use in processing subscription (step 260). The publisher can populate the notification attribute to an appropriate value (step 261) and then publish the content to the notification in accordance with the channel attribute (step 262). In this example, steps 260 through 262 complete the issuance of a notification that may involve different or additional steps depending on the particular implementation. Thus, in this example, the information related to the notification is divided into an ordered sequence of attributes, each of which is a name, a position within the notification (starting at 1), a type, and a value. Alternatively, the attribute may have other characteristics depending on the particular implementation. For example, an attribute can include a predefined attribute, any attribute, or both.

지능형 라우터는 채널을 통하여 전송되는 패킷을 위한 구조 또는 포맷을 결정하는 대응 채널을 위한 속성을 얻기 위해 패킷의 채널 ID를 사용할 수 있다. 특히, 각각의 패킷은, 예를 들어 발행자 ID, 주제와 같은 다른 헤더 정보 및 채널 ID와 관련된 태그를 함유할 수 있다. 태그는 도 18에 보여진 예인, 메시지 포맷의 숫자에 주제를 매핑(mapping)하는데 사용될 수 있다. 예를 들어 16비트 값과 같은 작은 정수 값은 숫자로 사용될 수 있다. 택일적으로, 어떠한 다른 유형의 숫자 또는 정보도 주제를 매핑하는데 사용될 수 있다. 주제를 숫자에 매핑하는 것은 특별한 이점을 제공할 수 있다; 예를 들면 메시지 포맷에서 공간을 절약하고, 메시지에서 주제의 표시를 지정하는 균일한 또는 표준 방식을 제공하여, 그 표시가 빠르게 찾아지고 식별되게 할 수 있다. 지능형 라우터는 명령어(command)를 통하여 대응하는 주제를 원격으로 얻기 위하여, 매핑을 로컬로 저장하거나 다르게 그 숫자들을 사용할 수 있다.The intelligent router may use the channel ID of the packet to obtain an attribute for the corresponding channel that determines the structure or format for the packet transmitted over the channel. In particular, each packet may contain tags associated with the channel ID and other header information such as, for example, issuer ID. The tag can be used to map a subject to a number of message formats, an example shown in FIG. Small integer values, for example 16-bit values, can be used as numbers. Alternatively, any other type of number or information can be used to map the subject. Mapping subjects to numbers can offer special advantages; For example, space can be saved in the message format, and a uniform or standard way of specifying the representation of the subject in the message can be made to quickly find and identify the representation. The intelligent router may store the mapping locally or use the numbers differently to obtain the corresponding subject remotely via command.

표 10은 이 예에서는 정수 값을 사용하여, 숫자를 주제에 매핑하기 위한 구조를 도시한다. 표에 있는 주제 트리 파라미터(subject tree parameter)는 주제는 계층적 관계로 하나 이상의 주제 필드(subject field)를 포함할 수 있음을 나타낸다; 예를 들면 주제 트리(subject tree)는 특별 기호에 의해 구별된 주제 필드의 문자열(string)을 포함할 수 있다. 주제 트리의 예는 표 2에 제공되어 있다. 예로서, 주제 트리 quotes.nyse는 다른 네트워크 주소 또는 URL에서 볼 수 있는 "."에 의해서 구별되는 두 용어인 주제 "quotes"와 서브 필드(sub-field) "nyse"를 포함한다. 마침표를 사용하고 URL-유형(type) 문자열(string)을 지정하는 것과는 별도로, 주제 트리는 구분을 위한 어떠한 기호 및 문자를 사용하는 방식으로도 지정될 수 있다.Table 10 shows the structure for mapping numbers to subjects, in this example using integer values. The subject tree parameter in the table indicates that a subject can include one or more subject fields in a hierarchical relationship; For example, the subject tree may include a string of subject fields separated by special symbols. Examples of subject trees are provided in Table 2. As an example, the subject tree quotes.nyse includes two terms, the subject "quotes" and the sub-field "nyse", which are distinguished by "." Found in other network addresses or URLs. Apart from using periods and specifying URL-type strings, the subject tree can be specified in any way using any symbol and character to distinguish it.

표 10Table 10 숫자number 주제 트리(subject tree)Subject tree 정수값 1Integer value 1 주제 트리 1Topic tree 1 정수값 2Integer value 2 주제 트리 2Topic tree 2 정수값 NInteger value N 주제 트리 NTopic tree N

따라서, 특정한 채널을 위한 패킷 포맷 또는 구조를 알고, 지능형 라우터가 콘텐트 기반 라우팅을 위한 패킷에 주제, 속성 또는 다른 정보를 빠르게 지정할 수 있다. 예를 들어 채널은 패킷의 카운팅 바이트(counting byte)에 의해 지정하기 쉽게 만들어, 채널을 통해 전송된 주제 및 속성의 바이트 위치를 찾을 수 있다. 택일적으로, 지능형 라우터는 주제 및 속성 또는 다른 정보들을 찾기 위해 패킷을 분해(parsing)할 수 있다.Thus, knowing the packet format or structure for a particular channel, intelligent routers can quickly assign subjects, attributes, or other information to packets for content-based routing. For example, the channel can be made easy to specify by the counting byte of the packet, so that the byte position of the subject and attribute sent over the channel can be found. Alternatively, the intelligent router may parse the packet to find the subject and attribute or other information.

표 11은 C++ 프로그래밍 언어로 된 발행자 프로그램의 예를 제공한다. 표 12는 채널을 생성하는 API의 예를 제공한다. 표 13은 도시된 바와 같은 채널 관련 정보를 제공하며 채널 관리자에 의해 유지되는 채널 설정 파일의 예를 제공한다(도 6 참조). 시스템은 프로세싱 로드를 분산하기 위한 로컬 채널 관리자로서 기능하는 지리적으로 분산된 서버의 IP 주소를 제공하는 글로벌 채널 관리자를 택일적으로 가질 수 있다.Table 11 provides examples of publisher programs in the C ++ programming language. Table 12 provides an example of an API for creating a channel. Table 13 provides channel related information as shown and provides an example of a channel configuration file maintained by the channel manager (see Figure 6). The system may alternatively have a global channel manager that provides the IP addresses of geographically dispersed servers that serve as local channel managers to distribute the processing load.

Figure 112005001061850-pct00006

Figure 112005001061850-pct00006

Figure 112005001061850-pct00007

Figure 112005001061850-pct00007

Figure 112005001061850-pct00008

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).11 is a flow chart of a subscriber method 264 for use in receive and subscription processing. For example, the method 266 may be implemented as a software module including an agent 128 for execution by the processor 134 of the subscriber machine 122. In method 264, for example, a graphical user interface (GUI) gives the user an indication of the channels available (step 266), which can be accomplished by the application 126. Information indicating a channel may be received from, for example, a channel manager providing channel related information. Any type of application 126 can be used to identify the channel in a particular method or format. The application receives the user's channel selection (step 268) and calls an API or other program for the selected channel (step 270). The API gives the user a subscription option for the channel according to the selected option (step 272). The API receives a value for a subscription from the user (step 274) and sends a subscription to the agent 128 for processing as described below (step 276).

가입을 위한 파라미터는, 예를 들어 표 1에 도시된 바와 같은 술어(predicate)를 포함할 수 있다. 각각의 채널은, 예를 들어 대응하는 채널을 위한 파라미터 또는 특정 요구에 따른 가입을 프로세스하기 위하여 각자의 API를 사용할 수 있다. 이 API들은, 예를 들어 가입을 받기 위한 웹기반(web-based) 또는 자바기반(Java-based)의 API를 포함할 수 있고, 가입에 관한 정보를 받고 그것을 에이전트 애플리케이션을 따라 전달하기 위한 프로세싱 및 사용자 인터페이스의 어떠한 유형도 사용할 수 있다.The parameter for subscription may include a predicate as shown in Table 1, for example. Each channel may use its API, for example, to process subscriptions according to specific needs or parameters for the corresponding channel. These APIs may include, for example, web-based or Java-based APIs for subscribing, processing for receiving information about the subscription and passing it along with the agent application. You can use any type of user interface.

도 12는 가입을 받기 위한 메소드(method; 264)와 관련하여 사용될 수 있는, 채널 및 가입자 스크린 또는 GUI(278 및 284)를 개념적으로 도시하는 다이어그램이다. 스크린(278)은 사용자에 의한 선택을 위한 사용가능한 채널을 식별하는 다수의 섹션(282)을 포함한다. 특정 채널의 선택에 따라, 스크린(284)은 섹션(286)에 있는 가입을 위한 사용자의 값을 받기 위하여 디스플레이 될 수 있다. 사용자는 가입을 제출하기 위하여 섹션(288)을 선택할 수도 가입을 취소하기 위하여 섹션(290)을 선택할 수도 있다. 스크린(278 및 284)은, 예를 들어 하이퍼텍스트 생성 언어(HTML) 웹 페이지 또는 어떠한 다른 포맷으로도 포맷될 수 있다. 또한, 스크린은 바람직하게 가입자를 위한 사용자 친화적인 또는 시각적으로 끄는 인터페이스를 제공하기 위하여, 텍스트, 그래픽, 사진, 다양한 컬러 또는 멀티미디어 정보를 가능한 한 포함하여 콘텐트 및 섹션의 어떤 구성도 포함할 수 있다. 또한 스크린은 예를 들어 관용 브라우저 기능(conventional browser function)을 제공하는 툴바(280)를 포함할 수 있다.12 is a diagram conceptually illustrating channel and subscriber screens or GUIs 278 and 284, which may be used in connection with the method 264 for receiving a subscription. Screen 278 includes a number of sections 282 that identify available channels for selection by the user. Depending on the selection of a particular channel, screen 284 may be displayed to receive a user's value for subscription in section 286. The user may select section 288 to submit a subscription or select section 290 to cancel a subscription. Screens 278 and 284 may be formatted, for example, in a hypertext generation language (HTML) web page or any other format. In addition, the screen may include any configuration of content and sections, possibly including text, graphics, photographs, various colors or multimedia information, to provide a user friendly or visually appealing interface for the subscriber. The screen may also include a toolbar 280 that provides, for example, a conventional browser function.

표 14는 C++ 프로그래밍 언어로 된 가입자 프로그램의 예를 제공한다.Table 14 provides an example of a subscriber program in the C ++ programming language.

Figure 112005001061850-pct00009
Figure 112005001061850-pct00009

Figure 112005001061850-pct00010

Figure 112005001061850-pct00010

페이로드 검사와 채널을 통한 콘텐트 기반 라우팅Payload inspection and content-based routing through channels

도 13은 페이로드 검사와 채널을 통한 콘텐트 기반 라우팅 메소드(300)의 플로우 차트를 나타낸 것이다. 메소드(300)는 예를 들어, 지능형 라우터(92)에서 프로세서(93)에 의한 실행 소프트웨어 모듈 내에서 구현될 수 있는데, 지능형 라우터(92)는 필터링 데몬(daemon)(212)에 의해 표현된다. 이와 다르게, 메소드(300)를 하나의 ASIC으로 또는 하드웨어와 소프트웨어의 결합으로도 구현할 수 있다. 메소드(300)에서 설명한 콘텐트 기반 라우팅은 네트워크의 코어이든 에지 라우터이든 네트워크내 어느 곳에서도 지능형 라우터 내에서 실행될 수 있다.13 illustrates a flow chart of payload inspection and content-based routing method 300 over a channel. The method 300 may be implemented, for example, in an execution software module by the processor 93 in the intelligent router 92, which is represented by a filtering daemon 212. Alternatively, the method 300 can be implemented in a single ASIC or a combination of hardware and software. The content-based routing described in method 300 may be executed in an intelligent router anywhere in the network, whether at the core or edge router of the network.

총괄하면, 콘텐트 기반 라우팅이란 패킷을 어떻게 처리할지 결정하기 위해 패킷에서 페이로드 섹션을 검사하는 것을 의미하는 것이다. 이러한 콘텐트 기반 라우팅 메소드에서는 예를 들면, 어떤 순서로 가입 목록을 처리하기(예를 들어, 필터를 사용하기), 메시지의 라우팅을 결정하기 위해 라우팅 규칙에 따라 주제별, 속성별로 메시지를 비교하기, 그리고 네트워크 코어에서 처리를 수행하기와 같은 것을 포함할 수 있다. 규칙에는 인-라우터 처리를 조절하는 규칙들이나 필터와 관련된 어떠한 규칙들이라도 포함될 수 있다. 이러한 라우팅 결정들은 그 후 네트워크 코어 전체로 배포될 수 있다. 채널로 표현된 주제를 사용하여 메시지 포맷이 결정되면, 지능형 라우터는 메시지 내에서 속성들의 위치를 빠르게 알아낸다. 예를 들면, 특정 채널의 메시지 또는 패킷에서 속성들의 바이트 위치가 알려져 있는 것이다.Collectively, content-based routing means examining the payload section in a packet to determine how to handle the packet. In this content-based routing method, for example, processing a list of subscriptions (for example, using a filter) in some order, comparing messages by subject and by attribute according to routing rules to determine the routing of the message, and It may include such things as performing processing in the network core. The rules may include rules that govern in-router processing or any rules related to filters. These routing decisions can then be distributed throughout the network core. Once the message format is determined using the subject represented by the channel, the intelligent router quickly locates the attributes within the message. For example, the byte position of the attributes in a message or packet of a particular channel is known.

메소드(300)에서, 지능형 라우터(92)는 메시지에 대한 패킷을 수신한다 (단계 302). 패킷에서 대응하는 메시지에 대한 채널 ID를 결정하고 (단계 304) 채널 ID를 이용하여 채널에 대한 속성들을 추출한다 (단계 306). 이 예에서, (채널 ID로 결정된) 채널의 유형은 그 패킷 내 속성들의 위치와 데이타 유형을 결정한다. 채널에 대한 속성들은 국부적으로 저장되거나, 채널 관리자를 통하여 원격적으로 추출될 수 있다. 지능형 라우터(92)는 하나의 가입에 대응하는 필터를 추출한다 (단계 308). 이 필터는 하나 또는 그 이상의 속성 테스트들을 포함하는데, 대개는 가입에 대한 하나의 속성 테스트 그룹을 포함한다. 지능형 라우터(92)는 패킷내 속성들을 필터 기술내 대응하는 속성 테스트(들)에 적용시킨다 (단계 310).In method 300, intelligent router 92 receives a packet for a message (step 302). The channel ID for the corresponding message in the packet is determined (step 304) and the attributes for the channel are extracted using the channel ID (step 306). In this example, the type of channel (determined by channel ID) determines the location and data type of attributes in the packet. Attributes for a channel can be stored locally or extracted remotely through a channel manager. Intelligent router 92 extracts a filter corresponding to one subscription (step 308). This filter includes one or more attribute tests, usually one attribute test group for a subscription. Intelligent router 92 applies attributes in the packet to the corresponding attribute test (s) in the filter description (step 310).

만약, 필터 기술내 모든 속성 테스트(들)의 결과가 긍정적이면 (단계 312), 즉 속성들이 모든 속성 테스트(들)를 만족시키면, 지능형 라우터는 그 필터와 관련된 규칙들이 지시하는 일련의 메소드들을 수행한다. 이 메소드에는 예를 들어, 그 패킷을 다음 링크에 라우팅하기 그리고/또는 규칙에 지시된 대로 로컬 라우터에서 그 패킷의 콘텐트에 어떤 액션이나 계산을 수행하기와 같은 것이 포함될 수 있다. 그 액션 또는 다음 링크는 예를 들면, 대응하는 가입을 지정하는 데이터 구조내에서 식별될 수 있다. 규칙이 하나의 링크이면, 그것은 전형적으로 패킷을 수신할 다음 네트워크의 노드를 식별하는 것인데, 여기에는 지능형 라우터, 백본 라우터, 네트워크 연결된 장비, 또는 다른 장비 등이 포함될 수 있다. 이와 다르게, 다른 방식들로 다음 링크를 가입에 지정하거나 관련지을 수도 있다.If the result of all the property test (s) in the filter description is positive (step 312), i.e. if the properties satisfy all the property test (s), then the intelligent router performs a series of methods indicated by the rules associated with the filter. do. This method may include, for example, routing the packet to the next link and / or performing some action or calculation on the content of that packet at the local router as indicated in the rule. The action or next link can be identified, for example, in a data structure specifying the corresponding subscription. If the rule is one link, it typically identifies the node of the next network to receive the packet, which may include an intelligent router, backbone router, networked equipment, or other equipment. Alternatively, the next link may be assigned or associated with the subscription in other ways.

만약 필터 기술내 모든 속성 테스트(들)의 결과가 긍정적인 것이 아니라면 (단계 312), 즉 속성들이 모든 속성 테스트(들)를 만족시키는 것은 아니라면, 그 필터는 불일치라고 선언된다 (단계 315). 지능형 라우터는 필터 기술내 모든 속성 테스트들을 다 완료하거나 부정적인 결과를 처음 만나는 것 중, 어느 것이든 먼저 될 때까지 상기 절차를 반복하여 수행한다.If the result of all the attribute test (s) in the filter description is not positive (step 312), that is, if the attributes do not satisfy all the attribute test (s), the filter is declared inconsistent (step 315). The intelligent router repeats the above procedure until either all of the attribute tests in the filter technology have been completed or the first to encounter negative results, whichever comes first.

한 차례 필터에 대한 모든 속성 테스트들이 수행되면, 지능형 라우터는 남은 필터가 있는지를 결정한다 (단계 316). 만약 남은 필터가 있으면, 단계(308)로 되돌아가서 다음 필터에 대한 속성들을 처리하기 위해 그 필터에 대한 속성 테스트(들)를 추출한다. 매칭 절차는 (단계 308, 310, 312, 314, 315, 그리고 316) 모든 필터 세트들이 다 수행되거나, 모든 액션에 대한 결과 또는 라우팅 규칙들이 결정될 수 있을 때까지 중 어느 것이든 먼저 될 때까지 계속된다. 만약 패킷이 어떤 필터도 만족시키지 않는다면, 그것은 중단되고(버려지고), 전달되지 않을 것이다.Once all attribute tests for the filter have been performed, the intelligent router determines if there is a filter remaining (step 316). If there are remaining filters, return to step 308 to extract the attribute test (s) for that filter to process the attributes for the next filter. The matching procedure continues (steps 308, 310, 312, 314, 315, and 316) until either all filter sets have been performed or the result or routing rules for all actions can be determined first. . If a packet does not satisfy any filter, it will be aborted and discarded.

지능형 라우터(92)는 어떤 특정한 순서로 필터를 정렬할 수 있다. 예를 들면, 표 15에 나타난 바와 같이 하나의 열 또는 라우팅 표로 가입에 대한 필터를 저장하고, 일직선으로 필터를 훑어가면서 속성들을 필터(속성 테스트들)에 적용시킬 수 있다. 이와 다르게, 라우팅 표는 필터에 대한 포인터 또는 링크를 포함할 수도 있다.Intelligent router 92 may sort the filters in any particular order. For example, you can store a filter for a subscription in a single column or routing table, as shown in Table 15, and apply attributes to the filter (attribute tests) while sweeping the filter in a straight line. Alternatively, the routing table may include a pointer or link to the filter.

콘텐트 기반 라우팅은 예를 들면 트래픽 상태에 따른 알고리듬 교환과 같은성능-향상 휴리스틱(heuristic)과 애플리케이션에 따라 임의로 하나 이상의 메소드를 동시에 사용할 수 있다. 처리를 위한 필터는 콘텐트 기반 라우팅에 필요한 페이로드 섹션 검사의 수행을 위해 네트워크 내 하나의 라우터에서 임의로 암호화, 번역화, 변환되고, 병합될 수 있다. 예를 들면, 가격 > 3.54122 달러는 끝을 잘라서 가격 > 3.54 달러로 될 것이다. 왜냐하면, 애플리케이션에서 발행은 소수점이하 두번째보다 작은 자리의 통화 속성을 포함하지 않는다고 알려져 있기 때문이다. 또한 예를 들어, 외국에서 부친 발행이 미국에 위치한 라우터에 처음 도착할 때, 외국 통화는 미국 통화로 번역될 수 있다. Content-based routing can use one or more methods simultaneously at the same time, depending on the application and performance-enhancing heuristics, such as algorithmic exchange depending on traffic conditions. Filters for processing may be arbitrarily encrypted, translated, translated, and merged at one router in the network to perform payload section checks required for content-based routing. For example, the price> $ 3.54122 would be cut off at the price> $ 3.54. This is because issuance in applications is known not to include currency attributes with less than two decimal places. Also, for example, when a father's issuance from a foreign country first arrives at a router located in the United States, the foreign currency may be translated into US currency.

일직선으로 필터를 훑어가는 것에 대한 하나의 대안으로서, 지능형 라우터(92)는 다른 순서 또는 아마도 처리 속도, 효율을 향샹시킬 수 있는 다양한 알고리듬에 따라 처리를 위한 필터를 선택할 수도 있다. 표 16은 가입과 그에 대응하는 링크의 예를 나타낸다; 이 예에서 주제들은 특정 채널과 관련되어 있고, 그 주제에 대한 가입은 필터에 대한 라우팅 규칙으로 표현될 수 있다. 주제들은 예를 들면, 콘텐트의 출처를 식별하는 Uniform Resource Locators(URLs)와 같은 네트워크 주소를 포함할 수 있다. As an alternative to sweeping the filters in a straight line, the intelligent router 92 may select filters for processing according to different orders or possibly various algorithms that may improve processing speed and efficiency. Table 16 shows examples of subscriptions and corresponding links; In this example, topics are associated with a particular channel, and subscriptions to that topic can be represented by routing rules for filters. Topics may include, for example, network addresses such as Uniform Resource Locators (URLs) that identify the source of the content.

표 15Table 15 채널 1Channel 1 가입join 링크link 필터 1aFilter 1a 링크 1aLink 1a 필터 2aFilter 2a 링크 2aLink 2a 필터 NaFilter Na 링크 naLink na 채널 NChannel N 가입join 링크link 필터 1NFilter 1N 링크 1aLink 1a 필터 2NFilter 2N 링크 1bLink 1b 필터 NNFilter NN 링크 1nLink 1n

Figure 112005001061850-pct00011

Figure 112005001061850-pct00011

네트워크 노드에서 캐싱Caching at Network Nodes

도 14는 캐싱메소드(320)의 플로우 차트를 나타낸 것이다. 메소드(320)는 예를 들어, 지능형 라우터(92)에서 프로세서(93)에 의한 실행 소프트웨어 모듈 내에서 구현될 수 있는데, 지능형 라우터(92)는 캐시 관리자(218)로써 표현된다. 이와 다르게, 메소드(320)를 하나의 ASIC으로 또는 하드웨어와 소프트웨어의 결합, 대응하는 지능형 라우터와 동일하거나 다른 물리적 장치로도 구현할 수 있다. 메소드(320)에서, 지능형 라우터(92)는 데이터 또는 콘텐트와, 하나의 채널 ID, 주제들을 포함한 메시지를 수신한다 (단계 322). 지능형 라우터(92)는 데이타에 시간을 마크하고(단계 324), 메모리(94)나 2차 저장소(97)에 국부적으로 캐시(저장)한다 (단계 326). 지능형 라우터(92)는 캐시 데이터를 예를 들어, 채널 ID, 주제들과 시간 스탬프로 인덱스한다 (단계 328). 14 shows a flow chart of the caching method 320. The method 320 may be implemented, for example, in an execution software module by the processor 93 in the intelligent router 92, which is represented as the cache manager 218. Alternatively, the method 320 may be implemented in one ASIC or in a combination of hardware and software, either on the same or different physical device as the corresponding intelligent router. In method 320, intelligent router 92 receives a message containing data or content, a channel ID, and subjects (step 322). Intelligent router 92 marks the time with data (step 324) and caches (stores) it locally in memory 94 or secondary storage 97 (step 326). Intelligent router 92 indexes the cache data by, for example, channel ID, subjects and time stamp (step 328).

만약 지능형 라우터(92)가 데이터에 대한 요청을 수신하면 (단계 330), 요청에 따라 인덱스를 이용하여 캐시된 데이터를 검색한다 (단계 332). 지능형 라우터(92)는 캐시 데이터를 백본 라우터(95), 또는 요청자나 다른이에게 궁극적으로 전송하기 위한 다른 라우팅 장치로 전달한다. 메소드(320)를 반복 실행하여 데이터 캐시 및 요청에 대한 캐시 데이터 검색을 지속적으로 할 수 있다. If the intelligent router 92 receives a request for data (step 330), it retrieves the cached data using the index according to the request (step 332). Intelligent router 92 forwards cache data to backbone router 95 or other routing device for ultimate transmission to the requestor or others. The method 320 can be repeated to continue cache data retrieval for data caches and requests.

도 15는 메소드(320)에 사용되는 캐시 인덱스(336)를 설명하는 도해이다. 캐시 인덱스(336)는 데이터(338)를 수신하고 시간 스탬프(340)와 함께 저장한다. 데이터가 수집되면, 매 델타 t시간마다 마크된다. 여기서 델타 t는 마크 사이의 시간 간격을 표시하는데, 예를 들면, t2 - t1 가 된다. 어떤 방식으로 시간을 마크하던지 다른 유형의 인덱스를 대안으로 사용할 수 있다. 15 is a diagram illustrating the cache index 336 used in the method 320. Cache index 336 receives data 338 and stores it with time stamp 340. Once data is collected, it is marked every delta t hours. Here delta t represents the time interval between marks, for example t 2 -t 1 . No matter how you mark time, you can use other types of indexes as an alternative.

표 17은 캐시 데이터의 인덱스를 개념적으로 설명한 것이다. 표 18은 캐시에 대한 연결 히스토리를 저장하는 데이터 구조를 개념적으로 설명한 것이다. 표 19는 지능형 라우터를 포함한 네트워크 노드에서 국부적으로 데이터를 캐시하는데 사용되는 데이터 구조들의 예를 보여준다. Table 17 conceptually describes the index of cache data. Table 18 conceptually describes the data structure that stores the connection history for the cache. Table 19 shows examples of data structures used to cache data locally at network nodes including intelligent routers.

시간 마크의 간격은 길이에 관계없이 고정되거나 변할 수 있다. 예를 들면, 매 5분마다 데이터를 캐시하고, 인덱스할 수 있다. 하나의 시간과 주제를 지정하는 캐시 데이터의 검색 명령(#.getCache와 같은)이 수신되면, 캐시 관리자(218)는 단계(332)에서 캐시 인덱스를 이용하여 요청에 상응하는 캐시데이터를 검색할 수 있는지 여부를 결정한다.The spacing of the time marks can be fixed or varied regardless of the length. For example, data can be cached and indexed every 5 minutes. When a command for retrieving cache data (such as # .getCache) is received that specifies a time and subject, the cache manager 218 can retrieve the cache data corresponding to the request using the cache index in step 332. Determine whether there is.

각 주제 또는 채널은 예를 들어, 하나의 멀티캐스트 트리와 한 세트의 지능형 라우터 내에서 그 자신의 IP 주소를 포함할 수 있다. 그러므로, 표 18은 사용자 머신에 국부적으로 저장될 수 있는 라우터들 사이의 연결 히스토리를 표현한 것이다; 만약 에지 라우터가 끊어지면, 머신은 에지 라우터가 온-라인 복귀되었을 때 그 채널에 대해서 어떻게 업스트림 라우터를 다시 연결할지 결정하기 위해 연결 히스토리에 액세스할 수 있다. 머신은 또한 예를 들면, 연결이 끊긴 시간 동안 가입에 대해 계류중인 어떤 콘텐트를 확보하기 위해 get cache 명령을 실행할 수도 있다. Each subject or channel may include, for example, its own IP address within one multicast tree and one set of intelligent routers. Therefore, Table 18 represents the connection history between routers that can be stored locally on the user machine; If the edge router goes down, the machine can access the connection history to determine how to reconnect the upstream router for that channel when the edge router comes back on-line. The machine may also execute a get cache command, for example, to get some content pending for the subscription during the disconnected time.

표 17Table 17 t1 t 1 채널 ID 1Channel ID 1 주제 1 - nTopic 1-n 캐시 데이터에 대한 포인터 1Pointer to cache data 1 t2 t 2 채널 ID 2Channel ID 2 주제 1 - nTopic 1-n 캐시 데이터에 대한 포인터 2Pointer to cache data 2 tn t n 채널 ID 4Channel ID 4 주제 1 - nTopic 1-n 캐시 데이터에 대한 포인터 NPointer N to cache data

표 18Table 18 연결 히스토리Connection history 시간time 라우터router 네트워크 주소Network address t1 t 1 R2R2 UR2UR2 UR3UR3 t2 t 2 R2R2 UR2UR2 UR3UR3

표 19Table 19 지능형 라우터를 위한 캐시 데이터 구조의 예Example of Cache Data Structure for an Intelligent Router 채널 노드Channel node

Figure 112005001061850-pct00012
Figure 112005001061850-pct00012
주제 노드Topic node
Figure 112005001061850-pct00013
Figure 112005001061850-pct00013
데이터 노드Data node
Figure 112005001061850-pct00014
Figure 112005001061850-pct00014
저장된 시간 그레인 노드Saved Time Grain Node
Figure 112005001061850-pct00015
Figure 112005001061850-pct00015
지난 시간 그레인 노드Last time grain node
Figure 112005001061850-pct00016
Figure 112005001061850-pct00016

이 대표적인 데이터 구조에는 다음의 정보가 포함되어 있다. 하나의 주제 노드에는 하나의 주제 식별자(identifier), 주제 계층(level), 상위(parent) 채널 또는 주제 노드에 대한 포인터, 그 자신의 디렉토리에 대한 파일 기술자(descriptor), 다음 계층(level) 주제 노드를 포함하는 해시(hash) 표에 대한 포인터와 데이터 노드에 대한 포인터 등이 있다. 하나의 데이터 노드에는 그것의 주제 상위(parent) 노드에 대한 포인터, 그 데이터 디렉토리에 대한 파일 기술자(descriptor), 각 저장 장치에 저장된 데이터에 대한 데이타 구조를 포함하는 원형 버퍼, 버퍼의 헤드(head)와 테일(tail), 그리고 검색과 저장기간 동안 데이터 노드를 잠그기 위한 락(lock) 등이 있다. 저장된 시간 그레인(last time grain) 노드는 현재의 데이터 파일을 표현하는 노드이고, 지난 시간 그레인(grain) 노드는 저장 장치에 아직 저장되지 않고, 메모리에서 유지되고 있는 지난 버퍼를 표현한다. 이 예에서 캐시와 데이터 저장 스레드(threads)는 지난 시간 그레인(grain) 노드의 mutex를 사용하여 지난 시간 그레인(grain) 노드를 동시에 액세스(access)하는 것을 방지한다.This representative data structure contains the following information: One topic node contains one topic identifier, topic level, pointer to a parent channel or topic node, a file descriptor for its own directory, and a next level topic node. Pointers to hash tables and pointers to data nodes. One data node contains a pointer to its subject parent node, a file descriptor for its data directory, a circular buffer containing the data structure for the data stored on each storage device, and the head of the buffer. Tails, and locks to lock data nodes during retrieval and storage. The stored time grain node is the node representing the current data file, and the last time grain node represents the last buffer that is not yet stored in storage, but kept in memory. In this example, cache and data storage threads use the mutex of the last time grain node to prevent concurrent access to the last time grain node.

에이전트 처리Agent processing

도 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). 16 shows a flow chart of an agent method 350 for an outgoing subscription message. The method 350 may be implemented, for example, in a software module represented by the agent 128 for executing the processor 134 on the user (subscriber) machine 122. In method 350, agent 128 receives one subscription via the method described in FIGS. 11 and 12, etc. (step 352). Agent 128 creates a string that specifies a Boolean expression for the subscription (step 354) and parses the string to detect if there is an error in the subscription (step 356). If there is an error, the agent 128 may submit an error message to the user (step 360) to allow the user to correct the error and re-enter the subscription. If there is no error in the subscription (step 358), the agent 128 stores the expression in one data structure, such as the example described below (step 362). Agent 128 converts the not-equal expression in the data structure to positive form (step 364), and converts the data structure to the corresponding disjunctive normal form (DNF) structure (step 366). . Agent 128 also simplifies the AND expressions of the DNF structure to include only range filters and membership tests (step 368).

DNF는 기본적인 형식으로 잘 알려져 있는데, 이 형식에서는 부울(Boolean) 표현식이 하나 또는 그 이상의 선언(disjunct)이라 불리는 부-표현식들을 하나의 OR로 표현한 것으로, 각 부-표현식은 하나 또는 그 이상의 속성 테스트들을 하나의 AND로 표현한 것이다. 예를 들면, 부울(Boolean) 표현식(가격 >=10 AND ((심볼=="LU" OR 심볼=="T"))은 다음과 같은 등가의 DNF 표현식을 갖는다 ((가격 >=10 AND 심볼=="LU") OR (가격 >=10 AND 심볼=="T")).DNF is well known in its basic form, where a Boolean expression represents one or more sub-expressions, called disjuncts, as an OR, with each sub-expression testing one or more attributes. Are expressed as an AND. For example, a Boolean expression (price> = 10 AND ((symbol == "LU" OR symbol == "T")) has the equivalent DNF expression: ((price> = 10 AND symbol) == "LU") OR (price> = 10 AND symbol == "T")).

단계(364)에서 변환은 "같지 않다" 연산자 (대표적으로 기호 !=으로 표현되는)를 등가의 "긍정" 형식, 즉 하나의 불허된 값보다는 모든 허가된 값을 지정하는형식으로 변환하는 것을 의미하는 것이다. 이 변환은 DNF의 생성 전에 먼저 수행되는데, 이렇게 해야하는 이유는 이 예에서 라우터가 긍정 형식의 방정식을 요구하기 때문이다. 예를 들면, 표현식(가격 !=80)은 등가의 긍정 표현식 (가격 <=79 OR 가격 >=81)로 변환될 수 있다.The conversion in step 364 means the conversion of the "not equal" operator (typically represented by the symbol! =) To an equivalent "positive" form, that is, a form that specifies all allowed values rather than one disallowed value. It is. This conversion is done before the creation of the DNF, because this requires that routers in this example require a positive equation. For example, the expression (price! = 80) may be converted into an equivalent positive expression (price <= 79 OR price> = 81).

단계(368)에서 변환은 DNF가 생성된 후 수행되며, 결과적인 AND 표현식에 대 해 가외로 단순화를 시키는 것이다. 이것 또한 이 예에서 라우터 작업을 단순화하기 위해 수행된다. 특별히, 동일한 속성에 대한 다수의 속성 테스트들을 하나의 AND로 표현한 것은 하나의 기본적인 "범위 필터"로 단순화될 수 있는데, 이 범위 필터는 하나의 하한 또는 상한만 있거나 상, 하한 모두 있거나 또는 동일성 테스트의 경우에는 하나의 값이 된다. 특별 유형의 범위 필터는 그 후 표 22에 따라 암호화된다.In step 368, the transformation is performed after the DNF is generated, which further simplifies the resulting AND expression. This is also done to simplify the router operation in this example. In particular, the representation of multiple attribute tests for the same attribute in a single AND can be simplified to one basic "range filter," which has only one lower or upper limit, all upper and lower bounds, or the identity test. In this case, it is one value. Special types of range filters are then encrypted according to Table 22.

예를 들면, 표현식 (가격 >= 10 AND 가격 <= 80 AND 가격 >= 20 AND 가격 <= 100)은 표현식 (가격 >= 20 AND 가격 <= 80)으로 단순화될 수 있는데, 이것은 상, 하한 모두 있는 범위 필터의 한 예이다. 단순화후 다른 유형의 예는 다음과 같다: (가격 >=20) (하한만); (가격<=80) (상한만); 그리고 (가격==50) (하나의 값). 이러한 범위 필터를 생성하면서 어떤 부 표현식은 진실 또는 거짓으로 단순화시킬 가능성이 있는데, 이 경우 부 표현식은 부울(Boolean) 대수 법칙에 따라 제거될 수 있고, 따라서 메시지 내 표현식의 암호화가 한층 더 최적화된다. 예를 들면, 표현식 (가격 >= 50 AND 가격 <= 20)은 거짓으로 단순화되는데, 왜냐하면 "가격"에 대해 어떤 값도 이 표현식을 만족시킬 수 없기 때문이다. 전체 필터 표현식이 거짓으로 단순화 되는 특별한 경우에는 에이전트는 메시지 전부를 생성할 필요가 없으며, 따라서 라우터의 불필요한 작업이 경감된다.For example, the expression (price> = 10 AND price <= 80 AND price> = 20 AND price <= 100) can be simplified to the expression (price> = 20 AND price <= 80), which is both upper and lower bounds. This is an example of a range filter. Examples of other types after simplification are: (price> = 20) (lower limit only); (Price <= 80) (upper limit only); And (price == 50) (one value). While creating this range filter, it is possible that some subexpressions can be simplified to true or false, in which case the subexpressions can be eliminated according to the Boolean algebraic law, thus further encrypting the expressions in the message. For example, the expression (price> = 50 AND price <= 20) is simplified to false because no value for "price" can satisfy this expression. In the special case where the entire filter expression is simplified to false, the agent does not need to generate all of the messages, thus reducing unnecessary work on the router.

만약 주제 필터(subject filter)가 와일드카드를 포함하고 있으면, 에이전트(128)는 그것을 임의로 아래(단계 370)와 같이 바꿀 수 있다. 반면, 와일드카드는 사용자의 컴퓨터나 다른 장치에서 보다 네트워크에서 바뀔 수 있다. 그 대표적인 예로, 주제 필터의 신택스는 와일드카드를 사용하는 유일한 신택스이고 속성 필터는 부울 연산식을 사용하는 유일한 신택스이다. 대신에, 구현에 있어서는 주제 필터나 속성 필터에서 다르거나 다양한 형태의 신택스의 사용이 가능하다.If the subject filter contains wildcards, agent 128 may arbitrarily change it as shown below (step 370). Wildcards, on the other hand, can change on the network than on your computer or other device. For example, the syntax of the subject filter is the only syntax that uses wildcards, and the attribute filter is the only syntax that uses Boolean expressions. Instead, implementations may use different or different forms of syntax in subject filters or attribute filters.

에이전트(128)는 결과물인 DNF 표현을 메시지(단계 372)로 암호화하고, 그 메시지를 지능형 라우터(단계 374)로 옮긴다. 암호화 과정은 가입(subscription)을 플랫(flat) 메시지 형태로 전환하는 것을 포함하며, 이것은 데이터의 문자열을 구성한다는 것을 의미힌다. 이 전달과정은 하나나 그 이상의 지능형 라우터나 네트워크상의 다른 라우팅 기기에 가입(subscription)하기 위한 주제 필터와 속성 필터로부터 생긴 전달된 라우팅 규칙을 포함한다. 예를 들어서 전달을 위해서는 가입(subscription) 표현은 전형적인 패킷 구조로 맵핑될 수 있다.Agent 128 encrypts the resulting DNF representation into a message (step 372) and moves the message to an intelligent router (step 374). The encryption process involves converting a subscription into a flat message form, which means that it constitutes a string of data. This forwarding process includes forwarded routing rules resulting from subject filters and attribute filters to subscribe to one or more intelligent routers or other routing devices on the network. For example, for delivery, a subscription representation can be mapped to a typical packet structure.

단계(372)의 암호화과정은, 한 채널을 통해 전파하기 위해서 한 채널에 대한 가입(subscription)을 메시징 API 포맷으로 정렬하는 것을 포함한다. 가입(subscription)은 예를 들어 내부적으로는 #.SUBSCRIPTION으로 통신된다. 왜냐하면, 중요한 주제 필터 필드와 중요한 속성 테스트 양쪽 모두가 존재하기 때문이며, 한쌍의 바이트(one pair of bytes)는 주제 필터 필드의 수를 저장하기 위해서 사용되고 다른 쌍의 바이트는 이 예에서의 속성테스트수(the number of attribute test)를 저장하기 위해서 사용되기 때문이다. 예를 들어서 각각의 주제 필터의 필드는 본래의 가입에서 구체화된 순서에 있어서 연속적으로 정렬되며, 메시지의 2바이트 부분으로 각각 정렬된다. 와일드카드 필드는 아래에 설명하는 것과 같이 정렬될 수 있다.The encryption process of step 372 involves arranging subscriptions for one channel in a messaging API format to propagate over one channel. Subscriptions are communicated internally, for example with # .SUBSCRIPTION. Because there are both important subject filter fields and important attribute tests, one pair of bytes is used to store the number of subject filter fields and the other pair of bytes is the number of attribute tests in this example ( the number of attribute test). For example, the fields of each subject filter are sorted consecutively in the order specified in the original subscription, and are each sorted into the 2-byte portion of the message. Wildcard fields can be sorted as described below.

속성테스트를 정렬함에 있어서, 테스트의 피 연산자는 통지의 속성 값을 정렬하는 것과 같은 이치로 메시지의 끝에서 정렬이 된다. 속성 테스트와 피연산자를 정렬하기에 앞서서 각각 분리된 DNF하에서 위치 순서에 따른 미리 설정된 속성들에 대한 테스트를 통해 속성 순서로 분류되고, 이름 순으로 임의의 속성에 따라 테스트를 거친다. 더욱이 각각의 선언 하에서 관련된 일련의 스칼라 값의 속성들에 대한 테스트는 하나의 한계(왼쪽 -또는 오른쪽- 개방 범위 또는 균등 테스트)나 두개의 한계(분리된 경계 사이의 닫힌 범위)를 가진 범위(range) 필터의 정규형으로 단순화 된다. 테스트의 다른 정보들은 예를 들어서 피연산자와 같은 순서의 2바이트 쌍으로 암호화 된다. 이 2바이트 쌍의 연속은 메시지 내에서 주제 필터 필드의 2바이트 암호 연속 바로 다음의 자리잡게 된다. 2바이트 쌍은 속성 테스트의 비트(bit)-문자열 암호화 연속의 한 형태를 구성하며, 이것은 또한 2바이트 쌍은 별 문제로하고 다른 암호화 형태를 대표하는 것으로 사용될 수 있다. 속성테스트의 예는 아래와 같이 제공된다.In ordering an attribute test, the operand of the test is sorted at the end of the message, just as it would sort the attribute values of the notification. Prior to sorting the attribute test and operands, they are sorted in attribute order by testing for pre-set attributes in position order under separate DNFs, and then tested according to any attribute in order of name. Furthermore, tests for a set of related scalar-valued attributes under each declaration can range from one limit (left-or right-open range or equality test) or two limits (closed range between separate boundaries). Is simplified to the canonical form of the filter. The other information in the test is encrypted in two-byte pairs in the same order as the operands, for example. This two-byte pair is placed in the message immediately following the two-byte cipher sequence in the Subject Filter field. The two-byte pair constitutes one form of bit-string encryption continuation of the attribute test, which can also be used to represent other cipher forms and the two-byte pair as a matter. An example of an attribute test is provided below.

속성 테스트의 암호화하는 과정의 개요는 표20에 서술한다. 표21은 2바이트 쌍을 암호화하는 방법을 서술하며, 표 22는 2바이트 쌍의 연산자 아이디(ID)를 암호화하는 방법을 서술한다.An overview of the encryption process for attribute tests is given in Table 20. Table 21 describes how to encrypt a two-byte pair, and Table 22 describes how to encrypt an operator ID (ID) of a two-byte pair.

표20Table 20 암호화 규칙Encryption rules 1One 디비트(D bit)의 0은 DNF의 새로운 선언의 시작을 가리키며, 디비트(D bit)의 1은 현재 선언에서 추가적인 선언을 가리킨다.A 0 in the D bit indicates the start of a new declaration in DNF, and a 1 in the D bit indicates an additional declaration in the current declaration. 22 통지 속성 위치의 모두 1인 값은 테스트가 적용되는 미리 정의된 속성(채널의 통지 태양에 따라 정의된)의 위치를 가리킨다. ; 테스트의 연산자는 도 18에서 묘사된 예와 같이 정렬된다.A value of 1 for all of the notification attribute locations indicates the location of a predefined attribute (defined according to the notification aspect of the channel) to which the test applies. ; The operators of the test are ordered as in the example depicted in FIG. 33 통지 속성 위치의 모두 1인 값은 테스트가 임의의 속성에 적용되는 것을 가리킨다. 이 경우에 이름의 길이와 테스트가 적용되는 속성의 이름은 연산자로 정리된다.A value of all 1 of the notification attribute location indicates that the test is applied to any attribute. In this case, the length of the name and the name of the attribute to which the test applies are organized by operator. 44 연산자 형태 아이디(ID)의 비트는 속성의 미리 정의된 형태 중의 하나로 암호화 된다.The bits of the operator type ID are encrypted in one of the predefined forms of the attribute. 55 연산자 아이디(ID)의 비트는 표 22에서 정의된 것과 같이 테스트에서 사용된 연산자로 암호화된다.The bits in the operator ID are encrypted with the operator used in the test, as defined in Table 22.

표21Table 21 첫 번째 바이트First byte 00 1One 22 33 44 55 66 77 DD 통지 속성 위치Notification Attribute Location 두 번째 바이트Second byte 00 1One 22 33 44 55 66 77 연산자 유형 IDOperator type ID 연산자 아이디Operator id

표 22Table 22 연산자Operator 연산자 아이디Operator id 좌 개방 범위Left opening range 000000 우 개방 범위Wu opening range 001001 닫힌 범위Closed range 010010 동일성 테스트Identity test 011011 긍정적 자격 테스트Positive qualification test 100100 부정적 자격 테스트Negative qualification test 101101

테스트를 위한 2바이트 쌍이 이미 테스트의 연산자 형태와 그 테스트가 미리 정의된 또는 임의의 속성에 적용되는지 여부 양쪽을 모두 가리키기 때문에, 임의의 속성이나 그 태양에 대해 수행된 다수의 테스트를 분리하여 정렬(marshalling)할 필요가 없다. 이런 설계는 통지에 있어서 미리 정의된 속성이 127개 이상이 없다는 것을 가정하고 있다. 대신에 이런 설계는 속성 테스트를 암호화하는데 더 많은 비트를 사용을 할 수 있다.Since the two-byte pair for a test already points to both the operator form of the test and whether the test applies to a predefined or arbitrary property, separate sorting of multiple tests performed on any property or aspect thereof There is no need to marshall it. This design assumes that there are no more than 127 predefined attributes in the notification. Instead, this design can use more bits to encrypt attribute tests.

이와 같은 속성 필터의 정렬 관습(marshal convention)은 DNF에 따른 속성 테스트를 순서화하고 그룹화했지만, (라우터와 같은) 하부조직 요소는 모든 속성 필터의 평가를 더욱 효과적으로 하기 위해서 다른 어떤 순서에 따라 (아마도 다른 테스트의 성공이나 실패의 확률에 대해 동적으로 얻어진 국부적 데이터에 따라)에 따라 테스트를 평가하기로 선택할 수 있다. 메시지의 가입(subscription) 아이디(ID) 필드는 에이전트의 에지(edge) 라우터와 가입(subscription)을 완전히 일치시키기 위해서 계속되는 요구하에서 가입(subscription)을 변경하거나 가입 해제(unsubscribe)하기 위해서 에이전트에 의해 생성되는 값이다. 특히, 가입의 속성 필터에 대한 동적인 변경은 주제가 #.RESUBSCRIPTION인 경우를 제외하고 도 18의 예에서 보여지는 메시지 형태를 사용하여 전달되고, 가입 아이디는 미리 등록된 변경되어진 가입의 가입 아이디이다. 그리고 가입 해제(unsubscription)는 예를 들어서 주제가 #.UNSUBSCRIPTION이고 가입 아이디 필드를 통해서 도 18의 메시지 형태를 사용하여 전달된 것이며, 가입 아이디는 미리 등록된 가입 해제(unsubscribe)되어진 가입의 가입 아이디이다.While the marshall convention of attribute filters like this ordered and grouped attribute tests according to DNF, subsystem elements (such as routers) could be ordered differently (perhaps in different orders) to make all attribute filter evaluations more efficient. You can choose to evaluate the test based on the local data obtained dynamically for the probability of success or failure of the test. The subscription ID field of the message is generated by the agent to change or unsubscribe the subscription under continuing requests to fully match the subscription with the agent's edge router. Is a value. In particular, a dynamic change to the attribute filter of a subscription is delivered using the message form shown in the example of FIG. 18 except that the subject is # .RESUBSCRIPTION, where the subscription ID is the subscription ID of the pre-registered changed subscription. The unsubscription is, for example, the subject is # .UNSUBSCRIPTION and is delivered using the message form of FIG. 18 through the subscription ID field, and the subscription ID is a subscription ID of a preregistered unsubscribed subscription.

이하 상기에서 설명된 에이전트에 의한 변환과 암호화를 설명하는 예를 든다. 아래와 같은 속성필터 표현의 예에 대해서 생각해보자. 가격 >=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)를 포함한다.The following describes an example of the conversion and encryption by the agent described above. Consider the following example of an attribute filter expression: Price> = 10 and (sign = "LU" or (volume> = 1000 and volume <= 10000)). FIG. 19 illustrates an integrated modeling language (UML) scheme 390 that describes the objects used by the agent of step 362 for storing this representation. This diagram illustrates a hierarchical relationship for specifying subscriptions that include variables, constants, or both. An object in the schematic may be an example of a filter type according to a particular implementation. Each SimpleFilter object represents the value of the attribute used to store information about the attribute test of the matching filter expression. According to the representation of FIG. 19, one OR filter 396 is connected to two end filters 392 and 400. End filter 392 includes simple filter 394 with attributes for subscription. In the same way, OR filter 396 includes simple filter 398 and end filter 400 includes simple filters 402 and 404.

이 예의 사용을 위해서는 속성 가격, 부호와 부피는 연결된 채널의 미리 정의된 속성으로 가정되고, 각각 위치 0,1,2로 정의된 것으로 가정된다. 더욱이 속성의 태양은 각각 언사인드 인티저(unsigned integer)(타이프코드 6), 캐릭터 어레이(타이프코드 12)와 언사인드 인티저(타이프코드6)로 가정된다.For the use of this example, the attribute price, sign and volume are assumed to be predefined attributes of the connected channel, and are defined at positions 0, 1 and 2, respectively. Moreover, the aspect of the attribute is assumed to be an unsigned integer (type code 6), a character array (type code 12) and an unsigned integer (type code 6), respectively.

다음으로 속성 필터로서의 속성필터표현의 예를 포함하는 가입을 생각해보자. 도 18은 가입을 메시지로 정렬하는 것을 나타낸다. 도 18의 왼쪽에 나타난 도식(386)은 실제 메시지의 내용을 나타내고, 오른쪽의 도식(388)은 메시지의 다른 부분에 대한 부호를 제공한다. 이 예의 각 도식의 넓이는 4바이트이다. 정렬을 하기에 앞서서 필터는 동등한 DNF로 변형된다. (가격 >=10 and 부호 ="LU")또는(가격 >= 10 and 부피>=1000 and 부피 <= 10000).Next, consider a subscription that contains an example of an attribute filter expression as an attribute filter. 18 illustrates sorting subscriptions into messages. Scheme 386 shown on the left side of FIG. 18 represents the content of the actual message, while scheme 388 on the right side provides a sign for another portion of the message. The width of each diagram in this example is 4 bytes. Before sorting, the filter is transformed into an equivalent DNF. (Price> = 10 and sign = "LU") or (price> = 10 and volume> = 1000 and volume <= 10000).

16비트 속성 테스트 암호화는 비트의 연속으로 나타내며, 간격은 다른 부분으로 분리하는 것을 나타낸다. 이 예에서의 가격에 대한 2개의 테스트는 분리된 영역(disjunct)에 있으므로 결합될 수 없다는 것을 주의하여야 하며, 따라서 오른쪽 경계가 없는 범위(우 개방 영역)에서 분리되어 정렬된다. 한편, 부피에 대한 2개의 테스트는 같은 영역에 있기 때문에 결합될 수 있으며, 한 개의 닫힌 영역 테스트에서 함께 정렬될 수 있다.The 16-bit attribute test cipher is represented as a sequence of bits, with the spacing separating it into different parts. It should be noted that the two tests for price in this example cannot be combined because they are in disjuncts, so they are separated and aligned in a range with no right border (right open area). On the other hand, two tests for volume can be combined because they are in the same area, and can be aligned together in one closed area test.

끝으로, 어떠한 필드들은 "가정된(assumed)" 것으로 특징지어질 수 있다는 것을 알아야 한다. 이것은 이 필드들에서의 값은 예를 들기 위해서 임의로 선택되어진 것이고, 정렬된 가입으로부터 일반적으로 독립된 것임을 의미한다. 부가한다면, 가입의 주제 필터는 임의로 ">"로 선택되고, 이것은 연결된 채널에 의해 정의된 어떤 주제와도 합치한다. 상기에서 서술되고 도 18과 19에서 보여진 예는 설명을 하기 위한 목적을 위해서만 제공된 것이고, 정렬은 가입의 다른 어떤 태양에 대해서도 사용될 수 있다. 또한, 방법(350)은 가입을 정렬하는 단 하나의 예를 보여준 것이고, 그것들은 다른 어떤 방식으로도 정렬될 수 있다.Finally, it should be noted that some fields may be characterized as "assumed." This means that the values in these fields are chosen arbitrarily for example and are generally independent of the ordered subscription. In addition, the subject filter of the subscription is arbitrarily selected as ">", which matches any subject defined by the connected channel. The examples described above and shown in FIGS. 18 and 19 are provided for illustrative purposes only, and alignment may be used for any other aspect of the subscription. Also, method 350 shows only one example of sorting subscriptions, and they can be sorted in any other way.

도 17은 들어온 메시지에 대한 에이전트 방법(376)의 플로우차트이다. 방법(376)은 예를 들어서 사용자 머신(122)에서 에이전트(128)와 애플리케이션(126)에 의해 구현될 수 있다. 방법(376)에서 에이전트(128)는 가입에 부합하는 지능형 라우터로부터 메시지를 전달받는다(단계 378). 에이전트(128)는 가입에 따라 채널을 선택을 하고(단계 380), 메시지의 채널 아이디에 따른 예에서 채널의 API를 호출한다(단계 382). API는 GUI나 사용자 머신의 다른 태양의 가입에 대한 데이터를 나타낸다(단계 384). 들어온 메시지에 대한 처리 절차는 상기에 서술된 암호화 과정을 역으로 하는 해독과정을 사용하며, 이 해독(암호화의 반대)은 라우터나 다른 네트워크 기기에서 수행되어질 수 있다.17 is a flowchart of an agent method 376 for incoming messages. The method 376 may be implemented by the agent 128 and the application 126, for example, on the user machine 122. In method 376 agent 128 receives a message from an intelligent router that matches the subscription (step 378). Agent 128 selects a channel according to the subscription (step 380), and calls the channel's API in the example according to the channel ID of the message (step 382). The API represents data about the subscription of the GUI or another aspect of the user machine (step 384). The processing procedure for incoming messages uses a decryption process that is the reverse of the encryption process described above, which decryption (as opposed to encryption) can be performed at a router or other network device.

와일드카드 절차Wildcard Procedure

도 20은 와일드카드 방법(410)의 플로우 차트이다. 이 방법은 가입을 위한 표현으로 와일드카드를 바꾸는데 사용되는 필터에 대한 일련의 라우팅 규칙을 적용하는 예를 설명한다. 방법(410)은 예를 들어서 사용자 머신(122)의 프로세서(134)에 의해 실행하기 위해서 에이전트(128)로 나타내어진 소프트웨어 모듈에서 구현될 수 있다. 대신에, 와일드카드는 지능형 라우터(92)나 ASIC(91)에 포함된 부합하는 기능의 소프트웨어 통제 하에서 프로세서(93)에 의해 네트워크에서 수행될 수 있다. 와일드카드는 열린 영역이나 변수 길이 영역을 포함하며, 그 예는 표 21에 제공된다.20 is a flow chart of a wildcard method 410. This method illustrates an example of applying a set of routing rules for a filter used to replace wildcards with a representation for subscription. The method 410 may be implemented in a software module, represented by the agent 128, for example for execution by the processor 134 of the user machine 122. Instead, wildcards may be performed in the network by the processor 93 under software control of the corresponding functions included in the intelligent router 92 or the ASIC 91. Wildcards include open or variable length fields, examples of which are provided in Table 21.

방법(410)에서 에이전트(128)나 다른 기기는 와일드카드를 가진 가입을 제공받는다(단계 412). 가입의 주제 길이는 콘텐트를 발행할 때 발행자(publisher)에 의해 지정될 수 있다. 그리고 예를 들어서 주제의 필드를 세고, 그것의 필드 카운트(길이)를 얻기 위해서, 영역 주제는 발행자 머신에서 미리 처리될 수 있다.In method 410, agent 128 or another device is provided with a subscription with a wildcard (step 412). The subject length of the subscription can be specified by the publisher when publishing the content. And, for example, to count the field of the subject and get its field count (length), the region subject can be preprocessed at the publisher machine.

에이전트(128)는 필터 연산자에서 필드의 수를 세고(단계 414) 필드 길이=N의 새 규칙(필터)을 초기화한다(단계 416). 에이전트(128)는 가입의 서브 필드를 검색하며, 필터 연산자 서브 필드 O[i]가 와일드카드인지를 결정한다(단계 420). 만약 필터 연산자 서브 필드가 와일드 카드가 아니면 에이전트(128)는 필드[i]=O[i]인 연결조항(conjunctive clause)을 규칙에 삽입한다(단계 422). 필터 연산자에 더 많은 서브 필드가 있는 경우 (단계 424). 에이전트(128)는 단계 418로 돌아가서 추가적인 서브 필드를 처리한다. 매개변수 i는 이 예에서 필드들을 나타내는 것으로서, "i"는 필드 번호를 나타내는 정수이다. Agent 128 counts the number of fields in the filter operator (step 414) and initializes a new rule (filter) with field length = N (step 416). Agent 128 retrieves the subfield of the subscription and determines whether the filter operator subfield O [i] is a wildcard (step 420). If the filter operator subfield is not a wildcard, the agent 128 inserts a conjunctive clause into the rule, field [i] = O [i] (step 422). If the filter operator has more subfields (step 424). Agent 128 returns to step 418 to process additional subfields. The parameter i represents the fields in this example, where "i" is an integer representing the field number.

서브 필드를 처리하고 나서, 에이전트(128)는 마지막 필터 연산자 서브 필드가 ">"인지 여부를 결정하고(단계 426), 만약 그렇다면, 길이 제한을 필드 길이>N-1로 변경한다(단계 428). 와일드 카드 절차는 어떤 형태의 부호도 사용할 수 있고, ">"는 단지 그 예일 뿐이다. 이 예에서 "a.>"는 a.b, a.c. a.d 등과, 모든 수준에서의 모든 하위 주제를 의미한다(예를 들어 a.b.x, a.c.x, a.b.x.y, 기타). 다른 부호는 와일드카드의 다른 구현에 사용될 수 있다.After processing the subfield, the agent 128 determines whether the last filter operator subfield is ">" (step 426), and if so, changes the length limit to field length> N-1 (step 428). . Wildcard procedures can use any form of sign, and ">" is just an example. In this example, "a.>" Means a.b, a.c. a.d and so on, and all subtopics at all levels (eg a.b.x, a.c.x, a.b.x.y, etc.). Other symbols may be used in other implementations of wildcards.

만일 필요하다면 에이전트(128)는 전달된 규칙을 지능형 라우터나 다른 네트워크상의 기기로 전달한다(단계 430). 따라서, 그 방법은 와일드 카드를 비와일드 규칙(와일드카드를 포함하지 않는 규칙을 의미함)로 변환하기 위해서 서브 필드들을 처리하기 위해 서브 필드들에 대해 반복된다. 와일드카드의 변환은 네트워크상의 어디에서나 일어날 수 있으며, 예를 들어 가입자의 머신이나 지능형 라우터에서도 일어날 수 있다. 따라서, 변환이 한 엔터티에서 발생하고, 변환된 규칙이 다른 엔터티로 전달될 수 있고, 이것은 동적으로 이루어질 수 있다.If necessary, agent 128 forwards the forwarded rule to an intelligent router or device on another network (step 430). Thus, the method is repeated for subfields to process subfields to convert wildcards to non-wild rules (meaning rules that do not include wildcards). The conversion of wildcards can happen anywhere on the network, for example on the subscriber's machine or intelligent router. Thus, a transformation occurs in one entity, and the transformed rule can be passed to another entity, which can be done dynamically.

표 23은 와일드카드를 처리하는 것에 대한 라우팅 규칙의 표본들에 대해서 예와 함께 요약한 것이다. 이런 라우팅 규칙은 예를 들어서 지능형 라우터나 다른 네트워크 엔터티에서 생성되어, 지능형 라우터로 전파될 수 있다. 부가하자면, 표 23의 라우팅 규칙은 설명에 도움이 되기 위한 목적이고 와일드카드를 변환하는 다른 라우팅 규칙도 가능하다.Table 23 summarizes examples with examples of routing rules for handling wildcards. Such routing rules can be generated, for example, by intelligent routers or other network entities and propagated to intelligent routers. In addition, the routing rules in Table 23 are for illustrative purposes only and other routing rules for converting wildcards are possible.

표 23Table 23

Figure 112005001061850-pct00017

Figure 112005001061850-pct00017

경보 서비스Alarm service

상기에 서술한 지능형 콘텐트 기반의 라우팅은 다른 장치에도 사용될 수 있으며, 그 중에 하나는 디지털 비디오 감시 시스템(DVSS)이 있다. 예컨대, 법 집행자 또는 보안 에이전시와 같은 사용자는 특정 위치에 있는 카메라로부터의 비디오 클립에 가입한다. 카메라는 디지털 비디오 클립을 캡쳐할 수 있으며, 네트워크 코어에서 가입에 따라 비디오 클립을 처리하고 컨텐츠 기반 라우팅을 구비한 인터넷과 같은 네트워크를 통해 이들 클립을 송신한다. 따라서, 사용자는 해당 비디오 클립을 수신하고, 이들의 필터링은 네트워크를 통해 분배된다. 비디오 클립뿐만 아니라, 임의의 다른 타입의 컨텐츠는 예컨대 보안 침범, 화재 및 사기 검거를 포함하는 임의의 타입의 경고에 제공되도록 분배될 수 있다.The intelligent content based routing described above can also be used for other devices, one of which is the Digital Video Surveillance System (DVSS). For example, a user, such as a law enforcement or security agency, subscribes to video clips from a camera at a particular location. The camera can capture digital video clips, process video clips upon subscription in the network core and send these clips over a network such as the Internet with content-based routing. Thus, the user receives the corresponding video clip and their filtering is distributed over the network. In addition to video clips, any other type of content may be distributed to provide for any type of alert including, for example, security breach, fire and fraud arrest.

다른 예로서, 특정 카메라는 연관된 움직임 센서를 포함할 수 있다. 움직임 검출시, 움직임 센서는 카메라를 트리거하여 동시에 촬영된 비디오 클립을, 비디오 클립을 가입자에게 라우팅하기 위해 컨텐츠 기반 라우팅을 이용하는 네트워크에 송신한다.As another example, a particular camera may include an associated motion sensor. Upon motion detection, the motion sensor triggers the camera to send video clips captured simultaneously to the network using content-based routing to route the video clips to subscribers.

따라서, 상술한 컨텐츠 기반 라우팅은 비디오 클립의 처리 및 라우팅시 네트워크 부담을 크기 감소시킬 수 있다. 예컨대, 모든 CCD(Charge Coupled Device)에 의해 생성된 비디오 신호는 DVR(Digital Video Recorder)에 의해 4개의 다른 목적지, 즉 DVR에 의해 관리되는 로컬 스토리지와, 네트워크에 부착된 글로벌 스토리지와, DVSS 시스템과, iDSS 관리 서버에 기록될 필요가 있다. 이런 대형 데이터 볼륨을 운반하는데 필요한 네트워크 대역폭을 고려하면, iDSS에 의해 관리되는 CCD 또는 DVR의 전체량은 소비자의 용량 요건을 만족하지 않는다. 결국, 필요한 대역폭은 예컨대 중간 또는 큰 소비자에 대한 기술을 이용하여 제한된다. 도 21은 각 DVR이 4개 또는 16개의 CCD를 관리하는 하나의 감시 시스템의 전체 아키텍쳐도를 나타낸다.Thus, the content-based routing described above can significantly reduce the network burden in processing and routing video clips. For example, video signals generated by all Charge Coupled Devices (CCDs) can be stored in four different destinations by a Digital Video Recorder (DVR), namely, local storage managed by a DVR, global storage attached to a network, and a DVSS system. This needs to be recorded on the iDSS management server. Considering the network bandwidth required to carry such large data volumes, the total amount of CCDs or DVRs managed by iDSS does not meet the capacity requirements of consumers. As a result, the required bandwidth is limited, for example, using techniques for medium or large consumers. FIG. 21 shows an overall architecture diagram of one surveillance system in which each DVR manages four or sixteen CCDs.

아키텍쳐 개요: Architecture Overview :

도 22는 도 21에 도시된 감시 시스템의 용량을 개선하기 위해, 상술한 기술에 주로 기반을 둔 2개의 인헨스먼트를 도시한다. 도 22에 도시된 바와 같이, 제1 인헨스먼트는 DVR 백본 트래픽을 감소시키는 방법에 집중되고, 제2 인헨스먼트는 데이터 전달 효율을 증가시키기 위해 상술한 기능과 같은 컨텐츠 기반 라우팅 기능을 제공하는 z-박스로 언급되는 디바이스를 이용한다.FIG. 22 illustrates two enhancements based primarily on the techniques described above, in order to improve the capacity of the surveillance system shown in FIG. 21. As shown in FIG. 22, the first enhancement focuses on a method of reducing DVR backbone traffic, and the second enhancement provides content-based routing functions such as those described above to increase data transfer efficiency. Use the device referred to as z-box.

DVR 백본에 대한 로컬 트래픽 감소: Local traffic reduction for the DVR backbone :

데이터 분배 스킴에서의 비효율은 심각한 스캘러빌리티(scalability) 문제를 야기한다. 즉, DVR에 의해 발생된 이미지 파일이 TCP 기반 프로토콜을 이용하여 다른 박스에 전달되기 때문에, 대역폭 소비는 LAN(Local Area Network)에 부착된 디바이스의 수에 따라 선형적으로 증가한다. iDSS의 일 양상에서, 동일한 스트리밍 비디오 데이터는 네트워킹된 스토리지(SAN 또는 NAS), iDSS 모니터, 및 원격 모니터링 소프트웨어인 각각의 DVSS에 전송될 필요가 있다.Inefficiencies in data distribution schemes cause serious scalability problems. That is, because the image file generated by the DVR is delivered to another box using a TCP based protocol, the bandwidth consumption increases linearly with the number of devices attached to the local area network (LAN). In one aspect of iDSS, the same streaming video data needs to be sent to each DVSS, which is networked storage (SAN or NAS), iDSS monitor, and remote monitoring software.

이런 문제를 해결하기 위한 한 접근법은 각 DVR이 LAN상에 단지 하나의 데이터 스트림을 발행하며, 다른 네트워크 부착 디바이스가 가입의 결과로서 동일한 데이터 스트림을 수신하게 하는 것이다. 따라서, DVR의 출력 레이트가 10 메가비트/초(Mbps)이라면, 동일 네트워크상에서 3개의 가입 디바이스를 가지려면 네트워크로부터 30Mbps가 아니라 10Mbps만을 요구해야 한다.One approach to solving this problem is for each DVR to issue only one data stream on the LAN and allow other network attached devices to receive the same data stream as a result of the subscription. Thus, if the DVR's output rate is 10 megabits per second (Mbps), to have three subscribing devices on the same network requires only 10Mbps, not 30Mbps, from the network.

이런 목적을 달성하기 위하여, 전술한 발행-가입 방식의 이벤트 통신 API는 DVR 박스 및 DVR 데이터를 이용하는 임의의 디바이스(예컨대, iDSS, 글로벌 스토리지)상에서 이용될 수 있다. API는 단순하지만 효율적이고, 이는 IP 멀티캐스팅 및 복구 프로토콜을 이용할 수 있다. API는 상술한 발행-가입 모델을 따를 수 있어, 다른 구현이 코드를 변경시킬 필요는 없으나, API를 제공하는 라이브러리의 풀버전과 단순히 재링크될 수 있게 한다.To achieve this goal, the above-described publish-subscribe event communication API can be used on any DVR box and any device using DVR data (eg, iDSS, global storage). The API is simple but efficient, which can take advantage of IP multicasting and recovery protocols. The API can follow the publish-subscribe model described above, so that other implementations do not need to change the code, but simply relink with the full version of the library providing the API.

DVSS에 대한 프락시: Proxy for DVSS :

각각의 DVSS는 스트리밍 비디오 데이터를 수신하기 위하여 DVR 박스와의 일 접속(TCP-기반)을 행할 수 있다. 스캘러빌리티는 전술한 바와 같은 동일한 이슈를 제공한다.Each DVSS can make one connection (TCP-based) with the DVR box to receive streaming video data. Scalability presents the same issue as described above.

도 22를 참조하면, 이런 접근법은 예컨대 2 스테이지로서 기술될 수 있다. 제1 스테이지, LAN측의 스테이지 1에서, 프락시 서버(예컨대, z-박스 1)는 모든 DVSS 아웃고잉 데이터(즉, DVR로부터 DVSS로 나가는 데이터)를 조작하는데 제공될 수 있다. 이런 프락시 서버는 LAN에 대한 모든 DVR 데이터에 가입하고, 이 데이터를 외부 네트워크(예컨대, 인터넷)상에 발행한다. DVSS는 이런 데이터에 가입한다. 따라서, 프락시 서버, z-박스 1은 DVR로부터 데이터를 수집하는 가입자 에이전트(예컨대, 에이전트(128))와, 전술한 발행-가입 네트워크와 같은 발행-가입 네트워크를 통해 이런 데이터를 발행하는 발행자 에이전트(예컨대, 에이전트(36))를 제공한다.Referring to FIG. 22, this approach may be described as two stages, for example. In the first stage, Stage 1 on the LAN side, a proxy server (eg, z-box 1) may be provided to manipulate all DVSS outgoing data (ie, data going from the DVR to DVSS). This proxy server subscribes to all DVR data for the LAN and publishes this data on an external network (eg, the Internet). DVSS subscribes to this data. Thus, the proxy server, z-box 1, is a subscriber agent (e.g., agent 128) that collects data from the DVR, and a publisher agent that publishes such data through a publish-subscribe network, such as the publish-subscribe network described above. For example, agent 36 is provided.

비록 스테이지 1에서 트래픽이 LAN측에서 크게 감소될 수 있을지라도, 트래픽은 전형적인 비대칭 디지털 가입자 라인(ADSL)이 단지 64 킬로비트/초(kbps) 업링크 속도를 가질 때, 임의의 국가에서 특히 아웃고잉 링크를 계속해서 잼(jam)한다.Although traffic at stage 1 can be greatly reduced on the LAN side, the traffic is particularly outgoing in any country, when a typical asymmetric digital subscriber line (ADSL) has only 64 kilobits per second (kbps) uplink rate. Continue to jam the link.

계속해서 도 22를 참조하면, 스테이지 2는 바람직하게 서비스 제공자의 머신 룸에서의 접속을 리스 아니면 획득하고, z-박스 2와 같은 제2 z-박스 디바이스를 로케이팅하는 것과 관련된다. 예컨대, z-박스 디바이스는 Hi-Net 백본상에 둘 수 있다. 이런 디바이스로부터 z-박스 2로의 단일 접속(터널)은 소비자 설비(premise)에서 설정될 수 있다.With continued reference to FIG. 22, stage 2 preferably involves leasing or acquiring a connection in the service provider's machine room and locating a second z-box device, such as z-box 2. For example, a z-box device can be placed on a Hi-Net backbone. A single connection (tunnel) from such a device to z-box 2 can be established at the consumer 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)는 바람직하게 전술한 바와 같이 이런 발행-가입 네트워크를 통해 발행 및 가입하기 위한 모듈을 포함한다.In this case, z box 2 at the consumer facility acts as a subscriber agent (eg, agent 128). Z-box 2 also acts as a routing daemon (eg, routing daemon 216). As a subscriber agent, z-box 2 (eg, in the Hi-Net machine room) preferably subscribes to the DVR publishing through z-box 1. Between z-box 1 and z-box 2 there is a publish-subscribe network as described above. Accordingly, z-box 1 publishes the video from the DVR and subscribes to the video required by the DVSS. In this way, the data delivery efficiency of the alert service is increased using the event notification system described herein. The z-boxes (eg z-box 1 and z-box 2) preferably comprise modules for publishing and subscribing via such a publish-subscribe network as described above.

디지털 컨텐츠 전달Digital content delivery

전술한 지능형 컨텐츠-기반 라우팅은 비디오, 음악 및 소프트웨어 업데이트를 가입을 통해 라우팅하는 것을 포함하는 많은 수의 구현에서 사용될 수 있다. 예컨대, 사용자는 안티-바이러스 소프트웨어와 같은 소프트웨어 업데이트를 가입할 수 있으며, 사용자에게 자동적으로 라우팅되는 업데이트를 가진다. 다른 예로서, 사용자는 특정 비디오 및 음악 컨텐츠를 가입할 수 있으며, 또한 사용자에 자동적으로 라우팅된 그런 가입 컨텐츠를 가진다. 비디오 및 음악은 예컨대 디지털 컨텐츠를 스트리밍할 때 수신될 수 있다. 또한, 네트워크 코어에서 분배 처리는 실질적으로 소프트웨어, 비디오 및 음악 컨텐츠를 제공하는 서버에 대한 처리 부담을 경감시킨다. 따라서, 네트워크 대역폭은 다른 이점들중에서도 컨텐츠를 제공하기 위해 동일한 네트워크 하부구조를 이용하여 효율적으로 증가될 수 있다.The intelligent content-based routing described above can be used in a large number of implementations, including routing video, music, and software updates through subscriptions. For example, a user can subscribe to software updates, such as anti-virus software, and have updates that are automatically routed to the user. As another example, a user may subscribe to specific video and music content and also have such subscription content automatically routed to the user. Video and music can be received, for example, when streaming digital content. In addition, distribution processing at the network core substantially reduces the processing burden on servers providing software, video and music content. Thus, network bandwidth can be efficiently increased using the same network infrastructure to provide content, among other benefits.

이런 라우팅을 구현하는 한 특정 아키텍쳐는 도 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 캐시 서버에서의 라우팅 박스와, 전술한 가입 메카니즘을 부가하는 것이다.One particular architecture that implements such routing is shown in FIG. Note that this architecture preferably assumes two levels of cache servers C1 and C2 that reside in the co-location office of the network service provider. However, this can only be achieved when the C1 cache server is available. The terms C1 and C2 cache servers refer to servers providing distributed network caching as described above (see FIGS. 14-15 and related description). The architecture is deployed in two states, for example. A first state that assumes no C2 cache server exists is to reduce server load and the time required to transfer large media files using a fast file transfer mechanism between central distributor 450 and C1 cache server. This fast file transfer mechanism is preferably achieved by adding a routing box (470 in FIG. 23) between the central distributor 450 and the Cl cache server. The second state is to add a routing box at the C2 cache server and the aforementioned subscription mechanism between the user (eg, user machine 460) and the C2 cache server.

라우팅 박스를 이용하는 이점: Advantages of using a routing box :

라우팅 박스(470)는 바람직하게 전술한 컨텐츠 기반 라우팅을 구현하기 위한 모듈(예컨대, 전술한 지능형 라우터(92))을 포함한다. 전술한 컨텐츠 기반 라우팅을 구현하는 라우팅 박스(470)를 이용하는 데에는 2개의 주요 이점이 있다. 이들 라우팅 박스(470)를 이용하는 급속 라우팅 및 파일 전송 솔루션은 파일 전송을 FTP 또는 RCP와 같은 종래의 파일 전송 프로토콜보다 5배까지 가속한다. WAN을 통한 효율적인 멀티캐스트가 또한 달성될 수 있다. 데이터가 중앙 로케이션에서 수신기의 그룹으로 전송될 때, 라우팅 솔루션은 네트워크 멀티캐스트 토폴로지를 이용하고 WAN을 통해 멀티캐스트 터널을 구성함에 의해 컨텐츠 전달을 가속하여 서버 로드 및 네트워크 대역폭 요건을 감소시킨다.The routing box 470 preferably includes a module for implementing the content-based routing described above (eg, the intelligent router 92 described above). There are two main advantages to using the routing box 470 that implements the content-based routing described above. Rapid routing and file transfer solutions utilizing these routing boxes 470 accelerate file transfers up to five times over conventional file transfer protocols such as FTP or RCP. Efficient multicast over a WAN can also be achieved. When data is sent from a central location to a group of receivers, the routing solution uses network multicast topologies and accelerates content delivery by configuring multicast tunnels over the WAN, reducing server load and network bandwidth requirements.

아키텍쳐Architecture

미디어 컨텐츠는 중앙 분배기로부터 C1 캐시 서버로 전달된다. C1 캐시는 모든 컨텐츠 파일을 저장한다. 각각의 C1 캐시 서버는 예컨대, 모든 컨텐츠를 저장하기 위한 테라 바이트의 디스크 공간을 요구한다. 사용자(예컨대, 가입자 머신(122)과 같은 사용자 머신(460)을 이용하는)는 컨텐츠의 일부만을 저장하는 C2 캐시 서버로부터 컨텐츠를 요구한다. C2 캐시 서버는 예컨대 수백의 기가 바이트의 디스크 공간을 요구한다.Media content is delivered from the central distributor to the Cl cache server. The C1 cache stores all content files. Each C1 cache server, for example, requires terabytes of disk space to store all content. A user (eg, using a user machine 460, such as subscriber machine 122) requests content from a C2 cache server that stores only a portion of the content. C2 cache servers, for example, require hundreds of gigabytes of disk space.

사용자와 C2 캐시간의 파일 전송: File transfer between user and C2 cache :

사용자(460)가 가입을 발행함에 의해 미디어 파일을 요구할 때, 이 요구는 C2 캐시 서버들중 하나에 의해 처리된다. 요구된 미디어 파일이 이미 C2 서버에 캐시되어 있다면, 파일은 바로 전달된다. 그렇지 않다면, 가입은 C1 캐시 서버로 전송되고, C1 캐시 서버로부터 C2 캐시 서버로 전송된다.When user 460 requests a media file by issuing a subscription, this request is handled by one of the C2 cache servers. If the requested media file is already cached on the C2 server, the file is delivered immediately. If not, the subscription is sent to the C1 cache server and sent from the C1 cache server to the C2 cache server.

C1 캐시에서 C2 캐시로의 미디어 데이터 프리캐싱: Precaching media data from C1 cache to C2 cache :

사용자 가입 또는 가입의 패턴에 기초하여, 미디어 파일은 C1 캐시 서버로부터 C2 캐시 서버로 프리캐싱된다. 예컨대, C2 캐시 서버와 연결되는 사용자(460)가 주로 팝송에 관심이 있다면, C1 캐시 서버는 심지어 C2 캐시 서버상의 임의의 사용자(460)가 노래를 요구하기 전에 새로운 팝송을 C2 캐시 서버에 푸시할 수 있다.Based on the user subscription or the pattern of subscription, the media file is precached from the C1 cache server to the C2 cache server. For example, if the user 460 connecting to the C2 cache server is primarily interested in pop songs, the C1 cache server may push new pop songs to the C2 cache server even before any user 460 on the C2 cache server requests a song. Can be.

구현 상태: Implementation state :

제1 상태는 예컨대 분배기(450)와 C1 캐시 서버간의 컨텐츠 라우팅을 갖는 급속 파일 전송 메카니즘을 설치하는 것과 관련된다. C2 캐시 서버는 필요치 않 다. 이 경우, 모든 사용자(460)는 C1 캐시에 직접 연결된다. C1 캐시 서버는 분배기(450)로부터 규칙적으로 새로운 미디어 파일을 수신한다. 상태-1 아키텍쳐는 도 24에 도시된다.The first state involves, for example, installing a fast file transfer mechanism with content routing between distributor 450 and the C1 cache server. No C2 cache server is required. In this case, all users 460 are directly connected to the C1 cache. The C1 cache server regularly receives new media files from the distributor 450. State-1 architecture is shown in FIG.

도 24에서 분배기(450)가 전술한 지능형 컨텐츠 기반 라우팅 기술에 의해 강화된 라우팅 박스(470)에 새로운 미디어 파일을 단지 한번 전송한다. 따라서, 분배기(450)의 로드는 감소된다. 라우팅 박스(470)는 급속 파일 전송 메카니즘을 이용하여 파일을 각각의 C1 캐시 서버에 전송한다. 이 경우, 부가의 라우팅 박스가 수신기(460) 단에 요구되지 않는다. 대안적으로, 다른 타입의 서버는 C1 캐시 서버에 사용될 수 있다.In FIG. 24, the distributor 450 sends the new media file only once to the routing box 470 enhanced by the intelligent content-based routing technique described above. Thus, the load on dispenser 450 is reduced. The routing box 470 transfers the file to each C1 cache server using a fast file transfer mechanism. In this case, no additional routing box is required at the receiver 460 end. Alternatively, other types of servers may be used for the C1 cache server.

도 25를 참조하면, 상태 2를 구현하는 일 실시예의 아키텍쳐가 도시된다. 본 예에서 상태 2는 바람직하게 데이터를 라우팅 및 전송하기 위한 커널(kernel) 구현 라우팅 박스(470)를 사용한다. 커널층 솔루션은 버퍼 사본 및 컨텍스트 스위칭 시간을 덜 요구하기 때문에 파일 전송시 오버헤드를 더욱 감소시킨다. 또한, 상태 2 솔루션은 C2 캐시 서버를 도 25에 도시된 바와 같이 아키텍쳐에 부가한다. 이와 같이, 도시된대로, 라우팅 박스(470)는 바람직하게 서비스 제공자 네트워크에서 공동 로케이션을 이용하는 C2 사이트에 부가된다. 이는 잠재적으로 수백배의 대역폭 감소로 대역폭 요건을 크게 감소시킨다.Referring to FIG. 25, an architecture of one embodiment for implementing state 2 is shown. State 2 in this example preferably uses a kernel implementation routing box 470 for routing and transmitting data. Kernel layer solutions further reduce the overhead of file transfers because they require less buffer copying and context switching time. The state 2 solution also adds a C2 cache server to the architecture as shown in FIG. As such, as shown, routing box 470 is preferably added to the C2 site using a common location in the service provider network. This potentially reduces bandwidth requirements significantly with hundreds of times the bandwidth reduction.

도 25에 도시된 바와 같이, C1 캐시 서버와 C2 캐시 서버간에 전달된 파일은 C1 캐시 서버와 연관된 라우팅 박스(470)와 C2 캐시 서버와 연관된 라우팅 박스(470)와 연관된 라우팅 박스들을 통해 전달된다. 이런 방식으로, C1과 C2 캐시 서 버들간의 급속 라우팅 및 파일 전송 솔루션은 이들 라우팅 박스들(470)을 이용하여 달성된다.As shown in FIG. 25, a file transferred between a C1 cache server and a C2 cache server is passed through routing boxes associated with a routing box 470 associated with a C1 cache server and a routing box 470 associated with a C2 cache server. In this way, a fast routing and file transfer solution between C1 and C2 cache servers is achieved using these routing boxes 470.

서비스 관리의 품질Quality of Service Management

전술한 지능형 컨텐츠 기반 라우팅은 예컨대 특정 전달 보증(particular delivery guarantees)을 갖는 컨텐츠 라우팅에 사용될 수 있다. 예컨대, SLA(Service Level Agreement)에 기초하여, ISP 또는 컨텐츠 제공자는 QoS(Quality of Service)를 보증하기 위한 대역폭을 보유할 수 있다. 이는 전술한 컨텐츠 기반 지능형 라우팅에 의해 효율적으로 달성될 수 있다.The aforementioned intelligent content based routing may be used for content routing with specific delivery guarantees, for example. For example, based on a service level agreement (SLA), an ISP or content provider may have a bandwidth to guarantee quality of service (QoS). This can be efficiently achieved by the content-based intelligent routing described above.

아키텍쳐: Architecture :

컨텐츠 전달에서 QoS를 보증하기 위한 적어도 2개의 가능한 구성이 있다. 제1 구성은 많은 수의 링크를 하나 이상의 전화 회사(TELCO) 네트워크에 연결한다. 제2 구성은 TELCO 네트워크에 대한 단지 하나의 링크를 사용한다. 도 26에 도시된 일 예에서는 라우팅 박스(R-박스)의 2 층이 있다. R-박스 1은 데이터 패킷의 컨텐츠에 기초하여 R-박스 2 및 R-박스 3에 패킷을 라우팅한다. R-박스 2 및 R-박스 3은 데이터 패킷을 다른 네트워크 링크(예컨대, L1-L4)로 라우팅하며, 각각의 링크는 TELCO 네트워크로 연결된다. 프리미엄 소비자용 대역폭을 보유하기 위해, 최상위 SLA 소비자에 대해 발생된 데이터 패킷은 최상위 대역폭(최상위 우선순위)과의 링크로 라우팅되어, 이들 소비자에 대한 특정 QoS를 보장한다.There are at least two possible configurations for guaranteeing QoS in content delivery. The first configuration connects a large number of links to one or more telephone company (TELCO) networks. The second configuration uses only one link to the TELCO network. In the example shown in FIG. 26, there are two layers of routing boxes (R-boxes). R-box 1 routes packets to R-box 2 and R-box 3 based on the contents of the data packets. R-Box 2 and R-Box 3 route data packets to other network links (eg, L1-L4), each linking to a TELCO network. To retain the bandwidth for premium consumers, data packets generated for the top SLA consumers are routed to the link with the top bandwidth (top priority) to ensure specific QoS for those consumers.

도 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 관리를 위해 각 링크용 대역폭을 동적으로 할당할 수 있다.As an example shown in FIG. 27, R-box 1 routes data packets to R-box 2 and R-box 3. R-Box 2 and R-Box 3 connect to R-Box 4, which routes data packets to other communication links. R-Box 4 picks up data packets from four links based on the QoS level of each link. R-box 4 then sends a data packet to the Internet ISP via a network link (eg, L5). By implementing various algorithms for picking up data on each link, the system can dynamically allocate bandwidth for each link for better QoS management than multiple link configuration.

기술: Technology :

QoS 보증은 전술한 지능형의 분배 컨텐츠 기반 라우팅 기술을 레버리지(leverage)할 수 있다. 라우팅될 각 패킷은 컨텐츠 기반 라우팅을 위해 태그된다. 솔루션은 다른 가능한 이점들 중에서도, 경제적으로 적당한 ASP/컨텐츠 제공자에 대한 QoS의 개발을 행한다.QoS guarantees can leverage the intelligent, distributed content-based routing techniques described above. Each packet to be routed is tagged for content based routing. The solution does, among other possible advantages, develop QoS for economically affordable ASP / content providers.

이점: Advantages :

솔루션은 인터넷 서비스 제공자(예컨대, IDCs) 또는 컨텐츠 제공자(예컨대, MOD(media on demand))에 제공될 수 있어, 서로 다른 소비자에 대하여 그들의 SLA에 기초하여 대역폭을 보유한다.Solutions can be provided to Internet service providers (eg IDCs) or content providers (eg media on demand) to retain bandwidth based on their SLAs for different consumers.

실시간 경고: Real time alert :

경고는 서로 다른 우선순위를 가질 수 있다. 예컨대, 보안 및 화재 경고는 최상위 우선순위로 주어질 수 있으며, 뉴스 경고는 하위 우선순위로 주어진다. QoS 라우팅이 없으면, 최상위 우선순위 경고는 ASP의 네트워크 대역폭이 하위 우선순위 경고 및 통신에 의해 점유될 수 있기 때문에, 실시간으로 그 가입자에 도달할 수 없게 된다. 이런 솔루션은 이런 문제가 일어나는 것을 방지한다. 또한, 경고는 SLA에 기초를 두고 각 소비자에 전송될 수 있다. 프리미엄 소비자는 더 많이 비용을 지불하며, 이들에 대해 더 많은 대역폭이 할당된다.Alerts can have different priorities. For example, security and fire alerts may be given a top priority and news alerts may be given a lower priority. Without QoS routing, the top priority alerts will not be able to reach their subscribers in real time because the ASP's network bandwidth may be occupied by low priority alerts and communications. This solution prevents this from happening. In addition, alerts may be sent to each consumer based on the SLA. Premium consumers pay more, and more bandwidth is allocated to them.

실시간 데이터 전달: Real time data delivery :

VOD(voice on demand), MOD 또는 VoIP(voice over IP)와 같은 몇몇 애플리케이션에서, 대역폭 이용가능성은 애플리케이션의 품질에 영향을 미친다. 이런 솔루션은 전술한 바와 같이 패킷의 컨텐츠를 조사함에 의해 메시지 타입에 기초하여 데이터 패킷을 라우팅할 수 있다. 대역폭이 민감한 애플리케이션에서, 이들 데이터 패킷은 상위 우선순위 링크로 라우팅될 수 있다. 데이터 패킷은 메시지 타입뿐만 아니라, 그 SLA 레벨에 기초하여 여러 가입자에 라우팅될 수 있다. 상위 SLA 소비자용 패킷은 이런 솔루션을 이용하여 상위 우선순위 링크에 라우팅될 수 있다.In some applications, such as voice on demand (VOD), MOD, or voice over IP (VoIP), bandwidth availability affects the quality of the application. This solution can route data packets based on the message type by examining the contents of the packet as described above. In bandwidth sensitive applications, these data packets can be routed to higher priority links. Data packets can be routed to multiple subscribers based on their SLA level as well as their message type. Higher SLA consumer packets can be routed to higher priority links using this solution.

소프트웨어 또는 안티 바이러스 업데이트는 이런 솔루션을 활용할 수 있다. 예컨대, 안티 바이러스 파일은 최상위 우선순위 링크로 라우팅되어 안티 바이러스 업데이트를 보장하고, 오디오 드라이버 파일은 하위 우선순위 링크로 라우팅된다.Software or anti-virus updates can take advantage of this solution. For example, antivirus files are routed to the top priority link to ensure antivirus updates, and audio driver files are routed to the lower priority link.

컨텐츠 기반 필터링: Content based filtering :

공동 로케이션 서비스를 이용하고 R-박스를 TELCO 네트워크내에 두면, 시스템은 도 28에 도시된 바와 같이 ISP 외부에서 필터링 및 동적 캐싱을 수행할 수 있다. TELCO내의 R-박스는 전술한 컨텐츠 필터링 기술에 기초하여 데이터를 필터링하는데 사용될 수 있어 IDC/ISP 네트워크로 가는 트래픽을 감소시킨다. 이는 DOS 공격 또는 비인가 데이터 액세스와 같은 해커 공격을 차단하는데 사용될 수 있다. 요구되는 컨텐츠를 조사할 수 있음으로, R-박스는 정적 및 동적 웹 데이터에 대한 캐시 박스일 수 있다. 이런 솔루션의 이점은 예컨대 보안, TELCO와 ISP간의 네트워크 대역폭의 절감, 및 ISP 서버의 로드의 절감을 포함한다.Using the co-location service and placing the R-box in the TELCO network, the system can perform filtering and dynamic caching outside the ISP as shown in FIG. R-boxes in TELCO can be used to filter data based on the content filtering techniques described above to reduce traffic to IDC / ISP networks. It can be used to block hacker attacks such as DOS attacks or unauthorized data access. By examining the required content, the R-box can be a cache box for static and dynamic web data. The benefits of such a solution include, for example, security, reduced network bandwidth between TELCO and ISP, and reduced load on the ISP server.

선택적인 멀티캐스팅의 캐싱Caching of optional multicasting

메시지 영속성(message persistence)은 메시지를 저장하고 차후에 이를 검색하는 능력이다. 많은 수의 특정 애플리케이션, 예컨대, 이메일은 일반적으로 네트워크를 통해 가는 메시지에 대한 메시지 영속성을 크게 요구한다. 이상적인 조건에서, 네트워크의 고장이 없다면, 항상-연결된 가입자는 이들 특정 애플리케이션에 대해 요구되는 임의의 영속성을 초과해서 요구해서는 안된다. 그러나, 실제로 메시지는, 여러 이유, 즉 (1) 네트워크내 또는 사용자측에서 일어나는 고장 또는 버퍼 오버플로우, 또는 (2) 사용자가 네트워크로부터 암시적인 단절을 행하고 일정 시간 주기 후에 다시 연결하는 등의 이유에 기인하여, 네트워크를 통해 이동하는 동안 "상실"될 수 있다.Message persistence is the ability to store a message and later retrieve it. Many specific applications, such as e-mail, generally require great message persistence for messages going through the network. Under ideal conditions, unless there is a network failure, always-connected subscribers should not exceed any persistence required for these particular applications. In practice, however, a message may be due to a number of reasons, such as (1) a failure or buffer overflow occurring in the network or on the user's side, or (2) the user makes an implicit disconnect from the network and reconnects after a period of time. Thus, it may be "lost" while traveling over the network.

전술한 이벤트 통지 시스템의 영속성 모델은 2 레벨로 분할된다: 단기 영속성 및 장기 영속성. 단기 영속성은 네트워크 혼잡 또는 단기 링크 실패에 기인한 패킷 상실로부터 복구하도록 설계된다. 장기 영속성은 예컨대, 사용자 접속의 상실 또는 ISP 네트워크 고장, 사용자 머신의 고장, 장기 네트워크 고장, 및/또는 다른 고장을 포함하는 다른 고장으로부터 복구하도록 설계된다. 이들 2개의 스킴의 예는 이하 후술된다. The persistence model of the event notification system described above is divided into two levels: short-term and long-lived. Short term persistence is designed to recover from packet loss due to network congestion or short link failure. Long-term persistence is designed to recover from other failures, including, for example, loss of user connections or ISP network failures, user machine failures, long-term network failures, and / or other failures. Examples of these two schemes are described below.

단기 지속성: 데이터 재송신 및 플로우 제어Short-term persistence: data retransmission and flow control

데이터 네트워크에서, 데이터 손실의 원인은 단순하게 링크 장애(failure) 및 버퍼 오버플로우로서 분류될 수 있다. 이벤트 통지 시스템에 대한 신뢰성있는 채널을 제공하기 위하여, 이러한 쟁점이 다루어질 필요가 있다. 링크 장애에 대하여, 순방향 오류 정정(FEC) 스킴으로 링크 장애에 의해 야기되는 몇몇 오류를 정정하도록 하는 것이 가능하다. 그러나, 오류가 심각해서 FEC 스킴이 이를 정정할 수 없는 경우에 패킷을 복구할 스킴을 제공하는 것이 여전히 필요하다. 버퍼 오버플로우에 대하여, 버퍼 플로우가 발생하는 것을 방지하는 것이 필요하다. 이러한 문제를 피하기 위하여 데이터 네트워크에서 플로우 제어 스킴이 전형적으로 사용된다.In a data network, the cause of data loss can simply be classified as link failure and buffer overflow. In order to provide a reliable channel for the event notification system, this issue needs to be addressed. For link failures, it is possible to have some forward error correction (FEC) schemes to correct some errors caused by link failures. However, it is still necessary to provide a scheme to recover packets in case the error is so severe that the FEC scheme cannot correct it. For buffer overflow, it is necessary to prevent the buffer flow from occurring. Flow control schemes are typically used in data networks to avoid this problem.

단기 지속성 스킴에서, 송신 제어 프로토콜(TCP) 터널은 바람직하게 홉-대-홉으로(hop-by-hop) 이벤트 라우터(예를 들어, 지능형 라우터(12))를 연결하는데 사용된다. 신뢰성있는 전송 프로토콜(예를 들어, RMTP)을 이용하는 대신에 신뢰성있는 층-2 터널에 의존하는 이유는 다양하다. 이벤트 통지 시스템의 단기 지속성 스킴에서, 메시지가 필터 규칙을 만족하지 않으면, 메시지는 라우터에 의해 바람직하게 필터링될 수 있다. 결과적으로, 수신 라우터는 소스 시퀀스 번호와 같은 스킴을 이용하여 일반적으로 패킷의 손실을 검출할 수 없다. 유사하게, 모든 수신 라우터가 자신이 수신하는 각 패킷마다 확인하는 것은 확인(acknowledgement)의 과부하(즉, 확인-급증(ACK-explosion))를 야기할 것이기 때문에 바람직하지 못하다. 게다가, 버퍼 오버플로우를 피하기 위하여, 라우터의 버퍼 공간이 다하기 전에 라우터가 자신에게 메시지를 전달하는 인접 라우터에게 속도를 늦추도록 요청할 수 있도록, 단기 지속성 모델은 플로우 제어 스킴을 구현한다. 이들 스킴은 TCP에 의해 커버된다.In a short term persistence scheme, a Transmission Control Protocol (TCP) tunnel is preferably used to connect event routers (eg, intelligent routers 12) hop-by-hop. The reasons for relying on reliable layer-2 tunnels instead of using reliable transport protocols (eg RMTP) vary. In the short term persistence scheme of the event notification system, if the message does not meet the filter rules, the message may be preferably filtered by the router. As a result, the receiving router cannot generally detect the loss of a packet using a scheme such as the source sequence number. Similarly, it is not desirable for every receiving router to acknowledge each packet it receives because it would cause an overload of acknowledgment (ie, ACK-explosion). In addition, to avoid buffer overflows, the short-term persistence model implements a flow control scheme so that routers can request neighboring routers to deliver messages to them before they run out of buffer space. These schemes are covered by TCP.

TCP 송신 정책: 단기 지속성 스킴에 사용되는 TCP에서, 송신 윈도우는 바람직하게 재송신된 데이터를 추적하도록 데이터 송신기에 대하여 국부적으로 바람직하게 사용된다. 송신 윈도우의 사용의 목적은 2가지이다. 우선, 송신 윈도우는 데이터가 수신기에 의해 올바르게 수신된 것을 송신기가 명확하게 알도록 보장하고, 둘째로, 송신 윈도우가 채널 용량을 더 낫게 사용하도록 한다. TCP에서, 송신기가 송신한 각각의 바이트는 암시적으로 또는 명확하게(implicitly or explicitly) 확인될 것이 요구된다. 송신 윈도우는 송신기가 송신되고 확인된 데이터를 추적하도록 돕는다. 또한 송신기가 정지하고 이전 패킷이 확인되기를 기다리지 않고서 송신기가 송신 윈도우 내에서 데이터를 송신하도록 하므로, 송신 윈도우는 채널 활용을 향상시킨다. 일단 이전 데이터가 확인되면, 윈도우가 자동적으로 진척된다. TCP Transmission Policy : In TCP, which is used for short term persistence schemes, the transmission window is preferably used locally for the data transmitter to track the retransmitted data. The purpose of the transmission window is twofold. First, the transmission window ensures that the transmitter clearly knows that the data has been correctly received by the receiver, and secondly, allows the transmission window to better use the channel capacity. In TCP, each byte sent by the transmitter is required to be identified implicitly or explicitly. The transmission window helps the transmitter keep track of the transmitted and confirmed data. The transmission window also improves channel utilization since it allows the transmitter to transmit data within the transmission window without waiting for the transmitter to stop and acknowledge previous packets. Once the previous data has been verified, the window automatically advances.

또한 수신기 윈도우는 TCP에서 관리된다. 수신기 윈도우는 바람직하게 데이터 수신기단에서 이용가능한 버퍼 공간을 나타내는데 사용된다. 그 이용가능한 버퍼 공간값은 송신기에 송신되어 어떻게 수신기측에서 버퍼의 오버플로우를 피하는지를 송신기가 알게 된다.Receiver windows are also managed in TCP. The receiver window is preferably used to indicate the buffer space available at the data receiver end. The available buffer space value is transmitted to the transmitter so that the transmitter knows how to avoid overflow of the buffer at the receiver side.

TCP 정체 제어: TCP는 단-대-단(end-to-end) 전송 프로토콜로서 설계되었기 때문에, 단기 지속성 스킴에서 이용되는 TCP는 발행-가입(publish-subscribe) 네트워크 내측의 버퍼 오버플로우도 해결한다. 이를 해결하기 위하여, 단기 지속성 모델에 이용되는 TCP는, 바람직하게 제3 윈도우, 즉, 정체 윈도우를 사용한다. 정체 윈도우(congestion window)는 송신기가 경로를 따른 라우터들 상의 최대 버퍼 공간을 추정하는데 사용된다. 즉, 송신기가 패킷의 손실을 검출하는 경우에는 정체 윈도우 크기는 감소되고, 반대의 경우에는 증가된다. TCP congestion control : Because TCP is designed as an end-to-end transport protocol, TCP used in short-term persistence schemes also resolves buffer overflows inside publish-subscribe networks. . To solve this, TCP used in the short term persistence model preferably uses a third window, i.e. a congestion window. The congestion window is used by the transmitter to estimate the maximum buffer space on routers along the path. In other words, the congestion window size is reduced when the transmitter detects a packet loss and vice versa.

장기 지속성: 지속 채널에 대한 캐시Long-term persistence: cache for persistent channels

채널(예를 들어, 상술됨)은 지속적이거나 또는 실시간일 수 있다. 실시간 채널은 일반적으로 실시간에만 유용하고 어떤 애플리케이션-특정 지속성 요건을 갖지 않는 데이터를 송신한다. 지속 채널은 지속 시간 프레임 T 동안 네트워크를 통해 가로지르는 데이터를 저장한다. 다시 말해, 지속 채널 동안 지속성은 시간 프레임 T 동안 보장된다. 데이터의 이 지속성은 다음을 통해 달성된다. 예를 들어, 채널의 지속 기간 동안 각 에지 노드에서 데이터의 캐시, 장애 조건하에서 사용자에게 투과성의 캐시로부터 데이터의 검색, 사용자가 캐시로부터 데이터를 명시적으로 검색하도록 함, 라우터 장애에 대하여 보호하고 라우터간의 신뢰성있는 터널을 설정함으로써 네트워크를 통한 데이터의 플로우를 지속적이게 함, 및 복제를 통해 장애에 대한 채널 구성요소를 보호함이다.The channel (eg, described above) can be persistent or real time. Real-time channels generally transmit data that is useful only in real time and does not have any application-specific persistence requirements. The persistent channel stores data traversing over the network during the duration frame T. In other words, the persistence during the sustain channel is guaranteed during the time frame T. This persistence of data is achieved through: For example, the cache of data at each edge node for the duration of the channel, the retrieval of data from the cache transparent to the user under fault conditions, the user explicitly retrieving the data from the cache, protects against router failures By establishing a reliable tunnel between the networks, the flow of data through the network is continued, and the channel components are protected against failures through replication.

그러므로, 이하에 설명될 바와 같이, 장기 지속성 스킴은 바람직하게 지속 채널에 등록된 가입자가 충돌하고 지속 채널에 대해 시간 프레임 T 내에 다시 되돌아올 때, 가입자가 최종 "X" 시간 프레임 (X<T) 동안 네트워크에서 캐시된 구 데이터를 검색하는 것을 가능하게 한다.Therefore, as will be described below, the long-term persistence scheme is preferably used when the subscriber registered with the persistent channel collides and returns back within the time frame T for the persistent channel, where the subscriber has a final " X " time frame (X < T). While retrieving cached old data from the network.

장기 지속성 스킴에서, 가입자 애플리케이션(예를 들어, 애플리케이션(126))은 바람직하게 관련 가입자 에이전트(예를 들어, 에이전트(128))로부터 데이터(예를 들어, 메지시)를 명확하게 접속(pull)할 수 있다. 상술된 바와 같이, 에이전트는 프락시를 이용하거나 프락시로 구현될 수 있다. 에이전트 또는 프락시가 네트워크 장애로부터 복구된 후에, 에이전트는 바람직하게 에지 라우터로부터 단절된 기간동안 캐시로부터 데이터를 투과성으로 검색한다. 또한, 가입자는 장기 지속성 스킴에서 최종 T 타임프레임까지의 데이터만을 액세스할 수 있도록 허용되는 것이 바람직하다. 이를 위해 에이전트(또는 프락시)가 접속되는 에지 라우터에 관한 시간이 결정되는 것이 바람직하다. 바람직하기로는 검색된 캐시 데이터는 대역외 송출되며 실시간을 보증할 필요는 없다. 장기 지속성 스킴의 실시예는 에지 라우터(예컨대 에지 라우터(16))와의 접속이 중단된 후 접속이 복구(crashes and comes back up again)된 또는 에지 라우터와의 접속을 잃은 기존의 가입자를 대상으로 한다. 신규 가입자는 캐시된 정보를 획득하지 못할 수도 있다.In a long term persistence scheme, the subscriber application (eg, application 126) preferably explicitly pulls data (eg, a message) from the relevant subscriber agent (eg, agent 128). can do. As mentioned above, an agent may use a proxy or be implemented as a proxy. After the agent or proxy has recovered from a network failure, the agent preferably retrieves data transparently from the cache for a period of time disconnected from the edge router. In addition, the subscriber is preferably allowed to access only data up to the last T timeframe in the long term persistence scheme. For this purpose, it is desirable to determine the time for the edge router to which the agent (or proxy) is connected. Preferably, the retrieved cache data is sent out of band and does not need to guarantee real time. Embodiments of the long-term persistence scheme are aimed at existing subscribers whose connections have been broken (crashes and comes back up again) or lost connection with the edge router after the connection with the edge router (eg, edge router 16) has been interrupted. . New subscribers may not be able to obtain cached information.

지속성의 정의: 가입자에 대한 시간이 정해진(timed) 지속성(타임프레임 T)은 발행-가입 네트워크로부터의 최종 타임프레임 T의 데이터를 검색할 수 있는 능력으로서 정의된다. 가입자가 네트워크를 떠나면, 가입자의 부재중에 수신된 퍼시스턴트 채널의 데이터는 [데이터의 수신시부터] 타임프레임 T 동안 네트워크에 유지된다. 타임프레임 T 중에 가입자가 복귀한다면 데이터를 잃어버리는 경우는 일어나지 않는다. 그러나, 가입자가 T와 2T 타임프레임 사이에 복귀한다면 데이터를 잃어버리게 될 것이다. 또한, 가입자가 2T 타임프레임 후에 복귀한다면 이전의 데이터에 대한 액세스를 보증하지 않는 것이 바람직하다. Definition of persistence : Timed persistence (timeframe T) for a subscriber is defined as the ability to retrieve data of the last timeframe T from the publish-subscribe network. If the subscriber leaves the network, the data of the persistent channel received in the absence of the subscriber remains in the network for a timeframe T [from the receipt of the data]. If the subscriber returns during the timeframe T, no data is lost. However, if the subscriber returns between the T and 2T timeframes, the data will be lost. Also, if the subscriber returns after a 2T timeframe, it is desirable not to guarantee access to previous data.

이러한 정의에서는, 가입자가 떠난 후 타임프레임 T 동안 수신된 신규 데이터가 타임프레임 T의 만료 시간에 도달할 때까지는 유지될 수 있도록, 가입자측에 형성된 발행-가입 네트워크 트리가 가입자의 이탈 후 타임프레임 T 동안 유지된 다 음에 제거될 수 있도록 하는 것이 요구된다.In this definition, the publish-subscribe network tree formed on the subscriber side is timeframe T after the subscriber's departure so that new data received during timeframe T after the subscriber leaves can be maintained until the expiration time of timeframe T is reached. It is required to be able to retain it for a while and then remove it.

아키텍처: 도 29는 캐싱을 통해 지속성을 제공하는 발행-가입 네트워크의 일부 구성요소를 도시한 블록도이다. 상기한 네트워크는 도시된 바와 같이 코어 라우팅 노드(548) 및 에지 라우팅 노드(545)를 포함한다. 이들 라우팅 노드는 도 4에서 설명한 바와 같이 지능형 라우터(92; 에지 라우팅 노드와 함께 도시됨)와 통상의 백본 라우터(미도시)를 구비하는 것이 바람직하다. 퍼시스턴트 채널에 대한 캐싱을 수행하고자 하는 지능형 라우터(92)는 도 29에 도시된 바와 같이 같은 장소에 배치된 캐시 관리자(218)를 구비하는 것이 바람직하다. 캐시 관리자(218)는 도 8과 관련하여 이미 설명한 바 있다. 지능형 라우터(92)는 잃어버린 데이터를 검색하거나 라우터의 장애를 복구하는 단기 지속성을 책임지는 것이 바람직하다. 캐시 관리자(218)는 데이터를 캐시하여 채널의 장기 지속성을 제공하는 기능을 수행한다. 캐시 관리자(218)는 이 데이터를 캐시(540)에 캐싱하는 것이 바람직하다. 캐시(540)는 메모리 및 디스크(미도시)를 구비하는 것이 바람직하다. Architecture : FIG. 29 is a block diagram illustrating some components of a publish-subscribe network that provides persistence through caching. The network includes a core routing node 548 and an edge routing node 545 as shown. These routing nodes preferably have an intelligent router 92 (shown with the edge routing node) and a conventional backbone router (not shown) as described in FIG. Intelligent router 92, which wishes to perform caching for persistent channels, preferably includes cache manager 218 co-located as shown in FIG. The cache manager 218 has already been described with reference to FIG. 8. Intelligent router 92 is preferably responsible for the short term persistence of retrieving lost data or recovering from a router failure. The cache manager 218 caches the data to provide the long term persistence of the channel. The cache manager 218 preferably caches this data in the cache 540. The cache 540 preferably includes a memory and a disk (not shown).

지능형 라우터(92)에 대신하여, 캐시 관리자(218)로 하여금 장기 지속성을 위해 데이터를 캐시하도록 함으로써, 캐시된 데이터를 인덱싱하는 계산 집중적인 동작을 별도의 프로세서에서 수행할 수 있으며, 이로 인해 라우팅 및 필터링 프로세서의 성능이 영향받지 않고, 캐시된 데이터를 정기적으로 디스크에 이동시키는 디스크 I/O 동작을 또다른 프로세서에서 수행할 수 있게 됨으로써, 라우팅과 필터링을 위한 사이클을 빼앗기지 않게 되며 에지 라우터를 규칙적인 I/O 동작을 수행하는데 할애할 필요가 없게 된다.On behalf of the intelligent router 92, having the cache manager 218 cache the data for long-term persistence, computationally intensive operations of indexing the cached data can be performed on a separate processor, thereby allowing routing and The performance of the filtering processor is unaffected and disk I / O operations can be performed by another processor that regularly moves cached data to disk, eliminating cycles for routing and filtering, and allowing edge routers to There is no need to devote to performing I / O operations.

도 29에는 에이전트(128)가 도시되어 있으며, 이는 도 5에서 이미 설명한 바와 같이 가입자 머신(122)(도 29에는 미도시됨)에 존재하는 것이 바람직하다. 에이전트(128)는 캐시 관리자(218)와 통신하여 캐시(540)로부터 데이터를 검색하고, 검색된 데이터를 수신하여 검색된 데이터를 정리(organize)하는 역할을 한다. 전술한 바와 같이 에이전트(128)는 프락시를 이용하거나 프락시로 구현될 수 있다.An agent 128 is shown in FIG. 29, which is preferably present in the subscriber machine 122 (not shown in FIG. 29) as already described in FIG. 5. Agent 128 communicates with cache manager 218 to retrieve data from cache 540 and receives retrieved data to organize the retrieved data. As discussed above, the agent 128 may use or be implemented as a proxy.

장애가 없는 상황에는 에지 라우터 노드(545)에만 캐시 관리자(218)가 접속된다. 도 29에는 도시되지 않았지만 장기 지속성 스킴은 장애를 고려한 것이므로, 에지 라우팅 노드(545)로부터의 제1 순위의 업스트림 코어 라우팅 노드(548)는 각각 데이터를 저장하는 캐시 관리자(218)를 포함하는 것이 바람직하다. 업스트림은 에이전트(128)(즉, 가입자 머신(122))로부터 멀어지는 방향이다. 제1 순위의 업스트림 코어 라우팅 노드는 에지 라우팅 노드(545)의 바로 상류의 라우팅 노드를 지칭한다. 발행-가입 네트워크는 복수의 제1 순위의 업스트림 코어 라우팅 노드를 포함하는 경우가 많지만, 도 29에는 하나의 제1 순위의 업스트림 코어 라우팅 노드, 즉 코어 라우팅 노드(548)를 도시하고 있다. 전술한 바와 같이, 캐시 관리자(218)는 자신이 위치한 네트워크 노드에 있는 데이터에 대한 로컬 캐싱을 제공한다. 따라서 예컨대 코어 라우팅 노드(548)를 포함한 각종 코어 라우팅 노드에 위치한 캐시 관리자(218)의 동작에 의해 네트워크 코드 전체에 있어서 데이터의 분산 캐싱이 실현된다. 이러한 분산 캐싱은 에지 라우팅 노드(545)에서의 캐싱에 대한 백업을 제공한다.In the absence of a failure, the cache manager 218 is connected only to the edge router node 545. Although not shown in FIG. 29, the long-term persistence scheme is considered for failure, so the upstream core routing node 548 of the first rank from the edge routing node 545 preferably includes a cache manager 218 that stores data, respectively. Do. Upstream is the direction away from agent 128 (ie, subscriber machine 122). The upstream core routing node of the first rank refers to the routing node immediately upstream of the edge routing node 545. The publish-subscribe network often includes a plurality of first rank upstream core routing nodes, but FIG. 29 illustrates one first rank upstream core routing node, namely core routing node 548. As mentioned above, cache manager 218 provides local caching for data at the network node where it is located. Thus, for example, distributed caching of data throughout the network code is realized by the operation of the cache manager 218 located at various core routing nodes, including the core routing node 548. This distributed caching provides a backup for caching at edge routing node 545.

도 30은 업스트림 라우터(예컨대 코어 라우팅 노드(548))에서의 백업 캐싱을 도시한 도면이다. 장기 지속성 스킴에서, 각각의 캐시는 다음 업스트림 라우터의 캐시에 의해 백업되는 것이 바람직하다. 업스트림 캐시는 모든 인커밍 데이터를 저장하며 모든 후위 다운스트림 에지 라우터 캐시에 대한 백업으로서 기능한다. 업스트림 캐시의 데이터는 에지 라우터 캐시와 동일한 메커니즘에 따라 저장되는 것이 바람직하다.30 illustrates backup caching at an upstream router (eg, core routing node 548). In the long term persistence scheme, each cache is preferably backed up by the cache of the next upstream router. The upstream cache stores all incoming data and acts as a backup for all downstream downstream edge router caches. The data in the upstream cache is preferably stored according to the same mechanism as the edge router cache.

이하, 도 31을 참조하면, 영구적 채널들을 캐시하기 위한 아키텍쳐는 네 개의 다른 모듈들에 걸쳐 스패닝(spanning)하는 기능을 제공하는 것이 바람직하다. 네 개의 다른 모듈들은 이하를 포함한다:Referring now to FIG. 31, an architecture for caching persistent channels preferably provides the ability to span across four different modules. Four other modules include:

캐시 관리자(218) - 바람직하게는, 지능형 라우터(92)를 지나는 데이터의 저장을 맡고 있는 서버 프로세스; Cache manager 218-preferably a server process responsible for storing data passing through intelligent router 92;

라우터 캐시 API(552) - 바람직하게는, 지능형 라우터(92)로부터 캐시 관리자(218)로의 모든 제어 평면 액세스들(control plane accesses)을 맡고 있는 라이브러리, 예컨대, 캐시를 생성 및 소멸시킴; Router cache API 552—preferably creating and destroying a library, such as a cache, which is responsible for all control plane accesses from intelligent router 92 to cache manager 218;

에이전트 (또는 프락시) 캐시 API(554) - 바람직하게는, 에이전트(128)(또는 에이전트(128) 프락시)로부터 캐시 관리자(218)로의 모든 제어 평면 액세스들을 맡고 있는 라이브러리, 예컨대, 데이터를 검색함; 및Agent (or proxy) cache API 554—preferably, retrieves a library, such as data, that is responsible for all control plane accesses from agent 128 (or agent 128 proxy) to cache manager 218; And

에이전트(128)(또는 프락시) - 바람직하게는, 캐시(546)로부터 검색된 데이터의 취합과 이 데이터의 조직화를 맡고 있음.Agent 128 (or proxy) —preferably in charge of collecting and organizing the data retrieved from cache 546.

도 31은 이들 네 개 모듈들의 상호동작을 나타낸다. 에이전트(128) 및 지능형 라우터(92) 양측은 캐시 API 라이브러리 (552 및 554)를 통해 캐시를 액세스 하는 것이 바람직하다. 캐시 API 라이브러리(552 및 554)는 캐시(546)로의 초기화, 주제에 대한 캐시들의 생성 및 소멸, 캐시 어드레스의 검색, 및 가장 중요하게는 캐시(546)로부터의 데이터를 검색하기 위한 API를 제공한다. 라우팅 데몬(216)은 캐시 API(552)를 지나지 않는 데이터 경로를 통해 캐시 관리자(218)로 데이터를 보내는 것이 바람직하다. 캐시 API들(552 및 554)은 데이터 검색을 포함하는 모든 제어 메시지들에 대하여 제어 경로를 사용하는 것이 바람직하다.31 illustrates the interaction of these four modules. Both agents 128 and intelligent routers 92 preferably access the cache through cache API libraries 552 and 554. Cache API libraries 552 and 554 provide APIs for initializing to cache 546, creating and destroying caches for a subject, retrieving cache addresses, and most importantly retrieving data from cache 546. . The routing daemon 216 preferably sends data to the cache manager 218 via a data path that does not pass through the cache API 552. Cache APIs 552 and 554 preferably use a control path for all control messages, including data retrieval.

캐시 관리자 - 캐시 관리: 도 32를 참조하면, 캐시 관리자(218)가 새로운 채널을 만나는 경우, 캐시 관리자(218)는 채널에 대한 채널 관리자(150)를 취득하도록 정보 서버(예컨대, 전술한 서버들(152, 154, 및/또는 156))를 호출(invoke)한다. 일단, 캐시 관리자(218)가 채널 관리자(150)의 어드레스를 취득하면, 캐시 관리자(218)는 채널 관리자(150)로부터 채널 특성을 검색하는 것이 바람직하다. 채널 특성은, 예컨대, 채널 주제 트리(channel subject tree) 및 속성, 채널의 영구적 특성, 채널의 영구적 시간 프레임(T), 캐시의 입도(granularity) 등을 포함하는 것이 바람직하다. 캐시 관리자(218)가 주어진 주제의 채널을 통한 데이터 흐름을 캐시하기 시작할 수 있기 전에, 그 주제의 캐시가 캐시 관리자(218)내에 생성될 필요가 있다. 캐시 관리자(218)는 캐시 생성 메시지를 대기하다가, 이 메시지에 응답하여 주제 캐시를 생성한다. 다음, 이 주제 캐시는 요청에 따라 소멸, 중지, 또는 재개될 수 있다. 도 32는 가입에 따른 캐시 생성을 나타낸다. Cache Manager-Cache Management: Referring to FIG. 32, when the cache manager 218 encounters a new channel, the cache manager 218 may acquire an information server (eg, the aforementioned servers) to obtain a channel manager 150 for the channel. (152, 154, and / or 156)). Once cache manager 218 obtains the address of channel manager 150, cache manager 218 preferably retrieves channel characteristics from channel manager 150. The channel characteristics preferably include, for example, channel subject tree and attributes, the permanent characteristics of the channel, the permanent time frame T of the channel, the granularity of the cache, and the like. Before the cache manager 218 can begin to cache data flow through a channel of a given subject, that subject's cache needs to be created in the cache manager 218. The cache manager 218 waits for a cache generation message and then generates a subject cache in response to this message. This subject cache can then be destroyed, suspended, or resumed upon request. 32 illustrates cache generation according to a subscription.

캐시 관리자-캐시 데이터 입력(Cache Manager - Cache Data Input): Cache Manager-Cache Data Input :

캐시 관리자(218)는 지능형 라우터(92)로 유입되는 데이터를 여러 방식으로 액세스하는 것이 바람직하다. 예를 들어, 지능형 라우터(92)의 입중계 링크(incoming link)상의 모든 데이터 또한 캐시 관리자(218)에게로 전달되는 IP형 솔루션(IP like solution); (지능형 라우터(92)의 네트워크상에서 이동중인 모든 패킷들에 대해 캐시 관리자(218)가 주의를 기울이게 되는) 스니핑 메카니즘을 이용하는 것; 필터링 후, 상기 지능형 라우터(92)가 하나 이상의 링크로의 전파(propagate)가 요구되는 각각의 메시지를 캐시(554)에 전달하는 것; 상기 캐시 관리자(218)가 지능형 라우터(92)에 들어오는 모든 데이터에 대해 가입자(subscriber)처럼 동작하는 것이 있다.The cache manager 218 preferably accesses data entering the intelligent router 92 in a number of ways. For example, an IP like solution in which all data on the incoming link of intelligent router 92 is also passed to cache manager 218; Using a sniffing mechanism (where the cache manager 218 pays attention to all packets moving on the network of intelligent router 92); After filtering, the intelligent router 92 forwards each message to the cache 554 that requires propagation to one or more links; The cache manager 218 behaves like a subscriber to all data entering the intelligent router 92.

캐시 관리자 - 캐시 데이터 스토리지: 도 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 색인화 트리가 사용되는 것이 바람직하다. Cache Manager-Cache Data Storage : Referring to FIG. 33, cache manager 218 can be configured in a number of ways, eg, channel id, subject, publisher id, time stamp, time grains (G), primary caching. The data in cache 546 is indexed using a primary cachingg attribute, a link (in the special case where caching is performed on failures), or other means. Data is indexed and stored in a hierarchical directory structure in the file system or in memory. Data is cached in memory and then periodically moved to disk. Caching in memory is only for the duration of the "G" time grain. After the time G expires, all data related to a particular branch in the tree is preferably moved under that branch to a file that overwrites the earliest file for that branch. (G is not implemented as a sliding window, but is preferably implemented as an absolute window, which results in an increase in cost if each message is written to the disk individually. This is because recording the whole is more efficient.) Fig. 33 is a diagram showing a typical indexing tree. When caching data for persistence, the first indexing tree of FIG. 33 is preferably used.

도 33을 계속 참조해보면, 주제는 계층으로 저장되는 것이 바람직하며, 여기서 "a"는 "a.b", "a.c""a.d" 등과 같은 주제들의 페어런트(parent)이다, 캐시 관리자(218)는 모든 주제들을 이들의 대응하는 파일 위치들에 맵핑하는 캐시(546)를 위한 해시 테이블(hash table)을 유지하는 것이 바람직하다. 어느 경우에는, 캐시(546)는 그 링크 중의 하나에서 다운스트림 라우터(예를 들어, 에지 라우팅 노드(545))의 장애를 업스트림 라우터(예를 들어, 코어 라우팅 노드(548))가 탐지했을 경우 장애 상태하에서 데이터를 저장하는 것이 요구될 수도 있다. 복구(recovery)를 위한 첫번째 접근 방식은 다운스트림 라우터(수분 정도 소요될 수도 있음)를 재시동하는 것이다. 다운스트림 라우터가 재시동되고 있을 경우, 업스트림 라우터는 그 링크로 하향 전달되고 있는 데이터를 캐싱할 필요가 있을 것이다. 이러한 캐시(예를 들어, 도 33의 소위 FM Cache)는 발신(outgoing) 중인 링크들에서 색인화되는 것이 바람직하다.With continued reference to FIG. 33, subjects are preferably stored in a hierarchy, where "a" is a parent of subjects such as "ab", "ac" "ad", etc., cache manager 218 is the subject of all subjects. It is desirable to maintain a hash table for the cache 546 that maps them to their corresponding file locations. In some cases, the cache 546 detects that the upstream router (eg, core routing node 548) has detected a failure of a downstream router (eg, edge routing node 545) on one of its links. It may be required to store data under fault conditions. The first approach to recovery is to restart the downstream router (which may take several minutes). If the downstream router is restarting, the upstream router will need to cache the data being passed down the link. Such a cache (eg, the so-called FM Cache in FIG. 33) is preferably indexed on outgoing links.

캐시 관리자 - 가비지 수집: 채널이 지속적이지 않으면, 캐시(546)는 그 데이터를 저장하지 않고 즉시 놓아 버린다. 채널이 지속적이면, 캐시(546)는 데이터를 저장하게 된다. 특정 채널에 대한 지속 시간 프레임 "T"는 각각의 사이즈 G인 N개의 시간 그레인들로 분할된다. 메모리의 캐슁은 G의 기간동안만을 위한 것이다. 캐쉬 관리자가 시간 간격 G가 지나갔다고 결정한 후에, 데이터를 디스크로 이동시킨다. 캐쉬 관리자(218)는 지속적인 시간 프레임 간격 T의 기간 동안 데이터를 디스크에 저장한다. Cache Manager-Garbage Collection : If the channel is not persistent, the cache 546 immediately releases the data without storing it. If the channel is persistent, cache 546 will store the data. The duration frame "T" for a particular channel is divided into N time grains of size G, respectively. Caching of memory is only for the period of G. After the Cache Manager determines that the time interval G has passed, it moves the data to disk. Cache manager 218 stores the data on disk for the duration of the sustained time frame interval T.

시간 간격 G에 대응하는 데이터는, 일단 시간이 채널 + 간격의 상한에 대한 지속적인 타임아웃(T)보다 크게 되면 디스크로부터 삭제된다. 이것을 더욱 잘 이해하기 위해서, 채널이 2시간의 T를 갖는다고 가정한다. 예로서, 캐쉬 관리자(218)는 15분의 시간 입도(time granularity) G를 사용한다. 디스크로부터 데이터를 삭제하기 위해서, 바람직하게 사용되는 정책은 시간 간격 G(15분) 동안 캐쉬된 최종 데이터가 T(2시간) 동안 저장되었던 경우에, 그 15분 간격 중에 캐쉬된 전체 데이터는 폐기될 것이라는 것이다. 본 예에서, 각각의 15분 간격 중에 캐쉬된 데이터는 데이터의 블록이다. 지속적인 시간 프레임 T가 N 간격들로 분할되면, 시간의 임의의 포인트에서 각 주제에 대해 캐쉬(546)에 N+1개의 블럭들의 데이터가 있을 것이다(디스크 상의 N개 및 메모리의 1개).Data corresponding to the time interval G is deleted from the disc once the time is greater than the continuous timeout T for the upper limit of the channel + interval. To better understand this, assume that the channel has a T of 2 hours. As an example, cache manager 218 uses a time granularity G of 15 minutes. In order to delete data from the disk, a policy preferably used is that if the last data cached for a time interval G (15 minutes) was stored for T (2 hours), the entire cached data during that 15 minute interval would be discarded. It is. In this example, the data cached during each 15 minute interval is a block of data. If the persistent time frame T is divided into N intervals, there will be N + 1 blocks of data in cache 546 (N on disk and one in memory) for each subject at any point in time.

캐쉬 관리자 - 캐쉬 데이터 검색: 이제 도 34를 참조하면, 에이전트(128)(또는 프락시)는 바람직하게는 GetCache 동작을 호출하여 데이터가 현재 시간으로부터 시간 "T"로 돌아가게 한다. GetCache 동작을 호출하기 위해 에이전트(128)가 접속하는 캐쉬 관리자(218)는 도 34에서 포탈 캐쉬(Portal Cache)로 라벨 붙여진다. 라우터 또는 에이전트(128)의 실패/접속해제에 기인하여, 포탈 캐쉬는 에이전트(128)가 요청한 모든 데이터를 가지지 않을 수도 있다. 이 경우에, 그외의 모든 캐쉬들(예를 들어, 업스트림 캐쉬들)로부터 데이터를 검색하고, 데이터를 대조하여 그것을 에이전트(128)에게 리턴하는 것이 포탈 캐쉬의 역할이다. 도 34는 상이한 시간 스탬프들(TS1, TS2 및 TS3 )에 대해 다수의 캐쉬들(A, B 및 C)로부터의 검색을 도시한다. Cache Manager-Cache Data Retrieval : Referring now to FIG. 34, agent 128 (or proxy) preferably invokes a GetCache operation to cause data to return from the current time to time "T". The cache manager 218 to which the agent 128 connects to invoke the GetCache operation is labeled Portal Cache in FIG. 34. Due to the failure / disconnection of the router or agent 128, the portal cache may not have all the data requested by the agent 128. In this case, the portal cache is responsible for retrieving data from all other caches (eg, upstream caches), collating the data and returning it to the agent 128. 34 shows a search from multiple caches A, B and C for different time stamps TS1, TS2 and TS3.

캐쉬 관리자(218)는 바람직하게는 시간 단위 G의 블럭들의 데이터만을 검색할 수 있다. 그래서 에이전트(128)는 그것이 예상하거나 또는 요청하는 것보다 더 많은 데이터를 얻을 수 있다. 또한, 다수의 캐쉬로부터의 검색 중에, 캐쉬들 사이에서 일부 중첩되는 간격들이 있을 수 있으므로, 에이전트(128)는 데이터의 복사본을 보게될 것이며, 에이전트(128)는 캐쉬에 의해 제공된 데이터 스트림에 대해 복사 억제를 해야만 한다.Cache manager 218 may preferably retrieve only data of blocks of time unit G. So agent 128 may get more data than it expects or requests. Also, during retrieval from multiple caches, there may be some overlapping gaps between caches, so agent 128 will see a copy of the data, and agent 128 will copy against the data stream provided by the cache. It must be restrained.

캐쉬 관리자와 그외의 모듈들과의 상호작용: 캐쉬 관리자(218)는 바람직하게는, 도 35에 도시된 바와 같이, 이벤트 통지 시스템 인프라구조의 몇개의 모듈들과 상호작용한다. 캐쉬 관리자(218)는 새로운 채널(생성 캐쉬 시간에)을 만나게 되는 경우에, 바람직하게는 정보 서버(Information Server)(550)를 호출하여 그 채널에 대한 채널 관리자(150)를 얻는다. 일단 캐쉬 관리자(218)가 채널 관리자(150)의 어드레스를 가지면, 캐쉬 관리자(218)는 채널 관리자(150)로부터 바람직하게는 채널 특성들을 얻는다. 관리자 모듈(552)은 바람직하게는 캐슁의 단위와 같은 일부 특성들을 설정/변경하도록 허용된다. 관리자 모듈(552)은 바람직하게는 채널 캐쉬를 수동적으로 생성하거나 삭제하는 것이 허용되기도 한다. Interaction with Cache Manager and Other Modules : Cache manager 218 preferably interacts with several modules of the event notification system infrastructure, as shown in FIG. When the cache manager 218 encounters a new channel (at the creation cache time), it preferably calls the information server 550 to obtain the channel manager 150 for that channel. Once cache manager 218 has the address of channel manager 150, cache manager 218 preferably obtains channel characteristics from channel manager 150. Manager module 552 is preferably allowed to set / change some properties, such as units of caching. The manager module 552 is preferably also allowed to manually create or delete the channel cache.

에이전트 캐쉬 API - 애플리케이션 - 에이전트 상호작용: 애플리케이션(예를 들어, 애플리케이션(216))은 바람직하게는 에이전트 캐쉬 API(554)를 호출하여 소정의 주제 및 필터를 가진 캐쉬(546)를 얻는다. 바람직하게는, 애플리케이션은 그것이 이미 그 데이타에 가입되었다면, 캐쉬(546)로부터의 데이터만을 검색할 수 있다. 에이전트 캐쉬 API(554)는 바람직하게는 2개의 API를 실제적으로 제공한다. Agent Cache API-Application-Agent Interaction : The application (e.g., application 216) preferably calls the agent cache API 554 to obtain a cache 546 with a given subject and filter. Preferably, the application can only retrieve data from cache 546 if it has already subscribed to that data. Agent cache API 554 preferably provides practically two APIs.

제1 API는 비가입된 애플리케이션이 동시에 캐쉬에 가입하고 검색할 수 있게 한다. "fifo" 플래그가 설정되면, 가입을 생성하여 경계 라우터 노드(545)로 전송한다. 그러나, 가입은 바람직하게는 즉시 "일시정지" 모드로 들어간다. 에이전트(128)가 모든 캐쉬된 데이터를 수신한 후에, 에이전트(128)는 먼저 모든 캐쉬된 데이터를 전달하고, 데이터의 모든 발행자(publisher)에 대해 보여지지 않는 최종 시퀀스를 기억하고, 그 다음에 각각의 발행자들에 대해 보여지지 않는 최종 시퀀스로부터 일시정지된 데이터를 전달한다.The first API allows non-subscribed applications to simultaneously subscribe and retrieve cache. If the "fifo" flag is set, a subscription is created and sent to the border router node 545. However, the subscription preferably enters the "pause" mode immediately. After agent 128 has received all cached data, agent 128 first passes all cached data, remembers the last sequence not shown for all publishers of the data, and then each Pass paused data from the final sequence not shown for the publishers of the.

제2 API에서는, 애플리케이션이 이미 일부 데이터에 가입되었으며 캐쉬 데이터를 요청하고 있다고 가정한다. 이 경우에, 애플리케이션은 캐쉬 데이터에 대해 차례로 나열될 수 없는 일부 데이터가 이미 전달되었다. 그러므로, 이 경우의 "fifo" 플래그는 오직, 캐쉬(546)로부터 검색된 데이터가 그 자체내에서 차례로 나열되어야만 하며, 정규의 데이터 스트림에 걸쳐 나열될 필요는 없다는 것을 나타낼 뿐이다.In the second API, it is assumed that the application has already subscribed to some data and is requesting cache data. In this case, some data has already been passed that cannot be listed in order for the cache data. Therefore, the "fifo" flag in this case only indicates that the data retrieved from the cache 546 must be listed in sequence within itself, and not necessarily over a regular data stream.

에이전트(128)는 바람직하게는 데이터의 하나의 큰 블록의 모든 이벤트들을 검색한다. 캐쉬 API(554)로부터 데이터를 검색한 후에, 에이전트(128)는 바람직하게는 콜백 동작을 호출하기 전에 데이터 상에서 이하의 동작들을 행할 필요가 있다 (위를 참조): 통지 리스트로부터 통지를 작성; 각각의 발행자에 대한 최종 시퀀스 번호를 기억 및 필터링. 에이전트(128)가 모든 이벤트들을 콜백으로 밀어내기를 행한 경우, 그것은 바람직하게는 콜백에게 DoneCache 이벤트를 전송하여, 모든 캐쉬된 데이터가 전달되었음을 나타낸다. 이점에 있어서, 가입이 FIFO이고 정규 데이터가 일시정지되면, 에이전트(128)는 바람직하게는 모든 일시정지된 통지들을 전송한다. 에이전트(128)는 오직 시퀀스 번호들이 캐쉬 데이터의 최종 시퀀스 번호보다 큰 통지들만을 전달한다.Agent 128 preferably retrieves all events of one large block of data. After retrieving the data from the cache API 554, the agent 128 preferably needs to perform the following operations on the data before invoking the callback operation (see above): creating a notification from the notification list; Remember and filter the final sequence number for each issuer. When agent 128 pushes all events into the callback, it preferably sends a DoneCache event to the callback, indicating that all cached data has been delivered. In this regard, if the subscription is a FIFO and the regular data is paused, the agent 128 preferably sends all paused notifications. Agent 128 only delivers notifications whose sequence numbers are greater than the final sequence number of the cache data.

에이전트 캐쉬 API 대 캐쉬 상호작용: 가입자가 캐쉬된 데이터를 요청하는 경우에, 에이전트(128) 종단(554)의 캐쉬 API는 바람직하게는 먼저 에이전트(128)가 접속되었던 경계 라우터들의 히스토리를 찾아보고 GetCache 요청에서 제공된 시간 간격을 사용하여 리스트를 필터링한다. API(554)는 그 다음에 GetCache(채널, 주제, 필터, local_pubs, time_period, fifo, 라우터들의 어레이) 메시지를 그것이 접속되어 있는 최종 경계 캐쉬로 전송한다. 캐쉬 관리자(218)는 바람직하게는 채널 id, 주제 및 타임스탬프에 기초하여 데이터를 꺼내어, 그 데이터를 에이전트(128)로 되돌린다. 캐쉬 관리자(218)가 데이터를 밀어내는 것을 완료한 경우에, 그것은 DoneCache 이벤트를 Cache-API에 전송하여 데이터 전송이 완료되었음을 나타낸다. Agent Cache API vs. Cache Interaction : In the case where a subscriber requests cached data, the cache API of the agent 128 endpoint 554 preferably first looks up the history of the border routers to which the agent 128 was connected and obtains the GetCache Filter the list using the time interval provided in the request. API 554 then sends a GetCache (channel, subject, filter, local_pubs, time_period, fifo, array of routers) message to the last boundary cache to which it is connected. Cache manager 218 preferably retrieves data based on channel id, subject, and timestamp, and returns the data to agent 128. When the cache manager 218 has finished pushing data, it sends a DoneCache event to the Cache-API to indicate that the data transfer is complete.

캐쉬 관리자(218)가 데이터를 국부적으로 찾지 않으면, 캐쉬 관리자(218)는 에이전트(128)에 의해 제공된 "라우터들의 리스트"를 사용하여, 필요한 데이터를 배치시킨다. 일단 캐쉬 관리자(218)가 모든 필요한 데이터를 수집하면, 캐쉬 관리자(218)는 필요한 데이터를 대조하여, 그것을 에이전트(128)에게 전송하기 전에 그것에 대한 복사 억제를 행한다.If the cache manager 218 does not find the data locally, the cache manager 218 uses the "list of routers" provided by the agent 128 to place the necessary data. Once the cache manager 218 has collected all the necessary data, the cache manager 218 collates the necessary data and performs copy suppression on it before sending it to the agent 128.

캐쉬 접속 히스토리: 캐쉬(546)로부터의 데이터를 검색할 수 있기 위해, 업스트림 캐쉬뿐 아니라 에지 모두에 대해 캐쉬 접속 히스토리가 에이전트(128)에서 유지되는 것이 바람직하다. 이러한 정보는 에이전트(128) 셧다운(shutdown) 및 충돌(crash)에 걸쳐서 필요하기 때문에, 이러한 정보는 계속해서 파일 내에 유지되어야 한다. 디스크 상의 캐쉬 접속 히스토리는 다음 파일들 및 포맷에 저장되는 것이 바람직하다. Cache Connection History : In order to be able to retrieve data from cache 546, it is desirable that cache connection history be maintained at agent 128 for both the upstream cache as well as the edge. Since this information is needed over agent 128 shutdown and crash, this information must be kept in a file continuously. The cache connection history on disk is preferably stored in the following files and formats.

에지 캐쉬 위치들: 에지 캐쉬(예를 들어, 에지 라우팅 노드(546)에 있는 캐쉬(546))의 위치는 채널 관리자/채널 라이브러리로부터 얻어지는 것이 바람직하다. 이것은 부팅 시간에 및 에지 캐쉬가 변하는 임의의 후속 시간, 즉 접속 소실/회복되는 시간, 접속이 이동되는 시간에 발생한다. 디스패쳐(dispatcher)는 에지 캐쉬 접속시 임의의 변화들을 에이전트(128)에게 통지하고 그 후 이러한 변화들은 에이전트(128) 캐쉬 라이브러리로 전달된다. 변화가 발생할 때마다 변화는 유지된다.Edge Cache Locations: The location of the edge cache (eg, cache 546 at the edge routing node 546) is preferably obtained from the channel manager / channel library. This occurs at boot time and at any subsequent time the edge cache changes, i.e. the time of connection loss / recovery, the time the connection is moved. The dispatcher notifies the agent 128 of any changes in the edge cache connection and these changes are then passed to the agent 128 cache library. Whenever a change occurs, the change is maintained.

영구 저장: CACHE_ROOT/channel_id/Channel - 캐쉬된 데이터를 위한 예시적인 경로.Persistent storage: CACHE_ROOT / channel_id / Channel-exemplary path for cached data.

데이터는 다음 포맷으로 저장되는 것이 바람직하다.The data is preferably stored in the following format.

에지 캐쉬의 수(Number of Edge Caches);Number of Edge Caches;

Edge Cache1: Number of time intervals, StartTime1:EndTime1, StartTime:EndTime2,...; 및Edge Cache1: Number of time intervals, StartTime1: EndTime1, StartTime: EndTime2, ...; And

Edge Cache2: Number of time intervals, StartTime1:EndTime1, StartTime:EndTime2,...Edge Cache2: Number of time intervals, StartTime1: EndTime1, StartTime: EndTime2, ...

가장 최근의 타임스탬프(timestamp)는 리스트의 선두에 있다. 2개의 상이한 에지 캐쉬는 중첩되는 간격을 갖지 않는다는 것을 주의하라(그 이유는 에이전트(128)가 한번에 하나의 에지 캐쉬에만 접속되기 때문이다). 새로운 엔트리가 추가될 때마다, 이전 엔트리들은 그들이 아직 유효한지를 알아보기 위해 검사되고; 무효이면 엔트리가 버려진다. 다음과 같은 경우에 시간 간격은 무효하게 된다.The most recent timestamp is at the beginning of the list. Note that two different edge caches do not have overlapping intervals (because agent 128 is only connected to one edge cache at a time). Each time a new entry is added, the previous entries are checked to see if they are still valid; If it is invalid, the entry is discarded. The time interval becomes invalid in the following cases.

Interval EndTime + channel's persistent timeout < current timeInterval EndTime + channel's persistent timeout <current time

엔트리의 모든 간격이 무효로 되면 에지 캐쉬 엔트리는 무효로 된다. "EndTime"이 0이라는 것은 간격이 현재 활성 상태라는 것을 의미함에 주의하라.If all intervals of an entry become invalid, the edge cache entry becomes invalid. Note that "EndTime" of zero means that the interval is currently active.

업스트림 캐쉬 위치들: 업스트림 캐쉬(예를 들어, 코어 라우팅 노드(548)에 있는 캐쉬(546))의 위치는 주제에 의존한다. 각 주제는 자신의 멀티캐스트 트리(multicast tree)를 갖기 때문에 제1 레벨의 업스트림 캐쉬 세트는 주제의 함수이다. 사용자가 주제에 가입할 때에는, 지능형 라우터(29)가 그 주제와 관련된 업스트림 캐쉬의 리스트를 반환하는 것이 바람직하다. 마찬가지로, 멀티캐스트 트리에서의 고장(failure) 또는 개편(reorganization)으로 인한 업스트림 캐쉬 위치들의 임의의 변경은 제어 채널을 통해 에이전트(128)로 전달되는 것이 바람직하다. 이러한 변화들은 영구 저장 스토어(파일)에서 국부적으로 문서화된다.Upstream Cache Locations: The location of the upstream cache (eg, cache 546 in core routing node 548) depends on the subject. Since each subject has its own multicast tree, the first level of upstream cache set is a function of the subject. When a user subscribes to a topic, it is desirable for the intelligent router 29 to return a list of upstream caches associated with that topic. Likewise, any change in upstream cache locations due to failure or reorganization in the multicast tree is preferably communicated to the agent 128 via the control channel. These changes are documented locally in the permanent storage store (file).

영구 저장: CACHE_ROOT/channel_identifier/subject(계층적이 아닌 전체 주제) - 캐쉬된 데이터를 위한 예시적인 경로. Persistent storage: CACHE_ROOT / channel_identifier / subject-example path for cached data.                 

데이터는 다음 포맷으로 저장되는 것이 바람직하다.The data is preferably stored in the following format.

Number of Upstream Caches;Number of Upstream Caches;

Upstream Cache1: Number of time intervals, StartTime1:EndTime1, StartTime2:EndTime2,...; 및Upstream Cache1: Number of time intervals, StartTime1: EndTime1, StartTime2: EndTime2, ...; And

Upstream Cache2: Number of time intervals, StartTime1:EndTime1, StartTime2:EndTime2,...Upstream Cache2: Number of time intervals, StartTime1: EndTime1, StartTime2: EndTime2, ...

다시, 가장 최근의 타임스탬프는 리스트의 선두에 있다. 에지 캐쉬 간격과 달리, 2개의 업스트림 캐쉬는 중첩 간격을 가질 수 있는데, 그 이유는 에이전트(128)가 하나의 주어진 주제에 대해 여러개의 업스트림 캐쉬를 가질 수 있기 때문이다. 또한 업스트림 캐쉬 파일의 콘텐트는 에지 캐쉬에서와 동일한 알고리즘을 사용하여 수집된 폐기물이다.Again, the most recent timestamp is at the beginning of the list. Unlike the edge cache interval, two upstream caches can have overlapping intervals, because agent 128 can have multiple upstream caches for a given subject. In addition, the contents of the upstream cache file are waste collected using the same algorithm as in the edge cache.

데이터 검색 중의 캐쉬 유효성: 에이전트(128)의 일생동안, 에이전트는 상이한 에지 라우터 및 업스트림 라우터와의 접속을 경험한다. 에이전트 캐쉬 API(554)는 로컬 스토어 내에 이러한 접속 히스토리를 저장하는 것이 바람직하다. 에이전트(128)가 캐쉬(546)로부터 최종 T개의 데이터 간격을 검색할 필요가 있는 경우, 에이전트 캐쉬 API(554)는 접속 히스토리를 조사하여 데이터를 액세스하는 캐쉬를 결정하는 것이 바람직하다. 이를 위해 사용되기에 양호한 알고리즘은 다음과 같다: 1) 캐쉬 라이브러리는 모든 에지 캐쉬 간격을 조사하고 T 시간프레임 내에 있는 간격들을 검사한다. 간격이 시간 프레임 내에 있으면, 그것은 유효 에지 캐쉬의 리스트 Le에 추가된다. 2) 간격 시작 시간을 사용하여 리스트 Le가 저장된다. 3)Le 내의 에지 캐쉬들에 의해 포함되지 않는 각 간격에 대해서는, 업스트림 캐쉬를 조사하여 이 간격을 포함할 수 있는 모든 업스트림 캐쉬 간격들을 얻고 유효 간격들을 리스트 Lu에 추가한다. Lu를 Le에 추가하고 간격 시작 시간을 사용하여 Le를 정렬함으로써 L을 생성한다. Cache Validity During Data Retrieval : During the lifetime of agent 128, the agent experiences connection with different edge routers and upstream routers. Agent cache API 554 preferably stores this connection history in a local store. If agent 128 needs to retrieve the last T data intervals from cache 546, agent cache API 554 preferably examines the connection history to determine the cache to access the data. A good algorithm to use for this is as follows: 1) The cache library examines all edge cache intervals and checks intervals that are within the T timeframe. If the interval is in the time frame, it is added to the list L e of valid edge caches. 2) The list L e is stored using the interval start time. 3) For each interval not covered by the edge caches in L e , examine the upstream cache to get all upstream cache intervals that may include this interval and add valid intervals to the list L u . Create L by adding L u to L e and aligning L e using the interval start time.

이 알고리즘은 캐쉬들의 리스트 L를 제공하고 각 캐쉬에 대해 데이터를 검색하는 시간 간격을 제공한다. 그 후 이 캐쉬들의 리스트 L는 4) 획득 캐쉬 메시지(get cache message)로 정렬(marshalling)되어 캐쉬 관리자(218)로 전송된다. 캐쉬 관리자(218) 측에서, 캐쉬 관리자(218)는 5) 획득 캐쉬 메시지로부터 캐쉬 간격들을 정렬해제(un-marshalling)하고 시작 시간의 증가 순서로 소팅된 리스트 L를 재생성하는 것이 바람직하다. 리스트 L 내의 각 간격에 대해, 캐쉬 관리자(218)는 6) 이전 간격과 현재 간격 사이에 간격이 존재하는지를 알아보기 위해 검사를 하고, 간격이 있으면, 로컬 캐쉬에게 데이터를 요구하는 것이 바람직하다. 간격이 없으면, 캐쉬 관리자(218)는 7) 적절한 캐쉬에게 데이터를 획득하도록 하는 것이 바람직하다. 캐쉬 관리자(218)는 8) 모든 캐쉬로부터의 데이터를 대조하고 그것을 에이전트(128)에 보내는 것이 바람직하다.This algorithm provides a list L of caches and a time interval for retrieving data for each cache. The list L of these caches is then marshalled into a get cache message and sent to the cache manager 218. On the cache manager 218 side, the cache manager 218 preferably 5) un-marshalls the cache intervals from the acquired cache message and regenerates the sorted list L in increasing order of start time. For each interval in the list L, the cache manager 218 checks 6) to see if there is an interval between the previous interval and the current interval, and if there is an interval, it is desirable to request data from the local cache. If there is no gap, the cache manager 218 preferably 7) prompts the appropriate cache to acquire the data. Cache manager 218 preferably 8) collates data from all caches and sends it to agent 128.

라우터 캐쉬 API: 지능형 라우터(92)에 있는 라우터 캐쉬 API(552)는 캐쉬 관리자(218)를 호출하여 특정 주제에 대한 캐싱(caching)을 생성, 파괴, 중지 및 재개시키는 기능을 한다. 라우터 캐쉬 API(552)는 또한 초기 구성을 다루는데, 지능형 라우터(92)로부터의 캐쉬 어드레스를 채널 관리자(150)로 업로딩하여, 필요한 경우에 에이전트(128)측(에이전트 캐쉬 API(554))이 이러한 정보를 얻을 수 있도록 하고, 다른 라우터들에 대한 캐쉬들(546)의 위치를 검색한다(이것은, 예를 들어 가입 응답시 및 주제 트리가 변한 후에, 지능형 라우터(92)가 주어진 주제에 대한 업스트림 캐쉬를 에이전트(128)에 통지하기를 원할 때 사용된다). Router Cache API : The router cache API 552 in the intelligent router 92 functions to call the cache manager 218 to create, destroy, suspend and resume caching for a particular subject. The router cache API 552 also handles the initial configuration, by uploading the cache address from the intelligent router 92 to the channel manager 150, so that the agent 128 side (agent cache API 554), if necessary, can do so. Information is retrieved, and the location of the caches 546 for other routers is retrieved (this is the case for example when the subscription response and after the subject tree has changed, the intelligent router 92 caches an upstream cache for a given topic). Is used when it wants to notify the agent 128).

획득(pull)을 위한 캐쉬의 사용: 상기 논의는 영구 채널들을 구현하고 리턴 가입자(returning subscriber)들이 네트워크로부터 데이터를 획득할 수 있기 위해 캐쉬를 사용하는 것에 초점을 두고 있다. 다른 실시예는 임의의 가입자(신규 또는 리턴)가 (예를 들어, 가입자가 이미 가입된 것은 아니지만 누군가 다른 사람의 가입 때문에 캐시(546) 내에 있는 데이터를 포함하는) 임의의 종류의 데이터를 캐시(546)로부터 풀(pull)하도록 한다. 이 실시예와 선행하는 실시예의 차이점은, 리턴 가입자에 대해서는 데이터가 현재로 보증되고 데이터의 위치가 공지되지만 신규 가입자에 대해서는 저장된 데이터의 위치가 공지되지 않는다는 것이다. 이 다른 실시예를 구현하는 간단한 방법은 채널 상의 "FindCache" 요구를 발행하는 것이다. "FindCache" 요구는 채널 id, 주제, 필터, 시간 간격 및 요구된 캐시 데이터로 캐시(546)를 탐색하는 에이전트(128)의 위치를 포함한다. 모든 캐시(546)는 "FindCache" 요구를 수신한다. 각각의 캐시(546)가 요구를 수신하면, 캐시(546)는 대응하는 데이터가 그 데이터 스토어 내에 있는지를 확인하고, 그러면, 그 자신의 위치를 유니캐스트 메시지로 다시 전송한다. 에이전트(128)는 캐시(546) 중의 하나를 선택하고 그에 대한 GetCache 동작을 인보크하여 데이터를 획득한다. Use of Cache for Pulling : The discussion above focuses on using the cache to implement persistent channels and for returning subscribers to obtain data from the network. Another embodiment may be for any subscriber (new or return) to cache any kind of data (e.g., including data that is not already subscribed to a subscriber but is in cache 546 because of someone else's subscription). 546). The difference between this embodiment and the preceding embodiment is that the data is now guaranteed for the returning subscriber and the location of the data is known but the location of the stored data is not known for the new subscriber. A simple way to implement this alternative embodiment is to issue a "FindCache" request on the channel. The "FindCache" request includes the channel id, subject, filter, time interval and location of the agent 128 searching the cache 546 with the requested cache data. All caches 546 receive a "FindCache" request. When each cache 546 receives a request, the cache 546 checks whether the corresponding data is in its data store, and then sends its own location back in a unicast message. Agent 128 selects one of caches 546 and invokes a GetCache operation on it to obtain data.

최종 데이터 풀(pull): 다른 실시예는 가입자 애플리케이션(예를 들어, 애플리케이션(126))이 주어진 주제에 대한 최종 메시지를 획득하도록 하는 특징, 최종 데이터 풀을 포함한다. 이것은 주식 시세 경보 등의 데이터에 유용하고, 사용자는 히스토리가 아닌 최종 주식 가격을 알기를 원한다. Final data pull : Another embodiment includes a final data pool, a feature that allows a subscriber application (eg, application 126) to obtain a final message for a given subject. This is useful for data such as stock quote alerts, and the user wants to know the final stock price, not history.

캐시 관리자의 구현: 예를 들어 캐시 관리자(218) 구현에는 바람직하게 3가지 유형의 스레드(thread)가 있다. 즉, 데이터 캐싱 스레드 - 데이터 캐싱 스레드는 바람직하게 지능형 라우터(92)로의 접속으로부터 데이터를 픽업하고 데이터를 인덱싱하여 메모리에 저장한다 -, 데이터 저장 스레드 - 시간 간격의 끝에 도달하면, 데이터 저장 스레드는 바람직하게 메모리에 저장된 데이터를 디스크로 이동시키고 프로세스에서 또한 만료된 데이터에 대한 폐영역 회수(garbage collection)를 수행한다 -, 데이터 검색 스레드 - 데이터 검색 스레드는 바람직하게 캐시 데이터에 대한 요구를 픽업하고 캐시(546)로부터 데이터를 검색하는 것을 담당한다 - 가 있다. 이 3가지 유형의 스레드는 단일 스레드 또는 스레드의 풀(pool)로서 구현될 수 있다. 바람직하게, 데이터 캐싱 스레드 및 데이터 저장 스레드는 데이터가 디스크로 이동되고 있는 동안 동기된다. 데이터 저장 스레드와 데이터 검색 스레드간의 동기화는 데이터가 검색되는 동안 데이터가 제거되는 것을 방지한다. Implementation of the cache manager : For example, the cache manager 218 implementation preferably has three types of threads. That is, a data caching thread-the data caching thread preferably picks up data from the connection to the intelligent router 92 and indexes the data and stores it in memory-the data storage thread-upon reaching the end of the time interval, the data storage thread is preferably To move the data stored in memory to disk and to perform a garbage collection of expired data in the process as well. The data retrieval thread The data retrieval thread preferably picks up requests for cache data and 546) responsible for retrieving data from the data. These three types of threads can be implemented as a single thread or as a pool of threads. Preferably, the data caching thread and the data storage thread are synchronized while data is being moved to disk. Synchronization between the data storage thread and the data retrieval thread prevents data from being removed while the data is being retrieved.

데이터 구조: 캐싱을 위한 데이터 구조의 예는 상기의 표 19 및 첨부된 설명에 제공된다. Data Structures : Examples of data structures for caching are provided in Table 19 above and the accompanying description.

데이터 저장: 도 36은 "아퀼라 캐시(Aquila Cache)"로 명명된 캐시(546)에 데이터 파일을 저장하는데 사용되는 바람직한 디렉토리 구조를 나타내는 도면이다. 각각의 주제 레벨 디렉토리는 바람직하게 한 세트의 차일드(child) 주제 디렉토리 뿐만 아니라 그 주제에 대해 발행되는 데이터를 저장하는 데이터 디렉토리를 갖는다. 예를 들어 엔터테인먼트 채널 상의 Fox.Movies에 대해 발행된 데이터는 디렉토리 AquilaCache/Entertainment/Fox/Movies/Data 내의 파일로 전달되고 주제 Fox에 대해 발행된 데이터는 디렉토리 AquilaCache/Entertainment/Fox/Data 내의 파일로 전달된다. 데이터 저장 속도를 증가시키기 위하여, 지능형 라우터(92)가 캐시(546)에게 주어진 채널 및 주제에 대한 캐싱을 시작할 것을 요청할 때 특정 주제를 위한 디렉토리 계층이 바람직하게 생성된다. Data Storage : FIG. 36 illustrates a preferred directory structure used to store data files in a cache 546 named "Aquila Cache." Each subject level directory preferably has a set of child subject directories as well as a data directory that stores data published for that subject. For example, data published for Fox.Movies on the entertainment channel is delivered to files in the directory AquilaCache / Entertainment / Fox / Movies / Data and data published for the subject Fox is sent to files in the directory AquilaCache / Entertainment / Fox / Data. do. To increase the data storage speed, a directory hierarchy for a particular subject is preferably created when intelligent router 92 requests cache 546 to start caching for a given channel and subject.

데이터 검색: 캐시(546)로부터의 데이터 검색은 데이터 저장 및 캐시(546)를 방해하지 않도록 효율적이어야 한다. 데이터 검색은 디스크 및 메모리 둘다로부터 데이터를 검색한다. 데이터 검색을 위해 취해지는 단계는 바람직하게 다음과 같다: 1) 데이터 노드의 위치를 찾고, 2) 데이터 노드를 록킹하고, 3) 검색될 필요가 있는 데이터의 타임 스탬프의 위치를 찾고, 3) 데이터를 검색하고 데이터를 메모리에 저장하고, 4) 데이터 노드를 언록킹하고, 5) 에이전트(128) 클라이언트에 발행하기 전에 메모리에 저장된 검색 데이터를 필터링하고 시퀀싱한다. Data Retrieval : Data retrieval from cache 546 must be efficient so as not to interfere with data storage and cache 546. Data retrieval retrieves data from both disk and memory. The steps taken for data retrieval are preferably as follows: 1) locate the data node, 2) lock the data node, 3) locate the time stamp of the data that needs to be retrieved, and 3) the data. Retrieve the data and store the data in memory, 4) unlock the data node, and 5) filter and sequence the search data stored in memory before issuing to the agent 128 client.

본 발명은 예시적인 실시예와 결합하여 설명되었지만, 많은 변경이 가능함은 당업자에게 자명한 것이고, 이 출원은 임의의 적응 또는 변경을 커버하기 위한 것이다. 예를 들어, 다양한 유형의 발행자 머신, 사용자 또는 가입자 머신, 채널 및 그들의 구성, 및 콘텐트-기반(content-based) 라우팅 및 다른 기능의 하드웨어 및 소프트웨어 구현이 본 발명의 범위를 벗어나지 않고 사용될 수 있다. 본 발명은 청구범위 및 그 동등물에 의해서만 한정된다.While the invention has been described in conjunction with exemplary embodiments, it will be apparent to those skilled in the art that many changes are possible and this application is intended to cover any adaptations or variations. For example, hardware and software implementations of various types of publisher machines, user or subscriber machines, channels and their configurations, and content-based routing and other functions may be used without departing from the scope of the present invention. The invention is limited only by the claims and the equivalents thereof.

Claims (113)

경보 서비스의 제공에 사용되는 네트워크 내의 라우터에서 패킷들을 라우팅하기 위한 방법으로서,A method for routing packets at a router in a network used to provide an alert service, the method comprising: 헤더 섹션과, 특정 카메라로부터의 비디오 클립에 관한 정보를 포함하는 페이로드 섹션을 갖는 패킷을 수신하는 단계와,Receiving a packet having a header section and a payload section containing information about a video clip from a particular camera; 상기 패킷을 상기 특정 카메라로부터의 정보에 관련된 가입자들에게 라우팅하는 방식을 결정하는 데 사용하기 위해 네트워크 코어에서 상기 패킷의 상기 페이로드 섹션을 검사하는 단계와,Examining the payload section of the packet at a network core for use in determining how to route the packet to subscribers associated with information from the particular camera; 상기 검사에 기초하여 상기 패킷을 선택적으로 라우팅하는 단계Selectively routing the packet based on the check 를 포함하는 패킷 라우팅 방법.Packet routing method comprising a. 제1항에 있어서,The method of claim 1, 상기 검사 단계는 콘텐트 술어 정보가 대응하는 네트워크 수신처에 연관되어지는 구조에서 상기 페이로드 섹션의 정보가 상기 콘텐트 술어 정보와 일치하는가를 판정하는 단계를 포함하는 패킷 라우팅 방법.And the checking step includes determining whether information of the payload section matches the content predicate information in a structure in which content predicate information is associated with a corresponding network destination. 제1항에 있어서,The method of claim 1, 상기 네트워크 코어 내의 라우터에서 상기 검사 단계를 수행하는 단계를 더 포함하는 패킷 라우팅 방법.And performing the checking step at a router in the network core. 제1항에 있어서,The method of claim 1, 상기 검사 단계는 상기 페이로드 섹션의 정보에 대해 필터를 적용시키는 단계를 포함하는 패킷 라우팅 방법.The checking step includes applying a filter to the information in the payload section. 제4항에 있어서,The method of claim 4, wherein 상기 검사를 행하는 데 사용하기 위해 상기 네트워크 내의 라우터에 상기 필터를 전파시키는 단계를 더 포함하는 패킷 라우팅 방법.Propagating the filter to a router in the network for use in performing the inspection. 제1항에 있어서,The method of claim 1, 상기 수신 단계, 상기 검사 단계, 및 상기 라우팅 단계를 수행하도록 상기 네트워크 내의 라우터를 프로그래밍하는 단계를 더 포함하는 패킷 라우팅 방법.Programming a router in the network to perform the receiving step, the checking step, and the routing step. 제1항에 있어서,The method of claim 1, 상기 검사 단계는 상기 패킷의 라우팅 방식을 결정하는 데 사용하기 위해 속성을 검사하는 단계를 포함하는 패킷 라우팅 방법.The inspecting step includes inspecting an attribute for use in determining how the packet is routed. 제1항에 있어서,The method of claim 1, 선택적으로 라우팅하는 상기 단계는 상기 패킷을 디지탈 비디오 감시 시스템에 선택적으로 라우팅하는 단계를 포함하는 패킷 라우팅 방법.Selectively routing comprises selectively routing the packet to a digital video surveillance system. 제1항에 있어서,The method of claim 1, 근거리 네트워크에서 상기 검사 단계를 수행하는 단계를 더 포함하는 패킷 라우팅 방법.And performing the checking step in a local area network. 제1항에 있어서,The method of claim 1, 인터넷 서비스 제공자 위치에서 상기 검사 단계를 수행하는 단계를 더 포함하는 패킷 라우팅 방법.Performing the checking step at an internet service provider location. 제1항에 있어서,The method of claim 1, 상기 특정 카메라는 디지탈 비디오 레코더 및 전하 결합 소자를 포함하는 패킷 라우팅 방법.Wherein said particular camera comprises a digital video recorder and a charge coupled device. 제11항에 있어서,The method of claim 11, 상기 디지탈 비디오 레코더는 상기 헤더 섹션 및 상기 페이로드 섹션을 포함하는 상기 패킷을 생성하며, 상기 페이로드 섹션은 상기 특정 카메라로부터의 상기 비디오 클립에 관한 정보를 포함하는 패킷 라우팅 방법.The digital video recorder generates the packet comprising the header section and the payload section, wherein the payload section includes information about the video clip from the particular camera. 경보 서비스를 제공하는 네트워크 내의 라우터에서 메시지들을 라우팅하기 위한 방법으로서,A method for routing messages in a router in a network providing an alert service, the method comprising: 헤더 섹션, 적어도 하나의 주제, 및 특정 카메라로부터의 비디오 클립에 관한 적어도 하나의 속성을 포함하는 메시지를 수신하는 단계와,Receiving a message comprising a header section, at least one subject, and at least one attribute relating to a video clip from a particular camera; 상기 메시지로부터 상기 주제 및 상기 속성을 검색하는 단계와,Retrieving the subject and the attribute from the message; 상기 주제에 기초하여 가입을 검색하는 단계와,Searching for a subscription based on the topic; 상기 특정 카메라로부터의 정보에 관련된 가입자에게 상기 메시지를 라우팅하는 방식을 결정하기 위해 네트워크 코어에서 상기 가입에 대해 상기 속성을 적용하는 단계Applying the attribute to the subscription at the network core to determine how to route the message to a subscriber related to the information from the particular camera 를 포함하는 메시지 라우팅 방법. Message routing method comprising a. 제13항에 있어서,The method of claim 13, 상기 가입을 검색하는 단계는 상기 가입에 대응하는 필터를 검색하는 단계를 포함하는 메시지 라우팅 방법.Retrieving the subscription comprises retrieving a filter corresponding to the subscription. 제13항에 있어서,The method of claim 13, 상기 속성이 상기 가입을 만족시키면 상기 메시지를 라우팅하는 단계를 더 포함하는 메시지 라우팅 방법.Routing the message if the attribute satisfies the subscription. 제13항에 있어서,The method of claim 13, 상기 속성이 상기 가입을 만족시키지 않으면 상기 메시지를 폐기시키는 단계를 더 포함하는 메시지 라우팅 방법.Discarding the message if the attribute does not satisfy the subscription. 제13항에 있어서,The method of claim 13, 복수의 가입에 대응하는 복수의 필터를 검색하는 단계와,Retrieving a plurality of filters corresponding to the plurality of subscriptions, 상기 메시지로부터 복수의 속성을 검색하는 단계와,Retrieving a plurality of attributes from the message; 상기 필터들 각각에 대해 상기 속성 각각을 적용시켜, 대응하는 가입들 중 어느 하나가 만족되는가를 판정하는 단계와,Applying each of the attributes to each of the filters to determine which of the corresponding subscriptions is satisfied; 상기 복수의 가입 중 어느 하나가 만족되는가에 기초하여, 상기 메시지를 선택적으로 라우팅하는 단계Selectively routing the message based on which one of the plurality of subscriptions is satisfied 를 더 포함하는 메시지 라우팅 방법.Message routing method further comprising. 제13항에 있어서,The method of claim 13, 상기 네트워크 코어 내의 라우터에서 상기 적용 단계를 수행하는 단계를 더 포함하는 메시지 라우팅 방법.And performing the applying step at a router in the network core. 제13항에 있어서,The method of claim 13, 상기 특정 카메라는 디지탈 비디오 레코더 및 전하 결합 소자를 포함하는 메시지 라우팅 방법.Wherein said particular camera comprises a digital video recorder and a charge coupled device. 제19항에 있어서,The method of claim 19, 상기 디지탈 비디오 레코더는 상기 헤더 섹션, 상기 적어도 하나의 주제, 및 특정 카메라로부터의 비디오 클립에 관한 상기 적어도 하나의 속성을 포함하는 상기 메시지를 생성하는 메시지 라우팅 방법.And the digital video recorder generates the message including the header section, the at least one subject, and the at least one attribute regarding a video clip from a particular camera. 경보 서비스를 제공하는 데 사용하기 위한 네트워크 내의 라우터에서 패킷들을 라우팅하기 위한 방법으로서,A method for routing packets at a router in a network for use in providing an alert service, the method comprising: 헤더 섹션과, 특정 경보 서비스에 대한 이벤트에 관한 정보를 포함하는 페이로드 섹션을 갖는 패킷을 수신하는 단계와,Receiving a packet having a header section and a payload section containing information about an event for a particular alert service; 상기 패킷을 상기 경보 서비스의 정보에 관련된 가입자들에게 라우팅하는 방식을 결정하는 데 사용하기 위해 네트워크 코어에서 상기 패킷의 상기 페이로드 섹션을 검사하는 단계와,Examining the payload section of the packet at a network core for use in determining how to route the packet to subscribers involved in the alert service information; 상기 검사에 기초하여 상기 패킷을 선택적으로 라우팅하는 단계Selectively routing the packet based on the check 를 포함하는 패킷 라우팅 방법.Packet routing method comprising a. 경보 서비스를 제공하는 데 사용하기 위한 네트워크 내에서 패킷들을 라우팅하기 위한 장치로서,An apparatus for routing packets within a network for use in providing an alert service, the apparatus comprising: 헤더 섹션과, 특정 카메라로부터의 비디오 클립에 관한 정보를 포함하는 페이로드 섹션을 갖는 패킷을 수신하기 위한 수신 모듈과,A receiving module for receiving a packet having a header section and a payload section containing information about a video clip from a particular camera; 상기 패킷을 상기 특정 카메라로부터의 정보에 관련된 가입자들에게 라우팅하는 방식을 결정하는 데 사용하기 위해 네트워크 코어에서 상기 패킷의 상기 페이로드 섹션을 검사하기 위한 검사 모듈과,An inspection module for inspecting the payload section of the packet at a network core for use in determining how to route the packet to subscribers associated with information from the particular camera; 상기 검사에 기초하여 상기 패킷을 선택적으로 라우팅하기 위한 라우팅 모듈Routing module for selectively routing the packet based on the check 을 포함하는 패킷 라우팅 장치.Packet routing device comprising a. 제22항에 있어서,The method of claim 22, 상기 검사 모듈은 콘텐트 술어 정보가 대응하는 네트워크 수신처들 또는 인-라우터(in-router) 처리를 통제하는 대응하는 규칙들에 연관되어지는 구조에서 상기 페이로드 섹션의 정보가 상기 콘텐트 술어 정보와 일치하는가를 판정하기 위한 모듈을 포함하는 패킷 라우팅 장치.The inspection module is adapted to match the content predicate information to information in the payload section in a structure in which content predicate information is associated with corresponding network destinations or corresponding rules governing in-router processing. And a module for determining a packet routing apparatus. 제22항에 있어서,The method of claim 22, 상기 네트워크 코어 내의 라우터에서 상기 검사를 수행하기 위한 모듈을 더 포함하는 패킷 라우팅 장치.And a module for performing the inspection at a router in the network core. 제22항에 있어서,The method of claim 22, 상기 검사 모듈은 상기 페이로드 섹션의 정보에 대해 필터를 적용시키기 위한 모듈을 포함하는 패킷 라우팅 장치.The inspection module comprises a module for applying a filter to the information in the payload section. 제25항에 있어서,The method of claim 25, 상기 검사를 행하는 데 사용하기 위해 상기 네트워크 내의 라우터에 상기 필터를 전파시키기 위한 모듈을 더 포함하는 패킷 라우팅 장치. And a module for propagating the filter to a router in the network for use in performing the inspection. 제22항에 있어서, 상기 수신, 검사 및 처리를 수행하도록 상기 네트워크에서 라우터를 프로그래밍하는 모듈을 더 포함하는 패킷 라우팅 장치.23. The apparatus of claim 22 further comprising a module for programming a router in the network to perform the receiving, inspecting and processing. 제22항에 있어서, 상기 검사 모듈은 상기 패킷을 라우팅하는 방식을 결정하는 데 사용하기 위해 속성들을 검사하는 모듈을 포함하는 패킷 라우팅 장치.23. The apparatus of claim 22 wherein the inspection module includes a module for inspecting attributes for use in determining how to route the packet. 제22항에 있어서, 상기 패킷 라우팅 장치는 디지탈 비디오 레코더를 포함하는 네트워크 내에 위치하는 패킷 라우팅 장치.23. The apparatus of claim 22, wherein the packet routing apparatus is located in a network including a digital video recorder. 제22항에 있어서, 상기 특정 카메라는 디지탈 비디오 레코더 및 전하 결합 소자를 포함하는 패킷 라우팅 장치.23. The apparatus of claim 22, wherein the particular camera comprises a digital video recorder and a charge coupled device. 경보 서비스를 제공하는 네트워크에서 메시지들을 라우팅하는 장치로서, A device for routing messages in a network providing an alert service, 헤더 섹션, 적어도 하나의 주제, 및 특정 카메라로부터의 비디오 클립에 관련된 적어도 하나의 속성을 가진 메시지를 수신하는 수신 모듈;A receiving module for receiving a message having a header section, at least one subject, and at least one attribute related to a video clip from a particular camera; 상기 메시지로부터 상기 주제 및 속성을 검색하는 모듈;A module for retrieving the subject and attribute from the message; 상기 주제에 기초하여 가입을 검색하는 모듈; 및A module for retrieving a subscription based on the subject; And 상기 특정 카메라로부터의 정보에 관련된 가입자에게 상기 메시지를 라우팅하는 방식을 결정하기 위하여 네트워크 코어에서 상기 속성을 상기 가입에 적용하는 적용 모듈Application module to apply the attribute to the subscription at the network core to determine how to route the message to subscribers related to information from the particular camera 을 포함하는 메시지 라우팅 장치.Message routing device comprising a. 제31항에 있어서, 상기 가입을 검색하는 모듈은 상기 가입에 대응하는 필터를 검색하는 모듈을 포함하는 메시지 라우팅 장치.32. The apparatus of claim 31 wherein the module for retrieving a subscription comprises a module for retrieving a filter corresponding to the subscription. 제31항에 있어서, 상기 속성이 상기 가입을 만족시키는 경우에, 그리고 서비스 품질의 보증에 기초하여 상기 메시지를 선택적으로 라우팅하는 모듈을 더 포함하는 메시지 라우팅 장치.32. The apparatus of claim 31 further comprising a module for selectively routing the message if the attribute satisfies the subscription and based on a guarantee of quality of service. 제31항에 있어서, 상기 속성이 모든 가입을 만족시키지 못하는 경우에 상기 메시지를 폐기하는 모듈을 더 포함하는 메시지 라우팅 장치.32. The apparatus of claim 31 further comprising a module for discarding the message if the attribute does not satisfy all subscriptions. 제31항에 있어서, The method of claim 31, wherein 복수의 가입에 대응하는 복수의 필터를 검색하는 모듈;A module for retrieving a plurality of filters corresponding to the plurality of subscriptions; 상기 메시지로부터 복수의 속성을 검색하는 모듈;A module for retrieving a plurality of attributes from the message; 대응하는 가입들 중 어느 하나가 만족되는지를 결정하기 위하여 상기 속성들의 각각을 상기 필터들의 각각에 적용하는 모듈; 및A module that applies each of the attributes to each of the filters to determine which of the corresponding subscriptions is satisfied; And 상기 복수의 가입들 중 어느 하나가 만족되는지의 여부에 기초하여 상기 메시지를 선택적으로 라우팅하는 모듈A module for selectively routing the message based on whether one of the plurality of subscriptions is satisfied 을 더 포함하는 메시지 라우팅 장치.Message routing device further comprising. 제31항에 있어서, 상기 네트워크 코어 내의 라우터에서 상기 적용을 수행하는 하나 이상의 모듈을 더 포함하는 메시지 라우팅 장치.32. The apparatus of claim 31, further comprising one or more modules to perform the application at a router in the network core. 제31항에 있어서, 상기 메시지 라우팅 장치는 디지탈 비디오 레코더를 포함하는 네트워크 내에 위치하는 메시지 라우팅 장치.32. The message routing device of claim 31 wherein the message routing device is located in a network including a digital video recorder. 제31항에 있어서, 상기 특정 카메라는 디지탈 비디오 카메라 및 전하 결합 소자를 포함하는 메시지 라우팅 장치.32. The apparatus of claim 31 wherein the particular camera comprises a digital video camera and a charge coupled device. 경보 서비스를 제공하는 데 사용되는 네트워크에서 패킷들을 라우팅하는 시스템으로서, A system for routing packets in a network used to provide alert service, 디지탈 비디오 출력을 생성하는 복수의 디지탈 비디오 카메라;A plurality of digital video cameras for generating digital video outputs; 상기 디지탈 비디오 카메라들을 접속시키는 근거리 네트워크(LAN);A local area network (LAN) connecting the digital video cameras; 상기 LAN에 접속되어, 상기 디지탈 비디오 출력을 발행하는 발행자 에이전트;A publisher agent connected to the LAN to issue the digital video output; 상기 발행자 에이전트에 접속되는 발행-가입 네트워크; 및A publish-subscribe network connected to the publisher agent; And 상기 발행된 디지탈 비디오 출력을 상기 발행-가입 네트워크를 통해 수신하는 디지탈 비디오 감시 시스템(DVSS)Digital Video Surveillance System (DVSS) for receiving the published digital video output via the publish-subscribe network 을 포함하는 패킷 라우팅 시스템.Packet routing system comprising a. 제39항에 있어서, 상기 발행-가입 네트워크에 접속되어, 상기 디지탈 비디오 출력에 가입하고, 상기 가입된 디지탈 비디오 출력을 상기 DVSS로 푸시하는 가입자 에이전트를 더 포함하는 패킷 라우팅 시스템.40. The system of claim 39, further comprising a subscriber agent connected to the publish-subscribe network, subscribing to the digital video output, and pushing the subscribed digital video output to the DVSS. 제39항에 있어서, 상기 발행-가입 네트워크는 복수의 지능형 라우터를 포함하는 패킷 라우팅 시스템.40. The system of claim 39 wherein the publish-subscribe network comprises a plurality of intelligent routers. 제41항에 있어서, 상기 지능형 라우터는42. The system of claim 41 wherein the intelligent router is 헤더 섹션과, 상기 복수의 디지탈 비디오 카메라 중 하나로부터의 디지탈 비디오 컨텐트에 관련된 정보를 포함하는 페이로드 섹션을 가진 패킷을 수신하는 수신 모듈;A receiving module for receiving a packet having a header section and a payload section containing information related to digital video content from one of the plurality of digital video cameras; 상기 디지탈 비디오 카메라로부터의 정보에 관련된 가입자들에게 상기 패킷을 라우팅하는 방식을 결정하는 데 사용하기 위해 네트워크 코어에서 상기 패킷의 페이로드 섹션을 검사하는 검사 모듈; 및An inspection module for inspecting the payload section of the packet at a network core for use in determining how to route the packet to subscribers associated with the information from the digital video camera; And 상기 검사에 기초하여 상기 패킷을 선택적으로 라우팅하는 라우트 모듈Route module to selectively route the packet based on the check 을 포함하는 패킷 라우팅 시스템.Packet routing system comprising a. 가입자들에게 디지탈 컨텐트를 분배하는 네트워크로서,A network for distributing digital content to subscribers, 복수의 사용자 기계;A plurality of user machines; 디지탈 컨텐트를 규칙적으로 분배하는 중앙 분배기;A central distributor that regularly distributes digital content; 상기 분배된 디지탈 컨텐트를 수신하여 캐싱하는 복수의 캐시 서버-상기 캐시 서버는 상기 캐싱된 디지탈 컨텐트의 일부에 대한 사용자 요구들을 사용자 기계로부터 주기적으로 수신하고, 상기 요구된 디지탈 컨텐트를 상기 사용자 기계들로 전송함-; 및A plurality of cache servers that receive and cache the distributed digital content, the cache server periodically receiving user requests for a portion of the cached digital content from a user machine, and receiving the requested digital content to the user machines Sent box; And 상기 중앙 분배기로부터 상기 분배된 디지탈 컨텐트를 파일들로서 수신하고, 발행-가입 컨텐트 기반 라우팅을 이용하여 상기 디지탈 컨텐트 파일들을 상기 복수의 캐시 서버로 전송하는 라우팅 박스-상기 디지탈 컨텐트 파일은 발행물(publication)들이며, 상기 사용자 요구는 가입들임-A routing box that receives the distributed digital content from the central distributor as files and transmits the digital content files to the plurality of cache servers using publish-subscribe content-based routing; the digital content file is publications. , The user request is subscriptions- 를 포함하는 디지탈 컨텐트 분배 네트워크.Digital content distribution network comprising a. 제43항에 있어서, 상기 라우팅 박스는 제1 라우팅 박스이고, 상기 네트워크는 상기 복수의 캐시 서버와 함께 위치하는 제2 라우팅 박스를 더 포함하며, 상기 제1 라우팅 박스는 상기 디지탈 컨텐트 파일들을 상기 복수의 캐시 서버 중 적어도 하나와 함께 위치하는 상기 제2 라우팅 박스로 라우팅하는 디지탈 컨텐트 분배 네트워크.44. The system of claim 43, wherein the routing box is a first routing box, and wherein the network further comprises a second routing box located with the plurality of cache servers, wherein the first routing box includes the plurality of digital content files. And route to the second routing box located with at least one of the cache servers in the server. 제43항에 있어서, 상기 복수의 캐시 서버는 네트워크 서비스 제공자에 위치하는 디지탈 컨텐트 분배 네트워크.44. The digital content distribution network of claim 43 wherein the plurality of cache servers is located at a network service provider. 제43항에 있어서, 상기 복수의 캐시 서버는 상기 중앙 분배기에 의해 분배된 모든 디지탈 컨텐트를 저장하는 제1 레벨의 캐시 서버들인 디지탈 컨텐트 분배 네트워크.44. The digital content distribution network of claim 43 wherein the plurality of cache servers are first level cache servers that store all digital content distributed by the central distributor. 제46항에 있어서, 상기 중앙 분배기에 의해 분배된 디지탈 컨텐트의 일부를 저장하는 제2 레벨의 캐시 서버들을 더 포함하는 디지탈 컨텐트 분배 네트워크.47. The digital content distribution network of claim 46 further comprising second level cache servers that store a portion of the digital content distributed by the central distributor. 제47항에 있어서, 상기 라우팅 박스는 제1 라우팅 박스이고, 상기 네트워크는 상기 제2 레벨의 캐시 서버들과 함께 위치하는 제2 라우팅 박스를 더 포함하며, 상기 제1 라우팅 박스 및 상기 제2 라우팅 박스는 발행-가입 컨텐트 기반 라우팅을 이용하여 디지탈 컨텐트 파일들을 상기 제1 레벨의 캐시 서버들에서 상기 제2 레벨의 캐시 서버들로 전송하는 디지탈 컨텐트 분배 네트워크.48. The system of claim 47 wherein the routing box is a first routing box and the network further comprises a second routing box located with the cache servers of the second level. The box transmits the digital content files from the first level cache servers to the second level cache servers using publish-subscribe content-based routing. 제48항에 있어서, 상기 라우팅 박스들 각각은, The method of claim 48, wherein each of the routing boxes, 헤더 섹션과, 디지탈 컨텐트 파일에 관련된 정보를 포함하는 페이로드 섹션을 가진 패킷을 수신하는 수신 모듈; A receiving module for receiving a packet having a header section and a payload section containing information related to the digital content file; 상기 패킷을 라우팅하는 방식을 결정하는 데 사용하기 위해 상기 패킷의 상기 페이로드 섹션을 검사하는 검사 모듈; 및An inspection module for examining the payload section of the packet for use in determining how to route the packet; And 상기 검사에 기초하여 상기 패킷을 상기 제1 레벨의 캐시 서버들에서 상기 제2 레벨의 캐시 서버들로 선택적으로 라우팅하는 라우트 모듈A route module for selectively routing the packet from the first level cache servers to the second level cache servers based on the check 을 포함하는 디지탈 컨텐트 분배 네트워크.Digital content distribution network comprising a. 제47항에 있어서, 상기 제2 레벨의 캐시 서버들에 저장된 디지탈 컨텐트의 일부는 수신된 사용자 요구의 히스토리에 기초하여 결정되는 디지탈 컨텐트 분배 네트워크.48. The digital content distribution network of claim 47 wherein a portion of the digital content stored at the second level of cache servers is determined based on a history of received user requests. 제47항에 있어서, 상기 제2 레벨의 캐시 서버들은 상기 사용자 요구를 직접 수신하며, 상기 제2 레벨의 캐시 서버들에 의해 저장되지 않은 디지탈 컨텐트에 대한 사용자 요구를 상기 제1 레벨의 캐시 서버들로 전송하는 디지탈 컨텐트 분배 네트워크.48. The cache server of claim 47, wherein the second level cache servers directly receive the user request and wherein the second level cache servers receive user requests for digital content not stored by the second level cache servers. Digital content distribution network for transmission. 제43항에 있어서, 상기 라우팅 박스는,The method of claim 43, wherein the routing box, 헤더 섹션과, 디지탈 컨텐트 파일에 관련된 정보를 포함하는 페이로드 섹션을 가진 패킷을 수신하는 수신 모듈;A receiving module for receiving a packet having a header section and a payload section containing information related to the digital content file; 상기 패킷을 라우팅하는 방식을 결정하는 데 사용하기 위해 상기 패킷의 페이로드 섹션을 검사하는 검사 모듈; 및An inspection module for inspecting the payload section of the packet for use in determining how to route the packet; And 상기 검사에 기초하여 상기 패킷을 상기 중앙 분배기에서 상기 복수의 캐시 서버로 선택적으로 라우팅하는 라우트 모듈A route module for selectively routing the packet from the central distributor to the plurality of cache servers based on the check 을 포함하는 디지탈 컨텐트 분배 네트워크.Digital content distribution network comprising a. 제43항에 있어서, 상기 중앙 분배기는 하나 이상의 서버를 포함하는 디지탈 컨텐트 분배 네트워크.44. The digital content distribution network of claim 43 wherein the central distributor comprises one or more servers. 제43항에 있어서, 상기 디지탈 컨텐트는 비디오, 음악 및 소프트웨어를 포함하는 디지탈 컨텐트 분배 네트워크.44. The digital content distribution network of claim 43 wherein the digital content comprises video, music and software. 네트워크에서 디지탈 컨텐트를 가입자들에게 분배하는 방법으로서,A method of distributing digital content to subscribers in a network, 중앙 분배기에서 디지탈 컨텐트를 분배하는 단계;Distributing digital content at a central distributor; 상기 분배된 디지탈 컨텐트를 복수의 캐시 서버로 컨텐트 기반 라우팅하는 단계;Content-based routing the distributed digital content to a plurality of cache servers; 상기 복수의 캐시 서버에서 상기 컨텐트 기반 라우팅된 디지탈 컨텐트를 캐싱하는 단계;Caching the content-based routed digital content at the plurality of cache servers; 요구된 캐시 디지탈 컨텐트에 대한 사용자 가입들을 수신하는 단계; 및Receiving user subscriptions for the requested cached digital content; And 상기 수신된 사용자 가입들에 기초하여, 요구된 디지탈 컨텐트를 상기 복수의 캐시 서버로부터 사용자들에게 전송하는 단계Based on the received user subscriptions, sending the requested digital content from the plurality of cache servers to users. 를 포함하는 디지탈 컨텐트 분배 방법.Digital content distribution method comprising a. 제55항에 있어서, 상기 컨텐트 기반 라우팅 단계는56. The method of claim 55, wherein the content based routing step 헤더 섹션과, 디지탈 컨텐트 파일에 관련된 정보를 포함하는 페이로드 섹션을 가진 패킷을 수신하는 단계;Receiving a packet having a header section and a payload section containing information related to the digital content file; 상기 패킷을 라우팅하는 방식을 결정하는 데 사용하기 위해 상기 패킷의 페이로드 섹션을 검사하는 단계; 및Examining the payload section of the packet for use in determining how to route the packet; And 상기 검사에 기초하여 상기 패킷을 상기 복수의 캐시 서버로 선택적으로 라우팅하는 단계Selectively routing the packet to the plurality of cache servers based on the check 를 포함하는 디지탈 컨텐트 분배 방법.Digital content distribution method comprising a. 제56항에 있어서, 상기 검사 단계는 상기 컨텐트 술어 정보와 대응하는 수신처들을 연관시키는 구조에서 상기 페이로드 섹션의 정보가 상기 컨텐트 술어 정보와 일치하는지를 결정하는 단계를 포함하는 디지탈 컨텐트 분배 방법.59. The method of claim 56 wherein the inspecting step includes determining whether information in the payload section matches the content predicate information in a structure associating destinations corresponding to the content predicate information. 제56항에 있어서, 상기 검사 단계는 상기 페이로드 섹션의 정보에 필터를 적용하는 단계를 포함하는 디지탈 컨텐트 분배 방법.59. The method of claim 56 wherein the inspecting step includes applying a filter to information in the payload section. 제58항에 있어서, 상기 검사를 행하는 데 사용하기 위해 상기 네트워크에서 라우팅 박스로 상기 필터를 전파시키는 단계를 더 포함하는 디지탈 컨텐트 분배 방법.59. The method of claim 58 further comprising propagating the filter from the network to a routing box for use in performing the inspection. 제56항에 있어서, 상기 수신, 검사 및 라우팅 단계를 수행하도록 상기 네트워크에서 라우팅 박스를 프로그래밍하는 단계를 더 포함하는 디지탈 컨텐트 분배 방법.59. The method of claim 56 further comprising programming a routing box in the network to perform the receiving, inspecting and routing steps. 제56항에 있어서, 상기 검사 단계는 상기 패킷을 라우팅하는 방식을 결정하는 데 사용하기 위해 속성들을 검사하는 단계를 포함하는 디지탈 컨텐트 분배 방법.59. The method of claim 56 wherein the inspecting step includes inspecting attributes for use in determining how to route the packet. 제56항에 있어서, 라우팅 박스에서 상기 검사 단계를 행하는 단계를 더 포함하는 디지탈 컨텐트 분배 방법.59. The method of claim 56 further comprising performing the inspecting step in a routing box. 제55항에 있어서, 상기 복수의 캐시 서버는 제1 레벨의 캐시 서버이며, 상기 방법은 컨텐트 기반 라우팅을 이용하여, 캐싱된 디지탈 컨텐트를 제2 레벨의 캐시 서버들로 전송하는 단계를 더 포함하는 디지탈 컨텐트 분배 방법.56. The method of claim 55, wherein the plurality of cache servers is a first level cache server, and the method further comprises transmitting cached digital content to a second level cache servers using content based routing. Digital Content Distribution Method. 제63항에 있어서, 상기 요구된 디지탈 컨텐트가 상기 제2 레벨의 캐시 서버들에 있는지를 결정하는 단계를 더 포함하는 디지탈 컨텐트 분배 방법.64. The method of claim 63 further comprising determining whether the requested digital content is at the second level of cache servers. 제64항에 있어서, 상기 결정에 기초하여, 수신된 사용자 가입들을 상기 제1 레벨의 캐시 서버들로 전송하는 단계를 더 포함하는 디지탈 컨텐트 분배 방법.65. The method of claim 64, further comprising sending received user subscriptions to the first level cache servers based on the determination. 제63항에 있어서,The method of claim 63, wherein 상기 전송 단계는, 수신된 사용자 가입들의 히스토리에 기초한 콘텐트 기반 라우팅을 이용하여, 캐싱된 디지털 콘텐트를 상기 제2 레벨의 캐시 서버들로 전송하는 디지탈 컨텐트 분배 방법.And wherein said transmitting step transmits the cached digital content to said second level cache servers using content based routing based on the history of received user subscriptions. 서비스 품질 보증(a quality of service guarantee)과 관련하여 네트워크 내의 라우터에서 패킷을 라우팅하는 방법으로서,A method of routing packets at routers in a network in relation to a quality of service guarantee. 헤더 섹션과 페이로드 섹션을 갖는 패킷을 수신하는 단계와,Receiving a packet having a header section and a payload section, 상기 패킷을 라우팅하는 방식을 결정하는데 이용하기 위해 네트워크 코어에서 상기 패킷의 페이로드 섹션을 검사하는 단계와,Examining the payload section of the packet at a network core for use in determining how to route the packet; 상기 패킷에 대한 서비스 품질 보증을 결정하는 단계와,Determining a quality of service guarantee for the packet; 상기 검사와 상기 서비스 품질 보증에 기초하여 상기 패킷을 선택적으로 라우팅하는 단계Selectively routing the packet based on the check and the quality of service guarantee 를 포함하는 패킷 라우팅 방법.Packet routing method comprising a. 제67항에 있어서,The method of claim 67, 상기 검사 단계는, 콘텐트 술어 정보가 대응하는 네트워크 수신처와 연관되어 있는 구조에서 상기 콘텐트 술어 정보가 상기 페이로드 섹션에서의 정보와 일치하는지 여부를 결정하는 단계를 포함하는 패킷 라우팅 방법.And the checking step includes determining whether the content predicate information matches the information in the payload section in a structure in which content predicate information is associated with a corresponding network destination. 제67항에 있어서,The method of claim 67, 상기 네트워크 코어의 라우터에서 상기 검사 단계를 수행하는 단계를 더 포함하는 패킷 라우팅 방법.And performing the checking step at a router in the network core. 제67항에 있어서,The method of claim 67, 상기 검사 단계는, 필터를 상기 페이로드 섹션의 정보에 매칭시키는 단계를 포함하는 패킷 라우팅 방법.The inspecting step includes matching a filter to information in the payload section. 제70항에 있어서,The method of claim 70, 상기 검사를 수행하는데 이용하기 위해 상기 필터를 상기 네트워크의 라우터에 전파시키는 단계를 더 포함하는 패킷 라우팅 방법.Propagating the filter to a router in the network for use in performing the inspection. 제67항에 있어서,The method of claim 67, 상기 수신 단계, 검사 단계, 및 라우팅 단계를 수행하도록 상기 네트워크의 라우터를 프로그래밍하는 단계를 더 포함하는 패킷 라우팅 방법.Programming a router of the network to perform the receiving, inspecting, and routing steps. 제67항에 있어서,The method of claim 67, 상기 검사 단계는, 상기 패킷을 라우팅하는 방식을 결정하거나 상기 패킷을 모두 드롭(drop)할지 여부를 결정하는데 이용하기 위해 속성들을 검사하는 단계를 포함하는 패킷 라우팅 방법.The inspecting step includes inspecting attributes for use in determining how to route the packet or in determining whether to drop all of the packets. 네트워크 내의 라우터에서 메시지들을 라우팅하는 방법으로서,A method of routing messages at routers in a network, 헤더 섹션, 적어도 하나의 주제, 및 적어도 하나의 속성을 갖는 메시지를 수신하는 단계와,Receiving a message having a header section, at least one subject, and at least one attribute, 상기 메시지로부터 상기 주제와 속성을 검색하는 단계와,Retrieving the subject and attribute from the message; 상기 주제에 기초하여 가입을 검색하는 단계와,Searching for a subscription based on the topic; 상기 메시지에 대한 서비스 품질 보증을 결정하는 단계와,Determining a quality of service guarantee for the message; 상기 메시지를 라우팅하는 방식을 결정하기 위해 네트워크 코어에서 상기 속성을 상기 가입에 적용하는 단계와,Applying the attribute to the subscription at a network core to determine how to route the message; 상기 적용 및 상기 서비스 품질 보증에 기초하여 상기 메시지를 선택적으로 라우팅하는 단계Selectively routing the message based on the application and the quality of service guarantee 를 포함하는 메시지 라우팅 방법.Message routing method comprising a. 제74항에 있어서,The method of claim 74, wherein 상기 가입을 검색하는 단계는, 상기 가입에 대응하는 필터를 검색하는 단계를 포함하는 메시지 라우팅 방법.Retrieving the subscription comprises retrieving a filter corresponding to the subscription. 제74항에 있어서,The method of claim 74, wherein 상기 속성이 상기 가입을 만족하면 상기 메시지를 라우팅하는 단계를 더 포함하는 메시지 라우팅 방법.Routing the message if the attribute satisfies the subscription. 제74항에 있어서,The method of claim 74, wherein 상기 속성이 상기 가입을 만족하지 않으면 상기 메시지를 폐기하는 단계를 더 포함하는 메시지 라우팅 방법.Discarding the message if the attribute does not satisfy the subscription. 제74항에 있어서,The method of claim 74, wherein 복수의 가입에 대응하는 복수의 필터를 검색하는 단계와,Retrieving a plurality of filters corresponding to the plurality of subscriptions, 상기 메시지로부터 복수의 속성을 검색하는 단계와,Retrieving a plurality of attributes from the message; 대응하는 가입들 중 어느 하나가 만족되는지를 결정하기 위해, 상기 속성의 각각을 상기 필터의 각각에 매칭시키는 단계와,Matching each of the attributes to each of the filters to determine which of the corresponding subscriptions is satisfied; 상기 복수의 가입 중 어느 하나가 만족되는지 여부에 기초하여 상기 메시지를 선택적으로 라우팅하는 단계Selectively routing the message based on whether one of the plurality of subscriptions is satisfied 를 더 포함하는 메시지 라우팅 방법.Message routing method further comprising. 삭제delete 서비스 품질 보장과 관련하여 네트워크에서 패킷들을 라우팅하는 장치로서,A device for routing packets in a network in connection with quality of service, 헤더 섹션과 페이로드 섹션을 갖는 패킷을 수신하는 모듈과,A module for receiving a packet having a header section and a payload section; 상기 패킷을 라우팅하는 방식을 결정하는데 이용하기 위해 네트워크 코어에서 상기 패킷의 페이로드 섹션을 검사하는 적어도 하나의 모듈과,At least one module for examining a payload section of the packet at a network core for use in determining how to route the packet; 상기 패킷에 대한 서비스 품질 보증을 결정하는 모듈과,A module for determining a quality of service guarantee for the packet; 위에서 결정된 서비스 품질 보증 및 검사 결과에 기초하여, 상기 패킷을 선택적으로 라우팅하는 모듈A module for selectively routing the packet based on the QA and inspection result determined above 을 포함하는 패킷 라우팅 장치.Packet routing device comprising a. 제80항에 있어서,The method of claim 80, 상기 검사 모듈은, 콘텐트 술어 정보가 대응하는 네트워크 수신처들 또는 인-라우터 처리를 관리하는 대응 규칙들과 연관되어 있는 구조에서 상기 콘텐트 술어 정보가 상기 페이로드 섹션의 정보와 일치하는지 여부를 결정하는 모듈을 포함하는 패킷 라우팅 장치.The checking module is configured to determine whether the content predicate information matches the information of the payload section in a structure in which content predicate information is associated with corresponding network destinations or corresponding rules governing in-router processing. Packet routing device comprising a. 제80항에 있어서,The method of claim 80, 상기 네트워크 코어의 라우터에서 상기 검사 단계를 수행하는 모듈을 더 포함하는 패킷 라우팅 장치.And a module for performing the checking step at a router in the network core. 제80항에 있어서,The method of claim 80, 상기 검사 모듈은 필터를 상기 페이로드 섹션의 정보에 매칭시키는 모듈을 포함하는 패킷 라우팅 장치.The inspection module comprises a module for matching a filter to information in the payload section. 제83항에 있어서,84. The method of claim 83, 상기 검사를 수행하는데 이용하기 위해 상기 필터를 상기 네트워크의 라우터에 전파시키는 모듈을 더 포함하는 패킷 라우팅 장치.And a module for propagating the filter to routers in the network for use in performing the inspection. 제80항에 있어서,The method of claim 80, 상기 수신, 검사, 및 라우팅을 수행하도록 상기 네트워크의 라우터를 프로그래밍하는 모듈을 더 포함하는 패킷 라우팅 장치.And a module for programming the routers of the network to perform the receiving, inspecting, and routing. 제80항에 있어서,The method of claim 80, 상기 패킷 라우팅 장치는 라우터인 패킷 라우팅 장치.The packet routing device is a router. 네트워크에서 메시지들을 라우팅하는 장치로서,A device for routing messages in a network, 헤더 섹션, 적어도 하나의 주제, 및 적어도 하나의 속성을 갖는 메시지를 수신하는 모듈과,A module for receiving a message having a header section, at least one subject, and at least one attribute; 상기 메시지로부터 상기 주제와 속성을 검색하는 모듈과,A module for retrieving the subject and attribute from the message; 상기 주제에 기초하여 가입을 검색하는 모듈과,A module for searching for subscriptions based on the topic; 상기 메시지를 라우팅하는 방식을 결정하기 위해 네트워크 코어에서 상기 속성을 상기 가입에 매칭시키는 모듈과,A module for matching the attribute to the subscription at a network core to determine how to route the message; 상기 메시지에 대해 서비스 품질 보증을 결정하는 모듈Module for determining a quality of service guarantee for said message 을 포함하는 메시지 라우팅 장치.Message routing device comprising a. 제87항에 있어서,88. The method of claim 87 wherein 상기 가입을 검색하는 모듈은, 상기 가입에 대응하는 필터를 검색하는 모듈을 포함하는 메시지 라우팅 장치.The module for retrieving the subscription includes a module for retrieving a filter corresponding to the subscription. 제87항에 있어서,88. The method of claim 87 wherein 상기 속성이 상기 가입을 만족하는 경우, 그리고 상기 서비스 품질 보증에 기초하여, 상기 메시지를 선택적으로 라우팅하는 모듈을 더 포함하는 메시지 라우팅 장치.And if the attribute satisfies the subscription, and based on the quality of service guarantee, selectively routing the message. 제87항에 있어서,88. The method of claim 87 wherein 상기 가입은 상기 장치에 저장된 가입들로부터 검색되고, 상기 장치는 상기 속성이 상기 장치에 저장된 가입들 중 어느 것도 만족시키지 않으면 상기 메시지를 폐기하는 모듈을 더 포함하는 메시지 라우팅 장치.The subscription is retrieved from subscriptions stored on the device, and the device further comprises a module to discard the message if the attribute does not satisfy any of the subscriptions stored on the device. 제87항에 있어서,88. The method of claim 87 wherein 복수의 가입에 대응하는 복수의 필터를 검색하기 위한 모듈;A module for retrieving a plurality of filters corresponding to the plurality of subscriptions; 상기 메시지로부터 복수의 속성을 검색하기 위한 모듈;A module for retrieving a plurality of attributes from the message; 상기 속성들 각각을 상기 필터들 각각에 매칭시켜 대응하는 가입들 중 어느 하나가 만족하는지를 판정하는 필터링 모듈; 및A filtering module for matching each of the attributes to each of the filters to determine which one of the corresponding subscriptions is satisfied; And 상기 복수의 가입 중 어느 하나가 만족하는지 여부에 기초하여 상기 메시지를 선택적으로 라우팅하기 위한 모듈A module for selectively routing the message based on whether any one of the plurality of subscriptions is satisfied 을 포함하는 메시지 라우팅 장치.Message routing device comprising a. 제87항에 있어서,88. The method of claim 87 wherein 상기 네트워크 코어의 라우터에서 필터링 단계를 실행하기 위한 하나 이상의 모듈을 더 포함하는 메시지 라우팅 장치.And at least one module for executing a filtering step at a router in the network core. 제87항에 있어서, 상기 메시지 라우팅 장치는 라우터인 메시지 라우팅 장치.88. The apparatus of claim 87 wherein the message routing apparatus is a router. 멀티캐스트 네트워크 내의 라우터에서 데이터의 패킷들을 라우팅하고 캐싱하는 방법으로서,A method of routing and caching packets of data at a router in a multicast network, the method comprising: 헤더 섹션 및 페이로드 섹션을 갖는 패킷을 수신하는 단계;Receiving a packet having a header section and a payload section; 상기 패킷을 가입자에게 라우팅하는 방식을 결정하는데 사용하기 위해 네트워크 코어에서 패킷의 페이로드 섹션을 검사하는 단계;Examining the payload section of the packet at a network core for use in determining how to route the packet to a subscriber; 상기 검사에 기초하여 상기 패킷을 선택적으로 라우팅하는 단계; 및Selectively routing the packet based on the check; And 상기 네트워크 코어에서 상기 패킷으로부터의 데이터를 로컬 캐싱하는 단계Local caching of data from the packet at the network core 를 포함하는 라우팅 및 캐싱 방법.Routing and caching method comprising a. 제94항에 있어서, 라우터에서 상기 검사 단계를 수행하는 단계를 더 포함하는 라우팅 및 캐싱 방법.95. The method of claim 94, further comprising performing the checking step at a router. 제94항에 있어서, 상기 검사 단계는 상기 페이로드 섹션의 정보에 필터를 적용하는 단계를 포함하는 라우팅 및 캐싱 방법.95. The method of claim 94 wherein the inspecting step includes applying a filter to information in the payload section. 제96항에 있어서, 상기 검사를 실시하는데 사용하기 위해 상기 네트워크의 라우터로 상기 필터를 전파시키는 단계를 더 포함하는 라우팅 및 캐싱 방법.97. The method of claim 96 further comprising propagating the filter to a router in the network for use in conducting the check. 제94항에 있어서, 상기 수신 단계, 검사 단계, 라우팅 단계를 수행하도록 상기 네트워크의 라우터를 프로그래밍하는 단계를 더 포함하는 라우팅 및 캐싱 방법.95. The method of claim 94, further comprising programming a router of the network to perform the receiving, inspecting, and routing steps. 제94항에 있어서, 상기 검사 단계는 상기 패킷을 라우팅하는 방식을 결정하는데 사용하기 위해 속성들을 검사하는 단계를 포함하는 라우팅 및 캐싱 방법.95. The method of claim 94 wherein the inspecting step includes inspecting attributes for use in determining how to route the packet. 제94항에 있어서, 상기 캐싱된 데이터를 타임 마킹하는 단계를 더 포함하는 라우팅 및 캐싱 방법.95. The method of claim 94, further comprising time marking the cached data. 제94항에 있어서, 상기 캐싱된 데이터를 인덱싱하는 단계를 더 포함하는 라우팅 및 캐싱 방법.95. The method of claim 94, further comprising indexing the cached data. 제94항에 있어서,95. The method of claim 94, 데이터 요청을 수신하는 단계; 및Receiving a data request; And 상기 캐싱된 데이터가 상기 요청을 만족하는지 판정하는 단계Determining if the cached data satisfies the request 를 더 포함하는 라우팅 및 캐싱 방법.Routing and caching method further comprising. 제94항에 있어서, 엣지 라우팅 노드에서 상기 패킷으로부터의 데이터를 로컬 캐싱하는(locally caching) 단계를 더 포함하는 라우팅 및 캐싱 방법.95. The method of claim 94, further comprising locally caching data from the packet at an edge routing node. 제94항에 있어서, 시간 프레임 T의 만료후에, 상기 캐싱된 데이터를 제거하는 단계를 더 포함하는 라우팅 및 캐싱 방법.95. The method of claim 94, further comprising, after expiration of time frame T, removing the cached data. 데이터의 패킷들을 라우팅하고 캐싱하기 위한 네트워크로서,A network for routing and caching packets of data, 헤더 섹션 및 페이로드 섹션을 갖는 패킷을 수신하고 라우팅하는 엣지 라우팅 노드; 및An edge routing node for receiving and routing packets having a header section and a payload section; And 상기 패킷을 수신하고 라우팅하는 하나 이상의 코어 라우팅 노드를 포함하고,At least one core routing node for receiving and routing the packet, 상기 엣지 라우팅 노드는,The edge routing node, 상기 수신된 패킷을 라우팅하는 지능형 라우터; 및An intelligent router for routing the received packet; And 상기 지능형 라우터와 동작상 연결된 캐시 관리자를 포함하고,A cache manager operatively associated with the intelligent router, 상기 지능형 라우터는,The intelligent router, 상기 패킷을 가입자들에게 라우팅하는 방식을 결정하는데 사용하기 위해 네트워크 코어에서 패킷의 페이로드 섹션을 검사하기 위한 명령; 및 Inspecting the payload section of the packet at the network core for use in determining how to route the packet to subscribers; And 상기 검사에 기초하여 패킷을 선택적으로 라우팅하기 위한 명령을 포함하고,Instructions for selectively routing a packet based on the inspection, 상기 캐시 관리자는 상기 패킷으로부터의 데이터를 로컬 캐시에 로컬 캐싱하기 위한 명령을 포함하는 라우팅 및 캐싱 네트워크.The cache manager includes instructions for locally caching data from the packet into a local cache. 제105항에 있어서, 상기 엣지 라우팅 노드에 동작가능하게 연결되어,107. The system of claim 105, operatively connected to the edge routing node, 캐싱된 데이터의 위치를 결정하기 위한 명령;Instructions for determining a location of cached data; 상기 로컬 캐시로부터 캐싱된 데이터를 검색하기 위한 명령; 및Instructions for retrieving cached data from the local cache; And 검색된 캐싱된 데이터를 처리하기 위한 명령Commands for Processing Retrieved Cached Data 을 포함하는 에이전트를 더 포함하는 라우팅 및 캐싱 네트워크.The routing and caching network further comprises an agent comprising. 제105항에 있어서, 상기 하나 이상의 코어 라우팅 노드중 하나는 상기 엣지 라우팅 노드로부터의 직접 업스트림이고,107. The system of claim 105, wherein one of the one or more core routing nodes is directly upstream from the edge routing node, 상기 직접 업스트림 코어 라우팅 노드는,The direct upstream core routing node is 상기 수신된 패킷을 라우팅하는 지능형 라우터; 및An intelligent router for routing the received packet; And 상기 지능형 라우터와 동작상 연결된 캐시 관리자를 포함하고,A cache manager operatively associated with the intelligent router, 상기 지능형 라우터는,The intelligent router, 상기 패킷을 가입자에게 라우팅하는 방식을 결정하는 데 사용하기 위해 네트워크 코어에서 패킷의 페이로드 섹션을 검사하기 위한 명령; 및 Inspecting the payload section of the packet at a network core for use in determining how to route the packet to a subscriber; And 상기 검사에 기초하여 패킷을 선택적으로 라우팅하기 위한 명령을 포함하고,Instructions for selectively routing a packet based on the inspection, 상기 캐시 관리자는 상기 패킷으로부터의 데이터를 로컬 캐시에 로컬 캐싱하기 위한 명령을 포함하는 라우팅 및 캐싱 네트워크.The cache manager includes instructions for locally caching data from the packet into a local cache. 제105항에 있어서, 복수의 채널에 특성을 제공하는 복수의 채널 관리자를 더 포함하는 라우팅 및 캐싱 네트워크.107. The routing and caching network of claim 105, further comprising a plurality of channel managers providing characteristics for the plurality of channels. 제105항에 있어서, 상기 캐시 관리자는 캐싱된 데이터를 타임 마킹하기 위한 명령을 더 포함하는 라우팅 및 캐싱 네트워크.107. The routing and caching network of claim 105, wherein the cache manager further includes instructions for time marking cached data. 제105항에 있어서, 상기 캐시 관리자는 캐싱된 데이터를 인덱싱하기 위한 명령을 더 포함하는 라우팅 및 캐싱 네트워크.107. The routing and caching network of claim 105, wherein the cache manager further includes instructions for indexing cached data. 제105항에 있어서, 상기 캐시 관리자는107. The cache manager of claim 105, wherein the cache manager is 데이터 요청을 수신하기 위한 명령; 및Instructions for receiving a data request; And 상기 캐싱된 데이터가 상기 요청을 만족하는지 판정하기 위한 명령Instructions for determining if the cached data satisfies the request 을 더 포함하는 라우팅 및 캐싱 네트워크.The routing and caching network further includes. 멀티캐스트 네트워크에서 데이터의 패킷들을 라우팅하고 캐싱하는 장치로서,An apparatus for routing and caching packets of data in a multicast network, the apparatus comprising: 복수의 프로세서를 포함하고, Including a plurality of processors, 상기 복수의 프로세서는,The plurality of processors, 헤더 섹션 및 페이로드 섹션을 갖는 패킷을 수신하기 위한 명령;Instructions for receiving a packet having a header section and a payload section; 상기 패킷을 가입자에게 라우팅하는 방식을 결정하는데 사용하기 위해 네트워크 코어에서 상기 패킷의 페이로드 섹션을 검사하기 위한 명령;Inspecting the payload section of the packet at a network core for use in determining how to route the packet to a subscriber; 상기 검사에 기초하여 상기 패킷을 선택적으로 라우팅하기 위한 명령; 및Selectively route the packet based on the check; And 상기 네트워크 코어의 상기 패킷으로부터의 데이터를 로컬 캐싱하기 위한 명령Local caching of data from the packet of the network core 을 실행하도록 구성된 라우팅 및 캐싱 장치.Routing and caching devices configured to run. 제112항에 있어서, 상기 복수의 프로세서는 제1 프로세서 및 제2 프로세서를 포함하고, 상기 제1 프로세서는 상기 검사 및 선택적 라우팅 명령을 실행하고, 상기 제2 프로세서는 상기 로컬 캐싱 명령을 실행하는 라우팅 및 캐싱 장치.118. The system of claim 112, wherein the plurality of processors comprises a first processor and a second processor, the first processor to execute the check and selective routing instructions, and the second processor to execute the local caching instructions. And caching devices.
KR1020057000385A 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 KR100985237B1 (en)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US39463102P 2002-07-08 2002-07-08
US39471402P 2002-07-08 2002-07-08
US39464102P 2002-07-08 2002-07-08
US39456102P 2002-07-08 2002-07-08
US60/394,631 2002-07-08
US60/394,641 2002-07-08
US60/394,561 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 (en) 2005-02-21
KR100985237B1 true KR100985237B1 (en) 2010-10-04

Family

ID=30119330

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057000385A KR100985237B1 (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

Country Status (6)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101487859B1 (en) 2014-01-15 2015-02-02 주식회사 이디엄 Method for Collecting UDP Packet When Java Program Is Being Executed

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0629764A (en) * 1991-07-16 1994-02-04 Nec Ic Microcomput Syst Ltd Wind noise reduction microphone amplifier
JP4614128B2 (en) 2004-12-10 2011-01-19 日本電気株式会社 Packet delivery system, PAN registration device, PAN management device, and packet transfer device
JP4787267B2 (en) 2004-12-23 2011-10-05 テレフオンアクチーボラゲット エル エム エリクソン(パブル) How to notify an emergency to multiple mobile terminals
US20070005725A1 (en) * 2005-06-30 2007-01-04 Morris Robert P Method and apparatus for browsing network resources using an asynchronous communications protocol
CN100456753C (en) * 2005-07-13 2009-01-28 华为技术有限公司 Message matching method and system
CN1925482B (en) * 2005-09-01 2013-03-27 中兴通讯股份有限公司 Transforming method and device for human-machine order format
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
US9686183B2 (en) 2005-12-06 2017-06-20 Zarbaña Digital Fund Llc Digital object routing based on a service request
US7894447B2 (en) 2005-12-06 2011-02-22 Lippershy Celestial Llc Digital object routing
US8194701B2 (en) 2005-12-06 2012-06-05 Lippershy Celestial Llc System and/or method for downstream bidding
JP4680068B2 (en) * 2006-01-05 2011-05-11 富士通株式会社 Communication control method, network and network device
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 (en) * 2010-06-30 2012-01-05 한국전자통신연구원 Communication node and communication method
KR20120002424A (en) 2010-06-30 2012-01-05 한국전자통신연구원 Communication node and communication method
CN101969469B (en) 2010-10-25 2013-11-06 华为技术有限公司 Callback processing method and device in telecom capability opening
EP2749068A4 (en) * 2011-11-29 2015-05-20 Ericsson Telefon Ab L M Flow based packet manipulation congestion control
CN103166851B (en) * 2011-12-16 2016-06-15 中国电信股份有限公司 The transfer processing method of internet information and system
US9026410B2 (en) * 2012-03-16 2015-05-05 The Boeing Company System and method for rapid management of logic formulas
CN103796342B (en) * 2014-01-24 2017-02-15 北京奇虎科技有限公司 System for displaying attribute information and router
CN104811740B (en) * 2015-04-29 2019-01-08 北京奇艺世纪科技有限公司 A kind of distribution method of video file, system and device
JP6665697B2 (en) 2016-06-09 2020-03-13 富士通株式会社 Past information providing program, past information providing method, and past information providing device
US10824598B2 (en) * 2018-08-07 2020-11-03 Dell Products L.P. Handling file commit and commit-delete operations in an overlay optimizer
JP2020126283A (en) * 2019-01-31 2020-08-20 有二 菱沼 Corporate information transmission/reception system
CN112383582A (en) * 2020-10-09 2021-02-19 爱普(福建)科技有限公司 Management method and system for real-time data of edge layer
WO2022180690A1 (en) * 2021-02-24 2022-09-01 日本電信電話株式会社 Communication system, communication device, data distribution method, and program
JP2022164421A (en) * 2021-04-16 2022-10-27 Jcc株式会社 Broadcast recording apparatus and program therefor
CN114900555A (en) * 2021-12-14 2022-08-12 合肥哈工轩辕智能科技有限公司 Data distribution method and device based on lossless compression algorithm

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
WO1997023096A1 (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 (en) * 1999-06-04 2005-08-24 沖電気工業株式会社 Interconnect apparatus and active QoS mapping method
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 (en) 2014-01-15 2015-02-02 주식회사 이디엄 Method for Collecting UDP Packet When Java Program Is Being Executed

Also Published As

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

Similar Documents

Publication Publication Date Title
KR100985237B1 (en) 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
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 (en) Method and apparatus for reliable and efficient content-based routing and query and response in a publish-subscribe network
CN1656749B (en) Digital content delivery system, digital content delivery method, program for executing the method, and server and client for it
US7328345B2 (en) Method and system for end to end securing of content for video on demand
US20040083305A1 (en) Packet routing via payload inspection for alert services
US20030195946A1 (en) Method and apparatus for reliable publishing and subscribing in an unreliable network
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
US20090285123A1 (en) Method and apparatus for content-based routing and filtering at routers using channels
US7653753B2 (en) Method and apparatus for content-based packet routing using compact filter storage and off-line pre-computation
JP2008211835A (en) Packet routing via payload inspection and subscription processing in publish-subscribe network
CN111125426A (en) Data storage and query method and device
US20030165139A1 (en) Packet routing via payload inspection
US7117270B2 (en) Method for sending and receiving a Boolean function over a network
JP4429173B2 (en) Method and computer system for triggering action based on digital communication data
US7411954B2 (en) Efficient implementation of wildcard matching on variable-sized fields in content-based routing
US11616849B2 (en) Distributed split edge application architecture
Calvert et al. Scalable network management using lightweight programmable network services
KR20040039288A (en) Packet routing via payload inspection and subscription processing in a publish-subscribe network
Kodeswaran COCONET: CONTENT AND CONTEXT AWARE NETWORKING

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