KR101227821B1 - System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief - Google Patents
System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief Download PDFInfo
- Publication number
- KR101227821B1 KR101227821B1 KR1020120137313A KR20120137313A KR101227821B1 KR 101227821 B1 KR101227821 B1 KR 101227821B1 KR 1020120137313 A KR1020120137313 A KR 1020120137313A KR 20120137313 A KR20120137313 A KR 20120137313A KR 101227821 B1 KR101227821 B1 KR 101227821B1
- Authority
- KR
- South Korea
- Prior art keywords
- request
- mobile device
- server
- application
- requests
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/147—Network analysis or design for predicting network behaviour
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephonic Communication Services (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
Description
관련 출원의 상호-참조Cross-Reference to Related Applications
이 출원은 2011년04월27일자로 출원된 미국 가특허출원 제61/479,676호 "ATOMIC PROCESS FOR OFFLOADING MOBILE APPLICATION ACTIVITY BY TRAFFIC SNOOPING"를 기초로 우선권 주장하며, 상기 미국 가특허출원의 내용은 모두 본원에서 참조로서 포함된다. This application claims priority based on US Provisional Patent Application No. 61 / 479,676, "ATOMIC PROCESS FOR OFFLOADING MOBILE APPLICATION ACTIVITY BY TRAFFIC SNOOPING," filed April 27, 2011. It is included by reference.
이 출원은 본 출원과 함께 출원된 미국 특허 출원 "MOBILE DEVICE WHICH OFFLOADS REQUESTS MADE BY A MOBILE APPLICATION TO A REMOTE ENTITY FOR CONSERVATION OF MOBILE DEVICE AND NETWORK RESOURCES AND METHODS THEREFOR" (Attorney Docket No. 76443-8120.US01)와 관련이 있으며, 상기 미국 특허 출원은 모두 본원에서 참조로서 포함된다. This application is filed with US Patent Application "MOBILE DEVICE WHICH OFFLOADS REQUESTS MADE BY A MOBILE APPLICATION TO A REMOTE ENTITY FOR CONSERVATION OF MOBILE DEVICE AND NETWORK RESOURCES AND METHODS THEREFOR" (Attorney Docket No. 76443-8120.US01) And all of the above US patent applications are incorporated herein by reference.
모바일 데이터 트래픽이 기하급수적으로 계속 성장한다. 현재, 데이터가 미국의 모바일 트래픽의 상당한 부분을 차지하며, 대략 30%의 스마트폰 사용자가 평균 1GB/mo 이상을 사용한다. 새로운 장치 및 새로운 네트워크 기술이 계속 출시됨에 따라, 데이터 트래픽이 계속 성장한다. 3G, LTE 및 4G로의 전환 및 타블렛(tablet)과 스마트 폰의 추가 도입이, 수 십억 개의 연결 장치 및 빈번한 리프레시(refresh)를 필요로 하는 애플리케이션에 의해 발생되는 데이터 및 시그널링 트래픽의 폭발을 초래했다. Mobile data traffic continues to grow exponentially. Currently, data makes up a significant portion of mobile traffic in the United States, with roughly 30% of smartphone users using more than 1GB / mo on average. As new devices and new network technologies continue to roll out, data traffic continues to grow. The transition to 3G, LTE, and 4G, as well as the further introduction of tablets and smartphones, has led to the explosion of data and signaling traffic generated by billions of connected devices and applications requiring frequent refreshes.
LTE와 4G 기반 네트워크로의 이주의 경우에서도, 가입자, 애플리케이션, 및 장치의 빠른 성장이 네트워크 요소에 부담을 가중시키고, 이로 인해 혼잡과 네트워크 오류가 초래되었으며, 이들 모두, 최종 사용자의 경험에 큰 타격을 미친다. 따라서 데이터, 시그널링, 또는 데이터 세션 트래픽의 성장을 더 지능적이고 더 효율적으로 관리할 필요성이 실시간으로 네트워크 혼잡을 완화하고 사용자 경험을 보장하기 위해 여전히 중요하다.
Even in the case of migration to LTE and 4G-based networks, the rapid growth of subscribers, applications, and devices has placed a strain on network elements, resulting in congestion and network errors, all of which have a significant impact on end-user experience. Crazy Thus, the need to manage the growth of data, signaling, or data session traffic more intelligently and efficiently is still important to mitigate network congestion and ensure user experience in real time.
도 1A는 호스트 서버로 분담될 원자 프로세스로서 그룹지어질 수 있는 장치에서 개시되는 트래픽에서 검출되는 이벤트들의 세트를 도시하는 예시적 도면이다.
도 1B는 무선 네트워크(또는 광대역 네트워크)에서 자원 보존을 위해, 호스트 서버가 모바일 장치(가령, 무선 장치)와 애플리케이션 서버 또는 콘텐츠 제공자, 또는 그 밖의 다른 서버(가령, 광고 서버, 프로모션 콘텐츠 서버, 또는 e-쿠폰 서버) 간 트래픽의 관리, 콘텐츠 캐싱, 및/또는 자원 보존을 촉진하는 시스템의 예시적 도면이다. 호스트 서버는 추가로, 모바일 장치상의 트래픽을 스누핑하여, 원자 프로세스를 생성하기 위해 사용될 수 있는 이벤트들의 세트를 검출함으로써, 모바일 장치로부터 애플리케이션 트래픽 요청을 분담시킬 수 있다.
도 1C는 자원 보존 및 콘텐츠 캐싱을 위해, 장치, 애플리케이션 서버 또는 콘텐츠 제공자, 또는 그 밖의 다른 서버(가령, 광고 서버), 프로모션 콘텐츠 서버, 또는 e-쿠폰 서버 간에 네트워크 트래픽 관리를 촉진하는, 호스트 서버와 장치 사이에 분산된 프록시 및 캐시 시스템의 예시적 도면이다. 호스트 서버와 장치 간에 분산된 프록시 시스템은 추가로, 모바일 장치상의 트래픽을 스누핑하여 원자 프로세스를 생성하도록 사용될 수 있는 이벤트들의 세트를 검출함으로써, 모바일 장치로부터의 애플리케이션 트래픽 요청을 분담시킬 수 있다.
도 2A는 무선 네트워크(또는 광대역 네트워크)에서 자원 보존, 콘텐츠 캐싱, 및/또는 트래픽 관리를 위해, 트래픽을 관리하는 모바일 장치(가령, 무선 장치)상의 분산 프록시 및 캐시 시스템의 클라이언트 측 구성요소의 하나의 예를 도시하는 블록도이다. 클라이언트 측 프록시(또는 로컬 프록시)가 추가로, 애플리케이션 거동, 콘텐츠 우선순위, 사용자 활동, 및/또는 사용자 기대를 기초로 하여, 모바일 트래픽을 카테고리화, 및/또는 전달 정책을 구현할 수 있다.
도 2B는 모바일 애플리케이션 거동 및/또는 네트워크 조건에 대해 캐싱하고 캐싱 전략을 적응화시킬 수 있는, 도 2A의 예에서 나타난 캐시 시스템의 구성요소의 추가 예를 도시하는 블록도이다. 롱 폴 요청을 검출할 수 있고 롱 폴의 캐싱을 관리할 수 있는 구성요소가 또한 도시된다.
도 2C는 캐시 디피트를 검출하고, 캐시를 디피트하도록 의도된 식별자에 의해 주소지정되는 콘텐츠의 캐싱을 수행하는, 도 2A의 예시에서 도시되는 캐시 시스템의 애플리케이션 거동 검출기 및 캐싱 정책 관리기의 추가 구성요소를 도시하는 블록도이다.
도 2D는 애플리케이션 거동 및/또는 사용자 활동을 기초로 하여, 모바일 트래픽 카테고리화와 정책 이행을 수행할 수 있는 도 2A의 예에서 나타난 로컬 캐시에서 추가 구성요소의 예를 도시하는 블록도이다.
도 3A는 무선 네트워크(또는 광대역 네트워크)에서 자원 보존, 콘텐츠 캐싱, 및/또는 트래픽 관리를 위해, 트래픽을 관리하는 분산 프록시 및 캐시 시스템의 서버 측 구성요소의 하나의 예를 도시하는 블록도이다. 서버 측 프록시(또는 프록시 서버)가 추가로, 애플리케이션 거동, 콘텐츠 우선순위, 사용자 활동, 및/또는 사용자 기대를 기초로 하여, 모바일 트래픽을 카테고리화 및/또는 전달 정책을 구현할 수 있다.
도 3B는 모바일 애플리케이션 거동 및/또는 네트워크 상태에 대해, 캐싱하고 캐싱 전략을 적응화시킬 수 있는, 도 3A의 예에서 나타난 캐시 시스템에서 캐싱 정책 관리기의 구성요소들의 추가 예를 도시하는 블록도이다. 롱 폴 요청을 검출할 수 있고, 롱 폴의 캐싱을 관리할 수 있는 구성요소들이 또한 도시된다.
도 3C는, 캐시 디피트 메커니즘을 관리 및 검출하고, 콘텐츠 소스를 모니터링할 수 있는 도 3A의 예에서 도시된 프록시 시스템에서 구성요소들의 또 다른 예를 도시하는 블록도이다.
도 3D는 애플리케이션 거동 및/또는 트래픽 우선순위를 기초로 하여, 모바일 트래픽 카테고리화와 정책 이행을 수행할 수 있는 도 3A의 예시에서 나타난 프록시 서버의 추가 구성요소의 예를 도시하는 블록도이다.
도 4A는 원자 프로세스 기반 트래픽 최적화기를 포함하는, 분산 프록시 및 캐시 시스템의 클라이언트 측 구성요소의 또 다른 예를 도시하는 블록도이다.
도 4B는 도 4A의 예에서 도시된 원자 프로세스 기반 트래픽 최적화기의 추가 구성요소를 도시하는 블록도이다.
도 5A는 원자 프로세스 기반 트래픽 최적화기를 더 포함하는 분산 프록시 및 캐시 시스템의 서버 측 구성요소의 하나의 예를 도시하는 블록도이다.
도 5B는 도 5A의 예에서 나타난 원자 프로세스 기반 트래픽 최적화기의 추가 구성요소를 도시하는 블록도이다.
도 6A는 모바일 장치(가령, 임의의 무선 장치)와 원격 프록시 간의 분산 콘텐츠 캐싱과 콘텐츠 캐싱의 분산 관리를 위한 예시적 프로세스를 도시하는 흐름도이다.
도 6B는 콘텐츠 캐싱의 이용과 분산 프록시 시스템에 의해 수행되는 모니터링을 통해, 네트워크와 배터리 자원이 보존되도록, 무선 네트워크(또는 광대역 네트워크)에서 모바일 장치로부터 애플리케이션 서버/콘텐츠 제공자로의 데이터 요청이 분산 프록시 시스템에 의해 조화될 수 있는 방법을 보여주는 타이밍도이다.
도 7은 네트워크 액세스 및 콘텐츠 전달 정책을 구현할 때 사용될 수 있는 서로 다른 트래픽 또는 애플리케이션 카테고리 유형의 예를 도시하는 표이다.
도 8은 네트워크 액세스와 콘텐츠 전달 정책을 구현할 때 사용될 수 있는 서로 다른 콘텐츠 카테고리 유형의 예를 도시하는 표이다.
도 9는 무선 네트워크(또는 광대역 네트워크)를 통해 모바일 장치(가령, 임의의 무선 장치)로부터 애플리케이션 서버/콘텐츠 제공자로의 데이터 요청을 갖는 폴이 로컬 프록시에 캐싱될 수 있고, 분산 캐싱 시스템에 의해 관리될 수 있는 방법을 도시하는 상호대화도이다.
도 10은 무선 네트워크(또는 광대역 네트워크)를 통해 식별자 내 캐시 디피트 메커니즘(가령, 캐싱을 디피트하도록 의도된 식별자)을 이용하는 애플리케이션 서버/콘텐츠 제공자로부터의 콘텐츠에 대한 폴이 검출되고 로컬하게 캐싱될 수 있는 방법을 도시하는 상호대화도이다.
도 11는 모바일 장치를 대신하여 요청을 하기 위한 예시적 프로세스를 도시하는 흐름도이다.
도 12는 모바일 장치로부터의 요청들의 재현 가능한 패턴을 식별하거나 검출하기 위한 예시적 프로세스를 도시하는 흐름도이다.
도 13은 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 예시 프로세스를 도시하는 흐름도이다.
도 14는 모바일 장치 상의 복수의 모바일 애플리케이션에 의해 이뤄지는 요청을 분담시키기 위한 예시적 프로세스를 도시하는 흐름도이다.
도 15는 모바일 장치에서 원격 개체로 만들어지는 요청을 분담시키기 위한 예시적 프로세스를 도시하는 흐름도이다.
도 16은 기계가 본원에 기재된 방법들 중 하나 이상을 수행하도록 하기 위한 명령들의 세트가 실행될 수 있는 컴퓨터 시스템의 예시적 형태로 된 기계의 개략적 표현이다. 1A is an exemplary diagram illustrating a set of events detected in traffic initiated at an apparatus that may be grouped as an atomic process to be shared with a host server.
FIG. 1B illustrates that a host server may be a mobile device (eg, a wireless device) and an application server or content provider, or other server (eg, an advertisement server, a promotional content server, or the like) for resource conservation in a wireless network (or broadband network). Exemplary diagram of a system that facilitates management of traffic between e-coupon servers), content caching, and / or resource conservation. The host server may further share application traffic requests from the mobile device by snooping traffic on the mobile device to detect a set of events that may be used to generate the atomic process.
1C illustrates a host server that facilitates network traffic management between a device, application server or content provider, or other server (eg, an advertising server), a promotional content server, or an e-coupon server for resource conservation and content caching. An exemplary diagram of a proxy and cache system distributed between and devices. A proxy system distributed between the host server and the device may further distribute application traffic requests from the mobile device by detecting a set of events that may be used to snoop the traffic on the mobile device to generate an atomic process.
2A illustrates one of the client-side components of a distributed proxy and cache system on a mobile device (eg, a wireless device) that manages traffic for resource retention, content caching, and / or traffic management in a wireless network (or broadband network). It is a block diagram showing an example. The client-side proxy (or local proxy) may further implement mobile policy categorization and / or delivery policy based on application behavior, content priority, user activity, and / or user expectations.
FIG. 2B is a block diagram illustrating additional examples of components of the cache system shown in the example of FIG. 2A, which may cache for mobile application behavior and / or network conditions and adapt a caching strategy. Also shown are components that can detect long pole requests and manage caching of long poles.
FIG. 2C is a further configuration of an application behavior detector and caching policy manager of the cache system shown in the example of FIG. 2A, detecting cache dips and performing caching of content addressed by an identifier intended to dip the cache. A block diagram illustrating the elements.
FIG. 2D is a block diagram illustrating an example of additional components in the local cache shown in the example of FIG. 2A that may perform mobile traffic categorization and policy enforcement based on application behavior and / or user activity.
3A is a block diagram illustrating one example of server-side components of a distributed proxy and cache system that manages traffic for resource conservation, content caching, and / or traffic management in a wireless network (or broadband network). Server-side proxies (or proxy servers) may further implement mobile traffic categorization and / or delivery policies based on application behavior, content priorities, user activity, and / or user expectations.
FIG. 3B is a block diagram illustrating additional examples of components of a caching policy manager in the cache system shown in the example of FIG. 3A that may cache and adapt caching strategies to mobile application behavior and / or network conditions. Also shown are components that can detect long pole requests and manage caching of long poles.
FIG. 3C is a block diagram illustrating another example of components in the proxy system shown in the example of FIG. 3A that may manage and detect a cache bite mechanism, and monitor a content source.
FIG. 3D is a block diagram illustrating an example of additional components of the proxy server shown in the example of FIG. 3A that may perform mobile traffic categorization and policy enforcement based on application behavior and / or traffic priority.
4A is a block diagram illustrating another example of client-side components of a distributed proxy and cache system, including atomic process based traffic optimizers.
4B is a block diagram illustrating additional components of the atomic process based traffic optimizer shown in the example of FIG. 4A.
5A is a block diagram illustrating one example of server-side components of a distributed proxy and cache system further comprising an atomic process based traffic optimizer.
FIG. 5B is a block diagram illustrating additional components of the atomic process based traffic optimizer shown in the example of FIG. 5A.
6A is a flowchart illustrating an example process for distributed content caching between a mobile device (eg, any wireless device) and a remote proxy and distributed management of content caching.
FIG. 6B illustrates a distributed proxy request for data requests from a mobile device to an application server / content provider in a wireless network (or broadband network) so that network and battery resources are preserved through the use of content caching and monitoring performed by a distributed proxy system. A timing diagram showing how the system can be harmonized.
7 is a table illustrating examples of different traffic or application category types that may be used when implementing network access and content delivery policies.
8 is a table illustrating examples of different content category types that may be used when implementing network access and content delivery policies.
9 illustrates that a poll with data requests from a mobile device (eg, any wireless device) to an application server / content provider over a wireless network (or broadband network) may be cached at a local proxy and managed by a distributed caching system. It is an interactive diagram showing how it can be done.
10 illustrates that polls for content from an application server / content provider that utilize a cache defeat mechanism (eg, an identifier intended to deflect caching) within an identifier over a wireless network (or broadband network) may be detected and cached locally. It is an interactive diagram showing how it can be done.
11 is a flowchart illustrating an example process for making a request on behalf of a mobile device.
12 is a flowchart illustrating an example process for identifying or detecting a reproducible pattern of requests from a mobile device.
13 is a flowchart illustrating an example process for simulating a traffic request from a mobile device.
14 is a flowchart illustrating an example process for sharing a request made by a plurality of mobile applications on a mobile device.
FIG. 15 is a flow diagram illustrating an example process for sharing a request made with a remote entity at a mobile device.
16 is a schematic representation of a machine in an exemplary form of a computer system in which a set of instructions for causing a machine to perform one or more of the methods described herein may be executed.
다음의 기재와 도면은 설명을 위한 것이며, 한정하기 위한 것이 아니다. 많은 구체적 세부사항이 본원의 완전한 이해를 제공하기 위해 기재된다. 그러나 특정 경우, 본원의 기재를 불명확하게 하는 것을 막기 위해, 공지 또는 종래의 세부사항은 제공되지 않는다. 본원에서 "하나의 실시예" 또는 "실시예"가 반드시, 동일한 실시예를 지칭하는 것이 아닐 수 있고, 이러한 지칭은 실시예들 중 적어도 하나를 의미한다.The following description and drawings are for the purpose of description and not of limitation. Many specific details are set forth in order to provide a thorough understanding of the present disclosure. However, in certain instances, known or conventional details are not provided to avoid obscuring the disclosure herein. As used herein, “an embodiment” or “an embodiment” may not necessarily refer to the same embodiment, and such reference refers to at least one of the embodiments.
본 명세서에서, "하나의 실시예" 또는 "실시예"라는 언급은 상기 실시예와 관련하여 기재되는 특정한 특징, 구조, 또는 특성이 본원발명의 적어도 하나의 실시예에 포함됨을 의미한다. 본 명세서의 다양한 부분에서의 "하나의 실시예에서"라는 구문의 언급이 반드시 동일한 실시예를 지칭하는 것은 아니며, 또한 개별적인, 또는 대안적인 실시예들이 타 실시예들과 상호 배타적인 것임을 나타내는 것도 아니다. 덧붙이자면, 어떤 실시예들에서는 나타나고, 나머지 실시예들에서는 나타나지 않는 다양한 특징이 기재된다. 마찬가지로, 어떤 실시예들의 요건일 수 있지만, 또 다른 실시예들의 요건은 아닐 수 있는 다양한 요건이 기재된다. In this specification, reference to "one embodiment" or "an embodiment" means that a particular feature, structure, or characteristic described in connection with the above embodiment is included in at least one embodiment of the present invention. The use of the phrase “in one embodiment” in various places in this specification does not necessarily refer to the same embodiment, nor does it imply that the individual or alternative embodiments are mutually exclusive of other embodiments. . In addition, various features are described which appear in some embodiments and do not appear in the other embodiments. Likewise, various requirements are described which may be requirements of certain embodiments, but not requirements of other embodiments.
본 명세서에서 사용되는 용어는, 본원발명의 맥락과, 각각의 용어가 사용되는 특정 맥락에 비추어, 해당 기술 분야의 통상의 의미이다. 본원발명의 설명과 관련해 해당업계 종사자에게 추가 안내를 제공하기 위해, 본원발명을 기재하기 위해 사용되는 특정 용어가 이하에서, 또는 본 명세서의 그 밖의 다른 곳에서, 설명된다.편의상, 특정 용어가, 예를 들어, 이탤릭체 및/또는 인용 부호를 이용해, 강조될 수 있다. 강조어의 사용은, 용어의 범위와 의미에 어떠한 영향도 미치지 않고, 용어가 강조되었는지에 관계없이, 용어의 범위와 의미는 동일한 맥락 하에서 동일하다. 동일한 사항이 두 가지 이상의 방식으로 설명될 수 있음을 알 것이다. The terminology used herein is the ordinary meaning in the art in light of the context of the present invention and the specific context in which each term is used. In order to provide additional guidance to those skilled in the art in connection with the description of the invention, certain terms used to describe the invention are described below, or elsewhere in this specification. For example, italics and / or quotation marks may be used to emphasize. The use of accented words has no effect on the scope and meaning of the terms, and regardless of whether the terms are emphasized, the scope and meaning of the terms are the same under the same context. It will be appreciated that the same may be explained in more than one way.
결과적으로, 대치어와 동의어가 본원에서 설명되는 용어들 중 임의의 하나 이상에 대해 사용될 수 있으며, 본원에서 상술 또는 설명되는지에 관계없이 어떠한 특별한 의의도 두지 않는다. 특정 용어에 대한 동의어가 제공된다. 하나 이상의 동의어의 언급이 다른 동의어의 사용을 배제하는 것은 아니다. 본 명세서의 임의의 부분에서의 예시의 사용, 예를 들면, 본원에서 설명되는 임의의 용어의 예시는 단지 설명을 위한 것에 불과하며, 본원발명의 범위와 의미 또는 임의의 예로 든 용어의 범위와 의미를 추가로 제한하려는 의도는 없다. 마찬가지로, 본원발명은 본 명세서에서 제공되는 다양한 실시예로 한정되지 않는다.As a result, substitutions and synonyms may be used for any one or more of the terms described herein, and have no particular significance regardless of whether described or described herein. Synonyms for specific terms are provided. Reference to one or more synonyms does not exclude the use of other synonyms. Use of examples in any part of this specification, for example, examples of any term described herein are for illustrative purposes only, and the scope and meaning of the present invention or the scope and meaning of any exemplary term There is no intention to further restrict. Likewise, the invention is not limited to the various embodiments provided herein.
본원발명의 범위를 한정하려는 의도 없이, 본원발명의 실시예에 따르는 기기, 장치, 방법, 및 이들과 관련된 결과의 예시가 이하에서 제공된다. 제목 또는 소제목은 편의상 예시로 사용된 것일 수 있으며, 본원발명의 범위를 제한하지 않는다. 다르게 정의되지 않는 한, 본원에서 사용되는 모든 기술적이며 과학적인 용어는 본원발명이 속하는 기술분야의 종사자에 의해 일반적으로 이해되는 의미를 가진다. 상호충돌의 경우, 정의를 포함해, 본원이 우선시될 것이다.Without intending to limit the scope of the present invention, examples of devices, devices, methods, and results associated therewith, according to embodiments of the present invention are provided below. The title or subtitle may be used as an example for convenience and does not limit the scope of the present invention. Unless defined otherwise, all technical and scientific terms used herein have the meaning commonly understood by one of ordinary skill in the art to which this invention belongs. In case of conflict, the present application, including definitions, will control.
본 발명의 실시예는 모바일 네트워크 트래픽 경감을 위한 원자 프로세스(atomic process)를 기초로 모바일 장치를 대신하여 요청을 하기 위한 시스템 및 방법을 포함한다. Embodiments of the present invention include systems and methods for making requests on behalf of mobile devices based on atomic processes for mitigating mobile network traffic.
데이터의 급증에 기여하는 복수의 요인이 존재하는데, 예를 들어, 최종 사용자, 모바일 장치, 무선 장치, 모바일 애플리케이션, 및 네트워크가 있다. 모바일 장치가 진화할수록, 모바일 장치와 연계된 다양한 요소들, 즉, 가용성, 애플리케이션, 사용자 행동, 위치가 네트워크가 장치 및 애플리케이션과 상호대화하는 방식을 변화시킨다.There are a number of factors that contribute to the proliferation of data, such as end users, mobile devices, wireless devices, mobile applications, and networks. As mobile devices evolve, various factors associated with the mobile devices, such as availability, applications, user behavior, and location, change the way the network interacts with the devices and applications.
본 발명의 기술은, 모바일 콘텐츠가 지정된, 또는 상대적인 "신선도(freshness)" 값을 가진다는 점을 활용함으로써 모바일 또는 무선 장치의 이동과 데이터의 급등을 모두 지원하기 위한 운영자 및 장치 제조업체를 위한 각각의 요소를 해결할 수 있는 포괄적인 종단간(end-to-end) 솔루션을 제공한다. 모바일 콘텐츠의 "신선도"는, 확정적으로, 또는 허용오차(이 허용오차 내에서 사용자 경험은 개선되지만 부정적 영향은 받지 않음. 또는 부정적 영향은 받지만 사용자가 인지할 수 없거나 허용 가능한 임계 수준 내임)를 갖는 임의의 휴리스틱을 이용해, 결정될 수 있다. The technique of the present invention utilizes the fact that mobile content has a specified or relative "freshness" value to enable operators and device manufacturers to support both mobile and wireless device movement and data spikes. Provides a comprehensive end-to-end solution to address the elements. The "freshness" of mobile content is either deterministically or with tolerances (within this tolerance the user experience is improved but not negatively impacted, or negatively impacted but unacceptable or within acceptable thresholds). Using any heuristic, it can be determined.
본원발명의 혁신기술은 애플리케이션(가령, 모바일 애플리케이션)과 피어(대응하는 서버 또는 그 밖의 다른 클라이언트) 사이의 트랜잭션(transaction)(요청/응답)을 모니터링하고 분석하며, 규칙을 적용함으로써, 이러한 "신선도(freshness)"를 투명하게 결정한다. 덧붙이자면, 상기 기술은, 콘텐츠의 출처/호스트 서버에 의해 "캐싱 불가능함(non-cacheable)"로 표시될 수 있는 콘텐츠를 효율적으로 캐싱(cache)하고, 일부 "신선도" 값을 식별할 수 있으며, 그 후 상기 "신선도" 값은 애플리케이션-특정적 캐싱(application-specific caching)을 구현하는 데 사용될 수 있다. 일반적으로, "신선도" 값은, 일반적으로, 애플리케이션과 이에 대응하는 서버/호스트 간의 업데이트 간격(update interval)(가령, 요청이 전송되는 간격)을 이용하여 결정되는 근사 최솟값을 가진다.The innovation of the present invention monitors and analyzes transactions (requests / responses) between an application (e.g., a mobile application) and a peer (a corresponding server or other client) and applies these rules, thereby applying such "freshness". (freshness) "to be transparent. In addition, the technique can efficiently cache content that may be marked as "non-cacheable" by the source / host server of the content, and identify some "freshness" values. The "freshness" value can then be used to implement application-specific caching. In general, the "freshness" value generally has an approximate minimum determined using an update interval between the application and the corresponding server / host (eg, the interval at which the request is sent).
본원발명의 기법의 한 가지 실시예는, 장치와 애플리케이션 활동(가령, 로딩(loading), 장치상의 현재 애플리케이션 수요, 액세스의 유형(푸시(push) vs. 풀(pull), 또는 하이브리드)의 제어, 위치, 단일 영역 내 사용자의 밀집도, 시각(time of day), 사용자가 애플리케이션, 콘텐츠, 또는 장치와 상호대화하는 빈도, 및 협업하는 클라이언트/서버로의 트래픽, 또는 협업하는 클라이언트 없이 모바일 장치들로의 동시 트래픽을 성형(shape)하기 위해 이 정보를 사용하는 것)을 포괄적으로 살펴볼 때 유선 및 무선 네트워크와 장치의 연결의 복수의 양태를 최적화하는 시스템을 포함한다. 본원발명의 서버는 어떠한 특정 네트워크 제공자와도 관련이 없기 때문에, 모든 서비스 제공자들 간의 네트워크 성능에 대한 가시성을 가진다. 이로 인해서, 운영자 또는 서비스 제공자에 무관하게, 최적화가 장치에 적용될 수 있으며, 따라서, 사용자 경험이 개선되고 로밍(roaming) 동안의 네트워크 활용이 관리된다. 오늘날 대역폭이 무선 네트워크에서의 주요 쟁점으로 간주된다. 액세스 문제를 해결하기 위한 추가 대역폭의 필요와 관련하여, 점점 더 많은 연구가 이뤄지고 있다. 성능 향상 솔루션 및 차세대 표준(가령, 흔히 3.5G, LTE, 4G, 및 WiMAX라고 일컬어지는 것들) 중 다수가 증가된 대역폭을 제공하는 것에 초점을 맞춘다. 상기 표준에 의해 부분적으로 해결될지라도, 남아 있는 핵심적인 문제는, 데이터 채널에서보다 시그널링 채널에서 대역폭이 더 부족하다는 것이며, 상기 표준은 배터리 수명 문제를 그리 잘 해결하지 않는다.One embodiment of the techniques of the present invention may include device and application activity (eg, loading, current application demand on the device, control of the type of access (push vs. pull, or hybrid), Location, density of users in a single area, time of day, frequency with which users interact with applications, content, or devices, and traffic to collaborating clients / servers, or mobile devices without collaborating clients Using this information to shape concurrent traffic) includes a system that optimizes multiple aspects of the connection of devices with wired and wireless networks. Because the server of the present invention is not associated with any particular network provider, it has visibility into network performance among all service providers. This allows optimization to be applied to the device, regardless of operator or service provider, thus improving the user experience and managing network utilization during roaming. Today, bandwidth is considered a major issue in wireless networks. In relation to the need for additional bandwidth to solve access problems, more and more research is being done. Many of the performance enhancement solutions and next-generation standards (such as those commonly referred to as 3.5G, LTE, 4G, and WiMAX) focus on providing increased bandwidth. Although partially solved by the standard, the key problem that remains is that there is less bandwidth in the signaling channel than in the data channel, and the standard does not solve the battery life problem very well.
본원 발명의 기술의 실시예는, 예를 들어, 복수의 애플리케이션으로부터의 요청을 정렬하여 복수의 폴링 요청의 필요성을 최소화하는 것; 특정 콘텐츠 유형을 활용하여 연결/콘텐츠를 프록시화/관리하는 법을 결정하는 것; 장치, 사용자 행동 패턴(사용자가 장치/애플리케이션과 상호대화하는 빈도) 및/또는 네트워크 파라미터와 연계된 특정 휴리스틱을 적용하는 것을 포함한다.Embodiments of the techniques of the present invention include, for example, aligning requests from a plurality of applications to minimize the need for a plurality of polling requests; Determining how to proxy / manage connections / content using specific content types; Applying specific heuristics associated with devices, user behavior patterns (frequency of user interactions with devices / applications), and / or network parameters.
본 발명의 기술의 실시예는, 다양한 위젯(widget), RSS 리더(RSS reader), 등에 의해 수행되는 반복되는 HTTP 폴을 원격 네트워크 노드(가령, 네트워크 운영 센터(Network Operation Center, NOC))로 이동시키는 것, 따라서, 장치 배터리/전력 소모량, 라디오 채널 시그널링 및 대역폭 사용량을 상당히 낮추는 것을 포함한다. 덧붙이자면, 기존 애플리케이션이 변할 필요가 없도록 분담(offloading)이 투명하게(transparently) 수행될 수 있다.Embodiments of the technology of the present invention move repeated HTTP polls performed by various widgets, RSS readers, and the like to remote network nodes (e.g., Network Operation Centers (NOCs)). And thus significantly lowering device battery / power consumption, radio channel signaling and bandwidth usage. In addition, offloading can be transparently performed so that existing applications do not need to be changed.
일부 실시예에서, 이는 동일한 콘텐츠(RSS 피드, 위젯 데이터 세트)에 대한, 특정 규칙(가령, 15분마다 발생)에 부합하는 반복되는 요청을 자동으로 검출하는 모바일 장치(가령, 임의의 무선 장치)상의 로컬 프록시를 이용해 구현될 수 있다. 로컬 프록시는 서버(가령, 통신 네트워크의 하나의 요소로서 동작하는 프록시 서버)로의 폴링을 위임하면서 모바일 장치에 콘텐츠를 자동으로 캐싱할 수 있다. 그 후, 상기 서버는 콘텐츠가 변한 경우 모바일/클라이언트 프록시에게 통지할 수 있으며, 콘텐츠가 변하지 않은 경우(또는 콘텐츠가 충분히, 즉, 식별될 만큼 변경되지 않은 경우) 모바일 프록시는 (라디오를 전혀 이용할 필요 없이) 자신의 캐시 내 최신 버전을 사용자에게 제공한다. 이러한 방식으로, 요청이 모니터링되어 요청이 새로운 것/변경됨(new/changed)이라고 플래깅된 적 없는 콘텐츠에 대한 것인 경우, 모바일 또는 무선 장치(가령, 모바일 폰, 스마트 폰, M2M 모듈/MODEM, 또는 그 밖의 다른 임의의 무선 장치 등)는 데이터 연결을 개설하거나 사용할 필요가 없다. In some embodiments, this is a mobile device (eg, any wireless device) that automatically detects repeated requests for the same content (RSS feeds, widget data sets) that meet specific rules (eg, occur every 15 minutes). Can be implemented using a local proxy. The local proxy can automatically cache content to the mobile device while delegating polling to a server (eg, a proxy server operating as one element of the communication network). The server may then notify the mobile / client proxy if the content has changed, and if the content has not changed (or if the content has not changed sufficiently, i.e. identified), the mobile proxy needs to use the radio at all. To provide users with the latest version in their cache. In this way, if the request is monitored and is for content that has never been flagged as being new / changed, the mobile or wireless device (eg, mobile phone, smartphone, M2M module / MODEM, Or any other wireless device, etc.) need not establish or use a data connection.
모니터링될 (가령, URL/콘텐츠를 포함하는) 콘텐츠 소스/애플리케이션 서버를 자동으로 추가하기 위한 로직이 다양한 인자들, 가령, 콘텐츠가 동일할 빈도, 동일한 요청이 만들어지는 빈도(고정된 간격/패턴이 있는가?), 어느 애플리케이션이 데이터를 요청 중인가, 등을 체크할 수 있다. 로컬 프록시 및/또는 서버에 의해, 캐시를 사용하는 것과, 원본 소스로부터 데이터를 요청하는 것 중에서 결정하기 위해 유사한 규칙이 구현되고 실행될 수 있다. The logic for automatically adding content source / application servers to be monitored (e.g., including URLs / content) is based on various factors, such as how often content is the same, how often the same request is made (fixed interval / pattern , Which applications are requesting data, and so on. Similar rules may be implemented and executed by the local proxy and / or server to determine between using the cache and requesting data from the original source.
예를 들면, 요청이 계획에 없던/예기치 않은 때(사용자에 의해 개시되는 체크), 또는 캐시 등으로부터 응답이 n번 연속으로 제공된 후, 또는 애플리케이션이 배경(background)에서 실행 중인지, 전경(foreground)의 더 상호대화적 모드에서 실행 중인지 여부가 있다. 점점 더 많은 모바일 애플리케이션 또는 무선 지원 애플리케이션이 네트워크에서 이용 가능한 자원을 기반으로 할수록, 이는 점점 더 중요해진다. 덧붙이자면, 본원발명의 기술에 의해, 네트워크로부터 불필요한 채터(chatter)가 제거되며, 이는, 무선 스펙트럼 사용량을 최적화하려 시도하는 운영자에게 유익하다. For example, when a request is unplanned / unexpected (check initiated by the user), or after a response has been provided n consecutive times from a cache or the like, or if the application is running in the background, foreground Is running in more interactive mode. As more and more mobile applications or wireless enabled applications are based on the resources available on the network, this becomes more and more important. In addition, the technique of the present invention eliminates unnecessary chatter from the network, which is beneficial for operators attempting to optimize radio spectrum usage.
트래픽traffic 카테고리화Categorization 및 정책 And policy
일부 실시예에서, 본원발명의 프록시 시스템은, 캐싱 및/또는 성형(shape)하기 위한 트래픽(데이터, 콘텐츠, 메시지, 업데이트 등)을 선택하기 위한 정책을 확립할 수 있다. 덧붙이자면, 네트워크 요청을 하는 애플리케이션의 관찰, 또는 애플리케이션으로부터의 명시적 정보(explicit information)의 수집, 또는 애플리케이션이 도달하는 네트워크 도착지에 대한 인지로부터 도출된 정보를 조합함으로써, 본원발명의 기술은 전송되는 트래픽이 속하는 카테고리를 결정하거나, 추론할 수 있다. In some embodiments, the proxy system of the present invention may establish a policy for selecting traffic (data, content, messages, updates, etc.) for caching and / or shaping. In addition, by combining information derived from the observation of an application making a network request, or the collection of explicit information from an application, or the perception of the network destination that the application arrives at, the techniques of the present invention are transmitted. The category to which the traffic belongs can be determined or inferred.
예를 들어, 하나의 실시예에서, 모바일 또는 무선 트래픽은, (a1) 상호대화 트래픽, 또는 (a2) 배경 트래픽으로 카테고리화될 수 있다. 차이점은, (a1)에서, 사용자는 응답을 적극적으로 기다리지만, (a2)에서 사용자는 응답을 기대하지 않는다. 이러한 카테고리화는 두 번째 유형의 카테고리화와 함께, 또는 대신하여, 사용될 수 있고, 두 번째 유형의 카테고리는 다음과 같다: (b1) 즉시(immediate), (b2) 낮은 우선순위, (b3) 요청하는 애플리케이션이 전경(foreground)에 있고 액티브 상태인 경우, 즉시.For example, in one embodiment, mobile or wireless traffic may be categorized as (a1) interactive traffic, or (a2) background traffic. The difference is that at (a1) the user actively waits for a response, but at (a2) the user does not expect a response. This categorization can be used with, or in place of, the second type of categorization, the second type of categories being: (b1) immediate, (b2) low priority, (b3) request Immediately if the application it is in the foreground and is active.
예를 들어, 새로운 업데이트, 메시지, 또는 전자메일은, 즉시 전달될 (b1) 카테고리에 속할 수 있지만, 여전히 (a2) 배경 트래픽이다(사용자는 이를 적극적으로 기다리지 않는다). 활성 챗 세션(active chat session) 밖으로 나올 때, 유사한 카테고리화가 인스턴트 메시지(instant message)에 적용된다. 활성 챗 세션 동안 사용자는 응답이 더 빠를 것을 기대한다. 이러한 사용자 기대는 결정되거나 추론되며, 트래픽 카테고리화 및 정책 이행을 수행함에 있어서 네트워크 사용과 장치 자원을 최적화할 때, 요인으로 고려된다.For example, a new update, message, or e-mail may belong to the category (b1) to be delivered immediately, but still (a2) is background traffic (user does not actively wait for it). When exiting an active chat session, a similar categorization is applied to instant messages. During an active chat session, the user expects a faster response. These user expectations are determined or inferred and considered as factors when optimizing network usage and device resources in performing traffic categorization and policy enforcement.
기재된 카테고리화 스킴의 적용의 일부 예로는, (a1) 상호대화 트래픽이 (b1) 즉시(immediate)로 카테고리화되지만, (a2) 배경 트래픽은 (b2) 또는 (b3)일 수도 있다. 낮은 우선순위 전송(transfer)의 예로는 전자메일 또는 메시지 유지관리 트랜잭션, 가령, 전자메일 또는 그 밖의 다른 메시지 삭제하기, 또는 메일 또는 애플리케이션 서버에서 읽힐 때 전자메일에 표시하기 트랜잭션이 있다. 일반적으로 이러한 전송은 (a) 타이머가 타임아웃 값(가령, 2분)을 초과하는 때, 및 (b) 데이터가 그 밖의 다른 목적으로 전송될 때 중에서 더 이른 때 발생할 수 있다.In some examples of the application of the categorization scheme described, (a1) interactive traffic is categorized as (b1) immediate, but (a2) background traffic may be (b2) or (b3). Examples of low priority transfers are e-mail or message maintenance transactions, such as deleting an e-mail or other message, or marking the e-mail when read from the mail or application server. In general, this transfer may occur earlier in (a) when the timer exceeds a timeout value (eg, 2 minutes), and (b) when the data is sent for other purposes.
(b3)의 예로는 IM 프레즌스(presence) 업데이트, 주식 시세 표시기 업데이트, 날씨 업데이트, 상태 업데이트, 뉴스 피드(news feed)가 있다. 애플리케이션의 UI가 전경(foreground)에 있거나, 및/또는 액티브 상태일 때(가령, 장치/폰의 백라이트에 의해 지시되거나, 그 밖의 다른 센서의 상태로부터 결정 또는 추론되는 바와 같이), 업데이트는, 서버가 장치로 푸시(push)될 임의의 것을 가질 때마다 즉시 이뤄질 것이라고 여겨질 수 있다. 애플리케이션이 전경에 있지 않거나 액티브 상태가 아닐 때, 이러한 업데이트는, 애플리케이션이 전경으로 오고 액티브 상태가 될 때까지 억제될 수 있다.Examples of (b3) include IM presence updates, stock ticker updates, weather updates, status updates, and news feeds. When the UI of the application is in the foreground and / or active (eg, as indicated by the backlight of the device / phone, or determined or inferred from the state of some other sensor), the update It may be assumed that whenever a has anything to be pushed to the device it will happen immediately. When the application is not in the foreground or not active, this update can be suppressed until the application comes to the foreground and becomes active.
일부 실시예에서, 네트워크는 (a1) 상호대화 트래픽과 (a2) 배경 트래픽에 대해 동시에 선택되거나 최적화될 수 있다.In some embodiments, the network may be simultaneously selected or optimized for (a1) interactive traffic and (a2) background traffic.
일부 실시예에서, 무선 장치 또는 모바일 장치 프록시는 (서버 프록시와 별도로, 또는 함께) 트래픽을, (예를 들어) (a1) 상호대화 트래픽, 또는 (a2) 배경 트래픽으로 카테고리화할 수 있기 때문에, 서로 다른 유형의 트래픽에 서로 다른 정책을 적용할 수 있다. 이는, 내부적으로 (a1)과 (a2) 트래픽에 대해 서로 다르게 동작할 수 있음을 의미한다(이는, 예를 들어, 상호대화 트래픽이 네트워크를 전체적으로 또는 부분적으로 통과하게 하고, 배경 트래픽에는 더 엄격한 트래픽 제어를 적용함으로써, 또는 장치 측이 서버로부터 호스트의 콘텐츠가 업데이트됐다는 정보를 수신했을 때만 라디오를 활성화시키는 요청을 허용하는 등에 의해 이뤄진다).In some embodiments, wireless devices or mobile device proxies can categorize traffic (separately or together with a server proxy) to each other because they can be categorized as (eg) (a1) interactive traffic, or (a2) background traffic. Different policies can be applied to different types of traffic. This means that it can internally behave differently for (a1) and (a2) traffic (which, for example, allows interactive traffic to pass through the network in whole or in part and stricter traffic for background traffic). By applying control, or by allowing the device side to request to activate the radio only when it receives information from the server that the host's content has been updated).
요청이 무선 네트워크를 통한 액세스를 요구할 때, 본원발명의 기술은 라디오 레이어(radio layer)에게, 서로 다른 트래픽에 서로 다른 네트워크 설정을 적용할 것을 요청할 수 있다. 트래픽과 네트워크의 유형에 따라서, 이는 다음의 여러 다른 수단에 의해 달성될 수 있다:When a request requires access via a wireless network, the techniques of the present invention can request the radio layer to apply different network settings to different traffic. Depending on the type of traffic and network, this can be accomplished by several different means:
(1) (a1)에 대해 3G/4G, (a2)에 대해 2G/2.5G를 이용하기,(1) using 3G / 4G for (a1), 2G / 2.5G for (a2),
(2) 서로 다른 데이터 세트에 대해 네트워크 설정을 명시적으로 특정하기(가령, FACH(forward access channel) vs. DCH(dedicated channel)의 사용 관점에서, 또는 배경 트래픽에 대한 더 낮은/더 높은 네트워크 효율의 데이터 전송 속도(data rate)를 그 밖의 다른 방식으로 요청하기), 또는(2) Explicitly specify network settings for different data sets (e.g., in terms of the use of forward access channel (FACH) vs. dedicated channel (DCH), or lower / higher network efficiency for background traffic) Request the data rate of the data in any other way), or
(3) 서로 다른 데이터 세트에 대해 서로 다른 네트워크 액세스 포인트를 이용하기(상기 (1) 및 (2)와 유사하게 네트워크 자원을 서로 다르게 이용하도록 설정될 액세스 포인트).(3) Using different network access points for different data sets (access points to be set up to use different network resources similarly to (1) and (2) above).
덧붙이자면, 3GPP 빠른 휴면(Fast Dormancy)은, 애플리케이션, 운영 체제, 또는 모바일 장치가 장래에 더 효율적이 될 트래픽 유형을 알고 있도록 하는 개선을 요구한다. 트래픽 카테고리에 대한 지식을 갖고, 빠른 휴면을 이용할 수 있는 본원발명의 시스템의 실시예는 빠른 휴면에서 확인된 문제점을 해결할 수 있다. 이러한 방식으로, 모바일 또는 광대역 네트워크는, 배터리 소모량과 네트워크 시그널링 자원 모두에 부정적인 영향을 미치는 타협된 구성으로 구성될 필요가 없다. In addition, 3GPP Fast Dormancy requires an improvement that allows applications, operating systems, or mobile devices to know the type of traffic that will be more efficient in the future. Embodiments of the system of the present invention with knowledge of traffic categories and able to use fast dormancy can solve the problems identified in the fast dormancy. In this way, the mobile or broadband network need not be configured with a compromised configuration that negatively impacts both battery consumption and network signaling resources.
폴링Polling 스케줄 schedule
폴링 스케줄을 검출(또는 결정)함으로써, 프록시 서버(분산 캐시 시스템의 서버측)는 자신의 폴을 애플리케이션 폴과 가능한 가까이 둘 수 있다. 많은 애플리케이션이 (가령, 4시간마다, 또는 30초마다, 또는 또 다른 시간 간격으로) 스케줄링된 간격 폴링을 이용한다. 클라이언트 측 프록시는 시간 기준을 기초로 하여 자동 폴을 검출하고, 애플리케이션에 대한 자동 폴링 프로파일을 만들 수 있다. 예를 들어, 로컬 프록시가 요청(request)과 2, 3, 4, 또는 그 이상의 폴 사이의 시간 간격을 검출하려 시도하며, 시간 간격들이 모두, 각각 1초(또는 상대적 가까움에 대한 또 다른 기준) 내에 있는 경우, 자동 속도(automatic rate)를 결정한다. 그렇지 않은 경우, 클라이언트는 더 많은 개수의 폴링 이벤트(가령, 10-12개의 폴)로부터 데이터를 수집하고, 통계적 분석을 적용하여, 사용되는 평균 간격에 대한 값을 결정, 계산, 또는 추정할 수 있다. 폴링 프로파일은, 상기 폴링 프로파일이 사용되는 서버로 전달된다. 빈번한 수동 요청이 있는 경우, 로컬 프록시는 이를 비-중요 애플리케이션(non-critical application)에 대한 프로파일로부터 얻어진 이 애플리케이션에 대한 디폴트 간격으로 대체할 수 있다. By detecting (or determining) the polling schedule, the proxy server (server side of the distributed cache system) can keep its poll as close as possible to the application poll. Many applications use scheduled interval polling (eg, every 4 hours, or every 30 seconds, or at another time interval). The client-side proxy can detect automatic polls based on time criteria and create an automatic polling profile for the application. For example, a local proxy attempts to detect a time interval between a request and two, three, four, or more polls, all of which are one second each (or another criterion for relative closeness). If within, determine the automatic rate. Otherwise, the client can collect data from a larger number of polling events (eg, 10-12 polls) and apply statistical analysis to determine, calculate, or estimate the value for the average interval used. . The polling profile is forwarded to the server where the polling profile is used. If there are frequent manual requests, the local proxy can replace this with the default interval for this application, which is obtained from the profile for non-critical applications.
일부 실시예에서, 로컬 프록시(가령, 장치 측 프록시)가 애플리케이션/클라이언트 폴을 계속 모니터링하고, 폴링 간격을 업데이트할 수 있다. 현재 값에서 30%(또는 또 다른 지정 값/동적 값/조건적 값)보다 많이 변할 경우, 프록시 서버(가령, 서버 측 프록시)로 전달된다. 이 방식은, "로스트 인터레스트(lost interest)" 시나리오라고 일컬어질 수 있다. 일부 예에서, 로컬 프록시는 이러한 스케줄에서 벗어나 이뤄지는 요청을 인지하고, 이러한 요청을 "수동(manual)"이라고 간주할 수 있으며, 이들을 적절하게 처리할 수 있다.In some embodiments, local proxies (eg, device side proxies) may continue to monitor application / client polls and update polling intervals. If it changes by more than 30% (or another specified value / dynamic value / conditional value) from the current value, it is passed to the proxy server (eg server-side proxy). This approach may be referred to as a "lost interest" scenario. In some examples, the local proxy may be aware of requests made outside of this schedule and may consider these requests to be "manual" and handle them accordingly.
애플리케이션 클래스/캐싱의 Of application classes / caching 모드mode
일부 실시예에서, 애플리케이션은 3가지 캐싱 그룹 또는 모드로 구성될 수 있다. 각각의 모바일 클라이언트/애플리케이션은, 하나 이상의 조건에 따라서, 이들 모드 중 하나로서 다뤄지거나, 복수의 모드를 이용해 다뤄지도록 카테고리화될 수 있다. In some embodiments, the application may be configured in three caching groups or modes. Each mobile client / application can be categorized to be treated as one of these modes, or to be handled using multiple modes, depending on one or more conditions.
A) 완전 캐싱됨(fully cached) - 프록시 서버가 로컬 프록시에게 업데이트하라고 할 때만 로컬 프록시가 업데이트한다(가령, 애플리케이션 요청을 애플리케이션 서버/콘텐츠 호스트에 의해 서비스될 네트워크를 통해 직접 전송한다). 이 모드에서, 로컬 프록시가 수동 요청을 무시할 수 있고, 프록시 서버는 애플리케이션 서버/콘텐츠 제공자에게 폴링하도록, 검출된 자동 프로파일을 사용한다(가령, 스포츠 점수 애플릿, 페이스북(Facebook), 10, 15, 30, 또는 그 이상의 폴).A) fully cached-the local proxy updates only when the proxy server tells the local proxy to update (eg, sends an application request directly over the network to be served by the application server / content host). In this mode, the local proxy can ignore manual requests, and the proxy server uses the detected automatic profile to poll the application server / content provider (eg, sports score applet, Facebook, 10, 15, 30, or more poles).
B) 부분 캐싱됨(partially cached) - 로컬 프록시는 자동 요청(가령, 애플리케이션 자동 재생)을 위해 로컬 또는 내부 캐시를 이용하지만, 그 밖의 다른 스케줄링된 요청은 일부 수동 요청(가령, 전자메일, 다운로드, 이베이(Ebay) 또는 일부 페이스북(Facebook) 요청)을 거친다. B) Partially cached-Local proxies use local or internal caches for automatic requests (e.g., application auto-replay), while other scheduled requests may require some manual requests (e.g. email, download, Via Ebay or some Facebook requests).
C) 캐싱되지 않음(가령, 실시간 주식 시세 표시기, 스포츠 점수/상태; 그러나 일부 경우, 15분 지연된 인용은 30초 스케줄에 안전하게 놓일 수 있다 - B 또는 심지어 A)C) not cached (e.g., real-time stock ticker, sport score / status; but in some cases, a 15 minute delayed citation can be safely placed on a 30 second schedule-B or even A)
콘텐츠 변화율 및 데이터의 핵심 문자(critical character)를 기초로, 실제 애플리케이션 또는 캐싱 모드 분류가 결정될 수 있다. 디폴트로 분류되지 않은 애플리케이션은 클래스 C로 설정될 수 있다. Based on the rate of change of content and the critical characters of the data, the actual application or caching mode classification can be determined. Applications not classified by default can be set to class C.
백라이트 및 액티브 애플리케이션Backlight and Active Applications
일부 실시예에서, 로컬 프록시는 장치 백라이트 상태를 검출함으로써 시작한다. 동일한 특징(signature)을 갖는 요청이, 요청이 향하는 본래 호스트 서버/콘텐츠 서버에게 폴링하는 중인 프록시 서버에 등록되는 경우, 스크린 라이트의 '꺼진 상태(off)'에 의해 만들어지는 요청이 로컬 캐시를 사용하기 위해 허용될 수 있다. 스크린 라이트가 켜진 상태인 경우, 배경 애플리케이션인지 여부를 판단하거나, 로컬 캐시의 엔트리가 상기 요청을 만족시키기 위해 사용될 수 있는지 또는 사용될 수 없는지에 대한 그 밖의 다른 지시자(indicator)에 대한 추가 검출이 이뤄질 수 있다. 식별될 때, 어느 로컬 엔트리가 사용될 수 있는지에 대한 요청이 스크린 라이트 꺼짐 상황과 동일하게 처리될 수 있다. 캐싱된 데이터가 요청을 프로세싱하도록 사용되기에 안전할 때 전경 요청(foreground request)이 앞서 언급된 애플리케이션 분류를 사용할 수 있다. In some embodiments, the local proxy starts by detecting a device backlight state. If a request with the same signature is registered with a proxy server that is polling the original host server / content server to which the request is directed, the request made by the screen light's 'off' uses the local cache. May be allowed to do so. When the screen light is on, further detection may be made to determine whether it is a background application or other indicator of whether or not an entry in the local cache can be used to satisfy the request. have. When identified, a request for which local entry can be used may be handled the same as the screen light off situation. A foreground request may use the aforementioned application classification when cached data is safe to be used to process the request.
도 1A는 호스트 서버(가령, 도 1B-도 1C의 호스트 서버(100))로 분담될 원자 프로세스(atomic process)(190)로 그룹지어지는 장치(150)로부터 개시되는 트래픽에서 검출되는 하나의 세트의 이벤트(101, 103 및 105)를 도시하는 예시적 다이어그램이다. 1A is one set detected in traffic originating from
모바일 장치(150) 또는 그 로컬 프록시(가령, 도 1C의 프록시(175))가 장치, 가령, 모바일 장치(150)로부터 개시되는 모바일 애플리케이션 트래픽을 인터셉트(intercept)하고, 원자 프로세스(가령, 원자 프로세스(190))를 발생시키거나 생성하는 데 사용될 수 있는 다양한 파라미터를 식별할 수 있다. 원자 프로세스(190)는 모바일 장치(150)로부터의 요청을 호스트 서버(가령, 도 1 및 도 2의 예시의 겨우, 호스트 서버(100 또는 200))로 분담(offload)시키고, 따라서 모바일 네트워크 트래픽을 경감하고 빈 네트워크 자원을 내는 데 사용될 수 있다. The
일반적으로, 원자 프로세스(190)는, 검출된 패턴을 기초로 하는 서로와 관련해 일정 수준의 예측 가능성(predictability)을 가지는, 모바일 애플리케이션(108) 또는 복수의 애플리케이션(도시되지 않음)으로부터 전송되는 요청들의 한 세트, 또는 요청들의 한 세트에 대응하는 지시자를 포함할 수 있으며, 복제/시뮬레이트될 수 있다. 원자 프로세스는, 개체(101)로의 요청 후, 예측되는 시간격을 두고 또 다른 개체로의 또 다른 요청이 뒤따름이 검출될 때, 또는 개체(103)로의 요청에, 각각 예측 가능한 시간격을 두고 2개의 추가 요청이 뒤따름이 검출될 때, 생성될 수 있다. 모바일 장치(150) 및/또는 프록시 서버(가령, 도 1B-1C의 서버(100)의 프록시(125))에 의해 트래픽 패턴이 검출되고, 프록시 서버(125)에 의해 최종 원자 프로세스가 생성될 수 있으며, 이는 도 4-5의 예를 참조하여 더 설명된다. In general, the
예를 들어, 모바일 장치(150) 또는 원격 개체(remote entity), 가령, 원격 프록시(가령, 도 1B 및 도 1C의 서버(100)의 프록시 서버(125)에 의해, 예측 가능한 시간격이 검출될 수 있다. 예를 들어, 하나의 경우, 시스템은 개체(101)로의 요청이 6:00am PST에서 빈번하게 또는 항상 발생한다고 검출한다. 따라서 원자 프로세스는, 6:00am PST에서 개체(101)로의 요청을 포함하도록 생성될 수 있다. 그 후, 이러한 요청은 모바일 장치(150)로부터 개시되는 것 대시, 서버(가령, 서버(100))로 분담되어, 매일 6:00am에서 발생하는 요청을 수행하도록 할 수 있다. For example, the predictable time interval may be detected by the
또 다른 예를 들면, 시스템(가령, 도 1B 및 도 1C에 도시된 장치(150)와 서버(100) 사이의 분산 프록시 시스템)이, 개체(103)로의 요청이 발생할 때마다, 약 10분 후에 개체(105)로의 요청이 발생함을 검출할 수 있다. 따라서 분산 시스템은, 개체(103)로의 요청 및 그 10분 후 개체(105)로의 요청을 포함하는 원자 프로세스를 생성하고, 서버가 이러한 프로세스를 다루도록 분담시킬 수 있다. 생성된 원자 프로세스를 이용해, 개체(103)로의 요청이 발생할 때마다, 시스템은, 정의된 원자 프로세스를 기초로 하여, 개체(105)로의 요청이 약 10분 후에 발생할 가능성이 높음을 추론할 수 있다. 서버(100) 또는 프록시 서버(120)는 이러한 지식을 이용해, 일반적으로 모바일 장치로부터 개시될 필요가 있는 요청을 수행함으로써, 모바일 애플리케이션 활동을 복제하고, 모바일 장치를 대신하여 요청을 수행할 수 있다. 따라서 이러한 분담은, 모바일 장치 자원(가령, 전력 및 배터리), 장치 대역폭, 및 네트워크 자원(가령, 셀룰러 네트워크 자원)을 보존하는 데 유익하다. In another example, a system (eg, a distributed proxy system between the
예를 들어, 모바일 장치(250)는, 요청들의 한 세트 내 식별가능한 패턴으로부터, 모바일 애플리케이션으로부터 요청들의 세트가 생성됨을 검출하며, 상기 요청들의 세트 또는 식별 가능한 패턴을 원격 개체(가령, 프록시 서버(125) 또는 서버(100))로 전달하여, 요청들의 세트의 다음번 발생을 원격 개체로 분담시킬 수 있다. 그 후, 원격 개체는 모바일 장치상의 모바일 애플리케이션을 대신하여 요청들의 세트의 다음번 발생을 시뮬레이트할 수 있다. 모바일 애플리케이션은 임의의 모바일 클라이언트 또는 위젯(제한받지 않은 예를 들자면, 모바일 웹 브라우저, 모바일 게임, 모바일 앱(mobile app), 소셜 네트워킹 애플리케이션, 피드 애플리케이션, RSS 리더(RSS reader), 또는 상태 업데이트, 친구 피드(friend feed), 뉴스 피드(news feed), 미디어 콘텐츠(가령, 사진, 오디오, 비디오 등)를 송신/수신할 수 있는 그 밖의 다른 임의의 애플리케이션)을 포함할 수 있다. For example, mobile device 250 detects from the identifiable pattern in a set of requests that a set of requests are generated from the mobile application, and retrieves the set or identifiable pattern of requests from a remote entity (eg, a proxy server ( 125) or server 100) to share the next occurrence of the set of requests to the remote entity. The remote entity can then simulate the next occurrence of the set of requests on behalf of the mobile application on the mobile device. The mobile application can be any mobile client or widget (such as, but not limited to, mobile web browsers, mobile games, mobile apps, social networking applications, feed applications, RSS readers, or status updates, friends). Feeds, news feeds, and any other application capable of sending / receiving media content (eg, photos, audio, video, etc.).
도 1B는 무선 네트워크(또는 광대역 네트워크)에서 자원 보존을 위해, 호스트 서버(100)가, 모바일 장치(가령, 무선 장치(150))와 애플리케이션 서버 또는 콘텐츠 제공자(110), 또는 그 밖의 다른 서버(가령, 광고 서버(120A), 프로모션 콘텐츠 서버(120B), 또는 e-쿠폰 서버(120C)) 사이에서, 트래픽의 관리, 콘텐츠 캐싱, 및/또는 자원 보존을 촉진하는 시스템의 예시적 다이어그램을 도시한다. 호스트 서버는 모바일 장치에서 트래픽을 스누핑(snoop)하여 이벤트들의 세트를 검출할 수 있으며, 상기 이벤트들의 세트는, 모바일 장치로부터 애플리케이션 트래픽 요청을 분담하기 위한 원자 프로세스를 생성하기 위해 사용될 수 있다. FIG. 1B illustrates that the
클라이언트 장치(150)는, 다른 장치, 서버, 및/또는 다른 시스템(가령, 호스트 서버(100) 및/또는 애플리케이션 서버/콘텐츠 제공자(110))과 연결(가령, 유선, 무선, 셀룰러 연결)을 확립할 수 있는 임의의 시스템 및/또는 장치, 및/또는 장치/시스템의 임의의 조합일 수 있다. 일반적으로, 클라이언트 장치(150)는, 장치(150) 및/또는 호스트 서버(100) 및/또는 애플리케이션 서버/콘텐츠 제공자(110) 사이에 교환되는 정보 및 데이터를 제공하기 위한 디스플레이 및/또는 그 밖의 다른 출력 기능을 포함할 것이다. 애플리케이션 서버/콘텐츠 제공자(110)는, 제 3 자 서버 또는 서비스/콘텐츠 제공자(가령, 광고, 프로모션 콘텐츠, 퍼블리케이션, 또는 전자 쿠폰 서버 또는 서비스)를 포함하는 임의의 서버일 수 있다. 마찬가지로, 예시로서 개별적인 광고 서버(120A), 프로모션 콘텐츠 서버(120B), 및/또는 e-쿠폰 서버(120C)가 애플리케이션 서버, 또는 콘텐츠 제공자로서 도시된다.
예를 들어, 클라이언트 장치(150)가 모바일, 핸드헬드, 또는 휴대용 장치, 무선 장치, 또는 비-휴대용 장치를 포함할 수 있고, 서버 데스크톱, 데스크톱 컴퓨터, 컴퓨터 클러스터, 또는 휴대용 장치(노트북, 랩톱 컴퓨터, 핸드헬드 컴퓨터, 팜톱 컴퓨터, 모바일 폰, 셀 폰, 스마트 폰, PDA, 블랙베리(Blackberry) 장치, 팜 장치, 핸드헬드 타블릿(가령, iPad 또는 그 밖의 다른 임의의 타블릿), 핸드헬드 콘솔, 핸드헬드 게임 장치 또는 콘솔, 임의의 수퍼폰(가령, iPhone), 및/또는 그 밖의 다른 임의의 휴대용, 모바일, 핸드헬드 장치, 또는 고정회선 무선 인터페이스(가령, M2M 장치) 등 중 임의의 것일 수 있다(그러나 이에 국한되지 않음). 하나의 실시예에서, 클라이언트 장치(150), 호스트 서버(100), 및 애플리케이션 서버(110)가 네트워크(106) 및/또는 네트워크(108)를 통해 연결된다. 일부 실시예에서, 장치(150) 및 호스트 서버(100)가 서로 직접 연결될 수 있다. For example,
클라이언트 장치(150) 상의 입력 수단(input mechanism)은 터치 스크린 키패드(가령, 싱글 터치, 멀티 터치, 2D 또는 3D 제스처 감지, 등), 물리적 키패드, 마우스, 포인터, 트랙 패드, 모션 검출기(가령, 1축, 2축, 3축 가속도계 등), 광 센서, 커패시턴스 센서, 저항 센서(resistance sensor), 온도 센서, 근접도 센서(proximity sensor), 압전기 장치, 장치 배향 검출기(가령, 전자 나침반(electronic compass), 기울기 센서, 회전 센서, 자이로스코프(gyroscope), 가속도계), 또는 이들의 조합을 포함할 수 있다. Input mechanisms on the
앞서 언급된 입력 수단 또는 그 밖의 다른 수단 중 하나 이상을 통해, 클라이언트 장치(150)에서의 사용자 활동을 지시하는, 수신되거나 검출된 신호가, 본원 발명의 기술에서 클라이언트 장치(150)에서의 상황 인지(context awareness)를 획득할 때 사용될 수 있다. 일반적으로, 클라이언트 장치(150)에서의 상황 인지는, 예를 들어, 클라이언트 장치(150) 동작 또는 상태 인정, 관리, 사용자 활도/행동/상호대화 인지, 검출, 감지, 추적, 추세, 및/또는 애플리케이션(가령, 모바일 애플리케이션) 유형, 행동, 활동, 동작 상태 등을 포함한다(그러나 이에 국한되지 않음). Through one or more of the aforementioned input means or other means, a received or detected signal indicative of user activity at the
본 발명에서의 상황 인지는 네트워크 측 상황 데이터(context data)의 지식 및 검출을 포함하고, 네트워크 정보, 가령, 네트워크 수용량, 대역폭, 트래픽, 네트워크/연결 유형, 및/또는 그 밖의 다른 임의의 동작 상태 데이터를 포함할 수 있다. 네트워크 측 상황 데이터는 (가령, 호스트 서버 및/또는 장치(150)에 의해) 네트워크 서비스 제공자(가령, 셀 제공자(cell provider)(112), 및/또는 인터넷 서비스 제공자)로부터 수신, 및/또는 질의 받을 수 있다. 클라이언트(150) 측에서 결정된 바의 애플리케이션 상황 인지에 추가로, 또한 애플리케이션 상황 인지는 (호스트(100) 및/또는 클라이언트 장치(150)에 의해) 각자의 애플리케이션/서버 제공자(110)로부터 수신되거나, 획득/질의 받을 수 있다. Context awareness in the present invention includes the knowledge and detection of network side context data and includes network information, such as network capacity, bandwidth, traffic, network / connection type, and / or any other operational state. May contain data. Network-side contextual data is received and / or queried from a network service provider (eg, by the host server and / or device 150) (eg,
클라이언트 장치(150)의 데이터 수요를 만족시키기 위해(가령, 애플리케이션, 또는 그 밖의 다른 임의의 요청(가령 HTTP 요청)을 만족시키기 위해) 시스템의 트래픽을 관리하기 위해, 호스트 서버(100)는, 예를 들어, 클라이언트 장치(150), 네트워크(106/108), 애플리케이션(가령, 모바일 애플리케이션), 애플리케이션 서버/제공자(110), 또는 이들의 임의의 조합에 대해 획득된 상황 정보를 사용할 수 있다. 하나의 실시예에서, 명시적 또는 비-명시적 사용자(103) 요청 및/또는 장치/애플리케이션 유지관리 작업에 응답하여 만들어진 데이터 요청을 만족시키기 위해, 호스트 서버(100)에 의해 트래픽이 관리된다. 효율적이고 효과적인 대역폭 활용을 위해 네트워크 소비량, 예를 들어, 셀룰러 네트워크의 사용량이 보존되도록 트래픽이 관리될 수 있다. 덧붙이자면, 성능과 사용자 경험을 여전히 최적화하면서 자원 보존의 일반적인 철학에 따라 장치(150) 측 자원의 사용(가령, 배터리 전력 소모, 라디오 사용, 프로세서/메모리 사용)이 최적화되도록, 호스트 서버(100)가 시스템에서 이러한 트래픽을 관리하고 조화시킬 수 있다.In order to manage the traffic of the system to satisfy the data demands of the client device 150 (eg, to satisfy an application, or any other request (such as an HTTP request)), the
예를 들어, 배터리 보존의 맥락에서, 장치(150)는 (예를 들어, 사용자 키스트로크, 백라이트 상태를 관찰하거나 하나 이상의 입력 수단을 통해 또 다른 신호를 관찰하는 등에 의해) 사용자 활동을 관찰하거나 장치(150) 행동을 바꿀 수 있다. 또한 장치(150)는 사용자 활동 또는 행동을 기초로 하여 네트워크 자원 소모에 대한 행동을 바꾸도록 호스트 서버(100)에 요청할 수 있다.For example, in the context of battery conservation,
하나의 실시예에서, 호스트 서버(100)와 클라이언트 장치(150) 간의 분산 시스템을 이용해 자원 보존을 위한 트래픽 관리가 수행된다. 상기 분산 시스템은 서버 측(100)과 장치/클라이언트 측 상에서 프록시 서버와 캐시 구성요소를 포함할 수 있으며, 예를 들면, 서버(100) 측 상의 서버 캐시(135)와 클라이언트(150) 측 상의 로컬 캐시(185)가 있다.In one embodiment, traffic management for resource conservation is performed using a distributed system between the
네트워크(가령, 네트워크(106 및/또는 108))와 장치(150)에서의 자원 보존을 위한 상황 인지 트래픽 관리를 위해 개시된 기능 및 기법이 분산 프록시 및 캐시 시스템내에 있다. 프록시 및 캐시 시스템은 특정 클라이언트 장치(150) 및/또는 호스트 서버(100) 상에 분산 위치될 수 있다. 분산 프록시 및 캐시 시스템은 도 1B에 도시된 예시적 다이어그램을 추가로 참조하여 도시된다. 클라이언트 장치(150) 내 프록시 및 캐시 구성요소, 호스트 서버(100), 및 이들 내 관련 구성요소에 의해 수행되는 기능 및 기법이 도 2-3의 예를 추가로 참조하여 상세히 설명된다. The functions and techniques disclosed for context aware traffic management for resource conservation in the network (eg,
하나의 실시예에서, 클라이언트 장치(150)는 네트워크(106)를 통해 호스트 서버(100) 및/또는 애플리케이션 서버(110)와 통신하며, 상기 네트워크(106)는 셀룰러 네트워크 및/또는 광대역 네트워크일 수 있다. 네트워크(대역폭 이용률) 및 장치 자원(가령, 배터리 소모)을 구현하도록, 장치(150)와 다양한 애플리케이션 서버/콘텐츠 제공자(110) 간의 전체 트래픽 관리를 촉진하기 위해, 호스트 서버(100)가 네트워크(108)를 통해 애플리케이션 서버/제공자(110)와 통신할 수 있으며, 상기 네트워크(108)는 인터넷(가령, 광대역 네트워크)를 포함할 수 있다. In one embodiment,
일반적으로, 클라이언트 장치(150), 호스트 서버(100), 및/또는 애플리케이션 서버(100)가 통신하는 네트워크(106 및/또는 108)는 셀룰러 네트워크, 광대역 네트워크, 전화 네트워크, 공개 네트워크(open network)(가령, 인터넷), 또는 비공개 네트워크(가령, 인트라넷(intranet) 및/또는 익스트라넷(extranet)), 또는 이들의 임의의 조합일 수 있다. 예를 들어, 인터넷은, 임의의 알려진 또는 편리한 프로토콜(가령, TCP/IP 프로토콜, UDP, HTTP, DNS, FTP, UPnP, NSF, ISDN, PDH, RS-232, SDH, SONET 등)를 통해 파일 전송, 원격 로그인, 전자메일, 뉴스, RSS, 클라우드 기반 서비스, 인스턴트 메시징, 비주얼 음성메일(visual voicemail), 푸시 메일, VoIP, 및 그 밖의 다른 서비스를 제공할 수 있다. In general,
네트워크(106 및/또는 108)는, 클라이언트 장치(150)와 호스트 서버(100)에게 연결성(connectivity)을 제공하기 위해 전체적으로 또는 부분적으로 함께 동작하는 개별 네트워크들의 임의의 집합일 수 있으며, 서비스되는 시스템 및 장치에게 하나 이상의 네트워크로 보일 수 있다. 하나의 실시예에서, 클라이언트 장치(150)와의 통신이, 공개 네트워크, 가령 인터넷, 또는 비공개 네트워크, 광대역 네트워크, 가령, 인트라넷(intranet) 및/또는 익스트라넷(extranet)에 의해 이뤄질 수 있다. 하나의 실시예에서, 통신은, 보안 통신 프로토콜, 가령, 보안 소켓 계층(SSL: secure sockets layer), 또는 전송 계층 보안(TLS: transport layer security)에 의해 이뤄질 수 있다. The
덧붙이자면, 통신은, 하나 이상의 네트워크, 가령, WiMax, LAN(Local Area Network), WLAN(Wireless Local Area Network), PAN(Personal area network), CAN(Campus area network), MAN(Metropolitan area network), WAN(Wide area network), WWAN(Wireless wide area network), 또는 임의의 광대역 네트워크(그러나 이에 국한되지 않음)를 통해, 이뤄지고, 예를 들어, GSM(Global System for Mobile Communication), PCS(Personal Communications Service), 블루투스(Bluetooth), WiFi, 고정회선 무선 데이터(Fixed Wireless Data), 2G, 2.5G, 3G, 4G, IMT-Advanced, pre-4G, LTE Advanced, 모바일 WiMax, WiMax 2, WirelessMAN-Advanced 네트워크, EDGE(enhanced data rates for GSM evolution), GPRS(general packet radio service), enhanced GPRS, iBurst, UMTS, HSPDA, HSUPA, HSPA, UMTS-TDD, 1xRTT, EV-DO, 메시징 프로토콜(가령, TCP/IP, SMS, MMS, XMPP(extensible messaging and presence protocol), RTMP(real time messaging protocol), IMPP(instant messaging and presence protocol), 인스턴트 메시징, USSD, IRC), 또는 그 밖의 다른 임의의 무선 데이터 네트워크, 광대역 네트워크, 또는 메시징 프로토콜 등의 기법에 의해 더 활성화된다.In addition, the communication may include one or more networks, such as WiMax, local area network (LAN), wireless local area network (WLAN), personal area network (PAN), campus area network (CAN), metropolitan area network (MAN), Through a wide area network (WAN), a wireless wide area network (WWAN), or any broadband network, but not limited to, for example, Global System for Mobile Communication (GSM), Personal Communications Service (PCS) ), Bluetooth, WiFi, Fixed Wireless Data, 2G, 2.5G, 3G, 4G, IMT-Advanced, pre-4G, LTE Advanced, Mobile WiMax, WiMax 2, WirelessMAN-Advanced Network, Enhanced data rates for GSM evolution (EDGE), general packet radio service (GPRS), enhanced GPRS, iBurst, UMTS, HSPDA, HSUPA, HSPA, UMTS-TDD, 1xRTT, EV-DO, messaging protocols (e.g. TCP / IP, SMS, MMS, extensible messaging and presence protocol (XMPP), real time messaging protocol (RTMP), instant messaging and presenc e protocol), instant messaging, USSD, IRC), or any other wireless data network, broadband network, or messaging protocol.
도 1C는, 자원 보존 및 콘텐츠 캐싱을 위해, 장치(150)와 애플리케이션 서버 또는 콘텐츠 제공자(110) 또는 그 밖의 다른 서버(가령, 광고 서버(120A), 프로모션 콘텐츠 서버(120B), 또는 e-쿠폰 서버(120C)) 사이에서 네트워크 트래픽 관리를 촉진하는, 호스트 서버(100)와 장치(150) 사이에 분산되어 있는 프록시 및 캐시 시스템의 예시적 다이어그램을 도시한다. 호스트 서버(100)와 장치(150) 사이에 분산된 프록시 시스템은 모바일 장치(150)상에서 트래픽을 추가로 스누핑하여, 이벤트들의 세트를 검출할 수 있고, 상기 이벤트들의 세트는 원자 프로세스를 생성하여, 모바일 장치(150)로부터 애플리케이션 트래픽 요청을 분담시킬 수 있다. 1C illustrates an
분산 프록시 및 캐시 시스템은, 서버 측의 구성요소로서, 예를 들어, 프록시 서버(125)(가령, 원격 프록시) 및 서버 캐시(135)를 포함할 수 있다. 도시된 바와 같이, 서버 측 프록시(125) 및 캐시(135)는, 호스트 서버(100)의 내부에 위치할 수 있다. 덧붙이자면, 서버 측의 프록시 서버(125) 및 캐시(135)가 부분적으로 또는 전적으로, 호스트 서버(100)의 외부에 위치할 수 있으며, 네트워크(106 및 108) 중 하나 이상을 통해 통신한다. 예를 들어, 프록시 서버(125)가 호스트 서버 외부에 있고, 서버 캐시(135)는 호스트 서버(100)에 유지될 수 있다. 또는, 서버 캐시가 호스트 서버(100) 외부에 있는 동안, 프록시 서버(125)는 호스트 서버(100) 내에 있을 수 있다. 덧붙여, 프록시 서버(125) 및 캐시(135) 각각은, 부분적으로 호스트 서버(100) 내부에 있고, 부분적으로는 호스트 서버(100)의 외부에 있을 수 있다. 애플리케이션 서버/콘텐츠 제공자(110)는, 제3자 서버 또는 서비스/콘텐츠 제공자(가령, 광고, 프로모션 콘텐츠, 퍼블리케이션, 또는 전자 쿠폰 서버 또는 서비스)를 포함하는 임의의 서버를 포함할 수 있다. 마찬가지로, 애플리케이션 서버 또는 콘텐츠 제공자로서, 개별적인 광고 서버(120A), 프로모션 콘텐츠 서버(120B), 및/또는 e-쿠폰 서버(120C)가 도시된다.The distributed proxy and cache system may include, for example, proxy server 125 (eg, remote proxy) and
분산 시스템은, 하나의 실시예에서, 클라이언트 측 구성요소도 포함할 수 있으며, 제한받지 않는 예를 들면, 로컬 프록시(175)(가령, 모바일 장치상의 모바일 클라이언트), 및/또는 장치(150)(가령, 모바일 장치) 내부에 상주하는 로컬 캐시(185)가 있다. The distributed system, in one embodiment, may also include client-side components, including but not limited to, for example, local proxy 175 (eg, mobile client on a mobile device), and / or device 150 ( For example, there is a
덧붙이자면, 클라이언트 측 프록시(175)와 로컬 캐시(185)가 부분적으로 또는 전적으로 장치(150) 외부에 있을 수 있으며, 네트워크(106 및 108) 중 하나 이상을 통해 통신한다. 예를 들어, 로컬 프록시(175)는 장치(150) 외부에 있을 수 있고, 로컬 캐시(185)는 장치(150)에서 유지될 수 있다. 또는, 로컬 프록시(175)가 장치(150) 내에 있고, 로컬 캐시(185)가 장치(150) 외부에 있을 수 있다. 덧붙이자면, 프록시(175)와 캐시(185) 각각은, 부분적으로 호스트 서버(100) 내부에 있고, 부분적으로 호스트 서버(100) 외부에 있을 수 있다. In addition, client-side proxy 175 and
하나의 실시예에서, 분산 시스템은 선택사항적 캐싱 프록시 서버(199)를 포함할 수 있다. 상기 캐싱 프록시 서버(199)는 애플리케이션 서버/콘텐츠 제공자(110), 또는 네트워크 서비스 제공자(112), 또는 이들의 임의의 조합에 의해, 네트워크 및 장치 자원을 보존하도록 네트워크 트래픽 관리를 촉진하기 위해 동작되는 구성요소일 수 있다. 예를 들어, 애플리케이션 서버/제공자(110), 호스트 서버(100) 및/또는 네트워크 서비스 제공자(112) 중 하나 이상으로부터 캐싱 콘텐츠가 장치(150)로 제공되도록 프록시 서버(199)가 사용될 수 있다. 장치(150)에서의 애플리케이션 요청 또는 그 밖의 다른 데이터 요청을 만족시키도록, 콘텐츠 캐싱이 원격 프록시(125)에 의해 전적으로 또는 부분적으로 수행될 수 있다. In one embodiment, the distributed system may include an optional
네트워크(가령, 셀룰러 네트워크 또는 그 밖의 다른 무선 네트워크)에서의 자원 보존을 위한 상황 인지 트래픽 관리 및 최적화에서, 모바일 장치(가령, 임의의 무선 장치)(150)에서의 사용자 활동/행동의 특성 및/또는 애플리케이션 거동이, 로컬 프록시(175)에 의해 추적되고, 네트워크(106)를 통해 호스트 서버(100) 내 프록시 서버(125) 구성요소로, 예를 들면, 연결 메타데이터로서 전달될 수 있다. 그 후, 프록시 서버(125)는 애플리케이션 서버/제공자(110)로 연결되고, 콘텐츠 및 데이터를 제공하여, 장치(150)로부터의 요청을 만족시킬 수 있다. The nature of user activity / behavior in the mobile device (eg, any wireless device) 150 and / or in context-aware traffic management and optimization for resource conservation in a network (eg, a cellular network or other wireless network). Alternatively, application behavior may be tracked by the local proxy 175 and passed through the
덧붙이자면, 로컬 프록시(175)는 모바일 장치 속성(가령, 배터리 잔량, 장치가 등록된 네트워크, 라디오 상태, 또는 모바일 장치가 사용되는 중인지 여부(가령, 사용자와 상호대화 중인지 여부) 중 하나 이상)을 식별하고 불러올(retrieve) 수 있다. 일부 경우, 로컬 프록시(175)는, 프록시 서버(125)로 전송하기 전에 적절하게 데이터를 지연, 우선시(선-인출(prefetch)), 및/또는 수정할 수 있으며, 도 2-3의 예시와 관련하여 이하에서 더 상세히 설명될 것이다. In addition, the local proxy 175 may determine one or more of the mobile device properties (eg, battery level, network with which the device is registered, radio status, or whether the mobile device is in use (eg, whether or not interacting with a user)). Can be identified and retrieved In some cases, the local proxy 175 may delay, prioritize (prefetch), and / or modify the data as appropriate prior to sending it to the
로컬 데이터베이스(185)는 로컬 프록시(175)에 포함되거나 로컬 프록시(175)로 연결될 수 있고, 데이터 요청이 프록시 서버(125)로 포워딩되기 전에, 데이터 요청에 대한 로컬-저장된 응답이 질의될 수 있다. 로컬-캐싱된 응답은 로컬 프록시(175)에 의해 사용되어, 캐싱된 콘텐츠가 여전히 유효(valid)할 때 캐시 저장소(185)에 저장된 캐싱된 콘텐츠를 불러옴으로써, 모바일 장치(150)의 특정 애플리케이션 요청을 만족시킬 수 있다.
마찬가지로, 호스트 서버(100)의 프록시 서버(125)는 로컬 프록시로부터의 데이터를 콘텐츠 소스(가령, 애플리케이션 서버/콘텐츠 제공자(110))로 전송하기 전에 지연, 우선시, 또는 수정할 수 있다. 덧붙이자면, 프록시 서버(125)는 장치 속성 및 연결 메타데이터를 사용하여, 모바일 장치(150) 상의 애플리케이션의 요청을 만족시키기 위한 규칙을 생성할 수 있다. 프록시 서버(125)는, 모바일 장치(150) 또는 또 다른 모바일 장치와의 유사한 연결을 최적할 때 추후 사용하기 위해 애플리케이션의 요청에 대한 실시간 트래픽 정보를 수집할 수 있다. Similarly,
일반적으로, 로컬 프록시(175)와 프록시 서버(125)는 모바일 장치상에서 실행되는 복수의 애플리케이션에 투명(transparent)하다. 로컬 프록시(175)는 모바일 장치의 운영 체제 또는 플랫폼에 투명한 것이 일반적이며, 장치 제조업체-특정적이거나 장치 제조업체-특정적이 아닐 수 있다. 일부 경우, 선택사항으로서, 로컬 프록시(175)는 부분적으로 또는 전적으로 장치 특정적이도록 맞춤 구성(customizable)될 수 있다. 일부 실시예에서 로컬 프록시(175)는 무선 모델, 방화벽 및/또는 라우터에 내장될 수 있다.In general, local proxy 175 and
하나의 실시예에서, 일부 경우, 호스트 서버(100)는, 가령, 네트워크 서비스 제공자에 의해 제공되는 것과 같은, 네트워크 트래픽 관리를 획득할 때 장치(150)와 통신하는 단문 메시지 서비스 센터(SMSC)(112)의 저장 및 포워드(store and forward) 기능을 이용한다. 112는 그 밖의 다른 임의의 유형의 대안적 채널, 가령, USSD, 또는 그 밖의 다른 네트워크 제어 수단을 이용할 수 있다. 도 3의 예를 참조하여 추가로 설명되겠지만, 장치(150)가 이용 가능하다면 장치(150)로 자동으로 포워딩되고, 장치(150)가 현재 이용가능하지 않다면 나중에 포워딩되도록, 호스트 서버(100)는 콘텐츠 또는 HTTP 응답을 SMSC(112)로 포워딩할 수 있다. In one embodiment, in some cases,
일반적으로, 본원 발명의 분산 프록시 및 캐시 시스템은, 예를 들어, 로컬 캐시(185)로부터의 요청을 서비스함으로써 네트워크 이용의 최적화를 가능하게 하고, 로컬 프록시(175)는 네트워크(106)를 통해 만족될 필요가 있는 요청의 개수를 감소시킨다. 덧붙이자면, 로컬 프록시(175) 및 프록시 서버(125)는 통신된 데이터로부터 무관한 데이터를 필터링할 수 있다. 덧붙이자면, 또한 로컬 프록시(175) 및 프록시 서버(125)는 낮은 우선순위 데이터를 축적하고, 이를 일괄적으로(in batch) 전송하여, 개별 데이터 프래그먼트를 전송하는 프로토콜 오버헤드를 피한다. 로컬 프록시(175) 및 프록시 서버(125)는 또한 트래픽을 압축 또는 트랜스코딩(transcode)하여, 네트워크(106 및/또는 108)를 통해 전송되는 데이터의 크기를 감소한다. 네트워크가 덜 사용되고 개별 애플리케이션들 간에 네트워크 트래픽이 동기화될 수 있음으로써, 네트워크(106 및/또는 108)에서의 시그널링 트래픽이 감소될 수 있다. In general, the distributed proxy and cache system of the present invention enables optimization of network usage, for example by servicing requests from
모바일 장치(150)의 배터리 수명과 관련하여, 로컬 캐시(185)로부터의 애플리케이션 또는 콘텐츠 요청을 서비스함으로써, 로컬 프록시(175)는 라디오 모듈이 켜지는(power up) 횟수를 감소시킬 수 있다. 로컬 프록시(175)와 프록시 서버(125)는, 낮은 우선순위 데이터를 축적하고, 라디오가 켜지는 횟수 및/또는 시간을 감소시키도록 상기 데이터를 일괄적으로 전송하기 위해 결합하여 동작할 수 있다. 로컬 프록시(175)는 모든 연결에 대해 동시에 일괄 방식 데이터 전송을 수행함으로써 네트워크 사용을 동기화할 수 있다. With regard to the battery life of
도 2A는 자원 보존, 콘텐츠 캐싱, 및/또는 트래픽 관리를 위해 무선 네트워크의 트래픽을 관리하는 장치(250)에 위치하는 분산 프록시 및 캐시 시스템 내 클라이언트-특 구성요소의 일례를 도시하는 블록도를 도시한다. 클라이언트 측(client-side) 프록시(또는 로컬 프록시(275))는 추가로 모바일 트래픽을 카테고리화하고, 및/또는 애플리케이션 거동, 콘텐츠 우선순위, 사용자 활동, 및/또는 사용자 기대를 기초로 하는 전달 정책(delivery policy)을 구현할 수 있다. 2A shows a block diagram illustrating an example of a client-specific component in a distributed proxy and cache system located in an apparatus 250 that manages traffic of a wireless network for resource conservation, content caching, and / or traffic management. do. Client-side proxy (or local proxy 275) further categorizes mobile traffic and / or delivery policy based on application behavior, content priority, user activity, and / or user expectations. (delivery policy) can be implemented.
휴대용 전화기와 같은 휴대용 또는 모바일 장치(가령, 임의의 무선 장치)일 수 있는 장치(250)는, 예를 들어, 네트워크 인터페이스(208), 운영 체제(204), 상황 API(206), 및 모바일 애플리케이션을 포함하며, 프록시-비인지형(proxy-unaware)(210)이거나 프록시-인지형(proxy-aware)(220)일 수 있는 것이 일반적이다. 장치(250)는 도 2의 예에서 특정하게 모바일 장치로서 도시되지만, 이렇게 한정되는 것은 아니며, 장치(250)는 유선 네트워크 또는 무선 네트워크를 포함해 네트워크(가령, WiFi, 셀룰러, 블루투스(Bluetooth), LAN, WAN 등)를 통한 데이터 요청을 만족시키기 위해 신호를 수신하고 송신할 수 있는 임의의 무선, 광대역, 휴대용/모바일 또는 비-휴대용 장치일 수 있다.Device 250, which may be a portable or mobile device (eg, any wireless device), such as a portable telephone, may include, for example, network interface 208,
네트워크 인터페이스(208)는 장치(250)가 네트워크에서 호스트 및 외부 개체에 의해 지원되는 임의의 알려진 및/또는 종래의 통신 프로토콜을 통해, 호스트 서버(250) 외부에 있는 개체와 데이터를 중재(mediate)할 수 있도록 해주는 네트워킹 모듈일 수 있다. 상기 네트워크 인터페이스(208)는, 네트워크 어댑터 카드(network adaptor card), 무선 네트워크 인터페이스 카드(가령, SMS 인터페이스, WiFi 인터페이스, 2G, 3G, 3.5G, 4G, LTE, 등(그러나 이에 국한되지 않음)의 다양한 세대의 모바일 통신 표준을 위한 인터페이스), 블루투스, 또는 연결이 라우터를 거치는지의 여부에 무관하게, 액세스 포인트, 무선 라우터, 스위치, 멀티레이어 스위치, 프로토콜 컨버터, 게이트웨이, 브리지, 브리지 라우터, 허브, 디지털 미디어 수신기, 및/또는 리피터(repeater)를 포함할 수 있다. Network interface 208 mediates the objects and data external to host server 250 via device 250 via any known and / or conventional communication protocols supported by hosts and external entities in the network. It can be a networking module that allows you to do that. The network interface 208 may include a network adapter card, a wireless network interface card (e.g., but not limited to, SMS interface, WiFi interface, 2G, 3G, 3.5G, 4G, LTE, etc.). Interface for different generations of mobile communication standards), Bluetooth, or whether the connection goes through a router, access point, wireless router, switch, multilayer switch, protocol converter, gateway, bridge, bridge router, hub, digital Media receivers, and / or repeaters.
장치(250)는, 로컬 프록시(275)(가령, 모바일 장치의 모바일 클라이언트) 및 캐시(285)를 포함할 수 있는 분산 프록시 및 캐시 시스템의 클라이언트 측(client-side) 구성요소를 더 포함할 수 있다. 하나의 실시예에서, 로컬 프록시(275)는 사용자 활동 모듈(215), 프록시 API(225), 요청/트랜잭션 관리기(235), 애플리케이션 프로토콜 모듈(248)을 갖는 캐싱 정책 관리기(245), 트래픽 성형 엔진(traffic shaping engine)(255), 및/또는 연결 관리기(265)를 포함한다. 트래픽 성형 엔진(255)은 정렬 모듈(alignment module)(256) 및/또는 일괄처리 모듈(batching module)(257)을 더 포함할 수 있고, 연결 관리기(265)는 라디오 제어기(266)를 더 포함할 수 있다. 요청/트랜잭션 관리기(235)는 애플리케이션 거동 검출기(application behavior detector)(236) 및/또는 우선순위화 엔진(prioritization engine)(241)을 더 포함할 수 있고, 애플리케이션 거동 검출기(236)는 패턴 검출기(237) 및/또는 애플리케이션 프로파일 생성기(239)를 더 포함할 수 있다. 이보다 더 많거나 더 적은 구성요소/모듈/엔진이 로컬 프록시(275) 및 각각의 예시적 구성요소에 포함될 수 있다. Device 250 may further include client-side components of a distributed proxy and cache system that may include a local proxy 275 (eg, a mobile client of a mobile device) and a
본원에서 사용될 때, "모듈", "관리기", "핸들러", "검출기", "인터페이스", "제어기", "정규화기(normalizer)", "생성기", "무효화기(invalidator)", 또는 "엔진"은 범용, 전용, 또는 공유 프로세서를 포함하고, 일반적으로 프로세서에 의해 실행되는 펌웨어 또는 소프트웨어 모듈을 포함한다. 구현예 특정적, 또는 그 밖의 다른 고려사항에 따라, 모듈, 관리기, 핸들러, 검출기, 인터페이스, 제어기, 정규화기, 생성기, 무효화기, 또는 엔진이 중앙 집중(centralize)되거나, 각자의 기능들이 분산될 수 있다. 모듈, 관리기, 핸들러, 검출기, 인터페이스, 제어기, 정규화기, 생성기, 무효화기, 또는 엔진은, 프로세서에 의해 실행되기 위해 컴퓨터-판독형(저장) 매체로 구현되는 범용 또는 특수 하드웨어, 펌웨어, 또는 소프트웨어를 포함할 수 있다.As used herein, a "module", "manager", "handler", "detector", "interface", "controller", "normalizer", "generator", "invalidator", or An "engine" includes a general purpose, dedicated, or shared processor, and generally includes firmware or software modules executed by the processor. Depending on implementation specific or other considerations, modules, managers, handlers, detectors, interfaces, controllers, normalizers, generators, invalidators, or engines may be centralized or their functions distributed. Can be. A module, manager, handler, detector, interface, controller, normalizer, generator, invalidator, or engine is general or special hardware, firmware, or software implemented as a computer-readable medium for execution by a processor. It may include.
본원에서 사용될 때, 컴퓨터 판독형 매체, 또는 컴퓨터 판독형 저장 매체는 법령(가령, 미국에서는, 35 U.S.C. 101)으로 명시된 모든 매체를 포함하며, 컴퓨터 판독형(저장) 매체를 포함하는 청구항이 유효하기 위한 범위까지 모든 비법정 매체는 특정하게 배제하는 것으로 의도된다. 알려진 법정 컴퓨터 판독형 매체는 하드웨어(가령, 레지스터, 랜덤 액세스 메모리(RAM), 비휘발성(NV) 저장장치 등)를 포함하지만, 이러한 하드웨어로 반드시 한정되는 것은 아니다. As used herein, computer readable media, or computer readable storage media, includes all media specified by legislation (eg, 35
하나의 실시예에서, 분산 프록시 및 캐시 시스템의 네트워크 트래픽 관리용 부분은 로컬 프록시(275)(모바일 클라이언트) 및/또는 캐시(285)를 포함하는 장치(250) 내에 있거나, 상기 장치(250)와 통신할 수 있다. 로컬 프록시(275)는 사용자가 장치 애플리케이션 및 서비스(가령, 전자메일, IM, 음성 메일, 시각 음성메일(visual voicemail), 피드, 인터넷, 게임, 생산성 툴(productivity tool), 또는 그 밖의 다른 애플리케이션 등)를 액세스할 수 있도록 하는 장치(250) 상의 인터페이스를 제공할 수 있다. In one embodiment, the portion for network traffic management of the distributed proxy and cache system is in, or includes, a device 250 that includes a local proxy 275 (mobile client) and / or
프록시(275)는 일반적으로 애플리케이션 독립적이며, 원격 서버(가령, 도 1A-1B의 예에서 서버(100), 및/또는 도 1B 및 도 3A의 예에서 서버 프록시(125/325))로의 TCP 연결을 개방하기 위해 애플리케이션(가령, 프록시-인지형 및 프록시-비인지형 애플리케이션(210 및 220) 둘 모두, 또는 모바일 애플리케이션)에 의해 사용될 수 있다. 일부 경우, 로컬 프록시(275)는, 선택사항으로서 프록시-인지형 애플리케이션(220)(또는 모바일 장치(가령, 임의의 무선 장치) 상의 애플리케이션(가령 모바일 애플리케이션))과 인터페이싱하도록 사용될 수 있는 프록시 API(225)를 포함한다. The
일반적으로, 애플리케이션(210 및 220)은 임의의 사용자 애플리케이션, 위젯(widget), 소프트웨어, HTTP-기반 애플리케이션, 웹 브라우저, 비디오 또는 그 밖의 다른 멀티미디어 스트리밍 또는 다우로딩 애플리케이션, 비디오 게임, 소셜 네트워크 애플리케이션, 전자메일 클라이언트, RSS 관리 애플리케이션, 애플리케이션 스토어(application store), 문서 관리 애플리케이션, 생산성 강화 애플리케이션 등을 포함할 수 있다. 애플리케이션은 장치 제조업체에 의해, 또는 네트워크 서비스 제공자에 의해, 장치 OS와 함께 제공되거나, 사용자에 의해 다운로드되거나, 그 밖의 다른 방식으로 제공될 수 있다. In general,
한 실시예의 로컬 프록시(275)는 도시된 바와 같이 상황 API(206)를 포함하거나, 상기 상황 API(206)로 연결된다. 상황 API(206)는 운영 체제(204) 또는 장치 플랫폼의 일부이거나, 도시된 것처럼 운영 체제(204)에 독립적일 수 있다. 운영 체제(204)는 임의의 운영 체제를 포함할 수 있으며, 제한되지 않는 예를 들면, Windows Mobile, iOS, Android, Symbian, Palm OS, Brew MP, Java 2 Micro Edition (J2ME), Blackberry, 등의 임의의 과거, 현재, 및/또는 미래 버전/판일 수 있다. The
상황 API(206)는 장치(205)의 운영 체제(204) 또는 특정 클라이언트/애플리케이션의 플러그-인(plug-in)일 수 있다. 상황 API(206)는 사용자 또는 장치 활동(가령, 모션, 제스처, 장치 위치, 장치 위치의 변화, 장치 백라이트, 키스트로크(keystroke), 클릭, 활성된 터치 스크린, 마우스 클릭의 감지 또는 그 밖의 다른 포인터 장치의 검출)을 나타내는 신호를 검출할 수 있다. 상황 API(206)는 장치(250) 상의 입력 장치 또는 센서로 연결되어, 이들 신호를 식별할 수 있다. 일반적으로 이러한 신호는, 장치(250)의 입력 장치/수단에서의 명시적 사용자 입력(explicit user input)에 응답하여 수신된 입력, 및/또는 장치(250)에서 또는 그 주변에서 검출된 주변 신호/상황 큐(contextual cue)(가령, 빛, 모션(motion), 압전기 등)로부터 수집된 입력을 포함할 수 있다. The
하나의 실시예에서, 장치(250)에서의 사용자 활동의 특성을 식별, 결정, 추론, 검출, 계산, 예측, 및/또는 예상하기 위해, 사용자 활동 모듈(215)은 상황 API(206)와 상호대화한다. 사용자 활동의 특성에 대한 프로파일을 생성하기 위해, 상황 API(206)에 의해 수집된 다양한 입력이 사용자 활동 모듈(215)에 의해 집합화(aggregate)될 수 있다. 이러한 프로파일은 다양한 시간적 특성(temporal characteristic)을 갖고 사용자 활동 모듈(215)에 의해 생성될 수 있다. 예를 들어, 특정 경우 특정 시간(가령, 시간 윈도(time window)로 지정된 시간, 마지막 1분, 마지막 30초 등)에서 사용자가 하고 있는 것 또는 하지 않는 것의 뷰를 제공하기 위해, 사용자 활동 프로파일이 실시간으로 생성될 수 있으며, 또한 사용자 활동 프로파일은, 장치(250)에서 관련되는 특정 작업에 대한, 또는 특정 시간 주기(가령, 마지막 2시간, 마지막 5시간)에 대한 사용자 행동의 특성을 기술하는 애플리케이션 또는 웹 페이지에 의해 정의된 '세션(session)'에 대해 생성될 수 있다.In one embodiment, the
덧붙이자면, 사용자 활동 및 행동에 대한 추세 히스토리(historical trend)(가령, 1주, 1개월, 2개월 등)를 묘사하기 위해 사용자 활동 모듈(215)에 의해 특성 프로파일(characteristic profile)이 생성될 수 있다. 이러한 프로파일 히스토리가 사용되어, 사용자 행동의 추세(예를 들어, 여러 다른 시각에서의 액세스 빈도, 일주일의 특정 요일(주말 또는 평일)에 대한 추세, 위치 데이터(가령, IP 주소, GPS, 또는 셀 기지국 좌표 데이터)를 기초로 하는 사용자 활동 추세, 또는 위치 데이터의 변화를 기초로 하는 사용자 활동 추세(가령, 사용자 위치를 기초로 하는 사용자 활동, 또는 사용자가 나가려던 중인지 외출 중인지 등을 기초로 하는 사용자 활동))를 추론할 수 있어서, 사용자 활동 특성을 획득할 수 있다. In addition, a characteristic profile may be generated by the
하나의 실시예에서, 사용자 활동 모듈(215)은 장치(250) 상의 애플리케이션, 문서, 파일, 창, 아이콘, 및 폴더와 관련해, 사용자 활동을 검출하고 추적할 수 있다. 예를 들어, 사용자 활동 모듈(215)은 애플리케이션 또는 창(가령, 웹 브라우저 또는 그 밖의 다른 임의의 유형의 애플리케이션)이 활성화될 때, 닫힐 때, 최소화될 때, 최대화될 때, 열릴 때, 전경(foreground)으로 이동될 때, 배경(background)으로 이동될 때, 멀티미디어 콘텐츠가 재생될 때 등을 검출할 수 있다. In one embodiment,
하나의 실시예에서, 자원 소모, 가령, 배터리/전력 소모를 최적화하기 위해, 그리고 더 일반적으로는, 그 밖의 다른 장치 자원(가령, 메모리, 저자장치, 및 프로세싱 파워)의 소모를 최적화하기 위해, 장치(250) 상의 사용자 활동의 특성은 장치(가령, 모바일 장치 또는 임의의 무선 장치)의 행동을 로컬하게 조절하도록 사용될 수 있다. 하나의 실시예에서, (가령, 연결 관리기(265)의 라디오 제어기(266)에 의해) 사용자 활동 모듈(215)로 연결되는 사용자 행동의 특성을 기초로 하여 장치에서의 라디오의 사용이 조절될 수 있다. 예를 들어, 라디오 제어기(266)는 장치(250)에서의 사용자 활동의 특성을 기초로 하여, 라디오를 끄거나 켤 수 있다. 덧붙이자면, 사용자 활동의 특성에 따라, 라디오 제어기(266)는 라디오의 파워 모드(가령, 더 높은 파워 모드 또는 더 낮은 파워 모드이도록)를 조절할 수 있다.In one embodiment, to optimize resource consumption, such as battery / power consumption, and more generally, to optimize the consumption of other device resources (eg, memory, authoring, and processing power), Characteristics of user activity on device 250 may be used to locally adjust the behavior of the device (eg, mobile device or any wireless device). In one embodiment, the use of the radio in the device may be adjusted based on the nature of the user behavior connected to the user activity module 215 (eg, by the
하나의 실시예에서, 장치(250)에서의 사용자 활동의 특성이 사용되어, (가령, 셀룰러 또는 또 다른 네트워크를 통해) 장치(250)와 통신할 수 있는 또 다른 장치(가령, 또 다른 컴퓨터, 모바일 장치, 무선 장치, 또는 비-휴대용 장치(non-portable device)) 또는 서버(가령, 도 1A-B 및 도 3A의 예에서 호스트 서버(100 및 300))가 자신의 장치(250)와의 통신 빈도(communication frequency)를 수정하도록 할 수 있다. 원격 장치에게 자신의 통신 빈도를 변조하는 방식(가령, 통신 빈도의 감소, 가령, 사용자가 유휴 상태인 경우 데이터 푸시 빈도의 감소, 새로운 데이터, 변경된 데이터, 또는 특정 중요도의 데이터가 이용 가능해지는 경우 등, 원격 장치가 장치(250)에게 통지하도록 요청하는 등)에 대해 지시하기 위해, 로컬 프록시(275)는 사용자 활동 모듈(215)에 의해 결정된 사용자 행동의 특성 정보를 사용할 수 있다.In one embodiment, another device (eg, another computer, capable of communicating with device 250) may be used (eg, via a cellular or another network) to use characteristics of user activity at device 250. A mobile device, wireless device, or non-portable device or server (eg,
하나의 실시예에서, 사용자 활동 모듈(215)은, 사용자 활동 특성이 사용자가 비활성 주기 후 활성 상태임을 지시한다고 판단한 것에 응답하여, 원격 장치(가령, 도 1A-B 및 도 3A의 예에서 서버 호스트 서버(100 및 300))가 이전에 감소된 통신 빈도의 결과로서 버퍼링된 데이터를 전송하도록 요청할 수 있다.In one embodiment, the
이에 추가로, 또는 이를 대체하여, 로컬 프록시(275)가 장치(250)에서의 사용자 활동의 특성을 원격 장치(가령, 도 1A-B 및 도 3A의 예에서, 호스트 서버(100 및 300))로 통신할 수 있고, 원격 장치는 네트워크 자원 보존과 장치(250) 자원의 보존을 위해 장치(250)와 관련된 자신 고유의 통신 주파수를 변경하는 방식을 결정한다.In addition to or in place of this, the
로컬 프록시(275)의 하나의 실시예는, 예를 들어, 애플리케이션(210 및/또는 220)에 의해, 및/또는 직접/간접적으로 사용자 요청에 의해, 장치(250)에서 개시되는 데이터 요청을 검출, 식별, 인터셉트, 프로세싱, 관리할 수 있는 요청/트랜잭션 관리기(235)를 더 포함한다. 요청/트랜잭션 관리기(235)는 트랜잭션 특성을 기초로하여 특정 요청 또는 트랜잭션(또는 요청/트랜잭션의 세트)을 처리하는 방식과 시점을 결정할 수 있다.One embodiment of
요청/트랜잭션 관리기(235)는 장치(250)에서 애플리케이션 및/또는 사용자에 의해 이뤄진 요청 또는 트랜잭션을, 가령 우선수위화 엔진(241)에 의해 우선순위화할 수 있다. 요청/트랜잭션의 중요도 또는 우선순위는 요청/트랜잭션 관리기(235)에 의해, 예를 들어, 트랜잭션의 시간 민감도(time sensitivity), 트랜잭션에서의 콘텐츠의 시간 민감도, 또는 트랜잭션의 시간 중요도(time criticality), 트랜잭션에 의해 전송되는 데이터의 시간 중요도, 및/또는 요청을 하는 애플리케이션의 시간 중요도 또는 중요도에 따르는 규칙 세트를 적용함으로써 결정될 수 있다. Request /
덧붙이자면, 트랜잭션 특성은, 트랜잭션이 사용자-상호대화 또는 그 밖의 다른 사용자에 의해 장치에서 개시되는 동작(가령, 애플리케이션(가령, 모바일 애플리케이션)과의 사용자 상호대화)의 결과인지 여부에 따를 수 있다. 일반적으로, 시 중요성(time critical) 트랜잭션은 사용자에 의해 개시되는 데이터 전송으로부터 야기된 트랜잭션을 포함할 수 있고, 이에 따라 우선순위화될 수 있다. 트랜잭션 특성은, 요청된 트랜잭션의 결과로서 전송되는, 또는 전송될 것으로 예상되는 데이터의 크기에 따라 달라질 수 있다. 예를 들어, 연결 관리기(265)는 전송될 필요가 있을 데이터의 크기를 기초로 하여 라디오 모드(가령, 라디오 제어기(266)를 통해 높은 전력 또는 낮은 전력 모드)를 조절할 수 있다. In addition, the transaction characteristics may depend on whether the transaction is the result of user-interaction or other user initiated operation on the device (eg, user interaction with an application (eg, a mobile application)). In general, a time critical transaction may include a transaction resulting from a data transmission initiated by a user and may be prioritized accordingly. The transaction characteristics may vary depending on the size of the data transmitted as or expected to be transmitted as a result of the requested transaction. For example, the
덧붙이자면, 라디오 제어기(266)/연결 관리기(265)는, 트랜잭션의 시간 중요도/민감도를 기초로 하여, 라디오 전력 모드(고전력 또는 저전력 모드)를 조절할 수 있다. 라디오 제어기(266)는 시 중요성 트랜잭션(가령, 사용자에 의해 개시되는 데이터 전송, 전경에서 실행 중인 애플리케이션, 특정 기준을 충족하는 임의의 그 밖의 다른 이벤트로부터 야기된 트랜잭션)이 개시되거나 검출될 때 고전력 라디오 모드를 트리거할 수 있다. In addition, the
일반적으로, 우선순위는, 예를 들어, 장치 플랫폼, 장치 제조업체, 운영 체제 등을 기초로 하여, 디폴트(default)로 설정될 수 있다. 이에 추가로, 또는 이를 대체하여, 우선순위는 특정 애플리케이션에 의해 설정될 수 있으며, 가령, 페이스북(Facebook) 애플리케이션(가령, 모바일 애플리케이션)이 다양한 트랜잭션에 대헤 자신 고유의 우선순위를 설정할 수 있고(가령, 상태 업데이트가 친구 추가 요청이나 콕 찔러보기(poke) 요청보다 더 높은 우선순위를 가질 수 있고, 메시지 전송 요청은 메시지 삭제 요청보다 저 높은 우선순위를 가질 수 있다), 전자메일 클라이언트 또는 IM 챗 클라이언트가 우선순위에 대해 자신 고유 설정을 가질 수 있다. 우선순위화 엔진(241)은 우선순위를 할당하기 위한 규칙의 세트를 포함할 수 있다. In general, the priority may be set to default, for example based on device platform, device manufacturer, operating system, and the like. In addition to or in place of this, priorities may be set by specific applications, such as Facebook applications (eg mobile applications) may set their own priorities for various transactions ( For example, a status update may have a higher priority than a friend add request or a poke request, and a message transfer request may have a higher priority than a message delete request), an email client or IM chat. Clients can have their own settings for priority.
또한 우선순위화 엔진(241)은 요청/트랜잭션에 대한 전체 우선순위 상태를 결정할 때, 네트워크 제공자 제한(limitation) 또는 상세사항(specification)을 추적할 수 있다. 덧붙여, 우선순위는 명시적으로 또는 묵시적으로 사용자 선호도에 의해 부분적으로 또는 전적으로 결정될 수 있다. 사용자는, 일반적으로, 서로 다른 티어(tier)에서의 우선순위, 가령, 세션, 유형, 또는 애플리케이션에 대해 특정 우선순위를 설정할 수 있다(가령, 브라우징 세션 vs. 게임 세션 vs. IM 채팅 세션, 사용자가 게임 세션을 IM 챗 세션보다 항상 높은 우선순위를 갖도록 설정할 수 있고, IM 챗 세션은 웹 브라우징 세션보다 높은 우선순위를 가질 수 있다). 사용자는 애플리케이션 특정 우선순위(가령, 사용자는 페이스북(Facebook)-관련 트랜잭션을 링크드인(LinkedIn)-관련 트랜잭션보다 높은 우선순위를 갖도록 설정할 수 있음)를 특정 트랜잭션 유형에 대해 설정(가령, 모든 애플리케이션들 간 모든 메시지 전송 요청은 메시지 삭제 요청보다 더 높은 우선순위를 갖고, 모든 일정(calendar)-관련 이벤트는 높은 우선순위를 갖도록 하는 등)하거나, 및/또는 특정 폴더에 대해 애플리케이션 특정 우선순위를 설정할 수 있다. The
우선순위화 엔진(241)은 서로 다른 개체에 의해 설정된 우선순위들 간 충돌을 추적하고 해결할 수 있다. 예를 들어, 사용자에 의해 특정되는 수동 설정이 장치 OS 설정보다 우선시될 수 있고, 네트워크 제공자 파라미터/제한(가령, 네트워크 서비스 영역, 지리적 현장에 대해 디폴트로 설정된 것, 특정 시각에 대해 설정된 것, 또는 서비스/요금 유형을 기초로 설정된 것)이 임의의 사용자 특정된 설정 및/또는 애플리케이션 설정 우선순위를 제한할 수 있다. 일부 경우, 사용자로부터 수신된 수동 동기화 요청은, 요청된 동작에 대해 개별 할당된 우선순위 또는 전체 우선순위 등급에 무관하게, 요청된 동기화가 요청될 때 수행되는, 일부, 대부분, 또는 모든 우선순위 설정을 무효화(override)할 수 있다.The
우선순위는, 임의의 알려진 및/또는 종래의 방식(제한받지 않는 예를 들면, 이진 표현, 다가 표현(multi-valued representation), 등급별 표현(graded representation))으로 내부적으로 특정되고 추적될 수 있으며, 모두 본 발명의 기술의 범위 내에 있는 것으로 고려된다. Priorities may be internally specified and tracked in any known and / or conventional manner (e.g., without limitation, binary representations, multi-valued representations, graded representations), All are considered to be within the scope of the present technology.
표 1Table 1
표 1은, 설명을 목적으로, 이진 표현 스킴으로 할당된 우선순위들의 예시를 갖는 트랜잭션의 일부 예를 나타낸다. 추가적인 유형의 이벤트, 요청, 트랜잭션에 대해, 그리고 앞서 설명한 바와 같이, 추가적인 할당이 가능하며, 우선순위 할당은 더 높거나 낮은 입도 레벨(granular level)에서, 가령, 세션 레벨 또는 애플리케이션 레벨 등에서 이뤄질 수 있다. Table 1 shows some examples of transactions with examples of priorities assigned to a binary representation scheme for purposes of explanation. For additional types of events, requests, transactions, and as previously described, additional assignments are possible, and priority assignments can be made at higher or lower granular levels, such as at the session level or application level. .
상기의 표의 예에서 나타나는 것처럼, 일반적으로 더 낮은 우선순위의 요청/트랜잭션은, 메시지 상태를 읽음, 읽지 않음으로 업데이트하기, 메시지 삭제하기, 연락처 삭제하기가 있고, 더 높은 우선순위의 요청/트랜잭션은, 일부 경우에서, 상태 업데이트, 새 IM 챗 메시지, 새 전자메일, 일정 이벤트 업데이트/취소/제거, 모바일 게임 세션 내 이벤트, 또는 그 밖의 다른 엔터테인먼트 관련 이벤트, 웹 구매 또는 온라인을 통한 구매 확인, 추가 로딩 또는 콘텐츠 다운로드 요청하기, 연락처 관련 이벤트, 장치 설정을 변경하기 위한 트랜잭션, 위치-인지형 또는 위치 기반 이벤트/트랜잭션, 또는 사용자에 의해 개시되거나 사용자가 응답을 기다리고 있다고 알려지거나 예상되거나 추측되는 그 밖의 다른 임의의 이벤트/요청/트랜잭션을 포함할 수 있다. As shown in the example of the table above, generally lower priority requests / transactions include reading message status, updating to unread, deleting messages, deleting contacts, and higher priority requests / transactions. , In some cases, status updates, new IM chat messages, new emails, update / cancel / remove calendar events, events in mobile game sessions, or other entertainment-related events, purchases made via web or online, and additional loading Or requesting content downloads, contact-related events, transactions to change device settings, location-aware or location-based events / transactions, or other initiation, known, expected or inferred by the user waiting for a response. It can include any event / request / transaction.
수신함 가지치기(inbox pruning) 이벤트(가령, 전자메일, 또는 그 밖의 다른 임의의 유형의 메시지)는 일반적으로 낮은 우선순위라고 여겨지며, 그 밖의 다른 임박한 이벤트가 없다면, 장치(250) 상의 라디오의 사용을 트리거하지 않을 것이다. 구체적으로, 스케줄링된 가지치기 이벤트가 발생할 때, 오래된 전자메일 또는 그 밖의 다른 콘텐츠를 삭제하는 가지치기 이벤트에, 다른 경우라면 라디오가 켜지지 않을 그 밖의 다른 통신이 '업힐 수 있다(piggy backed)'. 예를 들어, 사용자가 '메시지를 7일 동안 보관'으로 설정된 선호도를 가진다면, 메시지가 7일째를 초과한 때 장치(250)에서 메시지 삭제를 개시하기 위해 장치 라디오를 켜는 대신, 다음 번 라디오가 켜질 때 메시지가 삭제된다. 라디오가 이미 켜져 있는 경우, 가지치기는 정규 스케줄대로 발생할 수 있다. Inbox pruning events (e.g., e-mail, or any other type of message) are generally considered low priority, and if there are no other impending events, the use of radio on device 250 is disabled. Will not trigger. Specifically, when a scheduled pruning event occurs, a pruning event that deletes old email or other content may 'piggy backed' other communications that would otherwise not turn on the radio. For example, if a user has a preference set to 'Keep message for seven days', the next radio will be turned on instead of turning on the device radio to initiate message deletion on device 250 when the message exceeds the seventh day. The message is deleted when it is turned on. If the radio is already on, pruning can occur on a regular schedule.
장치(250)로부터 나가는 트래픽을 자원 최적화를 위해 관리하기 위해(가령, 장치 라디오를 배터리 보존을 위해 더 효율적으로 사용하기 위해) 요청/트랜잭션 관리기(235)는 요청(가령, 우선순위화 엔진(241)에 의한 요청)에 대한 우선순위를 사용할 수 있다. 예를 들어, 연결 관리기(265)에 의해 제어될 때, 장치(250) 상에서의 라디오가 이미 스위치-온되어 있지 않은 경우, 특정 우선순위 등급 이하의 트랜잭션/요청이 라디오의 사용을 트리거할 수 있다. 이와 달리, 트랜잭션에 대한 요청이 특정 우선순위 레벨 이상이라고 검출될 때 상기 요청이 전송될 수 있도록, 라디오 제어기(266)가 라디오를 켤 수 있다. To manage the outgoing traffic from device 250 for resource optimization (eg, to use device radio more efficiently for battery conservation), request /
하나의 실시예에서, 우선순위 할당(가령, 로컬 프록시(275) 또는 또 다른 장치/개체에 의해 결정되는 우선순위 할당)이 사용되어, 원격 장치가 모바일 장치 또는 무선 장치와의 통신의 빈도를 수정할 수 있다. 예를 들어, 더 높은 중요도의 데이터가 모바일 장치나 무선 장치로 전송될 수 있을 때 원격 장치는 장치(250)에게 통지를 전송하도록 구성될 수 있다. In one embodiment, priority assignment (eg, priority assignment determined by the
하나의 실시예에서, 예를 들어, 트래픽 성형 엔진(255)에 의해, 트래픽을 성형하거나 관리할 때 트랜잭션 우선순위가 사용자 활동의 특성과 함께 사용될 수 있다. 예를 들어, 트래픽 성형 엔진(255)은, 사용자가 휴지기 즉 비활성 상태임을 검출한 것에 응답하여, 상기 장치(250)로부터 낮은 우선순위의 트랜잭션을 전송하기를 일정 시간 동안 기다릴 수 있다. 덧붙이자면, 트래픽 성형 엔진(255)에 의해, 복수의 낮은 우선순위 트랜잭션이 축적되어, (가령, 일괄처리 모듈(257)을 통해) 장치(250)로부터 일괄 전송(batch transferring)될 수 있다. 하나의 실시예에서, 사용자에 의해 우선순위가 설정, 구성, 또는 재조절될 수 있다. 예를 들어, 표 1에 기재된 콘텐츠는 장치(250)의 사용자 인터페이스에서 동일하거나 유사한 형태로 액세스될 수 있으며, 예를 들어, 우선순위를 조절하거나 보기 위해 사용자에 의해 사용될 수 있다. In one embodiment, for example, by
일괄처리 모듈(257)은 특정 기준에 따라 일괄 전송을 개시할 수 있다. 예를 들어, 일괄 전송(가령, 발생된 복수의 이벤트의 일괄 전송이 있으며, 여기서 일부 이벤트는 서로 다른 때에 발생함)은, 특정 횟수의 낮은 우선순위 이벤트가 검출된 후, 또는 첫 번째 낮은 우선순위 이벤트가 개시되고 일정 시간이 흐른 후, 발생할 수 있다. 덧붙이면, 장치(250)에서 더 높은 우선순위 이벤트가 개시되거나 검출될 때, 일괄처리 모듈(257)이 누적된 낮은 우선순위 이벤트들의 일괄 전송을 개시할 수 있다. 또 다른 이유로(가령, 원격 장치, 가령, 호스트 서버(100 또는 300)로부터 데이터를 수신하기 위해) 라디오 사용이 트리거될 때 일괄 전송은 다른 방식으로 개시될 수 있다. 하나의 실시예에서, 일괄 전송이 발생할 때, 임박한 가지치기 이벤트(수신함(inbox)의 가지치기), 또는 그 밖의 다른 임의의 낮은 우선순위 이벤트가 실행될 수 있다.The batch module 257 may initiate a batch transfer according to certain criteria. For example, a batch transfer (eg, a batch transfer of multiple events that occur, where some events occur at different times) may occur after a certain number of low priority events have been detected, or the first low priority. It may occur after a certain time has passed and the event is initiated. In addition, when a higher priority event is initiated or detected at device 250, batch module 257 may initiate a batch transmission of accumulated low priority events. Batch transmission can be initiated in other ways when radio use is triggered for another reason (eg, to receive data from a remote device, such as
일반적으로, 다음에서 나열되는 것들 중 하나 이상을 기초로 하여, 이벤트/트랜잭션 레벨, 애플리케이션 레벨, 또는 세션 레벨에서 일괄처리 능력(batching capability)이 비활성화 또는 활성화될 수 있다: 사용자 설정, 장치 제한/설정, 제조업체 명세, 네트워크 제공자 파라미터/제한, 플랫폼 특정 제한/설정, 장치 OS 설정 등. 하나의 실시예에서, 애플리케이션/창/파일이 닫히거나, 종료되거나, 배경으로 이동될 때 일괄 전송이 개시될 수 있고, 선택사항으로서, 일괄 전송을 개시하기 전에 사용자에게 프롬프팅될 수 있으며, 사용자는 일괄 전송을 수동으로 트리거할 수 있다. In general, batch capability may be disabled or enabled at the event / transaction level, application level, or session level based on one or more of the following listed: user settings, device restrictions / settings , Manufacturer specifications, network provider parameters / limitations, platform specific restrictions / settings, device OS settings, etc. In one embodiment, a batch transfer can be initiated when an application / window / file is closed, terminated, or moved to the background, optionally, prompted to the user before initiating the batch transfer, and Can manually trigger a batch transfer.
하나의 실시예에서, 로컬 프록시(275)가 캐시(285)로 데이터를 캐싱함으로써, 장치(250)상에서의 라디오 사용을 로컬하게 조절한다. 캐시(285)에 저장된 콘텐츠에 의해 장치(250)로부터의 요청 또는 트랜잭션이 만족될 수 있을 때, 라디오 제어기(266)는 요청을 원격 개체(가령, 도 1A 및 도 3A에 도시된 호스트 서버(100, 300) 또는 콘텐츠 제공자/애플리케이션 서버, 가령, 도 1B 및 도 1C의 예에서 도시되는 서버/제공자(110))로 전송하기 위해 라디오를 활성화시킬 필요가 없다. 따라서 로컬 프록시(275)는 데이터 요청을 만족하도록, 데이터를 로컬하게 저장하기 위해 로컬 캐시(285) 및 캐시 정책 관리기(245)를 사용하여, 네트워크 자원 및 장치 배터리 소모를 보존하기 위해 장치 라디오의 사용을 생략 또는 감소시킬 수 있다. In one embodiment,
로컬 캐시를 활용할 때, 요청/트랜잭션 관리기(225)가 장치(250) 상에서의 애플리케이션에 의한 데이터 요청을 인터셉트하면, 로컬 레포지토리(local repository)(285)에게, 임의의 로컬 저장된 응답이 존재하는지 여부에 대해, 그리고 상기 응답이 유효한지 여부에 대해 질의될 수 있다. 로컬 캐시(285)에서 유효한 응답이 이용가능할 때, 장치(250)가 셀룰러 네트워크 또는 무선 광대역 네트워크를 액세스할 필요 없이, 응답이 장치(250)상의 애플리케이션에 제공될 수 있다.When utilizing a local cache, if the request / transaction manager 225 intercepts a data request by an application on the device 250, it will tell the
유효한 응답이 이용 가능하지 않은 경우, 로컬 프록시(275)는 원격 프록시(가령, 도 3A의 서버 프록시(325))에게, 원격 저장된 응답이 유효한지 여부에 대해 질의할 수 있다. 상기 원격 저장된 응답이 유효한 경우, 상기 응답(가령, 도 1C의 예의 경우, 서버 캐시(135) 또는 선택적 캐싱 서버(199)에 저장될 수 있는 응답)은 모바일 장치로 제공될 수 있으며, 이는, 모바일 장치(250)가 셀룰러 네트워크에 액세스할 필요 없이 이뤄질 수 있어서, 네트워크 자원의 소모가 완화될 수 있다.If no valid response is available, the
유효한 캐시 응답이 이용 가능하지 않은 경우, 또는 캐시 응답이 인터셉트된 데이터 요청에 대해 이용 가능하지 않은 경우, 로컬 프록시(275), 가령, 캐싱 정책 관리기(245)가 데이터 요청을 원격 프록시(가령, 도 3A의 서버 프록시(325))로 전송할 수 있으며, 상기 원격 프록시는 데이터 요청을 콘텐츠 소스(가령, 도 1A의 애플리케이션 서버/콘텐츠 제공자(110))로 포워딩하며, 콘텐츠 소스로부터의 응답이 원격 프록시를 통해 제공될 수 있으며, 이는 도 3A의 예시적 호스트 서버(300)와 관련된 설명에서 추가로 설명될 것이다. 캐시 정책 관리기(245)는 다양한 프로토콜(가령, HTTP, HTTPS, IMAP, POP, SMTP, XMPP, 및/또는 ActiveSync)을 사용하는 요청을 관리하거나 프로세싱할 수 있다. 캐싱 정책 관리기(245)는 데이터 요청에 대한 응답을, 동일하거나 유사한 데이터 요청을 만족시킬 때 추후 사용되도록, 로컬 데이터베이스(285)에 캐시 엔트리로서 로컬하게 저장할 수 있다. If a valid cache response is not available, or if a cache response is not available for an intercepted data request, the
캐싱 정책 관리기(245)는 원격 프록시가 데이터 요청에 대한 응답을 모니터링할 것을 요청할 수 있으며, 원격 프록시는, 데이터 요청에 대한 예상되지 않은 응답이 검출될 때, 장치(250)에게 통지할 수 있다. 이러한 이벤트의 경우, 캐시 정책 관리기(245)는 데이터 요청에 대해 예상되지 않은 응답(가령, 새 데이터, 변경된 데이터, 추가 데이터 등)을 통지받을 때, 장치(250) 상에서 로컬 저장된 응답을 지우거나 대체할 수 있다. 하나의 실시예에서, 캐싱 정책 관리기(245)는 특정 요청에 대해 사용되는 프로토콜(가령, HTTP, HTTPS, IMAP, POP, SMTP, XMPP, 및/또는 ActiveSync, 그러나 이에 국한되지 않음)을 검출하거나 식별할 수 있다. 하나의 실시예에서, (가령, 캐싱 정책 관리기(245)의 애플리케이션 프로토콜 모듈(246)을 통한) 로컬 프록시(275) 상의 애플리케이션-특정적 핸들러(application specific handler)가, 분산 프록시 내 핸들러로 포트 매핑(port map)(가령, 도 3A의 예시의 경우, 프록시 서버(325)로 포트 매핑)될 수 있는 임의의 프로토콜의 최적화를 가능하게 한다. Caching policy manager 245 may request that the remote proxy monitor the response to the data request, and the remote proxy may notify device 250 when an unexpected response to the data request is detected. For these events, cache policy manager 245 clears or replaces locally stored responses on device 250 when it is notified of unexpected responses to data requests (eg, new data, changed data, additional data, etc.). can do. In one embodiment, caching policy manager 245 detects or identifies the protocol used for the particular request (eg, but not limited to HTTP, HTTPS, IMAP, POP, SMTP, XMPP, and / or ActiveSync). can do. In one embodiment, an application specific handler on the local proxy 275 (eg, via the
하나의 실시예에서, 예를 들어, 콘텐츠 소스로의 데이터 요청이 모바일 장치로 반환될 동일한 결과를 산출할 때, 원격 프록시가 장치(250)로 결과를 반환하기 전에 콘텐츠 소스로부터의 변경된 결과에 대한 데이터 요청에 대해 수신된 응답을 모니터링할 수 있도록, 로컬 프록시(275)가 원격 프록시에게 통지한다. 일반적으로, 로컬 프록시(275)는 로컬 캐싱된 콘텐츠를 이용하여 장치(250) 상의 애플리케이션에 대한 애플리케이션 서버 응답을 시뮬레이트(simulate)할 수 있다. 이는, 새로운/변경된 데이터가 이용 가능하지 않는 트랜잭션에 대해 셀룰러 네트워크가 이용되는 것을 막고, 따라서, 네트워크 자원을 이용가능하게 하며 네트워크 혼잡을 방지할 수 있다. In one embodiment, for example, when a data request to a content source yields the same result to be returned to the mobile device, the remote proxy is not responsible for the changed result from the content source before returning the result to the device 250. The
하나의 실시예에서, 로컬 프록시(275)는 장치(250) 상에서 액세스되거나 설치되는 애플리케이션(가령, 프록시-인지형 및/또는 프록시-비인지형 애플리케이션(210 및 220))을 추적, 검출, 관찰, 모니터링하기 위한 애플리케이션 거동 검출기(236)를 포함한다. 장치(250) 상에서 액세스되는 하나 이상의 애플리케이션의 애플리케이션 거동, 또는 (가령 패턴 검출기(237)를 통해) 검출되는 거동의 패턴이 로컬 프록시(275)에 의해 사용되어, 이들 애플리케이션의 데이터 수요를 만족시키기 위해 요구되는 무선 네트워크에서의 트래픽을 최적화할 수 있다. In one embodiment,
예를 들어, 복수의 애플리케이션의 검출된 거동을 기초로 하여, 트래픽 성형 엔진(traffic shaping engine)(255)이 (가령, 정렬 모듈(256)을 통해) 애플리케이션들 중 적어도 일부에 의해 네트워크(무선 네트워크)를 통해 만들어진 콘텐츠 요청을 정렬할 수 있다. 정렬 모듈(256)은 정렬을 하기 위해 먼저 수신된 일부 요청들을 지연시키거나 우선시할 수 있다. 요청이 정렬될 때, 트래픽 성형 엔진(255)은 연결 관리기를 이용하여, 네트워크를 통해 폴링함으로써, 애플리케이션 데이터 요청을 만족시킬 수 있다. 복수의 애플리케이션에 대한 콘텐츠 요청들이, 거동 패턴 또는 규칙/설정(예를 들어, 복수의 애플리케이션에 의해 요청되는 콘텐츠 유형(오디오, 비디오, 텍스트 등), 장치(가령, 모바일 또는 무선 장치) 파라미터, 및/또는 네트워크 파라미터/트래픽 상태, 네트워크 서비스 제공자 제약/상세사항 등)을 기초로 정렬될 수 있다. For example, based on the detected behavior of the plurality of applications, a
하나의 실시예에서, 패턴 검출기(237)는, 예를 들어, 애플리케이션 거동의 패턴을 추적함으로써, 복수의 애플리케이션에 의해 만들어지는 애플리케이션 요청에서의 반복(recurrence)을 검출할 수 있다. 추적되는 패턴은, 특정 애플리케이션이 배경 프로세스로서, 애플리케이션 서버에 규칙적으로, 특정 시각, 특정 요일에, 예측 가능한 방식으로 주기적으로, 특정 빈도로, 특정 유형의 이벤트에 응답하여 특정 빈도로, 특정 유형의 사용자 질의에 응답하여 요청되는 콘텐츠가 동일한 빈도, 동일한 요청이 이뤄지는 빈도, 요청들 간 간격, 요청을 하는 애플리케이션, 또는 이들 중 임의의 조합을 갖고 폴링하는 것의 검출을 포함할 수 있다. In one embodiment, the
이러한 반복이 트래픽 성형 엔진(255)에 의해 사용되어, 모바일 장치 또는 무선 장치(250)에서 수행될 애플리케이션 요청으로부터 야기될 콘텐츠 소스(가령, 도 1A의 애플리케이션 서버/콘텐츠 제공자(110))로부터의 콘텐츠의 폴링이, 상기 장치(250)에 원격으로 위치하는 프록시 서버(가령, 도 1C의 프록시 서버(125) 또는 도 3A의 프록시 서버(325))에 의해 분담될 수 있다. 반복이 규칙에 일치할 때 트래픽 성형 엔진(255)이 폴링을 분담하기로 결정할 수 있다. 예를 들어, 정확히 동일한 자원 또는 반환되는 값을 갖거나 요청과 응답 사이에 반복되는 시간 주기의 검출(가령, 특정 시각에서 요청되는 자원의 검출)을 기초로 하는 동일한 자원에 대한 복수의 발생 또는 요청이 있을 수 있다. 폴링의 분담이, 반복되는 콘텐츠 폴링에 대해 콘텐츠 소스와의 무선(셀룰러 또는 그 밖의 다른 무선 광대역) 연결을 확립하기 위해 모바일 장치(250)가 필요로 하는 대역폭 소모량을 감소시킬 수 있다. This iteration is used by
콘텐츠 소스의 폴링에서 콘텐츠 변화가 검출되지 않을 때, 폴링의 분담의 결과로서, 장치(250)에서의 데이터 요청을 만족시키기 위해 로컬 캐시(285)에 저장되는 로컬 캐싱된 콘텐츠가 제공될 수 있다. 따라서 데이터가 변경되지 않을 때, 라디오 사용을 활성화할 필요 없이, 또는 셀룰러 대역폭을 차지하지 않고, 애플리케이션 데이터 수요가 만족될 수 있다. 데이터가 변경되거나, 및/또는 새로운 데이터가 수신될 때, 폴링을 분담하는 원격 개체가 장치(250)에게 통지할 수 있다. 원격 개체는 도 3A의 예에서 나타나는 것처럼 호스트 서버(300)일 수 있다. When no content change is detected in the polling of the content source, as a result of the sharing of polling, local cached content may be provided that is stored in the
하나의 실시예에서, 로컬 프록시(275)는, 상당한 양의 전력을 소모하고 따라서 모바일 장치 배터리 수명에 부정적 영향을 미치는 TCP/IP 연결을 유지하기 위한 주기적 킵얼라이브 메시지(keep-alive message)의 수요/사용을 경감시킬 수 있다. 로컬 프록시 내 연결 관리기(265)(가령, 하트비트 관리기(heartbeat manager)(267))가 애플리케이션으로부터 전송되고 있는 임의의 또는 모든 하트비트(킵얼라이브) 메시지를 검출, 식별, 및 인터셉트할 수 있다. In one embodiment, the
하트비트 관리기(267)는 임의의 또는 모든 이들 하트비트 메시지가 셀룰러, 또는 또 다른 네트워크를 통해 전송되는 것을 막을 수 있으며, 대신, 백엔드(가령, 도 lA의 예의 경우, 애플리케이션 서버/제공자(110))와의 연결을 유지하기 위해, 분산 프록시 시스템의 서버 구성요소(가령, 도 1C에 도시된 것)가 하트비트 메시지를 생성하고 전송하는 것에 의지할 수 있다.
일반적으로, 로컬 프록시(275)는 개별 관리기, 모듈, 및/또는 엔진에 대해 설명된 기능들 중 임의의 하나 또는 일부를 나타낸다. 본 발명의 범위 내에서, 로컬 프록시(275) 및 장치(250)는 더 많거나 더 적은 구성요소를 포함할 수 있고, 더 많거나 더 적은 기능이 포함될 수 있다. In general,
도 2B는 애플리케이션 거동 및/또는 네트워크 상태에 대해 캐싱하고 캐싱 전략을 적응화할 수 있는 도 2A의 예에서 나타난 캐시 시스템 내 구성요소의 추가 예를 도시하는 블록도를 도시한다. FIG. 2B shows a block diagram illustrating additional examples of components in the cache system shown in the example of FIG. 2A that may cache for application behavior and / or network conditions and adapt the caching strategy.
하나의 실시예에서, 캐싱 정책 관리기(245)는 메타데이터 발생기(203), 캐시 룩-업 엔진(205), 캐시 적절성 판단 엔진(cache appropriateness decision engine)(246), 폴 스케줄 생성기(247), 애플리케이션 프로토콜 모듈(248), 캐시 또는 연결 선택 엔진(249) 및/또는 로컬 캐시 무효화기(244)를 포함한다. 캐시 적절성 판단 엔진(246)은 타이밍 예측기(timing predictor)(246a), 콘텐츠 예측기(content predictor)(246b), 요청 분석기(246c), 및/또는 응답 분석기(246d)를 포함하며, 캐시 또는 연결 선택 엔진(249)은 응답 스케줄러(249a)를 포함한다. 메타데이터 생성기(203) 및/또는 캐시 룩-업 엔진(205)은, 캐시 엔트리의 수정 또는 추가, 또는 이들의 질의를 위해, 캐시(285)(또는 로컬 캐시)로 연결된다. In one embodiment, caching policy manager 245 includes metadata generator 203, cache look-up engine 205, cache
캐시 룩-업 엔진(205)은 ID 또는 URI 필터(205a)를 더 포함하고, 로컬 캐시 무효화기(244)는 TTL 관리기(244a)를 더 포함하며, 폴 스케줄 생성기(247)는 스케줄 업데이트 엔진(247a) 및/또는 시간 조절 엔진(247b)을 더 포함할 수 있다. 캐싱 정책 관리기(245)의 한 가지 실시예는 애플리케이션 캐시 정책 레포지토리(243)를 포함한다. 하나의 실시예에서, 애플리케이션 거동 검출기(236)는 패턴 검출기(237), 폴 간격 검출기(238), 애플리케이션 프로파일 생성기(239), 및/또는 우선순위 엔진(241)을 포함한다. 폴 간격 검출기(238)는 응답/요청 추적 엔진(238b)을 갖는 롱 폴 검출기(long poll detector)(238a)를 더 포함할 수 있다. 폴 간격 검출기(238)는 롱 폴 헌팅 검출기(long poll hunting detector)(238c)를 더 포함할 수 있다. 애플리케이션 프로파일 생성기(239)는 응답 지연 간격 추적기(239a)를 더 포함할 수 있다. The cache look-up engine 205 further includes an ID or
패턴 검출기(237), 애플리케이션 프로파일 생성기(239), 및 우선순위 엔진(241)이 도 2A의 예시에서 나타난 패턴 검출기에 대한 기재와 관련하여 기재되었다. 하나의 실시예는 애플리케이션 프로파일(가령, HTTP 요청의 거동, 패턴, 유형 등)과 관련된 정보 또는 메타데이터를 저장하기 위해 로컬 프록시(275)에 의해 사용될 수 있는 애플리케이션 프로파일 레포지토리(242)를 더 포함한다. The
캐시 적절성 판단 엔진(246)은, 모바일 장치(250)가 상호대화하며 콘텐츠를 갖는 콘텐츠 소스(가령, 도 1B의 예시의 경우, 애플리케이션 서버/콘텐츠 제공자(110))로부터의 콘텐츠가 캐싱되기 적합할 수 있는지 여부를 검출, 평가, 또는 결정할 수 있다. 예를 들어, 상기 판단 엔진(246)은 모바일 장치(250)에서 개시되는 요청 및/또는 상기 요청에 대해 수신된 응답에 대한 정보를 이용하여, 캐싱 가능함(cacheability), 캐싱 가능할 가능성이 있음(potential cacheability), 또는 캐싱 불가능함(non-cacheability)을 결정할 수 있다. 일부 경우, 판단 엔진(246)은 먼저, 요청이 블랙리스트에 올라간 도착지와 관련됐는지 여부, 또는 요청 자체가 블랙리스트에 올라간 클라이언트 또는 애플리케이션으로부터 발원된 것인지 여부를 검증할 수 있다. 그런 경우, 판단 엔진(246)에 의해, 추가 프로세싱 및 분석이 수행되지 않을 수 있고, 요청을 만족시키기 위해 요청이 무선으로(over the air) 서버로 전송되도록 허용될 수 있다. 블랙리스트에 올라간 도착지 또는 애플리케이션/클라이언트(가령, 모바일 애플리케이션)가 로컬 프록시에서 로컬하게 (가령, 애플리케이션 프로파일 레포지토리(242)에) 유지되거나, 원격으로 (가령, 프록시 서버(325) 또는 또 다른 개체에) 유지될 수 있다.The cache
하나의 실시예에서, 예를 들어, 요청 분석기(246c)를 통해, 판단 엔진(246)은, 모바일 장치(250)에서 생성된 애플리케이션 또는 클라이언트 요청에 대한 정보를 수집한다. 요청 정보는 요청 특성 정보, 가령, 요청 방법을 포함할 수 있다. 예를 들어, 요청 방법은 모바일 애플리케이션 또는 클라이언트에 의해 생성된 HTTP 요청의 유형을 지시할 수 있다. 하나의 실시예에서, 요청 방법이 GET 요청이거나 POST 요청인 경우, 상기 요청에 대한 응답이 캐싱 가능하거나, 캐싱 가능할 가능성이 있는 것으로 식별될 수 있다. 또 다른 유형의 요청(가령, OPTIONS, HEAD, PUT, DELETE, TRACE, 또는 CONNECT)이 캐싱될 수 있거나 캐싱되지 않을 수 있다. 일반적으로 캐싱될 수 없는 요청 방법에 의한 HTTP 요청은 캐싱되지 않을 것이다. In one embodiment, for example, via request analyzer 246c,
요청 특성 정보는 예를 들면, 요청 크기와 관련된 정보를 더 포함할 수 있다. 특정 크기를 초과하는 본체 크기(body size)를 갖는 요청(가령, HTTP 요청)에 대한 응답이 캐싱되지 않을 것이다. 예를 들어, 요청에 대한 정보가 요청의 요청 본체 크기가 특정 크기를 초과하지 않는다고 가리키는 경우, 캐싱 가능함(cacheability)이라고 결정될 수 있다. 일부 경우, 최대 캐싱 가능한 요청 본체 크기는 8092 바이트로 설정될 수 있다. 또 다른 경우, 예를 들어, 네트워크 수용력 또는 네트워크 운영자 특정 설정에 따라서, 여러 다른 값들이 사용될 수 있다.The request characteristic information may further include information related to the request size, for example. Responses to requests with body sizes exceeding a certain size (eg, HTTP requests) will not be cached. For example, if the information about the request indicates that the request body size of the request does not exceed a certain size, it may be determined to be cacheability. In some cases, the maximum cacheable request body size may be set to 8092 bytes. In other cases, different values may be used, for example, depending on network capacity or network operator specific settings.
일부 경우, 특정 애플리케이션 서버/콘텐츠 제공자(가령, 도 1C의 서버/콘텐츠 제공자(110))로부터의 콘텐츠는, 기준의 세트, 예를 들면, 콘텐츠 소스로부터 요청되는 콘텐츠의 시간 중요도를 특정하는 기준들을 기초로 하여, 캐싱되기 적합하다고 결정된다. 하나의 실시예에서, 로컬 프록시(가령, 도 1C 및 도 2A의 로컬 프록시(175 또는 275))가, 애플리케이션에 의해 요청되는 호스트 서버로부터의 콘텐츠를, 애플리케이션에 의해 만들어지는 후속 요청을 만족시키기 위해, 모바일 장치상의 로컬 캐시에 캐싱되는 요소로서 저장하기 위한 선택 기준을 적용한다.In some cases, content from a particular application server / content provider (eg, server /
캐시 적절성 판단 엔진(246)은, (가령, 모바일 애플리케이션 또는 장치(250) 상의 그 밖의 다른 클라이언트에 의해) 모바일 장치(250)로부터 전송되는 요청들의 검출된 패턴 및/또는 수신된 응답들의 패턴을 더 기초로 하여, 요청 및/또는 응답에서 예측가능성(predictability)을 검출할 수 있다. 예를 들어, 판단 엔진(246)(가령, 요청 분석기(246c))에 의해 수집되는 요청 특성 정보는, 하나의 요청과, 모바일 장치상의 동일 클라이언트에 의해 생성되는 나머지 다른 요청들(또는 동일한 호스트로 향해지는 나머지 다른 요청들)(가령, 유사하거나 동일한 식별자 파라미터를 가짐) 간의 주기성 정보(periodicity information)를 더 포함할 수 있다. Cache
상기 하나의 요청 및 동일한 클라이언트에 의해 생성되는 나머지 다른 요청들이, 일부 식별 가능한, 또는 부분적으로 또는 전체적으로 재생성될 수 있는 변하는 패턴을 갖고 고정 속도로, 또는 거의 고정 속도로, 또는 동적 속도(dynamic rate)로 발생할 때, 판단 엔진(246) 또는 요청 분석기(246c)에 의해 주기성이 검출될 수 있다. 일부 식별 가능한 패턴(가령, 규칙적 간격, 검출 가능한 패턴을 갖는 간격, 또는 추세(가령, 증가하는 추세, 감소하는 추세 등))을 갖고 요청이 이뤄지는 경우, 타이밍 예측기(246a)가 장치상의 특정 애플리케이션에 의해 이뤄지는 요청이 예측 가능하다고 결정하고, 적어도 타이밍 관점에서, 캐싱되기 적절할 가능성이 있는 것으로 식별할 수 있다. The one request and the other requests made by the same client have a varying pattern that may be partially reproducible, or partially or wholly reproducible, at a fixed rate, or almost at a fixed rate, or at a dynamic rate. As such, periodicity may be detected by
일반적으로, 식별 가능한 패턴 또는 추세는, 예를 들어 임의의 애플리케이션 또는 클라이언트 거동을 포함할 수 있으며, 이들은 모바일 장치(250) 상의 로컬 프록시(275) 상에서 로컬하게 시뮬레이트(simulate)될 수 있거나, 예를 들어 호스트(300) 상의 프록시 서버(325)에 의해 원격으로 시뮬레이트될 수 있거나, 로컬 시뮬레이션과 원격 시뮬레이션이 조합되어 애플리케이션 거동을 모방할 수 있다.In general, identifiable patterns or trends may include, for example, any application or client behavior, which may be simulated locally on
하나의 실시예에서, 판단 엔진(246)은, 예를 들어, 응답 분석기(246d)를 통해, 모바일 장치(250)에서 생성되는 애플리케이션 또는 클라이언트 요청에 대한 응답에 관한 정보를 수집할 수 있다. 일반적으로 응답은, 모바일 장치(250)에서 요청을 전송했던 애플리케이션(가령, 모바일 애플리케이션)의 서버 또는 호스트로부터 수신된다. 일부 경우, 모바일 클라이언트 또는 애플리케이션은 애플리케이션의 모바일 버전(가령, 소셜 네트워킹, 검색, 여행 관리, 음성메일, 연락처 관리기, 전자메일) 또는 웹 브라우저나 데스크톱 클라이언트를 통해 액세스되는 웹 사이트일 수 있다. In one embodiment, the
예를 들어, 응답 특성 정보는, 응답을 전송할 때 전송 인코딩(transfer encoding)이 사용되는지 또는 청크 전송 인코딩(chunked transfer encoding)이 사용되는지에 대한 지시자(indication)를 포함할 수 있다. 일부 경우, 전송 인코딩 또는 청크 전송 인코딩을 이용한 HTTP 요청에 대한 응답은 캐싱되지 않으며, 따라서 추후 분석을 위해 이동된다. 왜냐하면, 보통, 청크 응답은 크고 캐싱되기 적합하지 않는데, 이는 이들 트랜잭션의 프로세싱이 전체적인 수행을 느리게 할 가능성이 높기 때문이다. 따라서 일부 실시예에서, 응답 전송 시 전송 인코딩이 사용되지 않을 때, 캐싱 가능함 또는 캐싱 가능할 가능성이 있음으로 결정될 수 있다.For example, the response characteristic information may include an indication as to whether transfer encoding or chunked transfer encoding is used when transmitting the response. In some cases, responses to HTTP requests using transport encoding or chunked encoding are not cached and are therefore moved for later analysis. Because usually, chunk responses are large and unsuitable for caching, because the processing of these transactions is likely to slow the overall performance. Thus, in some embodiments, it may be determined that there is a possibility of being cacheable or cacheable when transport encoding is not used in response transmission.
덧붙이자면, 응답 특성 정보가, 응답 분석기(246d)에 의해 식별될 수 있는 응답의 관련된 상태 코드를 포함할 수 있다. 일부 경우, 캐싱될 수 없는 상태 코드를 갖는 HTTP 응답은 일반적으로 캐싱되지 않는다. 응답 분석기(246d)가 응답으로부터 상태 코드를 추출할 수 있으며, 상기 상태 코드가 캐싱 가능함 또는 캐싱 불가능함 상태 코드와 일치하는지 여부를 결정할 수 있다. 임의의 캐싱 가능함 상태 코드의 예로는, 200-OK, 301-Redirect, 302-Found, 303-See other, 304-Not Modified, 307Temporary Redirect, 또는 500-Internal server error를 포함한다. 임의의 캐싱 불가능함 상태 코드로는, 예를 들어, 403-Forbidden 또는 404-Not found를 포함할 수 있다. In addition, the response characteristic information may include an associated status code of the response that may be identified by
하나의 실시예에서, 응답에 대한 정보가 캐싱 불가능함 상태 코드를 나타내지 않거나, 캐싱 가능함 상태 코드를 나타내는 경우 캐싱 가능함 또는 캐싱 가능할 가능성이 있음이라고 결정될 수 있다. 응답 분석기(246d)가 특정 응답과 연계된 캐싱 가능하지 않음 상태 코드를 검출한 경우, 추가 프로세싱으로부터 특정 트랜잭션(요청/응답 쌍)이 제거되고, 일시적으로, 또는 반영구적으로, 또는 영구적으로 캐싱 불가능함이라고 결정될 수 있다. 상태 코드가 캐싱 가능함이라고 나타내는 경우, 도 9-10의 예시적 흐름도에서 나타나는 것처럼, 트랜잭션(가령, 요청 및/또는 응답 쌍)이 추가 프로세싱의 대상이 될 수 있고, 캐싱 가능함을 확인하기 위해 분석될 수 있다.In one embodiment, it may be determined that the information for the response does not represent a non-cacheable status code or is likely to be cacheable or cacheable if it represents a cacheable status code. If
또한 응답 특성 정보는 응답 크기 정보를 포함할 수 있다. 일반적으로, 응답이 특정 크기를 초과하지 않는 경우, 응답은 모바일 장치(250)에서 로컬하게 캐싱될 수 있다. 일부 경우, 디폴트 최대 캐싱되는 응답 크기는 115KB로 설정된다. 또 다른 경우, 최대 캐싱 가능한 응답 크기는 서로 다를 수 있으며, 및/또는 동작 상태, 네트워크 상태, 네트워크 수용량, 사용자 선호도, 네트워크 운영자 요구사항, 또는 그 밖의 다른 애플리케이션 특정, 사용자 특정 및/또는 장치 특정 요인을 기초로, 동적으로 조절될 수 있다. 하나의 실시예에서, 응답 분석기(246d)는 응답의 크기를 식별할 수 있고, 응답 크기가 특정 임계치 또는 최댓값을 초과하지 않는 경우, 캐싱 가능함 또는 캐싱 가능할 가능성이 있음으로 결정될 수 있다.In addition, the response characteristic information may include response size information. In general, if the response does not exceed a certain size, the response may be cached locally at the mobile device 250. In some cases, the default maximum cached response size is set to 115 KB. In other cases, the maximum cacheable response size may be different, and / or operational status, network status, network capacity, user preferences, network operator requirements, or other application-specific, user-specific and / or device-specific factors. On the basis of this, it can be dynamically adjusted. In one embodiment,
덧붙이자면, 응답 특성 정보는, 한 요청에 대한 한 응답 및 모바일 장치상의 동일한 클라이언트에 의해 생성되거나 동일한 콘텐츠 호스트 또는 애플리케이션 서버로 전달되는 그 밖의 다른 요청에 대한 그 밖의 다른 응답에 대한 응답 본체 정보(response body information)를 포함할 수 있다. 예를 들어, 응답 분석기(246d)에 의해, 응답에 대한 응답 본체 정보와 그 밖의 다른 응답에 대한 응답 본체 정보가 비교되어, 동적 콘텐츠 (또는 빈번하게 변경되며 캐시 엔트리로 효율적으로 서비스될 수 없는 콘텐츠, 가령, 금융 데이터, 주식 시세, 뉴스 피드, 실시간 스포츠 이벤트 활동 등을 포함한 응답)의 캐싱이 방지될 수 있다.In addition, the response characteristic information is response body information for one response to one request and for other responses to other requests generated by the same client on the mobile device or delivered to the same content host or application server. body information). For example, the
캐시 적절성 판단 엔진(246)(가령, 콘텐츠 예측기(246b))이 반복성(repeatability)을 확정적으로 식별하거나, 반복성의 지시자를 식별하거나, 반복성의 가능성을 식별하거나, 콘텐츠 소스(가령, 도 1A-1C의 예시의 경우, 콘텐츠 호스트/애플리케이션 서버(110))로부터 수신된 응답의 예측성을 식별할 수 있다. 반복성은, 예를 들어, 콘텐츠 소스로부터 수신된 적어도 2개의 응답을 추적하고, 2개의 응답이 서로 동일한지 여부를 결정함으로써 검출될 수 있다. 예를 들어, 한 응답에 대한 응답 본체 정보와, 동일한 모바일 클라이언트에 의해 전송되거나 동일한 호스트/서버로 전달되는 그 밖의 다른 응답에 대한 응답 본체 정보가 동일하거나 실질적으로 동일한 경우 응답 분석기(246d)에 의해, 캐싱 가능함으로 결정될 수 있다. 2개의 응답은 연속한 요청들에 응답하여 전송된 응답일 수도 있고, 아닐 수도 있다. 하나의 실시예에서, 특정 애플리케이션으로부터의 요청에 대해 수신된 응답의 해시 값(hash value)이 (휴리스틱을 이용하거나 이용하지 않고) 애플리케이션에 대해 전체적으로, 및/또는 특정 요청에 대한 콘텐츠의 반복성을 결정하기 위해 사용된다. 추가적인 동일한 응답이 일부 애플리케이션에 대해, 또는 특정 환경 하에서 요구될 수 있다.Cache adequacy determination engine 246 (e.g., content predictor 246b) may reliably identify repeatability, identify indicators of repeatability, identify the likelihood of repeatability, or determine a content source (e.g., Figures 1A-1C). For example, the predictability of the response received from the content host /
수신된 콘텐츠의 반복성은 100% 확정될 필요는 없다. 예를 들어, 특정 개수 또는 특정 퍼센트의 응답들이 서로 동일하거나 유사한 경우, 응답이 반복성이 있다고 결정될 수 있다. 특정 개수 또는 특정 퍼센트의 동일/유사한 응답은, 디폴트(default)로 설정되거나, 요청을 발생하는 애플리케이션을 기초로 설정된(가령, 애플리케이션이 꾸준한 업데이트로 매우 동적인지, 드문 업데이트로 덜 동적인지 여부) 선택 시간 주기 동안 추적될 수 있다. 모바일 장치(250) 상의 요청하는 애플리케이션 또는 클라이언트로 제공될 콘텐츠를 캐싱할 때, 분산 시스템에 의해 임의의 지시된 예측성 또는 반복성, 또는 반복될 가능성이 활용될 수 있다. The repeatability of the received content need not be 100% finalized. For example, if a certain number or a certain percentage of responses are the same or similar to each other, it may be determined that the responses are repeatable. A certain number or a certain percentage of identical / similar responses can be set to default or based on the application making the request (eg whether the application is very dynamic with a steady update or less dynamic with a rare update). Can be tracked for a period of time. When caching content to be provided to a requesting application or client on mobile device 250, any indicated predictive or repeatable, or likelihood of being repeated by a distributed system may be utilized.
하나의 실시예에서, 롱 폴 유형 요청의 경우, 첫 2개의 응답들에 대한 응답 지연 시간이 서로 동일하거나, 실질적으로 동일하거나, 간격이 증가하는 것으로 검출된 경우, 로컬 프록시(175)는 세 번째 요청에 대한 응답을 캐싱하기 시작할 수 있다. 일반적으로 첫 2개의 응답들에 대해 수신된 응답은 서로 동일해야 하며, 세 번째 요청에 대해 수신된 세 번째 응답이 동일하다고 검증되면(가령, R0 = R1 = R2인 경우), 세 번째 응답이 모바일 장치에 로컬하게 캐싱될 수 있다. 애플리케이션의 유형, 데이터의 유형, 콘텐츠의 유형, 사용자 선호도, 또는 통신업체(carrier)/네트워크 운영자 명세에 따라, 더 적거나 더 많은 개수의 동일한 응답들이 캐싱되기 시작할 필요가 있을 수 있다. In one embodiment, for a long pole type request, if it is detected that the response delay times for the first two responses are equal to each other, substantially the same, or increase in interval, the local proxy 175 receives the third message. You can start caching the response to the request. In general, the responses received for the first two responses must be identical to each other, and if the third response received for the third request is verified to be the same (for example, if R0 = R1 = R2), then the third response is mobile. It can be cached locally on the device. Depending on the type of application, type of data, type of content, user preference, or carrier / network operator specification, fewer or more identical responses may need to begin to be cached.
애플리케이션 거동 검출기(236)의 롱 폴 헌팅 검출기(238c)에 의해 검출될 때, 롱 폴에 대한 동일한 응답의 증가하는 응답 지연은 헌팅 주기(hunting period)(가령, 모바일 장치상의 애플리케이션/클라이언트가, 특정 네트워크가 허용할 요청과 응답 사이의 가장 긴 시간을 찾는 중인 주기)를 가리킬 수 있다. When detected by the long
일례가 T0, T1, T2를 이용하여 이하에서 설명될 수 있으며, 여기서, T는 연속하는 요청들에 대해, 요청이 전송되는 시점과 응답(가령, 응답 헤더)이 검출/수신되는 시점 사이의 지연 시간을 나타낸다:An example can be described below using T0, T1, T2, where T is the delay between the time a request is sent and the time a response (eg, response header) is detected / received for successive requests. Indicates time:
T0 = 응답0(t) - 요청0(t) = 180 s. (+/- 허용오차)T0 = response 0 (t)-request 0 (t) = 180 s. (+/- tolerance)
T1 = 응답1(t) - 요청1(t) = 240 s. (+/- 허용오차)T1 = response1 (t)-request1 (t) = 240 s. (+/- tolerance)
T2 = 응답2(t) - 요청2(t) = 500 s. (+/- 허용오차)T2 = response2 (t)-request2 (t) = 500 s. (+/- tolerance)
앞서 나타난 예시적 타이밍 시퀀스 T0 < T1 < T2에서, 이는, 네트워크 타임아웃이 아직 초과되지 않았을 때 롱 폴에 대한 헌팅 패턴을 나타낼 수 있다. 덧붙이자면, 3개의 요청에 대하여 수신된 응답 R0, R1, 및 R2이 서로 동일한 경우, R2는 캐싱될 수 있다. 이 예에서, 롱 폴이 정착(settle)되기를 기다리지 않고 롱 폴 헌팅 주기 동안 R2가 캐싱되며, 따라서 응답 캐싱이 신속화된다(가령, 이는 모든 또는 선택된 애플리케이션에 대해 구현될 수 있는 선택사항적인 가속화된 캐싱 거동이다).In the example timing sequence T0 <T1 <T2 shown above, this may indicate a hunting pattern for the long pole when the network timeout has not yet been exceeded. In addition, if the received responses R0, R1, and R2 for the three requests are equal to each other, R2 may be cached. In this example, R2 is cached during the long pole hunting period without waiting for the long pole to settle, so response caching is accelerated (eg, optional accelerated caching that can be implemented for all or selected applications). Behavior).
따라서 로컬 프록시(275)는 앞서 나타난 타이밍 시퀀스로부터 추출될 수 있는 정보(가령, 폴링 스케줄, 폴링 간격, 폴링 유형)를 프록시 서버로 특정하고, 캐싱을 시작하며, 프록시 서버가 소스로 폴링하고 소스를 모니터링하는 것을 시작하도록 요청할 수 있다(가령, T0, T1, T2 중 임의의 것(일반적으로는 T2, 즉, 타임 아웃 없는 가장 긴 검출 간격)을 폴링 간격으로서 이용하며, 소스로부터의 응답이 수신되는 폴링 간격이 콘텐츠 소스(가령, 애플리케이션 서버/서비스 제공자(310))에게 폴링할 때 사용되도록 도 3A의 프록시 서버(325)로 전송될 것이다).Thus, the
그러나 시간 간격이 점점 더 짧아지는 것으로 검출되는 경우, 애플리케이션(가령, 모바일 애플리케이션)/클라이언트가, 콘텐츠 소스(가령, 애플리케이션/서버 서버/제공자(110 또는 310))로부터 응답이 신뢰할만하게(reliably) 수신될 수 있는 시간 간격 동안 여전히 헌팅할 수 있고, 따라서 일반적으로, 요청/응답 간격이 예를 들어 롱 폴 유형 요청에 대해 동일한 시간 간격 또는 증가하는 시간 간격을 가리킬 때까지 캐싱은 시작되지 않아야 한다. However, if it is detected that the time interval is getting shorter, the application (eg mobile application) / client receives the response reliably from the content source (eg application / server server /
검출된 감소하는 지연을 핸들링하는 일례가 이하에서, T0, T1, T2, T3, 및 T4를 이용해 설명될 수 있으며, 여기서 T는 연속한 요청에 대해 요청이 전송된 시점과 응답(가령, 응답 헤더)이 검출/수신된 시점 사이의 지연 시간을 가리킨다: An example of handling the detected decreasing delay may be described below using T0, T1, T2, T3, and T4, where T is the time at which the request was sent and the response (eg, response header) for successive requests. Indicates the delay time between the detected / received times:
T0 = 응답0(t) - 요청0(t) = 160 s. (+/- 허용오차)T0 = response 0 (t)-request 0 (t) = 160 s. (+/- tolerance)
T1 = 응답1(t) - 요청1(t) = 240 s. (+/- 허용오차)T1 = response1 (t)-request1 (t) = 240 s. (+/- tolerance)
T2 = 응답2(t) - 요청2(t) = 500 s. (+/- 허용오차)T2 = response2 (t)-request2 (t) = 500 s. (+/- tolerance)
T3 = 700 s.에서 타임 아웃 (+/- 허용오차)Timeout at T3 = 700 s. (+/- tolerance)
T4 = 응답4(t) - 요청4(t) = 600 (+/- 허용오차)T4 = response 4 (t)-request 4 (t) = 600 (+/- tolerance)
상기의 타이밍 시퀀스에서 나타나는 것처럼, 응답 지연에 대한 패턴 T1 < T2 < T3 > T4이 검출되는 경우(가령, 애플리케이션 거동 검출기(236)의 롱 폴 헌팅 검출기(238c)에 의해 검출), 롱 폴 헌팅 주기 동안 T3가 네트워크 타임 아웃을 초과할 가능성이 높다고 판단될 수 있다. 요청3에서, 연결이 네트워크, 애플리케이션, 서버에 의해, 또는 그 밖의 다른 이유로, 응답이 전송되거나 이용 가능해지기 전에 종료됐기 때문에, 응답이 수신되지 않았을 가능성이 높다. 요청4(T4 후)에서, 응답(가령, 응답4)이 검출되거나 수신된 경우, 그 후, (콘텐츠 반복성 조건이 충족되는 경우) 로컬 프록시(275)가 캐싱을 위해 상기 응답을 이용할 수 있다. 로컬 프록시는 또한, 프록시 서버가 콘텐츠 소스를 모니터링/폴링하기 위해 설정된 폴링 스케줄에서 T4를 폴 간격으로서 이용할 수 있다. As shown in the timing sequence above, when the pattern T1 < T2 < T3 > T4 for the response delay is detected (e.g., by the long
상기의 기재가, 증가하는 응답 지연을 검출하는 경우, 응답이 수신되고, 특정 요청에 대해 타임 아웃되지 않는 한, 롱 폴이 헌팅 모드에 있는 동안 캐싱이 시작될 수 있음을 나타낸다. 이는 롱 폴 헌팅 동안 선택적 가속화된 캐싱(optional accelerated caching)이라고 일컬어질 수 있다. 또한 헌팅 모드가 완료된 후(가령, 폴 요청이 일정한 또는 거의 일정한 지연 값으로 정착된 후) 캐싱이 시작될 수 있다. 롱 폴 동안 헌팅이 발생하거나 발생하지 않을 수 있으며, 헌팅이 발생할 때, 프록시(275)는 헌팅을 검출하고 헌팅 주기(동일한 응답을 갖는 증가하는 간격) 동안 캐싱을 시작할지 여부를 결정하거나 헌팅이 안정적인 값으로 정착될 때까지 기다릴 수 있다.When the above description detects an increasing response delay, it indicates that caching may begin while the long pole is in hunting mode, unless a response is received and timed out for a particular request. This may be referred to as optional accelerated caching during long pole hunting. Caching may also begin after the hunting mode is complete (eg, after a poll request has settled to a constant or near constant delay value). Hunting may or may not occur during long poles, and when hunting occurs, the
하나의 실시예에서, 캐시 적절성 판단 엔진(246)의 타이밍 예측기(246a)가, 애플리케이션(가령, 모바일 애플리케이션) 또는 클라이언트로부터의 아웃고잉 요청으로부터 수신된 응답의 타이밍을 추적함으로써, 로컬 캐싱된 응답이 콘텐츠 소스(가령, 애플리케이션 서버/콘텐츠 제공자(110 또는 310)) 거동을 시뮬레이트(simulate)하는 방식으로(예를 들어, (가령, 타이밍 관점에서) 응답이나 콘텐츠가 장치(250) 상의 요청하는 애플리케이션/클라이언트에게 전달될 방식으로) 모바일 장치(250) 상의 요청하는 클라이언트에게 제공될 수 있도록 부분적으로 또는 전체적으로 재현 가능한 임의의 식별 가능한 패턴을 검출할 수 있다. 이는, 애플리케이션 또는 모바일 클라이언트 요청에 대한 응답이, 콘텐츠 소스(가령, 애플리케이션, 콘텐츠 제공자(110 또는 310))로부터 직접 불러와 지거나 수신되는 대신, 로컬 및/또는 원격 캐시로부터 서비스될 때 사용자 경험(user experience)의 보존을 보장한다.In one embodiment, the
하나의 실시예에서, 판단 엔진(246) 또는 타이밍 예측기(246a)가, 예를 들어, 요청/응답 추적 엔진(238b) 및/또는 애플리케이션 프로파일 생성기(239)(가령, 응답 지연 간격 추적기(239a))로부터 특정 애플리케이션(가령, 모바일 애플리케이션) 또는 클라이언트의 타이밍 특성을 결정한다. 타이밍 특성을 이용해, 타이밍 예측기(246a)가 요청에 응답하여 수신된 콘텐츠가 적합한지, 또는 캐싱되기 적합할 가능성이 있는지 여부를 결정한다. 예를 들어, 특정 애플리케이션으로부터의 2개의 연속하는 요청들 간의 폴 요청 간격이 사용되어, 요청 간격이 반복될 수 있는지(가령, 일정, 거의 일정, 패턴을 갖고 증가, 패턴을 갖고 감소, 등) 여부를 결정할 수 있고, 예측될 수 있으며, 따라서 정확히, 또는 허용오차 수준 내에서 대략적으로 시간들 중 적어도 일부에서 재현될 수 있다.In one embodiment, the
일부 경우, 특정 애플리케이션에 대한, 하나의 애플리케이션의 복수의 요청에 대한, 또는 복수의 애플리케이션에 대한 특정 요청 유형의 타이밍 특성이 애플리케이션 프로파일 레포지토리(242)에 저장될 수 있다. 일반적으로, 애플리케이션 프로파일 레포지토리(242)는 타이밍 패턴, 타이밍 반복성, 콘텐츠 반복성 등을 포함하는 애플리케이션 요청/응답 특성과 관련된 임의의 유형의 정보 또는 메타데이터를 저장할 수 있다. In some cases, timing characteristics of a particular request type for a particular application, for a plurality of requests of one application, or for a plurality of applications may be stored in the
또한 애플리케이션 프로파일 레포지토리(242)는, 특정 애플리케이션에 의해 사용되는 요청의 유형(가령, 롱 폴, 장기 유지(long-held) HTTP 요청, HTTP 스트리밍, 푸시, COMET 푸시 등)을 나타내는 메타데이터를 저장할 수 있다. 애플리케이션에 의한 요청 유형을 나타내는 애플리케이션 프로파일은, 후속하는 동일한/유사한 요청이 검출될 때, 또는 이미 카테고리화된 애플리케이션으로부터 요청이 검출될 때, 사용될 수 있다. 이러한 방식으로, 추적 및/또는 분석된 적 있는 특정 요청 유형에 대한, 또는 구체적 애플리케이션의 요청에 대한 타이밍 특성은 재분석될 필요가 없다. The
애플리케이션 프로파일은 수명시간(time-to-live)(가령, 디폴트 만료 시간)과 연계될 수 있다. 애플리케이션 프로파일, 또는 다양한 형태의 애플리케이션 또는 요청의 프로파일을 위해 만료 시간을 사용하는 것은 케이스별로 사용될 수 있다. 애플리케이션 프로파일 엔트리의 수명시간(time-to-live) 또는 실제 만료 시간이 디폴트 값으로 설정되거나, 개별적으로 결정되거나, 조합되어 설정될 수 있다. 또한 애플리케이션 프로파일은 무선 네트워크, 물리 네트워크, 네트워크 운영자, 또는 특정 통신업체 특정적일 수 있다. Application profiles may be associated with a time-to-live (eg, default expiration time). Using an expiration time for an application profile, or for various types of application or request profiles, can be used on a case-by-case basis. The time-to-live or actual expiration time of the application profile entry may be set to a default value, individually determined or in combination. The application profile may also be wireless network, physical network, network operator, or specific carrier specific.
하나의 실시예는 애플리케이션 블랙리스트 관리기(201)를 포함한다. 애플리케이션 블랙리스트 관리기(201)는 애플리케이션 캐시 정책 레포지토리(243)에 연결되고, 로컬 프록시 또는 캐싱 정책 관리기(245) 내부에 부분적으로 또는 전부 위치할 수 있다. 마찬가지로, 블랙리스트 관리기(201)는 로컬 프록시 또는 애플리케이션 거동 검출기(236) 내부에 부분적으로 또는 전부 위치할 수 있다. 블랙리스트 관리기(201)는 영구적 또는 일시적으로 '블랙리스트'에 올라갔으며, 캐싱되지 않음이라고 식별되는 서버/호스트의 도착지의 리스트를 집합화, 추적, 업데이트, 관리, 조절, 또는 동적으로 모니터할 수 있다. 도착지 블랙리스트는, 요청에서 식별될 때, 요청이 (셀룰러) 네트워크를 통해 서비스되기 위해 전송되게 하도록 사용될 수 있다. 요청이 블랙리스트 도착지로 전달된다고 검출되기 때문에 요청의 추가 프로세싱이 수행될 수 없다. One embodiment includes an
특정 URL 또는 식별자 패턴(가령, URI 패턴) 등의 주소 식별자에 의해 블랙리스트 도착지가 애플리케이션 캐시 정책 레포지토리(243)에서 식별될 수 있다. 일반적으로, 임의의 이유로, 사용자(모바일 장치(250)의 소유자/사용자), 장치(250)의 운영 체제/모바일 플랫폼, 도착지 자체, (셀룰러 네트워크의) 네트워크 운영자, 인터넷 서비스 제공자, 기타 제3자를 포함한 임의의 측에 의해, 또는 캐싱될 수 없음/캐싱되기 부적합함이라고 알려진 애플리케이션용 도착지들의 리스트에 따라서, 블랙리스트 도착지가 설정되거나 수정될 수 있다. 블랙리스트 도착지 내 일부 항목은, 로컬 프록시(가령, 캐시 적절성 판단 엔진(246))에 의해 수행되는 분석 또는 프로세싱을 기초로 집합화된 도착지를 포함할 수 있다. The blacklist destination may be identified in the application
예를 들어, 응답이 캐싱되기 부적합한 것으로 식별되는 모바일 장치상의 애플리케이션 또는 모바일 클라이언트가 블랙리스트에 추가될 수 있다. 그들의 대응하는 호스트/서버가 모바일 장치(250)상의 요청하는 애플리케이션/클라이언트의 식별자에 추가로, 또는 상기 식별자를 대신하여 추가될 수 있다. 프록시 시스템에 의해 식별되는 이러한 클라이언트의 일부 또는 전부가 블랙리스트에 추가될 수 있다. 예를 들어, 일시적으로, 캐싱되기 부적합한 것으로 식별되는 모든 애플리케이션 클라이언트 또는 애플리케이션에 대해, (타이밍, 주기성, 응답 콘텐츠 변화 빈도, 콘텐츠 예측성, 크기, 등을 기초로) 특정 검출 특성을 갖는 것만 블랙리스트에 올라갈 수 있다.For example, an application or mobile client on the mobile device that the response is identified as inappropriate to be cached may be added to the blacklist. Their corresponding host / server may be added in addition to, or in place of, the identifier of the requesting application / client on mobile device 250. Some or all of these clients identified by the proxy system may be added to the blacklist. For example, for all application clients or applications that are temporarily identified as unsuitable for caching, only those with specific detection characteristics (based on timing, periodicity, response content change frequency, content predictability, size, etc.) are blacklisted. Can go up.
블랙리스트의 항목은 (도착지보다는) 모바일 장치상의 요청하는 애플리케이션 또는 요청하는 클라이언트의 리스트를 포함할 수 있어서, 특정 애플리케이션 또는 특정 클라이언트로부터 요청이 검출될 때, 응답을 위해, 네트워크를 통해 전송될 수 있는데, 이는 블랙리스트의 클라이언트/애플리케이션이 대부분의 상황에서 캐싱되지 않기 때문이다. The item of the blacklist may include a list of requesting applications or requesting clients on the mobile device (rather than destination) so that when a request is detected from a particular application or a specific client, it may be sent over the network for a response. This is because blacklisted clients / applications are not cached in most situations.
애플리케이션이 액세스되는 모바일 장치와 연계된 모바일 계정에 따라, 특정 애플리케이션 프로파일이 상이하게(가령, 로컬 프록시(275) 및 원격 프록시(325)의 상이한 거동) 취급되거나 처리될 수 있다. 예를 들어, 더 많이 지불하는 계정, 즉 프리미어 계정은 무선 네트워크의 더 빈번한 액세스, 또는 더 높은 대역폭 허용을 가능하게 할 수 있고, 따라서 자원의 보존에 비교되는 더 우수한 성능을 강조하면서, 로컬 프록시(275)와 프록시 서버(325) 사이에 구현되는 캐싱 정책에 영향을 미칠 수 있다. 특정 애플리케이션 프로파일은 서로 다른 무선 네트워크 상태 하에서(가령, 혼잡이나 네트워크 작동불능(network outage) 등을 기초로) 상이하게 취급되거나 처리될 수 있다.Depending on the mobile account associated with the mobile device to which the application is accessed, certain application profiles may be handled or processed differently (eg, different behavior of
모바일 장치(250) 상의 복수의 클라이언트 또는 애플리케이션에 대해 캐시 적절성이 결정, 추적, 및 관리될 수 있다. 모바일 장치(250) 상의 특정 클라이언트 또는 애플리케이션에 의해 개시되는 여러 다른 요청, 또는 요청 유형에 대해, 캐시 적절성이 또한 결정될 수 있다. 캐싱 정책 관리기(245)는, 예측가능함, 또는 예측가능할 가능성이 있음을 경험적으로(heuristically) 결정하거나 추정하는 타이밍 예측기(246a) 및/또는 콘텐츠 예측기(246b)와 함께, 다양한 애플리케이션, 또는 특정 애플리케이션에 대한 다양한 요청에 대한 캐싱 가능함 정보를 추적, 관리, 및 저장할 수 있다. 캐싱 가능함 정보는 또한 조건(가령, 애플리케이션이 특정 시각에서, 또는 특정 요일에 캐싱될 수 있거나, 특정 애플리케이션의 특정 요청이 캐싱될 수 있거나, 특정 도착지 주소를 갖는 모든 요청이 캐싱될 수 있다)을 포함할 수 있으며, 상기 조건 하에서, 캐싱이 적절하고, 상기 조건은, 캐시 적절성 판단 엔진(246)에 의해 결정 및/또는 추적될 수 있고, 캐시 적절성 판단 엔진(246)에 연결되는 애플리케이션 캐시 정책 레포지토리(243)에 적절하게 저장 및/또는 업데이트될 수 있다. Cache adequacy may be determined, tracked, and managed for a plurality of clients or applications on mobile device 250. For various other requests, or types of requests initiated by a particular client or application on mobile device 250, cache suitability may also be determined. The caching policy manager 245, in conjunction with the
요청, 애플리케이션, 및/또는 연계된 조건의 캐싱 가능함과 관련된, 애플리케이션 캐시 정책 레포지토리(243)의 정보는, 추후 동일한 요청이 검출될 때 사용될 수 있다. 이러한 방식으로, 판단 엔진(246) 및/또는 타이밍 및 콘텐츠 예측기(246a/b)는, 캐싱 가능함에 대해 평가하기 위해, 요청/응답 타이밍 및 콘텐츠 특성을 추적하고 재분석할 필요가 없다. 덧붙이자면, 일부 경우, 캐싱 가능함 정보는, 직접 통신을 통해, 또는 호스트 서버(가령, 호스트 서버(300)의 프록시 서버(325))를 통해, 또 다른 모바일 장치의 로컬 프록시와 공유될 수 있다. Information in the application
예를 들어, 다양한 모바일 장치상의 로컬 프록시(275)에 의해 검출된 캐싱 가능함 정보가 호스트 서버 상의 원격 호스트 서버 또는 프록시 서버(325)(가령, 도 3A의 예시의 경우, 호스트 서버(300) 또는 프록시 서버(325), 또는 도 1B-C의 예시의 경우 프록시 서버(125))로 전송될 수 있다. 그 후, 원격 호스트 또는 프록시 서버가 애플리케이션 특정적, 요청 특정적 캐싱 가능함 정보, 및/또는 임의의 연계된 조건에 대한 정보를, 사용되기 위해, 하나의 무선 네트워크 내에 있거나, 복수의 무선 네트워크들에 걸쳐 있는(동일한 서비스 제공자이거나 복수의 무선 서비스 제공자) 다양한 모바일 장치 또는 그들의 로컬 프록시에게 분산시킬 수 있다. 일반적으로, 캐싱을 위한 선택 기준은, 예를 들어, 모바일 장치가 활성 상태인지 비활성상태인지 여부를 나타내는 모바일 장치의 상태, 네트워크 조건, 및/또는 라디오 커버리지 통계치(radio coverage statistic)를 더 포함할 수 있다. 캐시 적절성 판단 엔진(246)은, 기준들 중 임의의 하나 이상으로, 임의의 순서로, 캐싱이 적합할 수 있는 소스를 식별할 수 있다. For example, the cacheable information detected by the
애플리케이션 서버/콘텐츠 제공자가 모바일 장치(250) 상에 로컬 캐싱되기 적합할 가능성이 있다고 식별된 또는 검출된 콘텐츠를 가진다면, 캐시 정책 관리기(245)는, 콘텐츠 소스로부터 수신된 콘텐츠를 모바일 장치(250) 상의 로컬 캐시(가령, 도 1C와 도 2A의 예시의 경우, 로컬 캐시(185 또는 285))의 캐시 요소로서 저장함으로써 식별된 소스로부터 수신된 연계된 콘텐츠를 계속 캐싱할 수 있다.If the application server / content provider has identified or detected content that is likely to be suitable for local caching on mobile device 250, cache policy manager 245 may retrieve the content received from the content source from mobile device 250. The associated content received from the identified source can still be cached by storing as a cache element of a local cache (eg,
응답이 캐시 엔트리로서 캐시(285)(가령, 또한 로컬 캐시라고도 지칭됨)에 저장될 수 있다. 요청에 대한 응답에 덧붙여, 캐싱된 엔트리가 응답의 캐싱과 관련된 추가 정보를 갖는 응답 메타데이터를 포함할 수 있다. 메타데이터는 메타데이터 생성기(203)에 의해 생성될 수 있고, 예를 들어, 타이밍 데이터(가령, 캐시 엔트리의 액세스 시간, 또는 캐시 엔트리의 생성 시간(creation time))를 포함할 수 있다. 메타데이터는 추가 정보, 가령, 캐싱된 엔트리로서 저장되는 응답이 다음 번 응답을 만족시키기 위해 사용되는지 여부를 결정하는 데 사용되기 적합한 임의의 정보를 포함할 수 있다. 예를 들어, 메타데이터 정보는, 요청 타이밍 히스토리(가령, 요청 시간, 요청 시작 시점, 요청 종료 시점을 포함하는 요청 타이밍 히스토리), 요청 및/또는 응답의 해시(hash), 시간격, 또는 시간격의 변화 등을 더 포함할 수 있다. The response may be stored in cache 285 (eg, also referred to as a local cache) as a cache entry. In addition to the response to the request, the cached entry may include response metadata with additional information related to the caching of the response. The metadata may be generated by the metadata generator 203 and may include, for example, timing data (eg, access time of a cache entry, or creation time of a cache entry). The metadata may include additional information, such as any information suitable for use in determining whether a response stored as a cached entry is used to satisfy the next response. For example, metadata information may include request timing history (eg, request timing history including request time, request start time, request end time), hash, time interval, or time interval of the request and / or response. It may further include a change.
캐시 엔트리는, 예를 들어, 캐시 무효화기(244)의 TTL 관리기(244a)에 의해 할당되거나 결정될 수 있는 수명시간(TTL: time-to-live)과 연계되어 캐시(285)에 저장되는 것이 일반적이다. 응답이 여전히 유효한지 또는 모바일 장치(250) 상의 특정 요청 또는 클라이언트/애플리케이션에 대해 관련이 있는지 여부에 무관하게, 캐시 엔트리의 수명시간은 엔트리가 캐시(285) 내에서 영속하는 시간이다. 예를 들어, 특정 캐시 엔트리의 수명시간이 12시간으로 설정되는 경우, 캐시 엔트리 내에 포함된 응답 본체가 여전히 유효하고, 관련 요청에 대해 적용 가능할지라도, 캐시 엔트리는 삭제 또는 제거되거나, 그 밖의 다른 방식으로 초과된 수명시간을 갖고 있음이 지시된다. Cache entries are typically stored in
(가령, TTL 관리기(244a)에 의해) 다르게 특정되지 않는 한, 모든 엔트리에 대해 자동으로 디폴트 수명시간이 사용되거나, 개별 TTL(가령, 다양한 동적 또는 정적 기준을 기초로 하여 TTL 관리기(244a)에 의해 결정된 TTL)을 이용해 각각의 캐시 엔트리가 생성될 수 있다. 각각의 엔트리는 응답 데이터 및 임의의 연계된 메타데이터 모두와 연계된 단일 수명시간을 가질 수 있다. 일부 경우, 연계된 메타데이터는 응답 데이터와 상이한 수명시간(가령, 더 긴 수명시간)을 가질 수 있다.Unless otherwise specified (eg, by the TTL manager 244a), default lifetimes are automatically used for all entries, or the TTL manager 244a is based on individual TTL (eg, various dynamic or static criteria). Each cache entry can be generated using the determined TTL). Each entry may have a single lifetime associated with both response data and any associated metadata. In some cases, the associated metadata may have a different lifetime (eg, longer lifetime) than the response data.
이에 추가로, 또는 이를 대신하여, 모바일 장치(250)의 원격에 위치하며 상기 모바일 장치(250)와 무선 통신하는 프록시 서버(가령, 도 1B 및 도 3A의 예시의 경우 프록시 서버(125 또는 325))에게 캐싱될 콘텐츠를 갖는 콘텐츠 소스를 알려서, 새로운 또는 변경된 데이터에 대해 프록시 서버가 콘텐츠 소스(가령, 애플리케이션 서버/콘텐츠 제공자(110))를 모니터할 수 있다. 마찬가지로, 로컬 프록시(가령, 도 1B 및 도 2A의 로컬 프록시(175 또는 275))가 프록시 서버에게, 특정 애플리케이션 서버/콘텐츠 제공자로부터 수신된 콘텐츠가 로컬 캐시(285) 내 캐싱되는 요소로서 저장되어 있다고 알릴 수 있다. In addition or in lieu thereof, a proxy server located remotely of the mobile device 250 and in wireless communication with the mobile device 250 (eg,
콘텐츠가 로컬하게 캐싱되어 있는 경우, 폴링 요청을 서비스하기 위해 모바일 장치의 라디오가 활성화되지 않도록, 캐시 정책 관리기(245)가 애플리케이션 서버/콘텐츠 호스트(가령, 110 또는 310)를 접촉하기 위한 미래의 폴링 요청을 수신하면, 로컬 캐시로부터 캐싱된 요소를 불러와서, 모바일 장치(250)에서 만들어진 폴링 요청에 응답할 수 있다. 예를 들어, 서비스될 응답이 응답인지 확인하기 위해 캐시 룩-업 엔진(205)이 캐시(285)에게 질의할 수 있다. 일치하는(matching) 캐시 엔트리를 식별하는 것과 또한 캐시 엔트리에 응답과 함께 저장된 임의의 메타데이터를 이용하는 것에 응답하여 응답이 캐시로부터 서비스될 수 있다. 요청의 URI 또는 또 다른 유형의 식별자를 이용해(가령, ID 또는 URI 필터(205a)를 통해) 캐시 룩-업 엔진에 의해 캐시 엔트리가 질의될 수 있다. 캐시 룩-업 엔진(205)은, 현재 요청에 대해 서비스될 때 응답이 사용되기에 여전히 적합한지 여부를 결정하기 위해, 일치되는 캐시 엔트리와 함께 저장된 메타데이터를 더 사용할 수 있다(가령, 임의의 타이밍 정보 또는 그 밖의 다른 관련 정보를 추출할 수 있다). If the content is cached locally, future polling for the cache policy manager 245 to contact the application server / content host (eg 110 or 310) so that the radio of the mobile device is not activated to service the polling request. Upon receiving the request, the cached element may be retrieved from the local cache and responded to the polling request made at the mobile device 250. For example, cache look-up engine 205 may query
다양한 복수의 전략들 중 하나 이상을 이용해 엔진(205)에 의한 캐시 룩-업이 수행될 수 있다. 하나의 실시예에서, 적어도 하나의 룩-업 전략이 일치되는 캐시 엔트리를 식별할 때까지, 캐시(285)에 저장된 각각의 엔트리에 대해 복수의 룩-업 전략이 순차적으로 수행될 수 있다. 캐시 룩-업을 수행하기 위해 사용되는 전략은, 엄격한 일치 기준, 또는 비-일치 파라미터를 허용하는 일치 기준을 포함할 수 있다. Cache look-up by engine 205 may be performed using one or more of a variety of strategies. In one embodiment, a plurality of look-up strategies may be performed sequentially for each entry stored in
예를 들어, 룩-업 엔진(205)은, 프록시가 캐시 엔트리를 식별하려 시도하는 중인 현재 요청에서 참조되는 식별자(가령, 호스트 또는 자원에 대한 URI)와 캐시 엔트리와, 함께 저장된 식별자가 정확히 일치함을 찾는 엄격한 일치 전략을 수행할 수 있다. 식별자가 URI 또는 URL을 포함하는 경우, 엄격한 일치를 위한 일치 알고리즘이 URL 내 모든 파라미터와 일치하는 캐시 엔트리를 찾을 것이다. 예를 들면:For example, look-up engine 205 may match an identifier stored in the current request with which the proxy is attempting to identify the cache entry (eg, a URI for a host or a resource) and the cache entry with the identifier stored together. A strict consensus strategy can be followed. If the identifier includes a URI or a URL, the matching algorithm for strict matching will find a cache entry that matches all parameters in the URL. For example:
예시 1.Example 1.
1. 캐시가 http://test.com/products/에 대한 엔트리를 포함한다.1. The cache contains an entry for http://test.com/products/.
2. 요청이 URI http://test.com/products/로 이뤄지는 중이다. 2. The request is being made to the URI http://test.com/products/.
두 URI가 모두 동일하기 때문에, 엄격한 전략이 일치함을 찾을 것이다. Since both URIs are identical, you will find that the strict strategy matches.
예시 2.Example 2.
1. 캐시가 http://test.com/products/?query=all에 대한 엔트리를 포함한다. The cache contains an entry for http://test.com/products/?query=all.
2. 요청이 URI http://test.com/products/?query=sub로 이뤄지는 중이다. 2. The request is being made with the URI http://test.com/products/?query=sub.
앞서 요약된 엄격한 전략 하에서, 질의 파라미터에서 URI가 상이하기 때문에, 일치함은 발견되지 않을 것이다. Under the strict strategy summarized above, no match will be found because the URIs in the query parameters are different.
또 다른 예시적 전략에서, 룩-업 엔진(205)은, 프록시가 일치 캐시 엔트리를 식별하려 시도하는 현재 요청 내 식별자 참조와 부분적으로 일치되는 식별자를 이용해 캐시 엔트리를 찾는다. 예를 들어, 룩-업 엔진(205)은 요청 식별자와 질의 파라미터 값이 상이한 식별자를 이용해 캐시 엔트리를 찾을 수 있다. 이러한 전략을 이용할 때, 룩-업 엔진(205)은 복수의 이전 요청에 대해 수집된 정보(가령, 식별자 내 임의의 파라미터들의 리스트)를 수집하여, 현재 요청의 검출된 임의의 파라미터를 이용해, 추후 체크되도록 할 수 있다. 예를 들어, URI 또는 URL 식별자와 함께 캐시 엔트리가 저장되는 경우, 룩-업 엔진이, 질의 파라미터가 상이한 URI를 이용해 캐시 엔트리를 검색한다. 발견된 경우, 엔진(205)은 이전 요청 동안 수집되거나, 현재 URI/URL에서 검출되거나 상기 현재 URI/URL로부터 추출된 임의의 파라미터가 임의의 파라미터 리스트에 속하는지 여부가 체크된 정보(가령, 임의의 파라미터의 리스트)를 찾기 위해 캐시 엔트리를 검사할 수 있다. In another example strategy, look-up engine 205 looks for a cache entry using an identifier that partially matches an identifier reference in the current request that the proxy is attempting to identify a matching cache entry. For example, the look-up engine 205 may find a cache entry using an identifier that has a different request identifier and query parameter value. When using this strategy, the look-up engine 205 collects the collected information for a plurality of previous requests (eg, a list of any parameters in the identifier), using any detected parameters of the current request, later Can be checked. For example, if a cache entry is stored with a URI or URL identifier, the look-up engine retrieves the cache entry using a URI with different query parameters. If found, the engine 205 checks whether the information collected during the previous request, detected in the current URI / URL or extracted from the current URI / URL belongs to an arbitrary parameter list (eg, any The cache entry can be examined to find a list of parameters.
예시 1.Example 1.
1. 캐시가 http://test.com/products/?query=all에 대한 엔트리를 포함하며, 여기서 질의는 임의(arbitrary)라고 표시된다. 1. The cache contains an entry for http://test.com/products/?query=all, where the query is marked arbitrary.
2. URI http://text.com/products/?query=sub로 요청이 이뤄지는 중이다. 2. A request is being made with the URI http://text.com/products/?query=sub.
질의 파라미터가 임의라고 표시되어 있기 때문에 일치함이 발견될 것이다.Since the query parameters are marked as random, they will be found to match.
예시 2.Example 2.
1. 캐시가 http://test.com/products/?query=all에 대한 엔트리를 포함하며, 질의가 임의라고 표시된다. 1. The cache contains an entry for http://test.com/products/?query=all, and the query is marked as random.
2. URI http://test.com/products/?query=sub&sort=asc로 요청이 이뤄지는 중이다. 2. A request is being made with the URI http://test.com/products/?query=sub&sort=asc.
현재 요청이 캐시 엔트리에서 임의라고 표시되지 않은 파라미터를 포함하기 때문에, 일치함이 발견되지 않을 것이다.Since the current request includes a parameter that is not marked random in the cache entry, no match will be found.
캐시 히트(cache hit)를 검출하기 위한 추가 전략이 채용될 수 있다. 이들 전략은 단독으로, 또는 임의의 조합으로, 구현될 수 있다. 이들 전략 중 임의의 하나가, 일치함을 결정할 때 캐시 히트가 결정될 수 있다. 어떠한 이유로든 요청된 데이터가 캐시(285)로부터 서비스될 수 없다고 룩-업 엔진(205)이 결정할 때 캐시 미스(cache miss)가 지시될 수 있다. 예를 들어, 임의의 또는 모든 이용되는 룩-업 전략에 대해 어떠한 캐시 엔트리도 식별되지 않을 때 캐시 미스가 결정될 수 있다.Additional strategies for detecting cache hits may be employed. These strategies may be implemented alone or in any combination. A cache hit can be determined when any one of these strategies determines a match. A cache miss may be indicated when the look-up engine 205 determines that the requested data cannot be served from the
일치하는 캐시 엔트리가 존재하지만 현재 요청에 대해 무효하다고 또는 관련 없다고 결정될 때도 역시 캐시 미스가 결정될 수 있다. 예를 들어, 룩-업 엔진(205)은, 일치하는 캐시 엔트리와 연계된 메타데이터(가령, 캐시 엔트리의 타이밍 데이터를 포함할 수 있는 메타데이터)를 더 분석하여, 현재의 요청에 응답할 때 사용되기에 여전히 적합한지 여부를 결정할 수 있다. A cache miss can also be determined when a matching cache entry exists but is determined to be invalid or unrelated to the current request. For example, look-up engine 205 further analyzes the metadata associated with the matching cache entry (eg, metadata that may include timing data of the cache entry) to respond to the current request. It can be determined whether it is still suitable for use.
룩-업 엔진(205)이 캐시 히트(가령, 요청된 데이터가 캐시로부터 서비스될 수 있다고 가리키는 이벤트)를 식별할 때, 일치 캐시 엔트리에 저장된 응답이 캐시로부터 서비스되어, 애플리케이션/클라이언트의 요청을 만족시킬 수 있다. When the look-up engine 205 identifies a cache hit (e.g., an event indicating that the requested data can be served from the cache), the response stored in the match cache entry is served from the cache to satisfy the application / client's request. You can.
캐시(285)에 저장된 캐시 엔트리를 이용해 요청을 서비스함으로써, 네트워크 대역폭 및 그 밖의 다른 자원이, 모바일 장치(250)에서 이미 수신된 적이 있는 응답에서 변경되지 않았을 수 있는 폴 응답을 요청/수신하도록 사용될 필요가 없다. 이러한 서비스 및 이행 애플리케이션(가령, 모바일 애플리케이션)의 요청을 로컬 캐시(285) 내 캐시 엔트리를 통해 서비스하고 이행함으로써, 요청이, 대역폭을 추가로 소모하는 무선 네트워크를 통해 전송될 필요가 없기 때문에, 더 효율적인 자원 및 모바일 네트워크 트래픽 활용 및 관리가 가능해진다. 일반적으로, 캐시(285)는 모바일 장치(250)의 전원 켜기와 끄기 사이에서 지속될 수 있고, 애플리케이션/클라이언트 리프레시와 재시작 사이에서도 지속될 수 있다. By servicing requests using cache entries stored in
예를 들어, 로컬 프록시(275)는, 모바일 장치(250) 상의 자신의 모바일 장치(250) 또는 애플리케이션 또는 그 밖의 다른 유형의 클라이언트로부터의 아웃고잉 요청을 수신하면, 요청을 인터셉트하고, 모바일 장치(250)의 로컬 캐시(285)에 캐싱된 응답이 이용가능한지 여부를 결정한다. 로컬 캐시(285)에 캐싱된 응답이 이용가능한 경우, 아웃고잉 요청에, 모바일 장치의 캐시 상의 캐싱된 응답을 이용해 로컬 프록시(275)가 응답한다. 따라서 무선 네트워크를 통해 아웃고잉 요청을 전송할 필요 없이, 아웃고잉 요청이 충족될 수 있으며, 따라서, 네트워크 자원 및 배터리 소모량이 보존된다. For example, when the
하나의 실시예에서, 콘텐츠 서버가 지속형 연결(persistent connection)을 통해(가령, 로컬 프록시에 의한 인터셉트 없이 확립됐을 지속형 연결, 또는 장기 유지(long-held) HTTP 연결, 또는 롱 폴 유형 연결을 통해) 아웃고잉 요청에 응답했을 방식에 대응하도록, 장치(250) 상의 요청하는 애플리케이션/클라이언트에 응답하는 것의 타이밍이 정해진다. 의도된 콘텐츠 소스(가령, 도 1B-C의 콘텐츠 호스트/애플리케이션 서버(110))로부터 수신된 프레시 콘텐츠가 아닌 로컬 캐시(285)로부터 저장된 콘텐츠를 서비스함으로써 최종 사용자 경험이 반영되지 않거나, 최소한만 반영되도록 애플리케이션 거동을 보존하기 위해, 로컬 프록시(275)에 의해 응답의 타이밍이 에뮬레이트되거나 시뮬레이트될 수 있다. 타이밍은, 정확하게 복제되거나, 사용자가 알아차리지 않을 수 있거나 동작 문제를 일으키지 않도록 애플리케이션에 의해 유사하게 처리될 수 허용오차 파라미터 내로 추정될 수 있다. In one embodiment, the content server may establish a persistent connection over a persistent connection (eg, a persistent connection that would have been established without interception by a local proxy, or a long-held HTTP connection, or a long pole type connection). Timing the response to the requesting application / client on the device 250 to correspond to the manner in which it would have responded to the outgoing request. By serving content stored from
예를 들어, 아웃고잉 요청은, 콘텐츠 서버(가령, 도 1B-1C의 예의 경우, 애플리케이션 서버/콘텐츠 제공자)에 대해 의도된 지속형 연결에 대한 요청일 수 있다. 콘텐츠 소스(서버)와의 지속형 연결(가령, 롱 폴, COMET-스타일 푸시, 또는 비동기식 HTTP 요청에서의 그 밖의 다른 임의의 푸시 시뮬레이션, 장기 유지 HTTP 요청, HTTP 스트리밍, 등)에서, 요청이 전송된 후 연결이 임의의 시간 동안 유지된다. 모바일 장치와 서버 간의 연결은, 콘텐츠가 모바일 장치로 전송되기 위해 서버에서 이용가능할 때까지, 지속될 수 있는 것이 일반적이다. 따라서 일반적으로, 롱 폴 요청이 전송되는 시점과 콘텐츠 소스로부터 요청이 수신되는 시점 사이에 약간의 시간 지연이 있을 수 있다. 콘텐츠 소스에 의해 특정 시간 동안 응답이 제공되지 않는 경우, 응답이 전송되지 않은 경우 네트워크 이유로(가령, 소켓 폐쇄(socket closure)로) 연결이 종료될 수 있다. For example, the outgoing request may be a request for a persistent connection intended for a content server (eg, an application server / content provider in the example of FIGS. 1B-1C). In a persistent connection with a content source (server) (e.g., long pole, COMET-style push, or any other push simulation in an asynchronous HTTP request, long-lived HTTP request, HTTP streaming, etc.) The connection is then maintained for any time. The connection between the mobile device and the server typically can last until the content is available at the server for delivery to the mobile device. Thus, in general, there may be a slight time delay between when a long poll request is sent and when a request is received from a content source. If no response is provided by the content source for a particular time, the connection may be terminated for network reasons (eg, with socket closure) if no response is sent.
따라서 콘텐츠 서버로부터 지속형 연결(가령, 롱 폴 스타일 연결)을 통해 전송되는 응답을 에뮬레이트하기 위해, 아웃고잉 요청에 캐싱된 응답으로 응답하기 전에 시간격이 경과되게 함으로써, 콘텐츠 서버의 응답의 방식이 시뮬레이트될 수 있다. 예를 들어, 요청별로, 또는 애플리케이션별로(클라이언트별로) 시간격의 길이가 결정될 수 있다.Thus, in order to emulate a response sent over a persistent connection (e.g., a long pole style connection) from a content server, the response of the content server must be timed out before responding with a cached response to the outgoing request. Can be simulated. For example, the length of time interval may be determined per request or per application (per client).
하나의 실시예에서, 아웃고잉 요청이 발원되는 모바일 장치상의 애플리케이션의 요청 특성(가령, 타이밍 특성)을 기초로, 시간격이 결정된다. 예를 들어, 로컬 캐시 엔트리로 요청에 응답하기 전에 기다리기 위한 시간격을 결정하기 위해 폴 요청 간격이 사용되고, 응답 스케줄러(249a)에 의해 관리될 수 있다.In one embodiment, the time interval is determined based on the request characteristics (eg, timing characteristics) of the application on the mobile device from which the outgoing request originated. For example, the poll request interval can be used to determine the time interval to wait before responding to a request with a local cache entry and can be managed by the
캐시 정책 관리기(245)의 한 가지 실시예는 폴 스케줄 생성기(247)를 포함하고, 폴 스케줄 생성기(247)는 모바일 장치(250) 상의 하나 이상의 애플리케이션에 대해 폴링 스케줄을 생성할 수 있다. 폴링 스케줄은, 모바일 장치를 대신하여 (요청이 전달되는 호스트 서버(호스트 서버(110 또는 310))로 폴링함으로써, 캐싱된 응답이 주기적으로 검증될 수 있도록) 하나 이상의 애플리케이션에 대해 콘텐츠 소스를 모니터링할 때 모바일 장치(250)와 물리적으로 구별 및/또는 구분되는 개체에 의해 사용될 수 있는 폴링 간격을 특정할 수 있다. 모바일 장치(250)를 위해 소스에서 콘텐츠를 모니터링할 수 있는 이러한 외부 개체의 한 가지 예로는 프록시 서버(가령, 도 1B 및 도 3A-C의 예에서 도시되는 프록시 서버(125 또는 325))가 있다. One embodiment of cache policy manager 245 includes a poll schedule generator 247, which can generate a polling schedule for one or more applications on mobile device 250. Polling schedules can monitor content sources for one or more applications (such that polled responses can be periodically verified by polling the host server (
예를 들어, 모바일 장치로부터 콘텐츠 소스로 전달되는 폴링 요청들 간 간격을 기초로 하여, 폴링 스케줄(가령, 폴링 속도/빈도(rate/frequency))이 결정될 수 있다. 모바일 장치(250)에서 (로컬 프록시에 의해) 폴링 스케줄 또는 폴링 속도가 결정될 수 있다. 하나의 실시예에서, 애플리케이션 거동 검출기(236)의 폴 간격 검출기(238)가 모바일 장치(250)로부터 콘텐츠 소스로 전달되는 폴링 요청을 모니터링하여, 임의의 또는 모든 애플리케이션(가령, 모바일 애플리케이션)으로부터 이뤄진 폴링 요청들 간 간격을 결정할 수 있다.For example, based on the interval between polling requests delivered from the mobile device to the content source, a polling schedule (eg, polling rate / frequency) can be determined. The polling schedule or polling rate may be determined (by the local proxy) at the mobile device 250. In one embodiment, the
예를 들어, 폴 간격 검출기(238)는 장치(250) 상의 애플리케이션 또는 클라이언트에 대해 요청과 응답을 추적할 수 있다. 하나의 실시예에서, 동일한 모바일 클라이언트 또는 애플리케이션(가령, 모바일 애플리케이션)에 의해 모바일 장치(250) 상의 애플리케이션(가령, 모바일 애플리케이션)으로부터 개시된 아웃고잉 요청의 검출 전에, 연속하는 요청들이 추적된다. 응답이 캐싱되는 요청에 대해 수집된 요청 정보를 이용해, 폴링 속도(polling rate)가 결정될 수 있다. 하나의 실시예에서, 요청을 생성한 동일한 클라이언트에 의해 생성되는 이전 요청들 사이의 시간격들의 평균으로부터 폴링 속도가 결정된다. 예를 들어, 현재 요청과 이전 요청 사이에서 제 1 간격이 계산될 수 있고, 2개의 이전 요청들 사이에서 제 2 간격이 계산될 수 있다. 제 1 간격과 제 2 간격의 평균으로부터 폴링 속도(polling rate)가 설정될 수 있고, 캐싱 전략을 설정할 때 프록시 서버로 전송될 수 있다.For example, the
평균을 생성할 때, 대안적 간격이 계산될 수 있는데, 가령, 2개의 이전 요청들에 추가되는 복수의 이전 요청들이 사용될 수 있고, 평균을 계산할 때, 셋 이상의 간격이 사용될 수 있다. 일반적으로, 간격을 계산할 때, 특정 요청이, 호스트 서버/콘텐츠 소스로부터 간격 계산을 위해 사용되기 위한 응답을 수신할 필요가 없다. 즉, 요청이 검출되는 한, 요청 전송에 실패한 경우, 또는 응답 불러오기에 실패한 경우라도, 간격 계산에서 특정 요청의 타이밍 특성이 사용될 수 있다. When generating an average, alternative intervals may be calculated, such as a plurality of previous requests in addition to two previous requests may be used, and three or more intervals may be used when calculating the average. In general, when calculating the interval, a particular request does not need to receive a response from the host server / content source to be used for calculating the interval. That is, as long as the request is detected, even if the request fails to transmit or fails to retrieve the response, the timing characteristic of the particular request may be used in the interval calculation.
폴 스케줄 생성기(247)의 한 가지 실시예는 스케줄 업데이트 엔진(247a 및/또는 시간 조정 엔진(247b))을 포함한다. 스케줄 업데이트 엔진(247a)은, 모바일 장치(250) 상의 클라이언트 또는 애플리케이션(가령, 모바일 애플리케이션)으로부터 생성된 실제 요청에서 검출된 간격 변화를 기초로, 이전 설정된 값으로부터 특정 애플리케이션 서버/콘텐츠 호스트가 이용하는 속도(rate) 또는 폴링 간격을 업데이트할 필요가 있는지 여부를 결정할 수 있다. One embodiment of the poll schedule generator 247 includes a
예를 들어, 모니터링 속도(monitoring rate)를 결정하라는 요청이 서로 다른 요청 간격에서 애플리케이션(가령, 모바일 애플리케이션) 또는 클라이언트로부터 전송될 수 있다. 스케줄링된 업데이트 엔진(247a)이 실제 요청의 업데이트된 폴링 간격을 결정하고, 이전에 설정된 속도(rate)와 상이한, 모바일 장치(250)를 대리하여 호스트로 폴링하기 위한 새로운 속도를 생성할 수 있다. 업데이트된 폴링 속도가, 셀룰러 네트워크를 통해 원격 프록시(프록시 서버(325))로 전달되어, 원격 프록시가 특정 호스트를 모니터링할 수 있다. 일부 경우, 호스트를 모니터링하는 원격 프록시 또는 원격 개체에서 업데이트된 폴링 속도가 결정될 수 있다.For example, a request to determine the monitoring rate may be sent from an application (eg, a mobile application) or a client at different request intervals. The scheduled
하나의 실시예에서, 시간 조정 엔진(247b)이, 애플리케이션 서버/콘텐츠 소스(110 또는 310)를 모니터링하기 위해 생성된 폴 스케줄을 더 최적화할 수 있다. 예를 들어, 선택사항으로서, 시간 조정 엔진(247b)이 프록시 서버로 폴링하기 시작할 시간을 특정할 수 있다. 예를 들어, 프록시 서버가 애플리케이션을 모니터링하는 폴링 간격을 설정하는 것에 추가로, 서버/콘텐츠 호스트가 모바일 클라이언트/애플리케이션에서 실제 요청이 생성되는 시간을 특정할 수 있다. In one embodiment, the time coordination engine 247b may further optimize the poll schedule generated to monitor the application server /
그러나 일부 경우, 내재적인 전송 지연 또는 추가되는 네트워크 지연 또는 그 밖의 다른 유형의 대기시간(latency) 때문에, 원격 프록시 서버가 약간의 지연(가령, 수 분, 또는 수 초)을 두고 로컬 프록시로부터 폴 설정을 수신한다. 이는, 모바일 클라이언트/애플리케이션에 의해 요청이 발생한 후, 소스에서의 응답 변화를 검출하는 효과를 가지며, 이는, 응답이 더 이상 현재이거나 유효하지 않은 후 다시 한 번 애플리케이션으로 서비스된 후 캐싱된 응답의 무효화가 발생하도록 한다.In some cases, however, due to inherent transmission delays, additional network delays, or other types of latency, the remote proxy server sets up polling from the local proxy with some delay (for example, minutes or seconds). Receive This has the effect of detecting a change in the response at the source after the request is made by the mobile client / application, which invalidates the cached response after the response has been serviced to the application once again after it is no longer current or valid. To occur.
날짜가 지난 콘텐츠(out-dated content)를 무효화하기 전에 다시 한 번 서비스하는 이러한 최적화되지 않은 결과를 해결하기 위해, 시간 조정 엔진(247b)은 속도(rate)에 추가로 폴링이 시작해야 하는 시점(t0)을 특정할 수 있으며, 여기서, 특정된 초기 시점(t0)은, 프록시 서버(325)에게, 모바일 애플리케이션/클라이언트에 의해 요청이 발생될 때 실제 시간보다 짧은 시간으로 특정되어 알려진다. 이러한 방식으로, 실제 애플리케이션 요청 전에 임의의 콘텐츠 변화가 검출될 수 있도록, 모바일 클라이언트에 의해 실제 요청이 발생하기 약간 전에, 서버가 자원으로 폴링한다. 이는 무효 또는 무관한 날짜가 지난 콘텐츠/응답이, 프레시 콘텐츠(fresh content)가 서비스되기 전에 다시 한 번 서비스되는 것을 방지한다. To solve this unoptimized result of serving once again before invalidating out-dated content, the time coordination engine 247b is added to the rate at which time polling should begin. t0), where the specified initial time point t0 is specified and known to the
하나의 실시예에서, 모바일 장치(250)로부터의 아웃고잉 요청이, 모바일 장치(250) 상의 동일한 애플리케이션 또는 클라이언트로부터의 이전 요청의 타이밍 특성을 기초로 하는, 지속형 연결(가령, 롱 폴, COMET 스타일 푸시, 및 장기 유지 (HTTP) 요청)을 위한 것이라고 검출된다. 예를 들어, 폴 간격 검출기(238)의 롱 폴 검출기(238a)의 요청/응답 추적 엔진(238b)에 의해 요청 및/또는 이에 대응하는 응답이 추적될 수 있다. In one embodiment, the outgoing request from the mobile device 250 is based on the timing characteristics of the previous request from the same application or client on the mobile device 250, such as a persistent connection (eg, long pole, COMET). Style push, and long term maintenance (HTTP) requests). For example, the request and / or corresponding response may be tracked by the request / response tracking engine 238b of the long pole detector 238a of the
연속하는 요청의 타이밍 특성은 애플리케이션 또는 클라이언트에 대한 폴링 스케줄을 설정하도록 결정될 수 있다. 폴링 스케줄은 콘텐츠 변경을 찾기 위해 콘텐츠 소스(콘텐츠 소스/애플리케이션 서버)를 모니터하도록 사용되어, 모바일 장치(250) 내 로컬 캐시 상에 저장된 캐싱된 콘텐츠가 적절하게 관리(가령, 업데이트되거나 폐기)될 수 있다. 하나의 실시예에서, 타이밍 특성은, 예를 들어, 응답 지연 시간('D') 및/또는 유휴 시간(idle time)('IT')을 포함할 수 있다. The timing characteristic of successive requests can be determined to set a polling schedule for the application or client. Polling schedules are used to monitor content sources (content source / application servers) to find content changes so that cached content stored on a local cache within mobile device 250 can be properly managed (eg, updated or discarded). have. In one embodiment, the timing characteristic may include, for example, a response delay time 'D' and / or an idle time 'IT'.
하나의 실시예에서, 출원인 또는 클라이언트 요청에 대한 타이밍도를 결정, 계산, 및/또는 추정하기 위해, 응답/요청 추적 엔진(238b)이 요청과 응답을 추적할 수 있다. In one embodiment, the response / request tracking engine 238b may track the request and the response to determine, calculate, and / or estimate a timing diagram for an applicant or client request.
예를 들어, 제 1 요청에 따라 모바일 장치에서 응답이 수신된 후, 응답/요청 추적 엔진(238b)이, 모바일 장치상의 클라이언트에 의해 개시되는 제 1 요청(요청0)과, 모바일 장치상의 클라이언트에 의해 개시되는 제 1 요청(요청1)을 검출한다. 제 2 요청은 제 1 요청에 뒤따르는 요청이다.For example, after a response is received at the mobile device according to the first request, the response / request tracking engine 238b may be configured to send the first request (request 0) initiated by the client on the mobile device and the client on the mobile device. Detect the first request (request1) initiated by the. The second request is a request following the first request.
하나의 실시예에서, 응답/요청 추적 엔진(238b)이 요청 및 응답을 추적하여, 애플리케이션 또는 클라이언트 요청에 대한 타이밍도를 결정, 계산, 및/또는 추정할 수 있다. 제 1 요청에 따라 모바일 장치에서 응답이 수신된 후, 응답/요청 추적 엔진(238b)은, 모바일 장치상의 클라이언트에 의해 개시되는 제 1 요청과, 모바일 장치상의 클라이언트에 의해 개시되는 제 2 요청을 검출할 수 있다. 제 1 요청은 제 1 요청에 뒤따르는 요청이다. In one embodiment, response / request tracking engine 238b may track requests and responses to determine, calculate, and / or estimate timing diagrams for application or client requests. After the response is received at the mobile device according to the first request, the response / request tracking engine 238b detects the first request initiated by the client on the mobile device and the second request initiated by the client on the mobile device. can do. The first request is a request following the first request.
응답/요청 추적 엔진(238b)은 제 1 요청, 제 2 요청, 및 상기 제 1 요청에 따라 수신된 응답 간의 상대적 타이밍을 더 결정한다. 일반적으로 애플리케이션에 의해 생성되는 요청이 롱 폴 요청인지 여부를 결정하기 위해, 상대적 타이밍이 롱 폴 검출기(238a)에 의해 사용될 수 있다. The response / request tracking engine 238b further determines the relative timing between the first request, the second request, and the response received in accordance with the first request. In general, relative timing may be used by long pole detector 238a to determine whether a request generated by an application is a long pole request.
일반적으로, 상대적 타이밍을 계산할 때 응답/요청 추적 엔진(238b)에 의해 사용되는 제 1 요청 및 제 2 요청이, 롱 폴 헌팅 주기가 정착된 후, 또는 롱 폴 헌팅이 발생하지 않는 경우에, 사용되기 위해 선택된다. 롱 폴 헌팅 주기의 일반적인 타이밍 특성이, 예를 들어, 롱 폴 헌팅 검출기(238c)에 의해 검출될 수 있다. 즉, 응답/요청 추적 엔진(238b)에 의해 추적되며, 특정 요청이 롱 폴인지 여부를 결정하기 위해 사용되는 요청은, 롱 폴이 정착된 후, 발생한다. In general, the first request and the second request used by the response / request tracking engine 238b when calculating relative timing are used after the long pole hunting period is settled or when long pole hunting does not occur. Is chosen to be. General timing characteristics of the long pole hunting period can be detected, for example, by the long
하나의 실시예에서, 롱 폴 헌팅 검출기(238c)는, 증가하는 요청 간격(가령, 증가하는 지연 시간) 및 이에 뒤따르는 어떠한 응답도 없는 요청(가령, 연결이 타임 아웃됨)을 검출함으로써, 또는 증가하는 요청 간격 및 이에 뒤따르는 간격의 감소를 검출함으로써, 헌팅 모드를 식별하거나 검출할 수 있다. 덧붙이자면, 롱 폴 헌팅 검출기(238c)가 필터 값 또는 임계값을, 그 이상에서 검출된 지연이 롱 폴 요청-응답 지연이라고 간주될 수 있는 요청-응답 시간 지연 값(가령, 절댓값)에 적용할 수 있다. 필터 값은 롱 폴의 임의의 적합한 값 특성 및/또는 네트워크 조건(가령, 2초, 5초, 10초, 15초, 20초, 등)일 수 있으며, 필터 또는 임계값으로서 사용될 수 있다. In one embodiment, the long
응답 지연 시간('D')은, 요청이 전송된 후 응답을 수신하기 위한 시작 시점을 지칭하고, 유휴(idle)는 응답이 수신된 후 뒤따르는 요청을 전송하기 위한 시간을 지칭한다. 하나의 실시예에서, 응답 지연 시간('D') 또는 ('D')의 평균(가령, 임의의 시간 주기 동안의 임의의 평균)의 유휴 시간('IT')에 대한 비교(가령, 추적 엔진(238b)에 의해 수행되는 비교)를 토대로, 예를 들어, 롱 폴 검출기(238a)에 의해, 아웃고잉 요청이 지속형 연결에 대한 것이라고 검출된다. 사용되는 평균의 개수는 고정되거나, 동적으로 조절되거나, 더 긴 시간 동안 변경될 수 있다. 예를 들어, 응답 지연 시간 간격이 유휴 시간 간격보다 큰 경우(D>IT 또는 D>>IT), 클라이언트에 의해 개시되는 요청이 롱 폴 요청이라고 결정된다. 하나의 실시예에서, 롱 폴 검출기의 추적 엔진(238b)이 응답 지연 시간 간격을, 제 1 요청의 시점과 응답의 초기 검출 또는 완전 수령 시점 사이에 경과된 시간의 크기로서, 계산, 결정, 또는 추정한다. The response delay time 'D' refers to the starting point for receiving a response after the request is sent, and idle refers to the time for sending a request that follows after the response is received. In one embodiment, a comparison (eg, tracking) of the idle time ('IT') of the average of the response delay time ('D') or ('D') (eg, any average for any time period). Based on the comparison performed by engine 238b), for example, by long pole detector 238a, it is detected that the outgoing request is for a persistent connection. The number of averages used may be fixed, dynamically adjusted, or changed for longer periods of time. For example, if the response delay time interval is greater than the idle time interval (D> IT or D >> IT), it is determined that the request initiated by the client is a long poll request. In one embodiment, the tracking engine 238b of the long pole detector calculates, determines, or measures the response delay time interval as the amount of time elapsed between the time of the first request and the time of initial detection or full receipt of the response. Estimate.
하나의 실시예에서, 예를 들어, 롱 폴 요청 또는 롱 폴 HTTP 요청에 대한 응답에서 확립된 지속형 연결이, 이전 요청에 대한 응답의 수신 후 다음번 요청의 즉각적인 또는 거의 즉각적인 발생을 검출하는 것을 특징으로 갖기 때문에, 유휴 시간('IT')이 짧을 때(가령, IT~0), 요청은 지속형 연결에 대한 것이라고 검출된다. 따라서, 유휴 시간('IT')이 이러한 즉각적이거나 거의 즉각적인 재-요청을 검출하도록 사용되어, 롱 폴 요청을 식별할 수 있다. 제 1 요청에 대한 응답이 수신된 후, 추적 엔진(238b)에 의해 결정된 절대 또는 상대적 타이밍이 사용되어, 제 2 요청이 즉각적이거나 거의 즉각적으로 재-요청됐는지 여부를 결정할 수 있다. 예를 들어, IT가 작아서 D+RT+IT~D+RT인 경우, 요청이 롱 폴 요청이라고 카테고리화될 수 있다. IT는 임계값보다 작은 경우 작은 것으로 판단될 수 있다. 임계값은 고정되거나, 짧은 시간 주기(1세션, 1일, 1달 등) 동안 계산될 수 있거나, 더 긴 시간 주기(가령, 몇 달, 또는 분석의 수명) 동안 계산될 수 있다. 예를 들어, 매 요청에 대하여, 평균 IT가 계산될 수 있고, 이 평균 IT를 이용하여 임계치가 결정될 수 있다(가령, 특정 퍼센티지 미만의 평균 IT가 임계치로서 사용될 수 있다). 이로 인하여, 시간의 흐름에 따라 임계치는 네트워크 상태 및 서버 수용력의 변경, 자원 이용가능도 또는 서버 응답의 변경에 자동으로 적응될 수 있다. 고정된 임계치는 임의의 값(예를 들어, 1s, 2s, 3s,... 등, 그러나 이에 제한되지 않음)을 취할 수 있다. In one embodiment, for example, a persistent connection established in response to a long pole request or a long pole HTTP request detects an immediate or near immediate occurrence of the next request after receipt of a response to the previous request. When the idle time ('IT') is short (eg IT ~ 0), the request is detected as being for a persistent connection. Thus, idle time ('IT') can be used to detect this immediate or near immediate re-request to identify the long pole request. After a response to the first request is received, the absolute or relative timing determined by the tracking engine 238b may be used to determine whether the second request was re-requested immediately or near instantaneously. For example, if IT is small and D + RT + IT ~ D + RT, the request may be categorized as a long pole request. IT may be determined to be smaller when it is smaller than the threshold. The threshold may be fixed or calculated for a short time period (one session, one day, one month, etc.) or may be calculated for a longer time period (eg, several months, or the lifetime of the analysis). For example, for each request, an average IT can be calculated, and a threshold can be determined using this average IT (eg, an average IT below a certain percentage can be used as the threshold). As such, over time, the threshold may be automatically adapted to changes in network conditions and server capacity, resource availability, or server responses. The fixed threshold may take any value (eg, 1s, 2s, 3s, ..., etc., but not limited to).
하나의 실시예에서, 롱 폴 검출기(238a)는, (가령, 추적 엔진(238b)에 의해 결정된) 상대적 타이밍을, 타 애플리케이션에 대한 요청-응답 타이밍 특성에 비교하여, 애플리케이션의 요청이 롱 폴 요청인지 여부를 결정할 수 있다. 예를 들어, 응답 지연 간격 시간(가령, x번의 요청에 대한 평균, 또는 x 시간에 걸쳐 평균내진 임의의 개수의 지연 간격 시간)이 임계값보다 큰 경우, 클라이언트 또는 애플리케이션에 의해 개시되는 요청이 롱 폴 요청이라고 결정될 수 있다. In one embodiment, the long pole detector 238a compares the relative timing (e.g., determined by the tracking engine 238b) to the request-response timing characteristic for another application so that the request of the application is a long pole request. Can be determined. For example, if the response delay interval time (eg, average for x requests, or any number of delay intervals averaged over x times) is greater than the threshold, the request initiated by the client or application is long. It can be determined as a poll request.
타 클라이언트에 의해, 예를 들어, 요청/응답 추적 엔진(238b)에 의해 및/또는 애플리케이션 프로파일 생성기(239)(가령, 응답 지연 간격 추적기(239a))에 의해, 발생된 요청에 대해 응답 지연 간격 시간을 이용해 임계값이 결정될 수 있다. 상기 타 클라이언트는 동일한 모바일 장치에 상주할 수 있고, 모바일 장치상의 구성요소에 의해 임계값이 로컬하게 결정된다. 예를 들어, 모든 네트워크에 걸쳐 있는 모든 자원 서버에 대한 모든 요청에 대해 임계값이 결정될 수 있다. 모든 요청 또는 적용 가능한 임계값을 갖지 않는 임의의 요청에 대해 사용되도록 임계값이 특정 상수 값(가령, 30초)으로 설정될 수 있다(가령, D>30초인 경우 롱 폴이 검출된다).Response delay intervals for requests generated by other clients, for example by request / response tracking engine 238b and / or by application profile generator 239 (eg, response delay interval tracker 239a). The threshold may be determined using time. The other client may reside on the same mobile device and the threshold is locally determined by a component on the mobile device. For example, a threshold may be determined for all requests for all resource servers across all networks. The threshold may be set to a specific constant value (eg, 30 seconds) to be used for all requests or for any request that does not have an applicable threshold (eg, a long pole is detected if D> 30 seconds).
일부 경우, 상기 타 클라이언트가 서로 다른 모바일 장치상에 상주하며, 임계치가, 모바일 장치 외부에 위치하며, 무선 네트워크를 통해 복수의 서로 다른 모바일 장치와 통신할 수 있는 프록시 서버(가령, 도 3A-B의 예시의 경우, 호스트(300)의 프록시 서버(325))에 의해 결정될 수 있으며, 이는 도 3B를 참조하여 더 설명될 것이다. In some cases, proxy servers (eg, FIGS. 3A-B) may reside on different mobile devices and thresholds may be located outside the mobile device and communicate with a plurality of different mobile devices over a wireless network. Can be determined by
하나의 실시예에서, 캐시 정책 관리기(245)가 폴링 스케줄을 프록시 서버(가령, 도 1B-1C 및 도 3A의 예시에서 나타난 프록시 서버(125 또는 325))로 전송하고, 프록시 서버에 의해, 예를 들어, 변경된 콘텐츠나 새로운 콘텐츠(요청 또는 애플리케이션과 연계된 캐싱된 응답과 상이한 업데이트된 응답)를 찾기 위해 콘텐츠 소스를 모니터링하는 데 사용될 수 있다. 프록시로 전송된 폴링 스케줄은 복수의 타이밍 파라미터, 가령, 간격(요청 1에서 요청 2까지의 시간) 또는 타임 아웃 간격(예를 들어 롱 폴에서 사용되는, 응답을 대기하는 시간)(그러나 이에 국한되지 않음)를 포함할 수 있다. 요청/응답 타이밍 시퀀스의 타이밍도를 참조하면, 타이밍 간격('R1', 'D', 'RT' 및/또는 'IT') 또는 상기 값들의 임의의 통계적 조작(가령, 평균, 표준 편차 등)이 프록시 서버로 전체적으로 또는 부분적으로 전송될 수 있다. In one embodiment, cache policy manager 245 sends a polling schedule to a proxy server (eg,
예를 들어, 로컬 프록시(275)가 롱 폴을 검출하는 경우, 요청/응답 타이밍 시퀀스의 다양한 타이밍 간격(가령, 'D', 'RT' 및/또는 'IT')이 프록시 서버(325)로 전송되어, 콘텐츠 소스(가령, 애플리케이션 서버/콘텐츠 호스트(110))로 폴링할 때 사용될 수 있다. 또한 로컬 프록시(275)는 프록시 서버(325)에게, 모니터링될 특정 애플리케이션 또는 요청 롱 폴 요청이라고 알려줄 수 있다(가령, 프록시 서버에게 "롱 폴 플래그(long poll flag)"를 설정하도록 명령함). 덧붙이자면, 프록시 서버가 다양한 타이밍 간격을 사용하여, 모바일 장치를 대리하여 킵-얼라이브 지시자(keep-alive indication)를 전송할 때를 결정할 수 있다. For example, when the
특정 요청에 대해 애플리케이션 서버/콘텐츠 소스로부터 새롭거나 변경된 데이터(가령, 업데이트된 응답)가 검출될 때 캐싱 정책 관리기(245)의 로컬 캐시 무효화기(244)가 로컬 캐시(가령, 캐시(185 또는 285)) 내 캐시 요소를 무효화할 수 있다. 프록시 서버(가령, 프록시(325) 또는 호스트 서버(300))로부터 수신된 통지를 기초로 하여, 캐싱된 응답이 아웃고잉 요청에 대해 무효인 것으로 결정될 수 있다. 모바일 클라이언트의 요청에 대해 응답을 제공하는 소스가 모니터링되어, 요청에 대한, 모바일 장치(250)의 캐시에 저장된 캐싱된 응답의 관련성(relevancy)을 결정할 수 있다. 예를 들어, 특정 요청 또는 특정 애플리케이션에 대해 캐싱된 응답이 더 이상 유효하지 않을 때, 캐싱된 무효화기(244)가 모바일 장치의 캐시에서 캐싱된 응답을 더 제거/삭제할 수 있다. When new or changed data (eg, an updated response) is detected from an application server / content source for a particular request, the local cache invalidator 244 of the caching policy manager 245 is configured to cache the local cache (eg,
하나의 실시예에서, 캐싱된 응답은 아웃고잉 요청을 발생시킨 애플리케이션으로 다시 한 번 제공된 후, 캐싱된 응답이 더 이상 유효하지 않다고 판단되면 캐시로부터 제거된다. 캐싱된 응답은 시간 간격 동안 기다리지 않고 제공될 수 있거나, 시간 간격(가령, 롱 폴 내 응답 지연을 에뮬레이트하기 위해 특정된 것으로 판단된 시간 간격) 동안 기다린 후 다시 제공될 수 있다. 하나의 실시예에서, 시간 간격이 응답 지연 'D', 또는 둘 이상의 응답 지연 'D'의 값의 평균 값이다. In one embodiment, the cached response is once again provided to the application that issued the outgoing request and then removed from the cache if it is determined that the cached response is no longer valid. The cached response may be provided without waiting for a time interval, or may be provided again after waiting for a time interval (eg, a time interval determined to be specific to emulate a response delay within a long pole). In one embodiment, the time interval is the average value of the values of the response delay 'D', or two or more response delays 'D'.
예를 들어, 새로운 데이터 또는 변경된 데이터가 프록시 서버(가령, 도 1B-1C 및 도 3A의 예시에서 나타난 프록시 서버(125 또는 325))에 의해 검출될 수 있다. 특정 요청/폴에 대한 캐시 엔트리가 무효화된 때, 모바일 장치(250)상의 라디오의 사용이 (가령, 로컬 프록시(275) 또는 캐시 정책 관리기(245)에 의해) 활성화되어, 후속하는 폴링 요청을 만족시킬 수 있고, 이는 도 9-10의 상호대화도를 참조하여 더 설명될 것이다. For example, new or changed data may be detected by a proxy server (eg,
캐시 정책 관리기(245)의 한 가지 실시예는, 애플리케이션 또는 위젯에 의해 모바일 장치(250)에서 생성되는 폴/콘텐츠 요청을 만족시키기 위해 로컬하게 캐싱된 엔트리를 사용할지 여부를 결정할 수 있는 캐시 또는 연결 선택 엔진(249)을 포함한다. 예를 들어, 로컬 프록시(275) 또는 캐시 정책 관리기(245)는, 애플리케이션 서버/콘텐츠 제공자를 접촉하기 위해 모바일 장치상의 애플리케이션(가령, 모바일 애플리케이션)에 의해 만들어지는 폴링 요청을 인터셉트할 수 있다. 선택 엔진(249)은 인터셉트된 요청에 대해 수신된 콘텐츠가 캐시 요소로서 로컬하게 저장됐는지 여부를 결정할 수 있음으로써, 애플리케이션(가령, 모바일 애플리케이션)에 의해 만들어진 요청을 만족시키기 위해 모바일 장치의 라디오가 활성화될 필요가 있는지 여부를 결정할 수 있고, 또한 캐싱된 응답을 이용해 아웃고잉 요청에 대해 응답하기 전에, 상기 캐싱된 응답이 상기 아웃고잉 요청에 대해 여전히 유효한지 여부를 판단할 수 있다. One embodiment of cache policy manager 245 is a cache or connection that may determine whether to use locally cached entries to satisfy poll / content requests generated by mobile device 250 by an application or widget. And a
하나의 실시예에서, 로컬 프록시(275)는, 관련 캐싱된 콘텐츠가 존재하며 여전히 유효하다고 판단한 것에 응답하여, 로컬 캐시로부터 캐싱된 요소를 불러와 응답을 폴링 요청을 한 애플리케이션(가령 모바일 애플리케이션)에 제공할 수 있음으로써, 모바일 장치의 라디오가 애플리케이션(가령, 모바일 애플리케이션)에 응답을 제공하기 위해 활성화되지 않게 된다. 일반적으로 로컬 프록시(275)는, 캐싱된 응답과 상이한 업데이트된 응답이 검출될 때까지 아웃고잉 요청이 수신될 때마다 캐싱된 응답을 계속 제공할 수 있다. In one embodiment, in response to determining that the associated cached content is present and still valid, the
캐싱된 응답이 더 이상 유효하지 않다고 판단될 때, 특정 요청에 대한 새로운 요청이 업데이트된 응답을 위해 무선 네트워크를 통해 전송된다. 새로운 그리고 업데이트된 응답에 대한 요청이, 애플리케이션 서버/콘텐츠 제공자(가령, 서버/호스트(110)) 또는 호스트 서버상의 프록시 서버(가령, 호스트(300)상의 프록시(325))로 전송될 수 있다. 하나의 실시예에서, 시간 간격 내에 새로운 응답이 수신되지 않을 경우, 캐싱된 응답은, 모바일 장치상의 캐시에서 제거되기 전에, 아웃고잉 요청에 대한 응답으로서 제공될 수 있다. When it is determined that the cached response is no longer valid, a new request for a particular request is sent over the wireless network for an updated response. Requests for new and updated responses may be sent to an application server / content provider (eg, server / host 110) or a proxy server on a host server (eg,
도 2C는 도 2A의 예에서 도시된 분산 프록시 시스템의 클라이언트 측 상에서의 애플리케이션 거동 검출기(236) 및 로컬 프록시(275) 내 캐싱 정책 관리기(245)의 구성요소의 또 하나의 예를 도시하는 블록도를 도시한다. 도시된 애플리케이션 거동 검출기(236) 및 캐싱 정책 관리기(245)는, 예를 들어, 로컬 프록시(275)가 캐시 디피트(cache defeat)를 검출하고, 캐시를 디피트하도록 의도된 식별자에 의해 주소지정된 콘텐츠의 캐싱을 수행하도록 할 수 있다.FIG. 2C is a block diagram illustrating another example of components of an
하나의 실시예에서, 캐싱 정책 관리기(245)는 캐시 디피트 해결 엔진(221), 식별자 포멀라이저(identifier formalizer)(211), 캐시 적절성 판단 엔진(246), 폴 스케줄 생성기(247), 애플리케이션 프로토콜 모듈(248), 캐시 질의 모듈(229)을 갖는 캐시 또는 연결 선택 엔진(249), 및/또는 로컬 캐시 무효화기(244)를 포함한다. 캐시 디피트 해결 엔진(221)은 패턴 추출 모듈(222) 및/또는 캐시 디피트 파라미터 검출기(223)를 더 포함할 수 있다. 캐시 디피트 파라미터 검출기(223)는 랜덤 파라미터 검출기 및/또는 시간/날짜 파라미터 검출기(226)를 더 포함할 수 있다. 하나의 실시예는 판단 엔진(246)으로 연결된 애플리케이션 캐시 정책 레포지토리(243)를 더 포함한다. In one embodiment, the caching policy manager 245 includes a cache defeat resolution engine 221, an
하나의 실시예에서, 애플리케이션 거동 검출기(236)는 패턴 검출기(237), 폴 간격 검출기(238), 애플리케이션 프로파일 생성기(239), 및/또는 우선순위 엔진(241)을 포함한다. 패턴 검출기(237)는, 예를 들어, 랜덤 파라미터 검출기(233) 및/또는 시간/날짜 파라미터 검출기(234)를 갖는 캐시 디피트 파라미터 검출기(223)를 더 포함할 수 있다. 한 가지 실시예는, 애플리케이션 프로파일 생성기(239)로 연결되어 있는 애플리케이션 프로파일 레포지토리(242)를 더 포함한다. 애플리케이션 프로파일 생성기(239) 및 우선순위 엔진(241)은 도 2A의 예시의 애플리케이션 거동 검출기(236)의 설명과 관련하여 기재되었다. In one embodiment, the
캐시 디피트 해결 엔진(221)은 콘텐츠 또는 콘텐츠 소스(가령, 서버 또는 호스트)를 검출, 식별, 추적, 관리, 및/또는 모니터링하며, 상기 콘텐츠 또는 콘텐츠 소스는, 캐시를 디피트하거나 캐시를 디피트하도록 의도된 하나 이상의 메커니즘을 갖는 식별자를 이용하거나, 및/또는 식별자(가령, URL 및/또는 URI 등의 자원 식별자)에 의해 주소지정된다. 캐시 디피트 해결 엔진(221)은, 예를 들어, 식별자가 캐시를 디피트하거나 디피트할 가능성이 있는 애플리케이션 또는 클라이언트에 의해 발생되는 특정 데이터 요청으로부터, 다른 경우라면, 데이터 요청이 캐싱 가능한 호스트 또는 서버(가령, 애플리케이션 서버/콘텐츠 호스트(110 또는 310))로부터 콘텐츠 또는 응답을 주소지정할 곳을 검출할 수 있다. Cache defeat resolution engine 221 detects, identifies, tracks, manages, and / or monitors the content or content source (eg, server or host), which content or content source deselects the cache or decodes the cache. Using an identifier having one or more mechanisms intended to fit, and / or addressed by an identifier (eg, a resource identifier such as a URL and / or a URI). The cache defeat resolution engine 221 may be configured to, for example, from a particular data request issued by an application or a client whose identifier is likely to or will cache the cache, if the data request is a cacheable host or Where to address the content or response may be detected from a server (eg, application server /
하나의 실시예에서, 캐시 디피트 해결 엔진(221)은 모바일 장치(250)에서 검출되는 데이터 요청의 식별자를 이용해 콘텐츠 소스(가령, 애플리케이션 서버/콘텐츠 호스트(110 또는 310))에 의해 사용되는 캐시 디피트 메커니즘을 검출하거나 식별한다. 캐시 디피트 해결 엔진(221)은 캐시 디피트 메커니즘이 사용됨을 가리킬 수 있는 식별자에서 파라미터를 검출하거나 식별할 수 있다. 예를 들어, 포맷, 구문(syntax), 또는 파라미터의 패턴이 사용되어, 캐시 디피트(가령, 패턴 추출 모듈(222)에 의해 결정되거나 추출되는 상태의 패턴, 포맷, 또는 구문)를 식별할 수 있다.In one embodiment, the cache defeat resolution engine 221 uses the identifier of the data request detected at the mobile device 250 to cache the content source (eg, application server /
패턴 추출 모듈(222)은 식별자를 복수의 파라미터 또는 성분으로 파스(parse)하고, 각각의 파라미터에 대해 매칭 알고리즘(matching algorithm)을 수행하여, 그 중 어느 것이 하나 이상의 지정된 포맷(가령, 날짜 및/또는 시간 포맷)과 매칭하는지를 식별할 수 있다. 예를 들어, (캐시 디피트 파라미터 검출기(223)에 의해) 매칭의 결과, 또는 식별자로부터 파스된 파라미터들이 사용되어, 하나 이상의 변하는 파라미터를 포함할 수 있는 캐시 디피트 파라미터를 식별할 수 있다.The
하나의 실시예에서, 캐시 디피트 파라미터 검출기(223)는 (가령, 랜덤 파라미터 검출기(224)에 의해) 랜덤 파라미터를 검출하거나 및/또는 일반적으로 캐시 디피트를 위해 사용되는 날짜 및/또는 시간 파라미터를 검출할 수 있다. 캐시 디피트 파라미터 검출기(223)는 랜덤 파라미터(가령, 도 7에 도시된 파라미터(752)로 나타난 것)를 검출하거나, 및/또는 이들 파라미터에 대해 일반적으로 사용되는 포맷을 이용하고 패턴 매칭 알고리즘 및 테스트를 이용해, 시간/날짜를 검출할 수 있다. In one embodiment, cache diptight parameter detector 223 detects random parameters (eg, by random parameter detector 224) and / or the date and / or time parameters generally used for cachepitt. Can be detected. Cache dip parameter detector 223 detects random parameters (e.g., represented by parameter 752 shown in FIG. 7), and / or utilizes commonly used formats for these parameters, Tests can be used to detect time / date.
패턴, 포맷, 및/또는 구문을 검출하는 것에 추가로, 캐시 디피트 파라미터 검출기(223)는 특정 파라미터가 캐시를 디피트하는 중인지 여부와 분산 캐싱 시스템에 의해 주소지정된 콘텐츠가 캐싱될 수 있는지 여부를 더 결정하거나 확인한다. 캐시 디피트 파라미터 검출기(223)는, 특정 데이터 요청에 의해 사용되는 식별자에 대해 수신된 응답을 분석함으로써, 이를 검출할 수 있다. 일반적으로, 복수의 데이터 요청이 복수의 데이터 요청 각각에 대해 상이하게 변하는 파라미터를 갖는 식별자를 사용할 때조차, 복수의 데이터 요청에 대응하는 응답들이 동일할 때 식별자 내 변하는 파라미터가 캐시 디피트를 가리키도록 식별될 수 있다. 예를 들어, 요청/응답 쌍은, 자원 식별자가 각각의 요청에 따라 변하는 파라미터를 포함할지라도, 수신된 응답이 동일함을 나타낸다.In addition to detecting the pattern, format, and / or syntax, the cache definite parameter detector 223 can determine whether a particular parameter is debiting the cache and whether content addressed by the distributed caching system can be cached. Decide or confirm more. The cache bite parameter detector 223 may detect this by analyzing the received response for the identifier used by the particular data request. In general, even when a plurality of data requests use identifiers having differently varying parameters for each of the plurality of data requests, the varying parameter in the identifier points to cache depth when the responses corresponding to the plurality of data requests are the same. Can be identified. For example, a request / response pair indicates that the received response is the same, even though the resource identifier includes a parameter that varies with each request.
예를 들어, 변하는 파라미터가 캐시 디피트를 나타낸다고 식별하기 위해, 적어도 2개의 동일한 응답이 요구될 수 있다. 일부 경우, 적어도 3개의 동일한 응답이 필요할 수 있다. 요청들 간에 변하는 값을 갖는 특정 파라미터가 캐시 디피트임을 결정하기 위해 필요한 동일한 응답의 개수에 대한 요건이 애플리케이션 특정적, 상황 종속적, 및/또는 사용자 종속적/사용자 특정적, 또는 이들의 조합일 수 있다. 또한 이러한 요건은 정적이거나, 특정 성능 임계치 및/또는 사용자 경험에 대한 명시적/묵시적 피드백(가령, 사용자 또는 애플리케이션이 요청에 응답하여 관련/프레시 콘텐츠를 수신하는 중인지 여부)을 충족하기 위해, 분산 캐시 시스템에 의해, 동적으로 조절될 수 있다. 애플리케이션이 응답 캐싱 때문에 오작동하기 시작하는 경우, 및/또는 사용자가 불만족을 표시하거나(명시적 사용자 피드백) 시스템이 사용자 불만족을 검출하는 경우, 캐시 디피트를 확정하기 위해, 또는 시스템이 특정 파라미터를 캐시 디피트에 대해 의도된 것으로 취급하기 위해, 더 많은 동일한 응답이 필요할 수 있다. For example, at least two identical responses may be required to identify that the changing parameter represents a cache bite. In some cases, at least three identical responses may be needed. The requirement for the same number of responses needed to determine that a particular parameter with a value that varies between requests may be cache default may be application specific, context dependent, and / or user dependent / user specific, or a combination thereof. . These requirements may also be static or distributed caches to meet explicit / implicit feedback on specific performance thresholds and / or user experience (e.g. whether the user or application is receiving related / fresh content in response to a request). By the system, it can be adjusted dynamically. If the application starts to malfunction due to response caching, and / or if the user indicates dissatisfaction (explicit user feedback) or if the system detects user dissatisfaction, or to confirm the cache dip, or the system caches certain parameters. More identical responses may be needed to treat them as intended for the default.
캐시 적절성 판단 엔진(246)은, 모바일 장치(250)가 상호대화하는 콘텐츠 소스(가령, 도 1C의 예시에서 애플리케이션 서버/콘텐츠 제공자(110))로부터의 콘텐츠가 캐싱에 적합할 수 있는 콘텐츠를 가지는지 여부를 검출, 판정, 또는 결정할 수 있다. 일부 경우, 특정 애플리케이션 서버/콘텐츠 제공자(가령, 도 1C의 서버/제공자(110))가 기준들의 세트(예를 들어, 콘텐츠 소스로부터 요청되는 콘텐츠의 시간 중요도를 특정하는 기준)를 기초로 캐싱에 적합한 것으로 결정된다. 하나의 실시예에서, 로컬 프록시(가령, 도 1B-1C 및 도 2A의 로컬 프록시(175 또는 275))가, 애플리케이션에 의해 이뤄지는 후속하는 요청들을 만족하기 위해, 애플리케이션에 의해 요청받은 호스트 서버로부터의 콘텐츠를, 모바일 장치상의 로컬 캐시 내 캐싱된 요소로서 저장하기 위한 선택 기준을 적용한다. Cache
또한, 선택 기준은, 예를 들어, 모바일 장치가 활성인지 비활성인지 여부를 가리키는 모바일 장치의 상태, 네트워크 조건, 및/또는 라디오 커버리지 통계치(radio coverage statistics)를 포함할 수 있다. 캐시 적절성 판단 엔진(246)은 캐싱이 적합할 수 있는 소스를 식별할 때, 기준들 중 임의의 하나 또는 기준들의 임의의 조합을, 임의의 순서로 이용할 수 있다. In addition, the selection criteria may include, for example, the state of the mobile device, network conditions, and / or radio coverage statistics indicating whether the mobile device is active or inactive. The cache
애플리케이션 서버/콘텐츠 제공자가 모바일 장치(250) 상의 로컬 캐싱에 적합할 가능성이 있는 식별되거나 검출된 콘텐츠를 가지면, 캐시 정책 관리기(245)는, 콘텐츠 소스로부터 수신된 콘텐츠를 모바일 장치(250) 상의 로컬 캐시(가령, 도 1B-1C와 도 2A의 예시의 경우, 로컬 캐시(185 또는 285)) 내 캐시 요소로서 저장함으로써, 식별된 소스로부터 수신된 관련 콘텐츠의 캐싱을 진행할 수 있다. 또한 콘텐츠 소스는, 모바일 장치(250)에 원격으로 위치하며 상기 모바일 장치(250)와 무선 통신하는 프록시 서버(가령, 도 1B-1C 및 도 3A의 프록시 서버(125 또는 325))에게 알려질 수 있어서, 상기 프록시 서버가 새로운 데이터 또는 변경된 데이터를 찾기 위해 콘텐츠 소스(가령, 애플리케이션 서버/콘텐츠 제공자(110))를 모니터할 수 있다. 이와 유사하게, 로컬 프록시(가령, 도 1B-1C 및 도 2A의 로컬 프록시(175 또는 275)가 프록시 서버에게, 특정 애플리케이션 서버/콘텐츠 제공자로부터 수신된 콘텐츠가 로컬 캐시 내 캐싱된 요소로서 저장되어 있다고 알려줄 수 있다. If the application server / content provider has identified or detected content that is likely to be suitable for local caching on mobile device 250, cache policy manager 245 may localize the content received from the content source on mobile device 250. By storing as a cache element in a cache (eg,
하나의 실시예에서, 캐시 요소가 로컬 캐시(285)에, 캐시를 디피트하는 것으로 의도된 하나 이상의 파라미터를 이용하는 식별자의 정규화된 버전(normalized version)과 연계되어, 저장된다. 식별자 정규화기 모듈(211)에 의해 식별자가 정규화될 수 있고, 예를 들어, 정규화 프로세스는, URI 스킴 및 호스트를 소문자로 변환하는 것, 퍼센트-인코딩식 이스케이프 시퀀스의 문자들을 대문자화하는 것, 디폴트 포트를 제거하는 것, 및 중복 슬래시(duplicate slash)를 제거하는 것 중 하나 이상을 포함할 수 있다. In one embodiment, a cache element is stored in
또 하나의 실시예에서, 정규화기(211) 또는 캐시 디피트 파라미터 핸들러(212)에 의해, 캐시 디피트에 대한 파라미터를 제거함으로써, 및/또는 상기 파라미터를, 식별자를 이용하는 요청에 응답하여 수신된 캐싱된 응답을 주소지정하기 위해 사용될 수 있거나, 상기 캐싱된 응답과 연계될 수 있는 정적 값(static value)으로 대체함으로써, 식별자가 정규화된다. 예를 들어, 식별자의 정규화된 버전 또는 상기 정규화된 식별자의 해시 값(hash value)을 이용하여 (도 2A에 도시된) 로컬 캐시(285)에 저장된 캐싱된 요소가 식별될 수 있다. 식별자의 해시 값 또는 정규화된 식별자의 해시 값은 해시 엔진(213)에 의해 생성될 수 있다.In another embodiment, received by the
콘텐츠가 로컬하게 캐싱된 경우, 캐시 정책 관리기(245)는, 콘텐츠 서버로 접촉하기 위한 추후 폴링 요청을 수신할 때, 모바일 장치의 라디오가 폴링 요청을 서비스하기 위해 활성화되지 않도록, 로컬 캐시에서 캐싱된 요소를 불러와서, 모바일 장치(250)에서 이뤄진 폴링 요청에 응답할 수 있다. 로컬 캐시 엔트리를 통해 애플리케이션(가령, 모바일 애플리케이션)의 요청을 이렇게 서비스하고 이행함으로써, 모바일 장치(250)에 이미 수신된 응답에서 변경되지 않을 수 있는 폴 응답을 요청/수신하기 위해 네트워크 대역폭 및 그 밖의 다른 자원이 사용될 필요가 없기 때문에, 더 효율적인 자원 및 모바일 네트워크 트래픽 활용과 관리가 가능해진다.If the content is cached locally, the cache policy manager 245 is cached in the local cache so that when a subsequent poll request to contact the content server is received, the radio of the mobile device is not activated to service the poll request. The element may be retrieved and responded to a polling request made at mobile device 250. By so servicing and fulfilling requests from applications (e.g., mobile applications) via local cache entries, network bandwidth and other to request / receive poll responses that may not change from responses already received at mobile device 250. Since no other resources need to be used, more efficient resource and mobile network traffic utilization and management is possible.
캐시 정책 관리기(245)의 한 가지 실시예는, 모바일 장치(250) 상의 하나 이상의 애플리케이션에 대해 폴링 스케줄을 생성할 수 있는 폴 스케줄 생성기(247)를 포함한다. 폴링 스케줄은, 하나 이상의 애플리케이션을 위해 콘텐츠 소스를 모니터링할 때 프록시 서버(가령, 도 1B-1C 및 도 3A의 예시에서 도시된 프록시 서버(125 또는 325))에 의해 사용될 수 있는 폴링 간격을 특정할 수 있다. 폴링 스케줄은, 예를 들어, 모바일 장치로부터 콘텐츠 소스로의 폴링 요청들 사이의 간격을 기초로 결정될 수 있다. 하나의 실시예에서, 애플리케이션 거동 검출기의 폴 간격 검출기(238)는 모바일 장치(250)로부터 콘텐츠 소스로의 폴링 요청들을 모니터할 수 있어서, 임의의 또는 모든 애플리케이션(가령, 모바일 애플리케이션)에서 이뤄진 폴링 요청들 사이의 간격을 결정할 수 있다. One embodiment of cache policy manager 245 includes a poll schedule generator 247 that can generate a polling schedule for one or more applications on mobile device 250. The polling schedule may specify a polling interval that may be used by a proxy server (eg,
하나의 실시예에서, 캐시 정책 관리기(245)는 폴링 스케줄을 프록시 서버(가령, 도 1B-1C 및 도 3A의 예시에서 나타난 프록시 서버(125 또는 325))로 전송하며, 상기 폴링 스케줄은, 프록시 서버에 의해, 가령, 변경되거나 새로운 콘텐츠를 찾기 위해 콘텐츠 소스를 모니터링할 때 사용될 수 있다. 특정 요청에 대해, 새로운 데이터 또는 변경된 데이터가 애플리케이션 서버/콘텐츠 소스로부터 검출될 때, 캐싱 정책 관리기(245)의 로컬 캐시 무효화기(244)는 로컬 캐시(가령, 캐시(185 또는 285)) 내 캐시 요소를 무효화할 수 있다. 예를 들어, 새로운 데이터 또는 변경된 데이터는, 프록시 서버에 의해 검출될 수 있다. 특정 요청/폴에 대한 캐시 엔트리가 무효화 및/또는 무효화 후 제거(가령, 캐시에서 삭제)됐을 때, 뒤이은 폴링 요청을 만족시키기 위해, 모바일 장치(250) 상의 라디오의 사용이 (가령, 로컬 프록시 또는 캐시 정책 관리기(245)에 의해) 활성화될 수 있으며, 이는, 도 4B의 상호대화도를 참조하여 추가로 기재된다. In one embodiment, cache policy manager 245 sends a polling schedule to a proxy server (eg,
또 하나의 실시예에서, 프록시 서버(가령, 도 1B-1C 및 도 3A의 예시의 경우, 프록시 서버(125 또는 325))가, 데이터 요청에서 사용되는 수정된 버전의 자원 식별자를 이용하여, 새로운 데이터 또는 변경된 데이터를 찾기 위해 특정 콘텐츠 소스(도 1B-1C의 애플리케이션 서버/콘텐츠 호스트(110))를 모니터할 수 있다. 예를 들어, 캐시 디피트 메커니즘을 이용하기 위한 콘텐츠 소스 또는 식별자가 검출되는 경우, 수정된(가령, 정규화된) 식별자가 콘텐츠 소스를 폴링하도록 사용될 수 있다. 캐싱 정책 관리기(245)에 의해, 또는 더 구체적으로, 식별자 정규화기(211)의 캐시 디피트 파라미터 핸들러(212)에 의해, 수정 또는 정규화된 버전의 식별자가 프록시 서버로 전달될 수 있다. In another embodiment, a proxy server (eg,
모바일 장치/애플리케이션(가령, 모바일 애플리케이션)을 대리하여 콘텐츠 소스로 폴링하기 위해 프록시 서버에 의해 사용된 수정된 식별자는 정규화된 식별자와 동일한 것이거나, 동일한 것이 아닐 수 있다. 예를 들어, 정규화된 식별자는 제거된 변경 캐시 디피트 파라미터를 갖는 원본 식별자일 수 있으며, 반면에 수정된 식별자는 캐시를 디피트하기 위해 사용되는 파라미터를 대신하여 대체 파라미터를 이용한다(가령, 변하는 파라미터가 로컬 프록시 및/또는 프록시 서버에게 알려진 정적인 값 또는 그 밖의 다른 지정 값으로 대체됨). 수정된 파라미터는 로컬 프록시(275)에 의해 결정되고, 프록시 서버로 전달될 수 있다. 또한, 프로시 서버에 의해(가령, 도 3C의 예시에 나타난 식별자 수정기 모듈(353)에 의해) 수정된 파라미터가 생성될 수 있다. The modified identifier used by the proxy server to poll the content source on behalf of the mobile device / application (eg, mobile application) may or may not be the same as the normalized identifier. For example, the normalized identifier may be the original identifier with the change cache dip parameter removed, while the modified identifier uses substitute parameters in place of the parameters used to dip the cache (eg, changing parameters). Is replaced with a static value or other specified value known to the local proxy and / or proxy server). The modified parameter is determined by the
캐시 정책 관리기(245)의 하나의 실시예는, 애플리케이션 또는 위젯에 의해 모바일 장치(250)에서 생성되는 폴/콘텐츠 요청을 만족시키기 위해, 로컬 캐싱된 엔트리를 사용할지 여부를 결정할 수 있는 캐시 또는 연결 선택 엔진(249)을 포함한다. 예를 들어, 로컬 프록시(275) 또는 캐시 정책 관리기(245)가, 애플리케이션 서버/콘텐츠 제공자와 접속하기 위해, 모바일 장치상의 애플리케이션(가령, 모바일 애플리케이션)에 의해 이뤄진 폴링 요청을 인터셉트할 수 있다. 애플리케이션(가령, 모바일 애플리케이션)에 의해 이뤄진 요청을 만족시키도록 모바일 장치의 라디오가 활성화될 필요가 있는지 여부를 결정하기 위해, 선택 엔진(249)이 인터셉트된 요청에 대해 수신된 콘텐츠가 캐시 요소로서 로컬하게 저장됐는지 여부를 결정할 수 있다. 하나의 실시예에서, 로컬 프록시(275)는, 관련 캐싱된 콘텐츠가 존재하고 여전히 유효하다는 결정에 응답하여, 로컬 캐시로부터 캐싱된 요소를 불러와, 폴링 요청을 만든 애플리케이션(가령 모바일 애플리케이션)에 응답을 제공하여, 애플리케이션(가령, 모바일 애플리케이션)에 응답을 제공하기 위해 모바일 장치의 라디오가 활성화되지 않도록 할 수 있다. One embodiment of cache policy manager 245 is a cache or connection that may determine whether to use locally cached entries to satisfy poll / content requests generated at mobile device 250 by an application or widget. And a
하나의 실시예에서, 예를 들어, 캐시 질의 모듈(229)을 이용하여, 식별자의 정규화된 버전, 또는 식별자의 정규화된 버전의 해시 값을 이용해 (도 2A에 도시된) 로컬 캐시(285)에 저장된 캐싱된 요소가 식별될 수 있다. 동일한 유형의 캐시 디피트를 이용하는 그 밖의 다른 요청을 만족시키기 위해 장래에 관련 캐싱된 요소가 식별되고 불러와 질 수 있도록, 캐시 디피트 파라미터가 제거, 또는 그 밖의 다른 방식으로 대체된 정규화된 식별자와 함께, 캐싱된 요소가 저장될 수 있다. 예를 들어, 추후 요청에서 사용되는 식별자가 동일한 캐시 디피트 파라미터를 이용하는 중이라고 판단될 때, 데이터 요청을 만족시키기 위해, 식별자의 정규화된 버전이 생성되고, 모바일 장치 캐시에 저장된 캐싱된 응답을 식별하기 위해 사용될 수 있다. 식별자 정규화기(211)의 해시 엔진(213)에 의해, 식별자의 해시 값, 또는 정규화된 식별자의 해시 값이 생성될 수 있다. In one embodiment, for example, using the cache query module 229, the local cache 285 (shown in FIG. 2A) using the fully qualified version of the identifier, or the hash value of the normalized version of the identifier, may be used. Stored cached elements can be identified. With a normalized identifier that has been removed, or otherwise replaced, by the cache bite parameter so that the associated cached element can be identified and retrieved in the future to satisfy other requests using the same type of cache bite. Together, cached elements can be stored. For example, when it is determined that the identifier used in a later request is using the same cache default parameter, to satisfy the data request, a normalized version of the identifier is generated and identifying a cached response stored in the mobile device cache. Can be used for By the
도 2D는 애플리케이션 거동 및/또는 사용자 활동을 기초로 하여, 모바일 트래픽 카테고리화 및 정책 구현을 더 수행할 수 있는, 도 2A의 예에서 나타난 로컬 프록시(275)의 추가 구성요소의 예를 도시하는 블록도를 도시한다.FIG. 2D is a block illustrating an example of additional components of the
로컬 프록시(275)의 이 실시예에서, 사용자 활동 모듈(215)은, 사용자 활동 추적기(215a), 사용자 활동 예측 엔진(215b), 및/또는 사용자 기대 관리기(user expectation manager)(215c)를 더 포함한다. 애플리케이션 거동 검출기(236)는 우선순위화 엔진(241a), 시간 중요도 검출 엔진(241b), 애플리케이션 상태 카테고리화기(application state categorizer)(241c), 및/또는 애플리케이션 트래픽 카테고리화기(241d)를 더 포함할 수 있다. 로컬 프록시(275)는 백라이트 검출기(219) 및/또는 네트워크 설정 선택 엔진(251)을 더 포함할 수 있다. 네트워크 설정 선택 엔진(251)은, 무선 세대 표준 선택기(wireless generation standard selector)(251a), 데이터 전송 속도 특정기(data rate specifier)(251b), 액세스 채널 선택 엔진(251c), 및/또는 액세스 포인트 선택기를 더 포함할 수 있다. In this embodiment of the
하나의 실시예에서, 애플리케이션 거동 검출기(236)는, 예를 들어, 애플리케이션 상태 카테고리화기(241c) 및/또는 트래픽 카테고리화기(241d)를 통해, 트래픽이 발원된, 또는 상기 트래픽이 전달되는 모바일 장치(250) 상의 애플리케이션의 활동 상태(activity state)를 검출, 결정, 식별, 또는 추론할 수 있다. 전경 애플리케이션 vs. 배경 애플리케이션의 트래픽이 서로 다르게 핸들링될 수 있기 때문에, (애플리케이션 상태 카테고리화기(241c)를 통해) 애플리케이션이 모바일 장치상에서 전경(foreground) 상태에 있는지 배경(background) 상태에 있는지에 따라, 활동 상태가 결정될 수 있다. In one embodiment, the
하나의 실시예에서, 휴리스틱(heuristic)의 확신도(certainty)의 레벨을 이용해, 또는 모바일 장치(250)의 백라이트 상태를 기초로 하여, 또는 모바일 장치상의 그 밖의 다른 소프트웨어 에이전트 또는 하드웨어 센서(제한되지 않는 예를 들면, 저항성 센서, 용량성 센서, 주변광 센서, 모션 센서, 터치 센서 등)에 의해, 활동 상태가 판단, 검출, 식별, 또는 추론될 수 있다. 일반적으로, 백라이트가 켜져 있는 경우, 트래픽은 액티브 상태이거나 전경 상태인 애플리케이션으로부터 생성되는 것이라고 취급되거나 판단될 수 있거나, 트래픽은 상호대화형이다. 덧붙이자면, 백라이트가 켜져 있는 경우, 트래픽은 사용자 상호대화 또는 사용자 활동으로부터의 트래픽, 또는 일정 시간 프레임 내에서 사용자가 기대 중인 데이터를 포함하는 트래픽인 것으로 취급되거나, 판단될 수 있다. In one embodiment, using a level of heuristic certainty, or based on the backlight state of the mobile device 250, or other software agent or hardware sensor on the mobile device (not limited) Non-resistance, capacitive sensor, ambient light sensor, motion sensor, touch sensor, etc.) may determine, detect, identify, or infer an activity state. In general, when the backlight is on, traffic may be treated or determined to be generated from an application that is active or in the foreground, or the traffic is interactive. In addition, when the backlight is on, the traffic may be treated or determined to be traffic from user interaction or user activity, or traffic containing data the user is expecting within a certain time frame.
하나의 실시예에서, 트래픽이 상호대화형 트래픽(interactive traffic)인지 유지관리형 트래픽(maintenance traffic)인지를 기초로 하여, 활동 상태가 결정된다. 상호대화 트래픽은 사용자 활동/애플리케이션과의 상호대화로부터 직접 생성된 응답 및 요청으로부터의 트랜잭션을 포함할 수 있으며, 사용자가 수신하기 위해 대기 중이거나 기대 중인 콘텐츠 또는 데이터를 포함할 수 있다. 유지관리형 트래픽은 사용자에 의해 직접 검출되지 않는 애플리케이션의 기능을 지지하기 위해 사용될 수 있다. 또한 유지관리형 트래픽은, 사용자 동작(action)에 응답하여 이뤄질 수 있지만 사용자가 적극적으로 응답을 기다리거나 기대하지 않는 액션 또는 트랜잭션을 포함할 수 있다. In one embodiment, the activity state is determined based on whether the traffic is interactive traffic or maintenance traffic. Interaction traffic may include responses from transactions and requests generated directly from interactions with user activities / applications, and may include content or data that a user is waiting or expecting to receive. Maintenance traffic may be used to support the functionality of an application that is not directly detected by the user. Maintenance traffic may also include actions or transactions that may be made in response to a user action but that the user does not actively wait for or expect a response.
예를 들어, 모바일 장치(250)에서의 메일 또는 메시지 삭제 동작이, 이에 대응하는 메일 또는 메시지를 서버에서 삭제하라는 요청을 생성하지만, 일반적으로 사용자는 응답을 기다리지 않는다. 따라서 요청이 유지관리형 트래픽, 또는 (가령, 우선순위화 엔진(241a)에 의해) 더 낮은 우선순위를 갖는 트래픽으로 카테고리화될 수 있거나, 및/또는 (시간 중요도 검출 엔진(214b)에 의해) 시간-중요성(time-critical)이 아니라고 카테고리화될 수 있다.For example, a mail or message deletion operation at mobile device 250 generates a request to delete the corresponding mail or message from the server, but generally the user does not wait for a response. Thus, the request may be categorized as maintenance traffic, or traffic having a lower priority (eg, by
이와 대조적으로, 모바일 장치(250)에서 사용자에 의해 개시되는 메일 '읽기' 또는 메시지 '읽기' 요청은 '상호대화형 트래픽'이라고 카테고리화될 수 있는데, 왜냐하면, 일반적으로 사용자가 메시지나 메일을 읽기를 요청할 때 콘텐츠 또는 데이터를 액세스하기를 기다리기 때문이다. 마찬가지로, 이러한 요청은 (가령, 우선순위화 엔진(241a)에 의해) 더 높은 우선순위를 갖는 것 및/또는 (가령, 시간 중요도 검출 엔진(241b)에 의해) 시간 중요성/시간 민감성을 갖는 것으로 카테고리화될 수 있다. In contrast, mail 'read' or message 'read' requests initiated by the user on mobile device 250 may be categorized as 'interactive traffic', because the user typically reads the message or mail. This is because it waits to access content or data when requesting. Similarly, such requests may be categorized as having a higher priority (eg, by
시간 중요도 검출 엔진(241b)은 모바일 장치(250)로부터 전송된, 또는 호스트 서버(가령, 호스트(300)) 또는 애플리케이션 서버(가령, 앱 서버(app server)/콘텐츠 소스(110))로부터 모바일 장치로 전송된 트래픽에 포함된 데이터의 시간 민감도를 판단, 식별, 추론할 수 있다. 예를 들어, 시간 민감형 데이터는, 상태 업데이트, 주식 정보 업데이트, IM 프레슨스 정보(IM presence information), 전자메일 메시지 또는 그 밖의 다른 메시지, 모바일 게임 애플리케이션으로부터 발생된 동작, 웹페이지 요청, 위치 업데이트 등을 포함할 수 있다. 콘텐츠 또는 요청의 속성에 따라, 시간 민감형 또는 시간 중요형이 아닌 데이터는, 메시지 삭제 요청, 읽음 표시, 또는 편집된 동작, 애플리케이션-특정 동작(가령, 친구 추가, 친구 삭제 요청), 특정 유형의 메시지 또는 속성을 빈번하게 변경하지 않는 그 밖의 다른 정보 등을 포함할 수 있다. 일부 경우, 데이터가 시간 중요형이 아닐 때, 트래픽이 통과하도록 하는 타이밍이, 추가 데이터가 모바일 장치(250)로부터 전송될 필요가 있을 때를 기초로 설정된다. 예를 들어, 트래픽 성형 엔진(255)은, (가령, 정렬 모듈(256) 및/또는 일괄처리 모듈(257)을 이용해) 모바일 장치 라디오의 한 번의 전원 켜기 이벤트로 다 함께 전송될 하나 이상의 후속하는 트랜잭션과 함께 트래픽을 정렬할 수 있다. 또한 정렬 모듈(256)은 동일한 호스트 서버로 전달되는 폴링 요청 발생을 시간 상 가깝도록 정렬할 수 있는데, 이들 요청이 동일한 데이터로 응답될 가능성이 높기 때문이다. The time
이를 대체하여, 또는 이와 조합되어, (가령, 사용자 활동 모듈(215)을 통해) 모바일 장치(250)에서의 사용자 활동을 평가, 판단, 산정, 추론, 식별하는 것으로부터 활동 상태가 결정될 수 있다. 예를 들어, 사용자 활동 추적기(215a)를 이용해 사용자 활동이 직접 검출되고 추적될 수 있다. 그 후, 이로부터 야기된 트래픽이, 추후 프로세싱을 위해 적절하게 카테고리화되어, 핸들링 정책을 결정할 수 있다. 덧붙이자면, 사용자 활동 예측 엔진(215b)에 의해, 사용자 활동이 예측 또는 예상될 수 있다. 사용자 활동을 예측하거나 사용자 활동을 예상함으로써, 예측 후 발생하는 트래픽이 사용자 활동으로부터 야기된 것으로 취급되고, 전송 정책을 결정하기 위해 적절하게 카테고리화될 수 있다. Alternatively, or in combination with this, the activity status may be determined from evaluating, determining, estimating, inferring, and identifying user activity at mobile device 250 (eg, via user activity module 215). For example,
덧붙이자면, 사용자 활동 모듈(215)은 또한 (가령, 사용자 기대 관리기(215c)를 통해 및/또는 활동 추적기(215) 및/또는 예측 엔진(215b)과 결합하여) 사용자 기대를 관리함으로써, 일반적으로 사용자 기대가 충족되도록 트래픽이 적절하게 카테고리화됨을 보장할 수 있다. 예를 들어, 사용자에 의해 개시되는 동작이 (가령, 기대 관리기(215)에 의해) 분석되어, 사용자가 응답을 기다릴 것인지 여부를 판단 또는 추론할 수 있다. 사용자가 응답을 기다린다고 판단된 경우, 이러한 응답이나 동작을 수신할 때 사용자가 원치 않는 지연을 경험하지 않도록, 이러한 트래픽은 정책에 따라 핸들링되어야 한다.In addition, the
하나의 실시예에서, 무선 네트워크에서 모바일 장치와 호스트 서버 사이에 트래픽을 전송하는 데 사용되기 위해 진보된 세대 무선 표준 네트워크가, 트래픽이 발원되거나 전달되는 모바일 장치의 애플리케이션의 활동 상태를 기초로 선택된다. 사용자 상호대화, 사용자 활동의 결과로서 발생되는 트래픽, 또는 사용자가 기대하거나 대기 중인 데이터를 포함하는 트래픽을 핸들링하기 위해 진보된 기술 표준, 가령, 3G, 3.5G, 3G+, 4G, 또는 LTE 네트워크가 선택될 수 있다. 또한, 전경 활동에 응답하는 모바일 장치로 전달되는 트래픽에 포함된 데이터를 송신하기 위해, 진보된 세대 무선 표준 네트워크가 선택될 수 있다.In one embodiment, an advanced generation wireless standard network is selected based on the activity state of the application of the mobile device from which the traffic originates or is forwarded for use in transmitting traffic between the mobile device and the host server in the wireless network. . Selected by advanced technical standards, such as 3G, 3.5G, 3G +, 4G, or LTE networks, to handle traffic that includes user interaction, traffic generated as a result of user activity, or data that users expect or are waiting for Can be. In addition, an advanced generation wireless standard network may be selected to transmit the data contained in the traffic delivered to the mobile device responsive to the foreground activity.
트래픽을 카테고리화하고, 모바일 트래픽에 대한 전송 정책을 정의할 때, 모바일 장치와 프록시 서버(325) 및/또는 애플리케이션 서버(가령, 앱 서버(app server)/호스트(110)) 사이에 트래픽을 전송하는 데 네트워크 설정이 모바일 장치(250) 상에서 (가령, 네트워크 설정 선택 엔진(251)에 의해) 사용되기 위해 선택될 수 있다. 선택된 네트워크 설정은, 애플리케이션 활동 상태(가령, 배경 또는 전경 트래픽), 애플리케이션 트래픽 카테고리(가령, 상호대화형 또는 유지관리형 트래픽), 데이터/콘텐츠의 임의의 우선순위, 시간 민감도/중요도와 관련된 애플리케이션 거동 모듈(236)에 의해 수집된 정보를 기초로 결정될 수 있다. When categorizing traffic and defining a delivery policy for mobile traffic, the traffic is transferred between the mobile device and the
네트워크 설정 선택 엔진(2510)은 세대 표준(가령, 무선 세대 표준 선택기(251a)를 통해), 데이터 전송 속도(가령, 데이터 전송 속도 특정기(251b)를 통해), 액세스 채널(가령, 액세스 채널 선택 엔진(251c), 및/또는 액세스 포인트(가령, 액세스 포인트 선택기(251d)를 통해) 중 하나 이상을 임의의 조합으로 선택하고 특정할 수 있다. The network setting selection engine 2510 may include a generation standard (eg, via wireless generation
예를 들어, 활동 상태가 사용자와 상호대화 중이거나, 모바일 장치상에서 전경 상태일 때, 트래픽에 대해 더 진보된 세대(가령, 3G, LTE, 또는 4G, 또는 그 이상)가 선택되거나 특정될 수 있다. 이와 달리, 다음 중 하나 이상이 검출될 때, 트래픽에 대해 더 낡은 세대 표준(가령, 2G, 2.5G, 또는 3G, 또는 그 이하)이 특정될 수 있다: 애플리케이션이 사용자와 상호대화 중이 아닌 상황, 애플리케이션이 모바일 장치상에서 배경에서 실행 중인 상황, 또는 트래픽에 포함된 데이터가 시간 중요형이 아니거나, 그 밖의 다른 방식으로 더 낮은 우선순위를 갖는다고 판단된 상황.For example, when an activity state is interacting with a user or in the foreground on a mobile device, a more advanced generation (eg, 3G, LTE, or 4G, or more) may be selected or specified for the traffic. . Alternatively, older generation standards (eg, 2G, 2.5G, or 3G, or less) may be specified for traffic when one or more of the following are detected: the situation when the application is not interacting with the user, The situation where the application is running in the background on a mobile device, or when the data contained in the traffic is not time critical or otherwise determined to have a lower priority.
마찬가지로, 다음 중 하나 이상이 검출될 때, 트래픽에 대하여 더 느린 데이터 전송 속도를 갖는 네트워크 설정이 특정될 수 있다: 애플리케이션이 사용자와 상호대화하는 중이 아닌 상황, 애플리케이션이 모바일 장치상의 배경에서 실행 중인 상황, 또는 트래픽에 포함된 데이터가 시간 중요형이 아닌 상황. 액세스 채널(가령, 순방향 액세스 채널 또는 전용 채널)이 특정될 수 있다. Similarly, network settings with slower data rates for traffic may be specified when one or more of the following are detected: the situation where the application is not interacting with the user, the situation where the application is running in the background on the mobile device. , Or when the data contained in the traffic is not time critical. An access channel (eg, forward access channel or dedicated channel) can be specified.
도 3A는 자원 보존을 위해, 무선 네트워크에서 트래픽을 관리하는 호스트 서버(300)에 상주하는 분산 프록시 및 캐시 시스템에서의 서버 측 구성요소의 일례를 도시하는 블록도를 도시한다. 서버 측 프록시(또는 프록시 서버(325))는 추가로, 애플리케이션 거동, 콘텐츠 우선순위, 사용자 활동, 및/또는 사용자 기대를 기초로 하여, 모바일 트래픽을 카테고리화, 및/또는 전달 정책(delivery policy)을 이행할 수 있다. 3A shows a block diagram illustrating an example of server-side components in a distributed proxy and cache system residing on a host server 300 that manages traffic in a wireless network for resource conservation. The server side proxy (or proxy server 325) may further categorize and / or deliver policy of mobile traffic based on application behavior, content priority, user activity, and / or user expectations. Can be implemented.
호스트 서버(300)는, 예를 들어, 네트워크 인터페이스(308) 및/또는 하나 이상의 레포지토리(312, 314 및 316)를 일반적으로 포함한다. 서버(300)는 임의의 휴대용/모바일 또는 비-휴대용 장치, 서버, 컴퓨터의 클러스터, 및/또는 임의의 유선 또는 무선 네트워크(가령, WiFi, 셀룰러, 블루투스 등)를 포함하는 네트워크를 통해 데이터 요청을 만족시키기 위한 신호를 수신하거나 송신할 수 있는 그 밖의 다른 유형의 프로세싱 유닛(가령, 도 16의 예시의 경우, 임의의 개수의 기계)일 수 있다.Host server 300 generally includes a
네트워크 인터페이스(308)는 네트워킹 모듈 또는 장치를 포함할 수 있으며, 상기 네트워킹 모듈 또는 장치에 의해, 서버(300)가 호스트 서버(300) 외부의 개체를 갖는 네트워크 내 데이터를, 상기 호스 및 외부 개체에 의해 지원되는 임의의 공지된, 및/또는 종래의 통신 프로토콜을 통해 조정(mediate)할 수 있다. 구체적으로, 네트워크 인터페이스(308)에 의해, 서버(300)는 모바일 전화 장치(350) 및/또는 하나 이상의 애플리케이션 서버/콘텐츠 제공자(310)를 포함하는 복수의 장치와 통신할 수 있다. The
호스트 서버(300)는 장치와의 연결에 대한 정보(가령, 네트워크 특성, 조건, 연결 유형 등)를 연결 메타데이터 레포지토리(312)에 저장할 수 있다. 덧붙이자면, 제3자 애플리케이션 또는 콘텐츠 제공자에 대한 임의의 정보가 또한 레포지토리(312)에 저장될 수 있다. 호스트 서버(300)는 장치에 대한 정보(가령, 하드웨어 능력, 속성, 장치 설정, 장치 언어, 네트워크 능력, 제조업체, 장치 모델, OS, OS 버전 등)를 장치 정보 레포지토리(314)에 저장할 수 있다. 덧붙이자면, 호스트 서버(300)는 네트워크 제공자 및 다양한 네트워크 서비스 영역에 대한 정보를 네트워크 서비스 제공자 레포지토리(316)에 저장할 수 있다. The host server 300 may store information (eg, network characteristics, conditions, connection types, etc.) about the connection with the device in the
네트워크 인터페이스(308)에 의해 활성화되는 통신은 장치(350)와의 동시 연결(simultaneous connection)(가령, 셀룰러 연결) 및/또는 콘텐츠 서버/제공자(310)와의 연결(가령, 유/무선, HTTP, 인터넷 연결, LAN, WiFi 등)을 가능하게 하여, 네트워크 자원 이용을 최적화하기 위해 장치(350)와 콘텐츠 제공자(310) 간의 트래픽을 관리하거나, 및/또는 서비스받는 장치(350) 상의 전력(배터리) 소모량을 보존할 수 있다. 상기 호스트 서버(300)는 상이한 네트워크 서비스 제공자에 의해 서비스되는, 및/또는 동일/상이한 네트워크 서비스 영역에서 서비스되는 모바일 장치(350)와 통신할 수 있다. 호스트 서버(300)는 다양한 유형 또는 레벨의 모바일 능력(mobile capability)(가령, 1G, 2G, 2G 과도세대(2.5G, 2.75G), 3G(IMT-2000), 3G 과도세대(3.5G, 3.75G, 3.9G), 4G(IMT-advanced) 등)을 갖는 장치(350)를 운영하고, 상기 장치(350)와 호환된다. The communication activated by the
일반적으로, 네트워크 인터페이스(308)는, 라우터, 액세스 포인트, 무선 라우터, 스위치, 멀티레이어 스위치, 프로토콜 변환기, 게이트웨이, 브리지, 브리지 라우터, 허브, 디지털 미디어 수신기, 및/또는 리피터를 통해 연결되거나 연결되지 않는지의 여부에 무관하게, 네트워크 어댑터 카드, 무선 네트워크 인터페이스 카드(가령, SMS 인터페이스, WiFi 인터페이스, 다양한 세대의 모바일 통신 표준(1G, 2G, 3G, 3.5G, 4G형 네트워크 가령, LTE, WiMAX, 등)용 인터페이스, 블루투스(Bluetooth), WiFi, 또는 그 밖의 다른 임의의 네트워크 중 하나 이상을 포함할 수 있다. In general,
호스트 서버(300)는 프록시 서버(325) 및 서버 캐시(335)를 포함할 수 있는 분산 프록시 및 캐시 시스템의 서버 측 구성요소를 더 포함할 수 있다. 하나의 실시예에서, 프록시 서버(325)는 HTTP 액세스 엔진(345), 캐시 정책 관리기(355), 프록시 제어기(365), 트래픽 성형 엔진(375), 새로운 데이터 검출기(347) 및/또는 연결 관리기(395)를 포함할 수 있다. The host server 300 may further include server-side components of a distributed proxy and cache system that may include a
HTTP 액세스 엔진(345)은 하트비트 관리기(heartbeat manager)(398)를 더 포함할 수 있고, 프록시 제어기(365)는 데이터 무효화기 모듈(368)을 더 포함할 수 있으며, 트래픽 성형 엔진(375)은 제어 프로토콜(376) 및 일괄처리 모듈(377)을 더 포함할 수 있다. 이보다 많거나 더 적은 구성요소/모듈/엔진이 프록시 서버(325) 및 각각의 설명된 구성요소에 포함될 수 있다. The HTTP access engine 345 may further include a
본원에서 사용될 때, "모듈", "관리기", "핸들러", "검출기", "인터페이스", "제어기", "정규화기", "생성기", "무효화기", 또는 "엔진"은 범용, 전용, 또는 공용 프로세서를 포함하고, 일반적으로, 프로세서에 의해 실행되는 펌웨어 또는 소프트웨어 모듈을 포함한다. 구현예 특정적 고려사항, 또는 그 밖의 다른 고려사항에 따라서, 모듈, 관리기, 핸들러, 검출기, 인터페이스, 제어기, 정규화기, 생성기, 무효화기, 또는 엔진은 중앙 집중형이거나, 그들의 기능이 분산될 수 있다. 모듈, 관리기, 핸들러, 검출기, 인터페이스, 제어기, 정규화기, 생성기, 무효화기, 또는 엔진은 범용 또는 특수용 하드웨어, 펌웨어, 또는 프로세서에 의해 실행되기 위한 컴퓨터 판독형 (저장) 매체에 내장된 소트프웨어를 포함할 수 있다. 본원에서 사용될 때, 컴퓨터 판독형 매체, 또는 컴퓨터 판독형 저장 매체는 법령(가령, 미국에서는, 35 U.S.C. 101)으로 명시된 모든 매체를 포함하며, 컴퓨터 판독형(저장) 매체를 포함하는 청구항이 유효하기 위한 범위까지 모든 비법정 매체는 특정하게 배제하는 것으로 의도된다. 알려진 법정 컴퓨터 판독형 매체는 하드웨어(가령, 레지스터, 랜덤 액세스 메모리(RAM), 비휘발성(NV) 저장장치 등)를 포함하지만, 이러한 하드웨어로 반드시 한정되는 것은 아니다. As used herein, "module", "manager", "handler", "detector", "interface", "controller", "normalizer", "generator", "validator", or "engine" is general purpose, It includes a dedicated or shared processor, and generally includes a firmware or software module executed by the processor. Depending on implementation specific considerations or other considerations, modules, managers, handlers, detectors, interfaces, controllers, normalizers, generators, invalidators, or engines may be centralized or their functionality distributed. have. A module, manager, handler, detector, interface, controller, normalizer, generator, invalidator, or engine includes software embedded in computer-readable (storage) media for execution by general or special purpose hardware, firmware, or processor. can do. As used herein, computer readable media, or computer readable storage media, includes all media specified by legislation (eg, 35
애플리케이션 서버 또는 콘텐츠 제공자(310)에게 애플리케이션 또는 콘텐츠 요청을 하는 장치(가령, 모바일 장치(350)의 예에서, 상기 요청이 인터셉트되고, 장치(350) 및 애플리케이션 서버/콘텐츠 제공자(310)로 연결되어 있는 프록시 서버(325)로 라우팅될 수 있다. 구체적으로, 프록시 서버는 모바일 장치(350)의 로컬 프록시(가령, 도 1 및 2의 예시의 경우, 프록시(175 및 275))와 통신할 수 있고, 일부 경우 추가 프로세싱을 위해, 그리고 필요한 경우, 데이터 요청에 대해 응답하기 위해 애플리케이션 서버/콘텐츠 서버(310)로의 송신을 위해, 로컬 프록시는 데이터 요청을 프록시 서버(325)로 포워딩한다. A device making an application or content request to an application server or content provider 310 (eg, in the example of
이러한 구성에서, 호스트(300), 또는 호스트 서버(300) 내 프록시 서버(325)는, 네트워크 및 장치 자원의 이용을 최적화하는 방식으로 장치와의 통신을 조절할 때 로컬 프록시에 의해 제공되는 지능적 정보(intelligent information)를 이용할 수 있다. 예를 들어, 프록시 서버(325)는 장치(350)에서의 사용자 활동의 특성을 식별하여, 통신 빈도(communication frequency)를 수정할 수 있다. 사용자 활동의 특성은, 예를 들어, 장치(350) 상의 로컬 프록시에 의해 수집된 정보를 통해, 프록시 제어기(365) 내 활동/거동 인지 모듈(activity/behavior awareness module)(366)에 의해 결정될 수 있다. In this configuration, the host 300, or
하나의 실시예에서, 통신 빈도는, 예를 들어, 프록시 서버(325)의 연결 관리기(395)에 의해 제어되어, 장치(350)로의 콘텐츠의 푸시 빈도 또는 업데이트를 조절할 수 있다. 예를 들어, 사용자 활동의 특성이 사용자가 비활성(inactive) 상태라고 가리키는 경우, 연결 관리기(395)에 의해 푸시 빈도가 감소할 수 있다. 하나의 실시예에서, 사용자 활동의 특성이, 비활성 상태의 주기 후, 사용자가 활성 상태라고 가리킬 때, 연결 관리기(395)는, 장치(350)로의 감소된 통신 빈도의 결과로서 버퍼링된 데이터를 전송하기 위해 장치(350)와의 통신 빈도를 조절할 수 있다.In one embodiment, the communication frequency may be controlled, for example, by the
덧붙이자면, 프록시 서버(325)는 다양한 요청, 트랜잭션, 세션, 애플리케이션, 및/또는 특정 이벤트의 우선순위 인지(priority awareness)를 포함한다. 이러한 인지는 장치(350) 상의 로컬 프록시에 의해 결정되고 프록시 서버(325)로 제공될 수 있다. 일반적으로, 프록시 서버(325)의 우선순위 인지 모듈(367)이 다양한 이벤트 또는 애플리케이션의 우선순위(가령, 시간-중요도, 시간-민감도, 등)를 평가할 수 있고, 추가로, 우선순위 인지 모듈(367)이 장치(350)의 로컬 프록시들에 의해 결정된 우선순위를 추적할 수 있다. In addition,
하나의 실시예에서, 우선순위 인지를 통해, 연결 관리기(395)는 장치(350)와의 서버(300)의 통신 빈도를 더 수정할 수 있다(가령, 라디오 제어기(396)에 의해 제어될 때 라디오를 사용하는 것). 예를 들어, 서버(300)가 장치(350)에서 기준을 충족하는 중요도/우선순위 레벨의 데이터 또는 업데이트가 전송 가능해질 때를 통지할 수 있고, 따라서 이미 사용 중이 아닌 경우 라디오의 사용을 요청할 수 있다.In one embodiment, with priority recognition, the
하나의 실시예에서, 프록시 서버(325)는 이벤트(가령, 트랜잭션, 콘텐츠, 서버/제공자(310)로부터 수신된 데이터)의 복수의 발생을 검출할 수 있으며, 이벤트들이 축적되어, 장치(350)로 일괄 전송되도록 할 수 있다. 일괄 전송은 누적될 수 있고, 모듈(367 및/또는 366)에 의해 추적되는 우선순위 인지 및/또는 사용자 활동/애플리케이션 거동 인지를 기초로 하여 이벤트의 전송이 지연될 수 있다. 예를 들어, (임계치 또는 기준을 충족하는) 더 높은 우선순위의 이벤트가 서버(300)에서 검출될 때, (더 낮은 우선순위를 갖는) 복수의 이벤트를 장치(350)로 일괄 전송하는 것은 일괄처리 모듈(377)에 의해 개시될 수 있다. 덧붙이자면, 서버가 장치(350)로부터 데이터를 수신할 때 서버(300)로부터의 일괄 전송이 트리거될 수 있으며, 이는, 장치 라디오가 이미 사용중이며, 따라서 장치 라디오가 켜진 상태임을 가리킨다. 하나의 실시예에서, 프록시 서버(325)는, 이벤트/트랜잭션 우선순위를 기초로 하여, 각각의 메시지/패킷을 일괄 전송되도록 정렬하여, 연결이 소실되거나 배터리가 닳은 경우 등에서, 더 높은 우선순위 콘텐츠가 먼저 전송될 수 있도록 할 수 있다. In one embodiment,
하나의 실시예에서, 서버(300)는 (가령, 캐싱 정책 관리기(355)에 의해 관리되는) 데이터를 캐싱함으로써, 네트워크(가령 셀룰러 네트워크)를 통한 장치(350)와의 통신 빈도가 수정(가령, 감소)될 수 있다. 예를 들어, 데이터가 서버 캐시(335)에 캐싱되어, 추후, 불러와(retrieval) 지거나 장치(350)로 일괄 전송될 수 있음으로써, 장치(350) 라디오를 켤 필요성이 낮아질 가능성이 있다. 서버 캐시(335)는, 도 3A의 예에서, 호스트 서버(300) 외부에 위치하는 것처럼 도시되지만, 호스트 서버(300) 내부에 부분적으로 또는 전적으로 위치할 수 있다. 일부 경우, 서버 캐시(335)는, 가령, 애플리케이션 서버/콘텐츠 제공자(310), 네트워크 서비스 제공자, 또는 또 다른 제3자에 의해 관리되는 바와 같이, 또 다른 개체(가령, 도 1C의 예시의 경우, 선택적 캐싱 프록시 서버(199))에 의해 관리되는 또 다른 캐시와 부분적으로 또는 전적으로 동일하거나 일체로 구성될 수 있다. In one embodiment, server 300 caches data (e.g., managed by caching policy manager 355) such that the frequency of communication with
하나의 실시예에서, 콘텐츠 캐싱은, 호스트 서버(300)의 도움으로, 장치(350)에서 로컬하게 수행된다. 예를 들어, 호스트 서버(300) 내 프록시 서버(325)가 요청과 함께 애플리케이션 서버/제공자(310)에게 질의할 수 있으며, 응답의 변경을 모니터링할 수 있다. (가령, 새로운 데이터 검출기(347)에 의해) 변경되거나 새로운 응답이 검출될 때, 프록시 서버(325)는 모바일 장치(350)에게 통지하여, 장치(350) 상의 로컬 프록시가, 자신의 로컬 캐시 내에 임의의 응답으로서 저장되어 있는 관련 캐시 엔트리를 무효화하기(가령, 날짜가 지났다(out-dated)고 표시하기)로 결정할 수 있다. 또는, 데이터 무효화기 모듈(368)이, 애플리케이션 서버/제공자(310)로부터 수신된 응답을 기초로 하여 특정 캐싱된 데이터를 무효화하라고 장치(350)의 로컬 프록시에게 자동으로 명령할 수 있다. 캐싱된 데이터는 무효(invalid)라고 표시되며, 콘텐츠 서버(310)로부터 새로운 콘텐츠가 수신될 때 대체되거나 삭제될 수 있다. In one embodiment, content caching is performed locally at the
검출기(347)에 의해 하나 이상의 방식으로 데이터 변경이 검출된다. 예를 들어, 변경이 있은 후, 서버/제공자(310)가 호스트 서버(300)에게 통지할 수 있다. 또한 변경은, 소스 서버/제공자(310)의 직접적인 폴에 응답하여, 호스트 서버(300)에서 검출될 수 있다. 일부 경우, 이에 추가로, 프록시 서버(325)가, 새로운/업데이트된 데이터로 장치(350) 상의 로컬 캐시를 사전-로딩(pre-load)할 수 있다. 이는, 호스트 서버(300)가 모바일 장치상의 라디오가 이미 사용 중이라고 검출할 때, 또는 서버(300)가 장치(350)로 전송될 추가 콘텐츠/데이터를 가질 때, 수행될 수 있다. Data changes are detected by the
상기의 메커니즘들 중 하나 이상이 동시에 구현되거나, 애플리케이션(가령, 서로 다른 서버/제공자(310)를 위한 서로 다른 정책)에 따라 조절/설정될 수 있다. 일부 경우, 특정 유형의 이벤트(가령, 우선순위 임계 레벨을 충족하는 이벤트)의 경우, 소스 제공자/서버(310)가 호스트(300)에게 통지할 수 있다. 덧붙여, 이벤트 우선순위에 무관하게, 제공자/서버(310)가 특정 시간 간격으로 호스트(300)에게 통지하도록 설정될 수 있다. One or more of the above mechanisms may be implemented simultaneously, or may be adjusted / set according to an application (eg, different policies for different servers / providers 310). In some cases, for certain types of events (eg, events that meet priority threshold levels), the source provider /
하나의 실시예에서, 호스트(300)의 프록시 서버(325)는, 모바일 장치로 결과를 반환하기 전에, 변경된 결과를 찾기 위해 콘텐츠 소스로부터의 데이터 요청에 대해 수신된 응답을 모니터/추적할 수 있으며, 이러한 모니터링은 콘텐츠 소스로의 데이터 요청이 모바일 장치로 반환될 동일한 결과를 산출할 때, 적합할 수 있으며, 이에 따라서, 특정 요청에 대해 어떠한 새로운 변경도 없는 경우, 네트워크/파워 소모량이 사용되는 것이 방지된다. 장치(350)의 로컬 프록시가 프록시 서버(325)에게 이러한 모니터링을 수행하도록 명령하거나, 특정 요청에 대해 특정 개수의 동일한 응답(가령, 일정 시간 주기 내에 복수의 동일한 응답)을 수신하면 프록시 서버(325)가 이러한 프로세스를 자동으로 개시할 수 있다. In one embodiment, the
하나의 실시예에서, 서버(300)는, 활동/거동 인지 모듈(366)을 통해, 모바일 장치(350)와 별개의 장치에서 사용자 활동을 식별하거나 검출할 수 있다. 예를 들어, 모듈(366)은 사용자의 메시지 수신함(message inbox)(가령, 전자메일 또는 다른 유형의 수신함)이 액세스되고 있음을 검출할 수 있다. 이는 사용자가 모바일 장치(350)가 아닌 장치를 이용해 자신의 애플리케이션과 상호대화 중이며, 빈번한 업데이트가 필요하지 않음을 나타낼 수 있다. In one embodiment, server 300 may identify or detect user activity on a device separate from
이러한 경우, 따라서 서버(300)는 새로운 또는 업데이트된 콘텐츠가 모바일 장치(350)로 전송되는 빈도를 감소시킬 수 있고, 사용자가 또 다른 장치를 이용해 액세스한다고 검출되는 한, 모든 통신을 삭제할 수 있다. 이러한 빈도 감소는 애플리케이션 특정적(가령, 사용자가 또 다른 장치와 상호대화하는 중인 애플리케이션에 특정됨)일 수 있거나, 모바일 장치(350)에 대한 전반적인 빈도 감소일 수 있다(가령, 사용자가 다른 장치를 통해, 하나의 서버 또는 하나의 애플리케이션과 상호대화한다고 검출되기 때문에, 사용자는 또 다른 서비스를 액세스할 때 이를 사용할 수 있다).In such a case, the server 300 can thus reduce the frequency with which new or updated content is sent to the
하나의 실시예에서, 장치(350)에서의 전력 또는 배터리 소모량을 보존하기 위해, 호스트 서버(300)는 장치(350)를 대신하여 콘텐츠 소스(310)로 폴링할 수 있다. 예를 들어, 모바일 장치(35) 상의 특정 애플리케이션은 예측가능한 반복 방식으로 자신의 각자의 서버(310)로 폴링할 수 있다. 프록시 제어기(365) 내 활동/거동 모듈(366)에 의해 이러한 반복 또는 또 다른 유형의 애플리케이션 거동이 추적될 수 있다. 따라서 호스트 서버(300)는 모바일 장치(350) 상의 애플리케이션에 대해 콘텐츠 소스(310)로 폴링할 수 있으며, 이러한 폴링은, 다른 경우라면, 다른 경우라면 장치(350)에 의해 무선(가령, 셀룰러 연결)을 통해 수행됐을 것이다. 호스트 서버는, HTTP 액세스 엔진(345)을 이용해 HTTP 연결을 구축함으로써, 또는 라디오 제어기(396)를 이용해 셀룰러 네트워크를 통해 소스(310)로 연결함으로써, 새로운 또는 변경된 데이터를 찾기 위해 소스(310)로 폴링할 수 있다. 새로운 또는 변경된 데이터가 검출될 때, 새로운 데이터 검출기(347)는 장치(350)에게, 이러한 데이터가 이용 가능하다고 통지, 및/또는 새로운/변경된 데이터를 장치(350)로 제공할 수 있다. In one embodiment, to conserve power or battery consumption at
하나의 실시예에서, 연결 관리기(395)는 모바일 장치(350)가 이용 가능하지 않다고(가령, 라디오가 꺼져 있다고) 결정하고, SMS를 이용해(가령, 도 1C의 예시에 도시된 SMSC를 통해) 장치(350)에게 콘텐츠를 전송할 수 있다. SMS는 무효화 메시지, 또는 무효화 메시지의 일괄분(batch), 또는 심지어 콘텐츠(콘텐츠가 단 몇 개의 SMS 메시지(보통 1개 또는 2개의 SMS 메시지)에 맞기에 충분히 작은 경우)를 전송하도록 사용된다. 이로 인해, 오버헤드 정보(overhead information)를 전송하기 위해 라디오 채널을 액세스할 필요가 없어진다. 호스트 서버(300)는 임계치에 가까운 우선순위 레벨을 갖거나 그 밖의 다른 방식으로 기준을 충족하는 특정 트랜잭션 또는 응답을 위해 SMS를 이용할 수 있다. 서버(300)는, 상시 접속된(always-on) IP 연결을 유지하는 것의 대안예로서, 대역외 트리거(out-of-band trigger)로서 SMS를 이용하여, IP 연결을 유지하거나 각성시킬 수 있다. In one embodiment,
하나의 실시예에서, 프록시 서버(325) 내 연결 관리기(395)(가령, 하트비트 관리기(398))가, 연결된 장치(350)를 대신하여, 하트비트 메시지를 생성 및/또는 전송함으로써, 장치(350)에서 실행 중인 애플리케이션을 위한 제공자(310)와의 백엔드 연결(backend connection)을 유지할 수 있다.In one embodiment, the connection manager 395 (eg, heartbeat manager 398) in the
예를 들어, 분산 프록시 시스템에서, 장치(350) 상의 로컬 캐시가, 애플리케이션을 위해 요구되는 TCP/IP 연결을 유지하기 위해 필요한 임의의 또는 모든 하트비트 메시지가 셀룰러 또는 그 밖의 다른 네트워크를 통해 전송되는 것을 방지하고, 대신, 호스트 서버(300) 상의 프록시 서버(325)에 의존하여, 백엔드(가령, 도 1A의 예시의 경우, 애플리케이션 서버/제공자(110))와의 연결을 유지하기 위한 하트비트 메시지를 생성 및/또는 전송할 수 있다. 프록시 서버는, 모바일 장치상의 로컬 프록시의 동작에 독립적으로, 킵-얼라이브(keep-alive)(하트비트) 메시지를 생성할 수 있다. For example, in a distributed proxy system, a local cache on
레포지토리(312, 314 및/또는 316)가 소프트웨어, 서술적 데이터(descriptive data), 이미지, 시스템 정보 드라이버, 및/또는 호스트 서버(300) 및/또는 그 밖의 다른 서버의 그 밖의 다른 구성요소에 의해 사용되는 그 밖의 다른 임의의 데이터 아이템을 추가로 저장할 수 있다. 레포지토리는 데이터베이스 관리 시스템(DBMS)에 의해 관리될 수 있으며, 가령, 상기 데이터베이스 관리 시스템은 Oracle, DB2, Microsoft Access, Microsoft SQL Server, PostgreSQL, MySQL, FileMaker 등일 수 있다(그러나 이에 국한되지 않음).
레포지토리는 객체 지향 기법 및/또는 텍스트 파일을 통해 구현될 수 있으며, 분산 데이터베이스 관리 시스템, 객체 지향 데이터베이스 관리 시스템(OODBMS)(가령, ConceptBase, FastDB 메인 메모리 데이터베이스 관리 시스템, JDOInstruments, ObjectDB, 등), 객체 관련 데이터베이스 관리 시스템(ORDBMS)(가령, Informix, OpenLink Virtuoso, VMDS, 등), 파일 시스템, 및/또는 그 밖의 다른 임의의 종래의, 즉 공지된 데이터베이스 관리 패키지에 의해 관리될 수 있다. Repositories can be implemented through object-oriented techniques and / or text files, distributed database management systems, object-oriented database management systems (OODBMS) (e.g., ConceptBase, FastDB main memory database management systems, JDOInstruments, ObjectDB, etc.), objects It can be managed by an associated database management system (ORDBMS) (eg Informix, OpenLink Virtuoso, VMDS, etc.), file system, and / or any other conventional, known database management package.
도 3B는 애플리케이션(가령, 모바일 애플리케이션) 거동 및/또는 네트워크 조건에 대해 캐싱하고 캐싱 전략을 조정할 수 있는 도 3A에서 도시되는 캐시 시스템에서의 캐싱 정책 관리기(355) 내 구성요소의 추가 예를 도시하는 블록도를 도시한다.FIG. 3B illustrates additional examples of components within
하나의 실시예에서, 캐싱 정책 관리기(355)는 메타데이터 생성기(303), 캐시 룩-업 엔진(305), 애플리케이션 프로토콜 모듈(356), 폴 스케줄 관리기(358)를 갖는 콘텐츠 소스 모니터링 엔진(357), 응답 분석기(361), 및/또는 업데이트된 또는 새로운 콘텐츠 검출기(359)를 더 포함할 수 있다. 하나의 실시예에서, 폴 스케줄 관리기(358)는 호스트 타이밍 시뮬레이터(358a), 롱 폴 요청 검출기/관리기(358b), 스케줄 업데이트 엔진(358c), 및/또는 시간 조정 엔진(358d)를 더 포함한다. 메타데이터 생성기(303) 및/또는 캐시 룩-업 엔진(305)은 캐시(335)(또는 서버 캐시)로 연결되어, 캐시 엔트리 또는 캐시 엔트리의 질의를 수정하거나 추가할 수 있다. In one embodiment,
하나의 실시예에서, 프록시 서버(가령, 도 1B-1C 및 도 3A의 예시의 프록시 서버(125 또는 325))가 모니터링 엔진(357)을 통해 새로운 또는 변경된 데이터를 찾기 위해 콘텐츠 소스를 모니터링할 수 있다. 도시된 것처럼, 프록시 서버는 도 2A-B의 모바일 장치(250) 외부의 개체이다. 콘텐츠 소스(가령, 도 1B의 애플리케이션 서버/콘텐츠 제공자(110))는, (가령, 로컬 프록시에 의해) 프록시 서버에게, 모바일 장치(가령, 모바일 장치(150 또는 250)) 상에 로컬하게 캐싱되어 있는 콘텐츠를 갖는다고 알려진 것일 수 있다. 예를 들어, 모바일 장치에서의 콘텐츠 소스의 폴링 빈도를 기초로 하는 빈도로 모니터링 엔진(357)에 의해 콘텐츠 소스가 모니터링될 수 있다. 폴 스케줄은, 예를 들어, 로컬 프록시에 의해 생성되고, 프록시 서버로 전송될 수 있다. 폴 스케줄 관리기(358)에 의해, 폴 빈도가 추적, 및/또는 관리될 수 있다. In one embodiment, a proxy server (eg,
예를 들어, 프록시 서버는. 모바일 장치를 대신하여, 호스트(가령, 콘텐츠 제공자/애플리케이션 서버)로 폴링할 수 있고, 호스트 타이밍 시뮬레이터(358a)를 통해 클라이언트의 폴링 거동(polling behavior)을 호스트로 시뮬레이트할 수 있다. (가령, 롱 폴 요청 검출기/관리기(358b)에 의해) 폴링 거동은 호스트와의 지속형 연결에서 겪는 롱 폴 요청-응답 시퀀스의 특성을 포함하도록 시뮬레이트될 수 있다. 폴링 간격/거동이 설정되면, 장치 측의 로컬 프록시(275) 및/또는 서버 측의 프록시 서버(325)가, 애플리케이션 및 애플리케이션 서버/콘텐츠 호스트 거동이 매칭되는지, 또는 이러한 예측 패턴에 의해 표현될 수 있는지 여부를 검증할 수 있다. 일반적으로, 로컬 프록시 및/또는 프록시 서버가 편이(deviation)를 검출할 수 있고, 적절할 때, 또 다른 폴링 간격을 재-평가 및 계산, 결정, 또는 추정할 수 있다. For example, a proxy server. On behalf of the mobile device, it can poll to a host (eg, content provider / application server) and simulate the polling behavior of the client to the host via the host timing simulator 358a. The polling behavior (eg, by the long pole request detector / manager 358b) may be simulated to include the characteristics of the long pole request-response sequence experienced in the persistent connection with the host. Once the polling interval / behavior is set, the
하나의 실시예에서, 분산 프록시의 서버 측 상의 캐싱 정책 관리기(355)는, 모바일 장치상의 프록시 서버(275)와 함께, 또는 상기 프록시 서버(275)와 독립적으로, 롱 폴 요청을 식별하거나 검출할 수 있다. 예를 들어, 캐싱 정책 관리기(355)는, 롱 폴 요청, 가능한 롱 폴 요청(가령, 클라이언트가 통신할 때 이용하는 호스트와의 지속형 연결에 대한 요청(가령, 장기 유지 HTTP 요청, 지속형 연결 가능 COMET 스타일 푸시, HTTP 스트리밍에 대한 요청 등))을 식별 또는 검출하라는 애플리케이션 요청에 대한 요청-응답 시퀀스에서, 응답 지연 간격 시간과 비교되어 사용될 임계값을 결정할 수 있다. In one embodiment, the
예를 들어, 복수의 서로 다른 셀룰러 또는 무선 네트워크에 의해 서비스받을 수 있는 모바일 장치들의 클라이언트/애플리케이션에 의해 생성된 요청에 대한 응답 지연 간격 시간을 이용해 프록시(325)에 의해 임계값이 결정될 수 있다. 호스트(300)에 상주하는 프록시(325)가 복수의 네트워크를 통해 복수의 모바일 장치와 통신할 수 있기 때문에, 캐싱 정책 관리기(355)는, 롱 폴을 카테고리화하고 검출하기 위한 임계값을 설정할 때 사용될 수 있는 글로벌 레벨(global level)에서 애플리케이션/클라이언트 정보를 액세스할 수 있다. For example, the threshold may be determined by the
여러 다른 또는 하나의 동일한 네트워크에 걸쳐 있는 장치들의 애플리케이션들의 응답 지연 수간 시간을 추적함으로써, 캐싱 정책 관리기(355)는 하나 이상의 임계값을, 롱 폴 검출을 위해 응답 지연 간격 시간과 비교하여 사용되도록 설정할 수 있다. 프록시 서버(325)에 의해 설정된 임계값은 정적이거나 동적일 수 있으며, 조건 및/또는 수명시간(상대적 또는 절대적인 만료 시각/날짜)과 관련될 수 있다.By tracking the response delay time between applications of devices across several different or one same network, the
덧붙이자면, 프록시(325)의 캐싱 정책 관리기(355)는, 전적으로 또는 부분적으로, 특정 무선 네트워크의 네트워크 지연, 특정 통신업체(서비스 제공자)에 의해 서비스되는 네트워크, 또는 복수의 무선 네트워크를 기초로 하여, 임계값을 더 결정할 수 있다. 또한 프록시(325)는 애플리케이션(가령, 모바일 애플리케이션) 또는 모바일 클라이언트 요청이 전달되는 하나 이상의 애플리케이션 서버/콘텐츠 제공자(가령, 110)의 지연을 기초로 하여, 롱 폴 요청의 식별을 위한 임계값을 결정할 수 있다. In addition, the
프록시 서버는 모니터링된 콘텐츠 소스에서 새로운 또는 변경된 데이터를 검출하고, 모바일 장치에게 이러한 변경을 통지하는 메시지를 전송함으로써, 모바일 방치(또는 모바일 장치의 로컬 프록시)가 적절한 조치(가령, 로컬 캐시 내 캐시 요소를 무효화하기)를 취할 수 있다. 일부 경우, 프록시 서버(가령, 캐싱 정책 관리기(355))는 새롭거나 변경된 데이터를 검출하면, 상기 새롭거나 변경된 데이터를 자신의 캐시(가령, 도 1C 및 도 3A의 서버 캐시(135 또는 335))에 저장할 수 있다. 일부 경우, 모바일 장치에서의 콘텐츠 요청을 만족시키기 위해, 서버 캐시(335)에 저장된 새롭거나 업데이트된 데이터가 사용될 수 있으며, 예를 들어, 프록시 서버가 모바일 장치에게 새롭거나 변경된 콘텐츠를 통지하고, 로컬 캐싱된 콘텐츠가 무효화된 후 사용될 수 있다. The proxy server detects new or changed data in the monitored content source and sends a message informing the mobile device of this change, thereby allowing the mobile neglect (or local proxy of the mobile device) to take the appropriate action (e.g., cache element in the local cache). To invalidate). In some cases, when a proxy server (eg, caching policy manager 355) detects new or changed data, the proxy server stores the new or changed data in its cache (eg,
메타데이터 생성기(303)는, 도 2B의 예시에 도시된 메타데이터 생성기(203)와 유사하게, 모바일 장치(250)에서의 요청에 대해 캐싱된 응답에 대해 메타데이터를 생성할 수 있다. 메타데이터 생성기(303)가 서버 캐시(335)에 저장된 캐시 엔트리를 위한 메타데이터를 생성할 수 있다. 마찬가지로, 캐시 룩-업 엔진(305)은 도 2B의 예시의 캐시 룩-업 엔진(205)에 대해 기재된 것과 동일하거나 유사한 기능을 포함할 수 있다. The
응답 분석기(361)는 모바일 장치(250)에서 생성된 요청에 대해 수신된 응답을 분석하는 것과 관련된 일부 또는 모든 기능을 도 2B에서 도시된 로컬 프록시의 응답 분석기(246d)와 동일하거나 유사한 방식으로 수행할 수 있다. 프록시 서버(325)가, 모바일 장치(250)로 전달되는 애플리케이션 서버/콘텐츠 소스(310)로부터의 응답을 수신할 수 있기 때문에, 프록시 서버(325)(가령, 응답 분석기(361))는, 캐싱 가능함을 판단하기 위해, 로컬 프록시의 응답 분석기에 대해 설명된 것과 유사한 응답 분석 단계를 수행할 수 있다. 모바일 장치(250) 상의 로컬 프록시(275)에서 수행될 수 있는 분석에 추가로, 또는 상기 분석을 대신하여 응답이 분석될 수 있다.The
덧붙이자면, 스케줄 업데이트 엔진(358c)은, 로컬 프록시(275) 내 스케줄 업데이트 엔진에 대해 기재된 것처럼, 모바일 장치(250)에서의 애플리케이션의 애플리케이션 요청 간격 변경을 기초로 하여 특정 애플리케이션 서버/콘텐츠 호스트의 폴링 간격을 업데이트할 수 있다. 시간 조정 엔진(358d)은 초기 시점을 설정하며, 상기 초기 시점에서 애플리케이션 서버/콘텐츠 호스트의 폴은, 로컬 프록시(275) 내 스케줄 업데이트 엔진에 대해 기재된 바 있는 프레시 콘텐츠(fresh content)를 서비스하기 전에, 오래된(out of date) 콘텐츠를 다시 한 번 서비스하는 것을 막는 것이다. 스케줄 업데이팅 및 시간 조절 알고리즘 모두, 모바일 장치(250) 상의 로컬 프록시(275)에서 유사한 프로세스와 함께, 또는 상기 프로세스를 대체하여 수행될 수 있다. In addition, the schedule update engine 358c polls a particular application server / content host based on a change in the application request interval of the application on the mobile device 250, as described for the schedule update engine in the
도 3C는, 캐시 디피트 메커니즘을 관리 및 검출하고 콘텐츠 소스를 모니터링할 수 있는 도 3A의 예시에서 도시된 분산 프록시 시스템의 서버 측 상의 프록시 서버(375) 내 캐싱 정책 관리기(355)의 구성요소의 또 다른 예를 도시하는 블록도를 도시한다. FIG. 3C illustrates the components of the
하나의 실시예에서, 캐싱 정책 관리기(355)는 캐시 디피트 소스 관리기(352), 폴 스케줄 관리기(358)를 갖는 콘텐츠 소스 모니터링 엔진(357), 및/또는 업데이트되거나 새로운 콘텐츠 검출기(359)를 더 포함할 수 있다. 캐시 디피트 소스 관리기(352)는 식별자 수정기 모듈(353) 및/또는 식별자 패턴 추적 모듈(354)을 더 포함할 수 있다. In one embodiment,
하나의 실시예에서, 프록시 서버(가령, 도 1B-1C 및 도 3A의 예시의 프록시 서버(125 또는 325)는 모니터링 엔진(357)을 통해 새롭거나 변경된 데이터를 찾기 위해 콘텐츠 소스를 모니터링할 수 있다. 콘텐츠 소스(가령, 도 1B-1C 또는 도 3A의 애플리케이션 서버/콘텐츠 제공자(110 또는 310))는, (가령, 로컬 프록시에 의해) 프록시 서버에게, 모바일 장치(가령, 모바일 장치(150 또는 250)) 상에 로컬 캐싱된 콘텐츠를 갖는다고 알려진 것일 수 있다. 콘텐츠 소스(310)는, 예를 들어, 모바일 장치에서 콘텐츠 소스의 폴링 빈도를 기초로 하는 빈도로 모니터링 엔진(357)에 의해 모니터링될 수 있다. 예를 들어, 폴링 스케줄은 로컬 프록시에 의해 생성되고 프록시 서버(325)로 전송될 수 있다. 폴 스케줄 관리기(358)에 의해 폴 주파수가 추적 및/또는 관리될 수 있다.In one embodiment, a proxy server (eg,
하나의 실시예에서, 프록시 서버(325)는 새롭거나 변경된 데이터(응답)를 검출하기 위해 콘텐츠 소스(310)로 폴링할 때, 정규화된 식별자 또는 수정된 식별자를 이용한다. 또한, 서버 캐시(335)에 응답을 저장할 때 정규화된 식별자 또는 수정된 식별자가 프록시 서버(325)에 의해 사용될 수 있다. 일반적으로, 캐싱 가능한 콘텐츠에 대해 캐시 디피트(cache defeat) 메커니즘이 사용될 때 정규화된 또는 수정된 식별자가 사용될 수 있다. 캐시 디피트 메커니즘은, 식별자 내 변하는 파라미터(changing parameter)의 형태(가령, URI 또는 URL), 변하는 시/날짜 파라미터, 랜덤하게 변하는 파라미터, 또는 그 밖의 다른 유형의 파라미터를 가질 수 있다.In one embodiment,
뒤 이은 요청 및 연계된 응답의 식별과의 연계를 위해, 정규화된 식별자 또는 수정된 식별자가 변하는 파라미터를 제거하거나, 그 밖의 다른 방식으로 대체하고, 콘텐츠 소스를 폴링하도록 사용될 수 있다. 하나의 실시예에서, 프록시 서버(325) 상의 캐싱 정책 관리기(355)의 캐시 디피트 소스 관리기(352)(분산 프록시 시스템의 서버 측 구성요소)(가령, 식별자 수정기 모듈(353))에 의해 수정된 식별자가 생성된다. 수정된 식별자는 캐시를 디피트하도록 사용되는 변하는 파라미터를 대신하여, 대체 파라미터(substitute parameter)(이는 일정 시간 주기 동안 정적(static)임)를 이용할 수 있다.For subsequent association with subsequent identification of the request and associated response, the normalized or modified identifier may be used to remove, or otherwise replace, a parameter that changes, and poll the content source. In one embodiment, the cache
선택사항으로서, 캐시 디피트 소스 관리기(352)는, 식별자의 다양한 수정본 또는 하나 이상의 콘텐츠 소스(가령, 애플리케이션 서버/콘텐츠 호스트(110 또는 310))에 대해 콘텐츠를 주소 지정하는 식별자들을 추적, 저장, 및 모니터링하여, 콘텐츠 소스로 폴링하기 위해 프록시 서버(325)에 의해 사용된 수정된 식별자 및/또는 정규화된 식별자가 예상 또는 의도한 대로 동작하는지(가령, 동일한 응답, 또는 다른 방식으로 본래의 수정되지 않은 식별자와 여전히 관련성이 있는 응답)를 지속적으로 검증하기 위해, 식별자 패턴 추적 모듈(354)을 포함한다. Optionally, Cache
패턴 추적 모듈(354)이, 콘텐츠 소스에서 오류나 예측되지 않은 거동(가령, 기대되지 않은 응답이 전송됨)을 초래하는 식별자의 수정본 또는 정규화본을 검출하는 경우, 추적 모듈(354)은 수정본을 로그에 기록할 수 있고, 캐시 디피트 소스 관리기(352)에게 또 다른 수정본/정규화본을 생성할 것을 명령하거나, 로컬 프록시(가령, 로컬 프록시(275))에게 콘텐츠 소스로 폴링할 때 사용되기 위해 또 다른 수정본/정규화본을 생성하기 위해 통지할 수 있다. 이와 함께, 또는 이를 대신하여, 직접 응답이 모바일 장치로 제공되도록 하거나, 및/또는 제대로 동작하는 식별자의 수정본이 생성될 때까지, 모바일 장치(가령, 모바일 장치(250))상의 특정 모바일 애플리케이션/클라이언트로부터의 요청이 임시로 네트워크를 통해 콘텐츠 소스로 전송된다. If the pattern tracking module 354 detects a revision or normalization of an identifier that results in an error or unexpected behavior (eg, an unexpected response is sent) at the content source, the tracking module 354 logs the revision. Can be written to, and used to command the Cache
하나의 실시예에서, 모바일 장치(가령, 모바일 장치(250))의 로컬 캐시(가령, 캐시(285))에 이미 저장되어 있는 응답에 대해 새롭거나 변경된 데이터가 검출될 때 응답이 서버 캐시 내 서버 캐시 요소로서 저장된다. 따라서 모바일 장치 또는 로컬 프록시(275)가 프록시 서버(325)로 연결되어, 로컬 캐시(285)에 로컬하게 이미 캐싱됐던 요청에 대한 응답(현재 무효인(invalid), 오래된(out-dated), 또는 그 밖의 다른 방식으로 관련성이 없다고 판단된 것)에 대해 새롭거나 변경된 데이터를 불러올 수 있다. In one embodiment, when new or changed data is detected for a response already stored in the local cache (eg, cache 285) of the mobile device (eg, mobile device 250), the response is returned to the server in the server cache. It is stored as a cache element. Thus, the mobile device or
프록시 서버(325)는 모니터링된 애플리케이션 서버/콘텐츠 호스트(310)에서 새롭거나 변경된 데이터를 검출할 수 있고, 모바일 장치로, 이러한 변경에 대해 통지하는 메시지를 전송함으로써, 모바일 장치(또는 모바일 장치의 로컬 프록시)가 적절한 조치(가령, 로컬 캐시 내 캐시 요소를 무효화시키는 것)를 취할 수 있다. 일부 경우, 프록시 서버(가령, 캐싱 정책 관리기(355)는, 새롭거나 변경된 데이터를 검출하면, 상기 새롭거나 변경된 데이터를 자신의 캐시(가령, 도 1C 및 도 3A의 서버 캐시(135 또는 335))에 저장할 수 있다. 일부 경우, 서버 캐시에 저장된 업데이트된/새로운 데이터가 사용되어, 모바일 장치에서의 콘텐츠 요청을 만족시킬 수 있는데, 예를 들어, 프록시 서버가 모바일 장치에게 새롭거나 변경된 콘텐츠를 통지하고, 로컬 캐싱된 콘텐츠가 무효화된 후, 사용될 수 있다.The
도 3D는 애플리케이션 거동 및/또는 트래픽 우선순위를 기초로 하여 모바일 트래픽 카테고리화 및 정책 구현을 더 수행할 수 있는 도 3A의 예에서 나타난 프록시 서버(325) 내 추가 구성요소의 예를 도시하는 블록도를 도시한다. 3D is a block diagram illustrating an example of additional components in the
프록시 서버(325)의 하나의 실시예에서, 트래픽 성형 엔진(375)이 트래픽 분석기(336)로 더 연결되어, 하나 이상의 모바일 장치(가령, 도 2A-2D의 모바일 장치(250)) 또는 애플리케이션 서버/콘텐츠 호스트(도 1B-1C의 110)로 전달되는 모바일 트래픽 및 트랜잭션에 대한 정책의 정의 및 이행에 대해, 모바일 트래픽을 카테고리화할 수 있다. 일반적으로, 도 1B-1C의 예에서 도시된 것처럼, 프록시 서버(325)는 모바일 장치의 원격에 위치하고, 호스트 서버의 원격에 위치한다. 프록시 서버(325) 또는 호스트 서버(300)는 복수의 모바일 장치에 대해 트래픽을 모니터링하고, 여러 다른 모바일 장치에 대해, 트래픽을 카테고리화하고 트래픽 정책을 고안할 수 있다. In one embodiment of
덧붙이자면, 프록시 서버(325) 또는 호스트 서버(300)가 복수의 통신업체(carrier) 또는 네트워크 운영자에 의해 동작되고, 다양한 카케고리에 대해, 트래픽의 카테고리화 및 트래픽 정책의 구현과 관련된 통신업체 특정 정책을 구현할 수 있다. 예를 들어, 프록시 서버(325) 또는 호스트 서버(300)의 트래픽 분석기(336)가 우선순위화 엔진(341a), 시간 중요도 검출 엔진(341b), 애플리케이션 상태 카테고리화기(341c), 및/또는 애플리케이션 트래픽 카테고리화기(341d)를 포함할 수 있다. In addition, the
이들 엔진 또는 모듈 각각은, 서로 다른 무선 통신업체에 따라, 고려할 것으로 우선순위, 시간 중요도, 배경/전경, 또는 상호대화형/유지관리형의 서로 다른 기준을 추적할 수 있다. 서로 다른 기준이 서로 다른 모바일 장치 유형(가령, 장치 모델, 제조업체, 운영 체제 등)에 대해 존재할 수 있다. 일부 경우, 모바일 장치의 사용자가 트래픽 카테고리와 관련된 설정 또는 기준을 조절하고, 프록시 서버(325)가 이들 사용자에 의해 조절/설정되는 설정을 추적하고 구현할 수 있다. Each of these engines or modules can track different criteria of priority, time importance, background / foreground, or interactive / maintenance, depending on different wireless carriers. Different criteria may exist for different mobile device types (eg, device model, manufacturer, operating system, etc.). In some cases, a user of a mobile device may adjust settings or criteria related to traffic categories, and
하나의 실시예에서, 트래픽 분석기(336)는, 예를 들어 애플리케이션 상태 카테고리화기(341c) 및/또는 트래픽 카테고리화기(341d)를 통해 트래픽이 발원되거나 전달되는 하나 이상의 모바일 장치(가령, 모바일 장치(150 또는 250)) 상의 애플리케이션의 활동 상태를 검출, 결정, 식별, 또는 추론할 수 있다. 네트워크 사용을 최적화하기 위해, 전경 애플리케이션 트래픽 vs. 배경 애플리케이션 트래픽이 상이하게 핸들링될 수 있기 때문에, (가령, 애플리케이션 상태 카테고리화기(341c)를 통해) 모바일 장치들 중 하나 이상 상의 애플리케이션이 전경 상태인지 배경 상태인지를 기초로 하여, 활동 상태가 결정될 수 있다.In one embodiment, the traffic analyzer 336 is configured to include one or more mobile devices (eg, mobile devices (eg, mobile device (e.g. 150 or 250) may detect, determine, identify, or infer the activity state of an application on the application. Foreground application traffic vs. traffic Since background application traffic may be handled differently, the activity state may be determined based on whether an application on one or more of the mobile devices is in the foreground or background state (eg, via application state categorizer 341c). have.
이를 대신하여, 또는 이와 함께, 무선 연결된 모바일 장치에 의해(가령, 로컬 프록시 내 애플리케이션 거동 검출기를 통해) 애플리케이션의 활동 상태가 결정되고, 프록시 서버(325)로 전달될 수 있다. 예를 들어, (가령, 백라이트 검출기에 의한) 모바일 장치에서의 백라이트 상태를 기초로 하여, 또는 모바일 장치상의 또 다른 소프트웨어 에이전트 또는 하드웨어 센서(가령, 저항성 센서, 용량성 센서, 주변광 센서, 모션 센서, 터치 센서 등)를 기초로 하여, 휴리스틱(heuristic)의 확신도를 갖는, 활동 상태가 결정, 검출, 식별, 또는 추론될 수 있다. 일반적으로, 백라이트가 켜진 경우, 트래픽은 활성 상태이거나 전경에 있는 애플리케이션으로부터 생성된 것으로 취급되거나 결정되거나, 트래픽은 상호대화형일 수 있다. 덧붙여, 백라이트가 켜진 경우, 트래픽은 사용자 상호대화 또는 사용자 활동으로부터 온 트래픽이라고 취급되거나 결정될 수 있거나, 일정 시간 내에 사용자가 기대 중인 데이터를 포함하는 트래픽일 수 있다. Alternatively or in conjunction with this, the activity status of the application may be determined and communicated to the
(가령, 사용자 활동 모듈(215)을 통해) 모바일 장치(250)에서 사용자 활동을 산정, 결정, 평가, 추론, 식별하는 것으로부터, 활동 상태가 결정될 수 있고, 프록시 서버(325)로 전달될 수 있다. 하나의 실시예에서, 트래픽이 상호대화형 트래픽인지 유지관리형 트래픽인지 여부를 기초로 하여, 활동 상태가 결정된다. 상호대화형 트래픽은, 사용자 활동/애플리케이션과의 상호대화로부터 직접 생성된 응답 및 요청으로부터의 트랜잭션을 포함할 수 있고, 사용자가 수신하기를 기다리거나 기대 중인 콘텐츠 또는 데이터를 포함할 수 있다. 유지관리형 트래픽은 사용자에 의해 직접 검출되지 않는 애플리케이션의 기능을 지원하기 위해 사용될 수 있다. 또한 유지관리형 트래픽은, 사용자 동작에 응답하여 발생할 수 있지만 사용자가 응답을 적극적으로 기다리거나 대기하지 않는 동작 또는 트랜잭션을 포함할 수 있다. From calculating, determining, evaluating, inferring, and identifying user activity at mobile device 250 (eg, via user activity module 215), an activity state can be determined and communicated to
일반적으로, 시간 중요도 검출 엔진(341b)이 모바일 장치(250)로부터 전송되는 트래픽, 또는 호스트 서버(300) 또는 프록시 서버(325) 또는 애플리케이션 서버(가령, 앱 서버(app server)/콘텐츠 소스(110))로부터 모바일 장치로 전송되는 트래픽에 포함된 데이터의 시간 민감도를 결정, 식별, 추론할 수 있다. 예를 들어, 시간 민감형 데이터는, 상태 업데이트, 주식 정보 업데이트, IM 프레즌스 정보, 전자메일 메시지 또는 그 밖의 다른 메시지, 모바일 게임 애플리케이션으로부터 생성된 동작, 웹페이지 요청, 위치 업데이트 등을 포함할 수 있다. In general, traffic from which time
콘텐츠 또는 요청의 속성상, 시간 민감형이나 시간 중요형이 아닌 데이터는, 메시지 삭제 요청, 읽음 표시, 또는 편집된 동작, 애플리케이션-특정 동작(가령, 친구 추가 또는 친구 삭제 요청), 특정 유형의 메시지, 또는 속성이 빈번하게 변하지 않는 그 밖의 다른 정보 등을 포함할 수 있다. 일부 경우에서, 데이터가 시간 중요형이 아닐 때, 트래픽이 모바일 장치로 전송되게 할 타이밍은, 동일한 모바일 장치로 전송될 필요가 있는 추가 데이터가 존재하는 때를 기초로 한다. 예를 들어, 트래픽 성형 엔진(375)은 하나 이상의 후속하는 트랜잭션과 함께 트래픽을 정렬하여, (가령, 정렬 모듈(378) 및/또는 일괄처리 모듈(377)을 이용해) 모바일 장치 라디오의 한 번의 전원 켜기(power-on) 이벤트로 다 함께 전송되도록 할 수 있다. 또한 정렬 모듈(378)은 동일한 호스트 서버로 전달되는 폴링 요청들을 시간상 가깝게 정렬할 수 있는데, 왜냐하면 이들 요청은 동일한 데이터로 응답될 가능성이 높기 때문이다. Due to the nature of the content or request, data that is not time-sensitive or time-sensitive may include a message deletion request, a read mark, or an edited action, an application-specific action (eg, a friend add or friend delete request), a particular type of message. Or other information whose attributes do not change frequently. In some cases, when the data is not time critical, the timing for causing traffic to be sent to the mobile device is based on when there is additional data that needs to be sent to the same mobile device. For example, traffic shaping engine 375 may align traffic with one or more subsequent transactions, such as by using a
일반적으로, 새롭거나 변경된 데이터가 호스트 서버로부터 모바일 장치로 전송되는지 여부가, 새롭거나 변경된 데이터가 관련된 모바일 장치상의 애플리케이션이 전경에서 실행 중인지 여부(가령, 애플리케이션 상태 카테고리화기(341c)에 의함), 또는 새롭거나 변경된 데이터의 우선순위 또는 시간 중요도를 기초로 결정될 수 있다. 애플리케이션이 모바일 장치에서 전경에 위치하는 경우, 또는 애플리케이션이 모바일 장치에서 전경에 있고 사용자와 상호대화하는 활성 상태인 경우, 및/또는 사용자가 새롭거나 변경된 데이터에 제공될 응답을 기다리는 중인지 여부에 따라, 프록시 서버(325)는 새롭거나 변경된 데이터를 모바일 장치로 전송할 수 있다. 프록시 서버(325)(또는 트래픽 성형 엔진(375))가, 높은 우선순위를 갖거나 시간 중요성을 갖는 새롭거나 변경된 데이터를 전송할 수 있다.In general, whether new or changed data is sent from the host server to the mobile device is determined whether an application on the mobile device with which the new or changed data is associated is running in the foreground (eg, by application state categorizer 341c), or It can be determined based on the priority or time importance of new or changed data. Depending on whether the application is in the foreground on the mobile device, or when the application is in the foreground and interacts with the user on the mobile device, and / or the user is waiting for a response to be provided for new or changed data, The
마찬가지로, 애플리케이션이 모바일 장치에서 배경에 있는 경우, 프록시 서버(325)(또는 트래픽 성형 엔진(375))는 새롭거나 변경된 데이터의 전송을 억제할 수 있다. 프록시 서버(325)는 또한, 사용자가 새롭거나 변경된 데이터에 제공되는 응답을 기다리고 있지 않은 경우, 새롭거나 변경된 데이터의 전송을 억제할 수 있으며, 이러한 억제는 호스트 서버로 연결되며 모바일 장치로 무선으로 연결될 수 있는 프록시 서버에 의해 수행된다. Similarly, when the application is in the background at the mobile device, the proxy server 325 (or traffic shaping engine 375) can suppress the transmission of new or changed data. The
일반적으로, 새롭거나 변경된 데이터를 포함하여, 데이터가 낮은 우선순위를 갖거나, 시간 중요성을 갖는 경우, 시간 주기가 지날 때까지, 또는 (가령, 정렬 모듈(378) 및/또는 일괄처리 모듈(377)을 통해) 전송될 추가 데이터가 있을 때까지, 프록시 서버는 데이터를 전송하는 것을 기다릴 수 있다.In general, if the data has low priority or time importance, including new or changed data, until a time period passes, or (e.g.,
도 4A는 분산 프록시 및 캐시 시스템의 클라이언트 측 구성요소의 또 다른 예시를 도시하는 블록도를 도시하며, 원자 프로세스 기반 트래픽 최적화기(401)를 더 포함한다. 도 4B는 도 4A의 예시의 원자 프로세스 기반 트래픽 최적화기(401)의 추가 구성요소를 도시하는 블록도이다. 4A shows a block diagram illustrating another example of client-side components of a distributed proxy and cache system, and further includes an atomic process based
원자 프로세스 기반 트래픽 최적화기(401)는, 패턴 검출기(403), 타이밍/주기성 검출기(404), 및/또는 도착지 주소 파라미터 추출 엔진(405)을 갖는 트래픽 스누핑 모듈(traffic snooping module)(402), 원자 프로세스 생성기(412) 및/또는 애플리케이션 프로파일 생성기/수정기(439)를 갖는 추론 엔진(411)을 포함할 수 있다.The atomic process based
원자 프로세스 기반 트래픽 최적화기(501)는 장치, 가령 모바일 장치(250)로부터 개시된 모바일 애플리케이션 트래픽을 (가령, 트래픽 스누핑 모듈(402)에 의해) 인터셉트하고, 원자 프로세스(가령, 트래픽 스누핑을 통해 검출되는 임의의 패턴을 이용하는 원자 프로세스 생성기(412)에 의한 도 1A의 예시적 원자 프로세스(190))를 발생 또는 생성하는 데 사용될 수 있는 다양한 파라미터를 식별할 수 있다. 원자 프로세스(190)는 하나의 모바일 애플리케이션(가령, 도 1C의 개체(108)) 또는 복수의 애플리케이션으로부터 전송된, 검출된 패턴을 기초로 서로에 대해 어느 정도의 주기성을 갖는 요청들의 세트, 또는 상기 요청들의 세트에 대응하는 지시자를 포함할 수 있고, 복제/시뮬레이트될 수 있다. Atomic process based
이들 상호관련된 요청들은 서로 다른 시점에, 그러나 가능한 예측 가능한 시점(가령, t1 = 1분, t2 = 2분, t3 = 6분, 등)에 발생할 수 있고, 모바일 애플리케이션(가령, 도 1A의 108)의 유지관리 프로세스 또는 애플리케이션 프로세스를 기초로 자동으로 발생할 수 있거나, 사용자 상호대화에 응답하여 발생할 수 있다. 일반적으로, 애플리케이션, 시스템, 장치, 또는 OS에 의해 개시되는 요청은 예측 가능할 수 있으며, 식별되고 서버로 분담되어 모바일 장치 및 셀룰러 네트워크의 로드를 경감시킬 수 있는 후보가 된다. These correlated requests may occur at different times, but at possible predictable times (eg, t1 = 1 minute, t2 = 2 minutes, t3 = 6 minutes, etc.) and the mobile application (eg, 108 of FIG. 1A). This may occur automatically based on the maintenance process or application process of the application, or in response to user interaction. In general, requests initiated by an application, system, device, or OS may be predictable and identified and distributed to servers to be candidates for mitigating the load on mobile devices and cellular networks.
예를 들어, 일부 경우, 서버/제공자에서 주소지정 가능한(addressable) 개체/요청 중 모두 또는 일부(가령, 도 1A의 예시의 경우, 개체(101, 103, 105) 중 일부 또는 모두)에 대해 만들어진 요청은, (가령, 타이밍/주기성 검출기(404)에 의해) 검출될 수 있는 반복 가능한 타이밍 또는 주기성 패턴을 가진다. 요청 패턴(requesting pattern)은 시퀀스(요청에 의해 각각의 개체가 주소지정되는 순서), 주기성(시간격, 또는 상대적 타이밍, 가령, 또 다른 트래픽 요청 전 또는 후의 시간격), 타이밍(가령, 요청 또는 요청들의 시퀀스가 발생하는 시각 또는 요일), 또는 이들의 조합으로 반복될 수 있다. 물론, 그 밖의 다른 패턴이 가능하다(그리고 검출될 수 있다).For example, in some cases, a server / provider may be created for all or some of the addressable objects / requests (e.g., some or all of the
또한, 애플리케이션, 장치, OS, 또는 시스템 레벨에서 발생하는 특정 트리거 또는 이벤트에 응답하여, (가령, 스누핑 모듈(402)의 패턴 검출기(403)에 의해) 특정 패턴이 발생하는 것으로 검출될 수 있다. 임의의 이러한 검출된 패턴이 추적되고 사용되어, 검출된 패턴에 포함된 복수의 요청을 포함하는 원자 프로세스를 생성할 수 있다. 모바일 장치(250)에서 호스트 서버(가령, 도 1 및 도 2의 예시의 경우, 호스트 서버(100 또는 200))로의 요청을 분담하고, 이에 따라 모바일 네트워크 트래픽을 경감시키며 빈 네트워크 자원을 내기 위해, 원자 프로세스(가령, 도 1A의 예시에서 도시된 원자 프로세스(190))가 사용될 수 있다.In addition, in response to a specific trigger or event occurring at an application, device, OS, or system level, it may be detected that a particular pattern occurs (eg, by the pattern detector 403 of the snooping module 402). Any such detected pattern can be tracked and used to create an atomic process that includes a plurality of requests included in the detected pattern. To share a request from the mobile device 250 to a host server (eg,
도 1A의 예시에서 도시된 개체(101)로의 요청 후, 예측되는 시간격(time frame)을 두고 또 다른 개체로의 또 다른 요청이 뒤따름이 검출될 때, 또는 개체(101)로의 요청 후 각각 예측 가능한 시간격을 두고 (가령, 도 1A의 개체(103 및 105)로의) 2개의 추가 요청이 뒤따름이 검출될 때, 원자 프로세스가 생성될 수 있다. 로컬 프록시(가령, 최적화기(401))에 의해 트래픽 패턴이 검출될 수 있고, 원자 프로세스-기반 트래픽 최적화기(401)에 의해 최종 원자 프로세스가 생성될 수 있다. After a request to the
예를 들어, 트래픽 스누핑 모듈(402) 내 패턴 검출기(403)에 의해, 예측 가능한 시간격이 검출될 수 있다. 예를 들어, 한 가지 간단한 경우에서, 빈번하게 또는 항상 개체(101)로의 요청이 6:00am PST에서 발생함을 스누핑 모듈(402)이 검출할 수 있다. 따라서 6:00am PST에서의 개체(101)로의 요청을 포함하도록 (가령, 원자 프로세스 생성기(412)에 의해) 원자 프로세스가 생성될 수 있다. 그 후 이러한 요청은 서버로 분담되어, 모바일 장치로부터 개시되는 대신, 매일 6:00am에서 발생하는 요청을 서버가 수행하도록 할 수 있다. For example, a predictable time interval can be detected by the pattern detector 403 in the
또 하나의 예시에서, 개체(103)로의 요청이 발생할 때마다, 약 10분 후, 개체(105)로의 요청이 발생함을 스누핑 모듈(402)이 검출할 수 있다. 따라서 원자 프로세스 생성기(712)가, 개체(103)로의 요청과 그 10분 후 이뤄지는 개체(105)로의 요청을 포함하는 원자 프로세스를 생성하고, 이 프로세스를 서버가 핸들링하도록 분담시킬 수 있다. 생성된 원자 프로세스를 이용해, 개체(103)로의 요청이 발생할 때마다, 시스템은, 지정된 원자 프로세스를 기초로 하여, 개체(105)로의 요청이 약 10분 후에 발생할 가능성이 높음을 추론할 수 있다. 서버는 이러한 지식을 이용하여, 정상적으로 모바일 장치로부터 개시될 필요가 있는 요청을 수행함으로써, 모바일 애플리케이션 활동을 복제하고, 모바일 장치를 대신하여, 상기 요청을 수행한다. In another example, each time a request to the
원자 프로세스 기반의 트래픽 최적화기(401)의 하나의 실시예는, 애플리케이션들에 걸쳐, 및/또는 장치들에 걸쳐 정의되는 다양한 원자 프로세스를 이용하여, 검출된 요청을 기초로 다음번 요청을 예상할 수 있는 간섭 엔진(411)을 포함한다. 예를 들어, 추론 엔진(411)이 지정된 원자 프로세스의 일부분인 요청을 검출하는 경우, 간섭 엔진(411)은, 뒤따를 가능성이 높은 하나 이상의 요청을 예상할 수 있으며, 따라서 모바일 장치를 대신하여 이러한 요청을 서버가 수행하게 한다. One embodiment of an atomic process based
일반적으로, 원자 프로세스 기반 트래픽 최적화기(401)는, 모바일 장치(가령, 도 1A의 모바일 장치(150)("로컬 프록시") 또는 도 4A의 개체(250)("로컬 프록시") 등), 반복되는 요청을 할 수 있는 요청 애플리케이션(108)이 위치하는 임의의 장치상에 있을 수 있다. 로컬 장치 또는 모바일 전화기상에서, 원자 프로세스 기반 트래픽 최적화기(401)는 로컬하게 요청들을 인터셉트하고, (가령, 도착지 주소 등을 기초로 하여) 상호관련될 수 있는 요청들을 식별할 수 있다. 또한 원자 프로세스 기반 트래픽 최적화기(401)는 원격 호스트(가령, 호스트(100 또는 200))와 통신하여, 임의의 도착지 주소를, 알려진 도착지의 리스트와 비교함으로써, 검출된 다른 요청과의 상호연관성을 평가할 수 있다. 원자 프로세스 기반 트래픽 최적화기(401)에 의해 로컬하게 앞서 기재된 것처럼, (가령, 원자 프로세스 생성기(412)에 의해) 원자 프로세스가 로컬하게 생성되고, 호스트(가령, 호스트(100 또는 200))로 전송되어 앱 서버/콘텐츠 제공자로 폴링하는 데 사용될 수 있다.In general, atomic process based
이러한 경우, 추론 엔진(411)이 호스트 서버(도 5A의 호스트 서버(300))상에 전적으로 또는 부분적으로 위치함으로써, 특정 모바일 애플리케이션 및 모바일 장치(250)에 대한 원자 프로세스에 따라 검출된 요청을 기초로 특정 활동에서 다음번 요청을 추론할 수 있다. 일반적으로, 원자 프로세스는 특정 애플리케ㅣㅇ션 및 특정 모바일 장치에 대해 형성될 수 있다. 복수의 원자 프로세스는 특정 애플리케이션에 대해 생성될 수 있고, 특정 모바일 장치는 복수의 애플리케이션에 걸쳐 지정된 몇 가지 원자 프로세스를 가질 수 있다. 또한 원자 프로세스 생성기(412)는 애플리케이션 거동의 관측치(observation) 및/또는 서버로 분담된 요청에 응답하여 애플리케이션 서버로부터 수신된 응답을 기초로 하여, 생성된 원자 프로세스의 정의를 업데이트할 수 있다. In this case, the
하나의 실시예에서, 예를 들어, 프로파일 생성기/수정기(439)에 의해, 하나 이상의 생성된 원자 프로세스에 따라, 애플리케이션 프로파일이 생성 또는 수정될 수 있다. 애플리케이션 프로파일이 사용자 또는 장치에게 특정적이도록 생성될 수 있다. 덧붙이자면, 사용자 또는 장치 특정적이 아닌 범용 애플리케이션 프로파일이 생성될 수 있다. 애플리케이션 프로파일은 복수의 사용자들 및/또는 복수의 장치들에 걸쳐 사용될 수 있는 애플리케이션에 대하여 지정된 하나 이상의 원자 프로세스를 포함할 수 있다. 또한 애플리케이션 프로파일은 장치 또는 사용자 특정적 구성요소를 포함할 수 있고, 이러한 구성요소는 사용자 또는 장치 또는 둘 모두에게 특정적인 원자 프로세스를 포함한다. 애플리케이션 프로파일 엔트리, 구체적으로, 실시간으로 또는 준실시간 동작 상태 또는 네트워크 상태 또는 애플리케이션 상태, 또는 서비스 제공자 상세사항, 사용자 요청, 장치 상태, 플랫폼 상세사항/수요, 자원 제약사항, 또는 이들의 임의의 조합을 기초로 하여 동적으로, 지정된 원자 프로세스가 업데이트, 개정, 삭제, 재생성, 적용불가라고 표시, 일시적으로 비활성화, 또는 그 밖의 다른 방식으로 편집/조절될 수 있다.In one embodiment, for example, by profile generator /
원자 프로세스 기반 트래픽 최적화기(401) 자체가 장치(250)와 호스트 서버(가령, 호스트(100, 200 또는 300)) 사이에 분산되어, 특정 구성요소 및/또는 이와 관련된 기능이 로컬하게 위치하며, 일부가 상호 배타적이거나 상호 배타적이 아닌 방식으로 원격으로 위치할 수 있다. 예를 들어, 트래픽 스누핑 기능이 로컬 장치(250) 또는 호스트 서버(300) 또는 둘 모두 상에 위치할 수 있다. 둘 모두는 특정 기준을 기초로 하여, 동시에 사용되거나, 선택적으로 사용될 수 있다.The atomic process based
일반적으로, 원자 프로세스 기반 트래픽 최적화기(401)가, 동일한, 또는 상이하지만 겹치는, 또는 상이하면서 겹치지 않는 기능부 및 특징부(가령, 트래픽 스누핑 모듈(402), 패턴 검출기(403), 타이밍/주기성 검출기(404), 도착지 주소 파라미터 추출 엔진(405), 추론 엔진(411), 원자 프로세스 생성기(412), 및/또는 애플리케이션 프로파일 생성기/수정기(439) 등의 구성요소에 대해 설명된 것들)를 갖는 로컬 장치와 호스트 서버 둘 모두 상에 위치할 수 있다. 도 5A는 분산 프록시 및 캐시 시스템에서 서버 측 구성요소의 하나의 예를 도시한 블록도이며, 원자 프로세스 기반 트래픽 최적화기(501)를 더 포함한다. 도 5B는 도 5A의 예시에서 도시된 원자 프로세스 기반 트래픽 최적화기(501)의 추가 구성요소를 도시하는 블록도를 도시한다. In general, atomic process based
하나의 실시예에서, 원자 프로세스 기반 트래픽 최적화기(501)가 전체적으로 또는 부분적으로 원격 호스트(가령, 호스트(100 또는 200)) 상에 위치한다. 예를 들어, 원격 호스트가 앱 서버(app server)/콘텐츠 제공자로 만들어진 요청을 인터셉트할 수 있고 임의의 상호연관성을 검출할 수 있다. 생성된 원자 프로세스를 이용하여, 호스트 서버 자체가, 생성된 원자 프로세스를 통해 하나의 검출된 요청을 기초로 하여 이뤄질 요청에 대한 추론을 수행할 수 있다(가령, 활동을 완성하기 위한(가령, 페이스북(Facebook)에서 상태 업데이트를 만족시키기, 또는 즉석 메시지를 송신 및 수신하기, 또는 웹 브라우징 이벤트 등을 위한) 하나 이상의 단계를 추론할 수 있다). 호스트 서버상에 위치할 때, 원자 프로세스 기반 트래픽 최적화기(401)는, 애플리케이션별로, 및/또는 장치별로, 원자 프로세스를 추적 및 저장, 및/또는 추후 업데이트할 수 있다. In one embodiment, atomic process based
도 6A은 모바일 장치와 프록시 서버 간의 분산 콘텐츠 캐싱과 콘텐츠 캐싱의 분산된 관리를 위한 예시적 프로세스를 도시하는 또 다른 흐름도를 도시한다. 6A shows another flow diagram illustrating an example process for distributed content caching between a mobile device and a proxy server and distributed management of content caching.
도 4의 예시의 분산 시스템 상호대화도에서 도시되는 것처럼, 본 발명의 기법은 클라이언트 측/모바일 장치 측(가령, 도 4의 예시의 경우, 모바일 장치(450))(가령, 도 4의 예시의 경우, 모바일 장치(450))과 서버 측(가령, 호스트 서버(485) 및/또는 선택적 캐싱 프록시(475)를 포함하는 서버 측(470)) 간에 분할된 작업들을 캐싱하는 다양한 양태를 갖는 분산 캐싱 모델이다. As shown in the example distributed system interaction diagram of FIG. 4, the technique of the present invention is based on the client side / mobile device side (eg,
일반적으로, 장치 측 책무는 특정 요청에 대한 응답이 캐싱될 수 있는지(및/또는 캐싱되어야 하는지) 여부를 결정하는 것을 포함할 수 있다. 프록시의 장치 측은 요청과 응답 둘 모두로부터/요청과 응답 동안에 수집되는 정보(가령, 타이밍 특성, 검출된 패턴, 휴리스틱을 이용해 검출된 패턴, 예측가능성 또는 반복성의 지시자)를 기초로, 이러한 결정을 할 수 있으며, 이를 캐싱할 수 있다(가령, 모바일 장치상의 로컬 캐시에 저장함). 또한 장치 측은 분산 캐시 시스템의 서버 측에게 이러한 로컬 캐시 이벤트를 통지할 수 있으며, 콘텐츠 소스의 모니터링(가령, 도 1B-1C의 애플리케이션 서버/콘텐츠 제공자(110))을 통지할 수 있다. In general, device side responsibility may include determining whether a response to a particular request can be cached (and / or should be cached). The device side of the proxy may make this determination based on information collected from both the request and the response / during the request and the response (e.g., timing characteristics, detected patterns, indicators detected using heuristics, indicators of predictability or repeatability). Can be cached (eg, stored in a local cache on the mobile device). The device side may also notify the server side of the distributed cache system of this local cache event and may notify the monitoring of the content source (eg, the application server /
장치 측은 (가령, 폴링에 의해, 또는 콘텐츠 소스로 폴링 요청을 전송함으로써) 분산 프록시의 서버 측에게 캐시 응답을 주기적으로 검증(validate)하도록 명령할 수 있다. 장치 측은, 특정 캐시 요청에 대한 응답이 로컬 캐시로부터 반환되어야 하는지 여부(가령, 캐시 히트(cache hit)가 검출되는지 여부)를 추가로 결정할 수 있다. 요청 및/또는 콘텐츠 소스로부터 수신된 응답으로부터(또는 요청 및/또는 응답 중에) 수집된 정보를 이용해, 장치 측(가령, 장치상의 로컬 프록시)에 의해 결정이 이뤄질 수 있다.The device side may instruct the server side of the distributed proxy to validate the cache response periodically (eg, by polling, or by sending a polling request to the content source). The device side may further determine whether a response to a particular cache request should be returned from the local cache (eg, whether a cache hit is detected). Decisions can be made by the device side (eg, a local proxy on the device) using the information collected from (or during the request and / or response) received from the request and / or content source.
일반적으로, 서버 측 책무는 관련성에 대하여 캐싱된 응답을 검증하는 것(가령, 캐싱된 응답이 여전히 유효한지 또는 이와 연계된 요청과 관련성이 있는지 여부를 판단하는 것)을 포함할 수 있다. 서버 측은 모바일 장치에게, 장치 측에게 캐싱된 응답이 더 이상 유효하지 않거나, 더 이상 관련성이 없을 때 통지하기 위해 무효화 요청을 전송할 수 있다(가령, 서버가 특정 콘텐츠 소스를 무효화한다). 그 후 장치 측이 로컬 캐시로부터 응답을 제거할 수 있다. In general, server-side duties may include verifying a cached response for relevance (eg, determining whether the cached response is still valid or related to a request associated with it). The server side may send an invalidation request to notify the mobile device when the cached response to the device side is no longer valid or no longer relevant (eg, the server invalidates a particular content source). The device side can then remove the response from the local cache.
도 6A의 다이어그램은, 모바일 장치(가령, 분산 프록시의 클라이언트 측)에서 검출된 각각의 검출되거나 인터셉트된 요청(가령, HTTP 요청)에 대해 수행되는 캐싱 로직 프로세스를 도시한다. 단계(602)에서, 프록시(가령, 도 2A-B에서 도시된 로컬 프록시(275), 또는 도 4의 모바일 장치(450))의 클라이언트 측이 (애플리케이션(가령, 모바일 애플리케이션) 또는 모바일 클라이언트로부터) 요청을 수신한다. 단계(604)에서, URL이 정규화되고, 단계(606)에서 클라이언트 측은 요청이 캐싱 가능한지 여부를 결정하도록 체크한다. 단계(612)에서 요청이 캐싱 가능한 것이 아니라고 결정된 경우, 클라이언트 측 프록시에 의해 인터셉트되는 것 없이 요청-응답 시퀀스와 유사하게, 단계(608)에서 요청이 소스(애플리케이션 서버/콘텐츠 제공자)로 전송되고, 단계(610)에서 응답이 수신되며, 단계(622)에서 요청하는 애플리케이션으로 전달된다. The diagram of FIG. 6A illustrates a caching logic process performed for each detected or intercepted request (eg, HTTP request) detected at a mobile device (eg, client side of a distributed proxy). In
요청이 캐싱 가능하다고 결정된 경우, 단계(612)에서 클라이언트 측은 캐시를 조사(look up)하여, 현재 요청에 대해 캐시 엔트리가 존재하는지 여부를 판단할 수 있다. 현재 요청에 대해 캐시 엔트리가 존재한다고 판단한 경우, 단계(624)에서 클라이언트 측은 엔트리가 유효한지 여부를 판단할 수 있고, 엔트리가 유효하다고 판단한 경우, 단계(615)에서 클라이언트 측은 요청을 체크하여, 검사자(가령, 수정된 헤더 또는 개체 태그)를 포함하는지 여부를 판단할 수 있다. 예를 들어, 가능한 유형의 헤더(가령, eTAG, Modified_Since, must_revlaidate, pragma no_cache)를 기술하는 RFC 2616의 섹션 13.3에서 검증의 개념이 빠져 있으며, 그럴 경우, 단계(622)에서 요청하는 애플리케이션으로 전달될 검증하는 응답을 형성한다(632). 단계(615)에서 판단될 때 요청이 검사자를 포함하지 않는 경우, 단계(630)에서 응답이 로컬 캐시로부터 형성되고, 단계(622)에서 요청하는 애플리케이션으로 전달된다. 이러한 검증 단계는 일반적으로 다른 경우라면 캐싱될 수 없음(un-cacheable)이라고 간주될 콘텐츠에 대해 사용될 수 있다. If it is determined that the request is cacheable, then at
대신, 단계(624)에서, 캐시 엔트리가 발견되지만, 더 이상이 유효하지 않다고 또는 무효하다고 판단되는 경우, 프록시의 클라이언트 측이 요청을 콘텐츠 소스(애플리케이션 서버/콘텐츠 호스트)로 전송하고(616), 소스로부터 직접 응답을 수신한다(618). 마찬가지로, 단계(612)에서 조사(look up) 동안 캐시 엔트리가 발견되지 않은 경우, 단계(616)에서 요청이 또한 전송된다. 응답이 수신되면, 단계(626)에서, 클라이언트 측이 응답을 체크하여, 캐싱 가능한지 여부를 판단할 수 있다. 캐싱 가능한 경우, 단계(620)에서 응답이 캐싱된다. 그 후, 단계(614)에서 클라이언트가 또 다른 폴을 전송하며, 단계(622)에서 응답을 요청하는 애플리케이션으로 전달한다. Instead, at
도 6B는 콘텐츠 캐싱의 이용 및 분산 프록시 시스템(460)에 의해 수행되는 모니터링을 통해 네트워크 및 배터리 자원이 보존되는 방식으로, 분산 프록시 시스템(460)에 의해, 무선 네트워크에서 모바일 장치(450)로부터 애플리케이션 서버/콘텐츠 제공자(495)로의 데이터 요청이 조화될 수 있는 방법을 도시하는 도면이다. 6B illustrates an application from a
분산 프록시 시스템(460) 없이, 모바일 장치(450)상의 애플리케이션 또는 클라이언트 요청을 만족시킬 때, 모바일 장치(450) 또는 상기 장치(450) 상에서 실행되는 소프트웨어 위젯이 애플리케이션 서버(495)로의 직접적인 데이터 요청(452)(가령, HTTP, GET, POST, 또는 그 밖의 다른 요청)을 수행하고, 서버/제공자(495)로부터 직접 응답(404)을 수신한다. 데이터가 업데이트되면, 업데이트를 반영하기 위해 모바일 장치(450)상의 위젯(455)이 리프레시되며, 짧은 시간 주기 동안 대기하며, 서버/제공자(495)로의 또 다른 데이터 요청을 개시한다. Without the distributed proxy system 460, when satisfying an application or client request on the
하나의 실시예에서, 장치(450)상의 요청하는 클라이언트 또는 소프트웨어 위젯(455)은, 서버/제공자(495)로 이뤄지는 데이터 요청을 핸들링할 때 분산 프록시 시스템(460)을 사용할 수 있다. 일반적으로, 분산 프록시 시스템(460)은 로컬 프록시(465)(시스템(460)의 클라이언트 측 구성요소로 간주되며 모바일 장치(450)상에 위치할 수 있음), 캐싱 프록시(475)(시스템(460)의 서버 측 구성요소(470)로 간주되며 호스트 서버(485)상에 위치하거나, 호스트 서버(485)의 외부에 전적으로 또는 부분적으로 위치할 수 있음), 및 호스트 서버(485)를 포함할 수 있다. 로컬 프록시(465)는, 임의의 네트워크 또는 네트워크들의 조합을 통해, 캐싱 프록시(475) 및 호스트 서버(485)로 연결될 수 있다. In one embodiment, the requesting client or software widget 455 on the
데이터/애플리케이션 요청에 대해 분산 프록시 시스템(460)이 사용될 때, 위젯(455)은 로컬 프록시(465)를 통해 데이터 요청(456)을 수행할 수 있다. 로컬 프록시(465)는 장치 애플리케이션에 의해 만들어진 요청을 인터셉트하고, 요청의 연결 유형(가령, HTTP get 요청, 또는 그 밖의 다른 유형의 요청)을 식별할 수 있다. 그 후, 로컬 프록시(465)는 요청에 대해 (가령, 로컬 저장된 응답이 이용가능한지 여부 및/또는 여전히 유효한지 여부를 판단하기 위해) 임의의 이전 정보에 대해 로컬 캐시에 질의할 수 있다. 로컬 저장된 응답이 이용가능하지 않은 경우, 또는 무효 응답이 저장된 경우, 로컬 프록시(465)는 요청에 대한 정보, 요청이 이뤄진 시점, 및 임의의 추가 데이터를 로컬 캐시에 업데이트하거나 저장할 수 있다. 상기 정보는, 아마도 다음번 요청을 만족시킬 때 사용되기 위해 업데이트될 수 있다. When distributed proxy system 460 is used for a data / application request, widget 455 may perform data request 456 via local proxy 465. The local proxy 465 can intercept a request made by the device application and identify the connection type of the request (eg, an HTTP get request, or some other type of request). The local proxy 465 may then query the local cache for any previous information about the request (eg, to determine whether a locally stored response is available and / or still valid). If a locally stored response is not available, or if an invalid response is stored, the local proxy 465 may update or store information about the request, when the request was made, and any additional data in the local cache. The information can be updated to be used, perhaps the next time it satisfies the request.
그 후 로컬 프록시(465)가 요청을 호스트 서버(485)로 전송하고, 호스트 서버(485)는 요청(456)을 수행할 수 있으며, 응답(458)으로 된 결과를 반환할 수 있다. 로컬 프록시(465)는 결과와, 이에 추가로, 상기 결과에 대한 정보를 저장할 수 있고, 결과를 요청하는 위젯(455)으로 반환할 수 있다. Local proxy 465 may then send the request to host
하나의 실시예에서, (특정 시간 주기 내에) 동일한 요청이 복수 번 발생하고, 상기 요청이 동일한 결과를 자주 도출한 경우, 로컬 프록시(465)는 서버(485)로, 결과를 로컬 프록시(465) 또는 요청 위젯(455)으로 반환하기 전에, 결과 변경사항을 찾기 위해 요청이 모니터링되어야 함(가령, 단계(462 및 464))을 통지(460)할 수 있다. In one embodiment, if the same request occurs multiple times (within a certain time period) and the request often yields the same result, the local proxy 465 sends it to the
하나의 실시예에서, 요청이 모니터링에 대해 표시되는 경우, 로컬 프록시(465)는 결과를 로컬 캐시에 저장할 수 있다. 이제, 로컬 응답이 이용 가능한 데이터 요청(466)이 위젯(455)에 의해 만들어지고 로컬 프록시(465)에서 인터셉트될 때, 무선 네트워크를 통한 연결 통신을 확립할 필요 없이, 로컬 프록시(465)가 로컬 캐시로부터 응답(468)을 반환할 수 있다. In one embodiment, if the request is marked for monitoring, the local proxy 465 may store the result in a local cache. Now, when a data request 466 with a local response available is made by the widget 455 and intercepted at the local proxy 465, the local proxy 465 is local, without having to establish connection communication over the wireless network. The
덧붙이자면, 서버 프록시가 모니터링이라고 표시된 요청을 수행(470)하여, 특정 요청에 대한 응답(472)이 변경됐는지 여부를 결정할 수 있다. 일반적으로 호스트 서버(485)는, 위젯(455) 또는 로컬 프록시(465) 동작에 무관하게, 이러한 모니터링을 수행할 수 있다. 요청에 대해 기대되지 않은 응답(472)이 수신될 때마다, 서버(485)는 로컬 프록시(465)에게 응답이 변경됐다고 통지(가령, 단계(474)에서 통지를 무효화)하고, 클라이언트상의 로컬 저장된 응답이 삭제되거나, 새로운 응답으로 대체되어야 한다. In addition, the server proxy may perform a request 470 marked as monitoring to determine whether the response 472 for the particular request has changed. In general, the
이 경우, 장치(450)에서의 위젯(455)에 의한 다음번 데이터 요청(476)이 호스트 서버(485)로부터 (가령, 캐싱 프록시(475)를 통해) 반환되는 데이터를 도출하고, 단계(478)에서, 캐싱 프록시(475)로부터의 요청이 만족된다. 따라서 분산 프록시 시스템(460)을 이용함으로써, 모바일 장치(450) 상의 위젯 또는 소프트웨어 애플리케이션(455)에 대한 콘텐츠/데이터가 실제로 변했을 때, 무선(셀룰러) 네트워크가 지능적으로 사용된다. 따라서 애플리케이션 데이터의 변경을 찾기 위해 체크될 필요가 있는 트래픽이 무선 (셀룰러) 네트워크를 통해 수행되지 않는다. 이로써, 생성된 네트워크 트래픽의 양이 감소되고, 모바일 장치(450)상에서 라디오 모듈이 켜지는 전체 시간과 횟수가 단축되며, 따라서 배터리 소모량이 감소되고, 추가로 빈 네트워크 대역폭이 이용 가능해진다.In this case, the next data request 476 by the widget 455 at the
도 7은 네트워크 액세스 및 콘텐츠 전달 정책을 구현하는 데 사용될 수 있는 서로 다른 트래픽 또는 애플리케이션 카테고리 유형의 예를 나타내는 표(700)를 도시한다. 예를 들어, 사용자가 응답, 전경/배경 애플리케이션을 기다리는 중인지 여부에 무관하게, 그리고 백라이트가 켜져 있거나 꺼져 있는지 여부에 무관하게, 트래픽/애플리케이션 카테고리는 상호대화 또는 배경을 포함할 수 있다. FIG. 7 shows a table 700 illustrating examples of different traffic or application category types that may be used to implement network access and content delivery policies. For example, the traffic / application category may include interaction or background, regardless of whether the user is waiting for a response, a foreground / background application, and whether the backlight is on or off.
도 8은 네트워크 액세스 및 콘텐츠 전달 정책을 구현하는 데 사용될 수 있는 서로 다른 콘텐츠 카테고리 유형의 예를 나타내는 서로 다른 표(800)를 도시한다. 예를 들어, 콘텐츠 카테고리 유형은 높거나 낮은 우선순위를 갖는 콘텐츠 및 시간 중요성 또는 비(non)-시간 중요성의 콘텐츠를 포함할 수 있다. 8 illustrates different tables 800 that illustrate examples of different content category types that may be used to implement network access and content delivery policies. For example, the content category type may include content with high or low priority and content of time importance or non-time importance.
도 9는 무선 네트워크를 통해 모바일 장치로부터 애플리케이션 서버/콘텐츠 제공자(995)로의 데이터 요청을 갖는 애플리케이션(가령, 모바일 애플리케이션)(955) 폴이 로컬 프록시(965) 상에 캐싱될 수 있고, 분산 캐싱 시스템(로컬 프록시(965) 및 (서버 캐시(935) 또는 캐싱 프록시 서버(975)를 갖는) 호스트 서버(985)에 의해 관리될 수 있는 방법을 보여주는 상호대화도를 도시한다.9 shows that an application (eg, mobile application) 955 poll having a data request from a mobile device to an application server / content provider 995 over a wireless network can be cached on the local proxy 965 and distributed caching system. An interactive diagram showing how it can be managed by local proxy 965 and host server 985 (with server cache 935 or caching proxy server 975) is shown.
하나의 예에서, 모바일 애플리케이션/위젯(955)이 애플리케이션 서버/제공자(932)에게 폴링할 때, 폴이 로컬 프록시(965)에 의해 모바일 장치상에서 로컬하게 인터셉트될 수 있다(934). 로컬 프록시(965)는, 요청에서 폴링된 콘텐츠에 대해 캐싱된 콘텐츠가 이용 가능하다고 검출할 수 있으며, 따라서 무선 네트워크 대역폭 또는 또 다른 무선 네트워크 자원을 사용할 필요 없이, 인터셉트된 폴(936)을 만족시키기 위해, 로컬 캐시로부터 응답을 불러올 수 있다. 그 후, 모바일 애플리케이션/위젯(955)은 캐시 엔트리(938)로부터의 폴에 대한 응답을 수신할 수 있다.In one example, when the mobile application / widget 955 polls the application server / provider 932, the poll may be intercepted locally on the mobile device by the local proxy 965 (934). The local proxy 965 may detect that cached content is available for the content polled in the request, thus satisfying the intercepted poll 936 without using wireless network bandwidth or another wireless network resource. To do this, you can retrieve the response from the local cache. The mobile application / widget 955 can then receive a response to the poll from the cache entry 938.
또 다른 예에서, 모바일 애플리케이션 위젯(955)이 애플리케이션 서버/제공자(940)로 폴링한다. 폴이 로컬 프록시(965)에 의해 인터셉트되고(942), 캐시 콘텐츠가 로컬 캐시에서 이용 가능하지 않음을 검출하며, 폴링받는 소스를 캐싱하도록 설정하기로 결정한다(944). 요청을 만족시키기 위해, 폴이 콘텐츠 소스로 포워딩된다(946). 애플리케이션 서버/제공자(995)가 애플리케이션으로부터 폴 요청을 수신하고, 현재 요청을 만족시키기 위한 응답을 제공한다(948). 단계(950)에서, 애플리케이션(가령, 모바일 애플리케이션)/위젯(955)은 애플리케이션 서버/제공자로부터 응답을 수신하여 요청을 만족시킬 수 있다. In another example, the mobile application widget 955 polls the application server / provider 940. The poll is intercepted by the local proxy 965 (942), detects that cache content is not available in the local cache, and decides to set up to cache the polled source (944). To satisfy the request, the poll is forwarded to the content source (946). Application server / provider 995 receives a poll request from the application and provides a response to satisfy the current request (948). In
이와 함께, 콘텐츠 캐싱을 설정하기 위해, 로컬 프록시(965)는 애플리케이션의 폴링 빈도를 추적하고, 호스트 서버로 전송될 폴링 스케줄을 설정할 수 있다(952). 로컬 프록시는 캐싱 설정을 호스트 서버로 전송한다(954). 호스트 서버(985)는, 예를 들어, 폴링될 애플리케이션 서버/제공자의 식별자와, 선택사항으로서, 폴링 스케줄을 포함하는 캐시 설정을 사용할 수 있다(956). 호스트 서버(985)는 애플리케이션 서버/제공자(995)로 폴링하여, 모바일 장치를 대신하여, 요청(958)에 대한 응답을 모니터링할 수 있다. 애플리케이션 서버는 호스트 서버로부터 폴을 수신하고, 응답한다(960). 호스트 서버(985)는 동일한 응답이 수신됐다고 판단하며, 특정 폴링 스케줄(962)에 따라, 애플리케이션 서버(995)로 폴링한다. 애플리케이션 서버/콘텐츠 제공자(995)는 폴을 수신하고 이에 따라 응답한다(964). 호스트 서버(985)는 변경되거나 새로운 응답을 검출하고, 로컬 프록시(965)로 통지한다. 호스트 서버(985)는 변경되거나 새로운 응답을 서버 캐시 또는 캐싱 프록시(968)에 추가로 저장할 수 있다. 로컬 프록시(965)는 호스트 서버(985)로부터, 새롭거나 변경된 데이터가 현재 이용 가능하다는 통지를 수신하고, 영향받은 캐시 엔트리를 무효화할 수 있다(970). 그 후, 애플리케이션(가령, 모바일 애플리케이션)/위젯(955)이 동일한 서버/콘텐츠 제공자에 대해 동일한 요청을 발생시키고(972), 로컬 프록시는 어떠한 유효한 캐시 엔트리도 이용 가능하지 않는다고 판단하며, 대신, 예를 들어 HTTP 연결을 통해 서버 캐시(974)로부터 응답을 불러온다. 호스트 서버(985)는 새로운 응답에 대한 요청을 수신하고, 로컬 프록시(965)로 응답을 다시 전송한다(976). 따라서 모바일 장치가 자신의 라디오를 이용하거나 모바일 네트워크 대역폭을 소비할 필요 없이, 서버 캐시 또는 캐싱 프록시(978)로부터의 요청이 만족됨으로써, 네트워크 자원을 보존할 수 있다. In addition, to set up content caching, the local proxy 965 can track the polling frequency of the application and set a polling schedule to be sent to the host server (952). The local proxy sends caching settings to the host server (954). The host server 985 may use cache settings, including, for example, an identifier of the application server / provider to be polled and, optionally, a polling schedule (956). The host server 985 may poll the application server / provider 995 to monitor the response to the request 958 on behalf of the mobile device. The application server receives the poll from the host server and responds (960). The host server 985 determines that the same response has been received and polls the application server 995 according to a particular polling schedule 962. The application server / content provider 995 receives the poll and responds accordingly (964). The host server 985 detects the changed or new response and notifies the local proxy 965. The host server 985 may further store modified or new responses in the server cache or caching proxy 968. Local proxy 965 may receive a notification from host server 985 that new or changed data is currently available, and invalidate the affected cache entry (970). The application (eg, mobile application) / widget 955 issues the same request for the same server /
또는, 단계(980)에서 애플리케이션(가령, 모바일 애플리케이션)이 동일한 요청을 생성할 때, 로컬 프록시(965)는, 어떠한 유효한 캐시 엔트리도 이용가능하지 않다고 판단하는 것에 응답하여, 단계(982)에서, 폴을 애플리케이션 서버/제공자에게 모바일 네트워크를 통해 포워딩한다. 단계(984)에서 애플리케이션 서버/제공자(995)는 모바일 네트워크를 통해 폴을 수신하고, 응답을 모바일 장치로 전송한다. 따라서 단계(986)에서 모바일 네트워크를 이용해 서버/제공자로부터 요청이 만족된다. Or, in step 982, when the application (eg, mobile application) generates the same request in step 980, the local proxy 965 determines that no valid cache entry is available. Forward the poll to the application server / provider over the mobile network. In
도 10은 애플리케이션(1055)이, 무선 네트워크를 통해 콘텐츠 식별자 내 캐시 디피트 메커니즘(가령, 캐싱을 디피트하도록 의도된 식별자)을 이용하고 무선 네트워크를 통해 검출되고 로컬하게 캐싱되는 애플리케이션 서버/콘텐츠 제공자(1095)로부터의 콘텐츠에 대해 폴링하는 방법을 도시한다. 10 illustrates an application server / content provider in which an
하나의 예에서, 단계(1032)에서 애플리케이션(가령, 모바일 애플리케이션)/위젯(1055)이 애플리케이션 서버/제공자로 폴링할 때, 단계(1034)에서 로컬 프록시(1065)에 의해 모바일 장치상에서 폴이 로컬하게 인터셉트될 수 있다. 단계(1034)에서, (임의의 확신도 및 휴리스틱을 이용해) 모바일 장치상의 로컬 프록시(1065)는 또한, 서버 제공자에 의해, 캐시 디피트 수단이 이용되거나, 이용될 수 있다고 판단할 수 있다. In one example, when an application (eg, mobile application) /
로컬 프록시(1065)는 요청에서 폴링된 콘텐츠에 대해 캐싱된 콘텐츠가 이용가능한다고 검출할 수 있고, 따라서 무선 네트워크 대역폭 또는 또 다른 무선 네트워크 자원을 사용할 필요 없이, 로컬 캐시로부터 응답을 불러와, 인터셉트된 폴(1036)을 만족시킬 수 있다. 단계(1038)에서 애플리케이션(가령, 모바일 애플리케이션)/위젯(1055)은 캐시 엔트리(가령, 모바일 장치상에 로컬하게 저장된 캐시 엔트리)로부터의 폴에 대한 응답을 수신할 수 있다. The local proxy 1065 may detect that cached content is available for content polled in the request, thus fetching a response from the local cache and intercepting, without the need to use wireless network bandwidth or another wireless network resource. The pole 1036 may be satisfied. In step 1038 the application (eg, mobile application) /
또 다른 예에서, 단계(1040)에서 애플리케이션(가령, 모바일 애플리케이션) 위젯(1055)은 애플리케이션 서버/제공자(1095)로 폴링한다. 단계(1042)에서, 로컬 프록시(1065)에 의해 폴이 인터셉트되며, 상기 로컬 프록시(1065)는 서버/제공자(1095)에 의해 캐시 디피트 메커니즘이 이용된다고 판단한다. 또한 로컬 프록시(1065)는 이러한 요청에 대해 캐싱된 콘텐츠가 로컬 캐시에서 이용 가능하지 않음을 검출하고, 단계(1044)에서 폴링 받는 콘텐츠 소스를 캐싱을 위해 설정하기로 결정한다. 그 후, 단계(1046)에서, 로컬 프록시(1065)는 요청의 식별자의 패턴(가령, 포맷 또는 구문)을 추출하고, 애플리케이션의 폴링 빈도를 추적하여, 호스트 서버(1085)의 폴링 스케줄을 설정할 수 있다. In another example, at step 1040 the application (eg, mobile application)
단계(1048)에서, 요청을 만족시키기 위해, 폴 요청이 콘텐츠 제공자(1095)로 포워딩된다. 단계(1050)에서 애플리케이션 서버/제공자(1095)는 애플리케이션으로부터 폴 요청을 수신하고, 응답을 제공하여, 현재 요청을 만족시킬 수 있다. 단계(1052)에서, 애플리케이션(가령, 모바일 애플리케이션)/위젯(1055)은 애플리케이션 서버/제공자(1095)로부터의 응답을 수신함으로써, 요청을 만족시킬 수 있다. At step 1048, the poll request is forwarded to the content provider 1095 to satisfy the request. In
이와 함께, 단계(1054)에서, 콘텐츠 캐싱을 설정하기 위해, 로컬 프록시(1065)가, 차후의 식별과 불러오기(retrieval)를 위해 수신된 응답과 연계하여 응답을 캐싱하고 정규화된 버전의 식별자(또는 정규화된 식별자의 해시 값(hash value))를 저장한다. 단계(1056)에서 로컬 프록시가 호스트 서버(1085)로 캐시 설정을 전송한다. 예를 들어, 캐시 설정은, 식별자 및/또는 정규화된 버전의 식별자를 포함한다. 일부 경우, 정규화된 식별자와 다른 수정된 식별자가 호스트 서버(1085)로 전송된다. Along with this, in step 1054, in order to set up content caching, the local proxy 1065 caches the response in association with the response received for later identification and retrieval, and identifies the fully qualified version of the identifier ( Or hash value of the normalized identifier. In step 1056 the local proxy sends the cache settings to the host server 1085. For example, the cache setting may include an identifier and / or a fully qualified version of the identifier. In some cases, a modified identifier that is different from the normalized identifier is sent to the host server 1085.
단계(1058)에서, 호스트 서버(1085)는, 예를 들어, 폴링 받을 애플리케이션 서버/제공자의 식별자와, 선택사항으로서, 폴링 스케줄을 포함하는 캐시 설정을 사용할 수 있다. 단계(1060)에서 호스트 서버(1085)는 모바일 장치를 대신하여 요청에 대한 응답을 모니터링하기 위해 애플리케이션 서버/제공자(1095)로 폴링할 수 있다. 단계(1062)에서 애플리케이션 서버(1095)는 호스트 서버(1085)로부터의 폴을 수신하고 응답한다. 단계(1064)에서 호스트 서버(1085)는 동일한 응답이 수신됐다고 판단하고, 예를 들어, 특정 폴링 스케줄에 따라, 그리고 정규화된 또는 수정된 식별자를 이용해 애플리케이션 서버(1095)로 폴링한다. 단계(1066)에서 애플리케이션 서버/콘텐츠 제공자(1095)는 폴을 수신하고, 이에 따라서 응답한다. In step 1058, the host server 1085 may use a cache setting that includes, for example, an identifier of the application server / provider to be polled and, optionally, a polling schedule. In step 1060, the host server 1085 may poll the application server / provider 1095 to monitor the response to the request on behalf of the mobile device. In step 1062, the application server 1095 receives and responds to a poll from the host server 1085. In step 1064 the host server 1085 determines that the same response has been received and polls the application server 1095 according to a particular polling schedule, for example, and using a normalized or modified identifier. In step 1066 the application server / content provider 1095 receives the poll and responds accordingly.
이때, 단계(1068)에서, 호스트 서버(1085)는 변경되거나 새로운 응답을 검출하고, 로컬 프록시(1065)를 통지한다. 단계(1070)에서 호스트 서버(1085)는 변경되거나 새로운 응답을 서버 캐시(1035) 또는 캐싱 프록시(1075)에 추가로 저장할 수 있다. 단계(1072)에서, 로컬 프록시(1065)는 호스트 서버(1085)로부터, 새롭거나 변경된 데이터가 현재 이용가능하다는 통지를 수신하고, 영향받은 캐시 엔트리를 무효화할 수 있다. 그 후, 단계(1074)에서, 애플리케이션(가령, 모바일 애플리케이션)/위젯이 동일한 서버/콘텐츠 제공자(1095)에 대해 동일한 요청을 생성하고, 로컬 프록시(1065)가 어떠한 유효한 캐시 엔트리도 이용가능하지 않다고 판단하며, 대신, 단계(1076)에서, 가령, HTTP 연결을 통해, 서버 캐시로부터 응답을 불러온다. 단계(1078)에서, 호스트 서버(1085)는 새로운 응답에 대해 요청을 수신하고, 응답을 로컬 프록시(1065)로 다시 전송한다. 따라서 단계(1080)에서 모바일 장치가 자신의 라디오를 사용하거나 모바일 네트워크 대역폭을 소모할 필요없이, 서버 캐시 또는 캐싱 프록시로부터 요청이 만족되고, 따라서 네트워크 자원이 보존된다. At this time, in step 1068, the host server 1085 detects the changed or new response and notifies the local proxy 1065. In step 1070 the host server 1085 may further store the changed or new response in the server cache 1035 or caching proxy 1075. At step 1072, local proxy 1065 may receive a notification from host server 1085 that new or changed data is currently available and invalidate the affected cache entry. Then, at step 1074, the application (eg, mobile application) / widget generates the same request for the same server / content provider 1095, and the local proxy 1065 says that no valid cache entry is available. And instead, in step 1076, retrieve the response from the server cache, eg, over an HTTP connection. In step 1078, the host server 1085 receives the request for a new response and sends the response back to the local proxy 1065. Thus, in step 1080, the request from the server cache or caching proxy is satisfied, without the mobile device having to use its radio or consume mobile network bandwidth, thus conserving network resources.
또는, 애플리케이션(가령, 모바일 애플리케이션)(1055)이 동일한 요청을 생성할 때, 로컬 프록시(1065)는, 단계(1082)에서, 어떠한 유효한 캐시 엔트리도 이용 가능하지 않는다고 판단한 것에 응답하여, 단계(1082)에서 모바일 네트워크를 통해 폴을 애플리케이션 서버 제공자(1095)에게 포워딩한다. 단계(1086)에서 애플리케이션 서버/제공자(1095)는 폴을 수신하며, 모바일 네트워크를 통해 응답을 모바일 장치로 전송한다. 따라서 단계(1088)에서, 모바일 네트워크(1086)를 이용해 서버/제공자로부터 요청이 만족된다.Or, when the application (eg, mobile application) 1055 generates the same request, the local proxy 1065 responds, at step 1082, in response to determining that no valid cache entry is available, step 1082. Forward the poll to the application server provider 1095 over the mobile network. In step 1086 the application server / provider 1095 receives the poll and sends a response to the mobile device over the mobile network. Thus, at step 1088, the request from the server / provider is satisfied using the mobile network 1086.
도 11은 모바일 장치를 대신하여 요청을 하기 위한 예시적 프로세스를 나타내는 흐름도이다.11 is a flow diagram illustrating an example process for making a request on behalf of a mobile device.
프로세스(1102)에서, 모바일 장치로부터의 요청들의 시퀀스가 검출된다. 요청은, 사용자 요청을 만족시킴의 결과로서, 사용자에 의해, 또는 애플리케이션에 의해 개시되거나, 배경 데이터 교환(애플리케이션 업데이트/유지관리 등)으로서 사용될 수 있다. 프로세스(1104)에서, 재현가능한 패턴이 모바일 장치로부터의 요청의 시퀀스로 식별된다. 도 12의 예시에서 흐름 'A'로 도시된 예시적 특성들의 일부를 이용해, 재현가능한 패턴이 식별될 수 있다. In process 1102, a sequence of requests from the mobile device is detected. The request may be initiated by the user or by the application as a result of satisfying the user request, or used as background data exchange (application update / maintenance, etc.). In
프로세스(1106)에서, 재현 가능한 패턴을 이용해 모바일 장치와 별개의 개체에 요청들의 시퀀스가 복제된다. 복제는 요청의 도착지(가령, 호스트 주소, 콘텐츠 소스 주소), 요청의 콘텐츠/속성, 요청의 타이밍/주기성 등을 기초로 할 수 있다. 프로세스(1108)에서, 모바일 장치에서의 자원을 보존하기 위해 모바일 장치를 대신하여 상기 개체에 의해 요청의 시퀀스가 전송된다. 하나의 실시예에서, 상기 개체는 모바일 장치와 무선 통신할 수 있는 (분산 프록시 시스템의 서버 측의) 프록시 서버이다. 개체가 요청들의 시퀀스를, 인터넷, 임의의 IP 또는 광대역 연결, 또는 그 밖의 다른 임의의 연결을 포함해 임의의 유형의 유선 또는 무선 연결을 통해, 하나 이상의 도착지로 전송할 수 있어서, 모바일 장치 요청이 예측되고 재생산될 수 있을 때 셀룰러 네트워크 자원이 보존될 수 있도록 한다. In
또한, 모바일 장치로부터 원격에 위치하거나 모바일 장치에 의해 식별되는 프록시 서버(가령, 분산 프록시 시스템의 클라이언트 측의 로컬 프록시)에 의해 재현 가능한 패턴이 검출 또는 식별될 수 있다. 모바일 장치에 의해 식별되는 경우, 재현 가능한 패턴이 복제 및/또는 시뮬레이션을 위해 프록시 서버로 전달될 수 있다. 덧붙이자면, 로컬 프록시 및/또는 프록시 서버에 의해, 이벤트의 시퀀스로부터 원자 프로세스가 생성된다. 일반적으로, 원자 프로세스는 임의의 패턴, 반복 가능성, 또는 주기성을 갖는다고 검출된 모바일 장치로부터의 이벤트/요청의 임의의 세트를 포함한다. 따라서 원자 프로세스의 하나의 요청이 검출된 경우, 시스템은 원자 프로세스의 나머지 요청들이 발생할 가능성이 높다고 예측할 수 있다. 이러한 예측은 원자 프로세스의 다음번 요청 또는 그 밖의 다른 요청을, 복제 및/또는 시뮬레이션되어 도착지로 전송되도록 원격 개체로 분담시킬 수 있다. In addition, reproducible patterns may be detected or identified by a proxy server (eg, a local proxy on the client side of a distributed proxy system) that is remote from or identified by the mobile device. When identified by the mobile device, a reproducible pattern can be passed to the proxy server for replication and / or simulation. In addition, an atomic process is generated from the sequence of events by the local proxy and / or proxy server. In general, an atomic process includes any set of events / requests from a mobile device that are detected to have any pattern, repeatability, or periodicity. Thus, if one request of the atomic process is detected, the system can predict that the remaining requests of the atomic process are likely to occur. This prediction may share the next request or other request of the atomic process with the remote entity to be replicated and / or simulated and sent to the destination.
하나의 실시예에서, 요청들의 시퀀스가 모바일 장치상의 하나의 애플리케이션의 서버의 서로 다른 주소 지정된 개체로 전달된다. 도착지 주소(가령, 도 1A에 도시된 것)로부터, 요청들이 애플리케이션 서버의 상이한 개체들로 전달되고 상이한 도착지 주소를 가질지라도, 시스템은 모바일 장치상의 동일한 애플리케이션으로부터의 요청의 시퀀스가 하나의 애플리케이션 서버/호스트로 전달됨을 확인할 수 있다. 예를 들어, 도착지 주소의 패턴 또는 공유 파라미터가 요청이 하나의 서버로 전달됨을 지시할 수 있다. 하나의 실시예에서, 이러한 요청은 원자 프로세스로서 생성되고, 또 다른 개체에 의해 복제 및 시뮬레이션을 위해 분담될 수 있어서, 모바일 장치 또는 모바일 애플리케이션 자체가 셀룰러 네트워크를 통해 예측 가능한 이벤트를 반복적으로 전송할 필요가 없도록 할 수 있다. In one embodiment, the sequence of requests is delivered to different addressed entities of the server of one application on the mobile device. From the destination address (eg, shown in FIG. 1A), although the requests are forwarded to different entities of the application server and have different destination addresses, the system has a single application server / sequence of requests from the same application on the mobile device. You can see that it is delivered to the host. For example, a pattern or shared parameter of the destination address may indicate that the request is forwarded to one server. In one embodiment, this request is generated as an atomic process and can be shared for replication and simulation by another entity, such that the mobile device or mobile application itself does not need to repeatedly send a predictable event over the cellular network. You can do that.
프로세스(1110)에서, 모바일 애플리케이션에서의 동작을 만족시키기 위해서, 또는 배경 유지관리(background maintenance)를 위해서, 요청들의 시퀀스에 대한 응답이 모바일 장치로 전달된다. 응답이 소스(가령, 애플리케이션 또는 콘텐츠 소스)에서부터 모바일 장치로 직접 전송되거나, 프록시 서버로 전송되고, 그 후 상기 프록시 서버가 응답을 모바일 장치로 전송한다. In
일반적으로, 요청의 시퀀스는, 모바일 애플리케이션, 브라우저, 인터넷 브라우저, 또는 그 밖의 다른 위젯과 사용자의 상호대화의 결과로서 생성된 요청을 포함할 수 있다. 또한 요청들의 시퀀스는 배경에서 애플리케이션 또는 위젯에 의해 자동으로 생성되는(가령, 사용자에 의해 사용되지 않는) 요청을 포함할 수 있다. 일부 경우, 요청들의 시퀀스는 트리거링 이벤트(triggering event)에 비교해, 예측 가능한 시간격에서 발생할 수 있다. 상기 트리거링 이벤트는 시스템 이벤트, 애플리케이션 이벤트, 장치 이벤트, 및/또는 사용자 이벤트 또는 활동일 수 있다. 상기 트리거링 이벤트는 요청들의 시퀀스의 하나의 요청일 수 있다. 프로세스(1112)에서, 요청들의 시퀀스의 개시를 유발하는 트리거링 이벤트가 식별된다. In general, the sequence of requests may include a request generated as a result of the user's interaction with a mobile application, browser, internet browser, or other widget. The sequence of requests may also include a request that is automatically generated (eg, not used by the user) by the application or widget in the background. In some cases, the sequence of requests may occur at a predictable time interval compared to a triggering event. The triggering event may be a system event, an application event, a device event, and / or a user event or activity. The triggering event may be one request in a sequence of requests. In process 1112, a triggering event is identified that causes the initiation of the sequence of requests.
프로세스(1114)에서, 트리거링 이벤트의 발생이 검출된다. 프로세스(1116)에서, 이벤트의 시퀀스가 개체에서 시뮬레이트되고, 프로세스(1118)에서 모바일 장치에서 임의의 요청이 인터셉트되고 전송되지 않도록 한다. 덧붙여, 이벤트가 개체로부터 의도된 도착지로 전송될 수 있기 때문에, 프로세스(1122)에서 모바일 장치의 장치 라디오가 꺼짐(off) 상태인 경우 켜지지 않도록 한다. In process 1114, the occurrence of a triggering event is detected. In process 1116, a sequence of events is simulated in the entity, and in
도 12는 모바일 장치로부터의 요청에서 재현 가능한 패턴을 식별하거나 검출하기 위해 예시적 프로세스를 도시하는 흐름도이다. 12 is a flow chart illustrating an example process for identifying or detecting a reproducible pattern in a request from a mobile device.
프로세스(1202)에서, 요청들의 시퀀스에 의해 주소지정된 도착지 주소 내 파라미터가 추출된다. 프로세스(1208)에서 이전 아웃고잉 요청들의 도착지 주소가 서로 비교된다. 또는, 프로세스(1210)에서, 이전 아웃고잉 요청들의 도착지 주소는 알려진 주소들의 리스트와 비교된다. In process 1202, the parameters in the destination address addressed by the sequence of requests are extracted. In
프로세스(1212)에서, 요청이 동일한 애플리케이션으로부터 발원되는지 여부, 및/또는 상기 요청이 동일한 서버로 전달되는지 여부가 판단된다. 예를 들어, 상이하지만 일부 동일/유사한 파라미터를 공유하는 도착지 주소는, 요청이 동일한 애플리케이션으로부터 발원된 것이거나, 동일한 호스트(동일한 호스트의 상이한 주소지정 가능한 개체일 수 있을지라도)로 전달되는 것임을 지시할 수 있다. 그럴 경우, 프로세스(1214)에서, 재현 가능한 패턴이 식별된다. 덧붙이자면, 또 다른 기준이 사용되어, 예를 들어, 패턴 추출 또는 패턴 매칭 기법을 통하여 식별된 패턴을 통해, 요청들의 하나의 세트가 동일한 애플리케이션/위젯으로부터 발원된 것이거나, 동일한 호스트/서버로 전달되는 것이라고 판단할 수 있다. 또한 도착지 주소가 독립적으로, 알려진 도착지에 대한 알려진 주소들의 리스트나 표(요청이 동일한 애플리케이션으로부터 발원된 것 및/또는 동일한 서버로 전달되는 것이라고 판단하기 위한 수단)와 비교될 수 있다. In
마찬가지로, 예를 들어, 프로세스(1206)에서처럼, 프로세스(1204)에서, 타이밍 패턴이 요청들의 시퀀스에서 결정되는 경우, 또는 요청들의 시퀀스에서 주기성 패턴이 결정되는 경우, 재현 가능한 패턴이 식별될 수 있다. 요청들의 시퀀스의 타이밍 패턴이 절대 시점(가령, 요일 'x' 또는 한 달 중 특정일 'x' 등에서의 시점 't1', 't2', 't3' 등)에 의해 특징지어질 수 있다. 또한 타이밍 패턴은 상대 시점으로 특징지어지거나, 하나 이상의 이벤트/활동에 상대적으로 특징지어질 수 있다. 예를 들어, 요청, 또는 요청들의 시퀀스가, 특정 사용자, 시스템, 애플리케이션, 또는 장치 이벤트 후에, 발생한다고 검출될 수 있다. 또한 요청이, 또 다른 요청 후, 약간의 허용가능한 임계치 내에서 반복될 수 있는 간격을 두고 발생한다고 검출될 수 있다.Likewise, in process 1204, for example, as in
특정 요청 시퀀스의 요청들 간의 시간 간격에 의해, 및/또는 서로 다른 요청 시퀀스들 간 시간 간격에 의해, 주기성 패턴이 특징지어질 수 있다. 주기성을 가질 수 있는 서로 다른 요청 시퀀스가 모바일 장치상의 서로 다른 모바일 애플리케이션/클라이언트 또는 위젯에 의해 전송될 수 있다. 주기성은 하나의 애플리케이션이 또 다른 애플리케이션을 자동으로 또는 사용자에 의해 수동으로 런치(launch)한다는 지시자일 수 있으며, 따라서 하나의 요청 시퀀스는 또 다른 요청 시퀀스가 뒤따를 것임을 종종 나타낸다. 이러한 주기성은, 복제될 수 있는 재현 가능한 패턴일 수 있고, 따라서 요청은 원격 프록시로 부분적으로 또는 전적으로 분담될 수 있다. 예를 들어, 사용자가 페이스북 애플리케이션을 통해 페이스북(Facebook)에 최신정보(update)와 사진을 게시하고, 그 후, 동일한 사진이나 최신정보를 트위터(Twitter)에 게시하는 일련의 이벤트가 개시될 때 주기성이 검출될 수 있다. 이 패턴은, 모바일 장치의 원격에 위치하는 개체에서 일련의 이벤트가 시뮬레이트되게 하는 검출된 주기성일 수 있다. The periodicity pattern can be characterized by the time interval between requests of a particular request sequence and / or by the time interval between different request sequences. Different request sequences, which may have periodicity, may be sent by different mobile applications / clients or widgets on the mobile device. The periodicity can be an indicator that one application launches another application automatically or manually by the user, so that one request sequence often indicates that another request sequence will follow. This periodicity can be a reproducible pattern that can be replicated so that the request can be partially or wholly shared with the remote proxy. For example, a user may post an update and picture on Facebook via a Facebook application, and then a series of events may be initiated that post the same picture or update to Twitter. When periodicity can be detected. This pattern may be a detected periodicity that causes a series of events to be simulated in an object located remotely of the mobile device.
도 13은 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 예시적 프로세스를 도시하는 흐름도이다. 13 is a flowchart illustrating an example process for simulating a traffic request from a mobile device.
프로세스(1302)에서, 요청이, 적어도 부분적으로 반복될 수 있는 트래픽 패턴으로서 검출된 요청들의 시퀀스 중 하나라는 것이 검출된다. 하나의 예에서, 요청 시퀀스는, 하나의 애플리케이션을 위해 호스트 서버에서 서로 다른 도착지 주소에 의해 식별되는 서로 다른 주소지정 가능한 개체로 전달된다. 또 다른 예를 들면, 요청 시퀀스는 복수의 애플리케이션으로 전달되지만, 다른 방식으로 반복 가능한 패턴을 갖는 요청을 포함할 수 있으며, 모바일 장치의 외부에서 재현될 수 있다. In
프로세스(1304)에서, 모바일 장치에 의해 요청이 도착지로 전송되는 것에 앞서서, 요청이 모바일 장치에 의해 이뤄진다고 예측된다. 요청은, 모바일 장치에서의 사용자 이벤트, 애플리케이션 이벤트, 장치 이벤트 또는 시스템 이벤트를 기초로 하여 만들어질 수 있다. 또한 모바일 장치에서 활동이 발생하는 중이고, 요청이, 일반적으로 상기 활동을 완료하기 위해 이뤄진 알려진 요청들의 시퀀스 중 일부일 때, 예측이 이뤄질 수 있다. In
프로세스(1306)에서, 요청은, 모바일 장치상의 애플리케이션에 의한 아웃고잉 요청의 트래픽 패턴을 기초로 시뮬레이트된다. 프로세스(1308)에서, 모바일 장치와 별도인, 또는 상기 모바일 장치 외부에 위치하는 개체에서, 모바일 장치를 대신하여, 도착지로의 요청이 이뤄진다. 프로세스(1310)에서, 모바일 장치를 대신하여 개체에 의해 전송되는 요청에 대한 응답이 도착지로부터 모바일 장치로 전송된다. In
프로세스(1312)에서, 트래픽 패턴을 이용해, 애플리케이션에 대한 애플리케이션 프로파일이 생성되거나 업데이트된다. 모바일 장치(가령, 로컬 프록시)에 의해, 및/또는 요청을 시뮬레이트한 원격 개체 또는 그 밖의 다른 임의의 개체에 의해, 애플리케이션 프로파일이 생성되거나 업데이트될 수 있다.In
하나의 실시예에서, 트래픽 패턴을 갖는 애플리케이션 프로파일이 원격 개체에 유지 또는 저장되고, 복수의 모바일 장치를 서비스하기 위해 사용될 수 있다. 예를 들어, 프로세스(1314)에서, 애플리케이션 프로파일이, 동일한 애플리케이션을 갖는 타 모바일 장치에 대한 트래픽 요청을 시뮬레이트하기 위해 사용될 수 있다. 애플리케이션 프로파일이 복수의 애플리케이션에 대해 저장, 생성, 및 유지될 수 있고, 모바일 장치, 서비스 영역, 및/또는 네트워크 제공자들에 걸쳐 사용될 수 있다. In one embodiment, an application profile with traffic patterns may be maintained or stored at a remote entity and used to service a plurality of mobile devices. For example, in
도 14는 모바일 장치 상의 복수의 모바일 애플리케이션에 의해 만들어진 요청을 분담하기 위한 예시적 프로세스를 도시하는 흐름도이다. 14 is a flowchart illustrating an example process for sharing a request made by a plurality of mobile applications on a mobile device.
프로세스(1402)에서, 모바일 장치상의 복수의 애플리케이션 각각에 대해 각각의 세트가 검출될 때, 아웃고잉 요청의 트래픽 패턴의 세트가 검출된다. 트래픽 패턴은 이전 아웃고잉 요청의 타이밍 및/또는 이전 아웃고잉 요청의 도착지 주소에 의해, 특징화될 수 있다. 프로세스(1404)에서, 모바일 장치상의 복수의 애플리케이션에 의해 만들어지는 요청이 예측된다. 프로세스(1406)에서, 모바일 장치와 별도인 개체에서, 상기 모바일 장치를 대신하여, 복수의 애플리케이션과 연계된 도착지로의 요청이 이뤄진다. In
모바일 상의 복수의 애플리케이션에 대해 식별된 이러한 트래픽 패턴이 개체(가령, 원격 프록시 서버)에, 예를 들어, 애플리케이션 프로파일에 포함된 정보의 일부로서 저장될 수 있다. 그 후, 프록시 서버가 이러한 정보를 이용하여, 동일한 애플리케이션을 갖는 타 모바일 장치로부터의 요청의 분담을 관리할 수 있다. Such traffic patterns identified for a plurality of applications on the mobile may be stored in an entity (eg, a remote proxy server), for example as part of the information included in the application profile. The proxy server can then use this information to manage the sharing of requests from other mobile devices with the same application.
도 15는 모바일 장치에서 만들어진 요청을 원격 개체로 분담시키기 위한 예시적 프로세스를 도시하는 흐름도이다. 15 is a flowchart illustrating an example process for sharing a request made at a mobile device to a remote entity.
프로세스(1502)에서, 모바일 장치로부터 발원된 요청들의 세트가 예측 가능한 시간격으로 발생한다고 검출된다. 요청들의 세트의 예측 가능한 시간격이 모바일 장치상의 로컬 프록시에 의해 검출될 수 있다. 하나의 실시예에서, 예측 가능한 시간격은 허용 가능한 오차 임계치 내에서(제한받지 않은 예를 들면, <0.5%, <1%, <5%, <10%, <20% 등) 예측 가능하다. 예측 가능한 시간격이 트리거링 이벤트에 상대적인 것으로 특정되거나, 절대 시점(가령, 특정 시각, 특정 요일, 특정 날짜)으로 특정될 수 있다. In
프로세스(1504)에서, 요청들의 세트 내 식별 가능한 패턴으로부터, 모바일 애플리케이션으로부터 요청들의 세트가 생성됨이 검출된다. 프로세스(1506)에서, 상기의 정보가 원격 개체로 전달되고, 상기 원격 개체가 요청들의 세트를 시뮬레이트할 수 있다. 원격 개체는 모바일 장치상의 로컬 프록시와 무선 통신할 수 있는 프록시 서버를 포함할 수 있다. In
프로세스(1508)에서, 요청들의 세트의 다음번 발생이, 모바일 장치로부터 분담되어, 원격 개체에 의해 전송될 수 있다. 예를 들어, 프로세스(1510)에서, 요청들의 세트의 다음번 발생이 인터셉트되고 모바일 장치로부터 전송되지 않게 된다. 원격 개체는, 모바일 장치상의 모바일 애플리케이션을 대신하여, 요청들의 세트의 다음번 발생을 시뮬레이트하고, 전송/송신할 수 있다. 프로세스(1512)에서, 원격 개체에 의해 만들어진 요청들의 세트의 다음번 발생에 대한 응답이 모바일 장치에서 수신된다. 덧붙이자면, 모바일 애플리케이션은, 모바일 애플리케이션을 대신하여 원격 개체에 의해 전송되는 다음번 발생하는 요청들의 세트에 대한 응답을 수신한다. At process 1508, the next occurrence of the set of requests can be shared from the mobile device and sent by the remote entity. For example, at
트리거링 이벤트는 모바일 애플리케이션에 대한 동작(action) 및/또는 모바일 애플리케이션에 대한 사용자 동작 또는 사용자 활동을 포함할 수 있다. 상기 동작은 또한, 모바일 애플리케이션의 배경 유지관리 활동(background maintenance activity)일 수 있다. 예를 들어, 프로세스(1514)에서, 모바일 애플리케이션에 대한 사용자 동작 또는 사용자 활동이 검출되고, 프로세스(1516)에서 사용자 동작 또는 활동이 트리거링 이벤트로서 식별된다. 따라서, 트리거링 이벤트의 다음번 발생이 검출되면, 프로세스(1518)에서처럼, 원격 개체가 모바일 애플리케이션을 대신하여 요청의 세트를 시뮬레이트한다. 그 후, 프로세스는 흐름(1508)으로 계속되며, 여기서, 원격 개체가 모바일 장치를 대신하여 요청을 전송하는 것을 넘겨받는다.The triggering event may include an action for the mobile application and / or a user action or user activity for the mobile application. The operation may also be background maintenance activity of the mobile application. For example, at
도 16은 컴퓨터 시스템의 예시적 형태로 된 기계를 나타내는 개략도이며, 상기 기계에서, 본원에서 개시되는 방법들 중 임의의 하나 이상을 기계가 수행하도록 하는 명령(instruction)들의 하나의 세트가 실행될 수 있다. 16 is a schematic diagram illustrating a machine in an exemplary form of a computer system, in which one set of instructions may be executed to cause a machine to perform any one or more of the methods disclosed herein. .
대안적 실시예에서, 기계는 자립형(standalone) 장치로서 동작하거나, 다른 기계로 연결(가령, 네트워크-연결)될 수 있다. 네트워크-연결된 형태에서, 기계는 클라이언트-서버 네트워크 환경에서 서버 또는 클라이언트 기계로서 동작하거나, 피어-투-피어(또는 분산) 네트워크 환경에서 피어 기계(peer machine)로서 동작할 수 있다. In alternative embodiments, the machine may operate as a standalone device or may be connected (eg, network-connected) to another machine. In network-connected form, the machine may operate as a server or client machine in a client-server network environment, or as a peer machine in a peer-to-peer (or distributed) network environment.
기계는, 서버 컴퓨터, 클라이언트 컴퓨터, 개인 컴퓨터(PC), 사용자 장치, 태블릿 PC, 랩톱 컴퓨터, 셋 톱 박스(STB), PDA(personal digital assistant), 셀룰러 전화기, iPhone, iPad, Blackberry, 프로세서, 전화기, 웹 어플라이언스, 네트워크 라우터, 스위치 또는 브리지, 콘솔, 핸드-헬드 콘솔, (핸드-헬드) 게임 장치, 음악 재생기, 임의의 휴대용, 모바일, 핸드-헬드 장치, 또는 수행할 동작을 특정하는 한 세트의 명령어를 (순차적으로 또는 그 밖의 다른 방식으로) 실행할 수 있는 임의의 기계일 수 있다. Machines include server computers, client computers, personal computers (PCs), user devices, tablet PCs, laptop computers, set-top boxes (STBs), personal digital assistants (PDAs), cellular phones, iPhones, iPads, Blackberries, processors, and telephones. , Web appliance, network router, switch or bridge, console, hand-held console, (hand-held) game device, music player, any portable, mobile, hand-held device, or a set of actions that specify an action to perform It can be any machine capable of executing instructions (sequentially or otherwise).
하나의 예시적 실시예에서, 기계 판독형 매체 또는 기계 판독형 저장 매체가 하나의 단일 매체인 것으로 나타나지만, 용어 "기계-판독형 매체" 및 "기계-판독형 저장 매체"는 하나 이상의 세트의 명령을 저장하는 단일 매체 또는 복수의 매체(가령, 중앙집중형 또는 분산형 데이터베이스 및/또는 이와 연계된 캐시 및 서버)를 포함하도록 이해되어야 한다. 용어 "기계-판독형 매체"와 "기계-판독형 저장 매체"는 또한, 기계가 현재 개시된 기법 및 혁신 기술의 방법들 중 임의의 하나 이상을 수행하도록 하며 기계에 의해 실행되기 위한 한 세트의 명령을 저장, 인코딩, 또는 지닐 수 있는 임의의 매체를 포함하도록 이해되어야 할 것이다. In one exemplary embodiment, a machine-readable medium or machine-readable storage medium appears to be one single medium, although the terms "machine-readable medium" and "machine-readable storage medium" refer to one or more sets of instructions. It should be understood to include a single medium or a plurality of media (e.g., a centralized or distributed database and / or caches and servers associated with it). The terms "machine-readable medium" and "machine-readable storage medium" also refer to a set of instructions for causing a machine to perform any one or more of the presently disclosed techniques and innovations and to be executed by a machine. It is to be understood to include any medium that can store, encode, or bear.
일반적으로, 본원에 개시된 실시예를 구현하도록 실행되는 루틴이, 운영 체제, 또는 특정 애플리케이션, 구성요소, 프로그램, 객체, 모듈, 또는 "컴퓨터 프로그램"이라 지칭되는 명령들의 시퀀스의 일부분으로서 구현될 수 있다. 컴퓨터 프로그램은, 컴퓨터의 다양한 메모리 및 저장 장치에서 다양한 시점에서, 컴퓨터의 하나 이상의 프로세싱 유닛에 의해 판독되고 실행될 때 컴퓨터가 본원의 다양한 양태들과 관련된 요소를 실행하기 위한 동작을 수행하도록 하는 하나 이상의 명령 세트를 포함하는 것이 일반적이다. In general, routines executed to implement embodiments disclosed herein may be implemented as part of an operating system or a particular application, component, program, object, module, or sequence of instructions referred to as a “computer program”. . A computer program is one or more instructions that, at various points in time in various memories and storage devices of the computer, cause the computer to perform operations for executing elements related to the various aspects herein when read and executed by one or more processing units of the computer. It is common to include a set.
덧붙여, 실시예들이, 완전히 동작하는 컴퓨터 및 컴퓨터 시스템의 맥락에서 기재되었지만, 해당업계 종사자라면 다양한 실시예는 다양한 형태의 프로그램 프로덕트로서 분산될 수 있고, 본원은 실제로 분산을 위해 사용되는 특정 유형의 기계 또는 컴퓨터-판독형 매체에 무관하게 동일하게 적용됨을 알 것이다. In addition, while the embodiments have been described in the context of fully operational computers and computer systems, those skilled in the art will appreciate that various embodiments may be distributed as various forms of program products, and the present application may, in fact, be embodied by the particular type of machine used for the distribution. Or the same applies regardless of the computer-readable medium.
기계-판독형 저장 매체, 기계-판독형 매체, 또는 컴퓨터-판독형 (저장) 매체의 추가 예로는, 기록 가능한 유형의 매체, 가령, 휘발성 및 비-휘발성 메모리 장치, 플로피 및 그 밖의 다른 탈착식 디스크, 하드 디스크 드라이브, 광학 디스크(가령, CD ROMS(Compact Disk Read-Only Memory), DVD(Digital Versatile Disk) 등) 등, 전송 유형 매체(가령, 디지털 및 아날로그 통신 링크) 등이 있다(그러나 이에 국한되지 않음).Further examples of machine-readable storage media, machine-readable media, or computer-readable (storage) media include, but are not limited to, recordable types of media, such as volatile and non-volatile memory devices, floppies and other removable disks. , Hard disk drives, optical disks (such as CD Compact Disk Read-Only Memory), digital versatile disks (DVD), and the like, but not limited to transmission type media (such as digital and analog communication links). Not).
문맥상 명백하게 그렇지 않다고 언급하지 않는 한, 상세한 설명과 청구범위에서, "~를 포함하다", "~를 포함하는" 및 이와 유사한 용어는, 폐쇄형이 아닌 개방형으로 사용되는데, 즉, "~를 포함하지만, ~에 국한되는 것은 아니다"의 의미로 사용된다. 본원에서 사용될 때 "연결된", "결합된", 또는 이들의 임의의 변형형태는 둘 이상의 요소 간의 직접 또는 간접적 임의의 연결 또는 결합을 의미하며, 요소들 간의 연결의 결합은 물리적, 논리적, 또는 이 둘의 조합일 수 있다. 덧붙이자면, "여기서", "상기의", "하기의" 등의 단어가 본 명세서에서 사용될 때, 이 출원을 전체적으로 지칭하는 것이며 이 출원의 임의의 특정 부분을 지칭하는 것이 아니다. 문맥이 허용하는 한, 단수형 또는 복수형을 이용한 상기의 상세한 설명의 기재는 각각, 복수형 또는 단수형도 포함할 수 있다. 둘 이상의 아이템의 리스트를 참조할 때 단어 "또는"은, 리스트의 아이템들 중 임의의 것, 또는 리스트의 모든 아이템들, 또는 리스트의 아이템들 중 임의의 조합을 커버한다. Unless the context clearly indicates otherwise, in the description and claims, the terms "comprises", "comprising", and similar terms are used in an open, non-closed manner, that is, in " Include, but are not limited to. As used herein, “connected”, “coupled,” or any variation thereof means any connection or combination, directly or indirectly, between two or more elements, wherein the coupling of the connections between the elements is physical, logical, or It can be a combination of the two. In addition, the words “here,” “above,” “below,” and the like when used herein refer to this application as a whole and not to any particular part of this application. As long as the context permits, the description of the above detailed description using the singular or plural may also include the plural or singular, respectively. The word "or" when referring to a list of two or more items covers any of the items in the list, or all the items in the list, or any combination of the items in the list.
본원의 실시예에 대한 상기의 상세한 설명은 상기의 개시된 형태로의 한정을 의미하는 것이 아니다. 본원의 특정 실시예, 및 그 예시가 앞서, 설명을 목적으로 기재되었지만, 해당 분야의 통상의 기술자가 인식할 다양한 동등한 수정예가 본원의 범위 내에서 가능하다. 예를 들어, 프로세스 또는 블록이 지정된 순서로 제공되지만, 대안적 실시예가 단계들을 갖는 루틴을 수행하거나, 블록을 갖는 시스템을 상이한 순서로 이용할 수 있고, 일부 프로세스 또는 블록은 삭제, 이동, 추가, 분할, 결합, 및/또는 수정되어, 대안예 또는 서브-조합을 제공할 수 있다. 이들 프로세스 또는 블록 각각은 다양한 서로 다른 방식으로 구현될 수 있다. 또한, 프로세스 또는 블록이 순차적으로 수행되는 것처럼 보이지만, 이들 프로세스 또는 블록은 병렬로 수행되거나, 서로 다른 시점에서 수행될 수 있다. 덧붙이자면, 본원에서 언급된 임의의 특정 숫자는 예에 불과하며, 대안적 구현예가 다른 값 또는 범위를 이용할 수 있다. The foregoing detailed description of the embodiments herein is not meant to be limiting to the disclosed form. While specific embodiments of the present application, and examples thereof, have been described above for purposes of illustration, various equivalent modifications that would be recognized by those skilled in the art are possible within the scope of the present application. For example, while processes or blocks are provided in a specified order, alternative embodiments may perform routines with steps, or use systems with blocks in a different order, and some processes or blocks may be deleted, moved, added, or split. May be combined, and / or modified to provide alternatives or sub-combinations. Each of these processes or blocks can be implemented in a variety of different ways. Also, while processes or blocks appear to be performed sequentially, these processes or blocks may be performed in parallel or at different points in time. In addition, any particular number referred to herein is merely an example, and alternative embodiments may use other values or ranges.
본원에서 제공되는 설명은, 앞서 기재된 시스템외에 다른 시스템에도 적용될 수 있다. 상기에서 기재된 다양한 실시예의 요소 및 동작은 조합되어, 추가 실시예를 제공할 수 있다. The description provided herein may be applied to other systems in addition to the systems described above. The elements and acts of the various embodiments described above can be combined to provide further embodiments.
첨부된 출원서에 나열될 수 있는 앞서 언급된 임의의 특허 및 출원과 그 밖의 다른 인용문헌은 본원에서 참조로서 포함된다. 필요에 따라, 앞서 기재된 다양한 참조문헌의 시스템, 기능, 및 개념을 이용하기 위해, 본원의 양태는 수정되어, 본 발명의 또 다른 실시예를 제공할 수 있다.Any of the aforementioned patents and applications and other citations which may be listed in the appended application are incorporated herein by reference. If desired, aspects of the present disclosure may be modified to provide further embodiments of the present invention in order to utilize the systems, functions, and concepts of the various references set forth above.
상기의 상세한 설명을 고려하여 이러한 변경과 그 밖의 다른 변경이 본 발명에 적용될 수 있다. 상기에서 본 발명의 특정 실시예를 기재하고, 고려될 수 있는 가장 최적 모드를 기재하지만, 앞서 상세히 나타나더라도, 본 발명의 사상은 다양한 방식으로 실시될 수 있다. 시스템의 구현 세부사항은 본 발명의 범위 내에서 상당히 달라질 수 있다. 앞서 언급된 바와 같이, 본 발명의 특징 또는 양태를 기재할 때 사용되는 특정 용어는, 용어가 상기 용어와 관련되는 본 발명의 임의의 특정 특성, 특징, 또는 양태로 제한되는 것으로 재정의되는 것을 의미하지 않아야 한다. 일반적으로, 앞서 언급된 상세한 설명 섹션이 이러한 용어를 명시적으로 정의하지 않는 한, 다음의 청구범위에서 사용되는 용어는 본 발명을 상세한 설명에서 개시된 특정 실시예로 한정하도록 구성되지 않는다. 따라서 본 발명의 실제 범위는 본원에 기재된 실시예만 아니라, 특허청구범위에 따라 실시 또는 구현되는 모든 동치예까지 포함한다. These and other changes can be applied to the present invention in consideration of the above detailed description. While specific embodiments of the present invention have been described above and the most optimal mode contemplated, it will be appreciated that the spirit of the invention may be practiced in various ways. Implementation details of the system can vary significantly within the scope of the invention. As mentioned above, certain terms used in describing the features or aspects of the present invention are not meant to be redefining that the terms are limited to any particular feature, feature, or aspect of the present invention with which the terms are associated. Should not. Generally, the terms used in the following claims should not be construed to limit the invention to the specific embodiments disclosed in the description, unless the above detailed description section explicitly defines such terms. Thus, the true scope of the present invention includes not only the embodiments described herein but also all equivalents embodied or implemented in accordance with the claims.
본 발명의 특정 양태가 특정 청구항의 형태로 이하에서 제공되지만, 발명자는 본 발명의 다양한 양태를 임의의 개수의 청구항 형태로 고려한다. 예를 들어, 본 발명의 단 하나의 양태는 35 U.S.C. §112, ¶6에 따르는 기능식 청구항(means-plus function claim)으로서 구현되고, 그 밖의 다른 양태는 이와 유사하게 기능식 청구항 또는 그 밖의 다른 형태, 가령, 컴퓨터-판독형 매체로서 구현될 수 있다. (35 U.S.C. §112, ¶6에 따라 취급되는 임의의 청구항은, "~하기 위한 수단"이라는 단어로 시작할 것이다.) 따라서 출원인은 출원 후에 본 발명의 또 다른 양태를 위한 이러한 추가 청구항 형태를 추구하기 위해 추가 청구항을 추가할 권리를 가진다.
While certain aspects of the invention are provided below in the form of specific claims, the inventors contemplate the various aspects of the invention in any number of claims. For example, only one aspect of the invention is embodied as a means-plus function claim in accordance with 35 USC § 112, ¶ 6, and other aspects are similarly similar to functional claims or other It may be embodied in a form such as a computer-readable medium. (Any claim dealt with under 35 USC § 112, ¶ 6, will begin with the word “means for”.) Thus, the applicant should seek this further claim form for another aspect of the invention after filing. Reserves the right to add additional claims.
Claims (30)
모바일 장치로부터의 요청들의 시퀀스가 재현 가능한 패턴을 가짐을 검출하는 단계,
재현 가능한 패턴을 이용해, 요청들의 시퀀스를, 모바일 장치와 별개인 개체(entity)에 복제하는 단계,
모바일 장치에 있는 자원을 보존하기 위해, 상기 개체(entity)가, 모바일 장치를 대신하여, 요청들의 시퀀스를 전송하는 단계
를 포함하며, 요청들의 시퀀스에 대한 응답은 모바일 장치로 제공되는 것을 특징으로 하는 모바일 장치를 대신하여 요청을 하는 방법.A method for making a request on behalf of a mobile device, the method comprising
Detecting that the sequence of requests from the mobile device has a reproducible pattern,
Using a reproducible pattern, replicating the sequence of requests to an entity separate from the mobile device,
Sending, by the entity, a sequence of requests on behalf of the mobile device to conserve resources at the mobile device;
Wherein the response to the sequence of requests is provided to the mobile device.
요청들의 시퀀스의 개시를 유발하는 트리거링 이벤트(triggering event)를 식별하는 단계
를 더 포함하며, 요청들의 시퀀스는 상기 트리거링 이벤트에 상대적인 예측 가능한 시간격으로 발생하는 것을 특징으로 하는 모바일 장치를 대신하여 요청을 하는 방법. The method of claim 1 wherein the method is
Identifying a triggering event that triggers the initiation of the sequence of requests
Further comprising a sequence of requests occurring at a predictable time interval relative to the triggering event.
모바일 장치에서의 트리거링 이벤트의 발생을 검출하는 단계, 및
모바일 장치에서 요청을 인터셉트(intercept)하고 상기 요청이 모바일 장치로부터 전송되지 않게 하는 단계
를 더 포함하는 것을 특징으로 하는 모바일 장치를 대신하여 요청을 하는 방법. The method of claim 2, wherein the method
Detecting the occurrence of a triggering event at the mobile device, and
Intercepting the request at the mobile device and preventing the request from being sent from the mobile device
And making a request on behalf of the mobile device.
상기 개체에서 이벤트들의 시퀀스를 시뮬레이트하는 단계, 및
상기 개체가 모바일 장치를 대신하여 요청들의 시퀀스를 전송하는 단계
를 더 포함하는 것을 특징으로 하는 모바일 장치를 대신하여 요청을 하는 방법. The method of claim 2, wherein the method
Simulating a sequence of events in the entity, and
The entity sending a sequence of requests on behalf of a mobile device
And making a request on behalf of the mobile device.
상기 프록시 서버는 요청들의 시퀀스를 비-셀룰러 연결(non-cellular connection)을 통해 하나 이상의 도착지로 전송하는 것을 특징으로 하는 모바일 장치를 대신하여 요청을 하는 방법. The method of claim 1, wherein the entity is a proxy server capable of wireless communication with a mobile device,
And wherein the proxy server sends the sequence of requests to one or more destinations over a non-cellular connection.
상기 재현 가능한 패턴이 모바일 장치상의 로컬 프록시에 의해 검출되고, 복제되도록 프록시 서버로 전달되고,
원자 프로세스(atomic process)가 이벤트들의 시퀀스로부터 생성되는 것을 특징으로 하는 모바일 장치를 대신하여 요청을 하는 방법. The method according to claim 6,
The reproducible pattern is detected by a local proxy on the mobile device and passed to the proxy server to be replicated,
A method for making a request on behalf of a mobile device, wherein an atomic process is created from the sequence of events.
모바일 장치에 의해 요청이 도착지로 전송되기에 앞서서, 요청이 모바일 장치에 의해 이뤄질 것임을 예측하는 단계로서, 상기 요청은, 모바일 장치상의 애플리케이션에 대한 적어도 부분적으로 반복되는 트래픽 패턴으로서 검출된 요청들의 시퀀스 중 하나인, 상기 예측하는 단계와,
모바일 장치와 별개인 개체에서, 상기 모바일 장치를 대신하여 도착지로의 요청을 하는 단계
를 포함하는 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 방법.A method for simulating a traffic request from a mobile device, the method comprising:
Predicting that a request will be made by the mobile device prior to the request being sent by the mobile device to the destination, wherein the request is one of a sequence of detected requests as at least partially repeated traffic pattern for the application on the mobile device. Predicting one;
In a separate entity from the mobile device, making a request to the destination on behalf of the mobile device
And simulating a traffic request from a mobile device.
개체는 요청을 더 시뮬레이트하며, 시뮬레이션은, 모바일 장치상의 애플리케이션에 의한 아웃고잉 요청(outgoing request)의 트래픽 패턴을 기초로 하며,
도착지는 애플리케이션에 대한 호스트 서버인 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 방법.The method of claim 13,
The entity further simulates the request, and the simulation is based on the traffic pattern of the outgoing request by the application on the mobile device,
The destination is a method for simulating traffic requests from a mobile device, characterized in that the destination server is a host server for the application.
트래픽 패턴을 이용해 애플리케이션에 대한 애플리케이션 프로파일을 생성하거나 업데이트하는 단계
를 더 포함하는 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 방법.14. The method of claim 13,
Create or update an application profile for your application using traffic patterns
Further comprising a traffic request from a mobile device.
애플리케이션 프로파일을 이용하여, 동일한 애플리케이션을 갖는 타 모바일 장치에 대해 트래픽 요청을 시뮬레이트하는 단계
를 더 포함하는 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 방법. 18. The method of claim 17,
Simulating a traffic request for another mobile device with the same application using the application profile
Further comprising a traffic request from a mobile device.
아웃고잉 요청의 트래픽 패턴의 세트를 검출하는 단계
를 더 포함하며, 각각의 세트는 모바일 장치상의 복수의 애플리케이션 중 하나에 대해 검출되는 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 방법. 14. The method of claim 13,
Detecting a set of traffic patterns of the outgoing request
Further comprising each set is detected for one of a plurality of applications on the mobile device.
모바일 장치상의 복수의 애플리케이션에 의해 이뤄질 요청들을 예측하는 단계, 및
모바일 장치를 대신하여, 모바일 장치와 별개인 개체에서, 상기 복수의 애플리케이션과 연계된 도착지로의 요청이 이뤄지는 단계
를 더 포함하는 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 방법.The method of claim 19, wherein the method is
Predicting requests to be made by a plurality of applications on the mobile device, and
On behalf of the mobile device, making a request to a destination associated with the plurality of applications at an entity separate from the mobile device
Further comprising a traffic request from a mobile device.
트래픽 패턴을 식별할 때, 애플리케이션에 대한 이전 아웃고잉 요청의 도착지 주소를, 알려진 주소들의 리스트와 비교하는 단계
를 더 포함하는 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 방법.The method of claim 21, wherein the method is
When identifying the traffic pattern, comparing the destination address of the previous outgoing request for the application with a list of known addresses.
Further comprising a traffic request from a mobile device.
장치 배터리 보존 및 네트워크 자원 보존을 위해 모바일 장치에 의해 상기 요청이 전송되지 않게 하는 단계
를 더 포함하고, 개체에 의해 모바일 장치를 대신하여 전송되는 요청에 대한 응답이 도착지로부터 모바일 장치로 전송되는 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 방법. The method of claim 13, wherein the method is
Preventing the request from being sent by the mobile device for device battery conservation and network resource conservation
And further comprising a response from the destination to the mobile device in response to the request being sent on behalf of the mobile device by the entity.
모바일 장치에 의해 요청을 도착지로 전송하기 앞서서, 모바일 장치에 의해 요청이 이뤄질 것을 예측하는 프록시 서버
를 포함하고, 상기 프록시 서버는 모바일 장치로부터의 이전 아웃고잉 요청(outgoing request)에 대한 트래픽 패턴의 검출을 통해 요청을 예측하며,
상기 프록시 서버는 모바일 장치를 대신하여 요청을 시뮬레이트하고, 상기 요청에 의해 주소지정된 도착지로 요청을 전송하는 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 시스템.A system for simulating traffic requests from a mobile device, the system comprising
Proxy server that predicts that the request will be made by the mobile device prior to sending the request to the destination by the mobile device.
Wherein the proxy server predicts the request through detection of a traffic pattern for a previous outgoing request from a mobile device,
The proxy server simulates the request on behalf of the mobile device and sends the request to the destination addressed by the request.
상기 요청은 모바일 장치상의 애플리케이션에 의해 발원되며,
요청은 애플리케이션에 대해 검출된 적어도 부분적으로 반복되는 요청들의 시퀀스 중 하나인 것을 특징으로 하는 모바일 장치로부터의 트래픽 요청을 시뮬레이트하기 위한 시스템.
30. The method of claim 29,
The request is originated by an application on the mobile device,
And wherein the request is one of a sequence of at least partially repeated requests detected for the application.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/457,368 | 2012-04-26 | ||
US13/457,368 US8832228B2 (en) | 2011-04-27 | 2012-04-26 | System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101227821B1 true KR101227821B1 (en) | 2013-01-29 |
Family
ID=47845654
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120137313A KR101227821B1 (en) | 2012-04-26 | 2012-11-29 | System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101227821B1 (en) |
Cited By (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8621075B2 (en) | 2011-04-27 | 2013-12-31 | Seven Metworks, Inc. | Detecting and preserving state for satisfying application requests in a distributed proxy and cache system |
US8700728B2 (en) | 2010-11-01 | 2014-04-15 | Seven Networks, Inc. | Cache defeat detection and caching of content addressed by identifiers intended to defeat cache |
US8750123B1 (en) | 2013-03-11 | 2014-06-10 | Seven Networks, Inc. | Mobile device equipped with mobile network congestion recognition to make intelligent decisions regarding connecting to an operator network |
US8761756B2 (en) | 2005-06-21 | 2014-06-24 | Seven Networks International Oy | Maintaining an IP connection in a mobile network |
US8774844B2 (en) | 2007-06-01 | 2014-07-08 | Seven Networks, Inc. | Integrated messaging |
US8775631B2 (en) | 2012-07-13 | 2014-07-08 | Seven Networks, Inc. | Dynamic bandwidth adjustment for browsing or streaming activity in a wireless network based on prediction of user behavior when interacting with mobile applications |
US8799410B2 (en) | 2008-01-28 | 2014-08-05 | Seven Networks, Inc. | System and method of a relay server for managing communications and notification between a mobile device and a web access server |
US8811952B2 (en) | 2002-01-08 | 2014-08-19 | Seven Networks, Inc. | Mobile device power management in data synchronization over a mobile network with or without a trigger notification |
US8812695B2 (en) | 2012-04-09 | 2014-08-19 | Seven Networks, Inc. | Method and system for management of a virtual network connection without heartbeat messages |
US8832228B2 (en) | 2011-04-27 | 2014-09-09 | Seven Networks, Inc. | System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief |
US8838783B2 (en) | 2010-07-26 | 2014-09-16 | Seven Networks, Inc. | Distributed caching for resource and mobile network traffic management |
US8839412B1 (en) | 2005-04-21 | 2014-09-16 | Seven Networks, Inc. | Flexible real-time inbox access |
US8843153B2 (en) | 2010-11-01 | 2014-09-23 | Seven Networks, Inc. | Mobile traffic categorization and policy for network use optimization while preserving user experience |
US8862657B2 (en) | 2008-01-25 | 2014-10-14 | Seven Networks, Inc. | Policy based content service |
US8868753B2 (en) | 2011-12-06 | 2014-10-21 | Seven Networks, Inc. | System of redundantly clustered machines to provide failover mechanisms for mobile traffic management and network resource conservation |
US8874761B2 (en) | 2013-01-25 | 2014-10-28 | Seven Networks, Inc. | Signaling optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols |
US8903954B2 (en) | 2010-11-22 | 2014-12-02 | Seven Networks, Inc. | Optimization of resource polling intervals to satisfy mobile device requests |
US8909759B2 (en) | 2008-10-10 | 2014-12-09 | Seven Networks, Inc. | Bandwidth measurement |
US8909202B2 (en) | 2012-01-05 | 2014-12-09 | Seven Networks, Inc. | Detection and management of user interactions with foreground applications on a mobile device in distributed caching |
US8934414B2 (en) | 2011-12-06 | 2015-01-13 | Seven Networks, Inc. | Cellular or WiFi mobile traffic optimization based on public or private network destination |
US9002828B2 (en) | 2007-12-13 | 2015-04-07 | Seven Networks, Inc. | Predictive content delivery |
US9009250B2 (en) | 2011-12-07 | 2015-04-14 | Seven Networks, Inc. | Flexible and dynamic integration schemas of a traffic management system with various network operators for network traffic alleviation |
US9021021B2 (en) | 2011-12-14 | 2015-04-28 | Seven Networks, Inc. | Mobile network reporting and usage analytics system and method aggregated using a distributed traffic optimization system |
US9043433B2 (en) | 2010-07-26 | 2015-05-26 | Seven Networks, Inc. | Mobile network traffic coordination across multiple applications |
US9065765B2 (en) | 2013-07-22 | 2015-06-23 | Seven Networks, Inc. | Proxy server associated with a mobile carrier for enhancing mobile traffic management in a mobile network |
US9084105B2 (en) | 2011-04-19 | 2015-07-14 | Seven Networks, Inc. | Device resources sharing for network resource conservation |
US9161258B2 (en) | 2012-10-24 | 2015-10-13 | Seven Networks, Llc | Optimized and selective management of policy deployment to mobile clients in a congested network to prevent further aggravation of network congestion |
US9173128B2 (en) | 2011-12-07 | 2015-10-27 | Seven Networks, Llc | Radio-awareness of mobile device for sending server-side control signals using a wireless network optimized transport protocol |
US9241314B2 (en) | 2013-01-23 | 2016-01-19 | Seven Networks, Llc | Mobile device with application or context aware fast dormancy |
US9307493B2 (en) | 2012-12-20 | 2016-04-05 | Seven Networks, Llc | Systems and methods for application management of mobile device radio state promotion and demotion |
US9325662B2 (en) | 2011-01-07 | 2016-04-26 | Seven Networks, Llc | System and method for reduction of mobile network traffic used for domain name system (DNS) queries |
KR20190027578A (en) * | 2017-09-07 | 2019-03-15 | 주식회사 케이티 | Apparatus for transforming MMS media using caching decision and method thereof |
US10263899B2 (en) | 2012-04-10 | 2019-04-16 | Seven Networks, Llc | Enhanced customer service for mobile carriers using real-time and historical mobile application and traffic or optimization data associated with mobile devices in a mobile network |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070006317A1 (en) | 2005-07-04 | 2007-01-04 | Sony Ericsson Mobile Communications Japan, Inc. | Mobile terminal, contents delivery system, and contents reproduction program |
US20100214984A1 (en) | 2009-02-24 | 2010-08-26 | Pantech Co., Ltd. | Method for random access process in mobile communication system |
-
2012
- 2012-11-29 KR KR1020120137313A patent/KR101227821B1/en active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070006317A1 (en) | 2005-07-04 | 2007-01-04 | Sony Ericsson Mobile Communications Japan, Inc. | Mobile terminal, contents delivery system, and contents reproduction program |
US20100214984A1 (en) | 2009-02-24 | 2010-08-26 | Pantech Co., Ltd. | Method for random access process in mobile communication system |
Cited By (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8811952B2 (en) | 2002-01-08 | 2014-08-19 | Seven Networks, Inc. | Mobile device power management in data synchronization over a mobile network with or without a trigger notification |
US8839412B1 (en) | 2005-04-21 | 2014-09-16 | Seven Networks, Inc. | Flexible real-time inbox access |
US8761756B2 (en) | 2005-06-21 | 2014-06-24 | Seven Networks International Oy | Maintaining an IP connection in a mobile network |
US8805425B2 (en) | 2007-06-01 | 2014-08-12 | Seven Networks, Inc. | Integrated messaging |
US8774844B2 (en) | 2007-06-01 | 2014-07-08 | Seven Networks, Inc. | Integrated messaging |
US9002828B2 (en) | 2007-12-13 | 2015-04-07 | Seven Networks, Inc. | Predictive content delivery |
US8862657B2 (en) | 2008-01-25 | 2014-10-14 | Seven Networks, Inc. | Policy based content service |
US8799410B2 (en) | 2008-01-28 | 2014-08-05 | Seven Networks, Inc. | System and method of a relay server for managing communications and notification between a mobile device and a web access server |
US8838744B2 (en) | 2008-01-28 | 2014-09-16 | Seven Networks, Inc. | Web-based access to data objects |
US8909759B2 (en) | 2008-10-10 | 2014-12-09 | Seven Networks, Inc. | Bandwidth measurement |
US9043433B2 (en) | 2010-07-26 | 2015-05-26 | Seven Networks, Inc. | Mobile network traffic coordination across multiple applications |
US8838783B2 (en) | 2010-07-26 | 2014-09-16 | Seven Networks, Inc. | Distributed caching for resource and mobile network traffic management |
US9049179B2 (en) | 2010-07-26 | 2015-06-02 | Seven Networks, Inc. | Mobile network traffic coordination across multiple applications |
US8700728B2 (en) | 2010-11-01 | 2014-04-15 | Seven Networks, Inc. | Cache defeat detection and caching of content addressed by identifiers intended to defeat cache |
US8843153B2 (en) | 2010-11-01 | 2014-09-23 | Seven Networks, Inc. | Mobile traffic categorization and policy for network use optimization while preserving user experience |
US8782222B2 (en) | 2010-11-01 | 2014-07-15 | Seven Networks | Timing of keep-alive messages used in a system for mobile network resource conservation and optimization |
US8903954B2 (en) | 2010-11-22 | 2014-12-02 | Seven Networks, Inc. | Optimization of resource polling intervals to satisfy mobile device requests |
US9325662B2 (en) | 2011-01-07 | 2016-04-26 | Seven Networks, Llc | System and method for reduction of mobile network traffic used for domain name system (DNS) queries |
US9084105B2 (en) | 2011-04-19 | 2015-07-14 | Seven Networks, Inc. | Device resources sharing for network resource conservation |
US8832228B2 (en) | 2011-04-27 | 2014-09-09 | Seven Networks, Inc. | System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief |
US8621075B2 (en) | 2011-04-27 | 2013-12-31 | Seven Metworks, Inc. | Detecting and preserving state for satisfying application requests in a distributed proxy and cache system |
US8868753B2 (en) | 2011-12-06 | 2014-10-21 | Seven Networks, Inc. | System of redundantly clustered machines to provide failover mechanisms for mobile traffic management and network resource conservation |
US8934414B2 (en) | 2011-12-06 | 2015-01-13 | Seven Networks, Inc. | Cellular or WiFi mobile traffic optimization based on public or private network destination |
US8977755B2 (en) | 2011-12-06 | 2015-03-10 | Seven Networks, Inc. | Mobile device and method to utilize the failover mechanism for fault tolerance provided for mobile traffic management and network/device resource conservation |
US9277443B2 (en) | 2011-12-07 | 2016-03-01 | Seven Networks, Llc | Radio-awareness of mobile device for sending server-side control signals using a wireless network optimized transport protocol |
US9173128B2 (en) | 2011-12-07 | 2015-10-27 | Seven Networks, Llc | Radio-awareness of mobile device for sending server-side control signals using a wireless network optimized transport protocol |
US9009250B2 (en) | 2011-12-07 | 2015-04-14 | Seven Networks, Inc. | Flexible and dynamic integration schemas of a traffic management system with various network operators for network traffic alleviation |
US9208123B2 (en) | 2011-12-07 | 2015-12-08 | Seven Networks, Llc | Mobile device having content caching mechanisms integrated with a network operator for traffic alleviation in a wireless network and methods therefor |
US9021021B2 (en) | 2011-12-14 | 2015-04-28 | Seven Networks, Inc. | Mobile network reporting and usage analytics system and method aggregated using a distributed traffic optimization system |
US9131397B2 (en) | 2012-01-05 | 2015-09-08 | Seven Networks, Inc. | Managing cache to prevent overloading of a wireless network due to user activity |
US8909202B2 (en) | 2012-01-05 | 2014-12-09 | Seven Networks, Inc. | Detection and management of user interactions with foreground applications on a mobile device in distributed caching |
US8812695B2 (en) | 2012-04-09 | 2014-08-19 | Seven Networks, Inc. | Method and system for management of a virtual network connection without heartbeat messages |
US10263899B2 (en) | 2012-04-10 | 2019-04-16 | Seven Networks, Llc | Enhanced customer service for mobile carriers using real-time and historical mobile application and traffic or optimization data associated with mobile devices in a mobile network |
US8775631B2 (en) | 2012-07-13 | 2014-07-08 | Seven Networks, Inc. | Dynamic bandwidth adjustment for browsing or streaming activity in a wireless network based on prediction of user behavior when interacting with mobile applications |
US9161258B2 (en) | 2012-10-24 | 2015-10-13 | Seven Networks, Llc | Optimized and selective management of policy deployment to mobile clients in a congested network to prevent further aggravation of network congestion |
US9307493B2 (en) | 2012-12-20 | 2016-04-05 | Seven Networks, Llc | Systems and methods for application management of mobile device radio state promotion and demotion |
US9241314B2 (en) | 2013-01-23 | 2016-01-19 | Seven Networks, Llc | Mobile device with application or context aware fast dormancy |
US9271238B2 (en) | 2013-01-23 | 2016-02-23 | Seven Networks, Llc | Application or context aware fast dormancy |
US8874761B2 (en) | 2013-01-25 | 2014-10-28 | Seven Networks, Inc. | Signaling optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols |
US8750123B1 (en) | 2013-03-11 | 2014-06-10 | Seven Networks, Inc. | Mobile device equipped with mobile network congestion recognition to make intelligent decisions regarding connecting to an operator network |
US9065765B2 (en) | 2013-07-22 | 2015-06-23 | Seven Networks, Inc. | Proxy server associated with a mobile carrier for enhancing mobile traffic management in a mobile network |
KR20190027578A (en) * | 2017-09-07 | 2019-03-15 | 주식회사 케이티 | Apparatus for transforming MMS media using caching decision and method thereof |
KR102185124B1 (en) * | 2017-09-07 | 2020-12-01 | 주식회사 케이티 | Apparatus for transforming MMS media using caching decision and method thereof |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101227821B1 (en) | System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief | |
KR101227769B1 (en) | Mobile network background traffic data management with optimized polling intervals | |
EP2556441B1 (en) | System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief | |
EP2700019B1 (en) | Social caching for device resource sharing and management | |
US8621075B2 (en) | Detecting and preserving state for satisfying application requests in a distributed proxy and cache system | |
US9009250B2 (en) | Flexible and dynamic integration schemas of a traffic management system with various network operators for network traffic alleviation | |
EP2636268B1 (en) | Optimization of resource polling intervals to satisfy mobile device requests | |
WO2016061143A1 (en) | Wireless traffic management system for caching at a mobile device based on user characteristics | |
WO2015031356A1 (en) | Enhanced caching of domain name system (dns) and reverse dns queries for traffic management for signaling optimization in a mobile network | |
EP2767116A1 (en) | Wireless traffic management system cache optimization using http headers | |
GB2499306A (en) | Detection and management of user interaction with foreground applications on a mobile device in distributed caching | |
WO2012094675A2 (en) | System and method for reduction of mobile network traffic used for domain name system (dns) queries |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20160111 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20170116 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20180109 Year of fee payment: 6 |