BRPI0912888B1 - método para reduzir a utilização da largura de banda de uma rede - Google Patents
método para reduzir a utilização da largura de banda de uma rede Download PDFInfo
- Publication number
- BRPI0912888B1 BRPI0912888B1 BRPI0912888-3A BRPI0912888A BRPI0912888B1 BR PI0912888 B1 BRPI0912888 B1 BR PI0912888B1 BR PI0912888 A BRPI0912888 A BR PI0912888A BR PI0912888 B1 BRPI0912888 B1 BR PI0912888B1
- Authority
- BR
- Brazil
- Prior art keywords
- data
- client
- server
- hosted cache
- cache
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
- G06F16/183—Provision of network file services by network file servers, e.g. by using NFS, CIFS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- H04L29/06—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Multimedia (AREA)
- Computing Systems (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
- Communication Control (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
MÉTODO E SISTEMA PARA USAR CACHE HOSPEDADO LOCAL E FUNÇÕES DE HASH CRIPTOGRÁFICAS PARA REDUZIR TRÁFEGO EM REDE. O método e o sistema descritos permitem que um cliente em sucursal recupere dados de um cache hospedado local em vez de um servidor de aplicativos através de uma WAN de modo a se aperfeiçoar a latência e reduzir o tráfego total na WAN. Um servidor no centro de dados pode ser adaptado para prover ou uma lista de hashes ou os dados solicitados com base em ser um sistema de cache hospedado habilitado ou não. Um cache hospedado no lado do cliente pode fornecer os dados ao cliente com base nos hashes. Os hashes podem ser gerados de modo obter uma impressão digital dos dados que pode ser usada para indexar os dados de maneira eficaz.
Description
[0001]A presente invenção refere-se de maneira geral a sistemas de computador e, mais especificamente, a um sistema de computação que aperfeiçoa os tempos de resposta para prover dados para um cliente solicitante através de uma rede.
[0002]Uma configuração de rede de dados geralmente implementada em ambientes comerciais envolve a centralização do armazenamento de dados em um centro de dados e o provimento desses dados (por meio de um servidor no centro de dados, por exemplo) para uma série de dispositivos de computação de cliente através de uma rede de área estendida. A série de dispositivos de computação de cliente pode ser localizada em uma ou mais ramificações da WAN. As ramificações podem representar uma série de dispositivos de computação acoplados comunicativamente uns aos outros por meio de uma rede de área local (LAN) que tem pelo menos uma conexão com a WAN. A LAN pode ser acoplada à WAN por meio de um roteador ou outro dispositivo de ligação, conforme conhecido na técnica. Em ambientes corporativos de grande porte, o centro de dados pode ficar disposto remotamente com relação à(s) ramificação(ões). Aplicativos que rodam nos dispositivos de cliente podem exigir dados do centro de dados (servidos por meio de um centro de aplicativos no centro de dados) para funcionar. Tráfego de dados elevado em uma rede de área estendida (WAN) pode reduzir geralmente a largura de banda e aumentar a latência para solicitações de dados através da WAN. Isto pode retardar os tempos de resposta dos aplicativos nos dispositivos de computação na sucursal.
[0003]Para ajudar a reduzir o tráfego de dados em redes de área estendidas e aperfeiçoar a largura de banda e a latência, algumas firmas comerciais podem implementar um sistema otimizador de WAN. Geralmente, um sistema otimizador de rede de área estendida (WAN) é um hardware projetado para reduzir o consumo de largura de banda na WAN. Um objetivo dos sistemas otimizadores de WAN é o de reduzir a quantidade de largura de banda para portar tráfego de dados. Geralmente, os otimizadores de WAN podem funcionar para gerenciar de maneira inteligente (utilizando algoritmos específicos) a compactação e a transmissão de dados para a WAN e a recuperação dos dados da WAN. Pela compactação do tráfego de dados na WAN, o tráfego de dados pode ser reduzido, com uma diminuição correspondente na congestão. À medida que a congestão é reduzida na WAN, a latência, a flutuação de fase e a perda de pacotes do roteador podem também diminuir de maneira correspondente.
[0004]Embora os sistemas otimizadores de WAN existentes apresentem aperfeiçoamentos gerais na largura de banda da WAN, os sistemas otimizadores de WAN existentes podem não ser adequados para processar dados criptografados ou prover segurança de fim a fim. Além do mais, os sistemas otimizadores de WAN existentes podem exigir o acionamento de um hardware de interface tanto no centro de dados quanto em cada sucursal, incorrendo assim em maiores custos de manutenção.
[0005]O método e o sistema permitem que um cliente em uma sucursal recupere dados de um cache hospedado em vez de um servidor de aplicativo através de uma WAN, de modo a se aperfeiçoar a latência e se reduzir o tráfego total na WAN. Um servidor no centro de dados pode ser adaptado para prover ou uma lista de hashes ou os dados solicitados com base em ser um sistema de cache hospedado ser habilitado ou não. Um cache hospedado no lado do cliente pode fornecer os dados ao cliente com base nos hashes. Os hashes podem prover geralmente uma impressão digital dos dados que pode ser utilizada para indexar os dados.
[0006]A Figura 1 mostra diagramas de blocos de um sistema de computação que pode funcionar de acordo com as modalidades descritas; A Figura 2 mostra um sistema otimizador de WAN geral; A Figura 3 mostra uma modalidade de sistema de um processo de recuperação de dados que utiliza um cache hospedado; A Figura 4 mostra um formato de registro para uso com um cache hospedado; A Figura 5 mostra uma modalidade de sistema que implementa uma série de cachês hospedados; A Figura 6 mostra uma modalidade de rede não hierárquica que utiliza um cache distribuído; A Figura 7 mostra uma modalidade de processo não hierárquico que utiliza um par dedicado para um cache hospedado; A Figura 8 mostra uma modalidade de processo no lado do servidor que utiliza o sistema da Figura 3; A Figura 9 mostra uma modalidade de processo no lado do cliente que utiliza o sistema da Figura 3; e A Figura 10 mostra um formato de registro que utiliza um parâmetro de expiração.
[0007]Embora o texto seguinte apresente uma descrição detalhada de numerosas modalidades diferentes, deve ficar entendido que o alcance legal da descrição é definido pelas palavras das reivindicações apresentadas no final desta patente. A descrição detalhada deve ser interpretada apenas como exemplar e não descreve toda modalidade possível uma vez que a descrição de toda modalidade possível seria impraticável, senão impossível. Numerosas modalidades alternativas podem ser implementadas com a utilização ou da tecnologia atual ou da tecnologia desenvolvida após a data de depósito desta patente, o que ainda assim estaria dentro do alcance das reivindicações.
[0008]Deve ficar também entendido que, a menos que o termo seja expressamente definido nesta patente com a utilização da frase “Conforme aqui usado, o termo ‘’ é por este definido como significando...” ou de uma frase semelhante, não há intenção de limitar o significado desse termo, seja expressamente, seja por implicação, além do seu significado claro ou ordinário, e tal termo não deve ser interpretado como estando limitado em alcance com base em qualquer afirmação feita em qualquer seção desta patente (em outra que não a linguagem das reivindicações). Na medida em que qualquer termo mencionado nas reivindicações no final desta patente é referido nesta patente de maneira compatível com um significado único, isto é feito para bem da clareza apenas de modo a não confundir o leitor, e não se pretende que tal termo de reivindicação esteja limitado, por implicação ou de outra maneira, a esse significado único. Finalmente, a menos que um elemento de reivindicação seja definido pela menção da palavra “dispositivo(s)” e uma função sem a menção de qualquer estrutura, não se pretende que o alcance de qualquer elemento de reivindicação seja interpretado com base na aplicação do 35 U.S.C. § 112, parágrafo seis.
[0009]A Figura 1 mostra um exemplo de ambiente de sistema de computação adequado 100, que pode funcionar de modo a exibir e prover a interface com usuário descrita por este relatório. Deve-se observar que o ambiente de sistema de computação 100 é apenas um exemplo de ambiente de computação adequado e não pretende sugerir qualquer limitação quanto ao alcance de uso ou funcionalidade do método e do aparelho das reivindicações. Nem deve o ambiente de computação 100 ser interpretado como tendo qualquer dependência ou requisito referente a qualquer componente ou combinação de componentes mostrada no ambiente operacional exemplar 100.
[00010] Com referência à Figura 1, um sistema exemplar para implementar os blocos do método e do aparelho reivindicados inclui um dispositivo de computação de uso geral sob a forma de um computador 110. Os componentes do computador 110 podem incluir, mas não estão limitados a, uma unidade de processamento ou processador 120, uma memória de sistema 130 e um barramento de sistema 121, que acopla diversos componentes do sistema, inclusive a memória do sistema, à unidade de processamento 120.
[00011] O computador 110 pode funcionar em um ambiente de funcionamento em rede que utiliza conexões lógicas com um ou mais computadores remotos, tais como um computador remoto 180, por meio de uma rede de área local (LAN) 171 e/ou uma rede de área estendida (WAN) 173 por meio de um modem 172 ou outra interface com rede 170.
[00012] O computador 110 inclui tipicamente diversos meios passíveis de leitura por computador que podem ser quaisquer meios disponíveis que possam ser acessados pelo computador 110 e inclui meios tanto voláteis quanto não voláteis, meios removíveis e não removíveis. A memória de sistema 130 inclui meios de armazenamento em computador sob a forma de memória volátil e/ou não volátil, tal como uma memória de leitura exclusive (ROM) 131 e uma memória de acesso aleatório (RAM) 132. A ROM pode incluir um sistema de entrada/saída básico (BIOS) 133. A RAM 132 contém tipicamente dados e/ou módulos de programa que incluem o sistema operacional 134, programas de aplicativo 135, outros módulos de programa 136 e dados de programa 137. O computador 110 pode incluir também outros meios de armazenamento em computador removíveis/não removíveis, voláteis/não voláteis, tais como uma unidade de disco rígido 141, uma unidade de disco magnético 151, que lê de ou grava em um disco magnético 152, e uma unidade de disco óptico 155, que lê de ou grava em um disco óptico 156. A unidade de disco rígido 141, 151 e 155 podem formar interface com o barramento de sistema 121 por meio de interfaces 140, 150.
[00013] O usuário pode introduzir comandos e informações no computador 20 através de dispositivos de entrada, tais como um teclado 162 e um dispositivo de indicação 161, comumente referido como mouse, trackball ou mesa sensível ao toque. Outros dispositivos de entrada (não mostrados) podem incluir um microfone, joystick, mesa para jogos, prato de satélite, digitalizador ou semelhante. Estes e outros dispositivos de entrada são frequentemente conectados à unidade de processamento 120 através de uma interface de entrada de usuário 160, que é acoplada ao barramento de sistema, mas podem ser conectados por outras estruturas de interface e barramento, tais como uma porta paralela, uma porta para jogos ou um barramento serial universal (USB). Um monitor 191 ou outro tipo de dispositivo de exibição pode ser também conectado ao barramento de sistema 121 por meio de uma interface, tal como uma interface de vídeo 190. Além do monitor, os computadores podem incluir também outros dispositivos de saída periféricos, tais como alto-falantes 197 e uma impressora 196, que podem ser conectados através de uma interface periférica de saída 190.
[00014] A Figura 2 mostra uma rede de área estendida (WAN) que implementa um sistema otimizador de WAN 200, conforme geralmente conhecido na técnica. Um sistema otimizador de WAN pode ser geralmente utilizado em ambos os lados de uma conexão de rede de área estendida.
[00015] Os sistema otimizadores de WAN envolvem geralmente um par de dispositivos de hardware componentes: um componente no lado do servidor 201 geralmente implementado em um centro de dados 202 em um lado de uma WAN 203 e um componente no lado do cliente 204 em uma ramificação 206. Em muitos casos, um dispositivo componente de otimizador de WAN (servidor 201 ou componente de cliente 204) pode ser disposto atrás de um roteador de WAN 208 (acoplado ao roteador em uma porta oposta à conexão com a WAN, por exemplo). Estes dispositivos 201 e 204 podem funcionar para sintonizar o tráfego do aplicativo destinado à WAN 203 de modo que o desempenho do aplicativo por meio da WAN 203 seja aperfeiçoado. O resultado pode ser a aceleração da WAN e um tempo de resposta mais rápido do aplicativo. Isto pode proporcionar aos usuários finais em uma sucursal e também a funcionários móveis (que se conectam, por exemplo, por meio de um computador portátil ou outro dispositivo de computação móvel) velocidades de acesso mais elevadas para aplicativos essenciais.
[00016] Uma ramificação 206 pode incluir uma série de computadores de cliente 211, que geralmente solicitam dados do centro de dados 202. Em alguns ambientes corporativos, ramificações podem ser implementadas para dividir a funcionalidade (por exemplo, contabilidade, aquisição, serviço de atendimento a clientes, etc.). Em alguns ambientes corporativos, uma ramificação 206 pode prover locais de serviço geográficos específicos. Geralmente, os computadores de cliente 211 podem executar um ou mais aplicativos comerciais que acessam um ou mais servidores de aplicativos 215 no centro de dados 202.
[00017] O servidor de aplicativos 215 pode ser acoplado a um banco de dados 217 (localizado no centro de dados ou remotamente com relação ao centro de dados, por exemplo) para prover dados para os aplicativos executados pelo servidor de aplicativos 215 e providos para os clientes 211 na sucursal através da WAN 203. Evidentemente, em vez de uma configuração de ramificação que utiliza uma LAN 210, a Figura 2 é igualmente aplicável a qualquer dispositivo de cliente conectado à WAN para receber tráfego do servidor 215 por meio da WAN, como, por exemplos, computadores portáteis remotos que se conectam por meio da Internet.
[00018] Geralmente, o dispositivo otimizador de WAN 201 no lado do servidor pode funcionar de modo a inspecionar e indexar pacotes de dados originados por um servidor do centro de dados (o servidor 215, por exemplo), compactar os pacotes de dados com base na inspeção e transmitir os pacotes de dados através da WAN 203. O componente de otimizador de WAN 204 no lado do cliente pode funcionar de modo a receber os dados compactados do componente 201 no lado do servidor através da WAN 203, descompactar os pacotes de dados e fornecer os dados a um dispositivo de cliente solicitante 211 na ramificação 206.
[00019] Em alguns sistemas otimizadores de WAN, o dispositivo componente 201 no ladodo servidor podemindexar dadospara programar a transmissão (por prioridade, por exemplo) dos dados. O dispositivo componente deotimizadorde WANno cliente 204pode funcionar também para armazenar em cache os dados com base na indexação efetuada pelodispositivo servidor201. Quandouma segunda solicitação de umcliente 211na ramificação 206 é recebida para os mesmos dados no dispositivo otimizador no lado do cliente 204, o dispositivo otimizador de WAN no lado do cliente 204 pode simplesmente enviar de volta dados do seu cache em vez de ir através da WAN 203.
[00020] Conforme mostrado na Figura 2, os sistemas otimizadores de WAN 200 existentes geralmente exigem a instalação de um primeiro dispositivo componente 201 em uma extremidade de servidor, tal como o centro de dados 202, e um segundo dispositivo componente 204 em uma extremidade de cliente, tal como uma sucursal 206, onde o centro de dados 202 e a sucursal 206 se comunicam através de uma rede de área estendida (WAN) 203. Em ambientes que têm uma série de sucursais 206, pode ser necessário instalar vários dispositivos otimizadores 204 no lado do cliente.
[00021] O funcionamento de vários dispositivos componentes acrescenta custos de instalação e manutenção. Em particular, uma vez que os otimizadores de WAN exigem inspeção altamente detalhada (isto é, de alta granularidade) do tráfego de dados, pode-se incorrer em uma grande quantidade de overhead de processamento para funcionamento do sistema otimizador. Além do mais, uma vez que o processo de inspeção dos otimizadores de WAN existente exige um nível refinado de granularidade das partes de dados (isto é, o otimizador geralmente precisa entender o que são os dados de modo que possa classificar os dados ou então operar sobre os dados), os otimizadores de WAN geralmente não são capazes de operar sobre dados criptografados (por exemplo, quando os dados são enviados através de uma rede que usa um protocolo de criptografação de fim a fim, tal como o protocolo de Segurança IP, ou IPSec, ou o protocolo de Camada de Soquetes Seguros, ou SSL). Neste caso, os otimizadores de WAN podem não ter efeito sobre o tráfego da WAN uma vez que não podem operar sobre este fluxo de dados (o componente de otimizador de WAN no lado do servidor pode não entender os dados criptografados e, portanto, o sistema otimizador de WAN existente pode não ser capaz de compactar ou indexar os dados criptografados). Além disto, uma vez que os otimizadores de WAN precisam inspecionar e entender os dados, a segurança de fim a fim pode não ser facilmente obtida com a utilização dos otimizadores de WAN existentes. Além disto, uma vez que a segurança é geralmente uma preocupação principal na maioria dos ambientes corporativos nos quais uma WAN inclui tráfego público (uma conexão com a Internet, por exemplo), o otimizador de WAN pode não apresentar benefícios de compactação e latência úteis para tráfego seguro (criptografado, por exemplo).
[00022] A Figura 3 mostra uma modalidade de um sistema de computação 300, que provê segurança de fim a fim para otimizar a recuperação de dados por um dispositivo de cliente em uma ramificação. Evidentemente, em vez de uma configuração de ramificação que utiliza uma LAN, a Figura 3 é igualmente aplicável a qualquer dispositivo de cliente conectado à WAN para receber tráfego do servidor por meio de uma WAN (uma conexão com computador portátil, por exemplo). Deve-se observar que o termo cliente pode ser utilizado como significando um dispositivo de computação físico ou um aplicativo de cliente que roda em um dispositivo de computação que solicita dados de um servidor. Vários aplicativos podem ser executados pelo mesmo dispositivo de computação.
[00023] Será agora descrito o funcionamento geral do sistema da Figura 3. Um centro de dados 302 provê dados por meio de um servidor de aplicativos 315 para um cliente 311 em uma ramificação 306. A ramificação 306 pode representar um local geográfico no qual uma série de computadores de cliente 311 são conectados por meio de uma rede de área local ou LAN 310. Semelhante à Figura 2, os computadores de cliente 311 podem comunicar-se com o servidor 315 para solicitar e recuperar dados armazenados e gerenciados no centro de dados 302. Os computadores de cliente 311 podem recuperar dados por meio de uma conexão entre a LAN 310 e uma WAN 303. As conexões com a WAN podem ser por meio de roteadores 308. Nesta modalidade, um cache hospedado 320 é também acoplado à LAN 310 na ramificação 306. O cache hospedado 320 pode ser implementado em um dispositivo de computação específico ou pode representar um cache distribuído que é implementado em uma série de dispositivos de computação, como, por exemplo, quando os clientes são acionados de maneira não hierárquica (a ser discutida mais adiante). O cache hospedado 320 pode ser comunicativamente acoplado ao cliente por meio da rede de área local. Em algumas modalidades, o cache hospedado pode residir no mesmo dispositivo de um cliente que solicita dados, como, por exemplo, qualquer um dos clientes 311.
[00024] Os clientes 311 da Figura 3 podem ser programados para enviar solicitações de dados ao servidor 315. O servidor de aplicativos 315 pode ser programado para determinar se um cliente 311 que solicita dados está habilitado para usar um cache hospedado 320. O servidor de aplicativos 315 pode então prover ou os dados solicitados pelo cliente 311 ou uma lista de identificadores que identificam especificamente os dados solicitados pelo cliente 311. O servidor de aplicativos 315 pode gerar os identificadores (utilizando um algoritmo, por exemplo), ou outra entidade ou aplicativo de computação (um sistema de gerenciamento de bancos de dados, por exemplo) pode gerar os identificadores e armazená-los em um local (um banco de dados no centro de dados, por exemplo) para recuperação pelo servidor de aplicativos. Um exemplo de identificador é um hash que é produzido por uma função de hash, em que o hash pode atuar como uma impressão digital dos dados solicitados (a ser discutida mais adiante). No caso de o servidor ser conectado a um banco de dados 317, os hashes podem ser armazenados juntamente com os dados no banco de dados 317 ou submetidos a hash pelo servidor 315 à medida que os dados são recuperados para transmissão para um cliente.
[00025] Alguns clientes 311 podem ser habilitados para usar o cache hospedado 320, enquanto alguns clientes podem não ser habilitados (dispositivos e sistemas de computação legados, por exemplo). Quando o cliente 311 é habilitado para usar o cache hospedado 320, o cliente 311 pode ser programado para receber ou dados solicitados do servidor de aplicativos 315 ou um conjunto de hashes do servidor de aplicativos 315 que correspondem aos dados solicitados. O cliente 311 pode ser adaptado para usar os hashes de modo a recuperar dados armazenados em cache do cache hospedado 320 em vez do servidor de aplicativos 315. O cache hospedado 320 pode ser programado para armazenar dados recebidos 326 indexados por hashes correspondentes, que podem funcionar como chaves de registro 327. O cache hospedado 320 pode ser também programado para recuperar e enviar de volta dados 326 que correspondem a um valor ou chave de hash 327. O cache hospedado 320 pode armazenar os dados indexados utilizando qualquer método de enumeração conhecido, tal como uma tabela 325 ou outro objeto de programa.
[00026] Uma função de hash é geralmente um algoritmo ou procedimento bem definido para receber alguma espécie de dados e transmitir um valor relativamente pequeno (um número inteiro pequeno, por exemplo). Os valores enviados de volta por uma função de hash podem ser chamados valores de hash, códigos de hash, somas de hash ou simplesmente hashes. Além do mais, dependendo da função de hash específica, o hash pode prover uma impressão digital estatisticamente única de uma parte de dados (como, por exemplo, segmento, pacote, bloco, etc.). A impressão digital de hash pode ser usada para se efetuar uma análise de integridade de dados nos dados que correspondem ao hash. Por exemplo, quando os dados são enviados de volta com base em um hash, os dados podem ser introduzidos na mesma função de hash (se conhecida) para enviar de volta um hash. Se houver correspondência entre os hashes, então pode haver uma probabilidade estatisticamente elevada de que os dados recebidos sejam os mesmos dados usados para produzir o hash.
[00027] Funções de hash podem ser usadas para acelerar a busca na tabela ou tarefas de comparação, tais como a de encontrar itens em um banco de dados, detectar registros duplicados ou semelhantes em um arquivo grande, encontrar extensões semelhantes em sequências de dados e assim por diante. Em particular, uma vez que a função de hash provê um índice relativamente único (único para uma faixa de dados, por exemplo) em um formato de número pequeno, a leitura de valores de hash e a indexação baseada em valores de hash podem levar geralmente menos tempo de processamento.
[00028] Em uma modalidade do sistema, o cache hospedado 320 pode conter uma tabela de hashes 325, que é usada para indexar os dados recebidos 326 por valores de hash 327. O cache hospedado 320 pode ser mantido, por exemplo, como uma tabela de banco de dados ou outra função ou registro de enumeração no qual os dados podem ser recuperados por um valor de hash. Qualquer mecanismo de recuperação (uma chamada na linguagem de consulta, por exemplo) conhecido na técnica pode ser usado para consultar o cache hospedado em busca de dados com base em valores de hash (SQL, por exemplo).
[00029] Em uma modalidade, a função de hash pode ser um algoritmo de criptografação que é baseado em um par de chaves públicas e/ou privadas. Desta maneira, um hash pode representar um identificador criptograficamente único (CUI) de uma parte de dados que é ligado às chaves de criptografação. A implementação de criptografação com um par de chaves públicas-privadas é geralmente conhecida na técnica. Em uma modalidade que usa criptografação por meio de par de chaves públicas-privadas, o cliente pode não necessitar de uma chave de criptografação. Por exemplo, quando o cliente passa meramente valores de hash para o cache hospedado que o cliente recebe do servidor, pode não haver necessidade de o cliente portar uma chave de criptografação. Em outro exemplo, no caso de a integridade dos dados ser verificada, o cliente pode usar uma chave de criptografação com o algoritmo de criptografação para verificar que os dados enviados de volta do servidor correspondem a um hash. Evidentemente, uma função de hash que não envolva chaves de criptografação pode ser também usada para verificar funções de integridade de dados.
[00030] Uma modalidade do esquema de indexação de cache hospedado pode usar um formato de registro específico, conforme mostrado mais detalhadamente na Figura 4. Na modalidade de indexação da Figura 4, um armazenamento de dados indexados 400 pode conter um registro 401, que tem uma parte de dados 402 indexada por uma chave de registro 403. A chave de registro 403 pode ser um hash do registro (em que o hash corresponde a uma função de hash comum usada no sistema aqui descrito). A chave de registro ou hash 403 pode ser um identificador criptograficamente único (CUI). Um CUI pode ter duas propriedades primárias. Em primeiro lugar, o CUI pode ser estatisticamente único. Semelhante a esquemas de indexação de banco de dados comuns, pode ser necessário que uma chave de registro seja única para impedir entradas de entidade duplicadas em uma tabela. Por conseguinte, um CUI pode ser um identificador que é derivado de modo que haja uma alta probabilidade de que seja único para uma situação ou aplicação específica. Em um sistema de dados conforme descrito acima, por exemplo, o CUI pode ser estatisticamente único se a probabilidade de que um identificador criptograficamente único seja derivado da mesma parte de dados for baixa para uma faixa de valores de dados. Em segundo lugar, o CUI pode corresponder a uma função de hash específica, como, por exemplo, uma função de hash comum que é usada pelo servidor, cliente e cache hospedado. Em situações nas quais o hash é um sistema de criptografação com um par de chaves, o CUI pode corresponder a uma chave pública ou privada para o algoritmo de criptografação específico usado para gerar o hash. Por exemplo, o CUI pode ser derivado de uma chave pública que usa o algoritmo de criptografação. Em algumas modalidades, o CUI pode ser verificado de modo a corresponder à sua chave pública que usa o algoritmo.
[00031] Os registros 401 da Figura 4 podem ser usados para armazenar em cache dados indexados por valores de hash. A chave de hash de registro de CUI 403 pode ser usada para localizar cada registro 401 e recuperar a parte de dados 402 que corresponde à chave de hash 403. Em uma modalidade, os registros 401 podem ser públicos para uma rede local, isto é, as informações indexadas podem não ser criptografadas (com exceção talvez das chaves de hash). Entretanto, outras modalidades descritas a seguir podem criptografar a parte de dados 402 ou os registros 401.
[00032] A Figura 5 mostra uma modalidade de sistema que implementa uma série de caches hospedados 321-322. Nesta modalidade, um cliente 311 pode comunicar-se ou interagir com um cache específico dos caches hospedados 321-322 com base em vários parâmetros de otimização. Por exemplo, uma empresa comercial pode prover um cache hospedado para um cliente com base na proximidade geográfica ou na proximidade com relação à rede (o que são as conexões de roteamento com a rede mínimas necessárias à comunicação entre o cache e o cliente). Além do mais, um cache hospedado diferente pode ser provido com base em uma sub-rede ou outra divisão de rede. Ema uma modalidade, vários caches hospedados podem ser providos como uma medida de redundância. Por exemplo, apenas um subconjunto de caches hospedados (um cache hospedado, por exemplo) pode ser designado como ativo e disponível para conexão e interação com um cliente. Se uma falha ocorrer com o(s) cache(s) hospedado(s) designado(s), um cache hospedado redundante pode ser ativado. O(s) cache(s) hospedado(s) redundante(s), inativo(s) pode(m) ser preenchidos e atualizados com as mesmas informações do(s) cache(s) hospedado(s) ativo(s) designado(s). Por exemplo, os dados podem ser reproduzidos através da série de caches hospedados.
[00033] Em uma modalidade, os clientes podem ser parte de uma rede não hierárquica. A Figura 6 mostra uma modalidade que usa uma rede não hierárquica que implementa um cache hospedado distribuído 600. O cache hospedado distribuído pode representar um sistema de indexação persistente independente de servidor. O cache distribuído 600 pode ser mantido através de um grupo de entidades pares 601604 que formam uma rede não hierárquica 605. Os registros em um cache hospedado distribuído 600 podem ser logicamente divididos ou agrupados usando-se uma função de hash, por exemplo. A função de hash pode agrupar, ou enfeixar, entradas umas com as outras em alguma ordem lógica de modo que a recuperação possa ser tornada mais eficaz. A função de hash pode enfeixar registros uns com outros de maneira organizada, tornando assim a recuperação mais eficaz. Um cache hospedado distribuído pode ter duas propriedades primárias: 1) distribuição de conteúdos de registro através de uma série de nós/clientes/pares, tais como os nós 601-604; e 2) um mecanismo de roteamento (não mostrado) que provê um método para publicar e recuperar registros.
[00034] Na modalidade da Figura 6, o servidor pode ser configurado conforme descrito acima de modo a prover um hash dos dados para qualquer um dos clientes 601-604 que solicitam informações. O cliente pode enviar então uma mensagem de solicitação de difusão que inclui um hash à rede não hierárquica 605 para localizar um nó par na rede não hierárquica que contém os dados que correspondem ao hash. Se um par tiver solicitado e armazenado anteriormente os dados, então o par pode responder à solicitação e fornecer os dados ao par que enviou a mensagem de difusão. Desta maneira, o cache hospedado pode ser mantido através de uma série de pares diferentes (nós pares) da rede não hierárquica. Assim, um cliente na ramificação pode enviar de volta os dados solicitados com base nos hashes providos pelo servidor de aplicativos. Nesta modalidade, os pares na rede não hierárquica podem colaborar para armazenar os dados em cache. Embora uma modalidade não hierárquica seja descrita nesta seção, deve-se observar que o método e o sistema podem ser usados em qualquer protocolo de cliente-servidor que inclua protocolos que não envolvem redes não hierárquicas.
[00035] A Figura 7 mostra outra modalidade de rede não hierárquica que não usa um cache hospedado distribuído. Em vez de se implementar um cache hospedado através de vários pares, em que cada par armazena uma cópia dos dados ou uma parte dos dados, um único par 701 pode ser selecionado ou designado como o cache hospedado único (que pode ser referido como super-par). Os clientes/nós/pares 702-704 podem ser programados para buscar no par único 701 serviços e informações de cache hospedado. Entretanto, cada um dos clientes 702-704 é capaz de hospedar o cache e pode fazê-lo com fins de redundância ou prevenção contra falhas. Nesta modalidade, vários parâmetros podem ser considerados na designação ou seleção de um par único como o cache hospedado. Por exemplo, a designação pode ser baseada na carga operacional de um par, na capacidade de processamento do par e/ou na capacidade de armazenamento do par.
[00036] Embora apenas um único par da Figura 7 seja designado como um cache hospedado, cada par que atua como um cliente (702704) na rede não hierárquica 705 pode manter seu próprio cache hospedado. Nesta configuração, um par cliente (701-704, por exemplo) pode solicitar dados de um servidor, receber o conjunto de hashes do servidor e primeiro verificar se seu cache local inclui os dados. Se o cache local do par não contiver os dados, então o par pode buscar o par de cache hospedado designado. Em outra modalidade, no caso de uma falha do par 701, os outros pares na rede não hierárquica (702-704, por exemplo) podem comutar então para um modelo de cache hospedado distribuído no qual eles comecem a buscar nos caches locais da rede de pares os dados (isto é, um modelo de cache hospedado distribuído).
[00037]O cache hospedado pode ser implementado de várias maneiras com base em uma configuração de cliente específica. Conforme discutido acima, não é necessário implementar o cache hospedado em uma rede não hierárquica. O cache hospedado pode ser implementado com um componente de sistema operacional ou um processo que é executado geralmente em um dispositivo de computação. Por exemplo, o cache hospedado pode ser implementado como um componente de sistema operacional Microsoft Windows.
[00038] O serviço de cache hospedado provê uma função focalizada de enviar de volta dados com base na indexação de hashes. A criptografação dos dados pode não ter que ser implementada porque o cache hospedado é geralmente uma entidade acreditada na ramificação. Entretanto, em algumas modalidades a criptografação do cache pode ser implementada usando-se qualquer sistema de criptografação disponível quando apropriado para uma implementação específica. Por exemplo, um esquema de autenticação ou autorização pode ser implementado para o cache hospedado de modo que só a usuários autorizados possa ser concedido acesso ao cache hospedado (acesso concedido para ler do e gravar no cache hospedado, por exemplo). Deve-se observar que esta segurança pode ser inteiramente implementada na ramificação, por exemplo na LAN.
[00039] Processos diferentes podem ser implementados usando-se os sistemas descritos acima para prover segurança de fim a fim na transmissão de dados, o que aperfeiçoa a latência.
[00040] A Figura 8 mostra uma modalidade de processo que tal que pode ser implementada usando-se os sistemas descritos acima. Em particular, um servidor, tal como o servidor de aplicativos 315, pode receber uma mensagem de solicitação de um cliente através de uma rede 801. O servidor pode determinar se o cliente está habilitado para usar um cache hospedado 802. Em uma modalidade, a solicitação do cliente pode incluir um cabeçalho ou outra indicação de que o cliente está habilitado para usar um cache hospedado. Em outra modalidade, o servidor pode ser programado para saber se um cliente pode usar o cache hospedado procurando o cliente em um armazenamento (tal como um registro). Nesta modalidade, o cliente pode informar o servidor da identidade do cliente (por meio de um identificador em uma mensagem de solicitação do cliente, por exemplo). Se o servidor determinar que o cliente não está habilitado para usar um cache hospedado, o servidor pode processar a solicitação fornecendo os dados solicitados 803. Se o servidor determinar que o cliente está habilitado para usar um cache hospedado, o servidor pode prover os hashes dos dados 804 em vez dos dados propriamente ditos. Em outra modalidade, o servidor pode referir uma coleção de clientes que estão habilitados para usar um cache hospedado.
[00041] Em algumas modalidades, o servidor pode empregar técnicas de otimização adicionais antes ou à medida que o servidor transmite sua resposta à solicitação do cliente. Por exemplo, o servidor pode agregar uma série de respostas (hashes e/ou dados solicitados) e transmiti-las com base em um ou mais parâmetros (por exemplo, uma largura de banda de rede monitorada/medida, um programa, etc.). O servidor pode também ordenar o conjunto de hashes com base na função de hash, em que a função de hash provê uma organização (uma sequência ou ordem, por exemplo) para o conjunto de hashes. O servidor pode também priorizar a transmissão de dados com base no conjunto de hashes.
[00042] Em uma modalidade, o servidor pode ser adaptado para indexar seus dados usando um hash. Por exemplo, o servidor pode gerar hashes usando uma função de hash nos arquivos de dados aos quais o servidor tem acesso. Em outra modalidade, outro dispositivo ou programa pode submeter os dados a hash usando uma função de hash e tornar os hashes disponíveis para o servidor ou outro dispositivo solicitante (o cliente ou o cache hospedado, por exemplo). Os hashes podem atuar como um índice para os dados usados para gerar os hashes. Além do mais, os hashes propriamente ditos provêm um mecanismo para verificar a integridade dos dados (a ser discutido mais adiante). Em uma modalidade, o servidor pode executar a função de hashing nos dados solicitados somente quando eles forem solicitados. Em outras modalidades, o hashing pode ser executado independentemente da solicitação (os dados podem ser submetidos a hash antes que qualquer solicitação de dados seja recebida, por exemplo).
[00043] Na modalidade descrita acima, o servidor pode ser isento de afirmações com relação a transações anteriores com um cliente (respostas anteriores a solicitações de dados de clientes, por exemplo). Em outras palavras, o servidor pode não lembrar ou armazenar uma indicação de que forneceu qualquer dado específico a um cliente. Em uma modalidade na qual o servidor não mantém o estado, o servidor pode ser adaptado para determinar se um cache hospedado já pode armazenar os dados que estão sendo solicitados por um cliente. Por exemplo, o servidor pode ser programado para armazenar informações que indicam se dados específicos foram solicitados anteriormente e enviados a um cliente em uma ramificação, em que se sabe que o cliente está habilitado para usar um cache hospedado. Ao receber uma solicitação subsequente dos mesmos dados, o servidor pode ser programado para simplesmente prover um hash ou hashes dos dados para o cliente fazendo a solicitação subsequente. Esta operação pode ser programada com a suposição de que o cache hospedado armazenou em cache os dados solicitados anteriormente. Se o servidor não lembrar que enviou anteriormente um conjunto solicitado de dados (ou armazenar informações que indicam que os dados foram solicitados ou fornecidos anteriormente), então o servidor pode ser programado para fornecer os dados ao cliente solicitante. Desta maneira, podem ser obtidos outros aperfeiçoamentos de latência em que determinadas comunicações para trás e para frente entre qualquer um do servidor de aplicativos, cache hospedado ou cliente podem ser reduzidas ou prevenidas. Nesta modalidade, o servidor pode ser programado para funcionar sem determinar se o cliente está habilitado para cache hospedado. Em uma modalidade alternativa, o servidor pode ainda verificar se o cliente está habilitado para cache hospedado. Isto pode ser usado em redes híbridas que têm aplicativos e dispositivos legados que não podem ser habilitados para usar um cache hospedado e exige que o servidor envie apenas o cliente específico (isto é, nenhum hash). Neste caso, embora o servidor tenha enviado os dados solicitados a um cliente da ramificação e os dados solicitados possam ser armazenados em um cache local, o dispositivo legado ainda exige que dados reais sejam enviados para funcionar.
[00044] A Figura 9 mostra um processo para usar o sistema em uma ramificação. Um cliente que solicite dados pode receber uma mensagem ou mensagens de resposta do servidor 901. A resposta pode incluir dados solicitados pelo cliente ou um conjunto de hashes que corresponde aos dados solicitados sem o conjunto real de dados. No bloco 902, o cliente pode ser programado para determinar se a resposta inclui os dados ou um conjunto de hashes sem os dados. Quando o cliente determina que a resposta do servidor inclui os dados reais solicitados, o cliente pode então consumir os dados 903 e armazenar uma cópia dos dados no cache hospedado 904. O cache hospedado pode armazenar os dados indexados por valores de hash. Os valores de hash podem ser gerados pelo servidor e passados juntamente com os dados reais (no bloco 901, por exemplo). Alternativamente, o cliente pode submeter os dados a hash e prover os hashes para o cache hospedado com os dados reais. Em ainda outra modalidade, o cache hospedado pode submeter os dados a hash. Independentemente da entidade que executa a função de hashing, os hashes podem ser usados pelo cache hospedado para indexar os dados armazenados pelo cache hospedado. Além do mais, as funções de hash usadas por qualquer uma das entidades (quando mais de uma única entidade está executando uma função de hash) podem ser todas as mesmas.
[00045] Se o cliente receber o conjunto de hashes sem o conjunto real de dados, o cliente pode consultar um cache hospedado sobre os dados com base nos hashes 905. O cache hospedado pode determinar se tem os dados que correspondem ao conjunto de hashes 906. Se o cache hospedado contiver os dados, então o cliente pode recuperar os dados do cache hospedado com base nos hashes que recebeu do servidor de aplicativos 907. Opcionalmente, o cliente pode também efetuar uma verificação sobre a integridade dos dados nos dados recebidos pelo cache hospedado usando os hashes 908. Conforme conhecido pelos versados na técnica, os hashes podem prover uma impressão digital única dos dados que são usados para gerar o hash. Assim, um método para verificar a integridade e a identidade dos dados recebidos pelo cliente do cache hospedado é o de executar uma mesma função de hash (uma função de hash conhecida como sendo comum entre o servidor que forneceu o hash e o cache hospedado, por exemplo) nos dados do cache hospedado para verificar se os mesmos hashes resultam desses dados. Se este for o caso, a integridade e a identidade os dados podem ser verificadas. Se for determinado que os dados foram verificados e são válidos 909, o cliente pode consumir os dados recuperados no bloco 910. Se os dados não forem verificados e, portanto, não inválidos, o conjunto de dados pode ser recuperado do servidor e o cache hospedado pode ser atualizado com novos dados recuperados do servidor 911.
[00046] Se o cache hospedado não contiver os dados solicitados, vários métodos podem ser implementados para preencher o cache hospedado com o conjunto de dados 911 e fornecer o conjunto de dados ao cliente 912. Em uma modalidade, o cache hospedado pode implementar a funcionalidade de recuperar dados solicitados por um cliente que ele não armazena atualmente. Por exemplo, o cache hospedado pode ser programado para solicitar os dados do servidor de aplicativos. Neste caso, o servidor de aplicativos pode enviar de volta os dados ao cache hospedado com ou sem hashes, e o cache hospedado pode então fornecer os dados solicitados ao cliente solicitante. O cache hospedado pode armazenar então os novos dados juntamente com os hashes recebidos do servidor ou com base nos hashes que gera com base nos dados. Quando as funções de hash usadas pelo cache hospedado e pelo servidor são as mesmas, o método e o sistema desta modalidade podem funcionar para prover o mesmo índice de hash para o cliente para recuperação posterior.
[00047] Em outra modalidade, o cliente pode assumir a responsabilidade de recuperar dados do servidor de aplicativos que não estão armazenados no cache hospedado. Por exemplo, quando o cache hospedado envia de volta uma mensagem ao cliente que indica que não está armazenando atualmente os dados solicitados pelo cliente com base nos hashes que o cliente enviou, o cliente pode enviar então uma segunda solicitação dos dados ao servidor de aplicativos. Nesta situação, o cliente pode enviar com a segunda solicitação ao servidor de aplicativos uma indicação de que o cache hospedado não contém os dados solicitados. Em uma modalidade, isto pode ser feito indicando-se que o cliente não está habilitado para usar um cache hospedado. Nesta situação, o servidor de aplicativos pode simplesmente fornecer os dados solicitados ao cliente e o cliente pode então acrescentar os dados ao cache hospedado. Os dados podem ser submetidos a hash ou pelo servidor, pelo cliente ou pelo cache hospedado. Em outra modalidade, a indicação de que o cache hospedado pode não ter atualmente os dados solicitados pode ser enviada como uma indicação separada. Por exemplo, um cabeçalho na segunda solicitação do cliente para o servidor de aplicativos pode incluir uma indicação tanto de que o cliente está habilitado para usar um cache hospedado quanto de que o cache hospedado não inclui as informações solicitadas. Neste exemplo, o servidor pode enviar de volta os dados solicitados assim como um hash dos dados solicitados.
[00048] Em uma modalidade, em vez de se esperar que o cache hospedado seja preenchido a partir de dados transitórios baseados em solicitações iniciais de clientes, o cache hospedado pode ser pré- preenchido com um conjunto de dados conhecidos como tendo uma taxa de acesso elevada. Isto pode ser feito por meio de um carregamento programado durante uma paralisação do sistema.
[00049] O gerenciamento de dados do cache hospedado pode ser efetuado pela eliminação periódica de dados no cache hospedado por marcas de tempo. Por exemplo, cada segmento ou bloco de dados pode ser codificado no tempo por várias variáveis (data de criação, data de recebimento, etc.). Quando uma duração de tempo presente da marca de tempo decorre, o bloco de dados pode ser apagado. Isto proporciona um mecanismo para manter os dados relativamente recentes. Por exemplo, quando dados são apagados, esses dados (quando necessário) serão transferidos mais recentemente com uma nova versão do servidor de aplicativos. Uma coisa importante a ser observada sobre dados submetidos a hash é que um único arquivo pode ser indexado por uma série de hashes. Além do mais, dois ou mais arquivos podem ter um bloco de dados comum que contém o mesmo hash. Dados podem ser eliminados por blocos de dados e, portanto, um arquivo de dados pode conter algumas partes apagadas que pode ser necessário recuperar novamente do servidor de aplicativos.
[00050] Em uma modalidade mostrada na Figura 10, um parâmetro de expiração 1001 pode ser incluído com cada registro. Os registros podem persistir no cache hospedado até que eles sejam explicitamente apagados pelo editor ou até que eles expirem com base no parâmetro de expiração. Este parâmetro de expiração 1001 pode corresponder a uma duração na qual os dados são válidos. O parâmetro de expiração 1001 pode indicar a expiração da validade para o registro. Assim, o parâmetro de expiração 1001 pode ser usado no processo de recuperação, conforme mostrado na Figura 9. No bloco 909, por exemplo, a expiração indicada pelo parâmetro de expiração 1001 pode ser verificada de modo a se determinar se a expiração ocorreu. Se o parâmetro de expiração 1001 tiver expirado, então o registro pode ser inválido e o bloco 911 pode ser usado para recuperar novos dados do servidor. Caso contrário, o registro pode ser válido e consumido pelo cliente 910.
[00051] O cache hospedado pode ser implementado com um protocolo de descoberta. O protocolo de descoberta pode ser qualquer protocolo adequado que proporcione aos clientes a capacidade de detectar a existência de um cache hospedado em uma rede. O mecanismo de descoberta pode ser explícito ou automático. Em um protocolo de descoberta explícito, por exemplo, um cliente pode ser direcionado para um registrador que fornece informações referentes a qualquer(quaisquer) cache(s) hospedado(s). Alternativamente, a descoberta explícita pode ser implementada usando-se uma política ou script de computação em grupo que direciona cada dispositivo de computação para um cache hospedado específico. Em uma modalidade de descoberta automática, a um cliente que se conecta podem ser acrescentadas as informações referentes à existência de um cache hospedado em um segmento de rede que é acessível ao cliente. Deve-se observar que, embora um cliente possa ser conectado a uma ramificação que inclui uma série de máquinas de cliente em locais geográficos próximos uns dos outros, as máquinas de cliente podem ser segmentadas em domínios ou sub-redes onde o acesso é restringido dentro ou entre os domínios ou sub-redes.
[00052] Em uma modalidade, um cliente habilitado para usar um cache hospedado pode usar um protocolo de descoberta predeterminado de modo a determinar se um cache hospedado está disponível em uma rede do cliente. Em outras palavras, o cliente pode ser programado para comunicar-se usando um protocolo de descoberta específico quando conectado a uma rede. Como observação, um cliente pode representar um aplicativo de cliente ou um dispositivo de cliente. Em uma modalidade alternativa, o cliente pode ser responsável por divulgar sua própria disponibilidade ou existência quando conectado a uma rede. O protocolo de descoberta pode também prover um mecanismo para publicar a existência de um cliente, em que o cliente o cache hospedado são tornados cientes um do outro com base em um domínio de comunicação. Por exemplo, o cliente pode ser configurado para ser móvel (um computador portátil, por exemplo), em que o cliente pode conectar-se a uma primeira rede ou uma segunda rede (com base em domínios ou sub-redes, por exemplo), em que cada rede pode ter um cache hospedado separado. Em ambos os casos, o protocolo de descoberta pode ser adaptado para funcionar com o cliente de modo a prover um cache hospedado na rede ao qual o cliente esteja diretamente conectado.
[00053] O monitoramento do tráfego de dados através do sistema do cache hospedado e do servidor correspondente pode ser efetuado de modo a se obterem outras otimizações para o sistema descrito. Por exemplo, alguns parâmetros de transmissão de dados que podem ser monitorados incluem a latência das solicitações de dados do cliente. Outra variável pode ser a frequência de acesso por clientes ao cache hospedado versus a frequência de acesso através de uma conexão com a WAN. O monitoramento e o registro do tráfego de dados e análise podem permitir que os administradores da rede ajustem os parâmetros operacionais do método e do sistema descritos. Com base nos dados de monitoramento, os administradores podem descobrir quais dados podem ser pré-preenchidos durante os tempos fora de pico.
[00054] Em uma modalidade, o dispositivo otimizador de WAN no do cliente pode ser adaptado para funcionar como um cache hospedado. Nesta modalidade, não é necessário nenhum dispositivo de WAN no lado do servidor.
[00055] Em uma modalidade, um dispositivo otimizador de WAN pode ser usado além do cache hospedado. Uma vez que os otimizadores de WAN não são geralmente capazes de processar arquivos criptografados, os otimizadores de WAN podem ser usados para a acesso a dados ou arquivos gerais entre um cliente e um servidor sempre que dados não estiverem sendo criptografados para transmissão. Para dados criptografados, pode ser usada a implementação do cache hospedado. Esta configuração pode ser feita em redes que têm sistemas ou dispositivos legados, como, por exemplo, dispositivos que não sejam configurados para reconhecer ou comunicar-se com um cache hospedado. Em outra modalidade, quando um cliente não é capaz de usar o cache hospedado, ele pode usar um sistema otimizador de WAN existente (que inclui dispositivos componentes de otimizador de WAN tanto no lado do servidor quanto no lado do cliente, por exemplo), enquanto os clientes que são capazes de usar o cache hospedado podem fazê-lo. O servidor pode determinar como responder a solicitações de dados de clientes por meio de informações embutidas na mensagem de solicitação de dados (por meio de um cabeçote, conforme descrito).
[00056] Um benefício da utilização do método e do sistema reivindicados é que pode haver necessidade reduzida de incluir e manter duas caixas de componentes tanto no lado do servidor quanto no lado do cliente da WAN. Isto reduz os custos de manutenção. Além do mais, dados criptografados podem ser agora enviados através da WAN enquanto ainda se obtêm e/ou ultrapassam os aperfeiçoamentos de latência providos pelos sistemas otimizadores de WAN existentes. Outro benefício do método e do sistema descritos é a redução na capacidade de processamento necessária para efetuar uma inspeção detalhada de dados de modo a se obterem a indexação e a compactação. Em outras palavras, os otimizadores de WAN indexam os dados até uma granularidade mais refinada que exige maior capacidade de processamento. Em vez disso, o método e o sistema reivindicados geram hashes com base nos dados, em que as funções de hashing são geralmente eficazes e rápidas não exigem muito overhead de processamento.
[00057] Outro benefício do método e do sistema descritos é que eles geralmente eliminam o requisito de um dispositivo intermediário entre cliente e servidor através da WAN. Em vez disso, o método e o sistema descritos utilizam um cache hospedado contido dentro dos limites de um ambiente de ramificação seguro. Surge a questão sobre a situação em que o cache não está preenchido com os dados solicitados. Em seguida, os dados podem ser enviados de qualquer maneira negociada entre o cliente e o servidor de aplicativos. Em outras palavras, os dados podem ser criptografados ou não criptografados. A eliminação do homem no meio refere-se à remoção de quaisquer peças operacionais entre o cliente e o servidor atravésda WAN.
[00058] Outro benefício é a independência dos protocolos. Pode ser necessário programar os otimizadores de WAN existentes para que usem vários protocolos diferentes para funcionar. O método e o sistema deste pedido simplesmente enviam hashes através dos protocolos existentes usados entre o servidor e o cliente.
Claims (7)
1.Método para reduzir a utilização da largura de banda de uma rede que compreende as etapas de: receber, em um servidor (315), uma primeira mensagem de solicitação de um cliente (311) pela rede, em que a primeira mensagem de solicitação contém uma indicação de um primeiro conjunto de dados armazenados no servidor (801); gerar um conjunto de hashes usando a primeira função de hash para o primeiro conjunto de dados armazenados no servidor (315) , em que o conjunto de hashes inclui uma primeira pluralidade de hashes correspondentes a um primeiro arquivo, em que o primeiro arquivo inclui uma primeira pluralidade de partes de dados, em que cada um da primeira pluralidade de hashes tem uma porção de dados correspondente da primeira pluralidade de partes de dados, e em que cada hash do conjunto de hashes representa uma impressão digital estatisticamente única de cada porção de dados do conjunto de dados; determinar, no servidor, se o cliente (311) está habilitado para usar um cache hospedado, em que o cache hospedado indexa dados com base em hashes que são produzidos usando a primeira função hash (802); transmitir, pelo servidor, para o cliente através da rede o conjunto de dados e o conjunto de hashes gerado correspondente quando o cliente (311) não está habilitado para usar um cache hospedado (803); transmitir, pelo servidor, para o cliente através da rede o conjunto de hashes sem o conjunto de dados quando o cliente está habilitado para usar um cache hospedado (804); caracterizado pelo fato de que ainda compreende: receber, pelo servidor, uma segunda mensagem de solicitação do cliente (311) pela rede, em que a segunda mensagem de solicitação contém uma indicação de um segundo conjunto de dados armazenados no servidor (315); determinar, no servidor, que a segunda mensagem de solicitação é uma solicitação de dados não criptografados; e fornecer ao cliente o segundo conjunto de dados.
2.Método, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende a etapa de fornecer ao cliente (311) uma segunda função de hash que corresponde à primeira função de hash usada para produzir o conjunto de hashes para o primeiro conjunto de dados.
3.Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a etapa de determinar (802) que o cliente (311) está habilitado para usar o cache hospedado (302) inclui determinar que o cliente (311) está habilitado para usar o cache hospedado (302) com base na indicação na primeira mensagem de solicitação de que o cliente (311) está habilitado para usar o cache hospedado (320).
4.Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a etapa de determinar (802) que o cliente (311) está habilitado para usar o cache hospedado (302) inclui determinar que o cliente (311) está habilitado para usar o cache hospedado (320) com base na indicação na primeira mensagem de solicitação de que o cliente (311) está habilitado para usar o cache hospedado (320).
5.Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o cache hospedado (320) está configurado para enviar uma solicitação ao servidor (315) para o primeiro conjunto de dados quando o cache hospedado (320) não contém o primeiro conjunto de dados solicitado.
6.Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o cache hospedado (320) é pré-preenchido com um conjunto de dados conhecidos por ter uma alta taxa de acesso.
7.Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o servidor (315) mantém o estado e armazena informações indicando se o primeiro conjunto de dados foi solicitado anteriormente e enviado para um nó de par acessível pelo cliente (311).
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/141,950 US9747340B2 (en) | 2008-06-19 | 2008-06-19 | Method and system of using a local hosted cache and cryptographic hash functions to reduce network traffic |
US12/141,950 | 2008-06-19 | ||
PCT/US2009/041267 WO2009154869A2 (en) | 2008-06-19 | 2009-04-21 | Method and system of using a local hosted cache and cryptographic hash functions to reduce network traffic |
Publications (2)
Publication Number | Publication Date |
---|---|
BRPI0912888A2 BRPI0912888A2 (pt) | 2015-10-20 |
BRPI0912888B1 true BRPI0912888B1 (pt) | 2021-03-09 |
Family
ID=41432266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BRPI0912888-3A BRPI0912888B1 (pt) | 2008-06-19 | 2009-04-21 | método para reduzir a utilização da largura de banda de uma rede |
Country Status (8)
Country | Link |
---|---|
US (2) | US9747340B2 (pt) |
EP (1) | EP2308216A4 (pt) |
JP (1) | JP5480893B2 (pt) |
KR (1) | KR101570892B1 (pt) |
CN (2) | CN104615666B (pt) |
BR (1) | BRPI0912888B1 (pt) |
RU (1) | RU2475988C2 (pt) |
WO (1) | WO2009154869A2 (pt) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100036804A1 (en) * | 2008-08-05 | 2010-02-11 | International Business Machines Corporation | Maintained and Reusable I/O Value Caches |
US20100036805A1 (en) * | 2008-08-05 | 2010-02-11 | International Business Machines Corporation | System Maintainable and Reusable I/O Value Caches |
US20120102134A1 (en) | 2010-10-21 | 2012-04-26 | International Business Machines Corporation | Cache sharing among branch proxy servers via a master proxy server at a data center |
US9078128B2 (en) * | 2011-06-03 | 2015-07-07 | Apple Inc. | System and method for secure identity service |
US9098378B2 (en) | 2012-01-31 | 2015-08-04 | International Business Machines Corporation | Computing reusable image components to minimize network bandwidth usage |
US20130201519A1 (en) * | 2012-02-03 | 2013-08-08 | Apple Inc. | Bridging Non-Network Interfaces and Network Interfaces |
US8805797B2 (en) * | 2012-02-22 | 2014-08-12 | International Business Machines Corporation | Optimizing wide area network (WAN) traffic by providing home site deduplication information to a cache site |
US10198462B2 (en) * | 2012-04-05 | 2019-02-05 | Microsoft Technology Licensing, Llc | Cache management |
US8880638B2 (en) * | 2012-06-18 | 2014-11-04 | International Business Machines Corporation | Distributed image cache for servicing virtual resource requests in the cloud |
US9306997B2 (en) * | 2013-01-16 | 2016-04-05 | Cisco Technology, Inc. | Method for optimizing WAN traffic with deduplicated storage |
US9300748B2 (en) | 2013-01-16 | 2016-03-29 | Cisco Technology, Inc. | Method for optimizing WAN traffic with efficient indexing scheme |
US9509736B2 (en) | 2013-01-16 | 2016-11-29 | Cisco Technology, Inc. | Method for optimizing WAN traffic |
WO2014111587A2 (en) * | 2013-01-19 | 2014-07-24 | Fabulonia Oü | Secure streaming method in a numerically controlled manufacturing system, and a secure numerically controlled manufacturing system |
CN103116627B (zh) * | 2013-01-31 | 2016-05-18 | 汉柏科技有限公司 | 一种高并发soa技术访问数据库的方法和系统 |
US10474652B2 (en) * | 2013-03-14 | 2019-11-12 | Inpixon | Optimizing wide data-type storage and analysis of data in a column store database |
US9497132B2 (en) | 2013-04-23 | 2016-11-15 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and system of implementing conversation-sensitive collection for a link aggregation group |
US9660861B2 (en) | 2013-04-23 | 2017-05-23 | Telefonaktiebolaget L M Ericsson (Publ) | Method and system for synchronizing with neighbor in a distributed resilient network interconnect (DRNI) link aggregation group |
US9553798B2 (en) | 2013-04-23 | 2017-01-24 | Telefonaktiebolaget L M Ericsson (Publ) | Method and system of updating conversation allocation in link aggregation |
CN103281398B (zh) * | 2013-06-14 | 2017-04-12 | 清华大学 | 数据中心网络泛在缓存方法 |
CN106462707B (zh) * | 2014-04-28 | 2019-06-14 | 英特尔公司 | 安全引导计算设备 |
US9813290B2 (en) | 2014-08-29 | 2017-11-07 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and system for supporting distributed relay control protocol (DRCP) operations upon misconfiguration |
US10277616B2 (en) | 2014-09-25 | 2019-04-30 | Vigilant Ip Holdings Llc | Secure digital traffic analysis |
US10021181B2 (en) * | 2014-12-22 | 2018-07-10 | Dropbox, Inc. | System and method for discovering a LAN synchronization candidate for a synchronized content management system |
US10891264B2 (en) * | 2015-04-30 | 2021-01-12 | Vmware, Inc. | Distributed, scalable key-value store |
CN105068762B (zh) * | 2015-08-06 | 2018-05-18 | 北京奇艺世纪科技有限公司 | 一种数据读取方法及装置 |
US10382552B2 (en) * | 2016-12-12 | 2019-08-13 | Verizon Patent And Licensing Inc. | User device ad-hoc distributed caching of content |
US12118519B2 (en) | 2017-11-06 | 2024-10-15 | Connexpay Llc | Intelligent payment routing and payment generation |
US10708382B2 (en) * | 2018-11-08 | 2020-07-07 | Citrix Systems, Inc. | Systems and methods for latency masking via prefix caching |
FR3092923B1 (fr) * | 2019-02-19 | 2021-05-21 | Sangle Ferriere Bruno | Méthode cryptographique de vérification des données |
FR3093574B1 (fr) * | 2019-03-04 | 2021-10-01 | Amadeus | Traitement de données distribuées |
US20230179401A1 (en) * | 2021-12-08 | 2023-06-08 | Equifax Inc. | Data validation techniques for sensitive data migration across multiple platforms |
CN116719582B (zh) * | 2023-08-07 | 2023-11-03 | 北京市大数据中心 | 一种高并发系统的前端限流方法 |
Family Cites Families (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5452447A (en) * | 1992-12-21 | 1995-09-19 | Sun Microsystems, Inc. | Method and apparatus for a caching file server |
US5572221A (en) | 1994-10-26 | 1996-11-05 | Telefonaktiebolaget Lm Ericsson | Method and apparatus for detecting and predicting motion of mobile terminals |
WO1996032685A1 (en) * | 1995-04-11 | 1996-10-17 | Kinetech, Inc. | Identifying data in a data processing system |
US5860153A (en) * | 1995-11-22 | 1999-01-12 | Sun Microsystems, Inc. | Memory efficient directory coherency maintenance |
WO1999003047A1 (en) | 1997-07-11 | 1999-01-21 | Earle Machardy | Content hosting environment system and cache mechanism |
US6014667A (en) * | 1997-10-01 | 2000-01-11 | Novell, Inc. | System and method for caching identification and location information in a computer network |
US6185598B1 (en) * | 1998-02-10 | 2001-02-06 | Digital Island, Inc. | Optimized network resource location |
US6311216B1 (en) * | 1998-05-29 | 2001-10-30 | Microsoft Corporation | Method, computer program product, and system for client-side deterministic routing and URL lookup into a distributed cache of URLS |
US6377991B1 (en) * | 1998-05-29 | 2002-04-23 | Microsoft Corporation | Method, computer program product, and system for migrating URLs within a dynamically changing distributed cache of URLs |
US6661904B1 (en) * | 1998-07-15 | 2003-12-09 | Personalogo | Method and system for automated electronic conveyance of hidden data |
US6757705B1 (en) * | 1998-08-14 | 2004-06-29 | Microsoft Corporation | Method and system for client-side caching |
GB2342195A (en) * | 1998-09-30 | 2000-04-05 | Xerox Corp | Secure token-based document server |
EP0993163A1 (en) * | 1998-10-05 | 2000-04-12 | Backweb Technologies Ltd. | Distributed client-based data caching system and method |
US6405219B2 (en) * | 1999-06-22 | 2002-06-11 | F5 Networks, Inc. | Method and system for automatically updating the version of a set of files stored on content servers |
EP1154356A1 (en) * | 2000-05-09 | 2001-11-14 | Alcatel | Caching of files during loading from a distributed file system |
US6766313B1 (en) * | 2000-07-12 | 2004-07-20 | Microsoft Corporation | System and method for caching and retrieving information |
US7484002B2 (en) * | 2000-08-18 | 2009-01-27 | Akamai Technologies, Inc. | Content delivery and global traffic management network system |
US7062567B2 (en) | 2000-11-06 | 2006-06-13 | Endeavors Technology, Inc. | Intelligent network streaming and execution system for conventionally coded applications |
US6959320B2 (en) * | 2000-11-06 | 2005-10-25 | Endeavors Technology, Inc. | Client-side performance optimization system for streamed applications |
US7188145B2 (en) * | 2001-01-12 | 2007-03-06 | Epicrealm Licensing Llc | Method and system for dynamic distributed data caching |
WO2002065282A2 (en) * | 2001-02-09 | 2002-08-22 | Microsoft Corporation | Distribution of binary executables and content from peer locations/machines |
US8156223B2 (en) * | 2001-03-20 | 2012-04-10 | Microsoft Corporation | Distribution of binary executables and content from peer locations/machines |
US6912591B2 (en) * | 2001-05-02 | 2005-06-28 | Science Application International Corporation | System and method for patch enabled data transmissions |
TW579463B (en) * | 2001-06-30 | 2004-03-11 | Ibm | System and method for a caching mechanism for a central synchronization server |
US7092997B1 (en) * | 2001-08-06 | 2006-08-15 | Digital River, Inc. | Template identification with differential caching |
JP2003153229A (ja) * | 2001-11-15 | 2003-05-23 | Mitsubishi Electric Corp | データ通信装置及びデータ通信方法 |
US7392348B2 (en) * | 2003-08-06 | 2008-06-24 | International Business Machines Corporation | Method for validating remotely cached dynamic content web pages |
US6781963B2 (en) | 2002-02-14 | 2004-08-24 | Qualcomm Inc | Method and an apparatus for terminating a user from a group call in a group communication network |
JP4366040B2 (ja) | 2002-03-07 | 2009-11-18 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ネットワークサービスシステム、サーバ及びプログラム |
JP2003271442A (ja) | 2002-03-14 | 2003-09-26 | Ntt Comware Corp | キャッシュサーバおよびそのキャッシュアウト方法並びにプログラム |
US7461262B1 (en) * | 2002-03-19 | 2008-12-02 | Cisco Technology, Inc. | Methods and apparatus for providing security in a caching device |
CA2379082A1 (en) * | 2002-03-27 | 2003-09-27 | Ibm Canada Limited-Ibm Canada Limitee | Secure cache of web session information using web browser cookies |
US6996584B2 (en) * | 2002-05-14 | 2006-02-07 | Pervasive Software, Inc. | System and method of maintaining functional client side data cache coherence |
US7171439B2 (en) | 2002-06-14 | 2007-01-30 | Integrated Device Technology, Inc. | Use of hashed content addressable memory (CAM) to accelerate content-aware searches |
US7836295B2 (en) | 2002-07-29 | 2010-11-16 | International Business Machines Corporation | Method and apparatus for improving the resilience of content distribution networks to distributed denial of service attacks |
JP2004126639A (ja) * | 2002-09-30 | 2004-04-22 | Toshiba Corp | データ管理システム、データ管理方法及びプログラム |
JP2004185263A (ja) | 2002-12-03 | 2004-07-02 | Oki Electric Ind Co Ltd | 分散協調型コンテンツ配信システム |
GB0303192D0 (en) * | 2003-02-12 | 2003-03-19 | Saviso Group Ltd | Methods and apparatus for traffic management in peer-to-peer networks |
US7441011B2 (en) * | 2003-10-23 | 2008-10-21 | Microsoft Corporation | Truth on client persistent caching |
US20080281950A1 (en) | 2004-03-08 | 2008-11-13 | First Oversi Ltd | Method and Device for Peer to Peer File Sharing |
US7788713B2 (en) * | 2004-06-23 | 2010-08-31 | Intel Corporation | Method, apparatus and system for virtualized peer-to-peer proxy services |
US7437364B1 (en) * | 2004-06-30 | 2008-10-14 | Google Inc. | System and method of accessing a document efficiently through multi-tier web caching |
EP1842354B1 (en) * | 2005-01-24 | 2014-11-05 | Citrix Systems, Inc. | Systems and methods for performing caching of dynamically generated objects in a network |
US7640363B2 (en) * | 2005-02-16 | 2009-12-29 | Microsoft Corporation | Applications for remote differential compression |
JP4515319B2 (ja) | 2005-04-27 | 2010-07-28 | 株式会社日立製作所 | コンピュータシステム |
JP2007066161A (ja) | 2005-09-01 | 2007-03-15 | Hitachi Ltd | キャッシュシステム |
CN101009516B (zh) * | 2006-01-26 | 2011-05-04 | 华为技术有限公司 | 一种进行数据同步的方法、系统及装置 |
US7617322B2 (en) * | 2006-09-29 | 2009-11-10 | Microsoft Corporation | Secure peer-to-peer cache sharing |
US7634479B2 (en) * | 2006-12-29 | 2009-12-15 | Trend Micro Incorporated | Pre-populating local URL rating cache |
US7757002B2 (en) * | 2007-03-23 | 2010-07-13 | Sophos Plc | Method and systems for analyzing network content in a pre-fetching web proxy |
US8234327B2 (en) * | 2007-03-30 | 2012-07-31 | Netapp, Inc. | System and method for bandwidth optimization in a network storage environment |
US20090307302A1 (en) * | 2008-06-06 | 2009-12-10 | Snap-On Incorporated | System and Method for Providing Data from a Server to a Client |
-
2008
- 2008-06-19 US US12/141,950 patent/US9747340B2/en active Active
-
2009
- 2009-04-21 RU RU2010151959/08A patent/RU2475988C2/ru active
- 2009-04-21 EP EP09767181.2A patent/EP2308216A4/en not_active Ceased
- 2009-04-21 JP JP2011514644A patent/JP5480893B2/ja active Active
- 2009-04-21 BR BRPI0912888-3A patent/BRPI0912888B1/pt active IP Right Grant
- 2009-04-21 WO PCT/US2009/041267 patent/WO2009154869A2/en active Application Filing
- 2009-04-21 CN CN201510014317.5A patent/CN104615666B/zh active Active
- 2009-04-21 CN CN200980123432.9A patent/CN102067557B/zh active Active
- 2009-04-21 KR KR1020107027968A patent/KR101570892B1/ko active IP Right Grant
-
2017
- 2017-08-11 US US15/674,944 patent/US20180004748A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20090319473A1 (en) | 2009-12-24 |
CN102067557B (zh) | 2015-02-11 |
CN104615666A (zh) | 2015-05-13 |
BRPI0912888A2 (pt) | 2015-10-20 |
RU2475988C2 (ru) | 2013-02-20 |
EP2308216A4 (en) | 2016-03-30 |
WO2009154869A3 (en) | 2010-03-18 |
JP2011525278A (ja) | 2011-09-15 |
JP5480893B2 (ja) | 2014-04-23 |
US20180004748A1 (en) | 2018-01-04 |
CN102067557A (zh) | 2011-05-18 |
RU2010151959A (ru) | 2012-06-27 |
KR101570892B1 (ko) | 2015-11-20 |
CN104615666B (zh) | 2018-06-05 |
KR20110027688A (ko) | 2011-03-16 |
EP2308216A2 (en) | 2011-04-13 |
WO2009154869A2 (en) | 2009-12-23 |
US9747340B2 (en) | 2017-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BRPI0912888B1 (pt) | método para reduzir a utilização da largura de banda de uma rede | |
US11895188B2 (en) | Distributed storage system with web services client interface | |
US10652076B2 (en) | Dynamic application instance discovery and state management within a distributed system | |
US8019882B2 (en) | Content identification for peer-to-peer content retrieval | |
US20180234234A1 (en) | System for describing and tracking the creation and evolution of digital files | |
Tang et al. | Lightweight authentication of freshness in outsourced key-value stores | |
Dhaya et al. | Cloud computing security protocol analysis with parity-based distributed file system | |
Raja et al. | A comprehensive study on big data security and integrity over cloud storage | |
Chondros et al. | Developing IntegrityCatalog, a software system for managing integrity‐related metadata in digital repositories | |
Rodrigues et al. | TMS: a trusted mail repository service using public storage clouds | |
Abukari et al. | Implementation of a Secured Scalable File Server System | |
Akintoye et al. | A Survey on Storage Techniques in Cloud Computing | |
Hui et al. | A Mobile Terminal Security Strategy Based On the Cloud Storage | |
Vasudevan | Finding the Right Balance: Security vs. Performance with Network Storage Systems | |
Yumerefendi et al. | CATS: Certified Authenticated Tamper-evident State Store for Network Services | |
Xie | An Investigation of Distributed Information Search |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B25A | Requested transfer of rights approved |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC (US) |
|
B06F | Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette] | ||
B06U | Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette] | ||
B15K | Others concerning applications: alteration of classification |
Free format text: AS CLASSIFICACOES ANTERIORES ERAM: H04L 29/06 , H04L 9/32 Ipc: H04L 29/06 (1990.01), H04L 9/32 (1990.01), G06F 16 |
|
B07A | Application suspended after technical examination (opinion) [chapter 7.1 patent gazette] | ||
B09A | Decision: intention to grant [chapter 9.1 patent gazette] | ||
B16A | Patent or certificate of addition of invention granted [chapter 16.1 patent gazette] |
Free format text: PRAZO DE VALIDADE: 10 (DEZ) ANOS CONTADOS A PARTIR DE 09/03/2021, OBSERVADAS AS CONDICOES LEGAIS. |