KR20090037962A - 게시-가입 네트워크에서의 페이로드 조사 및 가입 처리를 통한 패킷 라우팅 - Google Patents

게시-가입 네트워크에서의 페이로드 조사 및 가입 처리를 통한 패킷 라우팅 Download PDF

Info

Publication number
KR20090037962A
KR20090037962A KR1020097004161A KR20097004161A KR20090037962A KR 20090037962 A KR20090037962 A KR 20090037962A KR 1020097004161 A KR1020097004161 A KR 1020097004161A KR 20097004161 A KR20097004161 A KR 20097004161A KR 20090037962 A KR20090037962 A KR 20090037962A
Authority
KR
South Korea
Prior art keywords
network
message
channel
attribute
subscription
Prior art date
Application number
KR1020097004161A
Other languages
English (en)
Inventor
쯔-웨이 첸
알렉스 더블유. 펑
핑-파이 양
옌눈 후앙
치-메이 린
샤리니 야닉크
충-이 왕
데이비드 에스. 로젠블룸
Original Assignee
프리캐시 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/199,388 external-priority patent/US7411954B2/en
Priority claimed from US10/199,369 external-priority patent/US6910033B2/en
Priority claimed from US10/199,439 external-priority patent/US7117270B2/en
Priority claimed from US10/199,368 external-priority patent/US7545805B2/en
Priority claimed from US10/199,356 external-priority patent/US20030165139A1/en
Application filed by 프리캐시 인크. filed Critical 프리캐시 인크.
Publication of KR20090037962A publication Critical patent/KR20090037962A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/56Routing software
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/302Route determination based on requested QoS
    • H04L45/306Route determination based on the nature of the carried application
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/302Route determination based on requested QoS
    • H04L45/308Route determination based on user's profile, e.g. premium users
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

패킷의 필터링 및 패킷의 드롭을 행하는 패킷 필터 네트워크(10).
Figure P1020097004161
네트워크, 패킷, 헤더, 페이로드, 라우팅, 필터

Description

