KR101761495B1 - 다수의 서버-클라이언트 세션을 감소시키기 위한 방법 및 시스템 - Google Patents

다수의 서버-클라이언트 세션을 감소시키기 위한 방법 및 시스템 Download PDF

Info

Publication number
KR101761495B1
KR101761495B1 KR1020157019847A KR20157019847A KR101761495B1 KR 101761495 B1 KR101761495 B1 KR 101761495B1 KR 1020157019847 A KR1020157019847 A KR 1020157019847A KR 20157019847 A KR20157019847 A KR 20157019847A KR 101761495 B1 KR101761495 B1 KR 101761495B1
Authority
KR
South Korea
Prior art keywords
server
request
client
intermediate node
response
Prior art date
Application number
KR1020157019847A
Other languages
English (en)
Other versions
KR20150102063A (ko
Inventor
플로리스 반 덴 아벨레
제론 호베케
지름 테클레마리암
Original Assignee
코닌클리즈케 케이피엔 엔.브이.
유니버시테이트 젠트
아이엠이씨 브이제트더블유
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 코닌클리즈케 케이피엔 엔.브이., 유니버시테이트 젠트, 아이엠이씨 브이제트더블유 filed Critical 코닌클리즈케 케이피엔 엔.브이.
Publication of KR20150102063A publication Critical patent/KR20150102063A/ko
Application granted granted Critical
Publication of KR101761495B1 publication Critical patent/KR101761495B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • H04L67/2833
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • H04L67/125Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/2819
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/564Enhancement of application control based on intercepted application data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/566Grouping or aggregating service requests, e.g. for unified processing

Abstract

서버(104)와 네트워크를 거쳐 서버(104)에 통신가능하게 연결된 복수의 클라이언트(102a, 102b, 102c) 사이에서 다수의 서버-클라이언트 세션을 감소시키기 위한 중간 노드를 위한 방법이 개시된다. 중간 노드(106)는 제1 클라이언트(102a; 102b; 102c) 및 제2 클라이언트(102a; 102b; 102c)로부터 서버(104)로 향하는 제1 요청 및 제2 요청을 인터셉트한다. 중간 노드(106)는, 제1 요청을 이용해서, 중간 노드(106)와 서버(104) 사이에서, 서버-클라이언트 세션을 확립한다. 제1 요청이 제2 요청과 부분적으로 중첩되면 그리고 제2 요청의 일부가 제1 요청과 중첩되지 않으면, 중간 노드(106)는 제2 요청의 일부를 포함하도록 중간 노드(106)와 서버(104) 사이에서 서버-클라이언트 세션을 갱신한다.

Description

다수의 서버-클라이언트 세션을 감소시키기 위한 방법 및 시스템{REDUCING A NUMBER OF SERVER-CLIENT SESSIONS}
본 발명은 일반적으로 네트워크를 거쳐 억세스가능한 제약형 장치(constrained devices)의 분야에 관한 것이다. 특히, 필수적이지는 않지만, 본 발명은 서버에 의해 지원되는 다수의 서버-클라이언트 세션을 감소시키기 위한 방법, 시스템, 중간 노드(intermediary node), 및 컴퓨터 프로그램 제품에 관한 것이다.
노드의 네트워크로서 배치된, 제약형 장치, 센서 및 액츄에이터와 같은 장치는 주변 지능형인, 스마트 환경, 및 자율적 제어와 같은 어플리케이션에서 데이터를 수집 및/또는 처리하기 위해 유용하게 된다. 예컨대, 빌딩용 공기 조화 시스템이 자율적으로 조정될 수 있도록 네트워크화된 센서(networked sensors)가 온도 및 습도를 측정하기 위해 빌딩에 배치될 수 있다. 이들 네트워크화된 노드(networked nodes)는 일반적으로 (제약형) 네트워크에서 제약형 노드(constrained nodes) 또는 제약형 장치(constrained devices)로서 언급되고, 각 제약형 노드는 일반적으로 온도 및 습도와 같은 적어도 하나의 리소스(resource)를 갖는다. 노드는, 예컨대 인터넷 등의 네트워크에서 억세스가능할 수 있고, 여기서 각 장치는 고유하게 식별가능한 노드(uniquely identifiable node)이고, 노드는 클라이언트가 연결할 수 있는 서버로서 작용한다. 노드의 이러한 시스템은 통칭하여 "사물 인터넷(Internet of Things)"으로 언급될 수 있다. 노드는 유선 네트워크 및/또는 무선 네트워크일 수 있다. 몇몇 상황에서, 이들 노드는 제약형 장치이고, 제한된 전력(limited power) 및 계산 리소스(computing resources)를 갖는다. 이들 물체(objects)를 연결하는 네트워크는 LLN(저전력 및 손실 네트워크; low power and lossy networks)으로 언급될 수 있다. 전형적으로, 각 노드는 적어도 하나의 리소스를 갖는다. 리소스는 장치의 상태 및/또는 장치 또는 장치 상에서 실행될 수 있는 행위와 관련된 정보와 관련될 수 있다. 리소스의 예는: "/temperature", "/humidity", "/room_location", "/picture", "light_control", 등을 포함한다. 클라이언트는 노드에서 리소스를 위한 노드(예컨대, 서버)를 질의(query)할 수 있다.
이들 네트워크화된 노드는 전형적으로 그들의 기능성(functionality) 및 계산적 리소스(computational resources)로 제약되고, "제약형 장치(constrained devices)"로서 언급될 수 있다. 6lowpan과 같은 기술의 출현에 따르면, 이들 노드는 예컨대 사물 인터넷 상황에서 인터넷을 거쳐 용이하게 억세스가능하게 될 수 있다. 노드(예컨대, 서버)는 전 세계의 많은 다수의 클라이언트에 의해 잠재적으로 어드레스가능하다. 클라이언트와 노드 사이의 몇몇 상호작용은 매우 단명(shortlived)된다(예컨대, 온도를 요청하는 것). 그러나, 예컨대 노드의 리소스의 상태가 더 긴 기간에 걸쳐 모니터되는(그에 의해 클라이언트와 서버 사이의 관계/세션이 유지되는) 상호작용 모델(interaction models)은 클라이언트 어플리케이션에서, 예컨대 사물 인터넷 도메인(Internet of Things domain)에서 이용하기 위해 중요한 것으로 되도록 나타났다. 노드는 많은 수의 클라이언트를 위해 많은 서버-클라이언트 (데이터) 세션(예컨대, 서버-클라이언트 관계)을 유지해야만 하기 때문에, 이러한 상호작용 모델은 이들 노드에 부담으로 된다. 이러한 문제는 이들 노드가 전력이 낮으면 특히 심각하고, 부하의 증가는 이들 장치에 대헤 더 짧은 수명을 야기시킬 수 있다.
여기서 논의된 문제들을 해결하기 위해, 다수의 서버-클라이언트 세션을 감소시키기 위한 개선된 방법 및 시스템이 개시된다. 본 발명의 상황에서, 서버-클라이언트 세션은 서버와 클라이언트(예컨대, 노드와 클라이언트) 사이에서 엔드-투-엔드 관계(end-to-end relationship)를 나타낸다. 이러한 관계에 있어서, 서버는 예컨대 클라이언트와 데이터 세션 또는 데이터 연결을 유지할 수 있고, 여기서 응답(들)(response(s)) 또는 특정 서비스가 일정 기간에 걸쳐 서버로부터 예상된다. 서버는 많은 클라이언트에 의해 억세스가능하기 때문에, 서버-클라이언트 세션의 수가 증가함에 따라, 서버 상의 부하가 또한 증가한다. 더욱이, 많은 경우에 있어서, 서버가 지원할 수 있는 동시 서버-클라이언트 세션의 수에 대한 상한(upper limit)이 있다.
일반적으로, 노드(예컨대, 서버)는, 적어도 하나의 클라이언트를 위한 서버로서 작용하는, 센서, 액츄에이터 등과 같은 장치를 포함할 수 있다. 전형적으로, 노드(예컨대, 서버)는 제약형 장치를 포함할 수 있다. 노드의 리소스는 해당 노드와 관련된 정보 및/또는 노드와 관련된 상태(state)를 갖을 수 있다. 온도 센서(temperature sensor) 및 습도 센서(humidity sensor)와 같은 여러 측정 센서를 갖춘 노드는 "/temperature" 및 "/humidity"를 포함하는 리소스를 갖는 노드로 고려될 수 있다. 배터리-전력 노드(battery-powered node)는 리소스 "/battery_level" 또는 노드의 배터리 레벨을 드러내기 위한 소정의 적절한 리소스를 갖는 노드로 고려될 수 있다. 빌딩의 특정 룸에 위치한 노드는 리소스 "/room_number" 또는 노드와 관련된 정보를 드러내는 소정의 적절한 리소스를 갖는 노드로 고려될 수 있다. 몇몇 경우에 있어서, 리소스는 노드 상에서 실행될 수 있는 행위(예컨대, 조명을 켜는 것, 또는 공기 조화기의 설정을 조정하는 것과 같은)와 관련된다. 조명(light)을 스위칭 온(switching on) 또는 오프(off)할 수 있는 노드는 리소스 "/light_control"를 갖는 노드로서 고려될 수 있다. 노드는 소정의 성능들(capabilities)로 구성될 수 있고, 이는 노드가 클라이언트 요청의 소정 형태에 응답하고 및/또는 소정 행위들을 수행하도록 할 수 있다.
특히, 다수의 서버-클라이언트 세션을 감소시키기 위한 방법 및 시스템이 중간 노드(intermediary node)에서 구현될 수 있다. 방법은 서버와 네트워크를 거쳐 서버에 통신가능하게 연결된 복수의 클라이언트 사이에서 다수의 서버-클라이언트 세션을 감소시키기 위한 중간 노드에 대해 적절하다. 서버는 서버로서 작용하는 노드를 구비하여 구성된다. 바람직하기는, 중간 노드는 네트워크에서 서버와 클라이언트 사이에 위치되고, 서버로 향하는 통신을 관찰하도록 구성된다. 중간 노드는 제1 클라이언트로부터 서버로 향하는 제1 요청을 인터셉트(intercept)하도록 구성된다. 중간 노드 없이, 제1 요청은 서버와 제1 클라이언트 사이에서 서버-클라이언트 세션을 셋업(setup)하도록 구성되고 있다. 중간 노드는 제1 요청을 인터셉트하고, 따라서 제1 요청은 서버와 중간 노드 사이에서 서버-클라이언트 세션을 확립하도록 중간 노드에 의해 이용된다. 어떤 면에서는, 중간 노드는 제1 클라이언트를 대신하여 서버-클라이언트 세션을 셋업하고 중간 노드에서 상기 서버-클라이언트 세션을 관리한다. 제2 클라이언트로부터 서버로 향하는 제2 요청이 중간 노드에 의해 인터셉트된다.
제1 요청 및 제2 요청이 결합가능하다면, 기회가 다수의 서버-클라이언트 세션을 감소시키기 위해 발생하고, 여기서 제1 요청은 제2 요청과는 다르다. 특히, 중간 노드는 제1 요청이 제2 요청과 적어도 일부 중첩되는가의 여부 및 제2 요청의 일부가 제1 요청과 중첩되지 않는가를 결정한다. 이러한 상황이 부합된다면, 제1 요청 및 제2 요청은 통합 서버-클라이언트 세션(aggregate server-client session)으로 결합가능하고, 중간 노드는 제1 요청과 중첩되지 않는 제2 요청의 일부를 포함하도록 중간 노드와 서버 사이에서 서버-클라이언트 세션을 갱신한다. 이러한 갱신(update)을 통해, (통합) 서버-클라이언트 세션은 이어 또한 하나의 서버-클라이언트 세션에서 제1 요청과 함께 제2 요청을 수용(accommodate)한다.
이러한 통합 서버-클라이언트 세션의 서버로부터 수신된 데이터는 제1 클라이언트 및 제2 클라이언트에 응답하는데 이용될 수 있다. 이러한 통합 서버-클라이언트 세션 없이, 달리 제1 요청 및 제2 요청은 양쪽이 서버(예컨대, 제약형 노드)에 의해 유지되어야만 하는 2개의 서버-클라이언트 세션을 셋업한다. 따라서, 서버와 중간 노드 사이의 통합 서버-클라이언트 세션은 서버(예컨대, 제약형 장치)가 유지되어야만 하는 서버-클라이언트 세션의 수를 감소시키고 따라서 서버에 대한 리소스를 절약한다.
기존의 관계가 이미 제2 요청을 포함한다면, 예컨대 2가지 요청이 중첩되지만 제1 요청과 중첩되지 않는 제2 요청의 부분이 없다면, 확립된 서버-클라이언트 세션은 갱신되지 않는다.
제1 요청에 대한 응답(들)과 제2 요청에 대한 응답(들)이 리던던트(redundant)인 데이터 또는 정보를 갖는다면, 중첩(overlap)이 제1 요청 및 제2 요청 사이에 존재한다. 예컨대, (각각의 서버-클라이언트 세션을 거쳐 전송된) 제1 요청에 대한 응답 및 제2 요청에 대한 응답은 동일할 수 있고, 또는 제1 요청에 대한 응답은 제2 요청에 대한 응답으로부터 도출가능(derivable)하다. 따라서, 이는 2가지 분리 서버-클라이언트 세션을 유지하고 이들 2가지 분리 요청을 위한 중첩 응답(overlapping responses)을 전송하도록 서버에 대해 리던던트이다. 중첩이 제1 요청과 제2 요청 사이에 존재한다면, 중첩 응답은 단일 결합 서버-클라이언트 세션(single combined server-client session)을 거쳐 단지 한번 전송될 수 있다. 단일 서버-클라이언트 세션이 양쪽 요청을 제공할 수 있도록 2개의 중첩 요청을 결합하는 것에 의해, 리던던시(redundancy) 및 서버가 유지되어야만 하는 서버-클라이언트 세션의 수를 감소시킨다. 제한된 리소스를 갖는 서버에 대해, 서버-클라이언트 세션의 수의 이러한 감소는 계산(computational) 및 전력(power) 리소스를 절약하는데 도움이 될 수 있다.
하나의 관점에 따르면, 중간 노드는 제1 요청 및 제2 요청에 따라 서버-클라이언트 세션을 거쳐 서버로부터 데이터를 수신한다. 중간 노드는 데이터로부터 제1 요청에 따라 제1 응답 및 선택적으로 제2 요청에 따라 제2 응답을 도출(derives)한다. 다른 관점에 따르면, 중간 노드는 제1 클라이언트로 제1 요청에 응답하여 제1 응답을 전송한다. 선택적으로, 중간 노드는 제2 클라이언트로 제2 요청에 응답하여 제2 응답을 전송한다. 유리하게, 2개의 분리 서버-클라이언트 세션이 서버와 함께 설정되지 않았음에도 불구하고, 클라이언트는 클라이언트가 전송한 각각의 요청에 따라 응답을 수신한다. 몇몇 경우에 있어서, 클라이언트는 복수의 클라이언트를 위한 서버-클라이언트 세션을 관리하는 중간 노드의 존재(presence)를 인식하지 않는다. 이와 같이, 제1 응답 및 제2 응답은 그들이 서버로부터 유래되는(originated) 것처럼 발생될 수 있다.
하나의 관점에 따르면, 중간 노드는 제1 요청에 의해 요청된 제1 정보 세트 및 제2 요청에 의해 요청된 제2 정보 세트를 결정한다. 정보 세트는 요청에 따라 서버로부터 클라이언트에 의해 예상되는 정보를 구비하여 구성된다. 서버가 여러 클라이언트에 대해 리던던트인 정보를 전송하면, 중간 노드는 유리하게 리던던시를 제거한다. 따라서, 제1 요청이 제2 요청과 적어도 일부분에서 중첩되는가의 여부를 결정하는 것은 제1 정보 세트가 제2 정보 세트와 중첩하는가의 여부 및/또는 제2 정보 세트의 적어도 일부가 제1 정보 세트의 적어도 일부로부터 도출가능한가의 여부를 결정하는 것을 갖추어 이루어질 수 있다.
하나의 관점에 따르면, 중간 노드는 제2 요청에 따라 필터링된 정보 세트(filtered information set)를 발생시키기 위해 제1 정보 세트의 적어도 일부를 필터링한다. 이어 중간 노드는 제2 요청에 응답하여 제2 클라이언트로 필터링된 정보 세트를 전송한다. 유리하게, 2가지 요청을 제공하도록 서버(예컨대, 제약형 노드)에 의한 중첩 정보(overlapping information)의 전송은 중첩 정보를 복제(duplicate)하기 위해 중간 노드(예컨대, 바람직하기는 적은 제약형 노드)를 처리하고 그를 각각의 요청에 따라 각각의 클라이언트로 분배하는 것(distributing)을 통해 회피한다.
하나의 관점에 따르면, 제1 정보 세트의 적어도 일부는 제1 포맷이고, 제2 정보 세트는 제1 포맷과 다른 제2 포맷이다. 중간 노드는 제2 포맷으로부터 제1 포맷으로 및/또는 그 반대로 정보를 전환(translate)하도록 구성될 수 있다. 따라서, 중간 노드는 제2 포맷으로 전환된 정보 세트를 발생시키기 위해 제1 정보 세트의 적어도 일부를 전환한다. 이어 중간 노드는 제2 요청에 응답하여 전환된 정보 세트를 제2 클라이언트로 전송한다. 유리하게, 2개의 요청을 제공하기 위해 서버(예컨대, 제약형 노드)에 의한 중첩 정보의 전송은 (클라이언트에 의해 요청된 정보가 정확하게 동일하지 않음에도 불구하고) 중간 노드가 적절한 포맷으로 중첩 정보를 도출하고 각각의 클라이언트로 해당 중첩 정보를 전송하도록 하나의 포맷으로부터 다른 포맷으로 하나의 정보 세트의 적어도 일부를 처리/전환하도록 구성될 때 회피된다.
하나의 관점에 따르면, 제1 요청이 제2 요청과 부분적으로 중첩하는가의 여부를 결정하는 것은 적어도 하나의 알려진 패턴에 대해 제1 요청 및 제2 요청을 비교하는 것을 갖추어 이루어지고, 각 알려진 패턴은 서버-클라이언트 세션의 형태를 나타낸다. 다른 관점에 따르면, 적어도 하나의 알려진 패턴은 여러 프로토콜(protocols)로 정의된 요청에 대해 매치되도록 채택된다. 몇몇 경우에 있어서, 여러 프로토콜로 정의된 매칭 요청을 정의하기 위한 기술-특정 패턴 매칭(technology-specific pattern matching)인, 이러한 패턴 매칭은 중간 노드가 서로 다른 요청을 결합하는가의 여부 그리고 어떻게 결합하는가를 결정하기 위해 요청의 특성을 분석할 수 있도록 한다.
하나의 측면에 따르면, 제1 요청이 제2 요청과 적어도 일부분 중첩하는가의여부를 결정하는 것은 제1 요청 및 제2 요청 양쪽이 각각 제1 조건(first condition) 및 제2 조건을 나타내는가의 여부를 결정하는 것을 갖추어 이루어진다. 일반적으로, 조건(condition)은 클라이언트가 서버로부터 예상하는(expects) 정보 세트(information set)를 정의한다. 즉, 조건은 클라이언트에 의해 요청된 정보 세트를 설명한다. 서버 상의 리소스는 제1 요청 및 제2 요청을 통해 관찰되고(observed), 제1 조건은 제2 조건과 적어도 일부분 중첩된다. 예컨대 제1 조건에 의해 정의된 제1 정보 세트가 제2 조건에 의해 정의된 제2 정보 세트와 중첩되면, 조건적 관찰 요청(conditional observe requests)에서의 중첩 조건(overlapping conditions)은 유리하게 중간 노드에 의해 검출되고 결합된다. 서버에 의해 유지된 서버-클라이언트 세션의 수(예컨대, 조건적 관찰 또는 관찰 서버-클라이언트 세션의 수)의 이러한 감소는 조건의조합을 통해 효과적으로 감소된다.
하나의 관점에 따르면, 제1 요청이 제2 요청과 적어도 부분적으로 중첩하는가의 여부를 결정하는 것은 제1 요청 및 제2 요청 양쪽이 각각, 서버 상에서 동일한 리소스가 관찰되는, 제1 빈도(first frequency) 및 제2 빈도(second frequency)를 나타내는가의 여부를 결정하는 것을 갖추어 이루어지고, 제1 빈도는 제2 빈도의 정수배(integer multiple)이다. 조건(condition)일 수 있는, 빈도(frequency)는 클라이언트가 서버로부터 예상하는 정보 세트를 정의한다(예컨대, 특정 타이밍과 관련된 단지 정보/데이터만이 클라이언트에 의해 수신된다). 유리하게, 더 높은 빈도에 따른 단일 서버-클라이언트 세션은 제1 요청 및 제2 요청 양쪽을 제공하는데 이용될 수 있고, 그에 의해 서버에 의해 유지된 서버-클라이언트 세션의 수를 감소시킨다.
하나의 관점에 따르면, 제1 요청 및 제2 요청은 제1 조건 및 제2 조건의 이하의 쌍 중 어느 하나를 갖춘 양쪽 조건적 관찰 요청이다. 상기 제1 조건(first condition)은 이들 쌍(pairs)에서 제2 조건(second condition)과 적어도 부분적으로 중첩될 수 있다:
Figure 112015070674813-pct00001
"Step=" 조건은 응답이 클라이언트에게 보내지기 전에 서버 상의 리소스에서의 최소 상태 변화(minimum state change)를 특정한다. "Value=" 조건은 서버에서의 리소스의 상태가 "Value=" 조건에서 특정된 값과 동등할 때 클라이언트에게 보내진 응답(response)을 나타낸다. "Value<>" 조건은 서버에서의 리소스의 상태가 "Value<>" 조건에서 특정된, 임계의 어느 한쪽 방향으로, 임계값(threshold value)을 지날 때 클라이언트에게 보내진 응답을 나타낸다. "Periodic" 조건은 응답이 클라이언트에게 보내진 주기적 간격(periodic interval)을 나타낸다. "AIIValues<" 조건은 서버에서의 리소스의 상태가 "AIIValues<" 조건에서 특정된 값 보다 작을 때 보내진 응답을 나타낸다. "AIIValues>" 조건은 서버에서의 리소스의 상태가 "AIIValues>" 조건에서 특정된 값 보다 더 클 때 보내진 응답을 나타낸다. 유리하게, 서로 유사하고 서로 덜 유사한 조건이 상기 열거된 쌍에 따라 결합될 수 있다. 제1 조건 및 제2 조건으로부터 결합된 조건을 갖춘 단일 서버-클라이언트 세션은 이어 양쪽 클라이언트를 제공할 수 있다.
하나의 관점에 따르면, 중간 노드는 제1 조건 및 제2 조건을 저장한다. 이어 중간 노드는 데이터가 제1 조건 및/또는 제2 조건과 부합하는가의 여부를 결정하기 위해 서버로부터 수신한 데이터를 처리한다. 데이터 또는 데이터의 타이밍이 제1 조건과 부합하면, 중간 노드는 제1 클라이언트로 제1 응답을 도출하여 전송한다. 데이터 또는 데이터의 타이밍이 제2 조건과 부합하면, 중간 노드는 제2 클라이언트로 제2 응답을 도출하여 전송한다. 유리하게, 응답은 각각의 조건에 따라 클라이언트로 분배된다. 몇몇 실시예에 있어서, 단지 상태의 변화만이 보고되면, 중간 노드는 응답이 클라이언트로 전송되어져야만 하는 상태 변화를 나타내는가의 여부를 결정하기 위해 노드로 전송된 이전의 응답(들)을 더 체크한다.
하나의 관점에 따르면, 중간 노드는 제1 요청을 종료(terminate)하기 위해 제1 클라이언트로부터 제3 요청을 수신하고, 및/또는 제1 요청이 만료(expired) 되었음을 결정한다. 클라이언트 대신 서버-클라이언트 세션을 관리하기 위한 책임에 대해, 따라서 중간 노드는 제1 요청의 일부를 제거하기 위해 중간 노드와 서버 사이에서 서버-클라이언트 세션을 갱신하고, 상기 부분은 제2 요청과 중첩되지 않는다. 이와 같이, 특정 서버-클라이언트 세션을 떠나거나 나가기 위해 클라이언트가 요청을 제출(submit)함에 따라 중간 노드는 서버-클라이언트 세션을 제거/갱신하는 것이 가능할 수 있다. 이러한 요청은 중간 노드에 의해 매력적으로 취급된다.
하나의 관점에 따르면, 서버는 제약형 장치를 구비하여 구성된다. 서버, 예컨대 제약형 장치에 의해 지원된 서버-클라이언트 세션의 수가 감소될 때, 서버의 계산 및/또는 전력 리소스는 절약된다. 개시된 실시예의 이점은, 종종 많은 수의 서버-클라이언트 세션을 지원하기 위해서는 부적절한, 제약형 장치에 대해 특히 명백하다. 더욱이, 중간 노드에 대해 서버-클라이언트 세션을 관찰하고 결합할 수 있는 기능성(functionality)을 줄이는 것(offloading)은 이러한 기능성을 구현하기 위한 서버의 부담을 경감한다.
다른 측면에 따르면, 서버는 저전력 및 손실 네트워크(low power and lossy network)를 거쳐 중간 노드에 통신가능하게 연결된다. 저전력 및 손실 네트워크를 거쳐 서버에 의해 지원된 서버-클라이언트 세션을 감소시키는 것에 의해, 제약형 환경 상의 부하가 유리하게 감소되고 수명(lifespan)이 유리하게 증가된다.
서버와 복수의 클라이언트 사이에서 네트워크의 다수의 서버-클라이언트 세션을 감소시키기 위한 중간 노드가 개시된다. 중간 노드는 적어도 수신기(receiver) 및 관계 매니저(relationship manager)를 구비하여 구성된다. 수신기는 제1 클라이언트로부터 서버로 향하는 제1 요청을, 중간 노드에서, 인터셉트(intercepting)하기 위해 구성된다. 관계 매니저는 제1 요청을 이용해서 중간 노드와 서버 사이에서 서버-클라이언트 세션을 확립(establishing)하기 위해 구성된다. 수신기는 제2 클라이언트로부터 서버로 향하는 제2 요청을, 중간 노드에서, 인터셉트하기 위해 더 구성되고, 상기 제2 요청은 제1 요청과는 다르다. 관계 매니저(만약 적용가능하다면, 중간 노드의 패턴 분석기(pattern analyzer))는 제1 요청이 제2 요청과 부분적으로 중첩되는가의 여부를 결정하기 위해 더 구성된다. 제1 요청이 제2 요청과 부분적으로 중첩되면, 그리고 제2 요청의 일부가 제1 요청과 중첩되지 않으면, 관계 매니저는 제2 요청의 일부를 포함하기 위해 중간 노드와 서버 사이에서 서버-클라이언트 세션을 갱신한다. 중간 노드는 여기에 개시된 방법 중 어느 것을 구현하도록 구성될 수 있다.
본 발명은 또한 컴퓨터-판독가능 비-일시적 저장 매체(computer-readable non-transitory storage medium) 상에서 구현된, 컴퓨터 프로그램 제품과 관련될 수 있고, 여기서 컴퓨터 프로그램 제품은, 컴퓨터를 실행시킬 때, 본 발명에 개시된 어는 방법에 따라 방법 단계를 실행하기 위해 구성된 소프트웨어 코드 부분을 구비하여 구성될 수 있다. 컴퓨터 프로그램 제품은, 중간 노드(intermediary node), 패턴 분석기(pattern analyzer), 저장기(storage), 관계 매니저(relationship manager), 전송기(transmitter), 수신기(receiver), 클라이언트(client), 서버(server), 및 게이트웨이 노드(gateway node) 등: 중 어느 것으로 적어도 부분적으로 구현될 수 있다.
본 발명은, 본 발명에 따른 실시예를 개략적으로 나타내는, 첨부된 도면을 참조하여 더 설명될 것이다. 이는 본 발명이 이들 특정 실시예로 어떠한 방식으로든 제한되는 것은 아니다. 이하, 상기한 문제점(들)을 완화하는 것을 목표로 하는 본 발명의 실시예가 더욱 상세하게 설명된다. 더욱이, 실시예 및 제한의 소정의 조합이 본 발명에 의해 계획된다.
도 1a는 서버가 복수의 서버-클라이언트 세션을 유지하는 예시적 시스템을 나타낸다.
도 1b는 본 발명의 실시예에 따른, 서버가 중간 노드를 구비하는 서버-클라이언트 세션을 유지하는 예시적 시스템을 나타낸다.
도 2는 본 발명의 하나의 실시예에 따른, 클라이언트에 의해 유지된 다수의 서버-클라이언트 세션을 감소시키기 위한 방법을 예시하는 예시적 메시징 도(messaging diagram)를 나타낸다.
도 3은 본 발명의 하나의 실시예에 따른, 서버-클라이언트 세션의 알려진 패턴에 대해 요청을 비교하기 위한 방법을 예시하는 예시적 메시징 도를 나타낸다.
도 4는 본 발명의 하나의 실시예에 따른, 2개의 다른 관찰 요청(two different observe requests)을 결합하기 위한 방법을 예시하는 예시적 메시징 도를 나타낸다.
도 5는 본 발명의 하나의 실시예에 따른, 2개의 다른 관찰 요청을 결합하기 위한 방법을 예시하는 예시적 메시징 도를 나타낸다.
도 6은 본 발명의 하나의 실시예에 따른, 2개의 다른 관찰 요청을 결합하기 위한 방법을 예시하는 예시적 메시징 도를 나타낸다.
도 7은 본 발명의 하나의 실시예에 따른, 2개의 다른 조건적 관찰 요청을 결합하기 위한 방법을 예시하는 예시적 메시징 도를 나타낸다.
도 1a는 서버가 복수의 서버-클라이언트 세션을 유지하는 예시적 시스템을 나타낸다. 예시적 시스템은 ("C"로 표시된) 3개의 클라이언트와 ("S"로 표시된) 하나의 서버를 도시한다. 화살표는 서버(예컨대, 제약형 노드)가 3개의 서버-클라이언트 세션을 유지함을 예시적으로 나타낸다. 서버(예컨대, 노드)와 클라이언트 사이의 서버-클라이언트 세션은 전형적으로 일정 기간에 걸쳐 놓이고 적어도 하나의 요청/응답(request/response)을 포함할 수 있다.
클라이언트는 서버로서 작용하는 노드에 요청을 전송하도록 구성된 (사용자) 어플리케이션을 포함할 수 있다. 각 노드는 (네트워크에서 노드의 어드레스와 같은) 노드 식별자(node identifier), 적어도 하나의 리소스, 및/또는 적어도 하나의 능력(capability)과 관련될 수 있다. 클라이언트는 노드 상의 리소스(들)와 관련되는 정보를 요청할 수 있고, 및/또는 노드의 능력(들)에 따라 행위를 수행하도록 노드를 요청할 수 있다. 노드는 하나 이상의 클라이언트를 위한 서버로서 작용하는 제약형 장치일 수 있다. 3개만이 알려짐에도 불구하고, 소정 수의 클라이언트(적어도 2개)가 계획된다.
예컨대, 클라이언트는 클라이언트와 서버 사이의 서버-클라이언트 세션에서 일정 기간에 걸쳐 서버(예컨대, 서버로서 작용하는 노드)의 리소스의 값의 변화에 관심이 있을 수 있다. 이 서버는 복수의 클라이언트를 구비하는 많은 서버-클라이언트 관계를 관리하는데 부담이 된다. 많은 수의 잠재적 클라이언트는 제한된 계산적 리소스를 갖춘 제약형 장치에 대해 바람직하지 않거나 실시하기 어려울 수 있다. 따라서, 서버가 유지되어야만 하는 서버-클라이언트 세션을 감소시키는 것이 바람직하다.
도 1b는 본 발명의 하나의 실시예에 따른, 서버가 중간 노드를 갖는 서버-클라이언트 세션을 유지하는 예시적 시스템을 나타낸다. 시스템(100)은 (3개의 클라이언트(102a, 102b, 102c)로 나타낸) 적어도 2개의 클라이언트, 중간 노드(106), 및 서버(104)를 구비하여 구성된다. 중간 노드는 여러 요청이 결합가능한가의 여부를 결정하고 서버-클라이언트 세션의 수를 감소시키도록 구성된다. 유리하게, 서버(예컨대, 제약형 장치) 상의 부하(load)를 감소시키는 것에 의해, 서버의 배터리-수명 또는 서버 및 중간 노드가 통신가능하게 연결되는 소정의 제약형 네트워크의 수명이 연장될 수 있다.
클라이언트는 유선 또는 무선 (또는 양쪽의 조합) 통신 네트워크를 거쳐 중간 노드에 통신가능하게 연결되고, 중간 노드는 유선 또는 무선 (또는 양쪽의 조합) 통신 네트워크를 거쳐 서버에 통신가능하게 연결된다. 몇몇 경우에 있어서, 서버가 연결되는 통신 네트워크는 손실이 있고 및/또는 신뢰할 수 없다. 일반적으로, 클라이언트는, 클라이언트로부터 중간 노드 및/또는 서버로 네트워크를 거쳐 통신을 전송하기 위해 CoAP(Constrained Application Protocol)와 같은 프로토콜을 이용해서, 서버-클라이언트 관계를 통해 중간 노드 및 서버를 억세스하도록 구성된다.
따라서, 중간 노드는 서버에 의해 유지된 서버-클라이언트 세션의 수를 감소시키기 위한 기능을 제공한다. 예컨대, 중간 노드는 기존의 서버-클라이언트 세션에 의해 지금까지 커버되지 않은 (예컨대, 다른 요청이지만 기존의 서버-클라이언트 세션을 개시한 이전의 요청에 중첩하는) 새로운 요청의 일부를 수용하기 위해 기존의 서버-클라이언트 세션을 갱신하는 것에 의해 적어도 2개의 클라이언트 대신 단일 서버-클라이언트 세션을 유지한다. 결과적으로, 단일 서버-클라이언트 세션은 복수의 클라이언트를 제공할 수 있다.
아마도, 이들 클라이언트는 다른 클라이언트의 존재를 인식하는 것 없이 독립적으로 동작할 수 있다. 각 클라이언트는 서버와 함께 그 자신의 서버-클라이언트 세션만을 인식할 수 있다. 시스템의 이러한 속성은, 클라이언트가 모든 클라이언트를 가로질러 모든 서버-클라이언트 세션의 개요(overview)를 갖지 않기 때문에, 서로 중첩하는 여러 클라이언트로부터의 요청을 결정하기 위해 적절하지 않게 클라이언트를 만든다. 더욱이, 만약 서버 자신이 제한된 계산적 리소스를 갖는다면, 서버는 서버-클라이언트 세션 어느 쪽을 결합하기 위해 적절한 후보가 아니다. 따라서, 서버-클라이언트 세션의 수를 감소시키기 위한 기능성은 제약형 환경의 범위 밖에서(예컨대, 손실 네트워크(lossy network)에서의 제약형 장치 상에서), 그리고 클라이언트와 서버 사이의 경로를 따라 위치된 어느 곳에서 구현될 수 있다. 예컨대, 중간 노드(106)는 노드가 연결되는 네트워크의 엣지에서(예컨대, 게이트웨이 노드에서) 구현될 수 있고, 중간 노드는 클라이언트와 서버 사이에서 통신을 인터셉트하기 위해 구성된다. 바람직하기는, 중간 노드는 비-제약형 장치(non-constrained device)이다.
중간 노드는 수신기(receiver; 108), 전송기(transmitter; 110), 패턴 분석기(pattern analyzer; 112), 관계 매니저(relationship manager; 114), 및 저장기(storage; 116)를 포함한다. 수신기는 클라이언트 및/또는 노드로부터 통신을 수신(또는 인터셉트)하기 위해 구성된다. 전송기는 클라이언트 및/또는 노드로 통신을 전송하기 위해 구성된다. 통신을 인터셉트하는 것에 의해, 중간 노드는 (패턴 분석기를 이용해서) 다양한 서버-클라이언트 세션을 관찰할 수 있고, 시스템으로부터 제거될 수 있는 소정의 리던던시(redundancy)가 있는가의 여부를 결정한다. 이러한 리던던시는 (여러 클라이언트로부터의) 2개의 다른 요청이 중첩을 갖거나 서로 중첩될 때 존재한다. 중첩이 있다면, 이어 관계 매니저는 기존의 서버-클라이언트 세션에 의해 미리 커버되지 않은 부분을 포함하기 위해 기존의 서버-클라이언트 세션을 갱신한다.
2개의 요청 사이에서 중첩의 하나의 예시적 경우가 상황 "A"로서 도식적으로 예시된다. 중첩은 제1 요청 및 (제1 요청과는 다른) 제2 요청이 각각 클라이언트로부터 ("1"로 표시된) 제1 정보 세트와 ("2"로 표시된) 클라이언트로부터 제2 정보 세트를 요청할 때 야기되고, 제1 정보 세트는 제2 정보 세트와 중첩된다. 하나의 정보 세트의 일부는 다른 정보 세트에 존재하지 않는다. 제1 요청이 서버-클라이언트 세션을 확립하는데 이용되었다면, 중간 노드와 서버 사이의 기존의 서버-클라이언트 세션은 요청을 결합하기 위해 그리고 (예컨대, 원 "2"의 흰색 부분으로 표시된 제1 정보 세트와 중첩되지 않는 제2 정보 세트의 일부에 의해 표현된) 기존의 서버-클라이언트 세션으로 제2 요청의 일부를 포함하기 위해 관계 매니저에 의해 갱신된다.
2개의 요청 사이에서 중첩의 다른 예시적 경우가 상황 "B"로서 도식적으로 예시된다. 중첩은 제1 요청 및 (제1 요청과는 다른) 제2 요청이 각각 클라이언트로부터 ("3"으로 표시된) 제2 정보 세트와 ("4"로 표시된) 클라이언트로부터 제4 정보 세트를 요청할 때 야기되고, 제3 정보 세트는 제4 정보 세트와 중첩된다. 제4 정보 세트의 일부는 제3 정보 세트에 존재하지 않는다. 제3 요청이 서버-클라이언트 세션을 확립하는데 이용되었다면, 중간 노드와 서버 사이에서 기존의 서버-클라이언트 세션은 요청을 결합하기 위해 그리고 (예컨대, 타원 "4"의 흰색 부분으로 도시된 제1 정보 세트와 중첩되지 않는 제4 정보 세트의 부분에 의해 표현된) 기존의 서버-클라이언트 세션으로 제4 요청의 일부를 포함하기 위해 관계 매니저에 의해 갱신된다. 제4 요청이 서버-클라이언트 세션을 확립하는데 이용되었다면, 기존의 서버-클라이언트 세션은 동일하게 남겨지거나 갱신되지 않지만, 관계 매니저는 제4 요청이 전송된 클라이언트가 기존의 서버-클라이언트 세션으로부터의 제4 요청에 따라 응답을 수신하는 것을 국소적으로(locally)으로 갱신한다.
하나의 정보 세트의 적어도 일부가 다른 정보 세트의 적어도 일부로부터 도출되면 중첩은 또한 존재할 수 있다. 즉, 정보 세트의 적어도 일부가 다른 정보 세트의 적어도 일부로 되도록 전송될 수 있기 때문에 중첩이 존재한다. 예컨대, 중간 노드(예컨대, 관계 매니저)는 (분리 서버-클라이언트 세션을 설정해야만 하는 것 없이) 제2 요청에 따라 각각의 클라이언트에게 제공될 수 있는 정보를 도출하기 위해 제1 요청을 위한 하나의 정보 세트의 일부를 부가적으로 처리할 수 있다.
특히, 중간 노드의 패턴 분석기는 그들이 결합을 위해 적절한가의 여부를 결정하기 위해 인터셉트된 요청을 분석하도록 구성된다. 중간 노드는 클라이언트 대신 서버-클라이언트 세션을 확립하고, 리던던시가 발견되면 기존의 서버-클라이언트 세션을 갱신한다. (단일) 서버-클라이언트 세션으로 요청을 결합한 후, 관계 매니저는 여러 클라이언트 대신 상기 서버-클라이언트 관계를 유지하고 적절한 응답이 각각의 클라이언트로 되돌려 발생되어 전송됨을 보장한다.
패턴 분석기는 인터셉트된 요청을 분석하고 서버-클라이언트 세션의 형태를 나타내는 알려진 패턴에 대해 인터셉트된 요청을 매치시키도록 구성된다. 이들 알려진 패턴은 저장기에 저장될 수 있다. 인터셉트된 요청은 기술-특정(예컨대, 이용된 통신 프로토콜 또는 포맷은 다른 것에 대한 하나의 요청과 다를 수 있다)일 수 있고, 따라서 패턴 분석기는 복수의 기술에 걸쳐 인터셉트된 요청을 분석하도록 유리하게 구성될 수 있다. 예컨대, 인터셉트된 요청은 요청에서 이용된 기술의 형태를 결정하는 기술-특정 층(technology-specific layer)에 의해 먼저 분석될 수 있다. 기수-특정 층은, 어느 기술이 이용되었는지를 결정한 후, 서버-클라이언트 세션의 어느 형태를 결정하기 위해 다른 층으로 요청 및 소정의 관련된 특성을 지나가게 하고, 요청은 예컨대 서버-클라이언트 세션의 여러 형태를 나타내는 알려진 특성에 대해 기술 특정 요청을 매치시키는 것에 의해 표현한다.
서버-클라이언트 세션의 형태를 식별하는 것에 따라, (결합가능한) 서버-클라이언트 세션의 특정 형태와 관련된 여러 요청을 결합하기 위해, 관계 매니저는 예컨대 규칙(rules) 또는 인공 지능 알고리즘(artificial intelligence algorithms)을 적용할 수 있다. 관계 매니저는 규칙 기반 로직(rule-based logic)의, 자가-학습 방법(self-learning methods), 및/또는 중첩 요청을 식별하고 그러한 중첩 요청을 결합하기 위한 프로파일 기반 규칙(profile based ruling)을 적용할 수 있다. 관계 매니저는 서버-클라이언트 세션을 확립하고 유지하며 필요할 때 그들을 갱신하도록 더 구성된다. 관계 매니저가 복수의 클라이언트를 취급할 수 있도록 하는 서버-클라이언트 관계와 관련되는 정보가 저장기에 저장될 수 있다. 예컨대, 저장기는 특정의 확립된 서버-클라이언트 세션을 갖는 클라이언트와 서버로 향하였던 요청 간의 관련을 저장할 수 있다. (클라이언트 대신) 서버-클라이언트 세션을 확립하기 위해, 관계 매니저는 서버-클라이언트 세션을 초기화하기 위해 서버로 요청을 (예컨대, 중간 노드의 전송기를 이용해서) 도출하여 전송하도록 구성된다. 관계 매니저는 서버로부터의 응답(들)을 처리하고, 클라이언트로부터 전송된 각각의 요청에 따라 클라이언트의 어느 한쪽 또는 양쪽에 대해 응답(들)을 발생시키는 것에 의해 복수의 클라이언트를 위한 서버-클라이언트 세션을 유지하도록 더 구성된다.
몇몇 경우에 있어서, 관계 매니저는 클라이언트가 서버-클라이언트 세션을 종료할 때를 검출하고, 따라서 기존의 서버-클라이언트 세션을 갱신하도록 구성된다. 예컨대, 다른 요청이 제1 요청(의 서버-클라이언트 세션)을 종료하기 위해 클라이언트로부터 수신된다. 대안적으로 또는 부가적으로, 관계 매니저는 제1 요청이 만료(expired)되었음을 결정한다. 관계 매니저는 제2 요청과 중첩되지 않는 제1 요청의 일부를 제거하기 위해 중간 노드와 서버 사이에서 서버-클라이언트 세션을 갱신하도록 구성된다.
도 2는 본 발명의 하나의 실시예에 따른, 클라이언트에 의해 유지된 다수의 서버-클라이언트 세션을 감소시키기 위한 방법을 예시하는 예시적 메시징 도를 나타낸다. 서버-클라이언트 세션은 서버(104)와 적어도 제1 클라이언트(102a) 및 제2 클라이언트(102b) 사이에서 확립될 수 있다. 중간 노드(106)는 제1 클라이언트로부터 서버로 향하는 제1 요청을 인터셉트한다(단계 201). 이 시점에서, 중간 노드는 처리를 위해 패턴 분석기로 제1 요청을 제공할 수 있다. 패턴 분석기는 서버-클라이언트 세션의 어느 형태를 결정할 수 있고 요청은 선택적으로 제1 요청이 설정을 목표로 하고 있는 서버-클라이언트 세션의 적어도 하나의 특성(예컨대, 제1 클라이언트가 서버로부터 예상하고 있는 정보 세트를 설명하는 특성)을 나타낸다. 요청이 서버-클라이언트 세션의 형태를 나타냄을 패턴 분석기가 결정하면, 패턴 분석기는 저장기에 제1 요청(또는 제1 요청의 도출(derivation))을 저장하기 위해 관계 매니저에 표시(indication)를 제공한다. 중간 노드는 서버를 위한 서버-클라이언트 세션의 개요를 유지하기 위해 이들 단계를 수행할 수 있다. 제1 요청이 서버-클라이언트 세션을 표현할 때, 중간 노드는 제1 요청을 이용해서 또는 제1 요청에 따라 중간 노드와 서버 사이에서 서버-클라이언트 세션을 확립한다(단계 202). 중간 노드는 상기 서버-클라이언트 세션이 제1 클라이언트 및 제1 요청과 관련됨을 저장기에 저장할 수 있다.
중간 노드는 제2 클라이언트로부터 서버로 향하는 제2 요청을 인터셉트한다(단계 203). 제2 요청은 제1 요청과는 다르다. 본 발명은 2개의 요청이 동일한 (예컨대, 여러 클라이언트로부터의 2개의 요청이 노드로부터 동일한 정보 또는 데이터를 요청하는) 상황을 해결하도록 의도되지는 않는다. 동일한 요청을 결합하기 위한 해결책은 간단하고 여기에 개시된 방법 및 시스템의 부분으로 되도록 의도되지는 않는다. 이 시점에서, 중간 노드는 처리를 위해 패턴 분석기에 제2 요청을 제공할 수 있다. 패턴 분석기는 서버-클라이언트 세션의 어느 형태를 결정할 수 있고, 요청은 선택적으로 제2 요청이 설정하는 것을 목표로 하는 서버-클라이언트 세션의 적어도 하나의 특성(예컨대, 제2 클라이언트가 서버로부터 예상하는 정보 세트를 설명하는 특성)을 나타낸다. 요청이 서버-클라이언트 세션의 동일한 형태를 나타냄을 패턴 분석기가 결정하면, 제1 요청 및 제2 요청은 결합가능한 것으로 고려될 수 있다. 패턴 분석기는 저장기에 제2 요청(또는 제2 요청의 도출)을 저장하도록 관계 매니저에 대해 표시를 제공한다.
관계 매니저는 제1 요청이, 예컨대 도 2와 관련되는 방법 및 시스템에 따라, 제2 요청과 부분적으로 중첩되는가의 여부를 결정한다. 제1 요청이 제2 요청과 부분적으로 중첩되면, 예컨대 제1 요청을 갖는 제1 클라이언트로부터 예상된 제1 정보 세트는 제2 클라이언트로부터 예상된 제2 정보 세트와 중첩된다. 이러한 중첩이 야기될 때, 제1 클라이언트 및 제2 클라이언트를 제공하는 것이 단일 서버-클라이언트 세션에 대해 가능하다. (확립된) 서버-클라이언트 세션에 의해 미리 제공되지 않은 제2 요청의 일부가 있다면(예컨대, 제1 요청이 제2 요청과 부분적으로 중첩되면, 그리고 제2 요청의 일부가 제1 요청과 중첩되지 않으면), 중간 노드는 제1 요청과 중첩되지 않은 제2 요청의 일부를 포함하도록 (확립된) 서버-클라이언트 세션을 갱신할 수 있다(단계 204). 따라서, 갱신된 서버-클라이언트 세션은 제1 요청 및 제2 요청에 따라 (직접적으로는 아님에도 불구하고) 제1 클라이언트 및 제2 클라이언트 양쪽을 제공한다. 결과적으로, 서버가 유지되어야만 하는 서버-클라이언트 세션의 수가 유리하게 감소(예컨대, 2개에서 1개로)된다. (확립된) 서버-클라이언트 세션에 의해 미리 제공되지 않은 제2 요청의 일부가 없다면(예컨대, 제1 요청이 제2 요청과 중첩되고, 완전하게 제2 요청을 커버하면), 중간 노드는 (확립된) 서버-클라이언트 세션을 유지할 수 있다. 관계 매니저는 제2 클라이언트를 제2 요청 및 (확립된) 서버-클라이언트 세션과 관련지우기 위해 저장기에 저장할 수 있다.
중간 노드는 제1 요청 및 제2 요청에 따라 서버-클라이언트 세션을 거쳐 서버로부터 데이터를 수신한다(단계 205). 이 단계는 서버-클라이언트 세션을 거쳐 서버로부터 응답을 수신하는 것을 갖추어 이루어질 수 있다. 따라서, 클라이언트에 대해 응답(들)을 발생시키는 것을 책임지는, 중간 노드는 제1 요청에 따라 서버-클라이언트 세션을 거쳐 수신된 데이터로부터 제1 응답을 도출하여 전송한다(단계 206 및 207). 적용가능하다면, 중간 노드는 제2 요청에 따라 서버-클라이언트 세션을 거쳐 수신된 데이터로부터 제2 응답을 도출하여 전송한다(단계 208).
중간 노드는 클라이언트가 전송하였던 각각의 요청에 따라 클라이언트가 응답을 수신함을 보장하도록 책임을 진다. 예컨대, 중간 노드(예컨대, 관계 매니저)는 데이터가 제1 요청에 따라 제1 클라이언트에 의해 예상되는 정보 세트와 매치되는가의 여부를 체크한다. 참(true)이면, 이어 중간 노드는 제1 클라이언트에 대한 제1 요청에 응답하여 제1 클라이언트로 제1 응답을 발생시켜 전송한다. 데이터가 제2 요청에 따라 제2 클라이언트에 의해 예상되는 정보 세트와 매치되면, 이어 중간 노드는 제2 클라이언트에 대한 제2 요청에 응답하여 제2 클라이언트로 응답을 발생시켜 전송한다(단계 208).
도 3은 본 발명의 하나의 실시예에 따른, 서버-클라이언트 세션의 알려진 패턴에 대해 요청을 비교하기 위한 방법을 예시하는 예시적 메시징 도를 나타낸다. 예시적인 예에 있어서, 요청을 정의하기 위해 이용된 기술(또는 프로토콜)이 다른 경우에도, 중간 노드(예컨대, 패턴 분석기)는 서버-클라이언트 세션의 알려진 패턴에 대해 요청을 매치시키도록 유리하게 구성된다. 서버-클라이언트 세션의 알려진 패턴은 각각 서버-클라이언트 세션의 형태를 나타낸다. 예컨대, 서버-클라이언트 세션의 특정 형태를 나타내는 요청은 상기 요청을 결합하기 위한 후보(candidates)로 될 수 있거나, 서버에 의해 유지된 서버-클라이언트 세션의 수를 감소시키기 위해 서로 결합가능한 것으로 고려될 수 있다. 리소스의 상태가 변하여 특정 조건과 부합하면, 예컨대, 중간 노드(106)는 노드(104)의 리소스 "/temp"에 대한 값을 수신하기 위해 제1 조건적 관찰 요청(first conditional observe request)을 인터셉트한다(단계 301). 제1 조건적 관찰 요청은 CoAP(Constrained Application Protocol)를 이용해서 정의된다. 예컨대, 제1 조건적 관찰 요청은, 조건이 "19 보다 작은 값(values less than 19)"으로 되도록 정의되는 것을 의미하는, "Obs /temp, cond: <19"를 포함하고, 리소스의 상태가 변하여 리소스 "/temp"의 상태가 19 보다 작으면, 조건적 관찰 요청은 리소스의 값을 갖춘 서버로부터 응답을 요청한다. 이러한 요청은 서버-클라이언트 세션의 특정 형태를 나타낸다. 조건적 요청은 제1 클라이언트(102a)에 의해 전송되어 노드로 향한다. 제1 클라이언트 대신, 중간 노드는 제1 조건적 관찰 요청에 따라 서버-클라이언트 세션을 확립한다(단계 302). 중간 노드는 제2 조건적 관찰 요청을 인터셉트한다(단계 303). 예컨대, 제2 조건적 관찰 요청은 "HTTP GET /temp?obs&lt=20"을 포함한다. 이 예시적 제2 조건적 관찰 요청은, 제1 조건적 관찰 요청에서 이용된 프로토콜과는 다른 프로토콜인, HTTP(HyperText Transfer Protocol)를 이용해서 정의된다.
중간 노드는 적어도 하나의 알려진 패턴에 대해 제1 조건적 관찰 요청 및 제2 조건적 관찰 요청을 비교한다(단계 304). 제1 조건적 관찰 요청 및 제2 조건적 관찰 요청이 다른 프로토콜을 이용해서 정의됨에도 불구하고, 패턴 분석기는 매칭되는 기술-특정 요청을 취급하도록 채택된다. 예컨대, 알려진 패턴은 다른 프로토콜을 이용해서 정의된 요청에 대해 매치되도록 채택될 수 있다. 따라서, 중간 노드는 다른 프로토콜로 정의된 2개의 요청이 서버-클라이언트 세션의 동일한 형태를 나타내는가의 여부를 확인할 수 있다.
패턴 분석기는 적어도 이하의 알려진 패턴을 갖춘 기술-특정 층을 포함할 수 있다:
Pattern1a: Obs. /<x>[, cond: <y>]
Pattern1b: HTTP GET /<x>?obs[&<w>=<z>]
with <y> = f(<w>, <z>)
패턴을 기초로, 제1 조건적 관찰 요청이 Pattern1a와 매치되고 제2 조건적 관찰 요청이 Pattern1b와 매치되기 때문에, Pattern1과의 매치가 발견된다(단계 305). 이어 관계 매니저는 제1 조건적 관찰 요청과 제2 조건적 관찰 요청 사이에서 중첩, 예컨대 <x>=temp and <y> = <20> = f(<w>, <z>)을 결정한다(단계 306). 적용가능하다면, 관계 매니저는 확립된 서버-클라이언트 세션을 갱신한다(단계 307). 본 예에 있어서, 제1 요청은 19 보다 작은 "/temp" 리소스의 상태에 대한 변화를 관찰하도록 요청하는 것이기 때문에, 확립된 서버-클라이언트 세션은 확립된 서버-클라이언트 세션에 의해 미리 제공되지 않은 제2 요청의 일부를 포함하도록 20 보다 작은 "/temp" 리소스의 상태에 대한 변화를 관찰하도록 갱신된다(단계 308).
예가 제1 조건적 관찰 요청 및 제2 조건적 관찰 요청을 나타냄에도 불구하고, 당업자는 (예컨대, 서버-클라이언트 세션의 다른 형태를 나타내는) 결합가능 요청의 다른 형태가 또한 본 예에 적용가능하게 되도록 계획됨을 이해한다.
여러 프로토콜이 제1 및 제2 클라이언트에 의해 이용되지만, 단지 하나의 프로토콜만이 중간 노드와 서버 사이에서 서버-클라이언트 세션에 대해 이용됨을 주지해아 한다. 유리하게, 서버(예컨대, 제약형 노드)는 단지 서버-클라이언트 세션을 위해 이용된 프로토콜을 지원하도록 요구된다. 중간 노드는 여러 클라이언트에 의해 이용된 여러 프로토콜에 따라 응답을 도출하도록 서버-클라이언트 세션을 거쳐 수신된 데이터를 처리하도록 구성된다.
본 예는 요청의 조건이 결합가능한 조건적 관찰 요청을 결합하기 위해 일반화될 수 있다(동일한 프로토콜 또는 동일하지 않은 프로토콜이 이용된다). 따라서, 중간 노드는 제1 요청 및 제2 요청이, 서버 상에서 동일한 리소스가 관찰되는, 각각 (예컨대, 19 보다 작은 그리고 20 보다 작은) 제1 조건 및 제2 조건을 나타내는가의 여부를 결정한다. 따라서, 2개의 요청이 중첩하는가의 여부를 결정하는 것은 2개의 조건이 중첩(예컨대, 적어도 부분적으로 제1 조건이 제2 조건과 중첩함)을 갖추어 이루어지는가의 여부를 결정하는 것을 갖추어 이루어진다.
도 4는 본 발명의 하나의 실시예에 따른, 2개의 다른 관찰 요청을 결합하기 위한 방법을 예시하는 예시적 메시징 도를 나타낸다. 제1 요청은 중간 노드(106)에 의해 인터셉트되고, 여기서 제1 요청은 제1 클라이언트(102a)로부터 전송되고 서버(104)로 향한다(단계 401). 제1 요청의 예는, 핀 0 내지 15(그 상태에서 정보의 16비트를 갖는 16핀)와 같은, 모든 핀(pins) 상의 신호의 값을 관찰하기 위해 관찰 요청 "Obs /pins"을 갖추어 이루어진다. 제1 클라이언트 대신, 중간 노드는 서버와 함께 제1 요청에 따라 서버-클라이언트 세션을 확립한다(단계 402). 제2 요청은 중간 노드(106)에 의해 인터셉트되고, 여기서 제2 요청이 제2 클라이언트(102b)로부터 전송되어 서버(104)로 향한다(단계 403). 제2 요청의 예는, (그 상태에서 정보의 1 비트를 갖는), 단지 핀 3 상의 신호의 값을 관찰하기 위해 관찰 요청 "Obs /pins?p=3"을 갖추어 이루어진다. 제2 요청이 확립된 서버-클라이언트 세션에 의해 미리 제공되었기 때문에, 서버-클라이언트 세션은 갱신되지 않는다.
서버 "0x0dc9"로부터 데이터를 수신함에 따라(단계 404), 적절한 응답이 제1 요청(그리고 적용가능하다면, 제2 요청)에 따라 발생된다(예컨대, 단계 405). 중간 노드는 제1 요청에 응답하여 제1 클라이언트로 데이터 "0x0dc9"(최하위비트(least significant bit) 0)를 보내는 제1 응답을 도출하여 전송한다(단계 406). 중간 노드는 오직 핀 3을 위한 값을 얻기 위해 데이터 "Ox1"를 갖춘 제2 응답을 도출하도록 데이터 "0x0dc9"를 필터링(filtering)하는 것에 의해 데이터를 처리한다(단계 405). 중간 노드는 제2 요청에 응답하여 제2 클라이언트로 제2 응답을 전송한다(단계 407). 서버 "Oxfabf"로부터 데이터를 더 수신함에 따라(단계 408), 적절한 응답이 제1 요청(그리고 적용가능하다면, 제2 요청)에 따라 발생된다. 중간 노드는 제1 요청에 응답하여 제1 클라이언트로 데이터 "Oxfabf"를 보내는 제3 응답을 도출하여 전송한다(단계 410). 중간 노드는 필터링된 데이터를 도출하도록 데이터 "0x0dc9"를 필터링하는 것에 의해 데이터를 처리한다(단계 409). 중간 노드는 저장된 노드에 대해 이전의 상태 또는 응답을 갖을 수 있고 중간 노드는 제2 노드로 전송된 이전의 응답(들)을 고려할 수 있다. 본 예에 있어서, 핀 3에 대한 상태는 변하지 않고, 따라서 데이터 "0x1"을 갖춘 응답은 전송되지 않는다.
본 예는 제2 요청에 따라 필터링된 정보 세트를 발생시키기 위해 제1 요청에 의해 요청된 제1 정보 세트의 적어도 일부분을 필터링하는 중간 노드를 예시한다. 필터링된 정보 세트는 이어 제2 요청에 응답하여 제2 클라이언트로 전송된다. 필터링은 서버에 의해 제공된 특정 응답의 데이터 내에서 수행될 수 있거나(예컨대, 단일 응답에서 데이터의 일부를 필터링해 내는 것), 필터링은 서버에 의해 제공된 복수의 응답에서 정보를 거쳐 수행될 수 있다(예컨대, 클라이언트에 대해 특정 응답을 보내지 않도록 복수의 응답을 거쳐 몇몇 응답을 필터링해 내는 것). 후자는 도 6과 관련하여 예로 예시된다.
도 5는 본 발명의 하나의 실시예에 따른, 2개의 다른 관찰 요청을 결합하기 위한 방법을 예시하는 예시적 메시징 도를 나타낸다. 제1 요청은 중간 노드(106)에 의해 인터셉트되고, 여기서 제1 요청은 제1 클라이언트(102a)로부터 전송되고, 서버(104)로 향한다(단계 501). 제1 요청은 제1 (콘텐츠) 포맷으로 제1 정보 세트를 요청한다. 제1 요청의 예는 서버의 "/temp" 리소스의 값을 관찰하기 위해 관찰 요청 "Obs /temp?u=C"을 갖추어 이루어지고, 요청은 섭씨(Celcius)(예컨대, 제1 콘텐츠 포맷)로 되돌아가는 리소스의 값(들)을 요청한다. 제1 클라이언트 대신, 중간 노드는 서버와 함께 제1 요청에 따라 서버-클라이언트 세션을 확립한다(단계 502). 제2 요청은 중간 노드(106)에 의해 인터셉트되고, 여기서 제2 요청은 제2 클라이언트(102b)로 전송되고 서버로 향한다(단계 503). 제2 요청은 제1 (콘텐츠) 포맷과는 다른 제2 (콘텐츠) 포맷으로 제2 정보 세트를 요청한다. 제2 요청의 예는 화씨(Fahrenheit)로 "/temp" 리소스의 값을 관찰하기 위해 관찰 요청 "Obs /temp?u=F"를 갖추어 이루어진다. 섭씨(Celcius)에서의 "/temp" 리소스의 값(들)은 화씨(Fahrenheit)에서의 값(들)으로 전환가능하기 때문에, 중간 노드는 제1 요청과 제2 요청 사이에 중첩이 있음을 결정한다. 따라서, 중간 노드는 2개의 요청이 결합가능함을 결정한다. 제2 요청이 확립된 서버-클라이언트 세션에 의해 미리 제공되었기 때문에, 서버-클라이언트 세션은 본 예에서는 갱신되지 않는다.
서버로부터 데이터 "20.5 C"를 수신함에 따라(단계 504), 적절한 응답이 제1 요청 및 제2 요청에 따라 발생/도출된다(단계 505). 중간 노드는 제1 요청에 응답하여 제1 클라이언트로 데이터 20.5 C"를 보내는 제1 응답을 도출하여 전송한다(단계 506). 중간 노드는, 제2 요청에 따라 "/temp" 리소스를 위한 값을 얻기 위해 데이터 "68.9 F"를 갖춘 제2 응답을 도출하도록 함수 F=g(C)를 이용해서, "20.5 C"를 전환(translating)하는 것에 의해 데이터를 처리한다(단계 507). 중간 노드는 제2 요청에 응답하여 제2 클라이언트로 제2 응답을 전송한다(단계 507).
본 예는 제2 요청에 따라 전환된 정보 세트를 발생시키도록 제1 요청에 의해 요청된 제1 정보 세트의 적어도 일부를 전환하는 중간 노드를 예시한다. 섭씨(Celcius)가 화씨(Fahrenheit)로 전환될 수 있음이 도시됨에도 불구하고, 다른 변환가능 유닛(convertible units)과 같은 다른 전환가능 포맷이 또한 계획된다. 더욱이, 제1 포맷 및 제2 포맷은 하나의 콘텐츠를 다른 것으로 변환가능한 여러 콘텐츠 포맷(예컨대, XML, 일반 텍스트(plain text) 등)과 관련될 수 있다. 이어 전환된 정보 세트는 제2 요청에 응답하여 제2 클라이언트로 전송된다. 제2 요청에 의해 요청된 제2 정보 세트의 적어도 일부가 제1 요청에 의해 요청된 제1 정보 세트의 적어도 일부로부터 도출가능하면 전환이 적용될 수 있다.
도 6은 본 발명의 하나의 실시예에 따른, 2개의 여러 관찰 요청을 결합하기 위한 방법을 예시하는 예시적 메시징 도를 나타낸다. 제1 요청은 중간 노드(106)에 의해 인터셉트되고, 여기서 제1 요청은 제1 클라이언트(102a)로부터 전송되고 서버(104)로 향한다(단계 601). 제1 요청은 제1 빈도(first frequency)에 따라 제1 정보 세트를 요청한다. 제1 요청의 예는 20초의 간격으로 서버의 "/temp" 리소스의 값을 관찰하기 위해 관찰 요청 "Obs /temp, f=20s"를 갖추어 이루어진다. 제1 클라이언트 대신, 중간 노드는 서버와 함께 제1 요청에 따라 서버-클라이언트 세션을 확립한다(단계 602). 제2 요청은 중간 노드(106)에 의해 인터셉트되고, 여기서 제2 요청은 제2 클라이언트(102b)로부터 전송되고 서버로 향한다(단계 603). 제2 요청은 제2 빈도에 따라 제2 정보 세트를 요청한다. 제2 요청의 예는 10초의 간격으로 "/temp" 리소스의 값을 관찰하기 위해 관찰 요청 "Obs /temp, f=10s"를 갖추어 이루어진다. 제1 빈도가 제2 빈도의 정수배(integer multiple)이기 때문에, 중간 노드는 제1 요청과 제2 요청 사이에 중첩이 있음을 결정한다. 따라서, 중간 노드는 제1 요청 및 제2 요청 양쪽이 각각, 서버 상에서 동일한 리소스가 관찰되고 제1 빈도가 제2 빈도의 정수배인, 제1 빈도 및 제2 빈도를 나타내는가의 여부를 결정하는 것에 의해 2개의 요청이 결합가능함을 결정한다. 확립된 서버-클라이언트 세션에 의해 제2 요청이 미리 제공되지 않기 때문에(제2 요청이 더욱 빈번하게 서버로부터 데이터를 요청하기 때문에), 서버-클라이언트 세션은 본 예에서는 갱신된다(단계 604).
10초에서 서버로부터 데이터 "20.0 C"를 수신함에 따라(단계 605), 적절한 응답이 제1 및 제2 요청의 각각의 빈도에 따라, (적용가능하다면, 제1 요청 그리고) 제2 요청에 따라 발생된다(단계 606). 제2 클라이언트가 매 10초 마다 "/temp" 리소스의 값을 갖춘 응답을 요청하기 때문에 중간 노드는 제2 요청에 응답하여 제2 클라이언트로 데이터 "20.0 C"를 보내는 응답을 도출하여 전송한다(단계 607). 중간 노드는 각각의 요청의 요청된 빈도에 따라 각각의 클라이언트에 대해 응답을 발생시켜 전송하는 것이 적절한가의 여부를 결정하는 것에 의해 서버로부터 수신된 응답을 처리한다.
20초에서 서버로부터 데이터 "21.0 C"를 수신함에 따라(단계 608), 제1 및 제2 요청의 각각의 빈도에 따라, 적절한 응답이 제1 요청 및 제2 요청에 따라 발생된다(단계 609). 제1 클라이언트가 매 20초 마다 "/temp" 리소스의 값을 갖춘 응답을 요청하기 때문에 중간 노드는 제1 요청에 응답하여 제1 클라이언트로 데이터 "20.0 C"를 보내는 응답을 도출하여 전송한다(단계 610). 제2 클라이언트가 매 10초 마다 "/temp" 리소스의 값을 갖춘 응답을 요청하기 때문에 중간 노드는 제2 요청에 응답하여 제2 클라이언트로 데이터 "20.0 C"를 보내는 응답을 도출하여 전송한다(단계 611).
30초에서 서버로부터 데이터 "20.5 C"를 수신함에 따라(단계 612), 제1 및 제2 요청의 각각의 빈도에 따라, 적절한 응답이 (적용가능하다면 제1 요청 그리고) 제2 요청에 따라 발생된다(단계 613). 제2 클라이언트가 매 10초 마다 "/temp" 리소스의 값을 갖춘 응답을 요청하기 때문에 중간 노드는 제2 요청에 응답하여 제2 클라이언트로 데이터 "20.0 C"를 보내는 응답을 도출하여 전송한다(단계 614).
40초에서, 적절한 응답이 단계 608, 609, 610, 611과 유사하게 발생되어 전송될 수 있다.
제1 요청 및 제2 요청은 중간 노드에서 실질적으로 동시에, 또는 거의 동시에 인터셉트될 수는 없다. 몇몇 실시예에 있어서, 중간 노드는 인터셉션(interception)의 빈도 및 그들의 시간이 동기화되지 않는 요청을 설명하기 위해 측정(measures)을 한다. 예컨대, 시간 3s에서, 20s의 빈도를 갖춘 제1 요청이 인터셉트된다(응답은 23s, 43s, 63s, ---로 예상된다). 중간 노드는 제1 요청에 따라 서버-클라이언트 세션을 확립한다. 시간 7에서, 중간 노드는 10s의 빈도를 갖춘 제2 요청을 인터셉트한다(응답은 17s, 27s, 37s, 47s, 57s, ---로 예상된다). 시간 13에서(7 보다 더 큰 3+N*10 과 동일한 가장 작은 값, 여기서 N = 1 , 2, 3, ---), 서버-클라이언트 세션은 2개의 요청을 동기화하기 위해 10s의 빈도로 갱신될 수 있다(이 갱신된 서버-클라이언트 세션을 거쳐 서버로부터의 응답은 13s, 23s, 33s, 43s, 53s, 63s, ---- 으로 예상된다). 이러한 갱신(update)은 제1 요청에 대한 응답에 영향을 미치지 않지만, 4초 더 일찍 보내지는 제2 요청을 위한 응답을 야기시킬 수 있다(예컨대, 17s에서 예상된 응답이 13s에서 전송된다). 대안적으로, 시간 17s, 27s 등에서, 시간 13s, 23s 등에서 수신된 응답의 캐시 버전(cached version)이 제2 클라이언트로 보내질 수 있다. 몇몇 다른 경우에 있어서, 중간 노드는 시간 13s까지 제2 요청에 대해 제1 응답을 지연시킬 수 있다. 제2 클라이언트에 대해, 이는 지연을 경험한 요청을 처리하는 것이고 세션은 단지 13s에서 확립된 것으로 보인다. 지연(delay) 때문에, 초(second)는 이 6초 간격 동안 재전송될 것임이 가능하게 될 수 있다. 몇몇 다른 경우에 있어서, 중간 노드는 요청이 6초 후에 취급될 것임을 나타내는 옵션("Patience" 같은 옵션)을 포함하는 즉시 응답(immediate response)을 보낼 수 있다. 또 다른 몇몇 예에 있어서, 중간 노드는 제1 클라이언트로 더 일찍 갱신을 보낼 수 있고, 시간 17s, 37s, 57s 등에서 응답을 정렬시킨다. 몇몇 경우에 있어서, 중간 노드는 시간 7s에서 서버-클라이언트 세션을 확립하고 시간 23s에서 통보(notification)를 스킵(skip)할 수 있고, 시간 27s에서 그를 보낸다(그렇지않으면 최종 영향이 지연뿐만 아니라 패킷 손실(packet loss)에 의해 야기된다).
도 7은 본 발명의 하나의 실시예에 따른, 2개의 다른 조건적 관찰 요청을 결합하기 위한 방법을 예시하는 예시적 메시징 도를 나타낸다. 제1 요청이 중간 노드(106)에 의해 인터셉트되고, 여기서 제1 요청이 제1 클라이언트(102a)로부터 전송되고 서버(104)로 향한다(단계 701). 제1 요청은 제1 조건적 관찰 요청의 제1 조건에 따라 제1 정보 세트를 요청한다. 제1 요청의 예는 리소스 "/temp"의 상태가 변하여 19 보다 작은 경우의 값을 갖춘 응답을 요청하기 위해 조건적 관찰 요청 "Obs /temp, cond: <19"를 갖추어 이루어진다. 제1 클라이언트 대신, 중간 노드는 서버와 함께 제1 요청에 따라 서버-클라이언트 세션을 확립한다(단계 702). 제2 요청이 중간 노드(106)에 의해 인터셉트되고, 여기서 제2 요청이 제2 클라이언트(102b)로부터 전송되고 서버로 향한다(단계 703). 제2 요청은 제2 조건적 관찰 요청의 제2 조건에 따라 제2 정보 세트를 요청한다. 제2 요청의 예는 리소스 "/temp"의 상태가 변하여 20 보다 작은 경우의 값을 갖춘 응답을 요청하기 위해 조건적 관찰 요청 "Obs /temp, cond: <20"을 갖추어 이루어진다. 제1 요청 및 제2 요청 양쪽은 각각, 동일한 리소스 "/temp"가 관찰되고 제1 조건이 제2 조건과 중첩되는, 제1 조건 및 제2 조건을 나타내기 때문에, 중간 노드는 제1 요청 및 제2 요청 사이에 중첩이 있음을 결정한다. 제2 요청이 확립된 서버-클라이언트 세션에 의해 미리 제공되지 않았기 때문에(제2 요청이 더욱 빈번하게 서버로부터 데이터를 요청하기 때문에)(이는 더 많은 리소스 상태를 요청하는 것이기 때문에), 서버-클라이언트 세션은 본 예에서는 갱신된다(단계 704).
확립된 서버-클라이언트 세션을 거쳐 상태가 "19.0 C"로 변하는 것을 나타내는 서버로부터 데이터를 수신함에 따라(단계 705), 제1 및 제2 요청의 각각의 상태에 따라, 적절한 응답이 (적용가능하다면 제1 요청 그리고) 제2 요청에 따라 발생된다(단계 706). 제2 클라이언트는 값이 변하고 20 보다 작을 때 "/temp" 리소스의 값을 갖춘 응답을 요청하기 때문에, 중간 노드는 제2 요청에 응답하여 제2 클라이언트로 데이터 "19.0 C"를 보내는 응답을 도출하여 전송한다(단계 707). 중간 노드는 각각의 요청의 요청된 조건에 따라 각각의 클라이언트에 대해 응답을 발생시켜 전송하기 위해 적절한가의 여부를 결정하는 것에 의해 서버로부터 수신된 응답을 처리한다.
확립된 서버-클라이언트 세션을 거쳐 "19.5 C"의 상태 변화를 나타내는 서버로부터 데이터를 수신함에 따라(단계 708), 제1 및 제2 요청의 각각의조건에 따라, 적절한 응답이 (적용가능하다면 제1 요청 그리고) 제2 요청에 따라 발생된다(단계 709). 값이 변하고 20 보다 작을 때 "/temp" 리소스의 값을 갖춘 응답을 제2 클라이언트가 요청하기 때문에, 중간 노드는 제2 요청에 응답하여 제2 클라이언트로 데이터 "19.5 C"를 보내는 응답을 도출하여 전송한다(단계 710).
확립된 서버-클라이언트 세션을 거쳐 "18.5 C"의 상태 변화를 나타내는 서버로부터 데이터를 수신함에 따라(단계 711), 제1 및 제2 요청의 각각의 조건에 따라, 적절한 응답이 제1 요청 및 제2 요청에 따라 발생된다(단계 712). 값이 변하고 19 보다 더 작을 때 "/temp" 리소스의 값을 포함하는 응답을 제1 클라이언트가 요청하기 때문에, 중간 노드는 제1 요청에 응답하여 제1 클라이언트로 데이터 "18.5 C"를 보내는 응답을 도출하여 전송한다(단계 713). 값이 변하고 20 보다 작을 때 "/temp" 리소스의 값을 갖춘 응답을 제2 클라이언트가 요청하기 때문에, 중간 노드는 제2 요청에 응답하여 제2 클라이언트로 데이터 "18.5 C"를 보내는 응답을 도출하여 전송한다(단계 714).
예컨대 IETF CoAP 프로토콜에 의해 정의된 바와 같은, 조건적 관찰 요청과 관련되는 다양한 예가 개시된다. Li 등에 의해 초안된 "CoAP에서의 조건적 관찰(conditional observe in CoAP)" IETF는 리소스를 관찰하는 상황에서 9가지 다른 조건 형태를 식별한다. 리소스의 상태가 매번 변함이 통보될 때 클라이언트는 리소스를 관찰하도록 언급된다. 조건적 관찰 초안(conditional observe draft)은 클라이언트로 하여금 새로운 리소스 상태가 보내지는 통보를 위해 적용되어야만 하는 조건을 특정할 수 있도록 한다. 9개의 정의된 조건 형태 중, 결합을 위해 적격이거나 결합가능하게 고려되도록 이용될 수 있는 6개가 있다. 이들 결합가능 조건은 단지 예시적인 예이고, 다른 조건이 또한 결합가능하게 될 수 있음이 계획된다. 제1 요청 및 제2 요청이 조건적 관찰 요청임을 결정함에 따라, 규칙(rules)이 각각의 제1 및 제2 요청의 제1 조건 및 제2 조건 사이에 중첩이 존재하는가의 여부를 결정하는데 이용될 수 있다. 제1 조건 및 제2 조건의 예시적 결합가능 쌍은 제1 조건 및 제2 조건의 이하의 쌍 중 어느 하나를 갖을 수 있고, 상기 제1 조건은 제2 조건과 적어도 부분적으로 중첩된다:.
Figure 112015070674813-pct00002
"Step=" 조건은 응답이 서버로 보내지기 전에 서버 상의 리소스에서의 최소 상태 변화(minimum state change)를 특정한다. "Value=" 조건은 서버에서의 리소스의 상태가 "Value=" 조건에서 특정된 값과 동등할 때 응답이 클라이언트에게 보내지는 것을 나타낸다. "Value<>" 조건은 서버에서의 리소스의 상태가 "Value<>" 조건에서 특정된, 임계의 어느 한쪽 방향으로, 임계 값을 지날 때 응답이 클라이언트에게 보내지는 것을 나타낸다. "Periodic" 조건은 응답이 클라이언트로 보내진 주기적 간격(periodic interval)을 나타낸다. "AIIValues<" 조건은 서버에서의 리소스의 상태가 "AIIValues<" 조건에서 특정된 값 보다 작을 때 응답이 보내지는 것을 나타낸다. "Allvalues>" 조건은 서버에서의 리소스의 상태가 "Allvalues>" 조건에서 특정된 값 보다 더 클 때 응답이 보내지는 것을 나타낸다.
중간 노드는 제1 조건 및 제2 조건의 상기 페이링(pairings)을 갖춘 요청을 인터셉트하고, 저장기에 제1 조건 및 제2 조건을 저장할 수 있다. 제1 조건과 제2 조건 사이에 중첩이 있고 서버-클라이언트 세션이 제1 조건을 이용해서 확립되었을 때, 그리고 제1 조건과 중첩되지 않는 제2 조건의 쌍이 있다면, 따라서 서버-클라이언트 세션은 제2 조건의 해당 부분을 포함하도록 갱신된다. 관계 매니저는 데이터가 제1 조건 및/또는 제2 조건과 부합하는가의 여부를 결정하기 위해 (결합된) 서버-클라이언트 세션을 거쳐 서버로부터 중간 노드에 의해 수신된 데이터를 처리한다. 데이터가 제1 조건과 부합한다면, 관계 매니저는 제1 클라이언트로 제1 응답을 도출하여 전송한다. 데이터가 제2 조건과 부합한다면, 관계 매니저는 제2 클라이언트로 제2 응답을 도출하여 전송한다.
2개의 유사한 조건이 결합하는 것이 이하 예시된다.
Step(스텝) 조건: 스텝 파라미터(S2) 중 하나가 다른 스텝 파라미터(S1)의 배수(multiple)일 때 2개의 스텝 조건(step conditions)이 결합될 수 있다. 만약 그렇다면, 이어 조합이 S1과 동등한 스텝을 갖는 스텝 조건이다. 자연수(natural number) n을 갖으면서 S2 = n*S1일 때, 이때: Step(S1) + Step(S2) = Step(S)이고, 여기서 S=S1이다.
AIIValues> 조건: 2개의 allvalues> 조건은 2개의 입력 파라미터의 최소와 동등한 파라미터를 갖는 allvalues> 조건으로 결합될 수 있다. AIIValues>(V1) + AIIValues>(V2) = AIIValues>(V)이고, 여기서 V=min(V1 ,V2)이다.
AIIValues< 조건:
마찬가지로, 2개의 allvalues< 조건은 2개의 입력 파라미터의 최대와 동등한 파라미터를 갖는 allvalues< 조건으로 결합될 수 있다.
AIIValues<(V1) + AIIValues<(V2) = AIIValues<(V)이고, 여기서 V=max(V1,V2)이다.
Value= 조건: 2개의 value= 조건을 결합하는 것은 양쪽 값이 동등할 때의 사소한 경우에 가능하다.
Value<> 조건: 2개의 value<> 조건을 결합하는 것은 단지 양쪽 값이 동등할 때의 사소한 경우에만 가능하다.
Periodic 조건: 2개의 periodic 조건을 결합하는 것은 2개의 클라이언트 중 하나가 캐시된 리소스 값(cached resource value)을 수신할 수 있음에도 불구하고 가능하다. 중간 노드는 클라이언트로 리소스의 가장 최근 상태를 보낼 수 있다. 이는 단지 기간(periods) 중 하나가 양쪽 클라이언트가 '프레쉬(fresh)' 상태를 수신할 수 있는 다른 것의 배수일 때만이다. 모든 다른 경우에 있어서, 가장 낮은 기간(lowest period)(이를 P1으로 함)을 갖는 클라이언트는 '프레쉬' 상태를 수신할 수 있고, 가장 높은 기간(highest period)(이를 P2로 함)을 갖는 클라이언트는 n*P2 % P1과 동등한 최대 수명(maximum age)을 갖는 상태를 수신할 수 있으며, 여기서 n은 이러한 식(expression)이 그 절대 최대(absolute maximum)에 도달하는 자연수이고, %는 계수 작업(modulus operation)이다. 최대 수명이 너무 커지면, 중간 노드는 2개의 periodic 조건을 결합하는 것을 회피할 수 있다. Periodic(PI)+Periodic(P2)=Periodic(P)이고, 여기서 P=min(P1,P2)이다.
덜 유사한 조건을 결합하는 것이 이하 설명된다.
AIIValues> 및 AIIValues< 조건: 정확한 경계(bounds)에 따라, 이들 2개의 조건은 통상적인 관찰(normal observation)에 대해 단순화하고(예컨대, 모든 리소스 상태 변화를 통보함) 또는 단순화하지 않는다. V1 <= V2일 때, AIIValues>(V1) + AIIValues<(V2) = Observe이다.
Step 및 Value= 조건: value= 파라미터가 (미리 수신된) 스텝 파라미터의 배수를 더하거나 빼는 리소스 상태와 동등할 때, 동일한 파라미터를 갖는 하나의 스텝 조건으로 2개의 조건을 결합하는 것이 가능하다. 스텝 크기가 초과할 때 마다, 중간 노드가 통보되고 특정된 값에 도달하였는지 아닌지의 여부를 체크해야만 한다. 그렇다면, 이는 클라이언트에게 통보해야만 한다. V=r + n*S 또는 V=r-n*S이면서 n이 자연수이고 r이 (이전에 수신된) 리소스 상태일 때, 이때: Step(S) + Value=(V) = Step(S)이다.
AIIValues< 및 Value= 조건: value= 파라미터가 allvalues< 파라미터 보다 작을 때, 제1 조건으로 제2 조건을 흡수하는 것이 가능하다. 중간 노드가 수신하는 모든 통보에 대해 다른 클라이언트에게 통보를 해야만 하는지 아닌지의 여부를 체크해야만 한다. V2 < V1일 때, AIIValues<(V1) + Value=(V2) = AIIValues<(V1)이다.
AIIValues> 및 Value= 조건: 이는 이전의 조합의 보완적 경우(complementary case)이다.
AIIValues< 및 Value<> 조건: value<> 파라미터가 allvalues< 파라미터 보다 작을 때, 제1 조건으로 제2 조건을 흡수하는 것이 가능하다. 중간 노드가 통보를 수신할 때 마다, 제2 클라이언트가 통보되어야 하는지 아닌지의 여부(예컨대, 임계를 지나갔는가?)를 체크한다. V2 < V1일 때, AIIValues<(V1) + Value<>(V2) = AIIValues<(V1)이다.
AIIValues> 및 Value<> 조건: 이는 이전의 조합의 보완적 경우이다. V2 > V1일 때 AIIValues>(V1) + Value<>(V2) = AIIValues>(V1)이다.
AIIValues< 및 Step= 조건: allvalues<, step= 파라미터와 리소스 상태 사이의 관계에 따라, 이들 2개의 조건을 결합하는 것이 가능하다. (r은 리소스 상태, V는 allvalues< 파라미터, S는 step 파라미터로서) r < V-S일 때, step 조건은 allvalues< 조건으로 흡수될 수 있다. r이 V-S 보다 더 크거나 동등함을 검출할 때, 조합은 더 이상 가능하지 않고 센서와 함께 step= 조건을 등록해야만 한다. r이 다시 V-S 이하로 떨어질 때, 중간 노드는 제2 조건을 등록시키지 않을 수 있다. r < V-S일 때, AIIValues<(V) + Step=(S) = AIIValues<(V)이면서 r은 리소스 상태이다.
AIIValues> 및 Step= 조건: 이는 이전의 조합의 보완적 경우이다. r > V+S일 때, AIIValues>(V) + Step=(S) = AIIValues>(V)이면서 r은 리소스 상태이다.
도 2 내지 도 7은 수행되는 단계의 관점에서 설명되었지만, 설명된 단계들이 설명된 정확한 순서 및/또는 잇따라서 수행되어야만 하는 것으로 해석할 필요는 없다. 당업자는 단계들의 순서를 변경하기 위해 및/또는 균동한 기술적 결과를 달성하도록 병렬로 단계를 수행하기 위해 계획할 수 있다.
몇몇 변경에 따라, 당업자는 다른 구조, 네트워크, 또는 기술로 여기서 설명된 실시예를 확장할 수 있다.
본 발명의 다양한 실시예는 컴퓨터 시스템 또는 프로세서와 함께 이용하기 위한 프로그램 제품으로서 구현될 수 있고, 여기서 프로그램 제품의 프로그램(들)은 (여기서 설명된 방법을 포함하는) 실시예의 기능을 정의한다. 하나의 실시예에 있어서, 프로그램(들)은 다양한 비-일시적 컴퓨터-판독가능 저장 매체(일반적으로 "저장기"로 칭함) 상에 포함될 수 있고, 여기서 이용되는 바와 같이, 표현 "비-일시적 컴퓨터-판독가능 저장 매체(non-transitory computer readable storage media)"는 모든 컴퓨터-판독가능 매체를 갖추어 이루어진다. 다른 실시예에 있어서, 프로그램(들)은 다양한 일시적 컴퓨터-판독가능 저장 매체 상에 포함될 수 있다. 예시적인 컴퓨터-판독가능 저장 매체는, 이에 제한되는 것은 아니지만, (i) 정보가 영구적으로 저장되는 비-기록가능 저장 매체(예컨대, CD-ROM 드라이브에 의해 판독가능한 CD-ROM 다스크와 같은 컴퓨터 내의 리드-온리 메모리 장치(read-only memory devices), ROM 칩 또는 소정 형태의 고체-상태 비휘발성 반도체 메모리); 및 (ii) 변경가능 정보가 저장되는 기록가능 저장 매체(예컨대, 플래시 메모리, 디스크 드라이브 내의 플로피 디스크 또는 하드-디스크 드라이브 또는 소정 형태의 고체-상태 랜덤-엑세스 반도체 메모리(random-access semiconductor memory));를 포함한다.
소정의 하나의 실시예와 관련하여 설명된 소정의 특징은 단독으로, 또는 설명된 다른 특징과 결합하여 이용될 수 있고, 또한 실시예의 소정의 다른 하나 이상의 특징과 결합하여, 또는 실시예의 소정의 다른 것의 소정의 조합으로 이용될 수 있다. 더욱이, 본 발명은 상기 설명된 실시예로 한정되는 것은 아니고, 청구항의 범위 내에서 변경될 수 있다.

Claims (17)

  1. 서버와 네트워크를 거쳐 서버에 통신가능하게 연결된 복수의 클라이언트 사이에서 다수의 서버-클라이언트 세션을 감소시키기 위한 중간 노드를 위한 방법으로, 방법이:
    중간 노드에서, 제1 클라이언트로부터 서버로 향하는 제1 요청을 인터셉트하는 단계와;
    제1 요청을 이용해서 중간 노드와 서버 사이에서 서버-클라이언트 세션을 확립하는 단계;
    중간 노드에서, 제2 클라이언트로부터 서버로 향하는 제2 요청을 인터셉트하는 단계로서, 상기 제2 요청이 제1 요청과는 다른, 단계;
    제1 요청이 제2 요청과 부분적으로 중첩되는가의 여부를 결정하는 단계; 및
    제1 요청이 제2 요청과 부분적으로 중첩되면 그리고 제2 요청의 일부가 제1 요청과 중첩되지 않으면, 제1 요청과 중첩되지 않는 제2 요청의 일부를 포함하도록 중간 노드와 서버 사이에서 서버-클라이언트 세션을 갱신하는 단계;를 갖추어 이루어지는 것을 특징으로 하는 서버와 네트워크를 거쳐 서버에 통신가능하게 연결된 복수의 클라이언트 사이에서 다수의 서버-클라이언트 세션을 감소시키기 위한 중간 노드를 위한 방법.
  2. 제1항에 있어서,
    제1 요청 및 제2 요청에 따라 서버-클라이언트 세션을 거쳐 서버로부터 중간 노드에서 데이터를 수신하는 단계와;
    데이터로부터 제1 요청에 따라 제1 응답 및 선택적으로 제2 요청에 따라 제2 응답을 도출하는 단계;를 더 갖추어 이루어지는 것을 특징으로 하는 서버와 네트워크를 거쳐 서버에 통신가능하게 연결된 복수의 클라이언트 사이에서 다수의 서버-클라이언트 세션을 감소시키기 위한 중간 노드를 위한 방법.
  3. 제2항에 있어서,
    중간 노드로부터, 제1 클라이언트로 제1 요청에 응답하여 제1 응답을 전송하는 단계와;
    선택적으로, 중간 노드로부터, 제2 클라이언트로 제2 요청에 응답하여 제2 응답을 전송하는 단계;를 더 갖추어 이루어지는 것을 특징으로 하는 서버와 네트워크를 거쳐 서버에 통신가능하게 연결된 복수의 클라이언트 사이에서 다수의 서버-클라이언트 세션을 감소시키기 위한 중간 노드를 위한 방법.
  4. 제1항에 있어서,
    제1 요청에 의해 요청된 제1 정보 세트를 결정하고;
    제2 요청에 의해 요청된 제2 정보 세트를 결정하며;
    제1 요청이 제2 요청과 적어도 부분적으로 중첩하는가의 여부를 결정하는 단계가:
    제1 정보 세트가 제2 정보 세트와 중첩하는가의 여부 및/또는 제2 정보 세트의 적어도 일부가 제1 정보 세트의 적어도 일부로부터 도출가능한가의 여부를 결정하는 단계를 갖추어 이루어지는 것을 특징으로 하는 서버와 네트워크를 거쳐 서버에 통신가능하게 연결된 복수의 클라이언트 사이에서 다수의 서버-클라이언트 세션을 감소시키기 위한 중간 노드를 위한 방법.
  5. 제4항에 있어서,
    제2 요청에 따라 필터링된 정보 세트를 발생시키기 위해 제1 정보 세트의 적어도 일부를 필터링하는 단계와;
    제2 요청에 응답하여 제2 클라이언트로 필터링된 정보 세트를 전송하는 단계;를 더 갖추어 이루어지는 것을 특징으로 하는 서버와 네트워크를 거쳐 서버에 통신가능하게 연결된 복수의 클라이언트 사이에서 다수의 서버-클라이언트 세션을 감소시키기 위한 중간 노드를 위한 방법.
  6. 제4항에 있어서,
    제1 정보 세트의 적어도 일부가 제1 포맷이고 제2 정보 세트가 제1 포맷과는 다른 제2 포맷이며, 방법이:
    제2 포맷으로 전환된 정보 세트를 발생시키기 위해 제1 정보 세트의 적어도 일부를 전환하는 단계와;
    제2 요청에 응답하여 전환된 정보 세트를 제2 클라이언트로 전송하는 단계;를 더 갖추어 이루어지는 것을 특징으로 하는 서버와 네트워크를 거쳐 서버에 통신가능하게 연결된 복수의 클라이언트 사이에서 다수의 서버-클라이언트 세션을 감소시키기 위한 중간 노드를 위한 방법.
  7. 제1항에 있어서,
    제1 요청이 제2 요청과 부분적으로 중첩하는가의 여부를 결정하는 단계가 적어도 하나의 알려진 패턴에 대해 제1 요청 및 제2 요청을 비교하는 단계를 갖추어 이루어지되, 각 알려진 패턴은 서버-클라이언트 세션의 형태를 나타내는 것을 특징으로 하는 서버와 네트워크를 거쳐 서버에 통신가능하게 연결된 복수의 클라이언트 사이에서 다수의 서버-클라이언트 세션을 감소시키기 위한 중간 노드를 위한 방법.
  8. 제7항에 있어서,
    적어도 하나의 알려진 패턴의 각각이 다른 프로토콜에서 정의된 결과에 대해 매치되도록 채택되는 것을 특징으로 하는 서버와 네트워크를 거쳐 서버에 통신가능하게 연결된 복수의 클라이언트 사이에서 다수의 서버-클라이언트 세션을 감소시키기 위한 중간 노드를 위한 방법.
  9. 제1항에 있어서,
    제1 요청이 제2 요청과 적어도 부분적으로 중첩하는가의 여부를 결정하는 단계가:
    제1 요청 및 제2 요청 양쪽이, 서버 상에서 동일한 리소스가 관찰되는, 제1 조건 및 제2 조건을 각각 나타내는가의 여부를 결정하는 단계를 갖추어 이루어지고, 제1 조건이 제2 조건과 적어도 부분적으로 중첩하는 것을 특징으로 하는 서버와 네트워크를 거쳐 서버에 통신가능하게 연결된 복수의 클라이언트 사이에서 다수의 서버-클라이언트 세션을 감소시키기 위한 중간 노드를 위한 방법.
  10. 제1항에 있어서,
    제1 요청이 제2 요청과 적어도 부분적으로 중첩하는가의 여부를 결정하는 단계가:
    제1 요청 및 제2 요청 양쪽이, 서버 상에서 동일한 리소스가 관찰되는, 제1 빈도 및 제2 빈도를 각각 나타내는가의 여부를 결정하는 단계를 갖추어 이루어지고, 제1 빈도가 제2 빈도의 정수배인 것을 특징으로 하는 서버와 네트워크를 거쳐 서버에 통신가능하게 연결된 복수의 클라이언트 사이에서 다수의 서버-클라이언트 세션을 감소시키기 위한 중간 노드를 위한 방법.
  11. 제1항에 있어서,
    제1 요청 및 제2 요청은 제1 조건 및 제2 조건의 이하의 쌍을 중 어느 하나를 갖춘 양쪽 조건적 관찰 요청이고, 상기 제1 조건은 제2 조건과 적어도 부분적으로 중첩하고:
    Figure 112017006527967-pct00003

    여기서:
    "Step=" 조건은 응답이 서버로 보내지기 전에 서버 상의 리소스에서의 최소 상태 변화를 특정하고;
    "Value=" 조건은 서버에서의 리소스의 상태가 "Value=" 조건에서 특정된 값과 동등할 때 응답이 클라이언트에게 보내지는 것을 나타내고;
    "Value<>" 조건은 서버에서의 리소스의 상태가 "Value<>" 조건에서 특정된, 임계의 어느 한쪽 방향으로, 임계 값을 지날 때 응답이 클라이언트에게 보내지는 것을 나타내고;
    "Periodic" 조건은 응답이 클라이언트로 보내지는 주기적 간격을 나타내고;
    "AIIValues<" 조건은 서버에서의 리소스의 상태가 "AIIValues<" 조건에서 특정된 값 보다 작을 때 응답이 보내지는 것을 나타내고;
    "Allvalues>" 조건은 서버에서의 리소스의 상태가 "Allvalues>" 조건에서 특정된 값 보다 더 클 때 응답이 보내지는 것을 나타내는; 것을 특징으로 하는 서버와 네트워크를 거쳐 서버에 통신가능하게 연결된 복수의 클라이언트 사이에서 다수의 서버-클라이언트 세션을 감소시키기 위한 중간 노드를 위한 방법.
  12. 제9항에 있어서,
    제1 조건 및 제2 조건을 저장하는 단계와;
    데이터가 제1 조건 및/또는 제2 조건과 부합하는가의 여부를 결정하기 위해 서버로부터 중간 노드에 의해 수신된 데이터를 처리하는 단계;
    데이터 또는 데이터의 타이밍이 제1 조건과 부합하면, 제1 클라이언트로 제1 응답을 도출하여 전송하는 단계; 및
    데이터 또는 데이터의 타이밍이 제2 조건과 부합하면, 제2 클라이언트로 제2 응답을 도출하여 전송하는 단계;를 더 갖추어 이루어지는 것을 특징으로 하는 서버와 네트워크를 거쳐 서버에 통신가능하게 연결된 복수의 클라이언트 사이에서 다수의 서버-클라이언트 세션을 감소시키기 위한 중간 노드를 위한 방법.
  13. 제1항에 있어서,
    제1 요청을 종료하기 위해 제1 클라이언트로부터 제3 요청을 수신하는 단계, 및/또는 제1 요청이 만료되었음을 결정하는 단계와;
    제1 요청의 일부를 제거하기 위해 중간 노드와 서버 사이에서 서버-클라이언트 세션을 갱신하는 단계로서, 상기 부분이 제2 요청과 중첩되지 않는, 단계;를 더 갖추어 이루어지는 것을 특징으로 하는 서버와 네트워크를 거쳐 서버에 통신가능하게 연결된 복수의 클라이언트 사이에서 다수의 서버-클라이언트 세션을 감소시키기 위한 중간 노드를 위한 방법.
  14. 제1항에 있어서,
    서버가 제약형 장치를 갖추어 이루어지고, 선택적으로, 서버가 저전력 및 손실 네트워크를 거쳐 중간 노드에 통신가능하게 연결되는 것을 특징으로 하는 서버와 네트워크를 거쳐 서버에 통신가능하게 연결된 복수의 클라이언트 사이에서 다수의 서버-클라이언트 세션을 감소시키기 위한 중간 노드를 위한 방법.
  15. 서버와 복수의 클라이언트 사이의 네트워크에서 다수의 서버-클라이언트 세션을 감소시키기 위한 중간 노드로서, 중간 노드가:
    중간 노드에서, 제1 클라이언트로부터 서버로 향하는 제1 요청을 인터셉트하기 위한 수신기와;
    제1 요청을 이용해서 중간 노드와 서버 사이에서 서버-클라이언트 세션을 확립하기 위한 관계 매니저;를 구비하여 구성되고,
    수신기는 더욱, 중간 노드에서, 제2 클라이언트로부터 서버로 향하는, 제1 요청과는 다른, 제2 요청을 더 인터셉트하기 위한 것이고,
    관계 매니저는 더욱:
    제1 요청이 제2 요청과 부분적으로 중첩하는가의 여부를 결정하고;
    제1 요청이 제2 요청과 부분적으로 중첩되면 그리고 제2 요청의 일부가 제1 요청과 중첩되지 않으면, 제2 요청의 일부를 포함하도록 중간 노드와 서버 사이에서 서버-클라이언트 세션을 갱신하기 위한 것이며,
    선택적으로, 중간 노드가 방법 청구항 제2항 내지 제14항 중 어느 한 항을 구현하도록 구성되는 것을 특징으로 하는 서버와 복수의 클라이언트 사이의 네트워크에서 다수의 서버-클라이언트 세션을 감소시키기 위한 중간 노드.
  16. 적어도 하나의 서버와, 청구항 제15항의 중간 노드를 구비하여 구성되는 시스템으로, 상기 중간 노드가 적어도 하나의 서버와 적어도 하나의 클라이언트에 통신가능하게 연결되는 것을 특징으로 하는 시스템.
  17. 컴퓨터 상에서 실행될 때, 청구항 제1항 내지 제14항 중 어느 한 항에 따른 방법 단계를 실행하기 위한 프로그램이 기록된 컴퓨터-판독가능한 비-일시적 저장 매체.
KR1020157019847A 2012-12-28 2013-12-27 다수의 서버-클라이언트 세션을 감소시키기 위한 방법 및 시스템 KR101761495B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP12199567.4A EP2750355A1 (en) 2012-12-28 2012-12-28 Reducing a number of server-client sessions
EP12199567.4 2012-12-28
PCT/EP2013/078047 WO2014102320A1 (en) 2012-12-28 2013-12-27 Reducing a number of server-client sessions

Publications (2)

Publication Number Publication Date
KR20150102063A KR20150102063A (ko) 2015-09-04
KR101761495B1 true KR101761495B1 (ko) 2017-08-04

Family

ID=47552834

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157019847A KR101761495B1 (ko) 2012-12-28 2013-12-27 다수의 서버-클라이언트 세션을 감소시키기 위한 방법 및 시스템

Country Status (5)

Country Link
US (1) US10666737B2 (ko)
EP (2) EP2750355A1 (ko)
KR (1) KR101761495B1 (ko)
CN (1) CN105164989B (ko)
WO (1) WO2014102320A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016077716A1 (en) * 2014-11-13 2016-05-19 Convida Wireless, Llc Communication sessions at a coap protocol layer
CN106993016B (zh) * 2016-07-20 2019-04-02 平安科技(深圳)有限公司 网络请求及响应的处理方法和装置
KR102113814B1 (ko) * 2017-01-06 2020-06-02 한국전자통신연구원 CoAP 압축 통신 방법
US20180253493A1 (en) * 2017-03-03 2018-09-06 Home Box Office, Inc. Creating a graph from isolated and heterogeneous data sources
WO2021126024A1 (en) * 2019-12-17 2021-06-24 Telefonaktiebolaget Lm Ericsson (Publ) Observation of resources by a coap client
CN112231942B (zh) * 2020-12-15 2021-03-16 长沙树根互联技术有限公司 物模型处理方法、装置和电子设备
US11297385B1 (en) * 2021-01-12 2022-04-05 Roku, Inc. Content-modification system with feature for managing multiple content-modification requests

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6138120A (en) * 1998-06-19 2000-10-24 Oracle Corporation System for sharing server sessions across multiple clients
US7647374B2 (en) * 2001-07-03 2010-01-12 Nokia Corporation Method for managing sessions between network parties, methods, network element and terminal for managing calls
US20030084165A1 (en) * 2001-10-12 2003-05-01 Openwave Systems Inc. User-centric session management for client-server interaction using multiple applications and devices
US7613822B2 (en) * 2003-06-30 2009-11-03 Microsoft Corporation Network load balancing with session information
KR100840365B1 (ko) * 2004-07-30 2008-06-20 삼성전자주식회사 다중 피.오.씨 세션의 세션 결합 방법 및 그 시스템
US8762547B2 (en) * 2005-04-29 2014-06-24 Sap Ag Shared memory implementations for session data within a multi-tiered enterprise network
US20060248199A1 (en) * 2005-04-29 2006-11-02 Georgi Stanev Shared closure persistence of session state information
US7761435B2 (en) * 2005-04-29 2010-07-20 Sap Ag External persistence of session state information
US7668904B2 (en) * 2005-07-28 2010-02-23 International Business Machines Corporation Session replication
US20070150600A1 (en) * 2005-12-22 2007-06-28 International Business Machines Corporation Method and apparatus for collecting data for characterizing HTTP session workloads
US7761431B2 (en) * 2006-02-16 2010-07-20 International Business Machines Corporation Consolidating session information for a cluster of sessions in a coupled session environment
US8001250B2 (en) * 2006-05-16 2011-08-16 Oracle International Corporation SIP and HTTP convergence in network computing environments
US9229933B2 (en) * 2006-12-19 2016-01-05 International Business Machines Corporation System, method and program for managing file downloads
CA2699309A1 (en) * 2007-10-21 2009-04-30 Citrix Systems, Inc. Systems and methods to adaptively load balance user sessions to reduce energy consumption
JP5296800B2 (ja) * 2007-11-01 2013-09-25 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 認証、許可、会計セッションを相関させる方法およびシステム
EP2061212B1 (en) * 2007-11-13 2018-06-20 Cellular Communications Equipment Llc Method, apparatus and program product for merging communication sessions in an IMS
JP5173721B2 (ja) * 2008-10-01 2013-04-03 キヤノン株式会社 文書処理システム及びその制御方法、プログラム、記憶媒体
EP2178247B1 (en) * 2008-10-16 2017-12-20 Hewlett-Packard Enterprise Development LP Sharing status information across a pluarlity of communication networks
US8549038B2 (en) * 2009-06-15 2013-10-01 Oracle International Corporation Pluggable session context
US8335943B2 (en) * 2009-06-22 2012-12-18 Citrix Systems, Inc. Systems and methods for stateful session failover between multi-core appliances
US8312308B2 (en) * 2009-06-22 2012-11-13 Citrix Systems, Inc. Systems and methods for SSL session cloning—transfer and regeneration of SSL security parameters across cores, homogenous system or heterogeneous systems
US8108377B2 (en) * 2009-12-15 2012-01-31 Facebook, Inc. Predictive resource identification and phased delivery of structured documents
US8413225B2 (en) * 2009-12-23 2013-04-02 Citrix Systems, Inc. Systems and methods for management of common application firewall session data in a multiple core system
WO2011107656A1 (en) * 2010-03-04 2011-09-09 Nokia Corporation Method and apparatus for integrating applications and related communications
US8892628B2 (en) * 2010-04-01 2014-11-18 Microsoft Corporation Administrative interface for managing shared resources
US20120271903A1 (en) * 2011-04-19 2012-10-25 Michael Luna Shared resource and virtual resource management in a networked environment
US9197600B2 (en) * 2011-09-29 2015-11-24 Israel L'Heureux Smart router
US9521439B1 (en) * 2011-10-04 2016-12-13 Cisco Technology, Inc. Systems and methods for correlating multiple TCP sessions for a video transfer
US8909766B1 (en) * 2011-10-04 2014-12-09 Amazon Technologies, Inc. Techniques for providing information about network connection status
US10290017B2 (en) * 2011-11-15 2019-05-14 Tapad, Inc. Managing associations between device identifiers
US20140172783A1 (en) * 2012-12-17 2014-06-19 Prowess Consulting, Llc System and method for providing computing environment delivery service with offline operations

Also Published As

Publication number Publication date
EP2939398B1 (en) 2016-08-31
EP2750355A1 (en) 2014-07-02
US10666737B2 (en) 2020-05-26
US20160006818A1 (en) 2016-01-07
KR20150102063A (ko) 2015-09-04
CN105164989B (zh) 2018-11-13
CN105164989A (zh) 2015-12-16
WO2014102320A1 (en) 2014-07-03
EP2939398A1 (en) 2015-11-04

Similar Documents

Publication Publication Date Title
KR101761495B1 (ko) 다수의 서버-클라이언트 세션을 감소시키기 위한 방법 및 시스템
US10404601B2 (en) Load balancing in the internet of things
KR102137598B1 (ko) 과거 이력 데이터에 기초하는 네트워크 노드 가용성 예측
EP2997747B1 (en) Systems and methods for enhanced discovery
US10708885B2 (en) Methods and nodes for enabling context-awareness in CoAP
EP3241311A1 (en) Systems and methods for mapping and visualizing wireless mesh network
Teklemariam et al. Facilitating the creation of IoT applications through conditional observations in CoAP
US9167031B2 (en) Distributed processing system and distributed processing method
JP6279938B2 (ja) 接続管理装置、通信システム、接続管理方法およびプログラム
EP3732842B1 (en) Compression context setup for data transmission for iot devices
JP7479427B2 (ja) トランスポートプロトコル上でのポイント・ツー・ポイント・データベース同期
US11422864B2 (en) Advanced resource link binding management
KR20140125223A (ko) 정보 중심 네트워킹 기반의 콘텐츠 네트워크에서 관리 인터페이스를 이용한 정보 수집 방법, 콘텐츠 네트워크 관리 시스템 및 노드 장치
US8145698B1 (en) Self organizing peer-to-peer system, method, and/or apparatus
US10263915B2 (en) Method for processing event between controller and network device
US11343750B2 (en) Method for the identification of a connected object in a network infrastructure
CN114090342A (zh) 存储容灾的链路管理方法及消息执行节点、存储控制集群
US20150365467A1 (en) Emulating Functionality for Constrained Devices
CN109314651B (zh) 用于高效http管理流程的面向管理信息库的协议
EP3097675B1 (en) Crash recovery for smart objects
Domingues et al. Dimensioning payload size for fast retransmission of MQTT packets in the wake of network disconnections
JP2019201287A (ja) 情報処理装置及びその制御方法
JP2019080209A (ja) 管理装置及びデータ転送装置の管理方法

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