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 PDFInfo
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/16—Multipoint routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/52—Multiprotocol routers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling 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/61—Scheduling 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling 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/63—Routing a service request depending on the request content or context
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/185—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with management of multicast group membership
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1895—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for short real-time information, e.g. alarms, notifications, alerts, updates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer 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
본 발명은 경보 서비스들(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
도 25는 디지털 콘텐트 전달을 위한 제2단 구조(phase 2 archtecture)를 도 시하는 도면.FIG. 25 illustrates a
도 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
각각의 가입은 주제 필터 및 속성 필터를 캡슐화할 수 있다. 라우터들은 주제 필터를 한 세트의 일치하는 주제들로 확장하고, 속성 필터들을 주제당 기반(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
네트워크 코어에서의 이러한 타입의 지능형 콘텐트 기반 라우팅은 예컨대, 경보 및 업데이트의 실시간 데이터 전달(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.
표 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.
Quotes.NYSE
Quotes.AMEX
Quotes.NASDAQTopic tree
Quotes.NYSE
Quotes.AMEX
Quotes.NASDAQ
주제 = Quotes.NYSE
속성
Symbol = SNE
Price = 51
Volume = 1000000publish
Topic = Quotes.NYSE
property
Symbol = SNE
Price = 51
Volume = 1000000
Symbol
Price
Volumeproperty
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
채널은, 예컨대, 분산 방식으로 구현된, 관련된 일군의 논리적 멀티캐스트형 접속을 포함할 수 있다. 본 예시적 실시예에 있어서 채널은 콘텐트를 교환하는 발행자와 가입자 커뮤니티를 지원하는데 이용되는 논리적으로 관련된 네트워크 리소스 모음이다. 콘텐트는 채널 주제 이름공간에 따라 분류되고, 리소스는 채널 관리자에 의하여 제공되는 채널 서비스를 통해서 관리, 제어 및 공급된다. 다수의 채널이 동일한 리소스를 공유할 수 있다. 채널은 고도로 스케일 가능한 디렉토리 서 비스, 예컨대 발행자 및 가입자 정보, 증명 및 인증 정보, 메시지 타입, 관리 정보, 그리고 계정 및 과금 정보를 제공할 수 있으며, 다만 이로써 제한되는 것은 아니다. 채널은 또한 예컨대, 캐싱을 통한 지속성(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)
지능형 라우터(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
도 5는 예시적 발행자 및 가입자 머신을 도시한 도면이다. 발행자 머신(100,118)은, 하나 이상의 발행자 애플리케이션(104) 및 에이전트 애플리케이션(105)을 저장한 메모리(102)와, 비휘발성 데이터 저장 기능을 제공하는 보조 저장 장치(112)와, 정보나 명령을 입력하기 위한 입력 장치(108)와, 메모리(102)에 저장된 애플리케이션이나 기타 저장 장치로부터 수신한 애플리케이션을 실행하는 프로세서(114)와, 정보를 출력하는 출력 장치(110)와, 정보의 비주얼 디스플레이를 제공하는 디스플레이 장치(116)를 포함할 수 있다. 5 illustrates an example issuer and subscriber machine. The
가입자 머신(122,140)은, 하나 이상의 애플리케이션(126) 및 에이전트 애플리케이션(128)을 저장한 메모리(124)와, 비휘발성 데이터 저장 기능을 제공하는 보조 저장 장치(130)와, 정보나 명령을 입력하기 위한 입력 장치(132)와, 메모리(124)에 저장된 애플리케이션이나 기타 저장 장치로부터 수신한 애플리케이션을 실행하는 프로세서(134)와, 정보를 출력하는 출력 장치(136)와, 정보의 비주얼 디스플레이를 제공하는 디스플레이 장치(138)를 포함할 수 있다. 이와 달리, 발행자와 가입자 머신은, 임의의 구성으로써, 더 많거나 또는 더 적은 수의 구성 요소를 포함할 수 있고, 또는 상이한 구성 요소들을 포함할 수도 있다.
발행자 머신(100,118)은 네트워크(120), 예컨대 앞서 기술한 네트워크 등을 통하여 가입자 머신(122,140)에 접속된다. 네트워크(120)는 패킷이나 메시지에 의하여 네트워크 코어 내에서 콘텐트나 데이터의 분산형 라우팅을 제공하는 지능형 라우터를 포함한다. 단지 두 개의 발행자 및 가입자 머신이 도시되어 있지만, 네트워크(120)는 더 많은 발행자 및 가입자 머신을 포함하도록 스케일링될 수 있다. 발행자 및 가입자 머신은 임의의 프로세서 제어형 장치, 예컨대 서버, PC, 노트북 컴퓨터, PDA, 전화, 셀룰러 전화, 페이저, 기타 장치 등으로 구현될 수 있으나, 이들로 제한되는 것은 아니다. 지능형 라우터를 갖춘 네트워크(120)는, 유선 장치, 무선 장치 또는 양 장치들 모두를 연결하는, 임의의 유선 또는 무선 분산형 네트워크를 포함할 수 있다. 네트워크(120)는 또한 잠재적으로는 기존의 통상적 네트워크 인프라구조를 이용할 수 있다.
도 6은 지능형 라우터를 위한 채널 관리자(150)를 도시한 도면이다. 본 실시예에서, 채널 관리자(150)는 다수의 서버(152,154,156)를 포함하도록 구현되어 있다. 각 서버는 그 자신의 로컬 저장 장치(158,160,162)를 갖는다. 지능형 라우터(164,166,168)는 특정 채널에 관한 정보를 위하여 채널 관리자와 접속한다. 채널 관리자는 또한 데이터 지속성, 장애 극복 기능(fail over function), 기타 기능 등에 대해서도 대비할 수 있다. 그러므로, 채널 관리자는, 예컨대 채널 관련형 정보, 데이터 지속성에 관한 속성, 발행자 및 가입자에 대한 사용자 정보, 및 인프라 구조 정보 등을 지정하는 네트워크 내 임의의 위치의 데이터베이스 또는 데이터베이스 세트를 포함하는 채널 서비스를 제공한다. 인프라구조 정보에는, 예컨대 지능형 라우터의 식별자 및 지능형 라우터들을 연결하는 대응 터널, 채널에 대한 주제, 및 채널에 대한 속성(각 속성에 관한 이름과 타입) 등이 포함될 수 있다. 패킷이나 메시지가 또한 불변 속성 및 가변 속성들의 식별을 포함한 채널 관련형 정보를 운반할 수도 있다. 6 illustrates a
온라인시, 사용자는 채널 정보를 다운로드할 수 있다. 예컨대, 사용자는 사용자 이름과 패스워드를 이용하여 등록할 수 있다. 사용자의 로그온이 확인되면, 사용자는 채널을 개방(호출)하고 채널 관리자로부터 그 채널에 관한 정보를 가져올 수 있다. 발행자는 발행의 문맥에서 그 정보를 이용할 수 있고, 가입자는 가입의 입력 및 등록과 관련하여 그 정보를 이용할 수 있다. 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
또한, 스택(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
표 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.
도 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
라우팅 데몬(216)은 도 4에서 도시된 관용 백본 라우터 또는 다른 라우팅 장치를 통하여 발생할 수 있는, 데이터 경로(222)와의 통신을 제공한다. 캐시 관리자(218)는 대응하는 지능형 라우터를 포함하는 네트워크 노드에서 데이터의 로컬 캐싱(local caching)을 제공한다. 캐시 관리자(218)의 동작(operation)은 아래에 더 자세히 설명되어 있으며, 네트워크 코어(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
도 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
발행자와 가입자 방법론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
에이전트(106)는 가입 처리(processing subscription)에의 사용을 위해 채널의 식별자(identifier; ID)와 콘텐트 정보를 네트워크 코어의 지능형 라우터에게 전송한다(단계 260). 발행자는 통지 속성을 적당한 값으로 파퓰레이트(populate)하고(단계 261), 그 후 채널 속성에 따라 통지에 콘텐트를 발행할 수 있다(단계 262). 이 예에서 단계 260 내지 262는 특정한 구현에 따른 다르거나 추가적인 단계를 수반할 수 있는 통지를 발행하는 것을 완수한다. 따라서 이 예에서 통지와 관련된 정보는 각각 이름, 통지 내에서의 위치(1에서 시작), 유형(type), 값(value)으로 된, 속성의 순서(ordered sequence of attributes)로 분할된다. 택일적으로, 속성은 특정한 구현에 따른 다른 특성을 가질 수 있다. 예를 들어 속성은 미리 정의된 속성, 임의의 속성, 또는 두 가지 모두를 포함할 수 있다.
지능형 라우터는 채널을 통하여 전송되는 패킷을 위한 구조 또는 포맷을 결정하는 대응 채널을 위한 속성을 얻기 위해 패킷의 채널 ID를 사용할 수 있다. 특히, 각각의 패킷은, 예를 들어 발행자 ID, 주제와 같은 다른 헤더 정보 및 채널 ID와 관련된 태그를 함유할 수 있다. 태그는 도 18에 보여진 예인, 메시지 포맷의 숫자에 주제를 매핑(mapping)하는데 사용될 수 있다. 예를 들어 16비트 값과 같은 작은 정수 값은 숫자로 사용될 수 있다. 택일적으로, 어떠한 다른 유형의 숫자 또는 정보도 주제를 매핑하는데 사용될 수 있다. 주제를 숫자에 매핑하는 것은 특별한 이점을 제공할 수 있다; 예를 들면 메시지 포맷에서 공간을 절약하고, 메시지에서 주제의 표시를 지정하는 균일한 또는 표준 방식을 제공하여, 그 표시가 빠르게 찾아지고 식별되게 할 수 있다. 지능형 라우터는 명령어(command)를 통하여 대응하는 주제를 원격으로 얻기 위하여, 매핑을 로컬로 저장하거나 다르게 그 숫자들을 사용할 수 있다.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.
따라서, 특정한 채널을 위한 패킷 포맷 또는 구조를 알고, 지능형 라우터가 콘텐트 기반 라우팅을 위한 패킷에 주제, 속성 또는 다른 정보를 빠르게 지정할 수 있다. 예를 들어 채널은 패킷의 카운팅 바이트(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.
도 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
가입을 위한 파라미터는, 예를 들어 표 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
표 14는 C++ 프로그래밍 언어로 된 가입자 프로그램의 예를 제공한다.Table 14 provides an example of a subscriber program in the C ++ programming language.
페이로드 검사와 채널을 통한 콘텐트 기반 라우팅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
총괄하면, 콘텐트 기반 라우팅이란 패킷을 어떻게 처리할지 결정하기 위해 패킷에서 페이로드 섹션을 검사하는 것을 의미하는 것이다. 이러한 콘텐트 기반 라우팅 메소드에서는 예를 들면, 어떤 순서로 가입 목록을 처리하기(예를 들어, 필터를 사용하기), 메시지의 라우팅을 결정하기 위해 라우팅 규칙에 따라 주제별, 속성별로 메시지를 비교하기, 그리고 네트워크 코어에서 처리를 수행하기와 같은 것을 포함할 수 있다. 규칙에는 인-라우터 처리를 조절하는 규칙들이나 필터와 관련된 어떠한 규칙들이라도 포함될 수 있다. 이러한 라우팅 결정들은 그 후 네트워크 코어 전체로 배포될 수 있다. 채널로 표현된 주제를 사용하여 메시지 포맷이 결정되면, 지능형 라우터는 메시지 내에서 속성들의 위치를 빠르게 알아낸다. 예를 들면, 특정 채널의 메시지 또는 패킷에서 속성들의 바이트 위치가 알려져 있는 것이다.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
만약, 필터 기술내 모든 속성 테스트(들)의 결과가 긍정적이면 (단계 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 (
지능형 라우터(92)는 어떤 특정한 순서로 필터를 정렬할 수 있다. 예를 들면, 표 15에 나타난 바와 같이 하나의 열 또는 라우팅 표로 가입에 대한 필터를 저장하고, 일직선으로 필터를 훑어가면서 속성들을 필터(속성 테스트들)에 적용시킬 수 있다. 이와 다르게, 라우팅 표는 필터에 대한 포인터 또는 링크를 포함할 수도 있다.
콘텐트 기반 라우팅은 예를 들면 트래픽 상태에 따른 알고리듬 교환과 같은성능-향상 휴리스틱(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
네트워크 노드에서 캐싱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
만약 지능형 라우터(92)가 데이터에 대한 요청을 수신하면 (단계 330), 요청에 따라 인덱스를 이용하여 캐시된 데이터를 검색한다 (단계 332). 지능형 라우터(92)는 캐시 데이터를 백본 라우터(95), 또는 요청자나 다른이에게 궁극적으로 전송하기 위한 다른 라우팅 장치로 전달한다. 메소드(320)를 반복 실행하여 데이터 캐시 및 요청에 대한 캐시 데이터 검색을 지속적으로 할 수 있다. If the
도 15는 메소드(320)에 사용되는 캐시 인덱스(336)를 설명하는 도해이다. 캐시 인덱스(336)는 데이터(338)를 수신하고 시간 스탬프(340)와 함께 저장한다. 데이터가 수집되면, 매 델타 t시간마다 마크된다. 여기서 델타 t는 마크 사이의 시간 간격을 표시하는데, 예를 들면, t2 - t1 가 된다. 어떤 방식으로 시간을 마크하던지 다른 유형의 인덱스를 대안으로 사용할 수 있다. 15 is a diagram illustrating the
표 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
각 주제 또는 채널은 예를 들어, 하나의 멀티캐스트 트리와 한 세트의 지능형 라우터 내에서 그 자신의 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.
이 대표적인 데이터 구조에는 다음의 정보가 포함되어 있다. 하나의 주제 노드에는 하나의 주제 식별자(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
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
단계(368)에서 변환은 DNF가 생성된 후 수행되며, 결과적인 AND 표현식에 대 해 가외로 단순화를 시키는 것이다. 이것 또한 이 예에서 라우터 작업을 단순화하기 위해 수행된다. 특별히, 동일한 속성에 대한 다수의 속성 테스트들을 하나의 AND로 표현한 것은 하나의 기본적인 "범위 필터"로 단순화될 수 있는데, 이 범위 필터는 하나의 하한 또는 상한만 있거나 상, 하한 모두 있거나 또는 동일성 테스트의 경우에는 하나의 값이 된다. 특별 유형의 범위 필터는 그 후 표 22에 따라 암호화된다.In
예를 들면, 표현식 (가격 >= 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,
에이전트(128)는 결과물인 DNF 표현을 메시지(단계 372)로 암호화하고, 그 메시지를 지능형 라우터(단계 374)로 옮긴다. 암호화 과정은 가입(subscription)을 플랫(flat) 메시지 형태로 전환하는 것을 포함하며, 이것은 데이터의 문자열을 구성한다는 것을 의미힌다. 이 전달과정은 하나나 그 이상의 지능형 라우터나 네트워크상의 다른 라우팅 기기에 가입(subscription)하기 위한 주제 필터와 속성 필터로부터 생긴 전달된 라우팅 규칙을 포함한다. 예를 들어서 전달을 위해서는 가입(subscription) 표현은 전형적인 패킷 구조로 맵핑될 수 있다.
단계(372)의 암호화과정은, 한 채널을 통해 전파하기 위해서 한 채널에 대한 가입(subscription)을 메시징 API 포맷으로 정렬하는 것을 포함한다. 가입(subscription)은 예를 들어 내부적으로는 #.SUBSCRIPTION으로 통신된다. 왜냐하면, 중요한 주제 필터 필드와 중요한 속성 테스트 양쪽 모두가 존재하기 때문이며, 한쌍의 바이트(one pair of bytes)는 주제 필터 필드의 수를 저장하기 위해서 사용되고 다른 쌍의 바이트는 이 예에서의 속성테스트수(the number of attribute test)를 저장하기 위해서 사용되기 때문이다. 예를 들어서 각각의 주제 필터의 필드는 본래의 가입에서 구체화된 순서에 있어서 연속적으로 정렬되며, 메시지의 2바이트 부분으로 각각 정렬된다. 와일드카드 필드는 아래에 설명하는 것과 같이 정렬될 수 있다.The encryption process of
속성테스트를 정렬함에 있어서, 테스트의 피 연산자는 통지의 속성 값을 정렬하는 것과 같은 이치로 메시지의 끝에서 정렬이 된다. 속성 테스트와 피연산자를 정렬하기에 앞서서 각각 분리된 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.
테스트를 위한 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)
이 예의 사용을 위해서는 속성 가격, 부호와 부피는 연결된 채널의 미리 정의된 속성으로 가정되고, 각각 위치 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
다음으로 속성 필터로서의 속성필터표현의 예를 포함하는 가입을 생각해보자. 도 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.
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,
도 17은 들어온 메시지에 대한 에이전트 방법(376)의 플로우차트이다. 방법(376)은 예를 들어서 사용자 머신(122)에서 에이전트(128)와 애플리케이션(126)에 의해 구현될 수 있다. 방법(376)에서 에이전트(128)는 가입에 부합하는 지능형 라우터로부터 메시지를 전달받는다(단계 378). 에이전트(128)는 가입에 따라 채널을 선택을 하고(단계 380), 메시지의 채널 아이디에 따른 예에서 채널의 API를 호출한다(단계 382). API는 GUI나 사용자 머신의 다른 태양의 가입에 대한 데이터를 나타낸다(단계 384). 들어온 메시지에 대한 처리 절차는 상기에 서술된 암호화 과정을 역으로 하는 해독과정을 사용하며, 이 해독(암호화의 반대)은 라우터나 다른 네트워크 기기에서 수행되어질 수 있다.17 is a flowchart of an
와일드카드 절차Wildcard Procedure
도 20은 와일드카드 방법(410)의 플로우 차트이다. 이 방법은 가입을 위한 표현으로 와일드카드를 바꾸는데 사용되는 필터에 대한 일련의 라우팅 규칙을 적용하는 예를 설명한다. 방법(410)은 예를 들어서 사용자 머신(122)의 프로세서(134)에 의해 실행하기 위해서 에이전트(128)로 나타내어진 소프트웨어 모듈에서 구현될 수 있다. 대신에, 와일드카드는 지능형 라우터(92)나 ASIC(91)에 포함된 부합하는 기능의 소프트웨어 통제 하에서 프로세서(93)에 의해 네트워크에서 수행될 수 있다. 와일드카드는 열린 영역이나 변수 길이 영역을 포함하며, 그 예는 표 21에 제공된다.20 is a flow chart of a
방법(410)에서 에이전트(128)나 다른 기기는 와일드카드를 가진 가입을 제공받는다(단계 412). 가입의 주제 길이는 콘텐트를 발행할 때 발행자(publisher)에 의해 지정될 수 있다. 그리고 예를 들어서 주제의 필드를 세고, 그것의 필드 카운트(길이)를 얻기 위해서, 영역 주제는 발행자 머신에서 미리 처리될 수 있다.In
에이전트(128)는 필터 연산자에서 필드의 수를 세고(단계 414) 필드 길이=N의 새 규칙(필터)을 초기화한다(단계 416). 에이전트(128)는 가입의 서브 필드를 검색하며, 필터 연산자 서브 필드 O[i]가 와일드카드인지를 결정한다(단계 420). 만약 필터 연산자 서브 필드가 와일드 카드가 아니면 에이전트(128)는 필드[i]=O[i]인 연결조항(conjunctive clause)을 규칙에 삽입한다(단계 422). 필터 연산자에 더 많은 서브 필드가 있는 경우 (단계 424). 에이전트(128)는 단계 418로 돌아가서 추가적인 서브 필드를 처리한다. 매개변수 i는 이 예에서 필드들을 나타내는 것으로서, "i"는 필드 번호를 나타내는 정수이다.
서브 필드를 처리하고 나서, 에이전트(128)는 마지막 필터 연산자 서브 필드가 ">"인지 여부를 결정하고(단계 426), 만약 그렇다면, 길이 제한을 필드 길이>N-1로 변경한다(단계 428). 와일드 카드 절차는 어떤 형태의 부호도 사용할 수 있고, ">"는 단지 그 예일 뿐이다. 이 예에서 "a.>"는 a.b, a.c. a.d 등과, 모든 수준에서의 모든 하위 주제를 의미한다(예를 들어 a.b.x, a.c.x, a.b.x.y, 기타). 다른 부호는 와일드카드의 다른 구현에 사용될 수 있다.After processing the subfield, the
만일 필요하다면 에이전트(128)는 전달된 규칙을 지능형 라우터나 다른 네트워크상의 기기로 전달한다(단계 430). 따라서, 그 방법은 와일드 카드를 비와일드 규칙(와일드카드를 포함하지 않는 규칙을 의미함)로 변환하기 위해서 서브 필드들을 처리하기 위해 서브 필드들에 대해 반복된다. 와일드카드의 변환은 네트워크상의 어디에서나 일어날 수 있으며, 예를 들어 가입자의 머신이나 지능형 라우터에서도 일어날 수 있다. 따라서, 변환이 한 엔터티에서 발생하고, 변환된 규칙이 다른 엔터티로 전달될 수 있고, 이것은 동적으로 이루어질 수 있다.If necessary,
표 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
경보 서비스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,
비록 스테이지 1에서 트래픽이 LAN측에서 크게 감소될 수 있을지라도, 트래픽은 전형적인 비대칭 디지털 가입자 라인(ADSL)이 단지 64 킬로비트/초(kbps) 업링크 속도를 가질 때, 임의의 국가에서 특히 아웃고잉 링크를 계속해서 잼(jam)한다.Although traffic at
계속해서 도 22를 참조하면, 스테이지 2는 바람직하게 서비스 제공자의 머신 룸에서의 접속을 리스 아니면 획득하고, z-박스 2와 같은 제2 z-박스 디바이스를 로케이팅하는 것과 관련된다. 예컨대, z-박스 디바이스는 Hi-Net 백본상에 둘 수 있다. 이런 디바이스로부터 z-박스 2로의 단일 접속(터널)은 소비자 설비(premise)에서 설정될 수 있다.With continued reference to FIG. 22,
이 경우, 소비자 설비에서의 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,
디지털 컨텐츠 전달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
라우팅 박스를 이용하는 이점: Advantages of using a routing box :
라우팅 박스(470)는 바람직하게 전술한 컨텐츠 기반 라우팅을 구현하기 위한 모듈(예컨대, 전술한 지능형 라우터(92))을 포함한다. 전술한 컨텐츠 기반 라우팅을 구현하는 라우팅 박스(470)를 이용하는 데에는 2개의 주요 이점이 있다. 이들 라우팅 박스(470)를 이용하는 급속 라우팅 및 파일 전송 솔루션은 파일 전송을 FTP 또는 RCP와 같은 종래의 파일 전송 프로토콜보다 5배까지 가속한다. WAN을 통한 효율적인 멀티캐스트가 또한 달성될 수 있다. 데이터가 중앙 로케이션에서 수신기의 그룹으로 전송될 때, 라우팅 솔루션은 네트워크 멀티캐스트 토폴로지를 이용하고 WAN을 통해 멀티캐스트 터널을 구성함에 의해 컨텐츠 전달을 가속하여 서버 로드 및 네트워크 대역폭 요건을 감소시킨다.The
아키텍쳐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
사용자와 C2 캐시간의 파일 전송: File transfer between user and C2 cache :
사용자(460)가 가입을 발행함에 의해 미디어 파일을 요구할 때, 이 요구는 C2 캐시 서버들중 하나에 의해 처리된다. 요구된 미디어 파일이 이미 C2 서버에 캐시되어 있다면, 파일은 바로 전달된다. 그렇지 않다면, 가입은 C1 캐시 서버로 전송되고, C1 캐시 서버로부터 C2 캐시 서버로 전송된다.When
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
구현 상태: 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
도 24에서 분배기(450)가 전술한 지능형 컨텐츠 기반 라우팅 기술에 의해 강화된 라우팅 박스(470)에 새로운 미디어 파일을 단지 한번 전송한다. 따라서, 분배기(450)의 로드는 감소된다. 라우팅 박스(470)는 급속 파일 전송 메카니즘을 이용하여 파일을 각각의 C1 캐시 서버에 전송한다. 이 경우, 부가의 라우팅 박스가 수신기(460) 단에 요구되지 않는다. 대안적으로, 다른 타입의 서버는 C1 캐시 서버에 사용될 수 있다.In FIG. 24, the
도 25를 참조하면, 상태 2를 구현하는 일 실시예의 아키텍쳐가 도시된다. 본 예에서 상태 2는 바람직하게 데이터를 라우팅 및 전송하기 위한 커널(kernel) 구현 라우팅 박스(470)를 사용한다. 커널층 솔루션은 버퍼 사본 및 컨텍스트 스위칭 시간을 덜 요구하기 때문에 파일 전송시 오버헤드를 더욱 감소시킨다. 또한, 상태 2 솔루션은 C2 캐시 서버를 도 25에 도시된 바와 같이 아키텍쳐에 부가한다. 이와 같이, 도시된대로, 라우팅 박스(470)는 바람직하게 서비스 제공자 네트워크에서 공동 로케이션을 이용하는 C2 사이트에 부가된다. 이는 잠재적으로 수백배의 대역폭 감소로 대역폭 요건을 크게 감소시킨다.Referring to FIG. 25, an architecture of one embodiment for implementing
도 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
서비스 관리의 품질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-
도 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-
기술: 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
지능형 라우터(92)에 대신하여, 캐시 관리자(218)로 하여금 장기 지속성을 위해 데이터를 캐시하도록 함으로써, 캐시된 데이터를 인덱싱하는 계산 집중적인 동작을 별도의 프로세서에서 수행할 수 있으며, 이로 인해 라우팅 및 필터링 프로세서의 성능이 영향받지 않고, 캐시된 데이터를 정기적으로 디스크에 이동시키는 디스크 I/O 동작을 또다른 프로세서에서 수행할 수 있게 됨으로써, 라우팅과 필터링을 위한 사이클을 빼앗기지 않게 되며 에지 라우터를 규칙적인 I/O 동작을 수행하는데 할애할 필요가 없게 된다.On behalf of the
도 29에는 에이전트(128)가 도시되어 있으며, 이는 도 5에서 이미 설명한 바와 같이 가입자 머신(122)(도 29에는 미도시됨)에 존재하는 것이 바람직하다. 에이전트(128)는 캐시 관리자(218)와 통신하여 캐시(540)로부터 데이터를 검색하고, 검색된 데이터를 수신하여 검색된 데이터를 정리(organize)하는 역할을 한다. 전술한 바와 같이 에이전트(128)는 프락시를 이용하거나 프락시로 구현될 수 있다.An
장애가 없는 상황에는 에지 라우터 노드(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
도 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
라우터 캐시 API(552) - 바람직하게는, 지능형 라우터(92)로부터 캐시 관리자(218)로의 모든 제어 평면 액세스들(control plane accesses)을 맡고 있는 라이브러리, 예컨대, 캐시를 생성 및 소멸시킴;
에이전트 (또는 프락시) 캐시 API(554) - 바람직하게는, 에이전트(128)(또는 에이전트(128) 프락시)로부터 캐시 관리자(218)로의 모든 제어 평면 액세스들을 맡고 있는 라이브러리, 예컨대, 데이터를 검색함; 및Agent (or proxy)
에이전트(128)(또는 프락시) - 바람직하게는, 캐시(546)로부터 검색된 데이터의 취합과 이 데이터의 조직화를 맡고 있음.Agent 128 (or proxy) —preferably in charge of collecting and organizing the data retrieved from
도 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
캐시 관리자 - 캐시 관리: 도 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 - 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
캐시 관리자 - 캐시 데이터 스토리지: 도 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,
도 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.,
캐시 관리자 - 가비지 수집: 채널이 지속적이지 않으면, 캐시(546)는 그 데이터를 저장하지 않고 즉시 놓아 버린다. 채널이 지속적이면, 캐시(546)는 데이터를 저장하게 된다. 특정 채널에 대한 지속 시간 프레임 "T"는 각각의 사이즈 G인 N개의 시간 그레인들로 분할된다. 메모리의 캐슁은 G의 기간동안만을 위한 것이다. 캐쉬 관리자가 시간 간격 G가 지나갔다고 결정한 후에, 데이터를 디스크로 이동시킨다. 캐쉬 관리자(218)는 지속적인 시간 프레임 간격 T의 기간 동안 데이터를 디스크에 저장한다. Cache Manager-Garbage Collection : If the channel is not persistent, the
시간 간격 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,
캐쉬 관리자 - 캐쉬 데이터 검색: 이제 도 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
캐쉬 관리자(218)는 바람직하게는 시간 단위 G의 블럭들의 데이터만을 검색할 수 있다. 그래서 에이전트(128)는 그것이 예상하거나 또는 요청하는 것보다 더 많은 데이터를 얻을 수 있다. 또한, 다수의 캐쉬로부터의 검색 중에, 캐쉬들 사이에서 일부 중첩되는 간격들이 있을 수 있으므로, 에이전트(128)는 데이터의 복사본을 보게될 것이며, 에이전트(128)는 캐쉬에 의해 제공된 데이터 스트림에 대해 복사 억제를 해야만 한다.
캐쉬 관리자와 그외의 모듈들과의 상호작용: 캐쉬 관리자(218)는 바람직하게는, 도 35에 도시된 바와 같이, 이벤트 통지 시스템 인프라구조의 몇개의 모듈들과 상호작용한다. 캐쉬 관리자(218)는 새로운 채널(생성 캐쉬 시간에)을 만나게 되는 경우에, 바람직하게는 정보 서버(Information Server)(550)를 호출하여 그 채널에 대한 채널 관리자(150)를 얻는다. 일단 캐쉬 관리자(218)가 채널 관리자(150)의 어드레스를 가지면, 캐쉬 관리자(218)는 채널 관리자(150)로부터 바람직하게는 채널 특성들을 얻는다. 관리자 모듈(552)은 바람직하게는 캐슁의 단위와 같은 일부 특성들을 설정/변경하도록 허용된다. 관리자 모듈(552)은 바람직하게는 채널 캐쉬를 수동적으로 생성하거나 삭제하는 것이 허용되기도 한다. Interaction with Cache Manager and Other Modules :
에이전트 캐쉬 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
제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
제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
에이전트(128)는 바람직하게는 데이터의 하나의 큰 블록의 모든 이벤트들을 검색한다. 캐쉬 API(554)로부터 데이터를 검색한 후에, 에이전트(128)는 바람직하게는 콜백 동작을 호출하기 전에 데이터 상에서 이하의 동작들을 행할 필요가 있다 (위를 참조): 통지 리스트로부터 통지를 작성; 각각의 발행자에 대한 최종 시퀀스 번호를 기억 및 필터링. 에이전트(128)가 모든 이벤트들을 콜백으로 밀어내기를 행한 경우, 그것은 바람직하게는 콜백에게 DoneCache 이벤트를 전송하여, 모든 캐쉬된 데이터가 전달되었음을 나타낸다. 이점에 있어서, 가입이 FIFO이고 정규 데이터가 일시정지되면, 에이전트(128)는 바람직하게는 모든 일시정지된 통지들을 전송한다. 에이전트(128)는 오직 시퀀스 번호들이 캐쉬 데이터의 최종 시퀀스 번호보다 큰 통지들만을 전달한다.
에이전트 캐쉬 API 대 캐쉬 상호작용: 가입자가 캐쉬된 데이터를 요청하는 경우에, 에이전트(128) 종단(554)의 캐쉬 API는 바람직하게는 먼저 에이전트(128)가 접속되었던 경계 라우터들의 히스토리를 찾아보고 GetCache 요청에서 제공된 시간 간격을 사용하여 리스트를 필터링한다. API(554)는 그 다음에 GetCache(채널, 주제, 필터, local_pubs, time_period, fifo, 라우터들의 어레이) 메시지를 그것이 접속되어 있는 최종 경계 캐쉬로 전송한다. 캐쉬 관리자(218)는 바람직하게는 채널 id, 주제 및 타임스탬프에 기초하여 데이터를 꺼내어, 그 데이터를 에이전트(128)로 되돌린다. 캐쉬 관리자(218)가 데이터를 밀어내는 것을 완료한 경우에, 그것은 DoneCache 이벤트를 Cache-API에 전송하여 데이터 전송이 완료되었음을 나타낸다. Agent Cache API vs. Cache Interaction : In the case where a subscriber requests cached data, the cache API of the
캐쉬 관리자(218)가 데이터를 국부적으로 찾지 않으면, 캐쉬 관리자(218)는 에이전트(128)에 의해 제공된 "라우터들의 리스트"를 사용하여, 필요한 데이터를 배치시킨다. 일단 캐쉬 관리자(218)가 모든 필요한 데이터를 수집하면, 캐쉬 관리자(218)는 필요한 데이터를 대조하여, 그것을 에이전트(128)에게 전송하기 전에 그것에 대한 복사 억제를 행한다.If the
캐쉬 접속 히스토리: 캐쉬(546)로부터의 데이터를 검색할 수 있기 위해, 업스트림 캐쉬뿐 아니라 에지 모두에 대해 캐쉬 접속 히스토리가 에이전트(128)에서 유지되는 것이 바람직하다. 이러한 정보는 에이전트(128) 셧다운(shutdown) 및 충돌(crash)에 걸쳐서 필요하기 때문에, 이러한 정보는 계속해서 파일 내에 유지되어야 한다. 디스크 상의 캐쉬 접속 히스토리는 다음 파일들 및 포맷에 저장되는 것이 바람직하다. Cache Connection History : In order to be able to retrieve data from
에지 캐쉬 위치들: 에지 캐쉬(예를 들어, 에지 라우팅 노드(546)에 있는 캐쉬(546))의 위치는 채널 관리자/채널 라이브러리로부터 얻어지는 것이 바람직하다. 이것은 부팅 시간에 및 에지 캐쉬가 변하는 임의의 후속 시간, 즉 접속 소실/회복되는 시간, 접속이 이동되는 시간에 발생한다. 디스패쳐(dispatcher)는 에지 캐쉬 접속시 임의의 변화들을 에이전트(128)에게 통지하고 그 후 이러한 변화들은 에이전트(128) 캐쉬 라이브러리로 전달된다. 변화가 발생할 때마다 변화는 유지된다.Edge Cache Locations: The location of the edge cache (eg,
영구 저장: 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
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_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
데이터 검색 중의 캐쉬 유효성: 에이전트(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
이 알고리즘은 캐쉬들의 리스트 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
라우터 캐쉬 API: 지능형 라우터(92)에 있는 라우터 캐쉬 API(552)는 캐쉬 관리자(218)를 호출하여 특정 주제에 대한 캐싱(caching)을 생성, 파괴, 중지 및 재개시키는 기능을 한다. 라우터 캐쉬 API(552)는 또한 초기 구성을 다루는데, 지능형 라우터(92)로부터의 캐쉬 어드레스를 채널 관리자(150)로 업로딩하여, 필요한 경우에 에이전트(128)측(에이전트 캐쉬 API(554))이 이러한 정보를 얻을 수 있도록 하고, 다른 라우터들에 대한 캐쉬들(546)의 위치를 검색한다(이것은, 예를 들어 가입 응답시 및 주제 트리가 변한 후에, 지능형 라우터(92)가 주어진 주제에 대한 업스트림 캐쉬를 에이전트(128)에 통지하기를 원할 때 사용된다). Router Cache API : The
획득(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
최종 데이터 풀(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
데이터 구조: 캐싱을 위한 데이터 구조의 예는 상기의 표 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
데이터 검색: 캐시(546)로부터의 데이터 검색은 데이터 저장 및 캐시(546)를 방해하지 않도록 효율적이어야 한다. 데이터 검색은 디스크 및 메모리 둘다로부터 데이터를 검색한다. 데이터 검색을 위해 취해지는 단계는 바람직하게 다음과 같다: 1) 데이터 노드의 위치를 찾고, 2) 데이터 노드를 록킹하고, 3) 검색될 필요가 있는 데이터의 타임 스탬프의 위치를 찾고, 3) 데이터를 검색하고 데이터를 메모리에 저장하고, 4) 데이터 노드를 언록킹하고, 5) 에이전트(128) 클라이언트에 발행하기 전에 메모리에 저장된 검색 데이터를 필터링하고 시퀀싱한다. Data Retrieval : Data retrieval from
본 발명은 예시적인 실시예와 결합하여 설명되었지만, 많은 변경이 가능함은 당업자에게 자명한 것이고, 이 출원은 임의의 적응 또는 변경을 커버하기 위한 것이다. 예를 들어, 다양한 유형의 발행자 머신, 사용자 또는 가입자 머신, 채널 및 그들의 구성, 및 콘텐트-기반(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)
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)
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)
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)
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)
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 |
-
2003
- 2003-07-08 WO PCT/US2003/021338 patent/WO2004006486A2/en active Application Filing
- 2003-07-08 KR KR1020057000385A patent/KR100985237B1/en active IP Right Grant
- 2003-07-08 JP JP2004520021A patent/JP2005532748A/en active Pending
- 2003-07-08 AU AU2003256463A patent/AU2003256463A1/en not_active Abandoned
- 2003-07-08 EP EP03763348A patent/EP1535157A4/en not_active Withdrawn
- 2003-07-08 CN CN038212064A patent/CN1701304B/en not_active Expired - Lifetime
-
2009
- 2009-12-25 JP JP2009296288A patent/JP2010148118A/en active Pending
Patent Citations (3)
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)
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 |