PT1721438E - Servidor, método e sistema para armazenamento temporário (caching) de correntes de dados - Google Patents

Servidor, método e sistema para armazenamento temporário (caching) de correntes de dados Download PDF

Info

Publication number
PT1721438E
PT1721438E PT05709141T PT05709141T PT1721438E PT 1721438 E PT1721438 E PT 1721438E PT 05709141 T PT05709141 T PT 05709141T PT 05709141 T PT05709141 T PT 05709141T PT 1721438 E PT1721438 E PT 1721438E
Authority
PT
Portugal
Prior art keywords
data
block
communication server
server
anchor
Prior art date
Application number
PT05709141T
Other languages
English (en)
Inventor
Shaul Hayim
Original Assignee
Divinetworks Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Divinetworks Ltd filed Critical Divinetworks Ltd
Publication of PT1721438E publication Critical patent/PT1721438E/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/765Media network packet handling intermediate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Between Computers (AREA)
  • Small-Scale Networks (AREA)

Description

1
DESCRIÇÃO "SERVIDOR, MÉTODO E SISTEMA PARA ARMAZENAMENTO TEMPORÁRIO (CACHING) DE CORRENTES DE DADOS"
ÂMBITO DA INVENÇÃO
Esta invenção refere-se ao domínio do transporte de dados via redes de comunicação, e mais especificamente ao domínio de reduzir o volume desses dados de transporte.
ANTECEDENTES DA INVENÇÃO O capítulo do antecedentes da aplicação de patente norte-americana provisória n.° 60/548.855 é aqui incorporada por referência.
Reduzir a largura de banda é um objectivo principal dos ISP (Fornecedores de Serviços Internet), utilizadores particulares, fornecedores de conteúdos e de quase todas as organizações que possuem uma rede. A largura de banda significa custo, uma vez que as linhas de comunicação são actualmente alugadas de acordo com a quantidade de dados que transferem. Para um arrendador, o menor consumo de largura de banda significa menos dinheiro gasto no aluguer da linha de comunicação. Para um fornecedor de largura de banda, o menor volume de dados transmitido por uma linha, através de um determinado número de clientes, significa mais clientes a poderem subscrever-se sem reduzir a qualidade de serviço. A publicação norte-americana n.° 2002/0184333 (daqui em diante designada Dl) pretende melhorar o desempenho das 2 redes de comunicação. O problema a resolver por Dl tem a ver com os casos em que vários requisitantes podem enviar pedidos para o mesmo ficheiro, sendo cada pedido direccionado para um fornecedor diferente citando diferentes URL ou mesmo nomes de ficheiros diferentes. Na convencional armazenagem temporária, estes pedidos múltiplos serão referidos como pedidos para diferentes ficheiros, resultando em respectivas entregas múltiplas de ficheiros.
De acordo com a invenção Dl, após receber um ficheiro completo de cada uma das fontes múltiplas, será atribuída uma assinatura digital, que por sua vez será reconhecida como sendo idêntica à assinatura digital do mesmo ficheiro recebido de qualquer uma das outras fontes. Correspondentemente, outros pedidos para o ficheiro de qualquer um dos fornecedores múltiplos serão satisfeitos, restaurando o ficheiro a partir de uma única cópia armazenada localmente no servidor cache. 0 aperfeiçoamento obtém-se armazenando temporariamente ficheiros frequentemente pedidos para devolver esses ficheiros a um requisitante em resposta à solicitação do requisitante, sendo os ficheiros indexados de acordo com uma assinatura digital atribuída a cada ficheiro, evitando assim um armazenamento temporário múltiplo e entregas múltiplas de fornecedor-servidor do mesmo ficheiro nos casos em que um ficheiro pode ser restaurado a partir de uma série de fontes.
Como se pode observar, para poder associar entre diferentes formas de pedidos e um ficheiro pedido, Dl requer que um ficheiro temporariamente armazenado seja reconhecido duas vezes: primeiro de acordo com a sua 3 assinatura digital e depois de acordo com todos os URL ou nomes de ficheiros associados a esse ficheiro. No caso de receber um pedido para o mesmo ficheiro que não é familiar ao sistema, este pode ser satisfeito apenas pela restauração do ficheiro a partir da localização indicada pelo pedido, e só depois do ficheiro ter sido restaurado e reconhecido como uma cópia de um ficheiro localmente armazenado, podendo o nome do ficheiro ou URL indicado pelo pedido ser associado a esse ficheiro local para uso futuro (ou seja, para futuros pedidos similares). Outra desvantagem de Dl tem a ver com o facto dos ficheiros armazenados em alguns computadores de fornecedor poderem mudar, enquanto o nó intermédio continua a providenciar os requisitantes com uma antiga versão de um ficheiro localmente armazenado, sem se aperceber da mudança.
A publicação WO 95/19003 (daqui em diante designada D2) refere-se a casos, em que um computador de recepção tem um ficheiro antigo, um computador de transmissão tem um ficheiro novo, em que partes de ambos os ficheiros podem ser idênticas. Para permitir que o computador de recepção possa actualizar o ficheiro antigo para este ser idêntico ao ficheiro novo, requer-se que pelo menos aquelas partes do novo ficheiro que não são idênticas a nenhuma parte do ficheiro antigo sejam transmitidas ao computador de recepção. Para que tanto o computador de recepção como o computador de transmissão possam comparar que partes do ficheiro têm de ser transmitidas (acelerando assim o processo de transmissão), o computador de recepção precisa, como passo preliminar, de dividir o ficheiro antigo em segmentos, de calcular um número hash a cada segmento e de enviar os números hash ao computador de transmissão. O 4 computador de transmissão tem depois de calcular números hash "para cada possível segmento no novo ficheiro" (página 7 linhas 23-24) e tem de comparar os números hash com os números hash que recebeu do computador de recepção.
Como se pode observar, D2 pretende reconstruir um ficheiro num computador de recepção, a partir de segmentos de um novo ficheiro recebido de um emissor e de segmentos existentes do antigo ficheiro pré-designado existente no computador de recepção, de modo a que o resultado seja uma cópia de um novo ficheiro no computador de recepção. A patente norte-americana n.° 5.721.907 tem um objectivo idêntico a D2. Desde Dl a D3, todos se referem a um computador de recepção que aguarda um ficheiro pedido pré-determinado (ou parte do ficheiro) a ser obtido a partir de outro computador e guardado no computador de recepção. Quando se conhece um ficheiro, também tem um ponto inicial e um ponto final conhecidos, que podem ser usados como localizações de referência para uma assinatura digital a ser computorizada por uma área conhecida de dados.
Ao contrário da técnica actual, a presente invenção pretende iniciar a redução de transporte em correntes de dados em tempo real, isto é, reduzir o volume de correntes de dados, cujo conteúdo é anónimo e não pode ser ainda reconhecido como um ficheiro ou uma parte de um ficheiro pelo computador que inicia a redução. Relativamente, por exemplo, à radiodifusão video ao vivo, em que uma série de computadores de recepção recebem o mesmo conteúdo em tempo real, o sistema e método apresentados pela Dl são incapazes de reduzir o volume de transporte na rede, uma vez que o nó intermédio não tem nenhum ficheiro no seu cache por 5 restaurar, pois em lado algum há um "ficheiro" actual no caso em que os dados são criados em tempo real.
As invenções D2 e D3 são também irrelevantes nesse caso, pois não há nenhum "ficheiro antigo" nos computadores de recepção, cujas partes podem ser idênticas aos dados esperados.
No contexto da presente invenção - ancoragem localização numa corrente de dados determinada de acordo com o conteúdo, satisfazendo assim um critério pré-determinado. 0 critério é definido de modo a endereçar uma probabilidade satisfatória da presença de uma ancoragem sobre uma quantidade pré-determinada de dados.
Ancoragem - registar valores devolvidos por uma função pré-determinada (daqui em diante designada também por "função de ancoragem") operada para examinar áreas pré-determinadas de conteúdo, cuja localização está em correlação com ancoragens. A função e as áreas de dados são seleccionadas, de modo que os valores devolvidos possam ser usados como assinaturas identificativas do conteúdo numa probabilidade satisfatória.
RESUMO DA INVENÇÃO A presente invenção refere-se a um método e a sistemas para sincronizar entre conteúdos anónimos de correntes de dados que passam actualmente pelo servidor de comunicação e entre conteúdos similares que já passaram pelos referidos servidores e estão localmente armazenados, de modo a poder eliminar o transporte de certas quantidades da referida corrente de dados. 6
De acordo com algumas versões, a sincronização também é entre várias cópias de conteúdo de dados similar que passa pelo servidor simultaneamente. Um sistema da presente invenção compreende pelo menos um servidor capaz de reduzir volumes de transporte de redes em linha como resultado de procedimentos auto-iniciados, que não requerem informação sobre a fonte dos dados, o seu tipo, o seu nome ou qualquer outro detalhe identificativo, para conseguir reduzir o volume. Isto contrasta com métodos, de acordo com os quais a redução do volume esperada depende dos nomes ou caminhos do ficheiro para permitir a sincronização entre um ficheiro pedido e um ficheiro localmente armazenado. Além disso, quando se conhece um ficheiro por transferir também tem um ponto inicial e um ponto final conhecidos, que podem ser usados como localizações de referência para uma assinatura digital a ser computorizada por uma área pré-determinada de dados. No caso de correntes de dados anónimos cujo conteúdo não tem pontos iniciais ou finais aprovados (como é o caso de acordo com a presente invenção), não existem pontos de referência acordados que permitem calcular uma assinatura digital repetivel. Se uma assinatura digital não puder ser repetida, não pode ser usada para identificar o conteúdo. Como irá ser explicado mais adiante, o servidor de acordo com a presente invenção compreende uma unidade de determinação de ancoragem que resolve este problema.
Para usar futuramente certas partes das correntes de dados que passam, o servidor de acordo com a presente invenção (daqui em diante designado também por "servidor de armazenamento temporário de dados anónimos" ou "servidor ADC") guarda essas partes dos dados sem se aperceber dos nomes de ficheiro, totalidade dos dados, URL, tipos de 7 ficheiro e origem ou destino dos dados. De acordo com a presente invenção, apenas os dados simples é são armazenados pelo servidor, sem caracteres ID recebidos dos requisitantes de ficheiros externos ou fornecedores de ficheiros.
Um sistema de acordo com a presente invenção compreende um servidor de comunicação com um circuito de comunicação para receber e entregar correntes de dados, e pelo menos um meio de memória acessível a isso. É fornecida uma unidade de determinação de ancoragem no servidor capaz de determinar localizações nas correntes de dados, em que grupos pré-definidos de caracteres da corrente satisfazem um critério pré-determinado, sendo as localizações desses grupos determinadas como ancoragens (designadas também por "pontos de referência"). 0 servidor compreende ainda - uma unidade de função de ancoragem para devolver valores (daqui em diante designados também por "assinaturas digitais") como uma função do conteúdo de áreas de dados na corrente, em que as áreas estão numa conhecida correlação relativamente às ancoragens (os referidos valores podem ser úteis quando procurar o conteúdo); uma unidade divisória de dados para dividir a corrente de dados num bloco de dados; uma unidade de registo para guardar listas de valores devolvidos a partir da unidade de função de ancoragem, em que cada valor está associado, por uma referência apropriada, a um bloco de dados específico que contém a área de dados do referido valor devolvido pela função de ancoragem (cada um dos valores associados a um bloco será designado, no contexto da presente invenção, por "um ID de 8 bloco", e em alguns casos particulares por "um código hash") .
De acordo com várias versões da presente invenção, uma série de ID de blocos estão associados a cada bloco de dados em circunstâncias normais.
De acordo com uma versão da presente invenção, a unidade divisória de blocos divide os dados em blocos com um tamanho pré-determinado. Por exemplo, o tamanho pré-determinado pode ser escolhido para ser 64K de dados.
De acordo com outra versão e para aumentar a compatibilidade entre blocos que contêm dados idênticos em diferentes servidores, e para evitar diferentes divisões dos dados cada vez que são transmitidos, a unidade divisória determina a localização inicial de blocos como uma função de dados incluídos na corrente de dados. De acordo com esta variação, a unidade divisória de blocos activa, nas correntes de dados, uma função para determinar ancoragens, sendo a função concebida para uma probabilidade de devolver uma ancoragem por área de dados de tamanho satisfatório, por ex. uma função de acordo com a qual se pode esperar uma ancoragem por aprox. 50K de dados.
Os blocos de dados podem ser guardados numa memória de armazenamento temporário para uma futura restauração de acordo com os ID de bloco associados a esses blocos através de referências apropriadas.
Como anteriormente mencionado, uma ancoragem é uma localização numa corrente de dados determinada de acordo com o conteúdo, satisfazendo assim um critério pré-determinado. 0 critério é definido de modo a endereçar uma probabilidade satisfatória da presença de uma ancoragem sobre um quantidade pré-determinada de dados. 9
Por exemplo, de acordo com uma versão da invenção, um conjunto de ancoragens associado a um bloco de dados pode ser o conjunto de localizações, onde aparece uma sequência curta no bloco, como por ex. em cada lugar onde aparece "aaa" no bloco. De acordo com outra versão, o conjunto de ancoragens pode ser o conjunto de localizações de n-tuplos, em que uma função de hash sobre esta n-tuplo devolve um valor pré-definido, como por ex. qualquer localização de um tripleto de bytes no bloco, cujo valor hash devolvido é 123 .
Alguns exemplos de funções de hash que podem ser usados para encontrar uma ancoragem são LFSR (aka CRC) , DES, MD5, etc.
De acordo com uma versão privilegiada, a função de ancoragem é concebida de modo que a probabilidade de encontrar uma ancoragem é de cada 500 bytes em média. Correspondentemente, espera-se encontrar três ancoragens em cada pacote de dados. No caso dos dados estarem divididos em blocos de dados de 64K cada, esperam-se 128 ancoragens por cada bloco. No caso de serem utilizados blocos de aproximadamente 50K, o número esperado de ancoragens é respectivamente reduzido e, por conseguinte, esperam-se aproximadamente 100 ancoragens por cada bloco.
Como já foi anteriormente mencionado, a ancoragem é o registo de valores devolvidos por uma função pré-determinada ("função de ancoragem") operada para examinar áreas pré-determinadas de conteúdo, cuja localização está em correlação com ancoragens. A função e as áreas de dados são seleccionadas, de modo que os valores devolvidos possam ser usados como assinaturas identificativas do conteúdo numa probabilidade satisfatória. De acordo com uma versão 10 privilegiada da presente invenção, a função de ancoragem é seleccionada para ser uma função de hash imposta em 100 bytes consecutivos, a começar numa ancoragem e devolvendo um valor hash de 96 bits como uma assinatura digital.
De acordo com uma versão privilegiada da presente invenção, a unidade de registo (ou o servidor através de qualquer outra unidade apropriada) é ainda concebida para registar as ancoragens em correlação com o registo dos ID de blocos. Por exemplo, após um determinado bloco de dados ter sido dividido da corrente de dados pela unidade divisória de dados, a localização das ancoragens é registada por ex. como referências de desvio a serem medidas a partir do ponto inicial do bloco. Com este registo, quando é indicado um valor de assinatura digital, pode ser procurado um valor idêntico numa lista de ID de blocos, e se for encontrado, o bloco ao qual está associado pode ser restaurado ou acedido. A área de dados, a partir da qual foi devolvido o valor de assinatura digital, pode ser assim facilmente localizada de acordo com a localização da ancoragem associada a este valor, medida a partir do ponto inicial do bloco.
De acordo com outra versão, as localizações de ancoragem no bloco não estão a ser registadas. De acordo com esta versão, quando é indicado um valor de assinatura digital, pode ser procurado um valor idêntico numa lista de ID de blocos, e se for encontrado, o bloco ao qual está associado pode ser restaurado ou acedido. Uma vez que as localizações de ancoragem não são registadas de acordo com esta versão específica, a localização da área de dados no bloco, a partir do qual o valor de assinatura digital foi devolvido, é ainda desconhecida. Deste modo, de acordo com 11 esta versão, deve ser utilizado um dicionário, como será explicado no capitulo da descrição detalhada. Com esta finalidade, o servidor ADC pode ainda compreender uma unidade criadora de dicionários.
Seja através da referida versão de registo de ancoragem ou através de uma versão criadora de dicionários, é possível sincronizar um pacote de dados actualmente recebido, a partir do qual foi devolvida uma assinatura digital pela unidade de função de ancoragem, com um pacote de dados idêntico incluído num bloco de dados já guardado na memória, de modo a poderem ser facilmente comparados para verificar se são idênticos. No caso de serem idênticos, o pacote actualmente recebido pode ser substituído por uma referência à sua localização no bloco, reduzindo assim o volume de dados enviado à extremidade de recepção. No caso de não serem idênticos, o volume de dados a enviar pode ainda ser reduzido, substituindo-se sub-séries idênticas (se existirem) por referências às suas localizações inicial e final no bloco. 0 servidor da presente invenção pode ser utilizado numa ou duas opções básicas, ou combinações suas, para reduzir volumes de transporte sobre redes de comunicação: (i) em conjunção com pelo menos um servidor correspondente similar, ambos os servidores localizados em pontas remotas de uma linha de comunicação virtual (no contexto da presente invenção, o termo linha de comunicação inclui uma ligação sem fios, como sendo uma das opções possíveis) interligados; e 12 (ii) em conjunção com pelo menos um computador fornecedor de dados (daqui em diante designado "fornecedor de dados") que compreende uma unidade de redireccionamento;
Com a finalidade de facilitar a descrição, parte-se do principio que dois servidores de armazenamento temporário de dados anónimos de acordo com a presente invenção estão ligados em duas pontas remotas de uma linha de comunicação, e que ambos estão a funcionar também em conjunção com fornecedores de dados interligados através de respectivas redes e routers.
Como ponto de partida, vamos presumir que os dois servidores ADC possuem memórias cache que estão vazias. As correntes de dados são dirigidas pelos servidores ADC. Cada servidor ADC processa os dados que passam por ele para determinar ancoragens, para calcular assinaturas digitais, para dividir os dados em blocos e para criar ID de blocos. Em circunstâncias normais, os blocos são guardados nos armazenamentos temporários, que começam assim a ser preenchidos com blocos de dados simples que não contêm informação identificativa. Os ID de blocos de cada bloco são também guardados, de modo a que o endereço de cada bloco guardado no armazenamento temporário seja ligado a uma respectiva lista de ID de blocos. Simultaneamente com a construção do armazenamento temporário em cada servidor ADC, os blocos são enviados, pacote a pacote, para a direcção pretendida, que está de acordo com as circunstâncias ou do correspondente servidor ADC na ponta oposta da linha de comunicação ou dos receptores convencionais para os quais os dados são encaminhados. 13
Sempre que um valor de assinatura digital é devolvido de uma corrente de dados recebida, procura-se um valor idêntico nas listas guardadas de ID de blocos no servidor ADC. Se detectar um ID de bloco com um valor idêntico, acede-se ao bloco associado a este ID de bloco. 0 servidor localiza agora o ponto especifico nesse bloco, a partir do qual foi devolvido o ID de bloco pela função de ancoragem, e sincroniza entre a localização do pacote de dados actualmente recebido e a localização no bloco do pacote de dados originalmente recebido, por exemplo utilizando o desvio conhecido da ancoragem do ponto inicial do bloco (de acordo com a versão, em que as ancoragens são guardadas com os ID de bloco), ou por exemplo através da utilização de um dicionário (de acordo com outra versão). 0 pacote actualmente recebido e o original podem agora ser comparados para verificar se são idênticos ou para determinar que partes suas (ou que dimensões de sub-séries deles) são idênticas.
No caso de serem (e de acordo com várias outras versões no caso de certas partes suas serem idênticas), o servidor ADC inicia um procedimento para reduzir o volume da corrente de dados que se espera que contenha dados já localmente armazenados.
Se a fonte dos dados for um fornecedor de dados, o servidor ADC de iniciação envia uma mensagem a esse fornecedor de dados para activar a função de ancoragem e para enviar apenas referências a localizações de ancoragem no bloco, em vez de enviar os próprios dados. Enquanto as referências recebidas permitirem ao servidor restaurar pacotes inteiros do bloco localmente armazenado, o fornecedor de dados continua a enviar referências, em vez 14 de dados completos. Se, a qualquer momento, o servidor detectar desfasamento entre as assinaturas dos dados recebidos e as dos que estão localmente armazenados, ele envia uma mensagem ao fornecedor para regressar à transmissão convencional.
No caso das correntes de dados recebidas pretenderem ser encaminhadas para um correspondente servidor ADC, o servidor de iniciação envia uma mensagem ao correspondente servidor para restaurar do seu armazenamento temporário um bloco de acordo com uma assinatura actualmente detectada. Um ou vários pacotes actualmente recebidos são depois enviados ao correspondente servidor no modo de transmissão convencional até o correspondente servidor confirmar que o bloco pretendido foi detectado e trazido.
No servidor de inicialização, as partes dos pacotes actualmente recebidos que são idênticas às que estão localmente armazenadas são de seguida substituídas por referências ao bloco, permitindo que o correspondente servidor as reconstrua a partir do bloco. Uma vez que as referências são mais curtas do que os dados que elas substituem, o tamanho do pacote pode ser certamente reduzido. Os pacotes de tamanho reduzido são, por conseguinte, enviadas ao correspondente servidor enquanto os dados idênticos aos que são actualmente recebidas puderem ser localmente restaurados.
De acordo com uma versão privilegiada, o servidor ADC é ainda utilizado para eliminar volume de transporte desnecessário nos casos em que flui informação idêntica simultaneamente para diferentes destinos através do servidor. De acordo com esta versão, o servidor de iniciação procura ancoragens em pacotes actualmente 15 recebidos e, por vezes, pode detectar que vários pacotes localmente armazenados devolvem assinaturas idênticas. Isto pode ser o caso, por exemplo, quando um video ao vivo está a ser radiodifundido para vários receptores. Neste caso, o servidor de iniciação pode enviar ao servidor correspondente uma mensagem para usar um único pacote que está a ser enviado, e distribui-la a todos os receptores que esperam pacotes idênticos no servidor de iniciação. 0 volume de transporte neste caso pode ser significativamente reduzido, e o tempo de download de grandes quantidades de dados pode ser significativamente encurtado.
Passamos a descrever resumidamente algumas versões básicas da invenção: A presente invenção refere-se a um servidor de comunicação para entregar correntes de dados a um destino remoto através de uma rede de comunicação, compreendendo o servidor uma unidade de substituição para substituir partes de dados de correntes de dados, que estão para chegar e serem recebidas por um emissor remoto, por partes de dados idênticas que podem ser recuperadas a partir de um armazenamento de dados acessível a isso, de acordo com referências fornecidas pelo emissor remoto; caracterizado por uma unidade de identificação para identificar as partes de dados que serão substituídas de acordo com uma assinatura digital, que é uma função dos dados incluídos nas referidas partes, e caracterizado por uma unidade de determinação de ancoragem para determinar localizações nas correntes de dados, onde grupos pré-definidos de caracteres da corrente cumprem um critério pré- 16 determinado, sendo as localizações desses grupos pontos de referência para as assinaturas digitais.
De acordo com várias versões privilegiadas, o servidor de comunicação compreende ainda uma unidade de mensagens para notificar um emissor remoto para parar de entregar partes de dados a entrar (incoming) e que podem ser recuperadas a partir de um armazenamento de dados acessível a isso. 0 emissor remoto pode ser um PC que entrega dados (ou ficheiros que o servidor da invenção designa de dados simples). De acordo com várias versões privilegiadas da invenção, as unidades do servidor são concebidas para processar partes de dados que são pacotes do protocolo de transmissão TCP/IP.
De acordo com várias versões privilegiadas, o servidor compreende ainda um armazenamento de dados acessível a isso, em que os pacotes são armazenados no armazenamento de dados em blocos de tamanho variável, que é determinado de acordo com a localização de ancoragem na corrente de dados original.
De acordo com várias versões, a assinatura digital devolvida pela unidade de função de ancoragem baseia-se em qualquer valor computorizado de CRC, SHAl ou DES de um número de bytes pré-determinado a partir de uma parte de dados seleccionada.
De acordo com algumas versões privilegiadas, a assinatura digital é calculada a partir de um número pré-determinado de bytes de dados, estando a localização dos referidos bytes na corrente de dados em correlação com pelo 17 menos uma ancoragem, e sendo a ancoragem um indicador para uma localização na corrente de dados que possui uma compatibilidade com um critério pré-determinado.
De acordo com várias versões privilegiadas, o referido critério é uma função dos dados contidos nas referidas partes dos dados e é independente de uma informação de titulo, endereço ou encaminhamento dos referidos dados. A função reage a uma combinação de caracteres pré-determinada, de modo a ser atribuída uma ancoragem após a detecção da referida combinação de caracteres
De acordo com várias versões, a combinação de caracteres é uma série curta de caracteres pré-definidos.
De acordo com várias versões, é atribuído um conjunto de ancoragens a uma parte de dados, estando cada ancoragem do conjunto em correlação com uma localização n-tuplo na referida parte de dados, em que a função é uma função de hash que produz um valor pré-definido sobre o n-tuplo.
De acordo com várias versões privilegiadas, a função de hash é seleccionada a partir do grupo que contém LFSR, CRC, SHA1, DES, e MD5. 0 servido e os sistemas que contêm isso, podem processar ficheiros entregues pela comunicação P2P, seja qual for o seu tamanho ou quer sejam divididos e descarregados de uma série de fornecedores, uma vez que a presente invenção se refere a qualquer tipo de ficheiros como correntes de dados anónimos e simples. A presente invenção refere-se também a um método para entregar correntes de dados através de redes de comunicação, método esse que compreende determinar pontos de referência numa corrente de dados, encontrando-se localizações na corrente onde um número pré-definido de 18 caracteres cumpre um critério pré-determinado; registar assinaturas digitais, sendo os valores devolvidos de uma função pré-determinada sobre áreas pré-definidas de conteúdo, em que as áreas estão em correlação com os pontos de referência; usar as assinaturas digitais para localizar conteúdo localmente armazenado, e usar os pontos de referência ou criar um dicionário e usá-lo para sincronizar entre partes de dados actualmente recebidas e entre conteúdo correspondente localmente armazenado. A presente invenção refere-se ainda a um meio de leitura informático com instruções para controlar um sistema informático para implementar o método.
Também se engloba, no âmbito da presente invenção, um sistema para reduzir volumes de transporte através de redes de comunicação, compreendendo pelo menos um servidor de comunicação conforme definido pela descrição anterior e que se segue.
BREVE DESCRIÇÃO DOS DESENHOS
Para compreender a invenção e para ver como pode ser levada a cabo, passamos a descrever uma versão privilegiada através de um exemplo não limitativo, fazendo referência aos desenhos anexos, em que: A Fig. 1 ilustra a relação entre a corrente de dados, os pacotes incluídos na corrente de dados, os blocos de dados divididos a partir da corrente de dados e as ancoragens criadas de acordo com a presente invenção, para permitir uma correlação eficaz entre instâncias repetidoras de correntes de dados anónimos similares. 19 A Fig. 2 ilustra a relação entre blocos de dados, entre uma rede de ID de blocos que permite localizar blocos localmente armazenados e entre um dicionário que, de acordo com algumas versões, permite localizar pacotes num bloco. A Fig. 3 ilustra uma primeira parte de um fluxograma que demonstra um processo para reduzir o volume de transporte através de uma linha de redes de acordo com uma versão privilegiada da presente invenção. A Fig. 4 ilustra uma segunda parte do fluxograma da Figura 3. A Fig. 5 ilustra um exemplo da configuração do sistema de acordo com a presente invenção.
DESCRIÇÃO DETALHADA DA INVENÇÃO A invenção refere-se a um método para reduzir a largura de banda através do armazenamento temporário de pacotes, e um sistema para reduzir a largura de banda através do armazenamento temporário de pacotes. 0 núcleo da invenção é armazenar pacotes e restaurá-los rápida e eficazmente. Passamos a descrever como os pacotes podem ser armazenados para depois serem eficazmente restaurados.
Na seguinte descrição, passamos a designar um ficheiro a ser transferido por corrente de dados. Isto é uma consideração razoável, uma vez que os dispositivos que tratam das correntes em tempo real na net não conhecem de 20 antemão o ficheiro que está a ser transferido e passam a conhecê-lo assim que passa por eles, tal como uma corrente.
Um servidor de comunicação de acordo com a presente invenção passa a conhecer os dados à medida que lê os pacotes que pertencem à corrente da linha de comunicação. A corrente detectada vai ser dividida em blocos de dados. 0 tamanho de um bloco não depende do tamanho do pacote. Passamos a considerar um tamanho de bloco de 64K como exemplo (apesar de poder ter qualquer tamanho aceitável), de acordo com uma versão. Um bloco também não tem de começar no inicio de um pacote. À medida que lemos pacotes de uma corrente a partir da net, os seus dados são copiados para um bloco de dados. Quando um bloco está cheio e incluir 64K de dados, será copiado para o disco local depois de executar algum pré-processamento que será discutido mais adiante. De acordo com outra versão, a posição final de um bloco e o inicio do próximo bloco numa corrente são determinados por ancoragens (de um modo que será explicado mais adiante). Com a utilização de ancoragens (em contraposição à utilização de blocos de tamanho fixo de acordo com a outra versão), a divisão de blocos fica dependente do seu conteúdo (uma vez que a ancoragem é determinada como uma função dos dados incluídos) e, por conseguinte, os blocos que contêm dados idênticos encontram-se mais provavelmente através da rede como sendo similarmente divididos, enquanto a divisão de blocos de tamanho fixo pode ocasionalmente ser mudada, pois não há nenhuma regra inerente para determinar a sua divisão.
De acordo com várias versões, as funções de hash serão utilizadas para facilitar a localização de dados pedidos 21 durante os processos assumidos de acordo com a presente invenção. Um código hash é definido para ser um número de n bits que depende do valor de uma área de dados, cujo tamanho é m bytes, em que a probabilidade de ter dois códigos idênticos para dois valores m-byte diferentes é muito baixa. Os códigos hash podem ser criados pela computação de valores CRC de m bytes ou através do cálculo do seu próprio valor SHAl, valor DES ou qualquer outra função que satisfaça a condição anterior. A decisão sobre os valores específicos de n e m pode ser tomada pelos profissionais no ramo, dependendo da rede e do tipo de pacotes onde o método é aplicado. Os códigos hash podem ser utilizados para localizar um bloco pedido no disco. Os códigos hash também podem ser utilizados para localizar um pacote especificamente pedido no bloco.
De acordo com uma versão privilegiada da presente invenção, é utilizado um código hash de 64 bits sobre 100 bytes para conseguir localizar um bloco no disco.
De acordo com outra versão privilegiada da presente invenção, é utilizado um código hash de 96 bits sobre 100 bytes para conseguir localizar um bloco no disco.
De acordo com algumas versões, é utilizado um código hash de 16 bits sobre 5 bytes para criar um dicionário que vai permitir encontrar um pacote pedido num bloco.
De acordo com várias versões da presente invenção, as ancoragens são preferencialmente seleccionadas para serem dependentes de apenas pequenas quantidades de dados (por ex. alguns poucos bytes), e independentes da posição inicial do bloco que contém as ancoragens ou da posição inicial dos pacotes que os contêm. Um exemplo para definir ancoragens numa corrente é escolher uma ancoragem para ser 22 qualquer posição na corrente onde aparece a série "abc". Outro exemplo para definir ancoragens é escolher ancoragens para serem qualquer posição na corrente onde um hash de 9 bits de 5 bytes consecutivos é zero. Foi escolhido um CRC de 9 bits porque quando é indicado um CRC de uma série de cinco bytes é fácil remover a contribuição do primeiro byte na série e para adicionar um novo byte no fim da série. Por conseguinte, o CRC pode ser eficazmente "girado" sobre a memória tampão.
Em qualquer lugar onde é encontrada uma ancoragem, é calculado um código hash de 96 bits sobre os próximos 100 byte4s consecutivos. O valor do código hash devolvido é chamado "ID de bloco". Obviamente que de acordo com o procedimento descrito, um bloco terá vários ID. Para evitar demasiados ID de blocos, é possível omitir uma certa quantidade de dados depois de encontrar uma ancoragem, por ex. é possível omitir 400 bytes ou 500 bytes fora da ancoragem anteriormente considerada, antes de encontrar a próxima ancoragem. Correspondentemente, observa-se que um pacote não suporta mais de três ID de blocos, e que um bloco de 64K não suporta mais de 128 ID de blocos.
Todos os ID de blocos são de seguida guardados numa tabela no disco. Esta tabela é também designada "tabela hash". Cada ID de blocos está associado a uma entrada da tabela hash, apesar de muitos ID poderem ser mapeados para a mesma entrada, na medida em que todos se referem a um bloco específico. Em cada entrada é, pois, mantida uma lista de ID de blocos, juntamente com a localização do seu bloco associado.
De acordo com algumas versões, os códigos hash são computorizados para cada bloco, em cada bytes m 23 consecutivos do bloco, e cada código hash é armazenado numa tabela juntamente com a posição onde é criado. Esta tabela é designada também por "dicionário" do bloco, e será utilizada de acordo com estas versões para localizar pacotes pedidos no bloco. De acordo com uma versão e conforme anteriormente mencionado, escolhe-se o código hash com 16 bits de comprimento, que é calculado ao longo de 5 bytes consecutivos. Os valores dos códigos hash devolvidos a partir do cálculo são armazenados numa tabela, porém, de acordo com outras variações da versão, podem ser armazenados numa lista, uma árvore ou qualquer estrutura que permita uma pesquisa eficiente. 0 dicionário é, pois, definido para ser uma tabela de 65536 entradas (correspondendo cada entrada a uma possível combinação diferente do código de 16 bits). No caso de um código hash h ter sido calculado na posição p, a entrada n.° h da tabela é definida para suportar o número p. Correspondentemente e para encontrar a posição num pacote onde foi computorizado um código hash h, deve ser lido o valor armazenado na entrada n.° h na tabela. 0 tamanho do dicionário pode ser reduzido através da computorização de um código hash apenas para cada byte m consecutivo, cuja posição inicial dentro do pacote pode ser entregue por x, em que x é um parâmetro que pode ser escolhido pelo criador. Um valor mais elevado de x resulta num menor tamanho do dicionário. Por exemplo x pode ser 16.
Faz-se agora referência à Fig. 1, que ilustra a relação entre a corrente de dados representada pelo quadro 1. Os pontos dentro do quadro representam o conteúdo de dados. Os pacotes estão incluídos na corrente de dados, conforme representado pelo quadro 2, que é idêntico ao 24 quadro 1, com a diferença do quadro 2 ilustrar o ponto inicial e o ponto final dos pacotes através de linhas verticais 4. Os blocos de dados por dividir a partir da corrente de dados são representados por linhas duplas verticais 5, e são também ilustradas as ancoragens 6, 7 e 8 criadas de acordo com a presente invenção, para permitir uma correlação eficaz entre instâncias repetidoras de correntes de dados anónimos e similares. No exemplo ilustrado, as ancoragens são definidas como uma localização, em que a combinação de caracteres 'abc' é encontrada na corrente de dados. Correspondentemente, as instâncias destas combinações na corrente foram enfatizadas, escrevendo explicitamente a referida combinação de caracteres. As linhas com pontos verticais 9, 10 e 11 passam pela corrente, pacotes e representações de blocos para enfatizar que as ancoragens providenciam pontos de referência inerentes para localizações na corrente de dados, de modo que não importa como esta corrente será dividida, os pontos de referência podem ser sempre detectados pela activação de uma função que devolve uma ancoragem sempre que for detectada a combinação de caracteres pré-definida.
Relativamente à Fig. 2, três blocos guardados no armazenamento temporário são representados por três respectivos quadros marcados A, B, e C. O primeiro bloco, A, contém a série "abcdeafchijk". O dicionário do primeiro bloco é representado por um quadro marcado com D. O dicionário D indica as localizações no bloco A, onde aparecem tripletos de caracteres. A figura ilustra ainda uma tabela de ID de blocos (marcada E), em que no exemplo ilustrado, dois dos ID estão associados ao primeiro bloco 25 e, por conseguinte, endereçam-se ao primeiro bloco A, conforme representado pelas respectivas setas 31 e 32. Depois de receber um pacote, é procurada uma ancoragem, que quando é encontrada, se computoriza uma assinatura digital através de uma função de hash, que devolve um valor hash dos 100 bytes a seguir à ancoragem. Procura-se, depois, o valor da assinatura digital numa tabela que guarda ID de blocos. Esta tabela também guarda a localização no armazenamento temporário, onde está armazenado o bloco. No caso de ocorrer uma correspondência entre o valor da assinatura digital e um valor de qualquer um dos ID de blocos, o bloco associado ao ID de bloco correspondente é trazido pelo armazenamento temporário. Depois de trazer o bloco para a memória, o dicionário pode ser utilizado para encontrar grandes sub-séries do pacote no bloco, que são idênticos às correspondentes sub-séries no pacote actualmente recebido. Estas sub-séries podem depois ser eliminadas do pacote e substituídas por referências ao bloco.
Um servidor ADC que recebe este tipo de pacote processado pode restaurar as referidas partes eliminadas do pacote a partir do seu armazenamento temporário local, reduzindo assim o volume dos dados transmitidos de acordo com o volume das sub-séries eliminadas. O processo executado de acordo com várias versões da presente invenção será explicado com mais detalhe, presumindo uma configuração em que dois servidores ADC estão ligados respectivamente em lados opostos de uma linha de comunicação, e presumido (para simplificar a explicação) que todas as comunicações são transmitidas da mesma extremidade da linha (no contexto da presente invenção 26 "extremidade de iniciação") e recebidas na outra extremidade (no contexto da presente invenção "extremidade de recepção"), e que os servidores das duas extremidades da linha funcionaram durante um periodo de tempo suficiente, analisaram a informação transmitida ao longo da linha e construíram as estruturas de dados acima explicada.
Em resumo, a mesma configuração é designada, de acordo com a presente invenção, por um sistema que compreende dois servidores ADC, um na extremidade oposta de uma linha de comunicação. A comunicação transmitida ao longo da linha passa por ambos os servidores. Os dois servidores analisam os ficheiros e correntes que são transmitidos ao longo da linha. Eles dividem-nos em blocos e armazenam os blocos no seu disco local juntamente com um dicionário (de acordo com uma variação) ou com referências de ancoragem (de acordo com outra variação). Também actualizam o seu ficheiro hash que contém os ID de blocos, de acordo com os blocos recentemente guardados. Quando um pacote de uma corrente é transferido, os dois computadores procuram nos seus discos, utilizando o seu ficheiro hash, e trazem um bloco anteriormente guardado. Este bloco é utilizado pelo computador de transmissão para substituir dados no pacote com referências aos dados dentro do bloco, e através do computador de recepção para reconstruir o pacote de acordo com as referências. 0 referido processo será descrito com mais pormenor.
Um pacote lido a partir da rede na extremidade de iniciação faz parte de uma corrente de comunicação. Esta corrente de comunicação é diferenciada de outras comunicações pelo seu ID de comunicação, que é o tuplo quatro: endereço IP da fonte, endereço IP do destino, porta 27 da fonte e porta de destino. Após a leitura do pacote e antes de ser transmitido para a extremidade de recepção, o servidor de iniciação passa pelo pacote para encontrar ancoragens neste pacote. 0 número de ancoragens esperado num pacote é três (presumindo que está a ser usada a versão anteriormente mencionada dirigida para esse número de ancoragens). Isto significa que existe uma certa probabilidade de serem encontradas algumas ancoragens. Note que a posição da ancoragem na corrente é mais uma função do conteúdo do pacote do que a sua posição no pacote. Isto garante que a ancoragem encontrada num pacote actualmente recebido corresponda a uma ancoragem que foi anteriormente encontrada quando a corrente foi estudada, se de facto os dois pacotes incluírem partes idênticas de informação.
Depois de encontrar uma ancoragem destas, o valor da assinatura digital definido nessa ancoragem é computorizado. Usamos a tabela hash para procurar um ID de bloco que corresponde à assinatura digital devolvida do referido cálculo. Se encontrar uma correspondência, o bloco associado ao ID de blocos correspondente é trazido do armazenamento temporário. Entretanto, o pacote é transmitido ao longo da linha até à extremidade de recepção, seguido de uma mensagem que diz para trazer o mesmo bloco do seu disco. Uma vez que o referido bloco já passou no passado pela extremidade de iniciação (seja para ou de a extremidade de recepção), espera-se que em circunstâncias normais também tenha de ser encontrado na extremidade de recepção. 0 disco da extremidade de recepção leva alguns milésimos de segundos a trazer o bloco. Durante este tempo, podem ser transmitidos mais pacotes da mesma corrente sem alterações (isto é, através do modo de 28 transmissão convencional) ao longo da linha. Não se espera que o número destes pacotes seja superior a uma dúzia.
Depois do bloco ter sido trazido do disco da extremidade de recepção, e quando o pacote chega da mesma corrente, a posição do pacote dentro da corrente pode ser determinada, utilizando o dicionário. Para este efeito, é computorizado um código hash em cinco bytes dentro do pacote e o valor h é devolvido. É lida a entrada n.° h do dicionário, que suporta a posição onde apareceu uma série que criou o mesmo hash no bloco, e dos dados nessa localização no pacote anteriormente armazenado são comparados com os dados no pacote actualmente recebido para ver se correspondem. Se corresponderem, os dados no pacote são substituídos por uma indicação que os dados aparecem no bloco, juntamente com a sua posição no bloco e o seu comprimento. 0 referido procedimento é repetido as vezes necessárias até passar para o pacote inteiro. 0 servidor na extremidade de recepção da linha reconstrói o pacote, copiando os dados indicados do bloco para o pacote.
Para melhorar o tempo de trazer os blocos do armazenamento temporário, podem aplicar-se técnicas para trazer previamente. Por exemplo, um bloco (que pode ser mais tarde reconhecido como um que é pedido) pode ser previamente trazido antes de ser realmente necessário, identificando que a corrente chegou à extremidade do bloco actual, e depois trazendo previamente um conjunto de blocos, prevendo-se que um deles vai ser preciso a seguir. Para este efeito, pode analisar-se uma lista de blocos, que podem ser necessários após a utilização de um bloco especifico, para cada bloco, como por exemplo através de técnicas de auto-aprendizagem. 29 A Fig. 3 ilustra uma primeira parte de um fluxograma que demonstra um processo para reduzir o volume de transporte através de uma linha de redes de acordo com uma versão privilegiada da presente invenção. A primeira parte do fluxograma ilustra, de um modo geral, como um primeiro servidor de comunicação ADC1 se prepara para trabalhar em conjunção com um segundo servidor de comunicação similar ADC2. ADC1 começa por ler um pacote, conforme ilustrado pelo passo 41, encontra ancoragens no pacote, calcula a assinatura digital ao longo de áreas de dados pré-determinadas, cuja localização está em correlação com as ancoragens, e procura uma lista de ID de blocos a tentar localizar assinaturas anteriormente armazenadas que são idênticas a assinaturas actualmente recuperadas, conforme representado pelos passos 42 e 43 do processo. No caso de ter encontrado uma correspondência, o processo continua no passo 44, carregando um bloco de um armazenamento temporário local de acordo com a localização do bloco que está associado ao ID de blocos, que foi encontrado por corresponder a uma assinatura do pacote actualmente recebido. Os dados do pacote actualmente recebido são, de seguida, comparados com os dados no bloco (depois de sincronizar os respectivos pacotes, por ex. de acordo com as ancoragens, às quais a assinatura está associada). No caso de realizar o passo 45 de forma positiva e de se terem encontrado dados idênticos, o primeiro servidor envia uma mensagem (conforme representado pelo passo 46) ao segundo servidor ADC2, para trazer um bloco do seu armazenamento temporário local de acordo com a assinatura correspondente agora conhecida. 0 primeiro servidor aguarda uma confirmação do segundo servidor e permanece no modo não 30 síncrono da operação sempre que não for devolvida uma confirmação de trazer o bloco apropriado a partir do segundo servidor, conforme representado pelos passos 47, 48, e 50, em que um modo não síncrono quer dizer que os pacotes continuam a ser enviados ao segundo servidor de forma convencional (ou seja, na sua forma original) conforme representado pelo passo 54. O processo é, por conseguinte, repetido até ser recebida uma confirmação do segundo servidor e os dois servidores começarem a trabalhar no modo síncrono conforme representado pelo passo 49 e conforme pormenorizado na Fig. 4, ou até os pacotes comparados não serem considerados idênticos, de modo que o processo continua do passo 45 para o passo 53 e o pacote actual ainda desconhecido ao primeiro servidor seja mantido numa memória tampão conforme representado pelo passo 53, e sendo enviado de forma convencional para o segundo servidor conforme representado pelo passo 54, enquanto o processo é repetido, lendo outro pacote até a memória tampão ficar preenchida por um bloco inteiro de dados não familiares, que são depois guardados localmente conforme representado pelo passo 51, juntamente com o seu ID de blocos e localizações de ancoragens associadas, permitindo uma restauração futura do bloco após detecção da assinatura correspondente em alguma corrente de dados que será recebida no futuro. A Fig. 4 ilustra uma segunda parte do fluxograma da Figura 3, que é o modo síncrono em que dos dois servidores operam em dados familiares (ou seja, que já estão guardados localmente em armazenamentos temporários de ambos). No modo síncrono, o primeiro servidor lê um pacote actualmente recebido conforme representado pelo passo 55, compara-o aos 31 dados do pacote correspondente no bloco que foi carregado no passo 44 (da Fig. 3), e no caso dos dados nos dois blocos serem idênticos, o servidor envia instruções ao segundo servidor para reconstruir os dados do bloco que foi trazido pelo segundo servidor em resposta à mensagem que lhe foi enviada no passo 46 (da Fig. 3), e para enviar o pacote reconstruído para o seu destino. No caso da comparação levada a cabo no passo 56 ser negativa, o primeiro servidor envia uma mensagem ao segundo servidor para terminar o modo síncrono conforme representado no passo 59, e também envia o pacote actualmente recebido ao segundo servidor na sua forma original. 0 servidor muda, de seguida, o seu modo de operação para não síncrono conforme representado no passo 61, e o processo começa de novo, conforme representado no passo 40 da Fig. 3. A Fig. 5 ilustra um exemplo da configuração do sistema de acordo com a presente invenção, compreendendo dois servidores ADC 61 e 62 ligados em duas extremidades de uma linha de comunicação virtual 63, e que comunica por linhas de redes 64 e 66, respectivamente, com redes de comunicação convencional representadas por routers 67 e 65 e por fornecedores de dados 69 e 68 e receptores de dados 73 e 72.
Com esta configuração de rede e ao estabelecer a comunicação entre os dois servidores ADC ao longo da linha virtual, as correntes de dados podem ser redireccionadas, de modo a assegurar que as correntes de dados em questão certamente passarão por ambos os servidores. 32
DOCUMENTOS APRESENTADOS NA DESCRIÇÃO
Esta lista dos documentos apresentados pelo requerente foi exclusivamente recolhida para informação do leitor e não faz parte do documento europeu da patente. Apesar de ter sido elaborado com o máximo cuidado, o IEP não assume, porém, qualquer responsabilidade por eventuais erros ou omissões.
Documentos de patente apresentados na descrição • US 548855 P · WO 9519003 A [0007] • US 20020184333 A · US 5721907 A [0008]
Lisboa, 01/12/2010