게시-가입 네트워크에서의 페이로드 조사 및 가입 처리를 통한 패킷 라우팅{PACKET ROUTING VIA PAYLOAD INSPECTION AND SUBSCRIPTION PROCESSING IN A PUBLISH-SUBSCRIBE NETWORK}
본 발명은 게시-가입 네트워크(publish-subscribe network)에서의 패킷 내의 페이로드의 조사에 기초한 네트워크 코어에서의 패킷 라우팅 및 가입 처리를 행하는 방법 및 장치에 관한 것이다.
관련 출원의 참조
본 출원은 이하의 출원, 즉 2001년 8월 15일자로 출원된 발명의 명칭이 "페이로드 조사를 통한 패킷 라우팅"인 미국 가출원 제60/312,074호와, 2001년 8월 15일자로 출원된 발명의 명칭이 "채널을 사용한 라우터에서의 콘텐츠 기반 라우팅 및 필터링 방법 및 장치"인 미국 가출원 제60/312,077호와, 2001년 8월 15일자로 출원된 발명의 명칭이 "네트워크를 통한 부울 함수의 전송 및 수신 방법"인 미국 가출원 제60/312,076호와, 2001년 8월 15일자로 출원된 발명의 명칭이 "네트워크를 통한 평가, 수정, 재사용 및 전달이 가능하도록 부울 함수를 저장하는 방법"인 미국 가출원 제60/312,075호와, 2001년 10월 17일자로 출원된 발명의 명칭이 "콘텐츠 기반 라우팅에서 가변 크기의 필드에 대한 와일드카드 매칭의 효과적 구현"인 미국 가출원 제60/329,526호에 관련된 것으로서, 여기에 인용함으로써 이들 모두는 그 전부를 기재한 것과 같이 본 명세서에 포함된다.
네트워크 대역폭은 기하급수적으로 증가하고 있다. 그렇지만, 네트워크 기반구조(라우터, 서버, 대몬, 프로토콜 등 포함)는 여전히 비교적 오래된 기술을 사용한다. 그 결과, 인터넷 애플리케이션 및 네트워크 라우터는 대역폭 증가 속도를 따라가지 못한다. 이와 동시에, 점점 더 많은 장치 및 애플리케이션이 네트워크를 지원해가고 있다. 이들 장치 및 애플리케이션이 네트워크 노드에 주게 되는 부하는 엄청나게 증가하게 되었다. 네트워크 부하 및 애플리케이션의 수의 증가는 또한 네트워크 애플리케이션의 구현 및 유지를 훨씬 더 복잡하게 만든다. 그 결과, 네트워크 대역폭의 증가와 네트워크 장치 및 애플리케이션의 보편적인 사용이 오래된 네트워크 기반구조에서 특히 가입자에게 콘텐츠를 게시할 때 데이터의 라우팅 및 전송에 여러 문제를 야기할 수 있다.
네트워크가 서버에서 클라이언트로 정보를 내보내는 모델에는 게시-가입형(publish-subscribe style)이 있다. 이 모델에서, 서버는 어느 클라이언트가 그의 정보에 관심을 가지고 있는지 또는 이 클라이언트가 네트워크의 어디에 위치하고 있는지에 상관없이 그 정보의 단순한 게시자가 된다. 클라이언트는 정보에 대한 가입자가 되며, 그 정보는 어쩌면 네트워크 내의 어디에 게시되어 있었는지에 관한 상세 사항과는 관계없이 그 정보가 이용가능하게 될 때 전달된다. 이어서, 네트워크는 게시된 정보를 가입자에게 효율적으로 라우팅하는 일과, 정보를 능동적 가입에 매칭시키는 일과, 이 모든 일을 게시자와 가입자에게 투명한 방식으로 행하는 일을 맡는다.
게시-가입 모델에서는 서버의 복잡도가 크게 감소되기 때문에, 중량급 서버와 경량급 클라이언트 사이의 구별이 사라지기 시작하거나 게시자, 가입자 또는 양쪽 모두가 될 수 있는 피어(peer)의 개념으로 병합되기 시작할 수 있다. 수많은 종류의 애플리케이션은 본래 피어간 게시-가입형 대화에 잘 맞는다. 이들 애플리케이션 중 다수의 바탕을 이루는 공통된 주제는 게시 및 가입되는 정보가 이벤트의 형태로 되어 있다는 것이다. 예를 들어, 투자자는 주식을 사거나 팔며, 이는 주식 가격의 변동을 가져온다. 교통 사고는 고속도로에서 일어나며, 이는 고속도로의 교통 정체를 가져온다. 소프트웨어 시스템에 보안 허점이 발견되고, 이로 인해 소프트웨어의 사용자를 위한 패치가 개발된다. 게임자는 인터넷 게임에서 무기를 발포하고, 이는 다른 게임자의 아바타를 죽게 만든다. 이들 전형적인 현상 모두는 아마도 많은 수의 가입자들이 관심을 가질 수 있는 이벤트로서 그 가입자들에게 이벤트가 발생했음을 통지하기 위해 네트워크를 통해 전파될 수 있다. 이벤트는 따라서 네트워크 상의 어떤 장소에서 어떤 시점에 발생한 관심을 끌만한 어떤 것에 관한 모든 것을 나타내는 간명한 정보에 불과하다.
다른 일례는 예정된 브로드캐스트를 수반하며, 이는 이벤트의 시간이 예측불가능하고 랜덤한 비동기 이벤트만을 수반하는 애플리케이션과는 다른 특성을 갖는다. 첫째, 이벤트는 기지의 시간에 일어나게 예정되어 있다. 둘째, 이벤트가 간명한 정보일 필요가 없다. 그 대신에, 이벤트는 대량의 데이터일 수 있다. 관심 을 가진 가입자가 발견되는 네트워크의 부분으로 이 대량의 데이터를 보내려면 상당한 서버 처리를 필요로 한다.
일반적으로 서버 또는 게시자는 네트워크에 대해 게시-가입 모델에서 게시된 콘텐츠를 전송할 곳에 관하여 지시하기 위해 네트워크에 대한 라우팅 결정을 수행한다. 게시자는 그가 게시하는 콘텐츠에 대한 가입을 저장한다. 새로운 콘텐츠의 수신 또는 발생 시에, 게시자는 콘텐츠를 각각의 가입과 비교하여 어떤 일치가 있는지를 확인한다. 콘텐츠(이벤트)가 어떤 가입이라도 만족시키는 것이 있는 경우, 게시자는 콘텐츠를 네트워크를 통해 해당 가입자에게 내보낸다. 이 종래의 게시-가입 모델은 특히 더 많은 장치가 네트워크를 지원하게 되고 또 가입의 수가 증가함에 따라 게시자에게 엄청난 부담을 준다. 보완적인 방법은 단지 마음에 들지 않을 수 있다. 가입자는 모든 게시된 이벤트에 대한 그 자신의 가입을 평가한다.
인터넷에 막대한 수의 애플리케이션이 더더욱 집중됨에 따라, 이벤트 통지의 개발에 대한 장래성이 무한하다. 그렇지만, 이러한 장래성에는 라우팅 결정을 행하고 언제 이벤트가 가입을 만족시키게 되는지를 결정하여 게시자의 부담을 완화시켜주는 보다 효율적인 방법이 요구된다. 따라서, 이벤트 통지 서비스가 보편화되고 지속적으로 이루어지면 인터넷 애플리케이션은 물론 다른 애플리케이션 및 구현들에 대한 엄청난 부가 가치 이점을 제공할 수 있을 것이다.
본 발명의 제1 태양에 따르면, 네트워크에서 패킷을 처리하는 방법 및 장치가 제공된다. 헤더 부분과 페이로드 부분을 갖는 패킷이 수신된다. 패킷의 페이 로드 부분은 패킷을 어떻게 처리해야 하는지를 결정하는 데 사용하기 위해 네트워크 코어에서 조사되고, 패킷은 이 조사에 기초하여 선택적으로 처리된다.
본 발명의 제2 태양에 따르면, 콘텐츠 기반 라우팅을 원활히 하기 위하여 채널을 구성하는 방법 및 장치가 제공된다. 채널은 게시-가입 네트워크에서의 복수의 노드들 사이의 논리적 통신 경로를 제공한다. 통신 경로를 통한 정보의 콘텐츠 기반 라우팅에 사용하기 위해 채널이 구성되고, 채널에 기초하여 통신 경로를 통한 전송을 위해 메시지 포맷이 선택된다.
본 발명의 제3 태양에 따르면, 게시-가입 네트워크에서 술어를 전송하는 방법 및 장치가 제공된다. 가입에 관련된 부울 값을 갖는 술어를 포함하는 표현식이 수신된다. 표현식은 콘텐츠 기반의 라우팅에서 사용하기 위해 네트워크에서 전송하기 위한 메시지로 인코딩되고, 이 메시지는 가입에 대한 콘텐츠 기반 라우팅을 제공하기 위해 네트워크 코어 내의 적어도 하나의 라우터로 전송된다.
본 발명의 제4 태양에 따르면, 게시-가입 네트워크에 대한 가입을 저장하는 방법 및 장치가 제공된다. 가입을 네트워크에 저장하기 위한 구조가 지정된다. 이 구조는 복수의 부분 표현식으로 분할되고, 이 부분 표현식은 특정 가입을 총괄 지정하는 데 사용된다. 부울 값을 갖는 술어는 특정 가입에 대한 부분 표현식 중 적어도 하나와 연관되어 있으며, 이 부울 값을 갖는 술어는 가입에 대한 콘텐츠 기반 라우팅을 제공하기 위해 특정 가입에 대한 통지 요소의 표시를 제공한다.
본 발명의 제5 태양에 따르면, 네트워크에서 패킷을 라우팅하는 방법 및 장치가 제공된다. 헤더 부분과 페이로드 부분을 갖는 패킷이 수신된다. 와일드카드 를 갖는 페이로드 부분에서의 필드의 크기를 제한하는 라우팅 규칙을 사용함으로써 패킷을 어떻게 라우팅해야 하는지를 결정하는 데 사용하기 위해 패킷의 페이로드 부분이 조사되고, 이 조사에 기초하여 패킷이 선택적으로 라우팅된다.
첨부 도면들은 본 명세서의 일부분에 포함되어 그의 일부분을 구성하고, 상세한 설명과 함께 본 발명의 이점 및 원리를 설명한다.
개요
인터넷 규모 또는 다른 분산 네트워크 규모의 이벤트 통지 시스템은 강력하고 유연성있는 게시-가입 네트워킹의 실현을 갖는 애플리케이션을 제공한다. 이러한 시스템에서, 애플리케이션 프로그램은 네트워크 내부에서 일어나는 이벤트에 관한 통지의 게시 및/또는 통지에 대한 가입 및 그의 수신을 행하는 이벤트 통지 애플리케이션 프로그램 인터페이스(API)를 사용한다.
이 시스템에서의 통지에는 주제가 주어지며, 이 주제는 통지가 캡슐화하고 있는 정보의 종류를 분류하는 문자열 또는 다른 구조이다. 또한, 통지는 이 통지에 특유한 정보를 포함하는 한 세트의 속성을 가지고 있다. 예를 들어, 애플리케이션은 주제 quotes.nyse 및 속성 심볼과 가격을 사용하여 뉴욕 증권 거래소에서의 거래에 관한 통지를 게시할 수 있다. 이 애플리케이션은 특정 속성값을 갖는, 예를 들어 심볼이 SNE(소니사의 증권 시세 표시기)이고 가격이 85.25인 개별 통지를 게시할 수 있다. 대개의 경우 그러한 것은 아니지만, 통지에서의 속성 모두는 이들이 동일한 계열의 주제에 대한 모든 통지에서 발견된다는 의미에서 사전 정의되 어 있다. 그렇지만, 게시자는 부가의 이벤트별 정보를 제공하기 위해 통지마다 또는 다른 기준에 따라 임의의 속성을 부가할 수 있다. 따라서, 속성 전부가 사전 정의되어야만 할 필요는 없으며 심지어는 그 어느 것도 사전 정의될 필요가 없다.
이 시스템에서, 가입자는 주제 또는 전체 채널에 대해서만 가입하는 것으로 제한되지 않는다. 채널에 대한 추가의 설명 및 정의에 대해서는 이하에 기술한다. 이들은 예를 들면 주제 필드 및 하나 이상의 레벨의 관련 서브필드(서브 주제)를 지정하는 계층 구조를 포함할 수 있다. 따라서, 가입자는 통지의 속성들에 걸쳐 콘텐츠 기반 필터를 지정함으로써 훨씬 더 세밀하게 조정된 관심있는 표현식을 제공할 수 있다. 예를 들어, 가입자는 심볼이 SNE이고 가격이 90.00보다 큰(아마도 가입자가 소유한 주식에 대한 매도 기회를 나타냄) 주제 quotes.nyse에 대한 모든 통지에 가입할 수 있다. 가입에 대응하는 모든 통지는 가입자가 그의 가입을 등록할 때 또는 다른 때에 제공하는 콜백(callback) 또는 다른 유형의 함수를 통해 가입자에 전달될 수 있다. 하나의 가입은 많은 필터로 분해될 수 있다.
콜백은 단말기에 메시지를 기록하거나 이메일을 보내는 것 같은 간단한 것부터 주식의 매도를 개시하는 보다 복잡한 것, 그리고 새로운 게시-가입 활동을 개시하는 훨씬 더 복잡한 것(예를 들면, 기존의 가입을 75.00의 가격에서의 매수 기회에 대한 새로운 가입으로 대체하거나 가입자의 포트폴리오가 수정되었다는 새로운 통지를 게시하는 것)을 포함한 많은 계산을 수행할 수 있다.
애플리케이션은 예를 들면 에이전트에 의해 그의 게시 및 가입 활동에 도움을 받는다. 에이전트는 아마도 프록시를 사용하거나 그와 함께 구현될 수 있다. 에이전트는 그가 사용되는 경우 발신 통지 및 가입에 대한 네트워크 연결 및 일치하는 착신 통지의 가입자로의 전달을 제공한다. 통지가 일단 네트워크에 들어가면, 시스템의 라우터 네트워크는 그 통지를 이 통지와 일치하는 가입을 한 모든 가입자들에게 전파한다. 이것을 달성하는 한가지 방법은 그 통지를 네트워크의 모든 지점으로 브로드캐스트한 다음에 애플리케이션 에이전트에게 이 통지가 그의 가입자와 관련된 것인지를 결정하도록 한다. 그렇지만, 이것이 꼭 확장가능한 방법인 것은 아니며, 네트워크는 특히 많은 수의 활동적이고 장황한 게시자가 존재하는 경우 메시지 트래픽의 부하에 의해 빠르게 압도되는 것이 보통이다. 충분한 대역폭이 문제가 되지 않는 경우조차도, 가입자는 그처럼 많은 통지를 처리해야만 함으로써 어찌할 줄 모르게 된다.
시스템의 전형적인 네트워크는 그가 통지를 라우팅하는 방법에 있어서 훨씬 더 효율적이다. 첫째, 이 네트워크는 통지가 예를 들어 네트워크 내의 임의의 링크를 거쳐 최대 한번만 전파되도록 하기 위해 멀티캐스트 라우팅을 사용할 수 있다. 둘째, 네트워크는 통지의 전파를 가능한 한 많이 감소시키기 위해 필터에 대한 많은 수의 복잡한 최적화를 사용할 수 있다.
도 1은 네트워크 코어에서의 이러한 지능형 라우팅을 개념적으로 나타낸 도면이다. 게시자(14)는 메시지 형태의 콘텐츠를 경계 라우터(16)를 통해 게시-가입 네트워크에서 사용되는 네트워크 코어(10)로 전송한다. 게시-가입 네트워크는 데이터 또는 콘텐츠를 게시자로부터 가입자로 라우팅하기 위한 임의의 유형의 네트워크를 포함한다. 콘텐츠는 라우터 또는 다른 장치들 사이의 논리적 연결을 나타내 는 하나 이상의 채널(18)을 통해 전송된다. 네트워크 코어(10) 내의 지능형 라우터(12)는 메시지를 라우팅 또는 포워딩해야 하는지를 결정한다. 구체적으로 설명하면, 지능형 라우터(12)는 가입자(24)가 가입한 콘텐츠를 메시지가 포함하는지를 결정할 수 있다.
각각의 가입은 주제 필터 및 속성 필터를 캡슐화한다. 라우터는 아마도 주제 필터를 한 세트의 일치하는 주제로 확장하여 주제마다 속성 필드를 병합할 수 있다. 지능형 라우터는 통지의 주제에 대한 주제 필터를 평가하고, 통지 내의 속성값에 대한 속성 필터를 평가한다. 주제 필터의 구문(syntax)은 아마도 와일드카드(wildcard)를 사용할 수 있고, 속성 필터의 구문은 부울 표현식을 사용할 수 있으며, 이들 모두에 대한 추가의 설명은 이하에서 하기로 한다. 용어 "필터"는 가입자가 관심을 가지고 게시자로부터 수신하는 한 세트의 이벤트를 기술하기 위해 사용된다. 라우팅 규칙은 필터로부터 생성되고 이는 지능형 라우터가 라우팅 결정을 하는 데 사용된다.
따라서, 예를 들어 전체 필터 세트가 메시지(26)에 의해 만족되지 않는 경우, 지능형 라우터(12)는 메시지(26)를 드롭(폐기)시키며, 이는 메시지가 포워딩되지 않는다는 것을 의미한다. 예를 들어 주제 필터 및 속성 필터의 평가에 따라 전체 세트 중의 어느 필터라도 메시지(20)에 의해 만족되는 경우, 지능형 라우터(12)는 메시지(20)를 경계 라우터(22) 및 아마도 다른 장치를 통해 가입자(24)로 라우팅(포워딩)하거나, 일치하는 필터에 대해 규정된 모든 라우팅 및/또는 행동 규칙에 따라 메시지(20)를 사용하여 라우터(12) 내부의 다른 함수를 수행한다. 이 탐색은 어느 것이 먼저 일어나든 전체 필터 세트가 소진되거나 모든 규칙에 관한 결정이 얻어질 때까지 계속된다.
네트워크 코어에서의 이러한 형태의 지능형 콘텐츠 기반 라우팅은 예를 들면 경보 및 갱신의 실시간 데이터 전달을 위한 것이다. 경보를 위한 실시간 데이터 전달의 일례로는 다음과 같은 주식 시세, 교통, 뉴스, 여행, 날씨, 부정사용 검지(fraud detection), 보안, 텔레매틱스, 공장 자동화, 공급망 관리 및 네트워크 관리 등이 있지만, 이에 한정되는 것이 아니다. 갱신을 위한 실시간 데이터 전달의 일례로는 다음과 같은 소프트웨어 갱신, 바이러스 백신 갱신, 영화 및 음악 전달, 작업 흐름(workflow), 저장 관리 및 캐시 일관성이 있지만, 이에 한정되는 것은 아니다. 가입을 위한 정보의 전달에는 많은 다른 애플리케이션이 가능하다.
표 1은 필터링을 위한 주제 및 술어를 갖는 가입의 저장을 나타낸 것이다. 가입은 원하는 바에 따라 또는 필요에 따라 임의의 형태의 데이터 구조로 네트워크 내의 어디에라도 저장될 수 있다. 이하에서 설명하는 바와 같이, 술어는 가입의 구성요소이다. 가입은 임의의 방법으로 표현될 수 있으며, 그의 일례가 이하에 제공된다.
가입 1 주제 1 술어 1
...
가입 N 주제 N 술어 N
표 2는 시세 서버에 대한 게시 및 가입의 일례를 나타낸 것이다. 이 일례는 설명의 목적상 제공된 것에 불과하며, 가입은 임의의 유형의 데이터 또는 콘텐츠에 대해 임의의 수 및 유형의 파라미터를 포함할 수 있다.
시세 서버 일례
주제 트리 게시
Quotes.NYSE Quotes.AMEX Quotes.NASDAQ 주제 = Quotes.NYSE 속성 심볼 = SNE 가격 = 51 거래량 = 1000000
속성 심볼 가격 거래량 가입 주제 ==Quotes.NYSE 필터 (심볼 == SNE) & (가격 > 55)
술어는 가입을 위한 부울 표현식을 제공하고, 주제는 가입을 위한 채널의 표시를 제공한다. 가입은 많은 여러가지 방식으로 표현될 수 있다. 부울 표현식의 사용은 이러한 한 일례로서, 콘텐츠 기반 라우팅을 위해 가입을 주제 필터와 속성 필터로 용이하게 변환하는 기능을 제공한다. 가입은 다른 대안에서 주제를 참조하지 않고 표현될 수 있다. 그렇지만, 주제 또는 채널의 사용(이하에 추가로 설명함)은 필터를 해석하여 이를 속성에 적용하기 위한 콘텍스트(context)를 제공한다.
라우팅 결정은 네트워크 코어에서 달성되어 네트워크 전반에 분산되고, 이에 의해 게시자 및 가입자 머신의 처리 부담을 완화시키고 네트워크의 효율을 상당히 향상시킬 수 있다. 도 1은 단지 설명의 목적상 하나의 게시자, 하나의 가입자 및 하나의 지능형 라우터를 도시하고 있지만, 구현에서는 많은 게시자, 가입자 및 지능형 라우터를 포함할 수 있다. 용어 지능형 라우터는 네트워크 코어 또는 다른 장소에서 패킷 또는 메시지의 페이로드를 조사함으로써 라우팅 결정을 행하는 기능을 갖는 라우터 또는 다른 엔티티를 말한다.
네트워크 기반구조
도 2는 게시자 및 가입자의 지능형 라우터를 나타낸 네트워크도이다. 채널 서비스를 제공하는 라우팅 엔티티(30)는 지능형 라우터들 사이에서 메시지를 라우팅하기 위해 예를 들어 네트워크 기반구조 상에서 이하에 설명하는 바와 같이 효과적으로 계층을 이루고 있다. 게시자(32)는 개념상 예를 들어 콘텐츠를 검색하기 위한 포인터 등의 게시된 콘텐츠의 표시를 수신하는 애플리케이션(34) 및 채널 서비스(30)를 통한 네트워크 전송을 위해 콘텐츠를 인코딩하는 에이전트(36)를 포함한다. 논리적으로 상호연결된 지능형 라우터(38, 40, 42, 44, 46, 48)의 집합체는 게시자로부터의 콘텐츠를, 가입을 위해 주제 필터 및 속성 필터로부터 생성된 라우팅 규칙을 사용하여 라우팅한다. 복수의 링크(39, 41, 43, 45)는 지능형 라우터(38, 40, 42, 44, 46, 48) 사이의 논리적 연결을 제공한다. 다른 링크(37, 47)는 각각 게시자(32)와 지능형 라우터(38) 사이 및 가입자(54)와 지능형 라우터(46) 사이의 논리적 연결을 제공한다. 가입자(54)는 가입된 콘텐츠를 검출 및 수신하기 위한 에이전트(50) 및 이 콘텐츠를 표시하는 애플리케이션(52)을 포함한다.
채널은 예를 들어 분산 방식으로 구현되는 관련된 논리적 멀티캐스트 연결 세트를 포함할 수 있다. 이 전형적 실시예에서의 채널은 콘텐츠를 교환하는 게시자와 가입자의 집단에 서비스를 제공하는 데 사용되는 논리적으로 관련된 네트워크 자원의 집합체이다. 콘텐츠는 채널 주제 이름공간에 따라 분류되고, 자원은 채널 관리자에 의해 제공된 채널 서비스를 통해 관리, 제어 및 제공된다. 다수의 채널이 동일한 자원을 공유할 수 있다. 채널은 다음과 같은 게시자 및 가입자 정보, 인증 및 허가 정보, 메시지 유형, 관리 정보, 및 회계/과금 정보 등의 확장성이 우수한 디렉토리 서비스를 제공할 수 있지만, 이에 한정되는 것은 아니다. 채널은 또한 예를 들어 캐싱을 통한 지속성, 고속 데이터 전달 메카니즘, 보안 및 사용자/네트워크 관리를 제공한다. 채널은 임의의 다른 목적을 위해서도 사용될 수 있다.
지능형 라우터에 의한 필터링은 라우팅 결정을 분산시키기 위해 네트워크 코어에서 행해질 수 있다. 게다가, 지능형 라우터는 또한 게시자 또는 가입자 등의 사용자 장치와 네트워크 코어를 연결시키는 경계 라우터로서도 기능할 수 있다. 또한, 네트워크에 연결된 동일한 장치가 콘텐츠를 네트워크에서의 라우팅 결정을 통해 가입자에게 내보내는 게시자로서도, 내보낸 콘텐츠를 수신하는 가입자로서도 기능할 수 있다. 지능형 라우터 및 채널은 필요에 따라 또는 특정 구현을 위해 원하는 바에 따라 임의의 구성으로 연결될 수 있으며, 도 2에 도시된 구성은 단지 설명의 목적상 제공된 것이다.
도 3은 지능형 라우터 및 종래의 백본 라우터의 전형적인 네트워크 기반구조를 나타낸 도면으로서, 채널의 논리적 연결도 나타내고 있다. 이 일례에서의 지능형 라우터는 인터넷 또는 다른 분산 네트워크 등의 네트워크에서의 기존의 백본 라우터를 사용하며, 지능형 라우터는 따라서 백본 라우터 상에 효과적으로 계층을 이루고 있다. 이 일례에서, 인터넷 서비스 제공자(ISP) 네트워크(58, 59, 60) 각각은 메시지 또는 패킷의 종래 방식의 라우팅을 위해 몇개의 백본 라우터를 포함하고 있다. 복수의 지능형 라우터(61-70)는 ISP 네트워크(58, 59, 60) 내의 하나 이상의 백본 라우터에 연결되어 있다. 지능형 라우터(61-70)는 또한 링크들의 일례를 나타내는 복수의 링크(73-85)에 의해 상호연결되어 있으며, 이 링크에 의해 최종 사용자 장치에도 연결될 수 있다. 지능형 라우터(61-70)는 엔티티(71) 등의 하나 이상의 관리자 머신 및 엔티티(72) 등의 하나 이상의 가상 사설망(VPN) 제어기에 의해 제어될 수 있다. ISP 네트워크(58, 59, 60)는 게시자 머신 및 가입자 머신(도 3에 도시 생략)에도 연결된다. ISP(58, 59, 60) 내에 및 이들 사이에 있는 백본 라우터는 기존의 네트워크 기반구조 내에서 임의의 종래의 방식으로 상호연결된다.
지능형 라우터(61-70) 및 링크(73-85)는 도시한 바와 같이 기존의 네트워크 기반구조를 사용하여 구현될 수 있으며, 이들은 네트워크 코어에서의 콘텐츠 기반 라우팅을 위한 것이다. 링크(73-85)는 지능형 라우터(61-70) 사이의 논리적 연결을 나타내며, 예를 들면 기존의 네트워크 기반구조 또는 다른 장치를 사용하여 구현될 수 있다. 링크는 예를 들어 터널이라고 하는 논리적 연결을 사용하여 구현될 수 있다. 터널은 링크를 구현하기 위한 하드웨어 및 아마도 소프트웨어, 네트워크 기반구조를 포함하며, 하나의 터널은 다수의 채널의 한 구성요소가 될 수 있다. 채널은 특정 유형의 콘텐츠에 대한 논리적 연결을 제공하고 따라서 채널을 통해 전송된 속성에 대한 콘텍스트를 제공함으로써 지능형 라우터에서의 콘텐츠 기반 라우팅을 원할히 행한다. 지능형 라우터가 채널없이 라우팅 결정을 수행할 수 있지만, 채널은 네트워크 코어에서의 지능형 라우터에 의한 콘텐츠 기반 라우팅의 효율을 향상시킨다.
이 전형적인 실시예는 채널 및 링크의 사용을 포함한다. 링크는 비록 지능형 라우터이지만 2개의 라우터 사이의 연결이다. 채널은 (일반적으로 큰) 라우터의 집합체를 포함하는 네트워크 엔티티로서, 일대다 또는 다대일 논리적 연결을 달성하기 위해 상호연결 링크에 의해 정적으로 또는 동적으로 구성된다. 구체적으로 설명하면, 채널은 최상위 레벨 논리적 엔티티로서, 채널의 필수 특성을 기술한다. 하나의 채널 하에 다수의 주제가 있을 수 있다. 각 주제는 상호 연결된 라우터의 집합체를 포함한 서브네트워크(멀티캐스트 트리 등)을 형성한다. 이들 주제 기반 서브네트워크는 여러가지 방식으로 할당, 배향 및 구성될 수 있다. 채널은 이 채널 하의 주제에 대해 형성된 모든 서브네트워크의 집합체로서 예를 들면 메쉬형 네트워크와 비슷할 수 있다.
도 4는 다른 참조된 지능형 라우터들 중 임의의 것에 대응할 수 있는 지능형 라우터(92)의 전형적인 하드웨어 구성요소를 나타낸 도면이다. 네트워크 노드(90)는 종래의 백본 라우터(95)에 연결된 지능형 라우터(92)를 포함할 수 있다. 지능형 라우터(92)는 메모리(94) 및 보조 저장장치(97)(아마도 예를 들면 분리된 머신으로 구현됨)에 연결된 프로세서(93)를 포함하고, 그 어느 것이든 데이터의 저장은 물론 데이터의 캐싱을 할 수 있으며 프로세서(93)에 의해 실행되는 애플리케이션을 저장한다. 보조 저장장치(97)는 데이터의 비휘발성 저장을 제공한다. 이하에 기술하는 바와 같이 소프트웨어 제어 하에, 프로세서(93)는 백본 라우터(95)에 지시하여, 가입에 대한 주제 필터 및 속성 필터로부터 생성된 라우팅 규칙에 기초하여 메시지 또는 패킷을 라우팅하거나(포워딩하거나) 라우팅하지 않도록(폐기하도록) 한다. 개별적인 프로세서-제어 장치에 구현되어 있는 것처럼 도시되어 있지만, 다른 대안에서 지능형 라우터(92)는 지능형 라우팅 기능을 아마도 내장 소프트웨어를 갖는 하드웨어 형태로 제공하기 위해 백본 라우터(95) 내의 ASIC(application specific integrate circuit)에 구현될 수 있다. 지능형 라우팅 기능은 또한 다른 대안에서는 하나 또는 다수의 라우팅 장치에 소프트웨어와 하드웨어의 조합으로 구현될 수 있다.
도 5는 전형적인 게시자 머신과 가입자 머신을 나타낸 도면이다. 게시자 머신(100, 108)은 다음과 같은 구성요소, 즉 하나 이상의 게시자 애플리케이션(104)과 하나의 에이전트 애플리케이션(105)을 저장하는 메모리(102), 데이터의 비휘발성 저장을 제공하는 보조 저장장치(112), 정보 또는 커맨드를 입력하기 위한 입력 장치(108), 메모리(102)에 저장되거나 다른 저장 장치로부터 수신된 애플리케이션을 실행시키는 프로세서(114), 정보를 출력하는 출력 장치(110), 및 정보의 시각적 표시를 제공하는 디스플레이 장치(116)를 포함할 수 있다.
가입자 머신(122. 140)은 다음과 같은 구성요소, 즉 하나 이상의 애플리케이션(126)과 하나의 에이전트 애플리케이션(128)을 저장하는 메모리(124), 데이터의 비휘발성 저장을 제공하는 보조 저장장치(130), 정보 또는 커맨드를 입력하기 위한 입력 장치(132), 메모리(124)에 저장되거나 다른 저장 장치로부터 수신된 애플리케이션을 실행시키는 프로세서(134), 정보를 출력하는 출력 장치(136), 및 정보의 시각적 표시를 제공하는 디스플레이 장치(138)를 포함할 수 있다. 게시자 머신 및 가입자 머신은 다른 대안에서는 더 많거나 적은 구성요소 또는 다른 구성요소를 임의의 구성으로 포함할 수 있다.
게시자 머신(100, 118)은 전술한 네트워크와 같은 네트워크(120)를 통해 가입자 머신(122, 140)과 연결되어 있다. 네트워크(120)는 패킷 또는 메시지를 통해 네트워크 코어에서 데이터 또는 콘텐츠의 분산 라우팅을 제공하는 지능형 라우터를 포함한다. 단지 2개의 게시자 및 가입자 머신이 도시되어 있지만, 네트워크(120)는 더 많은 게시자 및 가입자 머신을 포함하도록 확장될 수 있다. 게시자 및 가입자 머신은 다음과 같은 일례, 즉 서버, 퍼스널 컴퓨터, 노트북 컴퓨터, 개인 휴대 단말기, 전화, 셀룰러 전화, 페이저 또는 다른 장치 등의 임의의 프로세서 제어 장치로 구현될 수 있지만, 이에 한정되는 것은 아니다. 지능형 라우터를 갖는 네트워크(120)는 임의의 유선 또는 무선 분산 네트워크를 포함하여 유선 장치, 무선 장치 또는 양쪽 모두를 연결할 수 있다. 네트워크(120)는 또한 아마도 기존의 또는 전통적인 네트워크 기반구조를 사용할 수 있다.
도 6은 지능형 라우터의 채널 관리자(150)를 나타낸 도면이다. 이 일례에서, 채널 관리자(150)는 다수의 서버(152, 154, 156)로 구현된다. 각 서버는 그 자신의 로컬 저장장치(158, 160, 162)를 포함한다. 지능형 라우터(164, 166, 168)는 특정 채널에 관한 정보를 위해 채널 관리자와 접촉한다. 채널 관리자는 또한 데이터 지속성, 자동 복구(fail over) 기능 또는 다른 기능을 위한 것이다. 채널 관리자는 따라서 예를 들면 채널 관련 정보, 데이터 지속성의 특성, 게시자 및 가입자의 사용자 정보 및 기반구조 정보를 규정하는 네트워크의 임의의 곳에 있는 데이터베이스 또는 데이터베이스 세트를 포함하는 채널 서비스를 제공한다. 기반구조 정보는 예를 들면 지능형 라우터와 이들을 연결하는 해당 터널의 식별 번호, 채널에 대한 주제, 및 채널에 대한 속성(각 속성의 이름 및 유형)을 포함할 수 있다. 패킷 또는 메시지는 또한 고정 속성 및 가변 속성의 식별 번호를 포함한 채널 관련 정보를 전달할 수 있다.
사용자는 온라인일 때 채널 정보를 다운로드할 수 있다. 예를 들어, 사용자는 사용자 이름과 패스워드를 사용하여 등록할 수 있다. 사용자의 로그온이 인증되면, 사용자는 채널을 열어(호출하여) 채널 관리자로부터 채널에 관한 정보를 검색할 수 있다. 게시자는 콘텐츠를 게시하는 데 그 정보를 사용할 수 있으며, 가입자는 가입을 입력 및 등록하기 위해 그 정보를 사용할 수 있다.
이 일례에서 각 채널 관리자(152, 154, 156)는 각각의 지능형 라우터의 주 채널 관리자로서 기능한다. 구체적으로 설명하면, 이 일례에서 각각의 지능형 라우터는 2개의 인터넷 프로토콜(IP) 주소를 제공받는데, 하나는 주 채널 관리자에 대한 것이고 또하나는 백업 채널 관리자에 대한 것이다. 지능형 라우터는 이들 IP 주소를 사용하여 채널 관리자에 접촉하고 채널 정보를 검색한다. 주 채널 관리자가 고장난 경우, 지능형 라우터는 백업 채널 관리자에 접촉할 수 있다. 따라서, 채널 관리자(152, 154, 156)는 이들을 연결하는 선으로 표시된 바와 같이 채널 특성 및 다른 정보에 관한 데이터를 공유한다. 각 채널 관리자는 또한 지정된 백업을 가지고 있으며, 따라서 채널 관리자가 고장나면, 다른 채널 관리자가 그에 대한 처리를 인계받을 수 있다. 네트워크 내의 장치들은 예를 들면 커맨드를 사용하여 채널 정보를 검색할 수 있으며, 그 일례가 표 3에 제공되어 있다. 지능형 라우터는 다른 대안에서는 하나의 주 채널 관리자 또는 3개 이상의 채널 관리자만을 가질 수 있다.
도 7은 사용자 머신 또는 장치를 지능형 라우터를 갖는 네트워크와 연결하기 위한 사용자 머신 내의 스택(180)에 있는 전형적인 소프트웨어 구성요소를 나타낸 도면이다. 사용자 머신은 게시자, 가입자 또는 양쪽 모두로서 사용될 수 있으며, 전술한 전형적인 장치들을 포함할 수 있다. 스택(180)은 사용자로부터의 가입의 수신, 게시자로부터의 채널 정보의 수신 또는 게시될 콘텐츠나 데이터의 수신을 위한 하나 이상의 사용자 애플리케이션(182)을 포함할 수 있다. 사용자 애플리케이션(182)은 또한 사용자 머신 또는 장치에 의해 실행되는 임의의 다른 유형의 애플리케이션을 포함할 수 있다.
스택(180)은 또한 예를 들면 에이전트(184), 이벤트 라이브러리(186), 캐시 라이브러리(188), 채널 라이브러리(190), 메시징 라이브러리(192) 및 디스패처 라이브러리(194)를 포함할 수 있다. 에이전트(184)는 네트워크 연결 또는 다른 기능을 설정하기 위한 것이고, 표 3은 프록시 커맨드 또는 다른 유형의 커맨드를 사용할 수 있는 에이전트(184)에 의해 구현되는 커맨드의 일례를 제공한다. 이벤트 라이브러리(186)는 사용자 머신에 관한 이벤트 또는 다른 이벤트 또는 정보를 로깅한다. 캐시 라이브러리(188)는 데이터의 로컬 캐싱을 위한 것이다. 채널 라이브러리(190)는 채널의 식별 번호 및 그에 대한 정보를 저장한다. 디스패처 라이브러리(194)는 제어 경로(196), 채널 관리자(198) 및 하나 이상의 지능형 라우터(200)와의 연결을 제공하며, 표 4에 나타낸 전형적인 기능을 포함할 수 있다. 메시징 라이브러리(192)는 데이터 경로(204)와의 연결을 제공한다.
표 5 내지 표 9는 C 프로그래밍 언어로 된 메시징 API의 일례를 제공한다. 표 5 및 표 6은 메시지를 전송 및 검색하기 위한 API의 일례를 제공한다. 표 7 및 표 8은 통지를 전송 및 검색하기 위한 API의 일례를 제공한다. 표 9는 제어 메시지를 전송 및 검색하기 위한 API의 일례를 제공한다. 이들 API 및 본 명세서에서의 다른 API, 프로그램 및 데이터 구조는 특정의 기능 또는 특징을 구현하기 위한 일례로서만 제공된 것이며, 구현에서는 임의의 프로그래밍 언어로 된 임의의 유형의 API 또는 다른 소프트웨어 엔티티를 포함할 수 있다.
에이전트 커맨드의 일례
커맨드 기능
pc.chn.open 채널 열기, 채널에 대한 모든 정보의 검색 및 그의 로컬 캐싱
pc.chn.close 채널 닫기
pc.chn.getRouterInfo 채널상으로 라우터에 대한 정보의 검색
pc.chn.getAttributeInfo 채널의 속성에 대한 정보의 검색
pc.chn.getProperties 채널에 대한 특성의 검색
디스패처 기능
서버측 연결 청취(accept에 의존). 각 연결을 처리할 쓰레드를 생성. 이 쓰레드는 그 연결시 오는 모든 요청을 수신 및 처리함.
클라이언트측 연결을 개시하는 쓰레드를 생성 및 연결되는 모든 데이터를 수신 및 처리함.
메시지를 전송하는 API의 일례
Figure 112009012218232-PAT00001
메시지를 검색하는 API의 일례
Figure 112009012218232-PAT00002
Figure 112009012218232-PAT00003
Figure 112009012218232-PAT00004
통지를 전송하는 API의 일례
Figure 112009012218232-PAT00005
통지를 검색하는 API의 일례
Figure 112009012218232-PAT00006
Figure 112009012218232-PAT00007
제어 메시지를 전송 및 검색하는 API의 일례
송신자측 코드 수신자측 코드
Figure 112009012218232-PAT00008
Figure 112009012218232-PAT00009
Figure 112009012218232-PAT00010
Figure 112009012218232-PAT00011
도 8은 전술한 것과 같은 지능형 라우터 및 도 4에 도시한 지능형 라우터(92)에 대한 전형적인 소프트웨어 구성요소(210)를 나타낸 도면이다. 소프트웨어 구성요소(210)는 예를 들면 지능형 라우터(92) 내의 프로세서(93)에 의해 실행하기 위해 메모리(94)에 저장될 수 있다. 구성요소(210)는 예를 들면 필터링 대몬(212), 디스패처(214), 라우팅 대몬(216) 및 캐시 관리자(218)를 포함한다. 필터링 대몬(212)은 이하에 기술하는 바와 같이 라우팅 규칙에 따라 가입용 콘텐츠를 처리하기 위해 콘텐츠 기반 라우팅을 위한 필터링을 제공한다. 디스패처(214)는 경로(220)를 통한 필터의 전파에 필요한 제어 메시지의 전달을 위한 것이며, 또한 이 디스패처는 사용자를 위한 단일 진입점 및 네트워크의 보안을 향상시키는 채널 관리자를 갖는 하나의 보안 소켓을 위한 것이기도 하다. 즉, 사용자는 이 일례에서 채널 관리자에 직접 접촉하지 않지만, 대안적 구현에서는 직접 접촉할 수 있다. 디스패처(214)는 채널 관리자로부터 속성(이름-값 쌍)을 획득하기 위해 제어 메시지를 사용한다.
라우팅 대몬(216)은 도 4에 도시한 종래의 백본 라우터 또는 다른 라우팅 장치를 통해 행해질 수 있는 데이터 경로(222)와의 통신을 위한 것이다. 캐시 관리자(218)는 데이터를 해당 지능형 라우터를 포함한 네트워크 노드에 로컬 캐싱하기 위한 것이다. 캐시 관리자(218)의 동작에 대해서는 이하에서 더 설명하며, 이는 네트워크 코어에 걸쳐 데이터를 분산 캐싱하기 위한 것이다.
콘텐츠 기반 라우팅은 애플리케이션 레벨에 대한 대안으로서 커널 레벨에서 구현될 수 있다. 커널에 의해 액세스가능한 메모리는 애플리케이션 계층에서의 그것과 별개의 것이다. 애플리케이션에서 콘텐츠 기반 라우팅을 실행하기 위해서는 예를 들면 메시지 데이터가 커널 메모리 영역으로부터 애플리케이션 영역으로 복사되어야만 하고 또 애플리케이션의 콘텍스트를 커널의 콘텍스트로부터 라우팅 애플리케이션의 콘텍스트로 전환해야만 한다. 이 두가지 모두는 상당한 오버헤드를 유발할 수 있다. 그 대신에 커널이 콘텐츠 기반 라우팅을 지원하도록 수정되는 경우, 라우팅은 훨씬 더 빠르게 일어날 수 있으며, 상기한 오버헤드가 없게 된다.
커널에서의 콘텐츠 기반 라우팅의 이러한 특징으로, 라우팅 대몬(216)은 구현에 따라 데이터를 데이터 경로(222)를 통해 직접 전송 또는 수신할 수도 있고 하지 않을 수도 있다. 대몬이란 애플리케이션 계층에서 실행되는 프로세스로서, 커널에 주입될 콘텐츠 기반 라우팅 테이블을 미리 계산한다. 그렇지만, 일단 주입되면 라우팅 테이블은 라우팅 결정을 하기 위해 커널에 의해 사용될 수 있다. 이와 마찬가지로, 필터링 대몬도 필터링 테이블을 미리 계산하여 이를 커널에 주입한다. 이러한 커널 구현에서, 라우팅 대몬도 필터링 대몬도 데이터 경로와 직접 대화하지 않는다.
도 9는 아마도 가입용 콘텐츠를 포함하는 메시지에 대한 패킷 구조(230)의 일례를 나타낸 도면이다. 콘텐츠 기반 라우팅에 사용하기 위한 패킷 또는 메시지는 예를 들면 헤더 부분과 페이로드 부분을 포함한다. 헤더 부분은 라우팅 또는 다른 정보를 규정한다. 페이로드 부분은 데이터나 콘텐츠 또는 데이터나 콘텐츠의 표시를 규정한다. 패킷 구조(230)는 IP 헤더(232), 사용자 데이터그램 프로토콜(UDP) 전송 제어 프로토콜(TCP) 헤더(234), 길이값(238), 하나 이상의 주제 필드(240) 및 하나 이상의 속성(242)을 포함한다. 패킷 구조(230)는 길이값 및 주제와 속성에 대한 기본 구조를 나타낸 것이다. 콘텐츠 기반 라우팅에 사용되는 패킷은 또한 이하에 기술하는 도 18의 일례에 나타낸 것과 같은 그 밖의 또는 여러가지 요소를 포함할 수 있으며, 콘텐츠 기반 라우팅용 패킷은 임의의 방식으로 구성될 수 있다. 또한, 속성은 예를 들면 메시지의 끝에 첨부되는 임의적 속성을 포함할 수 있다. 이 임의적 속성은 예를 들면 그 채널에 대해 규정된 메시지 포맷을 사용하여 전달되어야만 하는 것은 아닌 게시자에 의해 부가된 임시 정보이다.
게시자 및 가입자 방법
도 10은 채널의 설정 및 콘텐츠의 게시를 위해 게시자가 사용하는 전형적인 게시자 방법(250)의 플로우차트이다. 방법(250)은 에를 들면 게시자 머신(100) 내의 프로세서(114)에 의해 실행되는 에이전트(106)을 포함하는 소프트웨어 모듈로 구현될 수 있다. 방법(250)에서, 게시자 머신 내의 에이전트(106)는 채널에 대한 프록시의 게시자 생성을 수신한다(단계 252). 프록시는 네트워크와의 통신을 위한 것이다. 에이전트(106)는 인터페이스를 통해 채널에 대한 메시지 포맷을 결정하고(단계 253), 이 포맷 정보는 예를 들면 채널 관리자 또는 네트워크 내의 다른 엔티티로부터 획득될 수 있다. 에이전트(106)는 수신된 채널 정보를 사용하여 채널에 대한 프록시를 설정하고(단계 254), 이는 채널에 대한 속성을 수신하는 단계(단계 256)와 채널 상에 통지를 생성하는 단계(단계 258)를 포함한다. 이 통지는 채널을 통해 콘텐츠를 "청취"하고 있는 장치에 대한 콘텐츠를 제공한다. 속성은 그 통지에 대한 파라미터 및 특성을 정의한다.
에이전트(106)는 가입을 처리하는 데 사용하기 위해 채널 및 콘텐츠 정보의 식별자(ID)를 네트워크 코어 내 또는 다른 곳에 있는 지능형 라우터로 전송한다(단계 260). 게시자는 통지 속성에 적절한 값을 주고(단계 261), 이어서 게시자는 채널 속성에 따라 통지에 관한 콘텐츠를 게시할 수 있다(단계 262). 이 일례에서 단계 206 내지 단계 262는 통지의 게시를 달성하며, 이는 다른 대안에서는 특정의 구현에 따라 여러가지 또는 부가의 단계를 수반할 수 있다. 따라서, 이 일례에서 통지와 연관된 정보는 순서화된 속성 시퀀스로 분할되고, 그 각각은 이름, 통지 내에서의 위치(1로 시작함), 유형 및 값을 갖는다. 다른 대안에서, 속성은 특정의 구현에 따라 여러가지 특성을 가질 수 있다. 속성은 예를 들면 미리 정의된 속성, 임의적 속성 또는 양쪽 모두를 포함할 수 있다.
지능형 라우터는 해당 채널에 대한 속성을 획득하기 위해 패킷 내의 채널 ID를 사용할 수 있으며, 이것이 그 채널을 통해 전송된 패킷의 구조 또는 포맷을 결정한다. 구체적으로 설명하면, 각 패킷은 예를 들면 채널 ID와 관련된 태그 및 게시자 ID 및 주제 등의 다른 헤더 정보를 포함할 수 있다. 이 태그는 메시지 포맷에서 주제를 숫자로 매핑하는 데 사용될 수 있으며, 그의 일례가 도 18에 도시되어 있다. 작은 정수값, 예를 들어 16비트 값이 이 숫자에 사용될 수 있다. 다른 대안에서, 임의의 다른 유형의 숫자 또는 정보가 주제를 매핑하는 데 사용될 수 있다. 주제를 숫자로 매핑하는 것은 특정 이점을 제공할 수 있으며, 예를 들면 메시지 포맷에서 공간을 절감할 수 있고 메시지에서 주제의 표시를 규정하는 균일한 또는 표준적 방법을 제공함으로써 그 주제의 위치를 빠르게 찾아내어 식별할 수 있다. 지능형 라우터는 그 매핑을 로컬 저장하거나 다른 대안에서는 그 숫자를 사용하여 커맨드를 통해 해당 주제를 원격 획득할 수 있다.
표 10은 이 일례에서 정수값을 사용하여 숫자를 주제로 매핑하는 구조를 나타낸 것이다. 이 표에서 주제 트리 파라미터는 주제가 계층적 관계에서 하나 이상의 주제 필드를 포함할 수 있음을 나타낸다. 예를 들어, 주제 트리는 특정 심볼에 의해 구분된 주제 필드의 문자열을 포함할 수 있다. 주제 트리의 일례가 표 2에 제공되어 있다. 일례로서, 주제 트리 quotes.nyse는 주제 "quotes"와 서브필드 "nyse"를 포함하며, 이 2개의 항은 URL이나 다른 네트워크 주소에서 발견되는 것과 같은 "."으로 구분되어 있다. 마침표를 사용하고 URL형 문자열을 규정하는 것과는 별개로, 주제 트리는 구분을 위해 임의의 문자 및 심볼을 사용하는 임의의 방법으로 규정될 수 있다.
숫자 주제 트리
정수값 1 주제 트리 1
정수값 2 주제 트리 2
...
정수값 N 주제 트리 N
따라서, 특정 채널에 대한 패킷 포맷 또는 구조를 알면, 지능형 라우터는 신속하게 콘텐츠 기반 라우팅을 위한 패킷에서 주제 및 속성 또는 다른 정보의 위치를 알아낼 수 있다. 예를 들면, 채널은 그 채널을 통해 전송된 주제 및 속성의 바이트 위치를 규정하여 그 패킷에서의 바이트를 카운트함으로써 그 위치를 쉽게 찾아낼 수 있다. 다른 대안에서는, 지능형 라우터는 주제 및 속성 또는 다른 정보의 위치를 알아내기 위해 패킷을 파싱할 수 있다.
표 11은 C++ 프로그래밍 언어로 된 게시자 프로그램의 일례를 제공한다. 표 12는 채널을 생성하는 API의 일례를 제공한다. 표 13은 채널 관리자(도 6 참조)에 의해 유지되고 도시된 바와 같이 채널 관련 정보를 제공하는 채널 구성 파일의 일례를 제공한다. 이 시스템은 다른 대안에서는 처리 부하를 분산시키기 위해 로컬 채널 관리자로서 기능하는 지리적으로 분산된 서버의 IP 주소를 제공하는 글로벌 채널 관리자를 가질 수 있다.
게시자 프로그램의 일례
Figure 112009012218232-PAT00012
Figure 112009012218232-PAT00013
채널을 생성하는 API의 일례
Figure 112009012218232-PAT00014
Figure 112009012218232-PAT00015
채널 구성 파일의 일례
Figure 112009012218232-PAT00016
Figure 112009012218232-PAT00017
도 11은 가입의 수신 및 처리에 사용하기 위한 가입자 방법(264)의 플로우차트이다. 방법(264)은 예를 들면 가입자 머신(122) 내의 프로세서(134)에 의해 실행되는 에이전트(128)를 포함하는 소프트웨어 모듈로 구현될 수 있다. 방법(264)에서, 그래픽 사용자 인터페이스(GUI)는 예를 들어 이용가능한 채널의 표시를 사용자에게 제공하고(단계 266), 이는 애플리케이션(126)에 의해 달성될 수 있다. 채널을 식별하는 정보는 예를 들면 채널 관련 정보를 제공하는 채널 관리자로부터 수신될 수 있다. 임의의 유형의 애플리케이션(126)이 채널의 식별 번호를 임의의 특정 방식 또는 포맷으로 제공하는 데 사용될 수 있다. 애플리케이션은 사용자의 채널 선택을 수신하고(단계 268), 선택된 채널에 대한 API 또는 다른 프로그램을 호출한다(단계 270). API는 선택된 옵션에 해당하는 채널에 대해 사용자에게 가입 옵션을 제공한다(단계 272). API는 사용자로부터 가입을 위한 값을 수신하고(단계 274), 그 가입을 이하에 설명하는 바와 같이 처리하기 위해 에이전트(128)로 전송한다(단계 276).
가입을 위한 파라미터에는 예를 들면 표 1에 나타낸 바와 같은 술어가 포함될 수 있다. 각 채널은 예를 들면 해당 채널에 대한 특정의 요건 또는 파라미터에 따라 가입을 처리하기 위해 그 자신의 API를 사용할 수 있다. 이들 API는 예를 들면 가입을 수신하기 위한 웹 기반 또는 자바 기반 API를 포함할 수 있으며, 가입을 위한 정보를 수신하여 이를 에이전트 애플리케이션에 전달하기 위해 임의의 유형의 사용자 인터페이스 및 처리를 사용할 수 있다.
도 12는 채널 및 가입자 화면 또는 GUI(278, 284)를 개념적으로 나타낸 도면으로서, 이는 가입을 수신하기 위한 방법(264)과 연계하여 사용될 수 있다. 화면(278)은 사용자가 선택하기 위한 이용가능한 채널을 나타낸 복수의 섹션(282)을 포함한다. 특정 채널을 선택하면, 섹션(286)에 가입을 위한 사용자의 값을 수신하기 위해 화면(284)이 표시된다. 사용자는 가입을 확인하기 위해 섹션(288)을 선택하거나 가입을 취소하기 위해 섹션(290)을 선택할 수 있다. 화면(278, 284)은 예를 들면 하이퍼텍스트 마크업 언어(HTML) 웹 페이지로서 또는 임의의 다른 포맷으로 포맷될 수 있다. 또한, 화면은 원하는 바에 따라 사용하기 편리하고 시각적으로 눈에 띄는 인터페이스를 가입자에 제공하기 위해 아마도 예를 들면 텍스트, 그래픽, 화상, 다양한 색상, 또는 멀티미디어 정보를 포함하는 임의의 구성의 섹션 및 콘텐츠를 포함할 수 있다. 화면은 또한 예를 들어 종래의 브라우저 기능을 제공하는 도구막대(280)를 포함할 수 있다.
표 14는 C++ 프로그래밍 언어로 된 가입자 프로그램의 일례를 제공한다.
가입자 프로그램의 일례
Figure 112009012218232-PAT00018
Figure 112009012218232-PAT00019
Figure 112009012218232-PAT00020
페이로드 조사 및 채널을 통한 콘텐츠 기반 라우팅
도 13은 페이로드 조사 방법(300)을 통한 콘텐츠 기반 라우팅의 플로우차트이다. 방법(300)은 예를 들면 필터링 대몬(212)으로 표시된, 지능형 라우터(92) 내의 프로세서(93)에 의해 실행되는 소프트웨어 모듈로 구현될 수 있다. 다른 대안에서, 이 방법은 ASIC 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 방법(300)에 도시된 바와 같은 콘텐츠 기반 라우팅은 네트워크 코어에서나 경계 라우터에서 등과 같이 네트워크 내의 어느 곳에서라도 지능형 라우터에서 수행될 수 있다.
일반적으로, 콘텐츠 기반 라우팅은 패킷을 어떻게 처리해야 하는지를 결정하기 위해 패킷의 페이로드 부분의 조사를 수반한다. 이러한 콘텐츠 기반 라우팅 방법은 예를 들면 (예를 들면 필터를 사용하여) 가입의 목록을 임의의 순서로 처리하는 일, 메시지에 대한 라우팅을 결정하기 위해 메시지를 주제별과 속성별로 라우팅 규칙과 비교하는 일, 및 네트워크 코어에서 처리를 수행하는 일을 포함할 수 있다. 이 규칙은 라우터내 처리를 규율하는 규칙 또는 필터와 관련된 임의의 규칙을 포함할 수 있다. 이러한 라우팅 결정은 따라서 네트워크 코어에 걸쳐 배포될 수 있다. 채널로 표시된 주제의 사용은 메시지 포맷을 결정하고, 따라서 예를 들면 특정의 채널에 대한 메시지 또는 패킷에서 속성의 바이트 위치를 알아냄으로써 지능형 라우터에 메시지 내에서 속성의 위치를 신속하게 알아내는 방법을 제공한다.
방법(300)에서, 지능형 라우터(92)는 메시지에 대한 패킷을 수신한다(단계 302). 지능형 라우터는 패킷으로부터 해당 메시지에 대한 채널 ID를 결정하고(단계 304), 채널 ID를 사용하여 채널에 대한 속성을 검색한다(단계 306). 이 일례에서, 채널의 유형(채널 ID로부터 결정됨)은 패킷 내에서의 속성의 위치를 결정한다. 채널에 대한 속성은 로컬 저장되거나 채널 관리자를 통해 원격 검색될 수 있다. 지능형 라우터(92)는 가입에 대응하는 필터를 검색한다(단계 308). 필터는 하나 이상의 속성 테스트, 보통은 한 그룹의 가입을 위한 속성 테스트를 포함한다. 지능형 라우터(92)는 패킷 내의 속성을 필터 설명에서의 해당 속성 테스트(들)에 적용한다(단계 310).
필터 설명 내의 모든 속성 테스트(들)이 속성들이 긍정 결과를 생성하여 모든 속성 테스트(들)을 만족한다는 것을 의미하는 경우(단계 312), 지능형 라우터는 그 필터와 관련된 규칙에 의해 규정된 한 세트의 함수를 실행한다(단계 314). 이들 함수는 예를 들면 패킷을 그 다음 링크로 라우팅하는 것 및/또는 규칙(들)에 의해 규정된 바와 같이 로컬 라우터에서 패킷의 콘텐츠를 사용하여 어떤 행동 또는 계산을 수행하는 것을 포함할 수 있다. 규칙이 링크일 때, 그 규칙은 일반적으로 지능형 라우터, 백본 라우터, 네트워크 연결 장치 또는 다른 엔티티를 포함할 수 있는, 패킷을 수신할 그 다음 네트워크 노드를 식별한다. 다른 대안에서, 그 다음 링크는 다른 방식으로 지정되거나 가입과 관련될 수 있다.
필터 설명에서의 모든 속성 테스트(들)이 긍정 결과를 생성하지 않아 속성들이 모든 속성 테스트(들)을 만족시키지 않는다는 것을 의미하는 경우(단계 312), 필터는 불일치로 선언된다(단계 315). 지능형 라우터는 어느 것이 먼저 일어나든 필터 설명에서의 모든 속성 테스트가 다 끝나거나 첫번째 부정 결과가 나올 때까지 반복하여 상기 절차를 따른다.
이 필터에 대해 모든 속성 테스트가 처리되었으면, 지능형 라우터는 필터가 더 있는지를 판정하고(단계 316), 더 있는 경우 단계 308로 돌아가 그 다음 필터의 속성을 처리할 그 다음 필터에 대한 속성 테스트를 검색한다. 매칭 절차(단계 308, 310, 312, 314, 315, 316)는 어느 것이 먼저 일어나든 전체 필터 세트에 대해 다 끝나거나 모든 행동이나 라우팅 규칙에 대한 결과가 결정될 수 있을 때까지 계속된다. 패킷이 어떤 필터도 만족시키지 않는 경우, 그 패킷은 드롭(폐기)되고 포워딩되지 않는다.
지능형 라우터(92)는 어떤 특정 순서로 필터들을 살펴볼 수 있다. 예를 들어, 표 15에 나타낸 바와 같이, 지능형 라우터는 가입을 위한 필터를 파일이나 라우팅 테이블에 저장하고 속성을 필터에 적용하기 위해 그 필터를 선형적으로 살펴볼 수 있다(속성 테스트). 다른 대안에서, 라우팅 테이블은 필터에 대한 링크 또는 포인터를 포함할 수 있다.
콘텐츠 기반 라우팅은 예를 들면 트래픽 조건에 기초한 알고리즘의 전환 등 애플리케이션 및 성능 향상의 발견적 방법에 따라 선택적으로 동시에 2개 이상의 방법을 사용할 수 있다. 처리를 위한 필터는 콘텐츠 기반 라우팅을 위해 페이로드 부분의 조사를 수행하는 데 사용하기 위해 네트워크 내의 라우터에서 선택적으로 암호화, 복호화, 변환 및 병합될 수 있다. 예를 들어, 가격 > $3.54122 등의 가입은 가격 > $3.54로 반올림될 수 있는 데, 그 이유는 애플리케이션에서의 게시가 소숫점 둘째자리 이상의 화폐 속성을 포함하지 않는 것으로 알려져 있기 때문이다. 또한, 외국 화폐는 해외로부터 전송된 게시가 예를 들면 미국에 위치한 첫번째 라우터에 도달할 때 역시 미국 화폐로 변환될 수 있다.
선형 접근법에 대한 대안으로서, 지능형 라우터(92)는 다른 순서로 또는 아마도 처리의 속도 및 효율성을 향상시킬 수 있는 여러가지 알고리즘에 따라 처리를 위한 필터를 선택할 수 있다. 표 16은 가입 및 그에 대한 해당 링크의 일례를 제공한다. 이 일례에서, 주제는 특정 채널에 관련되어 있고, 그 주제에 대한 가입은 필터에 대한 라우팅 규칙에 의해 표현될 수 있다. 주제는 예를 들어 콘텐츠의 소스를 식별하는 URL(Uniform Resource Locator) 등의 네트워크 주소를 포함할 수 있다.
채널 1
가입 링크
필터 1a 링크 1a
필터 2a 링크 2a
... ...
필터 Na 링크 na
...
채널 N
가입 링크
필터 1N 링크 1a
필터 2N 링크 1b
... ...
필터 NN 링크 1n
콘텐츠 술어 링크
Figure 112009012218232-PAT00021
Figure 112009012218232-PAT00022
Figure 112009012218232-PAT00023
Figure 112009012218232-PAT00024
Figure 112009012218232-PAT00025
Figure 112009012218232-PAT00026
네트워크 노드에서의 캐싱
도 14는 캐싱 방법(320)의 플로우차트이다. 방법(320)은 예를 들면 캐시 관리자(218)로 표시된 것과 같은, 지능형 라우터(92) 내의 프로세서(93)에 의해 실행되는 소프트웨어 모듈로 구현될 수 있다. 다른 대안에서, 이 방법은 해당 지능형 라우터와 같은 또는 다른 물리적 장치에서 ASIC 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 방법(320)에서, 지능형 라우터(92)는 데이터 또는 콘텐츠, 채널 ID 및 주제를 갖는 메시지를 수신한다(단계 322). 지능형 라우터(92)는 데이터에 시간 표시를 하고(단계 324), 이를 메모리(94) 또는 보조 저장장치(97) 등에 로컬 캐싱한다(단계 326). 지능형 라우터는 캐싱된 데이터를 예를 들면, 채널 ID, 주제 및 시간 스탬프에 의해 인덱싱한다(단계 328).
지능형 라우터(92)는 데이터의 요청을 수신하면(단계 330) 그 요청에 따라 인덱스를 사용하여 캐싱된 데이터를 검색한다(단계 332). 지능형 라우터(92)는 캐싱된 데이터를 백본 라우터(95) 또는 다른 라우팅 엔티티로 전송하고 종국에는 요청자 또는 다른 사람에게 전송한다. 방법(320)은 계속적으로 데이터를 캐싱하고 요청에 응답하여 캐싱된 데이터를 검색하기 위해 반복하여 실행될 수 있다.
도 15는 방법(320)과 함께 사용하기 위한 캐시 인덱스(336)를 나타낸 도면이다. 캐시 인덱스(336)는 데이터(338)를 수신하여 이를 시간 스탬프(340)와 함께 저장한다. 데이터가 수집될 때, 그 데이터는 Δt 간격으로 표시되며, 여기서 Δt는 표시 사이의 시간, 예를 들어 t2-t1을 나타낸다. 다른 대안에서는 임의의 방식으로 시간 표시를 하는 다른 유형의 인덱스가 사용될 수 있다.
표 17은 캐싱된 데이터의 인덱싱을 개념적으로 나타낸 것이다. 표 18은 캐싱을 위한 연결 이력을 저장하는 데이터 구조를 개념적으로 나타낸 것이다. 표 19는 지능형 라우터를 갖는 네트워크 노드에 데이터를 로컬 캐싱하는 데 사용하기 위한 데이터 구조의 일례를 제공한다.
시간 표시는 임의의 고정 간격 또는 가변 간격으로 행해질 수 있다. 예를 들어, 데이터는 매 5분마다 캐싱 및 인덱싱될 수 있다. 시간 및 주제를 지정하여 캐싱된 데이터를 검색하는 커맨드(#.getCache 등)를 수신하면, 채널 관리자(218)는 캐싱된 데이터를 사용하여 단계 332의 요청에 대응하는 캐싱된 데이터를 검색할 수 있는지를 판정한다.
각 주제 또는 채널은 예를 들면 멀티캐스트 트리 및 한 세트의 지능형 라우터에서 그 자신의 IP 주소를 포함할 수 있다. 따라서, 표 18은 사용자 머신에 로컬 저장될 수 있는 이러한 라우터 사이의 연결 이력을 나타내며, 경계 라우터가 고장난 경우 사용자 머신은 경계 라우터가 온라인 상태로 복원될 때 그 채널에 대한 업스트림 라우터와 어떻게 재연결해야 하는지를 결정하기 위해 연결 이력에 액세스할 수 있다. 사용자 머신은 또한 예를 들어 가입을 위해 대기중인 콘텐츠를 획득하기 위해 단절되어 있던 기간 동안 get cache 커맨드를 실행할 수 있다.
t1 채널 ID 1 주제 1-n 캐싱된 데이터에 대한 포인터 1
t2 채널 ID 2 주제 1-n 캐싱된 데이터에 대한 포인터 2
tn 채널 ID N 주제 1-n 캐싱된 데이터에 대한 포인터 N
연결 이력
시간 라우터 네트워크 주소
t1 R2 UR2 UR3
t2 R2 UR2 UR3
...
지능형 라우터의 캐시 데이터 구조의 일례
채널 노드
Figure 112009012218232-PAT00027
주제 노드
Figure 112009012218232-PAT00028
데이터 노드
Figure 112009012218232-PAT00029
Figure 112009012218232-PAT00030
저장된 시간 그레인 노드
Figure 112009012218232-PAT00031
마지막 시간 그레인 노드
Figure 112009012218232-PAT00032
이들 전형적인 데이터 구조는 이하의 정보를 포함한다. 주제 노드는 주제 식별자, 주제 레벨, 부모 채널 또는 주제 노드에 대한 포인터, 그 자신의 디렉토리에 대한 파일 기술자, 그의 다음 레벨 주제 노드를 포함하는 해쉬 테이블에 대한 포인터, 및 데이터 노드에 대한 포인터를 포함한다. 데이터 노드는 그의 주제 부모 노드에 대한 포인터, 데이터 디렉토리에 대한 파일 기술자, 각 저장 장치 상에 저장된 데이터에 대한 데이터 구조를 포함하는 원형 버퍼, 버퍼의 헤드와 테일, 및 검색 및 저장 동안 데이터 노드를 잠그는 잠금 장치(lock)를 포함한다. 저장된 시간 그레인 노드는 실제 데이터 파일을 나타내는 노드이고, 마지막 시간 그레인 노드는 저장 장치에 아직 저장되지는 않았지만 메모리에 보관되어 있는 마지막 버퍼를 나타낸다. 이 일례에서 캐싱 및 데이터 저장 쓰레드는 마지막 시간 그레인 노드로의 동시 액세스를 방지하기 위해 마지막 시간 그레인 노드의 뮤텍스(mutex)를 사용한다.
에이전트 처리
도 16은 발신 가입 메시지에 대한 에이전트 방법(350)의 플로우차트이다. 방법(350)은 예를 들면 사용자(가입자) 머신(122) 내의 프로세서(134)에 의해 실행되는 에이전트(128)로 표시된 것과 같은 소프트웨어 모듈로 구현될 수 있다. 방법(350)에서, 에이전트(128)는 도 11 및 도 12에서 전술한 방법에서와 같이 가입을 수신한다(단계 352). 에이전트(128)는 가입을 위한 부울 표현식을 지정하는 문자열을 생성하고(단계 354), 가입에서의 에러를 검출하기 위해 그 문자열을 파싱한다(단계 356). 에러가 존재하면, 에이전트(128)는 사용자가 그 에러를 정정하여 가입을 재입력하도록 사용자에게 에러 메시지를 제공할 수 있다. 가입이 어떤 에러도 포함하지 않으면(단계 358), 에이전트(128)는 표현식을 데이터 구조에 저장하며, 그의 일례가 이하에 제공된다(단계 362). 에이전트(128)는 데이터 구조에서의 구성 요소 같지 않음 표현식을 긍정 형태로 변환하고(단계 364), 그 데이터 구조를 대응하는 논리합 정규 형식(DNF) 구조로 변환한다(단계 366). 에이전트(128)는 또한 DNF 구조의 AND 표현식을 단순화하여 단지 범위 필터와 구성원 자격 테스트만을 포함하도록 한다(단계 368).
DNF는 공지의 표준 형식으로서, 부울 표현식이 논리합(disjunct)라고 하는 하나 이상의 부분 표현식의 OR로서 표현되고, 각 부분 표현식은 하나 이상의 속성 테스트의 AND이다. 예를 들어, 부울 표현식(가격 >= 10 AND (심볼 == "LU") OR 심볼 == "T")은 등가 DNF 표현 ((가격 >= 10) AND 심볼 == "LU") OR (가격 >= 10 AND 심볼 == "T")을 갖는다.
단계 364에서의 변환은 "같지 않음" 연산자(전형적인 구문에서 !=으로 표현됨)를 갖는 표현식을 하나의 금지된 값이 아닌 모두 허용된 값을 지정하는 등가의 "긍정" 형식으로의 변환을 수반한다. 이 변환은 DNF의 생성에 앞서 수행되고, 이 변환이 필요한 이유는 이 일례에서 라우터가 공식이 긍정 형식으로 되어 있을 것을 요구하기 때문이다. 예를 들어, 표현식(가격 != 80)은 등가의 긍정 표현식(가격 <= 79 OR 가격 >= 81)으로 변환될 수 있다.
단계 368에서의 변환은 DNF가 생성된 후에 수행되며, 그 결과 얻어지는 표현식에 대한 추가의 단순화를 수반하고, 이 변환은 또한 이 일례에서는 라우터의 작업을 단순화하기 위해서도 수행된다. 구체적으로 설명하면, 동일한 속성에 대한 다수의 속성 테스트의 AND는 하나의 하한, 하나의 상한, 상한 및 하한 모두, 또는 등식 테스트의 경우 하나의 값 중 어느 하나를 갖는 표준 "범위 필터"로 단순화될 수 있다. 이어서, 특정 종류의 범위 필터는 표 22에 따라 인코딩된다.
예를 들어, 표현식(가격 >= 10 AND 가격 <= 80 AND 가격 >= 20 AND 가격 <= 100)은 표현식(가격 >= 20 AND 가격 <= 80)으로 단순화될 수 있고, 이것이 상한과 하한을 모두 갖는 범위 필터의 일례이다. 단순화 후의 다른 종류의 일례로는 다음과 같은 (가격 >= 20)(하한만 있음), (가격 <= 80)(상한만 있음) 및 (가격 == 50)(하나의 값)이 있다. 이들 범위 필터를 생성함에 있어서, 어떤 부분 표현식은 참이나 거짓으로 단순화될 수 있으며, 이 경우 부분 표현식은 부울 대수의 법칙에 따라 제거될 수 있게 되어 메시지 내의 표현식의 인코딩을 추가로 최적화하게 된다. 예를 들어, 표현식(가격 >= 50 AND 가격 <= 20)은 "가격"에 대한 어떠한 값도 표현식을 만족할 수 없기 때문에 거짓으로 단순화된다. 전체 필터 표현식이 거짓으로 단순화되는 특수한 경우, 에이전트는 메시지를 생성할 필요가 전혀 없으며, 따라서 라우터의 불필요한 작업을 덜어주게 된다.
주제 필터가 와일드카드를 포함하는 경우, 에이전트(128)는 이하에 설명하는 바와 같이 와일드카드를 선택적으로 변환할 수 있다(단계 370). 그렇지 않은 경우, 어떤 와일드카드도 사용자 머신이나 다른 장치가 아닌 네트워크에서 변환될 수 있다. 이 전형적인 실시예에서, 주제 필터의 구문은 와일드카드를 사용하는 유일한 구문이며, 속성 필터의 구문은 부울 표현식을 사용하는 유일한 구문이다. 다른 대안에서, 구현은 주제 필터와 속성 필터에 대해 서로 다른 또는 각종 유형의 구문을 사용할 수 있다.
에이전트(128)는 그 결과 얻어지는 DNF를 메시지로 인코딩하고(단계 372), 그 메시지를 지능형 라우터로 전송한다(단계 374). 인코딩은 가입을 보통 메시지 포맷으로 변환하는 것을 수반하며, 이는 가입이 데이터의 문자열을 포함한다는 것을 의미한다. 이 전송은 가입을 위해 주제 필터 및 속성 필터로부터 생성된 라우팅 규칙을 네트워크 내의 하나 이상의 지능형 라우팅 또는 다른 라우팅 엔티티로 전파하는 것을 수반할 수 있다. 전파를 위해, 가입 표현식은 예를 들면 종래의 패킷 구조로 매핑될 수 있다.
단계 372의 인코딩은 채널에 대한 가입을 채널을 통한 전파를 위해 메시징 API의 메시징 포맷으로 마샬링하는 것을 수반한다. 가입은 내부적으로 예를 들면 주제 #.SUBSCRIPTION을 갖는 통지로서 전달된다. 가변수의 주제 필터 필드와 가변수의 속성 테스트 양쪽 모두가 있기 때문에, 한쌍의 바이트는 주제 필터 필드의 수를 저장하기 위해 사용되고, 또다른 한쌍의 바이트는 이 일례에서 속성 테스트의 수를 저장하기 위해 사용된다. 주제 필터의 개개의 필드는 순차적으로 예를 들면 그 필드가 원래의 가입에서 지정되었던 그 순서로 마샬링되고, 각각 메시지의 2바이트 부분으로 마샬링된다. 와일드카드 필드는 이하에 기술하는 바와 같이 마샬링된다.
속성 테스트를 마샬링함에 있어서, 테스트의 피연산자는 통지의 속성값의 마샬링과 유사한 방식으로 메시지의 끝에서 마샬링된다. 속성 테스트 및 피연산자를 마샬링하기에 앞서, 이들은 DNF의 각 논리합 내에서 속성 순서별로 정렬되고, 미리 정의된 속성에 대해 위치 순서로 테스트가 있게 되며, 이어서 임의적 속성에 대해 이름 순서로 테스트가 있게 된다. 게다가, 각 논리합 내의 스칼라 값 속성에 대한 관계 테스트 세트는 하나의 경계(좌 또는 우 개방 범위 또는 등식 테스트의 경우) 또는 2개의 경계(별개의 경계 사이의 폐쇄 범위의 경우)를 갖는 범위 필터로서 표준 형식으로 단순화된다. 테스트에 관한 나머지 정보는 예를 들면 피연산자와 동일한 순서의 2바이트 쌍으로 인코딩되고, 이 순서의 2바이트 쌍은 메시지에서 주제 필터 필드의 2바이트 인코딩의 시퀀스 바로 다음에 위치한다. 2바이트 쌍은 속성 테스트의 비트 문자열 인코딩의 시퀀스로 된 한가지 형식을 포함할 수 있으며, 이는 또한 2바이트 쌍과는 별개인 다른 유형의 인코딩을 나타내는데 사용될 수 있다. 속성 테스트의 일례가 이하에 제공된다.
속성 테스트의 인코딩에 대한 스키마가 표 20에 나타내어져 있다. 표 21은 2바이트 쌍에 대한 인코딩을 나타낸 것이고, 표 22는 2바이트 쌍으로 된 연산자 ID의 인코딩을 나타낸 것이다.
인코딩 규칙
1 D 비트가 0인 것은 DNF에서의 새로운 논리합의 시작을 나타내고, D 비트가 1인 것은 현재의 논리합 내의 부가의 논리곱을 나타냄.
2 통지 속성 위치가 모두 1이 아닌 값은 테스트가 적용되는 소정의 속성의 위치(채널의 통지 유형에 의해 정의됨)를 나타내고, 테스트에 대한 피연산자는 도 18에 도시한 일례에 나타낸 바와 같이 마샬링된다.
3 통지 속성 위치가 모두 1인 값은 테스트가 임의적 속성에 적용됨을 나타내고, 이 경우 테스트가 적용되는 이름 길이와 속성의 이름은 피연산자와 함께 마샬링된다.
4 피연산자 유형 ID의 비트는 속성에 대한 소정의 유형 중 하나를 인코딩한다.
5 피연산자 ID의 비트는 표 22에 정의된 바와 같이 테스트에서 사용되는 연산자를 인코딩한다.
첫번째 바이트
0 1 2 3 4 5 6 7
D 통지 속성 위치
두번째 바이트
0 1 2 3 4 5 6 7
피연산자 유형 ID 연산자 ID
연산자 연산자 ID
좌 개방 범위 000
우 개방 범위 001
폐쇄 범위 010
등식 테스트 011
긍정 구성원 자격 테스트(in) 100
부정 구성원 자격 테스트(not in) 101
테스트를 위한 2바이트 쌍은 테스트의 피연산자의 유형과 테스트가 소정의 또는 임의적인 속성에 적용되는지 여부 모두를 이미 나타내고 있기 때문에, 임의적인 속성 또는 그의 유형에 수행되는 테스트의 횟수를 별도로 마샬링할 필요는 없다. 이 방식은 통지에 단지 127개의 사전 정의된 속성이 있는 것으로 가정한다. 다른 대안에서, 이 설계는 속성 테스트를 인코딩하기 위해 더 많은 비트를 사용할 수 있다.
이러한 마샬링 규정이 속성 필터의 DNF에 따라 속성 테스트를 순서화 및 그룹화하는 동안, 기반구조 요소(라우터 등)는 속성 필터의 전체적 평가가 보다 효율적이 되도록 하기 위해 어떤 다른 순서로(아마도 여러가지 테스트의 성공 또는 실패의 확률에 관해 동적으로 유도된 로컬 데이터에 따라) 테스트를 평가하려고 할 수도 있다. 메시지의 가입 ID 필드는 가입을 수정 또는 해지하기 위해 차후의 요청에서 에이전트의 경계 라우터에 그 가입을 일의적으로 확인시켜 주기 위해 에이전트에 의해 생성된 값이다. 상세히 설명하면, 가입의 속성 필터에 대한 동적 수정은 주제가 #.RESUBSCRIPTION이고 가입 ID가 수정되고 있는 이전에 등록된 가입의 ID인 것을 제외하고는 도 18의 일례에 도시한 메시지 포맷을 사용하여 전파된다. 해지는 예를 들면 가입 ID 필드를 통해 도 18의 메시지 포맷을 사용하여 전파되며, 주제는 #.UNSUBSCRIPTION이고 가입 ID는 해지되고 있는 이전에 등록된 가입의 ID이다.
이하에서는 전술한 바와 같은 에이전트에 의한 변환 및 인코딩을 설명하는 일례를 제공한다. 이하의 예시적인 속성 필터 표현식, 즉 가격 >= 10 AND (심볼 == "LU" OR (거래량 >= 1000 AND 거래량 <= 10000))을 생각해보자. 도 19는 표현식을 저장하기 위해 단계 362에서 에이전트에 의해 사용되는 객체를 나타내는 UML(Unified Modeling Language) 다이어그램(390)을 나타낸 것이다. 이 다이어그램은 가입을 상술하기 위한 계층 관계를 나타낸 것으로서, 변수, 상수값 또는 양쪽 모두를 포함할 수 있다. 이 다이어그램에서 객체는 특정 구현에 따라 필터 클래스의 인스턴스일 수 있다. 각각의 단순 필터 객체는 필터 표현식의 대응하는 속성 테스트에 관한 정보를 저장하는 데 사용되는 속성의 값을 나타낸다. 도 19의 표현식에서, OR 필터(396)는 2개의 AND 필터(392, 400)를 연결한다. AND 필터(392)는 가입에 대한 속성을 갖는 단순 필터(394)를 포함한다. 이와 마찬가지로, OR 필터(396)는 단순 필터(398)를 포함하고, AND 필터(400)는 단순 필터(402, 404)를 포함한다.
이 일례의 목적상, 속성인 가격, 심볼 및 거래량은 관련 채널의 사전 정의된 속성으로 가정하며, 각각 위치 0, 1 및 2에 정의되어 있는 것으로 가정한다. 게다가, 속성의 유형은 각각 부호없는 정수(unsigned integer)(유형코드 6), 문자 어레이(유형코드 12) 및 부호없는 정수(유형코드 6)인 것으로 가정한다.
다음에, 그의 속성 필터로서 상기 예시한 속성 필터 표현식을 포함하는 가입을 생각해보자. 도 18은 가입의 메시지로의 마샬링을 나타낸 것이다. 도 18의 좌측의 개요(386)는 실제 메시지 내용을 나타내고, 우측의 개요(388)는 메시지의 여러 부분에 대한 설명을 제공한다. 이 일례에서 각 개요의 폭은 4 바이트이다. 마샬링에 앞서, 필터는 그의 등가 DNF, 즉 (가격 >= 10 AND 심볼 == "LU") OR (가격 >= 10 AND 거래량 >= 1000 AND 거래량 <= 10000)로 변환된다.
16비트 속성 테스트 인코딩은 비트 시퀀스로서 나타내어져 있으며, 간극은 서로 다른 부분으로의 분리를 나타낸다. 이 일례에서 가격에 관한 2번의 테스트가 합성될 수 없는 이유는 이들이 별개의 논리합이고, 따라서 이들은 우측 경계를 갖지 않는 범위(우 개방 범위)로서 개별적으로 마샬링된다. 한편, 거래량에 대한 2번의 테스트가 합성될 수 있는 이유는 이들이 동일한 논리합 내에 있고, 따라서 이들은 하나의 "폐쇄 범위" 테스트로서 함께 마샬링된다.
마지막으로, 유의할 점은 어떤 필드가 "가정"으로 특징지워져 있다는 것이며, 이는 이들 필드에 대한 값이 이 일례에서는 임의로 선택되었으며 일반적으로 마샬링된 가입에 독립적이라는 것을 의미한다. 게다가, 가입에 대한 주제 필터는 임의로 ">"로 선택되었으며, 이는 관련 채널에 의해 정의된 어떤 주제와도 일치한다. 전술한 도 18 및 도 19에 도시한 일례는 단지 설명의 목적상 제공된 것이며, 마샬링은 임의의 다른 유형의 가입에서도 사용될 수 있다. 또한, 방법(350)은 가입을 마샬링하는 단지 한가지 일례를 제공한 것이며, 이들은 임의의 다른 방식으로 마샬링될 수 있다.
도 17은 착신 메시지에 대한 에이전트 방법(376)의 플로우차트이다. 방법(376)은 예를 들면 사용자 머신(122) 내의 에이전트(128) 및 애플리케이션(126)에 의해 구현될 수 있다. 방법(376)에서, 에이전트(128)는 가입에 대응하는 지능형 라우터로부터의 메시지를 수신한다(단계 378). 에이전트(128)는 예를 들면 메시지 내의 채널 ID에 의해 가입에 대응하는 채널을 결정하고(단계 380), 채널에 대한 API를 호출한다(단계 382). API는 가입에 대한 데이터를 사용자 머신에 GUI 또는 다른 포맷으로 나타낸다(단계 384). 착신 메시지의 처리는 전술한 인코딩 프로세스의 역순으로 데이터를 디코딩하는 프로세스를 사용할 수 있으며, 이 디코딩(역 인코딩)은 라우터 또는 다른 네트워크 엔티티에서 수행될 수 있다.
와일드카드 처리
도 20은 와일드카드 방법(410)의 플로우차트이다. 이 방법은 필터가 가입을 위한 표현식 내의 와일드카드를 변환하기 위해 한 세트의 라우팅 규칙을 사용하는 일례를 나타낸 것이다. 방법(410)은 예를 들면 사용자 머신(122) 내의 프로세서(134)에 의해 실행되는 에이전트(128)에 의해 나타낸 것과 같은 소프트웨어 모듈로 구현될 수 있다. 다른 대안에서, 와일드카드는 지능형 라우터(92) 내에서 또는 ASIC(91) 내에 포함된 대응하는 함수에서 소프트웨어 제어 하에 프로세서에 의해 네트워크에서 처리될 수 있다. 와일드카드는 개방 필드 또는 가변 길이 필드를 포함하며, 그의 일례가 표 21에 제공되어 있다.
방법(410)에서, 에이전트(128) 또는 다른 엔티티는 와일드카드를 갖는 가입을 수신한다(단계 412). 가입에 대한 주제 길이는 콘텐츠를 게시할 때 게시자에 의해 지정될 수 있으며, 주제는 게시자 머신에서 예를 들면 주제의 필드를 카운트하여 그에 대한 필드 카운트(길이)를 획득하기 위해 사전 처리될 수 있다. 에이전트(128)는 필터 피연산자 내의 필드의 수를 카운트하고(단계 414), 필터 길이 = N의 새로운 규칙(필터)를 초기화한다(단계 416). 에이전트(128)는 가입을 위한 서브필드를 검색하고(단계 418), 필터 피연산자 서브필드 O[i]가 와일드카드인지를 결정한다(단계 420). 첫번째 피연산자 서브필드가 와일드카드가 아닌 경우, 에이전트(128)는 논리곱 절을 규칙, 필드 [i] = O[i]에 부가한다(단계 422). 필터 피연산자가 더 많은 서브필드를 갖는 경우(단계 424), 에이전트(128)는 부가의 서브필드를 처리하기 위해 단계 418로 되돌아간다. 파라미터 "i"는 필드를 나타내며, 여기서 i는 이 일례에서 필드 번호를 나타내는 정수이다.
서브필드를 처리한 후에, 에이전트(128)는 마지막 필터 피연산자 서브필드가 ">"인지를 결정하고(단계 426), 그런 경우 에이전트는 길이 제한을 필드 길이 > N-1로 변경한다(단계 428). 와일드카드 처리는 임의의 유형의 심볼을 사용할 수 있고, ">"는 이러한 하나의 일례에 불과하다. 이 일례에서, "a.>"는 a.b, a.c, a.d 등과 모든 레벨에서의 이들 서브 주제(예를 들면, a.b.x, a.c.x, a.b.x.y 등) 모두를 의미할 수 있다. 와일드카드의 다른 구현에서는 다른 심볼이 사용될 수 있다.
필요한 경우, 에이전트(128)는 변환된 규칙을 지능형 라우터 또는 네트워크 내의 다른 엔티티로 전파한다(단계 430). 따라서, 본 방법은 서브필드를 처리하여 와일드카드를 와일드카드를 포함하지 않는 규칙을 의미하는 비와일드카드 규칙으로 변환하기 위해 서브필드 전체에 걸쳐 반복한다. 와일드카드의 변환은 네트워크의 어디에서라도, 예를 들면 가입자 머신에서 또는 지능형 라우터에서 행해질 수 있다. 따라서, 변환은 한 엔티티에서 행해지고 변환된 규칙은 다른 엔티티로 전파되거나 이 변환이 동적으로 행해질 수도 있다.
표 23은 와일드카드를 처리하기 위한 이들 전형적인 라우팅 규칙의 요약을 일례와 함께 제공한다. 이들 라우팅 규칙은 예를 들면 지능형 라우터에서 생성되거나 다른 네트워크 엔티티에서 생성되어 지능형 라우터로 전파될 수 있다. 게다가, 표 23의 라우팅 규칙은 단지 설명의 목적상 제공된 것이며 와일드카드를 변환하기 위한 다른 라우팅 규칙도 가능하다.
원래의 규칙 변환된 규칙
subject = "a.b"
Figure 112009012218232-PAT00033
subject = "C.*.D"
Figure 112009012218232-PAT00034
subject = "foo.>"
Figure 112009012218232-PAT00035
subject = "*.*.b.*.c>"
Figure 112009012218232-PAT00036
본 발명에 대해 전형적인 실시예와 관련하여 기술하였지만, 당업자에게는 많은 수정예가 자명한 것이며 이 출원이 그의 개조물 또는 변형례 모두를 포함한다는 것을 잘 알 것이다. 예를 들면, 각종 유형의 게시자 머신, 사용자 또는 가입자 머신, 채널 및 이들의 구성, 콘텐츠 기반 라우팅 및 다른 기능의 하드웨어 및 소프트웨어 구현이 본 발명의 범위를 벗어나지 않고 사용될 수 있다. 본 발명은 청구항 및 그의 균등물에 의해서만 제한되어야 한다.
도 1은 네트워크 코어에서의 지능형 라우팅을 나타낸 도면.
도 2는 게시자 및 가입자용 지능형 라우터를 나타낸 네트워크도.
도 3은 지능형 라우터 및 백본 라우터에 대한 네트워크 기반구조를 나타낸 도면.
도 4는 지능형 라우터의 하드웨어 구성요소를 나타낸 도면.
도 5는 게시자 머신 및 가입자 머신을 나타낸 도면.
도 6은 지능형 라우터에 대한 채널 관리자를 나타낸 도면.
도 7은 사용자 머신과 지능형 라우터를 인터페이스하기 위한 사용자 머신 내의 소프트웨어 구성요소를 나타낸 도면.
도 8은 지능형 라우터의 소프트웨어 구성요소를 나타낸 도면.
도 9는 메시지의 패킷 구조를 나타낸 도면.
도 10은 게시자 방법을 나타낸 플로우차트.
도 11은 가입자 방법을 나타낸 플로우차트.
도 12는 채널 및 가입자 화면을 나타낸 도면.
도 13은 콘텐츠 기반 라우팅 방법을 나타낸 플로우차트.
도 14는 캐싱 방법을 나타낸 플로우차트.
도 15는 캐시 인덱스를 나타낸 도면.
도 16은 발신 메시지에 대한 에이전트 방법의 플로우차트.
도 17은 착신 메시지에 대한 에이전트 방법의 플로우차트.
도 18은 메시지의 인코딩의 일례를 나타낸 도면.
도 19는 가입을 저장하기 위한 데이터베이스 구조를 나타낸 도면.
도 20은 와일드카드 방법을 나타낸 플로우차트.

Claims (10)

  1. 네트워크에서 패킷을 처리하는 방법에 있어서,
    헤더 부분과 페이로드 부분을 갖는 패킷을 수신하는 단계;
    상기 패킷의 처리 방법을 결정하는 데 사용하기 위해 네트워크 코어에서 상기 패킷의 상기 페이로드 부분을 조사하는 단계; 및
    상기 조사에 기초하여 상기 패킷을 선택적으로 처리하는 단계
    를 포함하며,
    상기 조사 단계는, 콘텐츠 술어 정보(content predicate information)와, 대응 네트워크 목적지 또는 라우터내 처리(in-router processing)를 규율하는 대응 규칙을 서로 연관시키는 구조에서, 상기 페이로드 부분의 정보에 주제 필터 및 속성 필터를 적용하고 상기 페이로드 부분의 정보(information in the payload section)가 부울 값을 갖는 콘텐츠 술어 정보(Boolean-valued content predicate information)와 일치하는지를 판정하는 단계를 포함하는 패킷 처리 방법.
  2. 제1항에 있어서,
    상기 조사 단계를 상기 네트워크 코어 내의 라우터에서 수행하는 단계
    를 더 포함하는 패킷 처리 방법.
  3. 제2항에 있어서,
    상기 조사를 수행할 때 사용하기 위해 상기 필터를 상기 네트워크 내의 라우터로 전파하는 단계
    를 더 포함하는 패킷 처리 방법.
  4. 제1항에 있어서,
    상기 수신 단계, 상기 조사 단계, 및 상기 처리 단계를 수행하기 위해 상기 네트워크 내의 라우터를 프로그래밍하는 단계
    를 더 포함하는 패킷 처리 방법.
  5. 네트워크에서 메시지를 처리하는 방법에 있어서,
    헤더 부분과, 적어도 하나의 주제 및 적어도 하나의 속성을 갖는 페이로드 부분을 갖는 메시지를 수신하는 단계;
    상기 메시지로부터 상기 주제와 상기 속성을 검색하는 단계;
    상기 주제에 기초하여 가입(subscription)을 검색하는 단계 - 상기 가입은 부울 값을 갖는 콘텐츠 술어를 갖는 주제 필터 및 속성 필터를 가짐 -;
    상기 메시지를 라우팅하는 방법을 결정하기 위해 네트워크 코어에서 상기 속성을 상기 가입에 적용하는 단계
    를 포함하는 메시지 처리 방법.
  6. 제5항에 있어서,
    상기 속성이 상기 가입을 만족시키는 경우 상기 메시지를 라우팅하는 단계를 더 포함하는 메시지 처리 방법.
  7. 제5항에 있어서,
    상기 속성이 모든 가입을 만족시키지 않는 경우, 상기 메시지를 무시하는 단계를 더 포함하는 메시지 처리 방법.
  8. 제5항에 있어서,
    상기 메시지는 복수의 속성을 가지며,
    상기 적용 단계는,
    복수의 가입에 대응하는 복수의 필터를 검색하는 단계;
    상기 대응 가입들 중 어느 것이라도 만족되는 것이 있는지를 판정하기 위해 상기 복수의 속성 각각을 상기 필터들 각각에 적용하는 단계; 및
    상기 가입들 중 어느 것이라도 만족되는 것이 있는지 여부에 기초하여 상기 메시지를 선택적으로 라우팅하는 단계
    를 더 포함하는 메시지 처리 방법.
  9. 제5항에 있어서,
    상기 네트워크 코어 내의 라우터에서 상기 적용 단계를 수행하는 단계
    를 더 포함하는 메시지 처리 방법.
  10. 게시-가입 네트워크에서 패킷 및 가입을 처리하는 장치에 있어서,
    제1항 내지 제9항 중 어느 한 항의 방법을 실행하기 위한 하나 이상의 모듈을 포함하는 패킷 및 가입 처리 장치.
KR1020097004161A 2001-08-15 2002-07-25 게시-가입 네트워크에서의 페이로드 조사 및 가입 처리를 통한 패킷 라우팅 KR20090037962A (ko)

Applications Claiming Priority (20)

Application Number Priority Date Filing Date Title
US31207701P 2001-08-15 2001-08-15
US31207601P 2001-08-15 2001-08-15
US31207401P 2001-08-15 2001-08-15
US31207501P 2001-08-15 2001-08-15
US60/312,076 2001-08-15
US60/312,074 2001-08-15
US60/312,075 2001-08-15
US60/312,077 2001-08-15
US32952601P 2001-10-17 2001-10-17
US60/329,526 2001-10-17
US10/199,388 US7411954B2 (en) 2001-10-17 2002-07-19 Efficient implementation of wildcard matching on variable-sized fields in content-based routing
US10/199,388 2002-07-19
US10/199,369 US6910033B2 (en) 2001-08-15 2002-07-19 Method for storing Boolean functions to enable evaluation, modification, reuse, and delivery over a network
US10/199,439 US7117270B2 (en) 2001-08-15 2002-07-19 Method for sending and receiving a Boolean function over a network
US10/199,368 2002-07-19
US10/199,439 2002-07-19
US10/199,368 US7545805B2 (en) 2001-08-15 2002-07-19 Method and apparatus for content-based routing and filtering at routers using channels
US10/199,356 US20030165139A1 (en) 2001-08-15 2002-07-19 Packet routing via payload inspection
US10/199,369 2002-07-19
US10/199,356 2002-07-19

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR10-2004-7002296A Division KR20040039288A (ko) 2001-08-15 2002-07-25 게시-가입 네트워크에서의 페이로드 조사 및 가입 처리를통한 패킷 라우팅

Publications (1)

Publication Number Publication Date
KR20090037962A true KR20090037962A (ko) 2009-04-16

Family

ID=29408280

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097004161A KR20090037962A (ko) 2001-08-15 2002-07-25 게시-가입 네트워크에서의 페이로드 조사 및 가입 처리를 통한 패킷 라우팅

Country Status (7)

Country Link
EP (2) EP1419608A4 (ko)
JP (3) JP2005500741A (ko)
KR (1) KR20090037962A (ko)
CN (1) CN100438398C (ko)
AU (1) AU2002356068A1 (ko)
HK (1) HK1082858A1 (ko)
WO (1) WO2003017562A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9143527B2 (en) 2011-06-09 2015-09-22 Samsung Electronics Co., Ltd. Apparatus and method preventing overflow of pending interest table in name based network system

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0305066D0 (en) 2003-03-06 2003-04-09 Ibm System and method for publish/subscribe messaging
JP4751436B2 (ja) * 2008-10-21 2011-08-17 株式会社東芝 通信装置
US10698859B2 (en) 2009-09-18 2020-06-30 The Board Of Regents Of The University Of Texas System Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture
US9183580B2 (en) * 2010-11-04 2015-11-10 Digimarc Corporation Methods and systems for resource management on portable devices
WO2013031068A1 (ja) * 2011-09-02 2013-03-07 日本電気株式会社 イベント通知サービス方法およびシステム
WO2013031069A1 (ja) * 2011-09-02 2013-03-07 日本電気株式会社 イベント通知サービス方法およびシステム
US9311640B2 (en) 2014-02-11 2016-04-12 Digimarc Corporation Methods and arrangements for smartphone payments and transactions
US10452399B2 (en) 2015-09-19 2019-10-22 Microsoft Technology Licensing, Llc Broadcast channel architectures for block-based processors
US9397973B1 (en) * 2015-10-16 2016-07-19 Machine Zone, Inc. Systems and methods for transferring message data
CN106777276B (zh) * 2016-12-29 2020-03-10 微梦创科网络科技(中国)有限公司 用户信息的索引存储及原生信息展示的方法和装置
US10963379B2 (en) 2018-01-30 2021-03-30 Microsoft Technology Licensing, Llc Coupling wide memory interface to wide write back paths
CN110620722B (zh) * 2018-06-20 2022-09-30 北京京东尚科信息技术有限公司 一种订单处理的方法和装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5873084A (en) * 1996-01-18 1999-02-16 Sun Microsystems, Inc. Database network connectivity product
US6463446B1 (en) * 1998-02-26 2002-10-08 Sun Microsystems, Inc. Method and apparatus for transporting behavior in an event-based distributed system
US6216132B1 (en) * 1997-11-20 2001-04-10 International Business Machines Corporation Method and system for matching consumers to events
US6091724A (en) * 1997-11-20 2000-07-18 International Business Machines Corporation Routing messages within a network using the data content of the message
EP1067471A1 (en) * 1997-12-08 2001-01-10 Nippon Steel Corporation Commodity exchanging apparatus, commodity exchanging system, commodity exchanging method and storage medium
GB2345164A (en) * 1998-12-24 2000-06-28 Ibm Publish and subscribe data processing with subscriber option to request subscription propagation prior to acknowledgment
IL135156A0 (en) * 1999-03-19 2001-05-20 Ibm Message broker providing a publish/subscribe service and method of processing messages in a publish/subscribe environment
US6321267B1 (en) * 1999-11-23 2001-11-20 Escom Corporation Method and apparatus for filtering junk email

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9143527B2 (en) 2011-06-09 2015-09-22 Samsung Electronics Co., Ltd. Apparatus and method preventing overflow of pending interest table in name based network system

Also Published As

Publication number Publication date
EP2112804A3 (en) 2009-12-02
EP1419608A4 (en) 2008-05-28
CN1650566A (zh) 2005-08-03
HK1082858A1 (en) 2006-06-16
JP2005500741A (ja) 2005-01-06
JP2008211835A (ja) 2008-09-11
WO2003017562A9 (en) 2003-11-13
CN100438398C (zh) 2008-11-26
JP2008252907A (ja) 2008-10-16
AU2002356068A1 (en) 2003-03-03
EP2112804A2 (en) 2009-10-28
EP1419608A1 (en) 2004-05-19
WO2003017562A1 (en) 2003-02-27

Similar Documents

Publication Publication Date Title
US7545805B2 (en) Method and apparatus for content-based routing and filtering at routers using channels
US7627603B2 (en) Method and apparatus for implementing query-response interactions 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
US7672275B2 (en) Caching with selective multicasting in a publish-subscribe network
US7551629B2 (en) Method and apparatus for propagating content filters for a publish-subscribe network
US6910033B2 (en) Method for storing Boolean functions to enable evaluation, modification, reuse, and delivery over a network
US20030195946A1 (en) Method and apparatus for reliable publishing and subscribing in an unreliable network
US20040078450A1 (en) Packet routing via payload inspection for digital content delivery
US7653753B2 (en) Method and apparatus for content-based packet routing using compact filter storage and off-line pre-computation
JP2008211835A (ja) ペイロード検査を介したパケット・ルーティング、及びパブリッシュ/サブスクライブ型ネットワークにおけるサブスクリプション処理
US7788403B2 (en) Network publish/subscribe incorporating web services network routing architecture
US7941488B2 (en) Authorizing message publication to a group of subscribing clients via a publish/subscribe service
US8255485B2 (en) Web services-based computing resource lifecycle management
KR100985237B1 (ko) 패킷 라우팅을 위한 방법, 장치 및 시스템, 메시지 라우팅을 위한 방법 및 장치, 디지탈 컨텐트 분배를 위한 네트워크 및 방법, 및 라우팅 및 캐싱을 위한 방법, 네트워크 및 장치
US20060080120A1 (en) Publish/subscribe mechanism for web services
US20040083305A1 (en) Packet routing via payload inspection for alert services
US20020016839A1 (en) Method and system for processing raw financial data streams to produce and distribute structured and validated product offering data to subscribing clients
KR100971506B1 (ko) 발행 구독 네트워크에서 신뢰할 수 있고 효과적인 콘텐츠 기반 라우팅 및 질의와 응답을 위한 방법 및 장치
US20030165139A1 (en) Packet routing via payload inspection
US7117270B2 (en) Method for sending and receiving a Boolean function over a network
US7411954B2 (en) Efficient implementation of wildcard matching on variable-sized fields in content-based routing
KR20040039288A (ko) 게시-가입 네트워크에서의 페이로드 조사 및 가입 처리를통한 패킷 라우팅
TW571531B (en) Packet routing via payload inspection and subscription processing in a publish-subscribe network
Chand Large scale diffusion of information in Publish/Subscribe systems

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
NORF Unpaid initial registration fee