Claims (5)

1 REIVINDICAÇÕES 1. Um servidor de comunicação para entregar uma corrente de dados a um destino remoto através de uma rede de comunicação, em que o servidor de comunicação compreende: uma unidade de substituição para substituir partes de dados de uma corrente de dados a entrar (incoming) e que será recebida por um emissor remoto, através de partes idênticas de dados que podem ser recuperadas a partir de um armazenamento de dados acessível a ele, de acordo com referências fornecidas pelo emissor remoto; uma unidade de identificação para identificar as partes de dados a serem substituídas de acordo com uma assinatura digital, que é uma função dos dados contidos nas referidas partes; e uma unidade de determinação de ancoragem para determinar localizações na corrente de dados, onde grupos pré-definidos de caracteres da corrente de dados cumprem um critério pré-determinado, sendo as respectivas localizações desses grupos pontos de referência para a respectiva assinatura digital associada às partes de dados em cada grupo. 2. 0 servidor de comunicação de acordo com a reivindicação 1 compreende ainda uma unidade de mensagens para notificar um emissor remoto para parar de entregar partes de dados a entrar (incoming) e que podem ser 2 recuperadas a partir de um armazenamento de dados acessível a ele. 3. 0 servidor de comunicação de acordo com a reivindicação 2, em que o emissor remoto é um PC que entrega dados. 4. 0 servidor de comunicação de acordo com qualquer uma das reivindicações de 1 a 3, em que as partes de dados são pacotes do protocolo de transmissão TCP/IP. 5. 0 servidor de comunicação de acordo com qualquer uma das reivindicações de 1 a 4 compreende ainda um armazenamento de dados acessível a ele, em que os pacotes são armazenados no armazenamento de dados em blocos de tamanho variável, que é determinado de acordo com a localização de ancoragem na corrente de dados original. 6. 0 servidor de comunicação de acordo com qualquer uma das reivindicações de 1 a 5, em que a assinatura digital se baseia em qualquer valor computorizado de CRC, SHAl ou DES de um número de bytes pré-determinado a partir de uma parte de dados seleccionada. 7. 0 servidor de comunicação de acordo com qualquer uma das reivindicações de 1 a 6, em que a assinatura digital é calculada a partir de um número pré-determinado de bytes de dados, estando a localização dos referidos bytes na corrente de dados em correlação com pelo menos uma ancoragem, e sendo a, pelo menos uma, ancoragem um 3 indicador para uma localização na corrente de dados que possui uma compatibilidade com um critério pré-determinado. 8. 0 servidor de comunicação de acordo com a reivindicação 7, em que o critério pré-determinado é uma função dos dados contidos nas referidas partes dos dados e é independente de uma informação de titulo, endereço ou encaminhamento dos referidos dados. 9. 0 servidor de comunicação de acordo com a reivindicação 8, em que a função reage a uma combinação de caracteres pré-determinada, de modo a ser atribuída uma ancoragem após a detecção da referida combinação de caracteres
10. O servidor de comunicação de acordo com a reivindicação 9, em que a combinação de caracteres pré-determinada é uma série curta de caracteres pré-determinados . 11. 0 servidor de comunicação de acordo com a reivindicação 9, em que um conjunto de ancoragens é atribuído a uma parte de dados, estando cada ancoragem do conjunto em correlação com uma localização n-tuplo na referida parte de dados respectiva, em que a função é uma função de hash que produz um valor pré-definido sobre o n-tuplo. 12. 0 servidor de comunicação de acordo com a reivindicação 11, em que a função de hash é seleccionada a partir de um grupo que contém LFSR, CRC, SHAl, DES, e MD5. 4 13. 0 servidor de comunicação de acordo com qualquer uma das reivindicações de 1 a 12, em que os ficheiros são entregues pela comunicação P2P.
14. Um método para entregar uma corrente de dados através de uma rede de comunicação, em que o método compreende: determinar pontos de referência na corrente de dados, encontrando-se localizações na corrente de dados, em que um número pré-definido de caracteres cumprem o critério pré-determinado; registar uma assinatura digital, sendo um valor devolvido a partir de uma função pré-determinada ao longo de uma área pré-definida do conteúdo, estando o âmbito pré-definido do conteúdo em correlação com os pontos de referência; utilizar a assinatura digital para localizar conteúdo localmente armazenado, e utilizar os pontos de referência ou criar um dicionário e usá-lo para sincronizar entre partes de dados actualmente recebidos e entre conteúdo correspondente localmente armazenado.
15. Um meio de leitura informático que contém instruções para controlar um sistema informático para implementar o método da reivindicação 14.
16. Um sistema para reduzir os volumes de transporte através de uma rede de comunicação, que compreende pelo 5 menos um servidor de comunicação conforme definido em qualquer uma das reivindicações de 1 a 13. Lisboa 01/12/2010
PT05709141T 2004-03-02 2005-03-02 Servidor, método e sistema para armazenamento temporário (caching) de correntes de dados PT1721438E (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US54885504P 2004-03-02 2004-03-02

Publications (1)

Publication Number Publication Date
PT1721438E true PT1721438E (pt) 2010-12-09

Family

ID=34919409

Family Applications (1)

Application Number Title Priority Date Filing Date
PT05709141T PT1721438E (pt) 2004-03-02 2005-03-02 Servidor, método e sistema para armazenamento temporário (caching) de correntes de dados

Country Status (8)

Country Link
US (2) US8549177B2 (pt)
EP (1) EP1721438B1 (pt)
CN (2) CN1969525B (pt)
AT (1) ATE480940T1 (pt)
DE (1) DE602005023416D1 (pt)
ES (1) ES2352558T3 (pt)
PT (1) PT1721438E (pt)
WO (1) WO2005086415A2 (pt)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2836758C (en) 2003-05-23 2017-06-27 Roger D. Chamberlain Intelligent data processing system and method using fpga devices
US8095774B1 (en) 2007-07-05 2012-01-10 Silver Peak Systems, Inc. Pre-fetching data into a memory
US8370583B2 (en) * 2005-08-12 2013-02-05 Silver Peak Systems, Inc. Network memory architecture for providing data based on local accessibility
US8171238B1 (en) 2007-07-05 2012-05-01 Silver Peak Systems, Inc. Identification of data stored in memory
US8392684B2 (en) 2005-08-12 2013-03-05 Silver Peak Systems, Inc. Data encryption in a network memory architecture for providing data based on local accessibility
US8929402B1 (en) 2005-09-29 2015-01-06 Silver Peak Systems, Inc. Systems and methods for compressing packet data by predicting subsequent data
US8489562B1 (en) * 2007-11-30 2013-07-16 Silver Peak Systems, Inc. Deferred data storage
US8811431B2 (en) 2008-11-20 2014-08-19 Silver Peak Systems, Inc. Systems and methods for compressing packet data
US7979584B1 (en) * 2006-07-14 2011-07-12 Emc Corporation Partitioning a data stream using embedded anchors
ES2318978B2 (es) * 2006-07-24 2009-10-07 Universidad De Alcala Mecanismos de marcado e identificacion en el nivel de transporte para la gestion de caches de contenidos.
US8755381B2 (en) 2006-08-02 2014-06-17 Silver Peak Systems, Inc. Data matching using flow based packet data storage
US8885632B2 (en) 2006-08-02 2014-11-11 Silver Peak Systems, Inc. Communications scheduler
US7660793B2 (en) 2006-11-13 2010-02-09 Exegy Incorporated Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors
US8307115B1 (en) * 2007-11-30 2012-11-06 Silver Peak Systems, Inc. Network memory mirroring
US8442052B1 (en) 2008-02-20 2013-05-14 Silver Peak Systems, Inc. Forward packet recovery
US10164861B2 (en) 2015-12-28 2018-12-25 Silver Peak Systems, Inc. Dynamic monitoring and visualization for network health characteristics
US9717021B2 (en) 2008-07-03 2017-07-25 Silver Peak Systems, Inc. Virtual network overlay
US10805840B2 (en) 2008-07-03 2020-10-13 Silver Peak Systems, Inc. Data transmission via a virtual wide area network overlay
US8743683B1 (en) 2008-07-03 2014-06-03 Silver Peak Systems, Inc. Quality of service using multiple flows
US7861004B2 (en) * 2008-12-04 2010-12-28 At&T Intellectual Property I, Lp System and method for analyzing data traffic
CN101719936A (zh) * 2009-12-09 2010-06-02 成都市华为赛门铁克科技有限公司 提供文件下载服务的方法、装置及缓存系统
US8432911B2 (en) 2010-01-15 2013-04-30 Alcatel Lucent Method and apparatus for reducing effects of lost packets on redundancy reduction in communication networks
US8548012B2 (en) 2010-01-15 2013-10-01 Alcatel Lucent Method and apparatus for reducing redundant traffic in communication networks
US10037568B2 (en) 2010-12-09 2018-07-31 Ip Reservoir, Llc Method and apparatus for managing orders in financial markets
US9130991B2 (en) 2011-10-14 2015-09-08 Silver Peak Systems, Inc. Processing data packets in performance enhancing proxy (PEP) environment
US20130103653A1 (en) * 2011-10-20 2013-04-25 Trans Union, Llc System and method for optimizing the loading of data submissions
US9626224B2 (en) 2011-11-03 2017-04-18 Silver Peak Systems, Inc. Optimizing available computing resources within a virtual environment
KR101904482B1 (ko) * 2011-12-26 2018-10-08 에스케이텔레콤 주식회사 콘텐트 전송 시스템, 그 시스템에서의 네트워크 중복 전송 트래픽 최적화 방법, 중앙 제어 장치 및 로컬 캐싱 장치
WO2013130281A1 (en) * 2012-02-29 2013-09-06 Altnet, Inc. Stream recognition and filtering
US10121196B2 (en) 2012-03-27 2018-11-06 Ip Reservoir, Llc Offload processing of data packets containing financial market data
US11436672B2 (en) 2012-03-27 2022-09-06 Exegy Incorporated Intelligent switch for processing financial market data
US9990393B2 (en) 2012-03-27 2018-06-05 Ip Reservoir, Llc Intelligent feed switch
US10282075B2 (en) 2013-06-24 2019-05-07 Microsoft Technology Licensing, Llc Automatic presentation of slide design suggestions
CN104254108A (zh) * 2013-06-27 2014-12-31 宇宙互联有限公司 传输管理装置、系统及方法
US9948496B1 (en) 2014-07-30 2018-04-17 Silver Peak Systems, Inc. Determining a transit appliance for data traffic to a software service
US9875344B1 (en) 2014-09-05 2018-01-23 Silver Peak Systems, Inc. Dynamic monitoring and authorization of an optimization device
US9760298B2 (en) * 2015-04-27 2017-09-12 Alcatel-Lucent Usa Inc. Anonymization of identifying portions of streaming data
US9824291B2 (en) 2015-11-13 2017-11-21 Microsoft Technology Licensing, Llc Image analysis based color suggestions
US10528547B2 (en) 2015-11-13 2020-01-07 Microsoft Technology Licensing, Llc Transferring files
US10534748B2 (en) 2015-11-13 2020-01-14 Microsoft Technology Licensing, Llc Content file suggestions
US10437829B2 (en) * 2016-05-09 2019-10-08 Level 3 Communications, Llc Monitoring network traffic to determine similar content
US10432484B2 (en) 2016-06-13 2019-10-01 Silver Peak Systems, Inc. Aggregating select network traffic statistics
US9967056B1 (en) 2016-08-19 2018-05-08 Silver Peak Systems, Inc. Forward packet recovery with constrained overhead
EP3560135A4 (en) 2016-12-22 2020-08-05 IP Reservoir, LLC PIPELINES INTENDED FOR AUTOMATIC ACCELERATED LEARNING BY EQUIPMENT
US10257082B2 (en) 2017-02-06 2019-04-09 Silver Peak Systems, Inc. Multi-level learning for classifying traffic flows
US10771394B2 (en) 2017-02-06 2020-09-08 Silver Peak Systems, Inc. Multi-level learning for classifying traffic flows on a first packet from DNS data
US10892978B2 (en) 2017-02-06 2021-01-12 Silver Peak Systems, Inc. Multi-level learning for classifying traffic flows from first packet data
US11044202B2 (en) 2017-02-06 2021-06-22 Silver Peak Systems, Inc. Multi-level learning for predicting and classifying traffic flows from first packet data
US11212210B2 (en) 2017-09-21 2021-12-28 Silver Peak Systems, Inc. Selective route exporting using source type
US10637721B2 (en) 2018-03-12 2020-04-28 Silver Peak Systems, Inc. Detecting path break conditions while minimizing network overhead
JP2022532230A (ja) 2019-05-14 2022-07-13 エクセジー インコーポレイテッド 金融市場データからの取引シグナルを低遅延で生成しかつ配信するための方法およびシステム
US20220261901A1 (en) 2021-02-16 2022-08-18 Exegy Incorporated Methods and Systems for Bettering Market Making at Low Latency
CN117134918B (zh) * 2023-07-20 2024-09-24 威艾特科技(深圳)有限公司 一种分布式数据签名校验方法及装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5455576A (en) * 1992-12-23 1995-10-03 Hewlett Packard Corporation Apparatus and methods for Lempel Ziv data compression with improved management of multiple dictionaries in content addressable memory
US6076084A (en) * 1994-01-03 2000-06-13 Norton-Lambert Corp. File transfer method and apparatus utilizing delimiters
DE69427924T2 (de) 1994-01-03 2002-04-11 Norton-Lambert Corp., Santa Barbara Datenübertragungsverfahren und -vorrichtung, die hash-zahlen verwenden
US5446888A (en) * 1994-01-14 1995-08-29 Pyne; Charles F. Remote file transfer method and apparatus
US7543018B2 (en) * 1996-04-11 2009-06-02 Aol Llc, A Delaware Limited Liability Company Caching signatures
US5832235A (en) * 1997-03-26 1998-11-03 Hewlett-Packard Co. System and method for pattern matching using checksums
DE19730159B4 (de) * 1997-07-14 2006-01-19 Telefonaktiebolaget Lm Ericsson (Publ) Kommunikationsverfahren und System
US6292880B1 (en) * 1998-04-15 2001-09-18 Inktomi Corporation Alias-free content-indexed object cache
US7460534B1 (en) * 1998-06-03 2008-12-02 3Com Corporation Method for statistical switching
US6178461B1 (en) * 1998-12-08 2001-01-23 Lucent Technologies Inc. Cache-based compaction technique for internet browsing using similar objects in client cache as reference objects
US6597812B1 (en) * 1999-05-28 2003-07-22 Realtime Data, Llc System and method for lossless data compression and decompression
US6826626B1 (en) * 2000-07-21 2004-11-30 Clear Blue Technologies Management, Inc. Method of and apparatus for rapid retrieval of data in a content distribution network
US7054912B2 (en) * 2001-03-12 2006-05-30 Kabushiki Kaisha Toshiba Data transfer scheme using caching technique for reducing network load
FI114417B (fi) * 2001-06-15 2004-10-15 Nokia Corp Datan valitseminen synkronointia varten
US6961011B2 (en) * 2001-08-27 2005-11-01 Freescale Semiconductor, Inc. Data compression system
US6650261B2 (en) * 2001-09-06 2003-11-18 Xerox Corporation Sliding window compression method utilizing defined match locations

Also Published As

Publication number Publication date
US8549177B2 (en) 2013-10-01
CN1969525A (zh) 2007-05-23
US20070198523A1 (en) 2007-08-23
WO2005086415A3 (en) 2006-02-02
EP1721438A2 (en) 2006-11-15
CN103067353B (zh) 2016-07-20
ATE480940T1 (de) 2010-09-15
CN103067353A (zh) 2013-04-24
US20130346565A1 (en) 2013-12-26
EP1721438B1 (en) 2010-09-08
WO2005086415A2 (en) 2005-09-15
DE602005023416D1 (de) 2010-10-21
ES2352558T3 (es) 2011-02-21
CN1969525B (zh) 2013-09-11

Similar Documents

Publication Publication Date Title
PT1721438E (pt) Servidor, método e sistema para armazenamento temporário (caching) de correntes de dados
US9917894B2 (en) Accelerating transfer protocols
US9984093B2 (en) Technique selection in a deduplication aware client environment
US20190114288A1 (en) Transferring differences between chunks during replication
US7475132B2 (en) Method of improving the reliability of peer-to-peer network downloads
KR100639021B1 (ko) 정보 분배 방법, 정보 분배 시스템 및 컴퓨터 판독 가능 기록 매체
US8171238B1 (en) Identification of data stored in memory
BR112012001671B1 (pt) Método e sistema de distribuição de conteúdo digital
US10367871B2 (en) System and method for all-in-one content stream in content-centric networks
US9990352B2 (en) Chunk compression in a deduplication aware client environment
BRPI0806326A2 (pt) sistema e método para combinar modos puxar e empurrar
US20100070698A1 (en) Content addressable storage systems and methods employing searchable blocks
US20150248443A1 (en) Hierarchical host-based storage
US20160041777A1 (en) Client-side deduplication with local chunk caching
JP2007280388A (ja) ダウンロード可能データセグメントを使用するピアツーピアファイル共有システムおよび方法
EP2975825B1 (en) Difference based content networking
US10339124B2 (en) Data fingerprint strengthening
US7877491B2 (en) Cookie invalidation or expiration by a switch
KR20110116219A (ko) 토렌트 콘텐츠 메타데이터를 복원하기 위한 방법 및 장치
US20160044077A1 (en) Policy use in a data mover employing different channel protocols
US7849163B1 (en) System and method for chunked file proxy transfers
US8176015B1 (en) Method and apparatus for reducing redundant storing of blocks of data on a server
US11782885B2 (en) Accessing S3 objects in a multi-protocol filesystem