BRPI0808859A2 - Sistemas e métodos para configurar, aplicar e gerenciar políticas de segurança - Google Patents

Sistemas e métodos para configurar, aplicar e gerenciar políticas de segurança Download PDF

Info

Publication number
BRPI0808859A2
BRPI0808859A2 BRPI0808859-4A BRPI0808859A BRPI0808859A2 BR PI0808859 A2 BRPI0808859 A2 BR PI0808859A2 BR PI0808859 A BRPI0808859 A BR PI0808859A BR PI0808859 A2 BRPI0808859 A2 BR PI0808859A2
Authority
BR
Brazil
Prior art keywords
policy
computer
action
expression
object class
Prior art date
Application number
BRPI0808859-4A
Other languages
English (en)
Inventor
Khemani Prakash
Korrapati Vamsimohan
Mirani Rajiv
Chauhan Abhushek
Sikka Namit
Reddy Anoop
Original Assignee
Citrix Systems, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/685,180 external-priority patent/US8631147B2/en
Priority claimed from US11/685,177 external-priority patent/US8490148B2/en
Priority claimed from US11/685,175 external-priority patent/US7853679B2/en
Priority claimed from US11/685,171 external-priority patent/US7853678B2/en
Priority claimed from US11/685,147 external-priority patent/US7865589B2/en
Priority claimed from US11/685,167 external-priority patent/US7870277B2/en
Application filed by Citrix Systems, Inc. filed Critical Citrix Systems, Inc.
Publication of BRPI0808859A2 publication Critical patent/BRPI0808859A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0893Assignment of logical groups to network elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/02Standardisation; Integration
    • H04L41/0233Object-oriented techniques, for representation of network management data, e.g. common object request broker architecture [CORBA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0894Policy-based network configuration management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/102Entity profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/04Network management architectures or arrangements
    • H04L41/046Network management architectures or arrangements comprising network management agents or mobile agents therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/12Network monitoring probes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0457Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply dynamic encryption, e.g. stream encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Description

Relatório Descritivo da Patente de Invenção para "SISTEMAS E MÉTODOS PARA CONFIGURAR, APLICAR E GERENCIAR POLÍTICAS DE SEGURANÇA *.
Pedido Relacionado
O presente pedido está relacionado e reivindica a prioridade dos
Pedidos US pendentes que se seguem, cujas descrições encontram-se inteiramente incorporadas ao presente à guisa de referência: "Systems and Methods for Providing Structured Policy Expressions to Represent Unstructured Data in a Network Appliance", Pedido US N2 11/685,147, depositado em 12 10 de março de 2007; "Systems and Methods for Using Object Oriented Expressions to Configure Application Security Policies" Pedido US N2 11/685,167, depositado em 12 de março de 2007; "Systems and Methods for Configuring Flow Control of Poliey Expressions"; Pedido US N0 11/685.171, depositado em 12 de março de 2007; "Systems and Methods for Configuring 15 Policy bank Invocations" Pedido US N2 11/685,180, depositado em 12 de março de 2007; "Systems and Methods for Configuring Handling of Undefined Policy Events" Pedido US N0 11/685.175, depositado em 12 de março de 2007; e "Systems and Methods for Managing Application Security Profiles" Pedido US N0 11/685.177, depositado em 12 de março de 2007.
Campo da Invenção
A presente invenção refere-se às tecnologias de rede de computador. Especificamente, a presente invenção refere-se a sistemas e métodos para configurar e aplicar políticas e ajustes em dispositivos de rede. Antecedentes da Invenção Os dispositivos e os clientes de rede podem proporcionar uma
série de funções complexas com relação ao tráfego de rede. Dentre outras funções, os dispositivos de rede podem proporcionar equilíbrio de carga, segurança de aplicação, comutação de conteúdo, descarregamento SSL, aceleração e cache. Contudo, à medida que cresce o número e complexida30 de das funções providas pelos dispositivos de rede, pode também aumentar a complexidade e a quantidade de configuração requerida para um dispositivo de rede. Ademais, a configuração imprópria ou subótima de um dispositivo de rede pode resultar na diminuição do desempenho, nos erros de rede, incompatibilidade de aplicação, e enfraquecimento de segurança.
Muitos dispositivos de rede podem utilizar uma estrutura de política para controlar as funções do dispositivo de rede. Nessas estruturas uma política pode especificar uma regra e uma ação que ditem um comportamento sob determinadas condições. Por exemplo, com o tráfego HTTP, uma estrutura de política pode permitir que um usuário configure comportamento de dispositivo com base no conteúdo dentro do fluxo HTTP. Essas políticas podem se tornar complexas dependendo do conteúdo a ser analisado e dos comportamentos procurados. Assim, pode ser necessária uma estrutura de política que permita que um usuário aplique a estrutura para o tráfego de rede com a finalidade de gravar as políticas para direcionar o comportamento do dispositivo. Similarmente, é necessário um dispositivo de rede que possa então implementar tais expressões de política estruturadas em uma maneira eficiente.
Além disso, à medida que aumenta o número de funções de dispositivo de rede, pode também aumentar o número de políticas requerido para suas configurações. Com um aumento no número de políticas, é também necessário especificar e implementar ordens de processamento dentre as políticas e grupos de políticas.
Além disso, algumas políticas desejadas usadas nos dispositivos de rede nem sempre são dotadas de resultados definidos. Por exemplo, uma política pode especificar o comportamento em resposta a um determinado campo de uma solicitação HTTP, mas pode ser indefinida nos casos onde o 25 campo não esteja presente ou o campo seja dotado de um valor inesperado. Ao mesmo tempo em que pode ser possível em alguns casos gravar as políticas que estão sempre definidas, isso pode requerer políticas adicionais ou políticas mais complexas e pode aumentar o código extra administrativo. Portanto, são necessários sistemas de configuração que permitam que um 30 usuário especifique uma ou mais ações para o caso no qual uma política seja indefinida.
Breve Sumário da Invenção A presente invenção refere-se aos sistemas e métodos para configurar e avaliar políticas que controlam o processamento de um ou mais fluxos de dados. Uma interface de configuração está descrita para permitir que os usuários especifiquem as políticas orientadas de objeto. Essas políticas orientadas de objeto podem permitir que sejam aplicadas quaisquer estruturas de dados com relação a uma carga útil de um fluxo de pacote recebido, incluindo quaisquer partes do tráfego HTTP. Uma interface de configuração pode também permitir que o usuário controle a ordem na qual as políticas e os grupos de política são executados, além de especificar as ações a serem tomadas se uma ou mais políticas estiverem indefinidas. Os sistemas e métodos para processar as políticas podem permitir o processamento eficiente de políticas orientadas de objeto pela aplicação de estruturas de dados potencialmente complexas nos fluxos de dados não estruturados. Um dispositivo pode também interpretar e processar uma série de comandos de controle de fluxo e declarações de invocação de grupo de política para determinar uma ordem dentre uma série de políticas e grupos de política. Essas configurações e processamentos de política podem permitir que um usuário configure com eficiência os comportamentos de rede complexos referentes ao equilíbrio de carga, VPNs, descarregamento SSL, comutação de conteúdo, segurança de aplicação, aceleração e cache.
Em um aspecto, a presente invenção refere-se aos sistemas e métodos de configuração de uma política de um dispositivo de rede com uma expressão orientada de objeto para especificar estrutura em uma carga útil de um fluxo de pacote recebido por um dispositivo de rede. Em uma mo25 dalidade, o método compreende proporcionar uma interface de configuração para configurar uma política para um dispositivo de rede; receber, por via da interface de configuração, uma expressão para a política, a expressão identificando (i) uma classe de objeto para aplicar uma parte da carga útil de um fluxo de pacote, e (ii) um membro da classe de objeto; e receber, por via da 30 interface de configuração, informação identificando uma ação para a política, a ação a ser tomada com base em uma avaliação da expressão.
Em um segundo aspecto, a presente invenção refere-se aos sistemas e métodos para aplicar expressão orientada de objeto em uma política para especificar estrutura em uma carga útil de um fluxo de pacote recebido pelo computador. Em uma modalidade, um método compreende: identificar, por um computador, uma política para avaliar com relação a uma carga útil 5 do fluxo de pacote recebido, a política especificando (i) uma classe de objeto para aplicar uma parte da carga útil de um fluxo de pacote, (ii) um membro da classe de objeto e (iii) uma ação; selecionar, pelo computador, uma parte da carga útil identificada pela classe de objeto; determinar, pelo computador, um valor para o membro da classe de objeto; e agir em resposta ao valor 10 determinado. Em outra modalidade, um método compreende: identificar, pelo computador, uma política compreendendo uma expressão orientada de objeto para avaliar com relação a uma carga útil de um fluxo de pacote recebido; atribuir, pelo computador, valores a uma estrutura de dados especificada pela expressão orientada de objeto com base em uma parte da carga útil; 15 realizar, pelo computador, uma avaliação da expressão com base nos valores atribuídos; e, em resposta à avaliação, agir conforme especificado pela política. Os sistemas correspondentes podem incluir um processador de pacote para receber fluxos de pacote e um mecanismo de política para avaliar uma ou mais políticas orientadas de objeto e agir de modo associado.
Em um terceiro aspecto, a presente invenção refere-se aos sis
temas e métodos para aplicar expressões orientadas de objeto em uma política para especificar estrutura em uma carga útil de um fluxo de pacote recebido pelo computador. Em uma modalidade, um método compreende, identificar, por um computador, uma política compreendendo uma expressão ori25 entada de objeto para avaliar com relação a uma carga útil de um fluxo de pacote recebido, atribuir, pelo computador, valores a uma estrutura de dados especificada pela expressão orientada de objeto com base em uma parte da carga útil; executar, pelo computador, uma avaliação da expressão com base nos valores atribuídos, alterar, em resposta à avaliação, uma parte do 30 fluxo de pacote recebido; e transmitir, pelo computador, o fluxo de pacote alterado. Os sistemas correspondentes podem incluir um processador de pacote para receber e transferir o fluxo de pacote e um mecanismo de política para avaliar uma ou mais políticas orientadas de objeto e agir de maneira associada.
Em um quarto aspecto a presente invenção refere-se aos sistemas e métodos para configurar e/ou processar uma política usada por um dispositivo de rede especificando uma ação a ser tomada na eventualidade de um elemento da política estar indefinido. Em uma modalidade, o método compreende: proporcionar uma interface de configuração para configurar uma política de um dispositivo de rede, identificar, pela interface de configuração, uma política compreendendo uma primeira ação a ser tomada com base em uma avaliação de uma expressão; receber, por via da interface de configuração, informação identificando uma secunda ação para a política, a segunda ação a ser tomada se um elemento da política estiver indefinido. Em outra modalidade, um método de aplicação de uma política identificando uma ação a ser tomada na eventualidade de um elemento da política estar indefinido compreende: identificar, por um computador, uma política para avaliar com relação a uma carga útil de um fluxo de pacote recebido, a política especificando (i) uma expressão, (ii) uma primeira ação a ser tomada com base em uma avaliação da expressão e (iii) uma segunda ação a ser tomada se um elemento da política estiver indefinido; determinar, por um computador, que um elemento da política está indefinido com relação à carga útil; e, por meio do computador em resposta à determinação, começar a agir de acordo com a segunda ação. Os sistemas correspondentes podem incluir um processador de pacote para receber um fluxo de pacote, e um mecanismo de política para avaliar uma ou mais políticas e começar a agir de maneira associada.
Em um quinto aspecto, a presente invenção refere-se aos sistemas e métodos para configurar e/ou processar controle de fluxo dentre as políticas usadas no processamento de um fluxo de pacote. Em uma modalidade, um método compreende: proporcionar uma interface de configuração 30 para configurar uma pluralidade de políticas de um dispositivo de rede, pelo menos uma política de uma pluralidade de políticas compreendendo um identificador de política; e receber, por via da interface de configuração, informação identificando uma primeira política da pluralidade de políticas, a primeira política identificando (i) uma regra compreendendo uma primeira expressão e (ii) uma primeira ação a ser tomada com base em uma avaliação da regra; e receber, por via da interface de configuração, informação 5 identificando uma segunda política da pluralidade de políticas para aplicar subsequente à primeira política se a regra avaliar para retificar. Em outra modalidade, um método inclui: identificar, por um computador uma pluralidade de políticas para aplicar em um fluxo de pacote recebido, pelo menos uma política da pluralidade de políticas compreendendo um identificador de 10 política, processar, pelo computador, uma primeira política da pluralidade de políticas, a primeira política identificando (i) uma regra compreendendo uma primeira expressão e (ii) uma primeira ação a ser tomada com base em uma avaliação da regra, e (iii) uma segunda política da pluralidade de políticas; determinar, pelo computador baseada em uma avaliação da expressão, a 15 regra avalia para retificar; e processar, pelo computador em resposta à determinação, a segunda política identificada. Os sistemas correspondentes podem incluir um processador de pacote para receber um fluxo de pacote, e um mecanismo de política para avaliar uma ou mais políticas e começar a agir de maneira associada.
Em um sexto aspecto, a presente invenção refere-se aos siste
mas e métodos para configurar e/ou processar controle de fluxo dentre os grupos de política usados em um dispositivo de rede processando um fluxo de pacote. Em uma modalidade, um método compreende: proporcionar uma interface de configuração para configurar uma pluralidade de grupos de polí25 tica para um dispositivo de rede; identificar, pela interface de configuração, uma primeira política de um primeiro grupo de política, a primeira política especificando uma regra compreendendo uma primeira expressão; e receber, por via da interface, informação identificando um segundo grupo de política a ser processado com base em uma avaliação da regra. Em outra moda30 lidade, um método compreende: identificar, por um computador, um primeiro grupo de política para aplicar em um fluxo de pacote recebido; processar, pelo computador, uma primeira política do primeiro grupo de política, a primeira política identificando (i) uma regra compreendendo uma primeira expressão, e (ii) informação identificando um segundo grupo de política; avaliar, por meio do computador, a regra; e processar, por meio do computador em resposta à avaliação da regra, o segundo grupo de política identificado.
Os sistemas correspondentes podem incluir: um processador de pacote para receber um fluxo de pacote e um mecanismo de política para avaliar uma ou mais políticas e começar a agir de maneira associada.
Em um sétimo aspecto, a presente invenção refere-se aos sistemas e métodos para configurar e/ou processar um ou mais perfis de segurança de aplicação para um dispositivo, cada perfil de segurança de aplicação especificando uma série de verificações do desempenho das funções de segurança relacionadas à aplicação. Em uma modalidade, um método compreende: proporcionar uma interface de configuração para configurar um perfil de segurança de aplicação; receber, por via da interface de configuração, um primeiro ajuste, a especificação de ajuste correspondente a uma primeira verificação do perfil de segurança de aplicação; receber, por via da interface de configuração, um segundo ajuste, a segunda especificação de ajuste correspondente a uma segunda verificação do perfil de segurança de aplicação; identificar, pela interface de configuração, uma política, a política especificando uma regra compreendendo uma primeira expressão; e receber, por via da interface, informação identificando o perfil de segurança de aplicação a ser processada com base em uma avaliação da regra. Em outra modalidade, um método pode compreender identificar, por um computador, uma primeira política para aplicar em um fluxo de pacote recebido; a primeira política especificando uma regra compreendendo uma primeira expressão e identificando um perfil de segurança do computador; avaliar, por via do computador, a regra; processar, por via da aplicação em resposta à avaliação da regra, uma primeira verificação especificada pelo perfil de segurança de aplicação; e processar, por via do computador em resposta à avaliação da regra, uma segunda verificação especificada pelo perfil de segurança de aplicação. Os sistemas correspondentes podem incluir um processador de pacote para receber um fluxo e um mecanismo de política para avaliar um ou mais perfis de segurança de aplicação e começar a agir de maneira associada.
Os detalhes das várias modalidades da invenção estão relatados nos desenhos que a acompanha e na descrição abaixo.
Breve Descrição dos desenhos
Os antecedentes e outros objetivos, aspectos, características e vantagens da invenção se tornarão claros e mais bem compreendidos pela referência à descrição que se segue tomada em combinação com os desenhos que a acompanham, nos quais:
A figura 1A é um diagrama em bloco de uma modalidade de um
ambiente de rede para um cliente acessar um servidor por via de um computador;
A figura 1B é um diagrama em bloco de outra modalidade de um ambiente de rede para distribuir um ambiente de computação de um servidor para um cliente por via de uma pluralidade de computadores;
A figura 1C é um diagrama em bloco de outra modalidade de um ambiente de rede para distribuir um ambiente de computação de um servidor para um cliente por via de uma ou mais computadores diferentes;
A figura 1D é um diagrama em bloco de uma modalidade de um ambiente para distribuir um ambiente de computação de um servidor para um cliente por via de uma rede;
As figuras 1E e 1F são diagramas em bloco de modalidades de um dispositivo de computação;
A figura 2A é um diagrama em bloco de uma modalidade de um computador para processar comunicações entre um cliente e um servidor;
A figura 2B é um diagrama em bloco de outra modalidade de um computador para otimizar, acelerar, equilibrar carga e comunicações de rotear as comunicações entre um cliente e um servidor;
A figura 3 é um diagrama em bloco de uma modalidade de um cliente para se comunicar com um servidor por via de um computador;
A figura 4A é um diagrama de um modelo objeto exemplificativo que pode ser usado para estruturar as comunicações HTTP; A figura 4B é uma tela exemplificativa de documentação para um modelo objeto que pode ser usado para estruturar as comunicações HTTP;
A figura 4C ilustra uma série de expressões orientadas de objeto exemplificativas relacionadas às comunicações HTTP;
A figura 5 ilustra um exemplo de uma política;
A figura 6 é uma tela exemplificativa que pode ser usada para configurar uma ou mais expressões;
A figura 7 é uma tela exemplificativa de uma interface de configuração que pode ser usada para configurar políticas para um dispositivo de rede;
A figura 8 é um diagrama em bloco de uma modalidade de uma interface de configuração executando em um cliente;
A figura 8A é um diagrama de fluxo de uma modalidade de um método para configurar uma expressão de política;
A figura 8B é um diagrama de fluxo de um método para proces
sar expressão orientada de objeto em um computador de rede;
A figura 8C é um diagrama de fluxo de uma modalidade de um método para usar expressões orientadas de objeto para re-escrever partes de um fluxo de pacote recebido;
A figura 9 é um diagrama de fluxo de uma modalidade de um
método para executar de elementos de política indefinidos;
A figura 10A é um diagrama de um exemplo de uma modalidade de um banco de política;
A figura 10B é um diagrama de fluxo de uma modalidade para controlar ordem de processamento em um grupo de políticas;
A figura 11A é um diagrama em bloco de uma modalidade de controle de ordem de processamento dentre uma pluralidade de grupos de política;
A figura 11B é um diagrama em bloco de uma modalidade de um método de controle de ordem de processamento dentre uma pluralidade de grupos de política;
A figura 12 ilustra uma série de telas de configuração exemplificativas que podem ser usadas para configurar um perfil de segurança de aplicação;
A figura 13A é um diagrama de fluxo de uma modalidade de um método para configurar um perfil de segurança de aplicação; e A figura 13B é um diagrama de fluxo de uma modalidade de um
método para processar um perfil de segurança de aplicação.
As características e vantagens da presente invenção se tornarão claras a partir da descrição detalhada abaixo quando tomada em combinação com os desenhos, nos quais os caracteres de referência semelhantes 10 identificam elementos correspondentes por toda parte. Nos desenhos, os números de referência semelhantes geralmente indicam elementos idênticos, funcionalidade similar, e/ou estruturalmente similar.
Descrição Detalhada da Invenção
Para fins de leitura da descrição abaixo das várias modalidades da presente invenção, a descrição que se segue das seções do relatório e seus respectivos conteúdos pode ser útil:
A seção A descreve um ambiente de rede e um ambiente de computação úteis para praticar uma modalidade da presente invenção;
A seção B descreve modalidades de um sistema e arquitetura de computador para acelerar a distribuição de um ambiente de computação para um usuário remoto;
A seção C descreve modalidades de um agente cliente para acelerar a comunicação entre um cliente e um servidor;
A seção D descreve modalidades dos sistemas e métodos para configurar e usar expressões orientadas de objeto;
A seção E descreve modalidades dos sistemas e métodos para executar expressões de políticas indefinidas;
A seção F descreve modalidades dos sistemas e métodos para configurar e usar grupos de política; e A seção G descreve modalidades dos sistemas e métodos para
configurar e usar perfis de segurança de aplicação.
A. Ambiente de Rede e de Computação Antes de comentar as especificações das modalidades dos sistemas e métodos de um computador e/ou cliente, pode ser útil comentar os ambientes de rede e de computação nos quais tais modalidades possam ser organizadas. Referindo-se à figura 1A, é descrita uma modalidade de um 5 ambiente de rede. Em uma breve visão geral, o ambiente de rede compreende um ou mais clientes 102a-102n (também geralmente referido como uma máquina(s) local 102, ou cliente(s) 102) em comunicação com um ou mais servidores 106a-106n (também geralmente referido como servidor(s) 106, ou máquina(s) remota(s) 106) por via de uma ou mais redes 104, 104' 10 (geralmente referidas como rede 104). Em algumas modalidades, um cliente 102 se comunica com um servidor 106 por via de uma aplicação 200.
Apesar da figura 1A ilustrar uma rede 104 e uma rede 104' entre os clientes 102 e os servidores 106, os clientes 102 e os servidores 106 podem estar na mesma rede 104. As redes 104 e 104' podem ser o mesmo tipo de rede ou tipos diferentes de rede. A rede 104 e/ou a rede 104' podem ser uma rede de área local (LAN), como, por exemplo, uma Intranet de companhia, uma rede de área metropolitana (MAN), ou uma rede de área ampla (WAN), como, por exemplo, a Internet ou a Web Ampla Mundial. Em uma modalidade, a rede 104' pode ser uma rede privada e a rede 104 pode ser uma rede pública. Em algumas modalidades, a rede 104 pode ser uma rede privada e a rede 104' pode ser uma rede pública. Em outra modalidade, as redes 104 e 104' podem ser redes privadas. Em algumas modalidades, os clientes 102 podem estar situados em uma sucursal de uma empresa incorporada se comunicando por via de uma conexão WAN sobre a rede 104 com os servidores 106 situados em um centro de dados incorporado.
A rede 104 e/ou 104' podem ser de qualquer tipo e/ou forma de rede e podem incluir qualquer do que se segue: uma rede ponto a ponto, uma rede de difusão, uma rede de área ampla, uma rede de área local, uma rede de telecomunicações, uma rede de comunicação de dados, uma rede 30 de computador, uma rede ATM (Modo de Transferência Assíncrono), uma rede SONET (Rede Ótica Síncrona), uma rede SDH (Hierarquia Digital Sincrona), uma rede sem fio e uma rede com fio. Em algumas modalidades, a rede 104 pode compreender um link sem fio, como, por exemplo, um canal infravermelho ou banda de satélite. A topologia da rede 104 e/ou 104' pode ser um barramento, estrela, ou topologia de rede de anel. A rede 104 e/ou 104’ e a topologia de rede podem ser de qualquer rede ou topologia de rede 5 conforme conhecido por aqueles versados na técnica capazes de suportar as operações aqui descritas.
Conforme ilustrado na figura 1A, o computador 200, que pode também ser referido como uma unidade de interface 200 ou porta 200 está ilustrado entre as redes 104 e 104'. Em algumas modalidades, o computador 200 pode estar situado na rede 104. Por exemplo, uma sucursal de uma empresa incorporada pode organizar um computador 200 na sucursal. Por exemplo, um computador 200 pode estar situado em um centro de dados incorporado. Em ainda outra modalidade, pode ser organizada na rede 104 uma pluralidade de computadores 200. Em algumas modalidades, pode ser disposta uma pluralidade de computadores 200 na rede 104'. Em uma modalidade, um primeiro computador 200 se comunica com um segundo computador 200'. Em outra modalidade, o computador 200 pode ser parte de qualquer cliente 102 ou servidor 106 na mesma rede ou em rede diferente 104, 104' como o cliente 102. Um ou mais computadores 200 podem estar situados em qualquer ponto na rede ou caminho de comunicações de rede entre um cliente 102 e um servidor 106.
Em algumas modalidades, o computador 200 compreende quaisquer dispositivos de rede fabricados por Citrix Systems, Inc., de Ft. Lauderdale1 Flórida, referidos como dispositivo NetScaIer Citrix. Em outras 25 modalidades, o computador 200 pode incluir qualquer das modalidades produto referidas como Aceleradorde Web e Biglp fabricados por F5 Networks, Inc. de Seattle1 Washington. Em outra modalidade, o computador 205 inclui quaisquer das plataformas de dispositivo de aceleração DX e/ou as séries SSL, VPN dos dispositivos, como, por exemplo, os dispositivos SA 700, SA 30 2000, SA 4000, e SA 6000 fabricados por Juniper Networks, Inc. de Sunnyvale, Califórnia. Em ainda outra modalidade, o computador 200 inclui qualquer aceleração de aplicação e/ou computadores relacionados à segurança e/ou software fabricado por Cisco Systems, Inc. de San Jose1 Califórnia, como, por exemplo, o software de módulo de serviço e os módulos de rede de "Cisco ACE Application Control Engine Module" e "Cisco AVS Series Application Velocity System".
5 Em uma modalidade, o sistema pode incluir os servidores múlti
plos agrupados logicamente 106. Nessas modalidades, os servidores de grupo lógico podem ser referidos como sítio servidor 38. Em algumas dessas modalidades, os servidores 106 podem ser geograficamente dispersos. Em alguns casos, um sítio 38 pode ser administrado como uma entidade única. 10 Em outras modalidades, o sítio servidor 38 compreende uma pluralidade de sítios servidores 38. Em uma modalidade, o sítio servidor executa uma ou mais aplicações em nome de um ou mais clientes 102.
Os servidores 106 dentro de cada sítio servidor 38 podem ser heterogêneos. Um ou mais dos servidores 106 pode operar de acordo com 15 um tipo de plataforma de sistema de operação (por exemplo, WINDOWS NT, fabricado por Microsoft Corp. de Redmond1 Washington), enquanto um ou mais dos servidores 106 pode operar de acordo com um tipo de plataforma de sistema de operação (por exemplo, Unix ou Linux). Os servidores 106 de cada sítio 38 não precisam estar fisicamente próximos de outro servidor 106 20 no mesmo sítio 38. Portanto, o grupo de servidores 106 agrupados logicamente como um sítio 38 podem ser interconectados usando conexão de rede de área ampla (WAN) ou conexão de rede de área média (MAN). Por exemplo, um sítio 38 pode incluir os servidores 106 fisicamente situados em continentes diferentes ou regiões diferentes de um continente, país, estado, 25 cidade, campus, ou dependência. As velocidades de transmissão de dados entre os servidores 106 no sítio 38 podem ser aumentadas se os servidores 106 forem conectados usando uma conexão de rede de área local (LAN) ou alguma forma de conexão direta.
Os servidores 106 podem ser referidos como um servidor arquivo, servidor de aplicação, servidor da web, servidor Proxy, ou servidor porta. Em algumas modalidades, um servidor 106 pode ser dotado da capacidade de funcionar seja como um servidor de aplicação ou como um servidor de aplicação mestre. Em uma modalidade, um servidor 106 pode incluir um Diretório Ativo. Os clientes 102 podem também ser referidos como nós ou pontos finais clientes. Em algumas modalidades, um cliente 102 é dotado da capacidade de funcionar tanto como um nó cliente buscando acesso para 5 aplicações em um servidor e como um servidor de aplicação proporcionando acesso às aplicações hospedadas para outros clientes 102a-102n.
Em algumas modalidades, um cliente 102 se comunica com um servidor 106. Em uma modalidade, o cliente 102 se comunica diretamente com um dos servidores 106 em um sítio 38. Em outra modalidade, o cliente 10 102 executa uma aplicação de proximidade de programa para se comunicar com um servidor 106 em um sítio 38. Em ainda outra modalidade, o servidor 106 proporciona a funcionalidade de um nó mestre. Em algumas modalidades, o cliente 102 se comunica com um servidor 106 no sítio 38 através de uma rede 104. Sobre a rede 104, o cliente 102 pode, por exemplo, solicitar a 15 execução de várias aplicações hospedadas pelos servidores de 106a a 106n no sítio 38 e receber saída dos resultados do desempenho de aplicação para exibir. Em algumas modalidades, apenas o nó mestre pode proporcionar a funcionalidade requerida para identificar e proporcionar informação de endereço associada ao servidor 106' que hospeda uma aplicação solicitada.
Em uma modalidade, o servidor 106 proporciona funcionalidade
de um servidor da web. Em outra modalidade, o servidor 106a recebe solicitações de um cliente 102, transfere as solicitações para um segundo servidor 106b e responde à solicitação pelo cliente 102 com uma resposta para a solicitação do servidor 106b. Em ainda outra modalidade, o servidor 106 ad25 quire uma enumeração das aplicações disponíveis para o cliente 102 e informação de endereço associada com um servidor 106 que hospeda uma aplicação identificada pela enumeração das aplicações. Em ainda outra modalidade, o servidor 106 apresenta a resposta para a solicitação para o cliente 102 usando uma interface da web. Em uma modalidade, o cliente 102 se 30 comunica diretamente com o servidor 106 para acessar a aplicação identificada. Em outra modalidade, o cliente 102 recebe dados de saída de aplicação, como, por exemplo, dados de exibição, gerados pelo desempenho da aplicação identificada no servidor 106.
A figura 1B descreve uma modalidade de um ambiente de rede desenvolvendo múltiplos computadores 200. Um primeiro computador 200 pode ser desenvolvido em uma primeira rede 104 e um segundo computador 5 200' pode em uma segunda rede 104'. Por exemplo, uma empresa incorporada pode desenvolver um primeiro computador 200 em uma sucursal e um segundo computador 200’ em um centro de dados. Em outra modalidade, o primeiro computador 200 e o segundo computador 200' são desenvolvidos na mesma rede 104. Por exemplo, um primeiro computador 200 pode ser 10 desenvolvido para um primeiro sítio servidor 38, e um segundo computador 200 pode ser desenvolvido para um segundo sítio servidor 38'. Em outro exemplo, o primeiro computador 200 pode ser desenvolvido em uma sucursal enquanto o segundo computador 200' é desenvolvido em uma segunda sucursal'. Em algumas modalidades, o primeiro computador 200 e o segundo 15 computador 200' funcionam em cooperação ou em combinação um com o outro para acelerar o tráfego de rede ou a transferência de aplicação e de dados entre um cliente e um servidor.
A figura 1C descreve outra modalidade de um ambiente de rede desenvolvendo o computador 200 com um ou mais outros tipos de computadores, tais como entre uma ou mais computadores de otimização WAN 205, 205'. Por exemplo, está ilustrado um primeiro computador de otimização WAN 205 entre as redes 104 e 104' e um segundo computador de otimização WAN 205' pode ser desenvolvido entre o computador 200 e um ou mais servidores 106. À guisa de exemplo, uma empresa incorporada pode desenvolver um primeiro computador de otimização WAN 205 em uma sucursal e um segundo computador de otimização WAN 205' em um centro de dados. Em algumas modalidades, o computador 205 pode estar situado na rede 104'. Em outras modalidades, o computador 205' pode estar situada na rede 104. Em algumas modalidades, o computador 205' pode estar situado na rede 104' ou de rede 104". Em uma modalidade, o computador 205 e 205' estão na mesma rede. Em outra modalidade, o computador 205 e 205' estão em redes diferentes. Em outro exemplo, um primeiro computador de otimização WAN 205 pode ser desenvolvida para um primeiro sítio servidor 38 e um segundo computador de otimização WAN 205' para um segundo sítio servidor 38'.
Em uma modalidade, o computador 205 é um dispositivo para acelerar, otimizar ou de outro modo aperfeiçoar o desempenho, operação, ou qualidade do serviço de um tipo e forma de tráfego de rede para e/ou de uma conexão WAN. Em algumas modalidades, o computador 205 é um Proxy de aumento de desempenho. Em outras modalidades, o computador 205 é qualquer tipo e forma de dispositivo de otimização ou aceleração WAN, algumas vezes referido como um controlador de otimização WAN. Em uma modalidade, o computador 205 é quaisquer das modalidades de produto referidas como "WANScaler" fabricado por Citrix Systems, Inc. de Ft. Lauderdale, Florida. Em outras modalidades, o computador 205 inclui quaisquer das modalidades de produto referidas como controlador de link BIG-IP e WANjet fabricados por F5 Networks, Inc. de Seattle, Washington. Em outras modalidades, o computador 205 inclui quaisquer plataformas de dispositivo de aceleração WX e WXC fabricadas por Juniper Networks, Inc. de Sunnyvale, Califórnia. Em algumas modalidades, o computador 205 inclui qualquer linha de ponta de aço dos computadores de otimização WAN fabricados por Riverbed Technology de São Francisco, Califórnia. Em outras modalidades, o computador 205 inclui quaisquer dos dispositivos relacionados WAN fabricados por Expand Networks Inc. de Roseland, New Jersey. Em uma modalidade, o computador 205 inclui quaisquer computadores relacionados WAN fabricados por Packeteer Inc. de Cupertino, Califórnia, como, por exemplo, as modalidades do produto PacketShaper, iShared, and SkyX proporcionadas por Packeteer. Em ainda outra modalidade, o computador 205 inclui quaisquer computadores relacionados WAN e/ou software fabricados por Cisco systems, Inc. de San Jose, Califórnia, como, por exemplo, o software e os módulos de rede dos Serviços de Aplicação de Rede de área Ampla Cisco e os computadores de mecanismo de Rede de área Ampla.
Em uma modalidade, o computador 205 proporciona serviços de aplicação e aceleração de dados para sucursal ou escritórios remotos. Em uma modalidade, o computador 205 inclui otimização de Serviços de Arquivo de Área Ampla (WAFS). Em outras modalidades, o computador 205 acelera a distribuição dos arquivos, como, por exemplo, por via do protocolo do Sistema de Arquivo da Internet Comum (CIFS). Em outras modalidades, o com5 putador 205 proporciona cache na memória e/ou armazenamento para acelerar a distribuição da aplicação e de dados. Em uma modalidade, o computador 205 proporciona compressão de tráfego de rede em qualquer nível da pilha de rede ou em qualquer protocolo ou camada de rede. Em outra modalidade, o computador 205 proporciona otimizações de protocolo de camada 10 de transporte, controle de fluxo, aumentos ou modificações de desempenho e/ou gerenciamento para acelerar a distribuição da aplicação e de dados sobre uma conexão WAN. Por exemplo, em uma modalidade, o computador 205 proporciona otimizações de Protocolo de Controle de Transporte (TCP). Em outras modalidades, o computador 205 proporciona otimizações, contro15 Ie de fluxo, aumentos ou modificações de desempenho e/ou gerenciamento para qualquer sessão ou protocolo de camada de aplicação.
Em outra modalidade, o computador 205 codificou qualquer tipo e formulário de dados ou informação em costume ou padrão TCP e/ou campos de registro inicial IP ou campos de opção de pacote de rede para anun20 ciar a presença, funcionalidade ou capacidade de outro computador 205'. Em outra modalidade, um computador 205' pode se comunicar com outro computador 205' usando dados codificados tanto no TCP quanto nos campos de registro inicial ou opções IP. Por exemplo, o computador pode usar a opção(s) TCP ou campos de registro inicial ou opções IP para comunicar um 25 ou mais parâmetros a serem usados pelos computadores 205, 205' no desempenho de funcionalidade, como, por exemplo, aceleração WAN, ou para trabalhar em combinação uma com a outra.
Em algumas modalidades, o computador 200 preserva qualquer informação codificada no TCP e/ou registro inicial e/ou campos de opção IP comunicados entre os computadores 205 e 205'. Por exemplo, o computador 200 pode finalizar uma conexão de camada de transporte atravessando o computador 200, como, por exemplo, uma conexão de camada de transporte dentre os computadores 205 e 205' atravessando um cliente e um servidor. Em uma modalidade, o computador 200 identifica e preserva qualquer informação codificada em um pacote de camada de transporte transmitida por um primeiro computador 205 por via de uma primeira conexão de camada de 5 transporte e comunica um pacote de camada de transporte com a informação codificada para um segundo computador 205' por via de uma segunda conexão de camada de transporte.
A figura 1D descreve um ambiente de rede para distribuir e/ou operar um ambiente de computação em um cliente 102. Em algumas modalidades, um servidor 106 inclui um sistema de distribuição de aplicação 190 para distribuir um ambiente de computação ou uma aplicação e/ou arquivo de dados para um ou mais clientes 102. Em uma breve visão geral, um cliente 10 está em comunicação com um servidor 106 por via da rede 104, 104' e do computador 200. Por exemplo, o cliente 102 pode residir em um escritório remoto de uma companhia, por exemplo, uma sucursal, e o servidor 106 pode residir em um centro de dados incorporado. O cliente 102 compreende um agente cliente 120, e um ambiente de computação 15. O ambiente de computação 15 pode executar ou operar uma aplicação que acesse, processe ou use um arquivo de dados. O ambiente de computação 15, a aplicação e/ou o arquivo de dados podem ser distribuídos por via do computador 200 e/ou do servidor 106.
Em algumas modalidades, o computador 200 acelera a distribuição de um ambiente de computação 15, ou qualquer parte do mesmo, para um cliente 102. Em uma modalidade, o computador 200 acelera a distribui25 ção do ambiente de computação 15 pelo sistema de distribuição de aplicação 190. Por exemplo, as modalidades aqui descritas podem ser usadas para acelerar a distribuição de uma aplicação de fluxo contínuo e arquivo de dados processável pela aplicação de um centro de dados incorporado central para um local usuário remoto, como, por exemplo, uma sucursal da 30 companhia. Em outras modalidades, o computador 200 acelera o tráfego de camada de transporte entre um cliente 102 e um servidor 106. O computador 200 pode proporcionar técnicas de aceleração para acelerar qualquer carga útil de camada de transporte de um servidor 106 para um cliente 102, como, por exemplo: 1) fusão de conexão de camada de transporte, 2) multiplexação de conexão de camada de transporte, 3) utilização de memória temporária de protocolo de controle de transporte, 4) compressão e 5) cache. Em 5 algumas modalidades, o computador 200 proporciona equilíbrio de carga dos servidores 106 em resposta às solicitações dos clientes 102. Em outras modalidades, o computador 200 age como um servidor Proxy ou de acesso para proporcionar acesso para um ou mais servidores 106. Em outra modalidade, o computador 200 proporciona uma conexão de rede privada virtual 10 segura de uma primeira rede 104 do cliente 102 para a segunda rede 104’ do servidor 106, como, por exemplo, uma conexão SSL VPN. Em ainda outra modalidade, o computador 200 proporciona segurança firewall de aplicação, controle e gerenciamento da conexão e comunicação entre um cliente 102 e um servidor 106.
Em algumas modalidades, o sistema de gerenciamento de dis
tribuição de aplicação 190 proporciona técnicas de distribuição de aplicação para distribuir um ambiente de computação para um desktop de um usuário, remoto ou de outro modo, com base em uma pluralidade de métodos de desempenho e com base em quaisquer políticas de autenticação e autorização 20 aplicadas por via de um mecanismo de política 195. Com essas técnicas, um usuário remoto pode obter um ambiente de computação e acesso para as aplicações armazenadas no servidor e arquivos de dados de um dispositivo conectado de rede 100. Em uma modalidade, o sistema de distribuição de aplicação 190 pode residir ou executar em um servidor 106. Em outra moda25 lidade, o sistema de distribuição de aplicação 190 pode residir ou executar em uma pluralidade de servidores 106a a 106n. Em algumas modalidades, o sistema de distribuição de aplicação 190 pode executar em sítio servidor 38. Em uma modalidade, o servidor 106 executando o sistema de distribuição de aplicação 190 pode também armazenar a aplicação e o arquivo de dados. 30 Em outra modalidade, um primeiro conjunto de um ou mais servidores 106 pode executar o sistema de distribuição de aplicação 190, e um servidor diferente 106n pode armazenar ou proporcionar a aplicação e o arquivo de dados. Em algumas modalidades, cada sistema de distribuição de aplicação 190, a aplicação, e o arquivo de dados podem residir ou estar situados em servidores diferentes. Em ainda outra modalidade, qualquer parte do sistema de distribuição de aplicação 190 pode residir, executar ou ser armazenado 5 em ou distribuído para o computador 200, ou uma pluralidade de computadores.
O cliente 102 pode incluir um ambiente de computação 15 para executar uma aplicação que use ou processe um arquivo de dados. O cliente 102 por via das redes 104, 104' e do computador 200 pode solicitar uma a10 plicação e arquivo de dados do servidor 106. Em uma modalidade, o computador 200 pode transferir uma solicitação do cliente 102 para o servidor 106. Por exemplo, o cliente 102 pode não ser dotado da aplicação e do arquivo de dados armazenados ou acessíveis no local. Em resposta à solicitação, o sistema de distribuição de aplicação 190 e/ou o servidor 106 podem distribuir 15 a aplicação e o arquivo de dados para o cliente 102. Por exemplo, em uma modalidade, o servidor 106 pode transmitir a aplicação como um fluxo de aplicação para operar no ambiente de computação 15 no cliente 102.
Em algumas modalidades, o sistema de distribuição de aplicação 190 compreende qualquer parte do Citrix Access Suite™ pela Citrix Sys20 tems, Inc., como, por exemplo, o "MetalFrame" ou Citrix Presentation Server™ e/ou quaisquer dos Serviços Terminal de Windows Microsoft® fabricados pela Microsoft Corporation. Em uma modalidade, o sistema de distribuição de aplicação 190 pode distribuir uma ou mais aplicações para os clientes 102 ou usuários por via de um protocolo de exibição remoto ou de outro 25 modo por via de base remota ou computação de base remota. Em outra modalidade, o sistema de distribuição de aplicação 190 pode distribuir uma ou mais aplicações para os clientes ou usuários por via de fluxo contínuo da aplicação.
Em uma modalidade, o sistema de distribuição de aplicação 190 inclui um mecanismo de política 195 para controlar e gerenciar o acesso para, seleção de métodos de desempenho de aplicação e a distribuição de aplicações. Em algumas modalidades, o mecanismo de política 195 pode determinar a uma ou mais aplicações que um usuário ou cliente 102 pode acessar. Em outra modalidade, o mecanismo de política 195 determina como a aplicação deve ser distribuída para o usuário ou cliente 102, por exemplo, o método de desempenho. Em algumas modalidades, o sistema de distribui5 ção de aplicação 190 proporciona uma pluralidade de técnicas de distribuição das quais selecionar um método de desempenho de sistema, como, por exemplo, fluxo contínuo ou distribuição de aplicação localmente para o cliente 120 para desempenho local.
Em uma modalidade, um cliente 102 solicita o desempenho de um programa de aplicação e o sistema de distribuição de aplicação 190 compreendendo um servidor 106 seleciona um método de desempenho do programa de aplicação. Em algumas modalidades, o servidor 106 recebe credenciais do cliente 102. Em outra modalidade, o servidor 106 recebe uma solicitação de uma enumeração das aplicações disponíveis do cliente 102. Em uma modalidade, em resposta à solicitação ou recebimento de credenciais, o sistema de distribuição de aplicação 190 enumera uma pluralidade de programas de aplicação disponíveis para o cliente 102. O sistema de distribuição de aplicação 190 recebe uma solicitação para executar uma aplicação enumerada. O sistema de distribuição de aplicação 190 seleciona um de uma série predeterminada de métodos para executar a solicitação enumerada, por exemplo, em resposta a uma política de um mecanismo de política. O sistema de distribuição de aplicação 190 pode selecionar um método de desempenho da aplicação que possibilite que o cliente 102 receba dados de saída de aplicação gerados pelo desempenho do programa de aplicação em um servidor 106. O sistema de distribuição de aplicação 190 pode selecionar um método de desempenho da aplicação que possibilite que o mecanismo local 10 execute o programa de aplicação no local após o recebimento de uma pluralidade de arquivos de aplicações compreendendo a aplicação. Em ainda outra modalidade, o sistema de distribuição de aplicação 190 pode selecionar um método de desempenho da aplicação para fluir a aplicação por via da rede 104 para o cliente 102.
Um cliente 102 pode executar, operar ou de outro modo proporcionar uma aplicação, que pode ser qualquer tipo e/ou forma de software, programa, ou instruções executáveis como, por exemplo, qualquer tipo e/ou forma de navegador da web, cliente baseado na web, aplicação de servidor cliente, um cliente de computação fino, um controle Ativo X, ou um utilitário Java, ou qualquer outro tipo e/ou forma de instruções executáveis capazes de executar no cliente 102. Em algumas modalidades, a aplicação pode ser uma aplicação baseada em servidor ou baseada em um remoto executada em nome do cliente 102 em um servidor 106. Em uma modalidade, o servidor 106 pode exibir saída para o cliente 102 usando qualquer cliente fino ou protocolo de exibição remota, como, por exemplo, o protocolo da Arquitetura de Computação Independente (ICA) fabricado por Citrix Systems, Inc. de Ft. Lauderdale, Florida ou o Protocolo Desktop Remoto (RDP) fabricado pela Microsoft Corporation de Redmond, Washington. A aplicação pode ser qualquer tipo de protocolo e pode ser, por exemplo, um cliente HTTP, um cliente FTP, um cliente Oscar, ou um cliente Telnet. Em outras modalidades, a aplicação compreende qualquer tipo de software relacionado às comunicações VoiP, como, por exemplo, um telefone IP suave. Em modalidades adicionais, a aplicação compreende qualquer aplicação relacionada às comunicações de dados em tempo real, como, por exemplo, as aplicações para fluir vídeo e/ou áudio.
Em algumas modalidades, o servidor 106 ou um sítio servidor 38 podem estar executando uma ou mais aplicações, como, por exemplo, uma aplicação proporcionando uma computação de cliente fino ou aplicações de apresentação de exibição remota. Em uma modalidade, o servidor 106 ou o 25 sítio servidor 38 executa como uma aplicação, qualquer parte do Citrix Access Suite™ por Citrix Sistems, Inc., como, por exemplo, o "MetaFrame" ou o Citrix Presentation Server™, e/ou quaisquer Serviços Terminais Windows Microsoft® fabricados pela Microsoft Corporation. Em uma modalidade, a aplicação é um cliente ICA, desenvolvido por Citrix Sistems, Inc. de Ft. Lau30 derdale, Florida. Em outras modalidades, a aplicação inclui um cliente Desktop Remoto (RDP), desenvolvido pela Microsoft Corporation de Redmond, Washington. Ainda, o servidor 106 pode executar uma aplicação, que, por exemplo, pode ser um servidor de aplicação proporcionando serviços de email como, por exemplo, "Microsoft Exchange", fabricado pela Microsoft Corporation de Redmond, Washington, um servidor da web ou Internet, ou um servidor compartilhando um desktop, ou um servidor de colaboração. Em 5 algumas modalidades, qualquer aplicação pode compreender qualquer tipo de serviço ou produto hospedado, como, por exemplo, GoToMeeting™ proporcionado por Citrix Online Division Inc. de Santa Barbara, Califórnia, WebEX™ proporcionado por WebEx, Inc. de Santa Clara, Califórnia, ou "Microsoft Office Live Meeting'' proporcionado pela Microsoft Corporation de Red10 mond, Washington.
Ainda com relação à figura 1 D, uma modalidade do ambiente de rede pode incluir um servidor de monitoramento 106A. O servidor de monitoramento 106A pode incluir qualquer tipo e forma de serviço de monitoramento de desempenho 198. O serviço de monitoramento de desempenho 198 15 pode incluir software e/ou hardware de monitoramento, medição e/ou gerenciamento, incluindo coleta de dados, agregação, análise, gerenciamento e relatório. Em uma modalidade, o serviço de monitoramento de desempenho 198 inclui um ou mais agentes de monitoramento 197. O agente de monitoramento 197 inclui qualquer software, hardware ou combinação dos mesmos 20 para executar monitoramento, gerenciamento e atividades de coleta de dados em um dispositivo, como, por exemplo, um cliente 102, servidor 106 ou um computador 200, 205. Em algumas modalidades, o agente de monitoramento 197 inclui qualquer tipo ou forma de roteiro, como, por exemplo, um roteiro "Visual Basic", ou "Java roteiro". Em uma modalidade, o agente de 25 monitoramento 197 executa de modo transparente para qualquer aplicação e/ou usuário do dispositivo. Em algumas modalidades, o agente de monitoramento 197 é instalado e operado sem obstrução para a aplicação ou cliente. Em ainda outra modalidade, o agente de monitoramento 197 é instalado e operado sem qualquer instrumentação para a aplicação ou o dispositivo.
Em algumas modalidades, o agente de monitoramento 197 mo
nitora, mede e coleta dados em uma frequência predeterminada. Em outras modalidades, o agente de monitoramento 197 monitora, mede e coleta dados com base na detecção de qualquer tipo ou forma de evento. Por exemplo, o agente de monitoramento 197 pode coletar dados ao detectar uma solicitação para uma página da web ou o recebimento de uma resposta HTTP. Em outro exemplo, o agente de monitoramento 197 pode coletar da5 dos ao detectar quaisquer eventos de entrada de usuário. O agente de monitoramento 197 pode relatar ou proporcionar quaisquer dados monitorados, medidos ou coletados para o serviço de monitoramento 198. Em uma modalidade, o agente de monitoramento 197 transmite informação para o serviço de monitoramento 198 de acordo com um cronograma ou uma frequência 10 predeterminada. Em outra modalidade, o agente de monitoramento 197 transmite informação para o serviço de monitoramento 198 ao detectar um evento.
Em algumas modalidades, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 realiza o monitoramento e a medição do 15 desempenho de qualquer recurso de rede ou elemento de infraestrutura de rede, como, por exemplo, um cliente, servidor, sítio servidor, computador 200, computador 205, ou conexão de rede. Em uma modalidade, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 realiza o monitoramento e medição de desempenho de qualquer conexão de camada de 20 transporte, como, por exemplo, uma conexão TCP ou UDP. Em outra modalidade, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 monitora e mede a latência de rede. Em ainda uma modalidade, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 monitora e mede a utilização de largura de banda.
Em outras modalidades, o serviço de monitoramento 198 e/ou o
agente de monitoramento 197 monitora e mede os tempos de resposta de usuário final. Em algumas modalidades, o serviço de monitoramento 198 executa o monitoramento e executa medição de uma aplicação. Em outra modalidade, o serviço de monitoramento e/ou o agente de monitoramento 30 197 realiza o monitoramento e executa medição de qualquer sessão ou conexão para a aplicação. Em uma modalidade, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 monitora e mede o desempenho de um navegador. Em outra modalidade, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 monitora e mede o desempenho das transações com base HTTP. Em algumas modalidades, o agente de monitoramento 197 monitora e mede o desempenho de uma Voz sobre uma apli5 cação ou sessão IP (VolP). Em outras modalidades, o serviço de monitoramento 198 e/ou agente de monitoramento 197 monitora e mede o desempenho de uma aplicação de protocolo de exibição remoto, como, por exemplo, um cliente ICA ou um cliente RDP. Em ainda outra modalidade, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 monitora e mede o 10 desempenho de qualquer tipo ou forma de meio de fluxo contínuo. Em ainda uma modalidade adicional, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 monitora e mede o desempenho de uma aplicação hospedada ou de um modelo de distribuição de um Software Como Um Serviço (SaaS).
Em algumas modalidades, o serviço de monitoramento 198 e/ou
o agente de monitoramento 197 desempenha o monitoramento e a medição de desempenho de uma ou mais transações, solicitações ou respostas relacionada à aplicação. Em outras modalidades, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 monitora e mede qualquer parte de 20 uma pilha de camada de aplicação, como, por exemplo, quaisquer chamadas .NET ou J2EE. Em uma modalidade, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 monitora e mede a base de dados ou as transações SQL. Em ainda outra modalidade, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 monitora e mede qualquer método, 25 função ou chamada de interface de programação de aplicação (API).
Em uma modalidade, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 realiza o monitoramento e desempenho de medição de uma distribuição de aplicação e/ou de dados de um servidor para um cliente por via de um ou mais computadores, como, por exemplo, um 30 computador 200 e/ou aplicação 205. Em algumas modalidades, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 monitora e mede o desempenho da distribuição de uma aplicação virtual. Em outras modalidades, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 monitora e mede o desempenho da distribuição de uma aplicação de fluxo contínuo. Em outra modalidade, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 monitora e mede o desempenho da distribuição 5 de uma aplicação desktop para um cliente e/ou a execução de uma aplicação desktop no cliente. Em outra modalidade, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 monitora e mede o desempenho de uma aplicação de cliente/servidor.
Em uma modalidade, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 é projetado e construído para proporcionar gerenciamento de desempenho de aplicação para o sistema de distribuição de aplicação 190. Por exemplo, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 pode monitorar, medir e gerenciar o desempenho da distribuição de aplicação por via do Servidor de Apresentação Citrix. Nesse exemplo, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 monitora as sessões individuais ICA. O serviço de monitoramento 198 e/ou o agente de monitoramento 197 pode medir o uso de sistema total e por sessão, bem como desempenho de aplicação e de rede. O serviço de monitoramento 198 e/ou o agente de monitoramento 197 pode identificar os servidores ativos para um determinado usuário e/ou sessão de usuário. Em algumas modalidades, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 monitora as conexões finais de parte traseira entre o sistema de distribuição de aplicação 190 e uma aplicação e/ou servidor de base de dados. O serviço de monitoramento 198 e/ou o agente de monitoramento 197 pode medir a latência de rede, retardo e volume por sessão de usuário ou sessão ICA.
Em algumas modalidades, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 mede e monitora o uso de memória para o sistema de distribuição de aplicação 190, como, por exemplo, o uso de me30 mória total, por sessão de usuário e/ou por processo. Em outras modalidades, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 mede e monitora o uso da CPU o sistema de distribuição de aplicação 190, como, por exemplo, o uso da CPU total, por sessão de usuário e/ou por processo. Em outra modalidade, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 mede e monitora o tempo requerido para entrada no sistema para uma aplicação, um servidor, ou o sistema de distribuição de 5 aplicação, como, por exemplo, o Servidor de Apresentação Citrix. Em uma modalidade, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 mede e monitora a duração de um usuário dentro de uma aplicação, um servidor, ou no sistema de distribuição de aplicação 190. Em algumas modalidades, o serviço de monitoramento 198 e/ou o agente de monitora10 mento 197 mede e monitora as contagens de sessão ativa e inativa para uma aplicação, um servidor ou sessão de sistema de distribuição de aplicação. Em ainda oura modalidade, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 mede e monitora a latência de sessão de usuário.
Em ainda outra modalidade, o serviço de monitoramento 198
e/ou o agente de monitoramento 197 mede e monitora as medidas e monitora qualquer tipo e forma de métricas de servidor. Em uma modalidade, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 mede e monitora as métricas relacionadas ao sistema de memória, uso da CPU, e 20 armazenamento de disco. Em outra modalidade, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 mede e monitora as métricas relacionadas às falhas de página por segundo. Em outras modalidades, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 mede e monitora as métricas de tempo de viagem circular. Em ainda outra modalidade, 25 o serviço de monitoramento 198 e/ou o agente de monitoramento 197 mede e monitora as métricas relacionadas às quebras, erros e/ou modos de uma aplicação.
Em algumas modalidades, o serviço de monitoramento 198 e o agente de monitoramento 197 incluem qualquer das modalidades de produto referidas como "EdgeSight" fabricadas por Citrix Systems, Inc. de Ft. Lauderdale, Florida. Em outra modalidade, o serviço de monitoramento 197 e/ou o agente de monitoramento 198 inclui qualquer parte das modalidades de produto referido como o conjunto de produto "True View" fabricado pela Symphoniq Corporation de Palo Alto, Califórnia. Em uma modalidade, o serviço de monitoramento 197 e/ou o agente de monitoramento 198 inclui qualquer parte das modalidades do produto referido como conjunto de produto 5 "TeaLeaf CX" fabricado por TeaLeaf Technology Inc. de São Francisco, Califórnia. Em outras modalidades, o serviço de monitoramento 198 e/ou o agente de monitoramento 197 inclui qualquer parte dos produtos de gerenciamento de serviço de empresa, como, por exemplo, os produtos "BMC Performance Manager" e "Patrol", fabricados por BMC Software, Inc., de Hous10 ton, Texas.
O cliente 102, o servidor 106, e o computador 200 podem ser desenvolvidos e/ou executados em qualquer tipo e forma de dispositivo de computação, como, por exemplo, um computador, dispositivo de rede ou aplicação capaz de comunicar qualquer tipo ou forma de rede e realizar as 15 operações aqui descritas. As figuras 1E e 1F descrevem diagramas em bloco de um dispositivo de computação 100 útil para praticar uma modalidade do cliente 102, do servidor 106 ou do computador 200. Conforme ilustrado nas figuras 1E e 1F, cada dispositivo de computação 100 inclui uma unidade de processamento central 101, e uma unidade de memória principal 122. 20 Conforme ilustrado na figura 1E, um dispositivo de computação 100 pode incluir um dispositivo de exibição visual 124, um teclado 126 e/ou um dispositivo apontador 127, como, por exemplo, um mouse. Cada dispositivo de computação 100 pode incluir elementos opcionais adicionais, como, por exemplo, um ou mais dispositivos de entrada / saída 13a-130b (geralmente 25 referidos usando a referência numérica 130), e uma memória cache 140 em comunicação com a unidade de processamento central 101.
A unidade de processamento central 101 é qualquer circuito lógico que responda a e processe instruções recuperadas da unidade de memória principal 122. Em muitas modalidades, a unidade de processamento 30 central é proporcionada por uma unidade microprocessadora, como, por exemplo: aquelas fabricadas por Intel Corporation de Mountain View, Califórnia; aquelas fabricadas por Motorola Corporation de Schamburg, Illinois; aquelas fabricadas por Transmeta Corporation de Santa Clara, Califórnia, o processador RS/6000, aquelas fabricadas por International Business Machines de White Plains, New York. Ou aquelas fabricadas por Advanced Micro Devices de Sunnyvale, Califórnia. O dispositivo de computação 100 pode ser 5 baseado em qualquer desses processadores, ou qualquer outro processador capaz de operar conforme aqui descrito.
A unidade de memória principal 122 pode ser um ou mais chip de memória capaz de armazenar dados e permitir que qualquer local de armazenamento seja diretamente acessado pelo microprocessador 101, como, 10 por exemplo, a memória de acesso aleatório Estática (SRAM), SRAM Intermitente ou SRAM SynchBurst (BSRAM), memória de acesso aleatório Dinâmica (DRAM), DRAM Modo de Página Rápida (FPM DRAM), DRAM Aumentada (EDRAM), RAM de Saída de Dados Estendida (EDO RAM), DRAM de saída de Dados Estentida (EDO DRAM), DRAM de Saída de Dados Es15 tendida Intermitente (BEDO DRAM), DRAM Aumentada (EDRAM), DRAM síncrona (SDRAM), JEDEC SRAM, PC100 SDRAM, SDRAM de Taxa de Dados Dupla (DDR SDRAM), SDRAM Aumentada (ESDRAM), DRAM Synclink (SLDRAM), DRAM Rambus Direta (DRDRAM), ou RAM Ferroelétrica (FRAM). A memória principal 122 pode ser baseada em qualquer dos chips 20 de memória acima descritos, ou quaisquer outros chips de memória disponíveis capazes de operar conforme aqui descrito. Na modalidade ilustrada na figura 1E, o processador 101 se comunica com a memória principal 122 por via de um barramento de sistema 150 (descrito mais detalhado abaixo). A figura 1E descreve uma modalidade de um dispositivo de computação 100 25 na qual o processador se comunica diretamente com a memória principal 122 por via de uma porta de memória 103. Por exemplo, na figura 1F a memória principal 122 pode ser DRDRAM.
A figura 1F descreve uma modalidade na qual o processador principal 101 se comunica diretamente com a memória cache 140 por via de um barramento secundário, algumas vezes referido como um barramento traseiro. Em outras modalidades, o processador principal 101 se comunica diretamente com a memória cache 140 usando o barramento de sistema 150. A memória cache 140 é tipicamente dotada de um tempo de resposta mais rápido do que a memória principal 122 e é tipicamente proporcionada por SRAM, BSRAM ou EDRAM. Na modalidade ilustrada na figura 1E, o processador 101 se comunica com vários dispositivos de Entrada / Saída 130 por via de um barramento de sistema local 150. Podem ser usados vários barramentos para conectar a unidade de processamento central 101 em qualquer dos dispositivos de Entrada I Saída 130, incluindo um barramento VESA VL, um barramento ISA, um barramento EISA, um barramento de Arquitetura de Microcanal (MCA), um barramento PCI, um barramento PCI-X, um barramento PCI Expresso, ou um barramento NuBus. Para as modalidades nas quais o dispositivo de Entrada / Saída é um monitor de vídeo 124, o processador 101 pode usar uma Porta Gráfica Avançada (AGP) para se comunicar com o monitor 124. A figura 1F descreve uma modalidade de um computador 100 na qual o processador principal 101 se comunica diretamente com o dispositivo de Entrada / Saída por via do HyperTransport, Entrada / Saída Rápida, ou InfiniBand. A figura 1F também descreve uma modalidade na qual os barramentos locais e as comunicações diretas são misturados: o processador 101 se comunica com o dispositivo de Entrada / Saída 130 usando um barramento de interconexão local ao mesmo tempo em que se comunica diretamente com o dispositivo de Entrada / Saída 130.
O dispositivo de computação 100 pode suportar qualquer dispositivo de instalação adequado 116, como, por exemplo, uma unidade de disquete para receber disquetes como, por exemplo, de disquetes de 8.89 centímetros (3,5 polegadas), disquetes de 13.33500 centímetros (3,5 polega25 das), ou disquetes ZIP, uma unidade de CD-ROM, uma unidade de CDR/RW, uma unidade de DVD-ROM, unidades de fita de vários formatos, dispositivo USB, unidade rígida ou qualquer dispositivo adequado para instalar software e programas como, por exemplo, qualquer agente cliente 120, ou parte do mesmo. O dispositivo de computação 100 pode também compreen30 der um dispositivo de armazenamento 128, como, por exemplo, uma ou mais unidades de disco rígido ou arranjos redundantes de discos independentes, para armazenar um sistema de operação e outro software relacionado, e para armazenar programas de software de aplicação como, por exemplo, qualquer programa relacionado ao agente cliente 120. Opcionalmente, pode ser usado qualquer dos dispositivos de instalação 116 como o dispositivo de armazenamento 128. Adicionalmente, o sistema de operação e o software 5 podem executar de um meio "bootable", por exemplo, um CD "bootable", como, por exemplo, KNOPPIX®, um CD "bootable" para GNU/Linux que esteja disponível como distribuição GNU/Linux de "Knoppix.net".
Além disso, o dispositivo de computação 100 pode incluir uma interface de rede 118 para interfacear para uma Rede de área Local (LAN), Rede de Área Ampla (WAN) ou a Internet através de uma variedade de conexões incluindo, mas não se limitando a, linhas de telefone padrão, links LAN ou WAN (por exemplo, 802.11, Ti, T3, 56kb, X.25), conexões de banda larga (por exemplo, ISDN, Relé de Estrutura, ATM), conexões sem fio, ou alguma combinação de qualquer ou de todas acima. A interface de rede 118 pode compreender um adaptador de rede embutido, um cartão de interface de rede, um cartão de rede PCMCIA, um adaptador de rede de barramento de cartão, um adaptador de rede sem fio, um adaptador de rede USB, modem ou qualquer outro dispositivo adequado para interfacear o dispositivo de computação 100 para qualquer tipo de rede capaz de comunicação e desempenho das operações aqui descritas. Pode estar presente uma ampla variedade de dispositivo de Entrada / Saída 130a a 130n no dispositivo de computação 100. Os dispositivos de entrada incluem teclados, mouses, trackpads, trackballs, microfones, e mesas digitalizadoras de desenho. Os dispositivos de saída incluem monitores de vídeo, alto-falantes, impressoras a jato de tinta, impressoras a laser, e impressoras de sublimação de tintura. Os dispositivos de Entrada / Saída 130 podem ser controlados por um controlador de Entrada / Saída 123 conforme ilustrado na figura 1E. O controlador de Entrada I Saída pode controlar um ou mais dispositivos de Entrada / Saída como, por exemplo, o teclado 126 e o dispositivo apontador 127, por exemplo, um mouse ou uma caneta ótica. Além disso, um dispositivo de Entrada / Saída pode também proporcionar armazenamento 128 e/ou um meio de instalação 116 para o dispositivo de computação 100. Em ainda outra modalidade, o dispositivo de computação 100 pode proporcionar conexões USB para receber os dispositivos de armazenamento USB manuais como, por exemplo, fio de Unidade de Flash USB dos dispositivos fabricados por Twintech Industry, Inc. de Los Alamitos, Califórnia.
Em algumas modalidades, o dispositivo de computação 100 po
de compreender ou estar conectado nos dispositivos de exibição múltiplos 124a a 124n, cujo cache pode ser do mesmo tipo ou forma e/ou de tipo ou forma diferente. Como tal, quaisquer dos dispositivos 130a a 130n e/ou o controlador de Entrada / Saída 123 pode compreender qualquer tipo e/ou 10 forma de hardware, software adequados ou combinações de hardware e software para suportar, possibilitar ou proporcionar a conexão e o uso dos dispositivos de exibição múltiplos 124a a 124n pelo dispositivo de computação 100. Por exemplo, o dispositivo de computação 100 pode incluir qualquer tipo e/ou forma de adaptador de vídeo, cartão de vídeo, driver, e/ou 15 biblioteca para interface, comunicar, conectar ou usar de outro modo os dispositivos de exibição 124a a 124n. Em uma modalidade, um adaptador de vídeo pode compreender múltiplos conectores para interfacear com múltiplos dispositivos de exibição 124a a 124n. Em outras modalidade, o dispositivo de computação 100 pode incluir múltiplos adaptadores de vídeo, com cada 20 adaptador de vídeo conectado em um ou mais dispositivos de exibição 124a a 124n. Em algumas modalidades, qualquer parte do sistema de operação do dispositivo de computação 100 pode ser configurada para usar os múltiplos dispositivos 124a a 124n. Em outras modalidades, um ou mais dos dispositivos de exibição 124a a 124n pode ser proporcionado por um ou mais 25 dispositivos de computação, como, por exemplo, os dispositivos de computação 100a e 100b conectados ao dispositivo de computação 100, por exemplo, por via de uma rede. As modalidades podem incluir qualquer tipo de software projetado e construído para usar outro dispositivo de exibição de computador como um segundo dispositivo de exibição 124a para o dispositi30 vo de computação 100. Aquele versado na técnica irá reconhecer e apreciar as várias maneiras e modalidades em que um dispositivo de computação 100 pode ser configurado para ser dotado dos múltiplos dispositivos de exibição 124a a 124n.
Em modalidades adicionais, um dispositivo de Entrada / Saída pode ser uma ponte 170 entre o barramento de sistema 150 e um barramento de comunicação externa, como, por exemplo, um barramento USB, um 5 barramento Apple Desktop, uma conexão de série RS-232, um barramento SCSI, um barramento FireWire, um barramento 800 FireWire, um barramento Ethernet, um barramento AppIeTaIk, um barramento Gigabit Ethernet, um barramento de Modo de Transferência Assíncrono, um barramento HIPPI, um barramento Super HIPPI, um barramento SeriaIPIus, um barramento 10 SCI/LAMP, um barramento FibreChanneI, ou um barramento de interface de sistema de computador pequeno Anexado Serial.
Um dispositivo de computação 100 do tipo descrito nas figuras 1E e 1F tipicamente opera sob o controle dos sistemas de operação, que controlam o cronograma das tarefas e acesso para os recursos do sistema. O dispositivo de computação 100 pode estar executando qualquer sistema de operação como, por exemplo, quaisquer das versões dos sistemas de operação Microsoft® Windows, as versões diferentes dos sistemas Unix e Linux, qualquer versão do Mac OS® para os computadores Macintosh, qualquer sistema de operação embutido, qualquer sistema de operação em tempo real, qualquer sistema de operação de fonte aberta, qualquer sistema de operação proprietário, qualquer sistema de operação para dispositivos de computação móveis, ou qualquer outro sistema de operação capaz de executar no dispositivo de computação e desempenhar as operações aqui descritas. Os sistemas de operação típicos incluem: WINDOWS 3.x, WINDOWS 95, WINDOWS 98, WINDOWS 2000, WINDOWS NT 3.51, WINDOWS NT 4.0, WINDOWS CE, e WINDOWS XP, todos os quais são fabricados pela Microsoft Corporation of Redmond, Washington; MacOS, fabricado por Apple Computer of Cupertino, Califórnia; OS/2, fabricado por International Business Machines de Armonk, New York, e Linux, um sistema de operação disponível livremente distribuído por Caldera Corp. de Salt Lake city, Utah, ou qualquer tipo e/ou forma de um sistema de operação Unix, dentre outros.
Em outras modalidades, o dispositivo de computação 100 pode ser dotado de processadores diferentes, sistemas de operação, e dispositivos de entrada consistentes com o dispositivo. Por exemplo, em uma modalidade, o computador 100 é um telefone inteligente Treo 180, 270, 1060, 600 ou 650 fabricado por Palm, Inc. Nessa modalidade, o telefone inteligente 5 Treo é operado sob o controle do sistema de operação PaImOS e inclui um dispositivo de entrada Stylus bem como um dispositivo navegador de cinco modos. Além disso, o dispositivo de computação 100 pode ser qualquer estação de trabalho, computador desktop, computador Iaptop ou notebook, servidor, computador portátil, telefone móvel, qualquer outro computador, ou 10 outra forma de dispositivo de computação ou telecomunicação que seja capaz de se comunicar e que seja dotado de capacidade de energia e memória suficiente para desempenhar as operações aqui descritas.
B. Arquitetura de Aplicação
A figura 2A ilustra uma modalidade exemplificativa da aplicação 15 200. A arquitetura da aplicação 200 na figura 2A é proporcionada apenas à guisa de ilustração e não pretende ser limitadora. Conforme ilustrado na figura 2, a aplicação 200 compreende uma camada de hardware 206 e uma camada de software dividida em um espaço de usuário 202 e um espaço kernel 204.
Uma camada de hardware 206 proporciona os elementos de
hardware com base nos quais são executados os programas e os serviços dentro do espaço kernel 204 e o espaço de usuário 202. A camada de hardware 206 também proporciona as estruturas e os elementos que permitem que os programas e serviços dentro do espaço kernel 204 e do espaço usu25 ário 202 para comunicar dados tanto interna quanto externamente com relação ao computador 200. Conforme ilustrado na figura 2, a camada de hardware 206 inclui uma unidade de processamento 262 para executar programas e serviços de software, uma memória 264 para armazenar software e dados, portas de rede 266 para transmitir e receber dados sobre uma rede, e 30 um processador de codificação 260 para desempenhar funções relacionadas ao processamento de dados transmitidos e recebidos sobre a rede de Camada de Soquetes Protegida. Em algumas modalidades, a unidade de processamento central 262 pode desempenhar as funções do processador de codificação 260 em um processador único. Adicionalmente, a camada de hardware 206 pode compreender múltiplos processadores para cada unidade de processamento 262 e o processador de codificação 260. O processa5 dor 262 pode incluir quaisquer dos processadores 101 descritos acima com relação às figuras 1E e 1 F. Em algumas modalidades, a unidade de processamento central 262 pode desempenhar as funções do processador de codificação 260 em um processador único. Adicionalmente, a camada de hardware 206 pode compreender múltiplos processadores para a unidade de 10 processamento 262 e o processador de codificação 260. Por exemplo, em uma modalidade, o computador 200 compreende um primeiro processador 262 e um segundo processador 262'. Em outras modalidades, o processador 262 ou 262' compreende um processador de núcleo múltiplo.
Apesar da camada de hardware 206 do computador 200 ser ge15 ralmente ilustrada com um processador de codificação 260, o processador 260 pode ser um processador para desempenhar funções relacionadas a qualquer protocolo de codificação, como, por exemplo, a Camada de Soquete Protegida (SSL) ou o protocolo de Segurança de Camada de Transporte (TLS). Em algumas modalidades, o processador 260 pode ser um processa20 dor de propósito geral (GPP), e em modalidades adicionais, pode ser dotado de instruções executáveis para desempenhar processamento de qualquer protocolo relacionado de segurança.
Apesar da camada de hardware 206 do computador 200 ser ilustrada com determinados elementos na figura 2, as partes ou componentes 25 de hardware do computador 200 podem compreender qualquer tipo e forma de elementos, hardware ou software, de um dispositivo de computação, como, por exemplo, o dispositivo de computação 100 aqui ilustrado e comentado em combinação com as figuras 1E e 1F. Em algumas modalidades, o computador 200 pode compreender um servidor, uma porta, um roteador, 30 um comutador, uma ponte ou outro tipo de dispositivo de computação ou rede, e ser dotada de quaisquer elementos de hardware e/ou software associados a mesma. O sistema de operação do computador 200 aloca, gerencia, ou segrega de outro modo a memória de sistema disponível no espaço kernel 204 e no espaço de usuário 204. Na arquitetura de software exemplificativa 200, o sistema de programação pode ser qualquer tipo e/ou forma de sistema de operação Unix apesar da invenção não está assim limitada. Como tal, o computador 200 pode estar executando qualquer sistema de operação como, por exemplo, quaisquer versões dos sistemas de operação do Microsoft ® Windows, as diferentes versões dos sistemas de operação Unix e Linux, qualquer versão do Mac OS® para os computadores Macintosh, qualquer sistema de operação embutido, qualquer sistema de operação de rede, qualquer sistema de operação em tempo real, qualquer sistema de operação de fonte aberta, qualquer sistema de operação proprietário, qualquer sistema de operação para dispositivos de computação móveis ou dispositivos de rede, ou qualquer outro sistema de operação capaz de executar no computador 200 e desempenhar as operações aqui descritas.
O espaço kernel 204 é reservado para executar o kernel 230, incluindo quaisquer drivers de dispositivo, as extensões kernel ou outro software relacionado kernel. Conforme conhecido por aqueles versados na técnica, o kernel 230 é o núcleo do sistema de operações, e proporciona aces20 so, controle, e gerenciamento dos recursos e elementos relacionados de hardware do computador 104. De acordo com uma modalidade do computador 200, o espaço kernel 204 também inclui uma série de serviços de rede ou processos funcionando em combinação com um gerenciador de cache 232, algumas vezes também referidos como cache integrado, os benefícios 25 dos quais estão aqui descritos mais detalhadamente. Adicionalmente, a modalidade do kernel 230 irá depender da modalidade do sistema de operação instalado, configurado, ou usado de outro modo pelo dispositivo 200.
Em uma modalidade, o dispositivo 200 compreende uma pilha de rede 267, como, por exemplo, uma pilha baseada em TCP/IP, para se comunicar com o cliente 102 e/ou o servidor 106. Em uma modalidade, a pilha de rede 267 é usada para se comunicar com uma primeira rede, como, por exemplo, a rede 108, e uma segunda rede 110. Em algumas modalidades, o dispositivo 200 finaliza uma primeira conexão de camada de transporte, como, por exemplo, uma conexão TCP de um cliente 102, e estabelece uma segunda conexão de camada de transporte para um servidor 106 para uso por um cliente 102, por exemplo, a segunda conexão de camada de 5 transporte é finalizada no computador 200 e o servidor 106. As primeira e segunda conexões de camada de transporte podem ser estabelecidas por via de uma pilha de rede única 267. Em outras modalidades, o dispositivo 200 pode compreender múltiplas pilhas de rede, por exemplo, 267 e 267', e a primeira conexão de camada de transporte pode ser estabelecida ou finali10 zada em uma pilha de rede 267, e a segunda conexão de camada de transporte na segunda pilha de rede 267'. Por exemplo, uma pilha de rede pode ser para receber e transmitir pacote de rede em uma primeira rede, e outra pilha de rede para receber e transmitir pacotes de rede em uma segunda rede. Em uma modalidade, a pilha de rede 267 compreende um buffer 243 15 para enfileirar um ou mais pacotes de rede para transmissão do computador 200.
Conforme ilustrado na figura 2, o espaço kernel 204 inclui o gerenciador de cache 232, um mecanismo de pacote integrado 2-7 de camada de alta velocidade 240, um mecanismo de criptografia 234, um mecanismo 20 de política 236 e um lógico de compressão de protocolo múltiplo 238. A execução desses componentes ou processos 232, 240, 234, 236 e 238 no espaço kernel 204 ou modo kernel em lugar do espaço de usuário 202 aperfeiçoa o desempenho de cada desses componente, isolado ou em combinação. A operação kernel significa que esses componentes ou processos 232, 25 240, 234, 236 e 238 executam no espaço do endereço do núcleo do sistema de operação do dispositivo 200. Por exemplo, a execução do mecanismo de criptografia 234 no modo kernel aperfeiçoa o desempenho de criptografia pelo movimento das operações de criptografia e decodificação para o kernel, reduzindo, assim, o número de transição entre o espaço de memória ou uma 30 cadeia kernel no modo kernel e o espaço ou uma cadeia da memória em modo de usuário. Por exemplo, os dados obtidos no modo kernel podem não precisar ser passados ou copiados para um processo ou cadeia executando em modo de usuário, como, por exemplo, de uma estrutura de dados de nível kernel para uma estrutura de dados de nível de usuário. Em outro aspecto, o número de comutações de contexto entre o modo kernel e o modo de usuário é também reduzido. Adicionalmente, a sincronização de e as comu5 nicações entre qualquer dos componentes ou processos 232, 240, 235, 236 e 238 podem ser desempenhadas mais eficientemente no espaço kernel 204.
Em algumas modalidades, qualquer parte dos componentes 232, 240, 234, 236 e 238 pode executar ou operar no espaço kernel 204, enquanto as outras partes desses componentes 232, 240, 234, 236 e 238 podem executar ou operar no espaço de usuário 202. Em uma modalidade, o computador 200 usa uma estrutura de dados de nível kernel proporcionando acesso a qualquer parte de um ou mais pacotes, por exemplo, um pacote de rede compreendendo uma solicitação de um cliente 102 ou uma resposta de um servidor 106. Em algumas modalidades, a estrutura de dados de nível kernel pode ser obtida pelo mecanismo de pacote 240 por via de uma interface ou filtro driver de camada de transporte para a pilha de rede 267. A estrutura de dados de nível kernel pode compreender qualquer interface e/ou dados acessíveis por via do espaço kernel 204 relacionado à pilha de rede 267, tráfego de rede ou pacotes recebidos ou transmitidos pela pilha de rede 267. Em outras modalidades, a estrutura de dados de nível kernel pode ser usada por quaisquer componentes ou processos 232, 240, 234, 236 e 238 para desempenhar a operação descrita do componente ou processo. Em uma modalidade, um componente 232, 240, 234, 236 e 238 está executando no modo kemel 204 ao usar a estrutura de dados de nível kernel, enquanto em outra modalidade, o componente 232, 240, 234, 236 e 238 está executando no modo usuário ao usar a estrutura de dados de nível kernel. Em algumas modalidades, a estrutura de dados de nível kernel pode ser copiada ou passada para uma segunda estrutura de dados de nível kernel, ou qualquer estrutura de dados de nível de usuário desejada.
O gerenciador de cache 232 pode compreender software, hardware ou qualquer combinação de software e hardware para proporcionar acesso, controle e gerenciamento de cache de qualquer tipo e forma de conteúdo, como, por exemplo, os objetos ou objetos gerados dinamicamente servidos pelos servidores de criação 106. Os dados, objetos ou conteúdos processados e armazenados pelo gerenciador de cache 232 podem compreender dados em qualquer formato, como, por exemplo, uma linguagem de composição, ou composição por via de qualquer protocolo. Em algumas modalidades, o gerenciador de cache 232 duplica os dados originais armazenados em outro lugar ou os dados anteriormente computados, gerados ou transmitidos, nos quais os dados originais podem requerer tempo de acesso mais longo para recuperar, computar ou de outro modo obter com relação à leitura de um elemento de memória cache. Uma vez que os dados sejam armazenados no elemento de memória cache, o uso futuro pode ser feito pelo acesso da copia cached em vez de tornar a recuperar ou a tomar a computar os dados originais, reduzindo, assim, o tempo de acesso. Em algumas modalidades, o elemento de memória cache não compreende um objeto de dados na memória 264 do dispositivo 200. Em outras modalidades, o elemento de memória cache pode compreender memória sendo dotada de tempo de acesso mais rápido do que a memória 264. Em outra modalidade, o elemento de memória cache pode compreender qualquer tipo ou forma de elemento de armazenamento do dispositivo 200, como, por exemplo, uma parte de um disco rígido. Em algumas modalidades, a unidade de processamento 262 pode proporcionar memória cache para uso pelo gerenciador de cache 232. Ainda, em modalidades adicionais, o gerenciador de cache 232 pode usar qualquer parte e combinação da unidade de memória, armazenamento, ou processamento para o cache de dados, e outro conteúdo.
Ademais, o gerenciador de cache 232 inclui qualquer lógico, funções, regras, ou operações para executar quaisquer modalidades das técnicas da aplicação 200 aqui descrita. Por exemplo, o gerenciador de cache 232 inclui lógico ou funcionalidade para invalidar objetos com base na expi30 ração de um período de tempo de invalidação ou ao receber um comando de invalidação de um cliente 102 ou servidor 106. Em algumas modalidades, o gerenciador de cache 232 pode operar como um serviço de programa, processo ou tarefa executando em um espaço kernel 204, e em outras modalidades, no espaço de usuário 202. Em uma modalidade, a primeira parte do gerenciador de cache 232 executa no espaço de usuário 202 enquanto uma segunda parte executa no espaço kernel 202. Em algumas modalidades, o 5 gerenciador de cache 232 pode compreender qualquer tipo de processador de propósito geral (GPP), ou qualquer outro tipo de circuito integrado, como, por exemplo, uma Disposição de Porta Programável de Campo (FPGA), Dispositivo Lógico Programável (PLD), ou Circuito Integrado Específico de Aplicação (ASIC).
O mecanismo de política 236 pode incluir, por exemplo, um me
canismo estatístico inteligente ou outra aplicação(s) programável. Em uma modalidade, o mecanismo de política 236 proporciona um mecanismo de configuração para permitir que um usuário identifique, especifique, defina ou configure uma política de cache. O mecanismo de política 236, em algumas 15 modalidades, é também dotado de acesso para a memória para suportar estruturas de dados como, por exemplo, tabelas de consulta ou tabelas hash para possibilitar decisões de política de cache selecionadas pelo usuário. Em outras modalidades, o mecanismo de política 236 pode compreender qualquer lógico, regras, funções ou operações para determinar e proporcio20 nar acesso, controle e gerenciamento de objetos, dados ou conteúdo sendo cached pelo computador 200 além do acesso, controle e gerenciamento de segurança, tráfego de rede, acesso de rede, compressão ou qualquer outra função ou operação desempenhada pelo computador 200. Estão também aqui descritos exemplos adicionais de políticas de cache específicas.
Em algumas modalidades, o mecanismo de política 236 pode
proporcionar um mecanismo de configuração para permitir que um usuário identifique, especifique, defina ou configure políticas de comportamento de direção de quaisquer outros componentes ou funcionalidades de um computador incluindo, sem limitação, os componentes descritos na figura 2B como, 30 por exemplo, os Servidores-v 275, as funções VPN 280, as funções IP Intranet 282, as funções de comutação 284, as funções DNS 286, as funções de aceleração 288, as funções firewall de aplicação 290, e os agentes de monitoramento 197. Em outras modalidades, o mecanismo de política 236 pode verificar, avaliar, implementar, ou agir de outro modo com relação a quaisquer políticas configuradas, e pode também direcionar a operação de uma ou mais funções de computador em resposta a uma política.
O mecanismo de criptografia 234 compreende qualquer lógico,
regras de negócio, funções ou operações para execução do processamento de qualquer protocolo relacionado à segurança. Como, por exemplo, SSL ou TLS, ou qualquer função relacionada ao mesmo. Por exemplo, o mecanismo de criptografia 234 criptografa e decodifica pacotes de rede, ou qualquer parte dos mesmos, comunicados por via do computador 200. O mecanismo de criptografia 234 pode também configurar e estabelecer as conexões SSL ou TSL em nome do cliente 102a a 102n, do servidor 106a a 106n, ou do computador 200. Como tal, o mecanismo de criptografia 234 proporciona descarregamento e desaceleração do processamento SSL. Em uma modalidade, o mecanismo de criptografia 234 usa um protocolo de sincronização para proporcionar uma rede privada virtual entre um cliente 102a a 102n e um servidor 106a a 106n. Em algumas modalidades, o mecanismo de criptografia 234 está em comunicação com o processador de Criptografia 260. Em outras modalidades, o mecanismo de criptografia 234 compreende instruções executáveis executando no processador de Criptografia 260.
O mecanismo de compressão de protocolo múltiplo 238 compreende qualquer lógico, regras de negócio, função ou operações para condensar um ou mais protocolos de um pacote de rede, como, por exemplo, quaisquer dos protocolos usados pela pilha de rede 267 do dispositivo 200. 25 Em uma modalidade, o mecanismo de compressão de protocolo múltiplo 238 condensa de modo bidirecional entre os clientes 102a a 102n e os servidores 106a a 106n qualquer protocolo baseado em TCP/IP, incluindo Interface de Programação de Aplicação de Mensagem (MAPI) (e-mail), Protocolo de Transferência de Arquivo (FTP), Protocolo de Transferência HyperText 30 (HTTP), (transferência de arquivo) protocolo de Sistema de Arquivo Internet Comum (CIFS), protocolo de Arquitetura de Computação Independente (ICA), Protocolo Desktop Remoto (RDP)1 Protocolo de Aplicação Sem Fio (WAP), Protocolo IP Móvel, e protocolo Sobre Voz IP (VolP). Em outras modalidades, o mecanismo de compressão de protocolo múltiplo 238 proporciona compressão dos protocolos baseados na Linguagem de Marcação de Hipertexto (HTML) e em algumas modalidades, proporciona compressão de quaisquer linguagens de marcação, como, por exemplo, Linguagem de Marcação Extensível (XML). Em uma modalidade, o mecanismo de compressão de protocolo múltiplo 238 proporciona compressão de qualquer protocolo de desempenho alto, como, por exemplo, qualquer protocolo projetado para o computador 200 para comunicações do computador 200. Em outras modalidades, o mecanismo de compressão de protocolo múltiplo 238 condensa qualquer carga útil de qualquer comunicação usando um protocolo de controle de transporte modificado, como, por exemplo, Transação TCP (T/TCP), TCP com confirmações de seleção (TCP-SACK), TCP com janelas amplas (TCP-LW), um protocolo de previsão de congestão como, por exemplo, o protocolo TCP-Vegas, protocolo spoofing TCP.
Como tal, o mecanismo de compressão de protocolo múltiplo 238 acelera o desempenho para os usuários acessando aplicações por via dos clientes desktop, por exemplo, Microsoft Outlook e clientes finos não da WEB, como, por exemplo, qualquer cliente lançado por aplicações de em20 presa popular tipo Oráculo, SAP e Siebel, e mesmo clientes móveis, como, por exemplo, o PC de Bolso. Em algumas modalidades, o mecanismo de compressão de protocolo múltiplo 238 pela execução no modo kernel 204 e interagindo com o mecanismo de processamento de pacote 240 acessando uma pilha de rede 267 é capaz de condensar qualquer protocolo transporta25 do pelo protocolo TCP/IP, como, por exemplo, qualquer protocolo de camada de aplicação.
O mecanismo de pacote integrado 2-7 de camada de alta velocidade 240, também geralmente referido como um mecanismo de processamento de pacote ou mecanismo de pacote, é responsável pelo gerenciamen30 to do processamento do nível kernel dos pacotes recebidos e transmitidos pelo computador 200 por via das portas de rede 266. O mecanismo de pacote integrado 2-7 de camada de alta velocidade 240 pode compreender um buffer para enfileirar um ou mais pacotes de rede durante o processamento, como, por exemplo, para recebimento de um pacote de rede ou transmissão de um pacote de rede. Adicionalmente, o mecanismo de pacote integrado 2- 7 de camada de alta velocidade 240 está em comunicação com uma ou mais 5 pilhas de rede 267 para enviar e receber pacotes de rede por via das portas de rede 266. O mecanismo de pacote integrado 2-7 de camada de alta velocidade 240 funciona em combinação com o mecanismo de criptografia 234, o gerenciador de cache 232, o mecanismo de política 236 e o lógico de compressão de protocolo múltiplo 238. Especificamente, o mecanismo de cripto10 grafia 234 está configurado para executar processamento SSL de pacotes, o mecanismo de política 236 está configurado para executar funções relacionadas ao gerenciamento de tráfego como, por exemplo, comutação do conteúdo de nível de solicitação e redirecionamento do cache de nível de solicitação, e o lógico de compressão de protocolo múltiplo 238 está configurado 15 para executar funções relacionadas à compressão e descompressão dos dados.
O mecanismo de pacote integrado 2-7 de camada de alta velocidade 240 inclui um cronômetro de processamento de pacote 242. Em uma modalidade, o cronômetro de processamento de pacote 242 proporciona um 20 ou mais intervalos para disparar o processamento de chegada, isto é, recebido ou de saída, isto é, pacotes de rede transmitidos. Em algumas modalidades, o mecanismo de pacote integrado 2-7 de camada de alta velocidade 240 processa os pacotes de rede responsivos ao cronômetro 242. O cronômetro de processamento de pacote 242 proporciona qualquer tipo e forma 25 de sinal para o mecanismo de pacote 240 para notificar, disparar, ou comunicar um evento, intervalo ou ocorrência relacionado ao tempo. Em muitas modalidades, o cronômetro de processamento de pacote 242 opera na ordem de milissegundos, como, por exemplo, 100ms, 50ms ou 25ms. Por exemplo, em algumas modalidades, o cronômetro de processamento de pa30 cote 242 proporciona intervalos de tempo ou leva de outro modo o pacote de rede a ser processado pelo mecanismo de pacote integrado 2-7 de camada de alta velocidade 240 em um intervalo de tempo de 10ms, enquanto em outras modalidades, em um intervalo de tempo de 5ms, e ainda em modalidades adicionais, intervalo de tempo tão curto quanto 3,2, ou 1ms. O mecanismo de pacote integrado 2-7 de camada de alta velocidade 240 pode ser interfaceado, integrado ou em comunicação com o mecanismo de criptogra5 fia 234, gerenciador de cache 232, mecanismo de política 236 e o mecanismo de compressão de protocolo múltiplo 238 durante a operação. Como tal, qualquer do lógico, funções, ou operações do mecanismo de criptografia 234, do gerenciador de cache 232, do mecanismo de política 236 e do mecanismo de compressão de protocolo múltiplo 238 pode ser executado res10 ponsivo ao cronômetro de processamento de pacote 242 e/ou o mecanismo de pacote 240. Portanto, qualquer do lógico, funções ou operações do mecanismo de criptografia 234, do gerenciador de cache 232, do mecanismo de política 236 e do mecanismo de compressão de protocolo múltiplo 238 pode ser executado na granularidade dos intervalos de tempo proporcionados por 15 via do cronômetro de processamento de pacote 242, por exemplo, em um intervalo de tempo menor do que ou igual a 10ms. Por exemplo, na modalidade, o gerenciador de cache 232 pode executar invalidação de objetos cached responsivo ao mecanismo de pacote integrado 2-7 de camada de alta velocidade 240 e/ou ao cronômetro de processamento de pacote 242. Em 20 outra modalidade, o tempo de expiração ou de invalidação de um objeto cached pode ser ajustado para a mesma ordem de granularidade como o intervalo de tempo do cronômetro de processamento de pacote 242, como, por exemplo, a cada 10ms.
Em comparação com o espaço kernel 204, o espaço do usuário 25 202 está na área ou parte de memória do sistema de operação usado pelas aplicações de modo de usuário ou programas executando de outro modo no modo do usuário. Uma aplicação de modo de usuário pode não acessar o espaço kernel 204 diretamente e usar chamadas de serviço para acessar os serviços kernel. Conforme ilustrado na figura 2, o espaço de usuário 202 do 30 computador 200 inclui uma interface com o usuário gráfico (GUI) 210, uma interface de linha de comando (CLI) 212, serviços shell 214, programas de monitoramento de saúde 216, e serviços daemon 218. A GUI 210 e a CLI 212 proporcionam um meio pelo qual um administrador de sistema ou outro usuário pode interagir com e controlar a operação do computador 200, como, por exemplo, por via do sistema de operação do computador 200 e qualquer dos dois é espaço de usuário 202 ou espaço kernel 204. A GUI 210 5 pode ser qualquer tipo e forma de interface com usuário gráfica e pode ser apresentada por via de texto, gráfico ou de outro modo, por qualquer tipo de programa ou aplicação, como, por exemplo, um navegador. A CLI 212 pode ser qualquer tipo e forma de linha de comando ou texto ou interface baseada em texto, como, por exemplo, uma linha de comando proporcionada pelo 10 sistema de operação. Por exemplo, a CLI 212 pode compreender uma shell, que é uma ferramenta para possibilitar os usuários para interagir com o sistema de operação. Em algumas modalidades, a CLI 212 pode ser proporcionada por via de uma shell do tipo bash, csh, tcsh, ou ksh. Os serviços shell 214 compreendem os programas, serviços, tarefas, processos ou instruções 15 executáveis para suportar a interação com o computador 200 ou sistema de operação por um usuário por via da GUI 210 e/ou da CLI 212.
O programa de monitoramento de saúde 216 é usado para monitorar, verificar, relatar e assegurar que os sistemas de rede estão funcionando apropriadamente e que os usuários estejam recebendo conteúdo solicita20 do sobre uma rede. O programa de monitoramento de saúde 216 compreende um ou mais programas, serviços, tarefas, processos ou instruções executáveis para proporcionar lógico, regras, funções ou operações para monitorar qualquer atividade do computador 200. Em algumas modalidades, o programa de monitoramento de saúde 216 interpreta qualquer tráfego de rede pas25 sado por via do computador 200. Em outras modalidades, o programa de monitoramento de saúde 216 interfacia por qualquer meio adequado e/ou mecanismos com um ou mais dos seguintes: o mecanismo de criptografia 234, o gerenciador de cache 232, o mecanismo de política 236, o lógico de compressão de protocolo múltiplo 238, o mecanismo de pacote 240, serviços 30 daemon 218, e serviços shell 214. Como tal, o programa de monitoramento de saúde 216 pode chamar qualquer interface de programação de aplicação (API) para determinar um estado, status, ou saúde de qualquer parte do computador 200. Por exemplo, o programa de monitoramento de saúde 216 pode ping ou enviar solicitação de status em uma base periódica para verificar se um programa, processo, serviço ou tarefa está ativo e executando presentemente. Em outro exemplo, o programa de monitoramento de saúde 5 216 pode verificar qualquer status erro ou arquivos de transações de história proporcionados por qualquer programa, processo, serviço ou tarefa para determinar qualquer condição, status ou erro com qualquer parte do computador 200.
Os serviços daemon 218 são programas que executam continu10 amente ou em segundo plano e conduzir as solicitações de serviço periódico recebidas pelo computador 200. Em algumas modalidades, um serviço daemon pode transferir as solicitações para outros programas ou processos, como, por exemplo, outro serviço daemon 218 conforme apropriado. Conforme conhecido por aqueles versados na técnica, um serviço daemon 218 15 pode executar sem estar presente para executar funções amplas de sistema contínuo ou periódico, como, por exemplo, controle de rede, ou para executar qualquer tarefa desejada. Em algumas modalidades, um ou mais serviços daemon 218 executa no espaço do usuário 202, enquanto em outras modalidades, um ou mais serviços daemon 218 executa no espaço kernel.
A figura 2B descreve outra modalidade do computador 200. Em
uma breve visão geral, o computador 200 proporciona um ou mais dos serviços que se seguem, funcionalidade ou operações: conectividade SSL VPN 280, equilíbrio de comutação / carga 284, resolução de Serviço de Nome de Domínio 286, aceleração 288 e um firewall de aplicação 290 para comunica25 ções entre um ou mais clientes 102 e um ou mais servidores 106. Cada servidor 106 pode proporcionar um ou mais serviços de rede relacionados 270a a 270n (referidos como serviços 270). Por exemplo, um servidor 106 pode proporcionar um serviço http 270. O computador 200 compreende um ou mais servidores ou servidores de protocolo de Internet virtual, referidos como 30 vServer, servidor VIP, ou apenas VIP 275a a 275n também aqui referido como vServer 275). O vServer 275 recebe, intercepta ou processa de outro modo as comunicações entre um cliente 102 e um servidor 106 de acordo com a configuração e operações do computador 200.
O vServer 275 pode compreender software, hardware ou qualquer combinação de software e hardware. O vServer 275 pode compreender qualquer tipo ou forma de programa, serviço, tarefa, processo ou instruções executáveis operando no modo de usuário 202, modo kernel 204 ou qualquer combinação dos mesmos no computador 200. O vServer 275 inclui qualquer lógico, funções, regras, ou operações para realizar quaisquer modalidades das técnicas aqui descritas, tais como SSL VPN 280, equilíbrio de comutação / carga 284, resolução de serviço de Nome de Domínio 286, aceleração 288 e um firewall de aplicação 290. Em algumas modalidades, o vServer 275 estabelece uma conexão para um serviço 270 de um servidor 106. O serviço 275 pode compreender qualquer programa, aplicação, processo, tarefa ou conjunto de instruções executáveis capaz de conectar e comunicar com o computador 200, o cliente 102 ou o vServer 275. Por exemplo, o serviço 275 pode compreender um servidor da web, um servidor http, FTP, servidor de e-mail ou de base de dados. Em algumas modalidades, o serviço 270 é um processo daemon ou driver de rede para ouvir, receber e/ou enviar comunicações para uma aplicação, como, por exemplo, email, base de dados ou uma aplicação de empresa. Em algumas modalidades, o serviço 270 pode se comunicar em um endereço IP específico, ou endereço IP e porta.
Em algumas modalidades, o vServer 275 aplica uma ou mais políticas do mecanismo de política 236 para comunicações de rede entre o cliente 102 e o servidor 106. Em uma modalidade, as políticas são associa25 das com um VServer 275. Em outra modalidade, as políticas são baseadas em um usuário, ou um grupo de usuários. Em ainda outra modalidade, uma política é global e se aplica a um ou mais vServers 275a a 275n, e qualquer usuário ou grupo de usuários se comunicando por via do computador 200. Em algumas modalidades, as políticas do mecanismo de política são dota30 das de condições mediante as quais a política é aplicada com base em qualquer conteúdo da comunicação, como, por exemplo, endereço de protocolo Internet, porta, tipo de protocolo, registro inicial ou campos em um pacote, ou o contexto da comunicação, como, por exemplo, usuário, grupo de usuário, vServer 275, conexão de camada de transporte, e/ou identificação ou atributos do cliente 102 ou servidor 106.
Em outras modalidades, o computador 200 se comunica ou in5 terfacia com o mecanismo de política 236 para determinar autenticação e/ou autorização de um usuário remoto ou um cliente remoto 102 para acessar o ambiente de configuração 15, aplicação, e/ou arquivo de dados de um servidor 106. Em outra modalidade, o computador 200 se comunica ou interfacia com o mecanismo de política 236 para determinar autenticação e/ou autori10 zação de um usuário remoto ou um cliente remoto 102 para que o sistema de distribuição de aplicação 190 distribua um ou mais do ambiente de computação 15, aplicação, e/ou arquivo de dados. Em ainda outra modalidade, o computador 200 estabelece uma conexão VPN ou SSL VPN com base na autenticação e/ou autorização do mecanismo de política 126 de um usuário 15 remoto ou um cliente remoto 103. Em uma modalidade, o computador 102 controla o fluxo de tráfego de rede e sessões de comunicação com base nas políticas do mecanismo de política 236. Por exemplo, o computador 200 pode controlar o acesso para um ambiente de computação 15, aplicação ou arquivo de dados com base no mecanismo de política 236.
Em algumas modalidades, o vServer 275 estabelece uma cone
xão de camada de transporte, como, por exemplo, uma conexão TCP ou UDP com um cliente 102 por via do agente cliente 120. Em uma modalidade, o vServer 275 escuta para e recebe comunicações do cliente 102. Em outras modalidades, o vServer 275 estabelece uma conexão de camada de trans25 porte, como, por exemplo, uma conexão TCP ou UDP com um servidor cliente 106. Em uma modalidade, o vServer 275 estabelece a conexão de camada de transporte para um endereço de protocolo Internet e porta de um servidor 270 executando no servidor 106. Em outra modalidade, o vServer 275 associa uma primeira conexão de camada de transporte a um cliente 30 102 com uma segunda conexão de camada de transporte a um servidor 106. Em algumas modalidades, um vServer 275 estabelece um pool de conexões de camada de transporte para um servidor 106 e multiplexa solicitações cliente por via das conexões de camada de transporte pooled.
Em algumas modalidades, o computador 200 proporciona as conexões SSL VPN 280 entre um cliente 102 e um servidor 106. Por exemplo, um cliente 102 em uma primeira rede 102 solicita para estabelecer uma conexão para um servidor 106 em uma segunda rede 104'. Em algumas modalidades, a segunda rede 104' não pode ser roteada da primeira rede 104. Em outras modalidades, o cliente 102 está em uma rede pública 104 e o servidor 106 está em uma rede privada 104', como, por exemplo, uma rede incorporada. Em uma modalidade, o agente cliente 120 intercepta as comunicações do cliente 102 na primeira rede 104, criptografa as comunicações, e transmite as comunicações por via de uma primeira conexão de camada de transporte para o computador 200. O computador 200 associa a primeira conexão de camada de transporte na primeira rede 104 a uma segunda conexão de camada de transporte para o servidor 106 na segunda rede 104. O computador 200 recebe a comunicação interceptada do agente cliente 102, decodifica as comunicações, e transmite a comunicação para o servidor 106 e a segunda rede 104 por via da segunda conexão de camada de transporte. A segunda conexão de camada de transporte pode ser uma conexão de camada de transporte pooled. Como tal, o computador 200 proporciona uma conexão de camada de transporte de ponta a ponta para o cliente 102 entre as duas redes 104,104'.
Em uma modalidade, o computador 200 hospeda um protocolo Internet Intranet ou endereço IntranetIP 282 do cliente 102 em uma rede privada virtual 104. O cliente 102 é dotado de um identificador de rede local, 25 como, por exemplo, um endereço (IP) de protocolo Internet e/ou nome principal da primeira rede 104. Quando conectada na segunda rede 104' por via do computador 200, o computador 200 estabelece, atribui ou proporciona de outro modo uma IntranetIP, que é identificador de rede, como, por exemplo, endereço IP e/ou nome principal, para o cliente 102 na segunda rede 104'. O 30 computador 200 escuta para e recebe na segunda ou rede privada 104’ para quaisquer comunicações direcionadas em direção ao cliente 102 usando a IntranetIP estabelecida do cliente 282. Em uma modalidade, o computador 200 age como ou em nome do cliente 102 na segunda rede privada 104. Por exemplo, em outra modalidade um vServer 275 escuta e responde as comunicações para a IntranetIP 282 do cliente 102. Em algumas modalidades, se um dispositivo de computação 100 na segunda rede 104' transmitir uma soli5 citação, o computador 200 processa a solicitação como se fosse o cliente 102. Por exemplo, o computador 200 pode responder a um ping para a IntranetlP do cliente 282. Em outro exemplo, o computador pode estabelecer uma conexão, como, por exemplo, uma conexão TCP ou UDP, com o dispositivo de computação 100 na segunda rede 104 solicitando uma conexão 10 com a IntranetIP do cliente 282.
Em algumas modalidades, o computador 200 proporciona uma ou mais das técnicas de aceleração seguintes 288 para comunicações entre o cliente 102 e o servidor 106: 1) compressão; 2) descompressão; 3) pooling de Protocolo de Controle de Transmissão; 4) multiplexação do Protocolo de 15 Controle de Transmissão; 5) utilização da memória intermediária do Protocolo de Controle de Transmissão; e 6) cache. Em uma modalidade, a aplicação 200 alivia os servidores 106 de muita carga de processamento provocada pela abertura e fechamento repetidamente das conexões de camadas de transporte para os clientes 102 pela abertura de uma ou mais conexões de 20 camadas de transporte com cada servidor 106 e mantendo essas conexões para permitir acessos de dados repetidos pelos clientes por via da Internet. Essa técnica é aqui referida como "pooling de conexão".
Em algumas modalidades, para unir comunicações sem emenda de um cliente 102 para um servidor 106 por via de uma conexão de camada 25 de transporte pooled, o computador 200 traduz ou multiplexa comunicações modificando o número de seqüência dos números de confirmações no nível do protocolo de camada de transporte. Isso é referido como "multiplexação de conexão". Em algumas modalidades, não é requerida nenhuma interação de protocolo de camada de aplicação. Por exemplo, no caso de um pacote 30 "in-bound" (isto é um pacote recebido de um cliente 102), o endereço de rede fonte do pacote é alterado de maneira que a porta de saída do computador 200, e o endereço de rede de destino seja alterado para aquele do servidor pretendido. No caso de um pacote "outbound" (isto é, um pacote recebido de um servidor 106), o endereço de rede fonte é alterado daquela do servidor 106 para aquele de uma porta de saída do computador 200 e o endereço de destino é alterado daquele do computador 200 para aquele do clien5 te solicitante 102. Os números de seqüência e os números de confirmação do pacote são também traduzidos para números de seqüência e confirmação esperada pelo cliente 102 na conexão de camada de transporte do computador 200 para o cliente 102. Em algumas modalidades, a soma de verificação do protocolo de camada de transporte é recalculada para ser 10 responsável por essas traduções.
Em outra modalidade, o computador 200 proporciona comutação ou funcionalidade de equilíbrio de carga 284 para as comunicações entre o cliente 102 e o servidor 106. Em algumas modalidades, o computador 200 distribui tráfego e direciona as solicitações do cliente para um servidor 106 com base na camada 4 ou dados de solicitação de camada de aplicação.Em uma modalidade, apesar da camada de rede ou camada 2 do pacote de rede identificar um servidor de destino 106, o computador 200 determina que o servidor 106 distribua o pacote de rede pela informação de aplicação e dados transportados como carga útil do pacote de camada de transporte. Em uma modalidade, os programas de monitoramento de saída 216 do computador 200 monitoram a saúde dos servidores para determinar o servidor 106 para o qual distribuir uma solicitação de cliente. Em algumas modalidades, se o computador 200 detectar que um servidor 106 não está disponível ou é dotado de uma carga acima de um limiar predeterminado, o computador 200 pode direcionar ou distribuir solicitações cliente para outro servidor 106.
Em algumas modalidades, o computador 200 age como um resolvedor de Serviço de Nome de Domínio (DNS) ou proporciona de outro modo resolução de uma solicitação DNS dos clientes 102. Em algumas modalidades, o computador intercepta uma solicitação DNS transmitida pelo 30 cliente 102. Em uma modalidade, a aplicação 200 responde a uma solicitação DNS de cliente com um endereço IP da ou hospedada pelo computador 200. Nessa modalidade, o cliente 102 transmite comunicação de rede para o nome de domínio para o computador 200. Em outra modalidade, o computador 200 responde a uma solicitação DNS de cliente com um endereço IP da ou hospedada por um segundo computador 200'. Em algumas modalidades, a aplicação 200 responde a uma solicitação DNS de cliente com um endere5 ço IP de um servidor 106 determinado pelo computador 200.
Em ainda outra modalidade, o computador 200 proporciona funcionalidade para o firewall de aplicação 290 para comunicações entre o cliente 102 e o servidor 106. Em uma modalidade, o mecanismo de política 236 proporciona regras para detectar e bloquear solicitações ilegítimas. Em 10 algumas modalidades, o firewall de aplicação 290 protege contra negação dos ataques de serviço (DoS). Em outras modalidades, a aplicação inspeciona o conteúdo das solicitações para identificar e bloquear os ataques baseados na aplicação. Em algumas modalidades, o mecanismo de regras / política 236 compreende um ou mais firewall de aplicação ou políticas de 15 controle de segurança para proporcionar proteção contra várias classes e tipos vulnerabilidades com base na web ou Internet, como, por exemplo, um ou mais do que se segue: 1) estouro de buffer, 2) manipulação de parâmetro GGI-BIN, 3) manipulação de campo de forma / oculto, 4) pesquisa vigorosa, 5) "cookie' ou envenenamento de sessão, 6) lista de controle de acesso 20 quebrada (ACLs) ou senhas fracas, 7) roteiro de lugar transversal (XSS), 8) injeção de comando, 9) injeção SQL, 10) vazamento de informação sensível de disparo de erro, 11) uso inseguro de criptografia, 12) desconfiguração servidor, 13) portas traseiras e opções de depuração, 14) modificação da aparência ("defacement") do web site 15) vulnerabilidades de sistemas de 25 plataforma ou operação, e 16) explorações "zero-day". Em uma modalidade, o firewall de aplicação 290 proporciona proteção de campo de forma HTML na forma de inspeção ou analise das comunicações de rede para um ou mais do que se segue: 1) são retornados campos requeridos, 2) não é permitida adição de campo, 3) reforço de campo apenas de leitura e oculto, 4) 30 caixa de lista de opção e conformidade de campo de botão de rádio, e 5) reforço de campo de formulário de "max-leght” (tamanho máximo de caracteres que são aceitos como entrada). Em algumas modalidades, o firewall de aplicação 290 assegura que os "cookies" não sejam modificados. Em outras modalidades, o firewall de aplicação 290 protege contra a pesquisa vigorosa pelo reforço das URLs legais.
Em ainda outras modalidades, o firewall de aplicação 290 protege qualquer informação confidencial contida na comunicação de rede. O firewall de aplicação 290 pode inspecionar ou analisar qualquer comunicação de rede de acordo com as regras e políticas do mecanismo 236 para identificar qualquer informação confidencial em qualquer campo do pacote de rede. Em algumas modalidades, o firewall de aplicação 290 identifica na comunicação de rede uma ou mais ocorrências de um número de cartão de crédito, número de seguro social, nome, código de paciente, informação de contato, e idade. A parte codificada da comunicação de rede pode compreender essas ocorrências ou da informação confidencial. Com base nessas ocorrências, em uma modalidade, o firewall de aplicação 290 pode começar a agir na política na comunicação de rede, como, por exemplo, impedir transmissão da comunicação de rede. Em outra modalidade, o firewall de aplicação 290 pode regravar, remover ou mascarar de outro modo tal ocorrência identificada ou informação confidencial.
Ainda com relação à figura 2B, o computador 200 pode incluir um agente de monitoramento de desempenho 197 conforme comentado acima em combinação com a figura 1 D. Em uma modalidade, o computador 200 recebe o agente de monitoramento 197 do serviço de monitoramento 198 ou servidor de monitoramento 106 conforme descrito na figura 1D. Em algumas modalidades, o computador 200 armazena o agente de monitoramento 197 no armazenamento, como, por exemplo, um disco, para distribuir para qualquer cliente ou servidor em comunicação com o computador 200. Por exemplo, em uma modalidade, o computador 200 transmite o agente de monitoramento 197 para um cliente ao receber uma solicitação para estabelecer uma conexão de camada de transporte. Em outras modalidades, o computador 200 transmite o agente de monitoramento 197 ao estabelecer a conexão de camada de transporte com o cliente 102. Em outra modalidade, o computador 200 transmite o agente de monitoramento 197 para o cliente ao interceptar ou detectar uma solicitação para uma página da web. Em ainda outra modalidade, o computador 200 transmite o agente de monitoramento 197 para um cliente ou um servidor em resposta a uma solicitação do servidor de monitoramento 198. Em uma modalidade, o computador 200 trans5 mite o agente de monitoramento 197 para um segundo computador 200' ou computador 205.
Em outras modalidades, o computador 200 executa o agente de monitoramento 197. Em uma modalidade, o agente de monitoramento 197 mede e monitora o desempenho de qualquer aplicação, programa, processo, serviço, tarefa ou execução em cadeia no computador 200. Por exemplo, o agente de monitoramento 197 pode monitorar e medir o desempenho e operação dos yServers 275a-275N. Em outra modalidade, o agente de monitoramento 197 mede e monitora o desempenho de quaisquer conexões de camada de transporte do computador 200. Em algumas modalidades, o agente de monitoramento 197 mede e monitora o desempenho de quaisquer sessões de usuário percorrendo o computador 200. Em uma modalidade, o agente de monitoramento 197 mede e monitora o desempenho de quaisquer conexões de rede privada virtual e/ou sessões percorrendo o computador 200, como, por exemplo, a sessão SSL VPN. Em modalidades adicionais, o agente de monitoramento 197 mede e monitora a memória, uso de CPU e disco e desempenho do computador 200. Em ainda outra modalidade, o agente de monitoramento 197 mede e monitora o desempenho de qualquer técnica de aceleração 288 desempenhada pelo computador 200, como, por exemplo, descarregamento SSL, pooling de conexão e multiplexação, cache, e compressão. Em algumas modalidades, o agente de monitoramento 197 mede e monitora o desempenho de qualquer equilíbrio de carga e/ou comutação de conteúdo 284 realizado pelo computador 200. Em outras modalidades, o agente de monitoramento 197 mede e monitora o desempenho de proteção e processamento do firewall de aplicação 290 realizado pelo computador 200.
C. Aaente Cliente
A figura 3 descreve uma modalidade do agente cliente. O cliente 102 inclui um agente cliente 120 para estabelecer e executar comunicações com o computador 200 e/ou o servidor 106 por via de uma rede 104. Em breve visão geral, o cliente 102 opera no dispositivo de computação 100 sendo dotado de um sistema de operação com um modo kernel 302 e um 5 modo de usuário 303, e uma pilha de rede 310 com uma ou mais camadas 310a a 310b. o cliente 102 pode ter instalada e/ou executar uma ou mais aplicações. Em algumas modalidades, uma ou mais aplicações podem se comunicar por via da pilha de rede 310 com a rede 104. Uma das aplicações, como, por exemplo, um navegador da web, pode também incluir um 10 primeiro programa 322, Por exemplo, o primeiro programa 322 pode ser usado em algumas modalidades para instalar e/ou executar o agente cliente 120, ou qualquer parte do mesmo. O agente cliente 120 inclui um mecanismo de interceptação, ou interceptador 350, para interceptar comunicações de rede da pilha de rede 310 de uma ou mais aplicações.
A pilha de rede 310 do cliente 102 pode compreender qualquer
tipo e forma de software, ou hardware, ou quaisquer combinações dos mesmos, para proporcionar conectividade para e comunicações com uma rede. Em uma modalidade, a pilha de rede 310 compreende uma implementação de software para um conjunto de protocolo de rede. A pilha de rede 310 po20 de compreender uma ou mais camadas de rede, como, por exemplo, quaisquer camadas de rede do modelo de comunicações de Interconexão de sistemas Abertos (OSI) conforme aqueles versados na técnica irão reconhecer e apreciar. Como tal, a pilha de rede 310 pode compreender qualquer tipo e forma de protocolos para qualquer das camadas do modelo OSI que se se25 guem: 1) camada de link físico, 2) camada de link de dados, 3) camada de rede, 4) camada de transporte, 5) camada de sessão, 6) camada de apresentação, e 7) camada de aplicação. Em uma modalidade, a pilha de rede 310 pode compreender um protocolo de controle de transporte (TCP) sobre o protocolo de camada de rede do protocolo Internet (IP), geralmente referi30 do como TCP/IP. Em algumas modalidades, o protocolo IP pode ser transportado sobre o protocolo Ethernet, que pode compreender qualquer família de protocolos de rede de área ampla IEEE (WAN) ou rede de área local (LAN), como, por exemplo, aqueles protocolos cobertos pelo IEEE 802.3. Em algumas modalidades, a pilha de rede 310 pode compreender qualquer tipo e forma de um protocolo sem fio, como, por exemplo, o protocolo IEEE 802.11 e/ou protocolo Internet móvel.
5 Em vista de uma rede com base TCP/lP, pode ser usado qual
quer protocolo com base TCP/IP, incluindo Interface de Programação de Aplicação de Mensagem (MAPI) (e-mail), Protocolo de Transferência de Arquivo (FTP), Protocolo de Transferência HyperText (HTTP), (transferência de arquivo) protocolo de Sistema de Arquivo Internet Comum (CIFS), proto10 colo de Arquitetura de Computação Independente (ICA), Protocolo Desktop Remoto (RDP), Protocolo de Aplicação Sem Fio (WAP), Protocolo IP Móvel, e protocolo Sobre Voz IP (VolP). Em outra modalidade, a pilha de rede 310 pode compreender qualquer tipo ou forma de protocolo de controle de transporte, como, por exemplo, um protocolo de controle de transporte modifica15 do, por exemplo, Transação TCP (T/TCP), TCP com confirmações de seleção (TCP-SACK), TCP com janelas amplas (TCP-LW), um protocolo de previsão de congestão como, por exemplo, o protocolo TCP-Vegas, protocolo spoofing TCP. Em outras modalidades, pode ser usado qualquer tipo e forma de protocolo datagrama de usuário (ÜDP), como, por exemplo, UDP so20 bre IP, pela pilha de rede 310, como, por exemplo, para comunicações de voz ou comunicações de dados em tempo real.
Além disso, a pilha de rede 310 pode incluir um ou mais drivers de rede suportando a uma ou mais camadas, como, por exemplo, um driver TCP ou um driver de camada de rede. Os drivers de rede podem ser incluí25 dos como parte do sistema de operação do dispositivo de computação 100 ou como parte de quaisquer cartões de interface de rede ou outros componentes de acesso de rede do dispositivo de computação 100. Em algumas modalidades, quais dos drivers de rede da pilha de rede 310 podem ser personalizados, modificados ou adaptados para proporcionar uma parte de cos30 tume ou modificada da pilha de rede 310 em suporte de quaisquer técnicas aqui descritas. Em outras modalidades, o programa de aceleração 120 é projetado e construído para operar com ou funcionar em combinação com a pilha de rede 310 instalada ou proporcionada de outro modo pelo sistema de operação do cliente 102.
A pilha de rede 310 compreende qualquer tipo ou forma de interface para receber, obter, proporcionar ou acessar de outro modo qualquer informação e dados relacionados às comunicações de rede do cliente 102. Em uma modalidade, uma interface para a pilha de rede 310 compreende uma interface de programação de aplicação (API). A interface pode compreender qualquer mecanismo de chamada de função, distorção de camada de vídeo ou filtragem, mecanismo de evento ou retribuição de chamada, ou qualquer tipo de técnica de interface. A pilha de rede 310 por via da interface pode receber ou proporcionar qualquer tipo ou forma de estrutura de dados, como, por exemplo, um objeto, relacionado à funcionalidade ou operação da pilha de rede 310. Por exemplo, a estrutura de dados pode compreender informação e dados relacionados a um pacote de rede ou um ou mais pacotes de rede. Em algumas modalidades, a estrutura de dados compreende uma parte do pacote de rede processado em uma camada de protocolo da pilha de rede 310, como, por exemplo, um pacote de rede da camada de transporte. Em algumas modalidades, a estrutura de dados 325 compreende uma estrutura de dados de nível kernel, enquanto em outras modalidades, a estrutura de dados 325 compreende uma estrutura de dados de modo de usuário. Uma estrutura de dados de nível kernel compreende uma estrutura de dados obtida ou relacionada a uma parte da pilha de rede 310 operando no modo kernel 302, ou um driver de rede ou outro software executando no modo kernel 302, ou qualquer estrutura de dados obtida ou recebida por um serviço, processo, tarefa, cadeia ou outras instruções executáveis executando ou operando no modo kernel do sistema de operação.
Adicionalmente, as mesmas partes da pilha de rede 310 podem executar ou operar no modo kernel 301, por exemplo, o link de dados ou a camada de rede, enquanto outras partes executam ou operam no modo de 30 usuário 303, como, por exemplo, uma camada de aplicação da pilha de rede 310. Por exemplo, uma primeira parte 310a da pilha de rede pode proporcionar acesso ao modo de usuário para a pilha de rede 310 para uma aplicação enquanto uma segunda parte 310a da pilha de rede 310 proporciona acesso para uma rede. Em algumas modalidades, uma segunda parte 310a da pilha de rede pode compreender uma ou mais camadas superiores da pilha de rede 310, como, por exemplo, das camadas 5 a 7. Em outras modalidades, 5 uma segunda parte 310b da pilha de rede 310 compreende uma ou mais camadas inferiores, como, por exemplo, qualquer das camadas 1 a 4. Cada da primeira parte 310a e segunda parte 310b da pilha de rede 310 pode compreender qualquer parte da pilha de rede 310, em qualquer uma ou mais camadas, no modo de usuário 203, no modo kernel 202, ou combinações 10 dos mesmos, ou em qualquer parte da camada de rede ou ponto de interface para uma camada de rede ou qualquer parte do ou ponto de interface para o modo de usuário 203 e modo kernel 203.
O interceptor 350 compreende software, hardware, ou qualquer combinação de software e hardware. Em uma modalidade, o interceptor 350 intercepta uma comunicação de rede em qualquer ponto na pilha de rede 310, e redireciona e transmite a comunicação de rede para um destino desejado, gerenciado ou controlado pelo interceptor 350 ou o agente cliente 120. Por exemplo, o interceptor 350 pode interceptar uma comunicação de rede de uma pilha de rede 310 de uma primeira rede e transmitir a comunicação de rede para o computador 200 para transmissão na segunda rede 104. Em algumas modalidades, o interceptor 350 compreende qualquer tipo de interceptor 350 que compreende um driver, como, por exemplo, um driver de rede construído e projetado para interfacear e funcionar com a pilha de rede 310. Em algumas modalidades, o agente cliente 120 e/ou o interceptor 350 opera em uma ou mais camadas da pilha de rede 310, como, por exemplo, a camada de transporte. Em uma modalidade, o interceptor 350 compreende um driver de filtro, um mecanismo "hooking", ou qualquer forma e tipo de interface de driver de rede adequada que interfaceie para a camada de transporte da pilha de rede, como, por exemplo, por via da interface de driver de transporte (TDI). Em algumas modalidades, o interceptor 350 interfacia com uma primeira camada de protocolo, como, por exemplo, a camada de transporte e outra camada de protocolo, como, por exemplo, qualquer camada acima da camada de protocolo de transporte, por exemplo, uma camada de protocolo de aplicação. Em uma modalidade, o interceptor 350 pode compreender um driver que cumpra com a Especificação de Interface de Driver de Rede (NDIS), ou um driver NDIS. Em outra modalidade, o interceptor 350 pode compreender um minifiltro ou um driver de miniporta. Em uma modalidade, o interceptor 350 ou parte do mesmo, opera no modo kernel 202. Em outra modalidade, o interceptor 350 ou parte do mesmo, opera no modo de usuário 203. Em algumas modalidades, uma parte do interceptor 350 opera no modo kernel 202 enquanto outra parte do interceptor 350 opera no modo usuário 203. Em outra modalidade, o agente cliente 120 opera no modo de usuário 203, mas interfacia por via do interceptor 350 com um driver de modo kemel, processo, serviço, tarefa ou parte do sistema de operação, como, por exemplo, para obter uma estrutura de dados de nível kernel 225. Em modalidades adicionais, o interceptor 350 é uma aplicação ou programa de modo de usuário, como, por exemplo, aplicação.
Em uma modalidade, o interceptor 350 intercepta qualquer solicitação de conexão de camada de transporte. Nessas modalidades, o interceptor 350 executa chamadas de interface de programação de aplicação de camada de transporte (API) chama para ajuste de informação de destino, como, por exemplo, endereço IP de destino e/ou porta para um local desejado para o local. Dessa maneira, o interceptor 350 intercepta e redireciona a conexão de camada de transporte para um endereço IP e porta controlada ou gerenciada pelo interceptor 350 ou agente cliente 120. Em uma modalidade, o interceptor 350 ajusta a informação de destino para a conexão para um endereço IP local e porta do cliente 102 na qual o agente cliente 120 é escutado. Por exemplo, o agente cliente 120 pode compreender um serviço Proxy escutando em um endereço IP local e porta para redirecionar as comunicações de camada de transporte. Em algumas modalidades, o agente cliente 120 então comunica a camada de transporte redirecionada comunicando para o computador 200.
Em algumas modalidades, o interceptor 350 intercepta uma solicitação de Serviço de Nome de Domínio (DNS). Em uma modalidade, o agente cliente 120 e/ou interceptor 350 soluciona a solicitação DNS. Em outra modalidade, o interceptor transmite a solicitação DNS interceptada para o computador 200 para a resolução DNS. Em uma modalidade, o computador 200 soluciona a solicitação DNS e comunica a resposta DNS para o agente 5 cliente 120. Em algumas modalidades, o computador 200 soluciona a solicitação DNS por via de outro computador 200' ou um servidor DNS 106.
Em ainda outra modalidade, o agente cliente 120 pode compreender dois agentes 120 e 120'. Em uma modalidade, um primeiro agente 120 pode compreender um interceptor 350 operando na camada de rede da 10 pilha de rede 310. Em algumas modalidades, o primeiro agente 120 intercepta solicitações de camada de rede como, por exemplo, solicitações de Protocolo de Mensagem de Controle Internet (ICMP) (por exemplo, ping e rastreio de rota).Em outras modalidades, o agente cliente 120' pode operar na camada de transporte e interceptar as comunicações da camada de transporte. 15 Em algumas modalidades, o primeiro agente 120 intercepta comunicações em uma camada da pilha de rede 210 e interfacia com ou comunica a comunicação interceptada para a segunda camada 120'.
O agente cliente 120 e/ou interceptor 350 pode operar em ou interfacear com uma camada de protocolo em uma maneira transparente para qualquer outra camada de protocolo da pilha de rede 310. Por exemplo, em uma modalidade, o interceptor 350 opera ou interfacia com a camada de transporte da pilha de rede 310 transparentemente para qualquer camada de protocolo abaixo da camada de transporte, como, por exemplo, a camada de rede, e qualquer camada de protocolo acima da camada de transporte, como, por exemplo, os protocolos de camada de sessão, apresentação ou aplicação. Isso permite que outras camadas de protocolo da pilha de rede 310 operem conforme descrito e sem modificação para usar o interceptor 350. Como tal, o agente cliente 120 e/ou o interceptor 350 pode interfacear com a camada de transporte para prender, otimizar, acelerar, rotear ou equilibrar a carga de qualquer comunicação proporcionada por via de qualquer protocolo transportado pela camada de transporte, como, por exemplo, protocolo de camada de aplicação sobre o TCP/IP. Além disso, o agente cliente 120 e/ou o interceptor pode operar em ou interfacear com a pilha de rede 310 em uma maneira transparente para qualquer aplicação, um usuário do cliente 102, e qualquer outro dispositivo de computação, como, por exemplo, um servidor, em comunicação com 5 o cliente 102. O agente cliente 120 e/ou interceptor 350 pode ser instalado e/ou executado no cliente 102 em uma maneira sem modificação de uma aplicação. Em algumas modalidades, o usuário do cliente 102 ou um dispositivo de computação em comunicação com o cliente 102 não estão cientes da existência, execução ou operação do agente cliente 120 e/ou interceptor 10 350. Como tal, em algumas modalidades, o agente cliente 120 e/ou o interceptor 350 é instalado, executado, e/ou operado transparentemente para uma aplicação, usuário do cliente 102, outro dispositivo de computação, como, por exemplo, um servidor, ou qualquer das camadas de protocolo acima e/ou abaixo da camada de protocolo interfaceada pelo interceptor 350.
O agente cliente 120 inclui um programa de aceleração 302, um
cliente contínuo 306, um agente de coleta 304, e/ou agente de monitoramento 197. Em uma modalidade, o agente cliente 120 compreende um cliente de Arquitetura de Computação Independente (ICA), ou qualquer parte do mesmo, desenvolvido por Citrix systems, Inc. de Fort Lauderdale, Florida, e é 20 também referido como um cliente ICA. Em algumas modalidades, o cliente 120 compreende um cliente contínuo de aplicação 306 para fluir uma aplicação de um servidor 106 para um cliente 102. Em algumas modalidades, o agente cliente 120 compreende um programa de aceleração 302 para acelerar as comunicações entre o cliente 102 e o servidor 106. Em outra modali25 dade, o agente cliente 120 inclui um agente de coleta 304 para desempenhar detecção de ponto final / exame e coleta da informação de ponto final para o computador 200 e/ou servidor 106.
Em algumas modalidades, o programa de aceleração 302 compreende programa de aceleração de lado de cliente para desempenhar uma ou mais técnicas de aceleração para acelerar, aumentar ou aperfeiçoar de outro modo uma comunicação de cliente com e/ou para um servidor 106, como, por exemplo, acessar uma aplicação proporcionada por um servidor 106. O lógico, funções, e/ou operações das instruções executáveis do programa de aceleração 302 pode executar uma ou mais das técnicas e aceleração: 1) compressão de protocolo múltiplo, 2) pooling do protocolo de controle de transporte, 3) multiplexação do protocolo de controle de transporte, 5 4) utilização da memória intermediária do protocolo de controle de transporte, e 5) cache por via de um gerenciador de cache. Adicionalmente, o programa de aceleração 302 pode executar criptografia e/ou decodificação de quaisquer comunicações recebidas e/ou transmitidas pelo cliente 102. Em algumas modalidades, o programa de aceleração 302 realiza uma ou mais 10 técnicas de aceleração em uma maneira ou modo integrado. Adicionalmente, o programa de aceleração 302 pode executar compressão em qualquer dos protocolos, ou protocolos múltiplos, transportados como uma carga útil de um pacote de rede do protocolo de camada de transporte.
O cliente contínuo 306 compreende uma aplicação, programa, processo, serviço, tarefa ou instruções executáveis para receber e executar aplicação fluida de um servidor 106. Um servidor 106 pode fluir um ou mais arquivos de dados de aplicação para o cliente contínuo 306 para acionar, executar ou de outro modo levar a aplicação a ser executada no cliente 102. Em algumas modalidades, o servidor 106 transmite um conjunto de arquivos de dados de aplicação condensado ou empacotado para o cliente fluindo 306. Em algumas modalidades, a pluralidade de arquivos de aplicação são condensados e armazenados em um servidor de arquivo dentro de um arquivo morto como, por exemplo, um CAB, ZIP, SIT, TAR, JAR ou outro arquivo morto. Em outra modalidade, o servidor 106 descompacta, desempacota ou desarquiva os arquivos de aplicação e transmite os arquivos para o cliente 102. Em outra modalidade, o cliente 102 descompacta, desempacota ou desarquiva os arquivos de aplicação. O cliente contínuo 306 dinamicamente instala a aplicação, ou parte da mesma, e executa a aplicação. Em uma modalidade, o cliente contínuo 306 pode ser um programa executável. Em algumas modalidades, o cliente contínuo 306 pode ser capaz de lançar outro programa executável.
O agente de coleta 304 compreende uma aplicação, programa, processo, serviço, tarefa ou instruções executáveis para identificar, obter e/ou coletar informação sobre o cliente 102. Em algumas modalidades, a aplicação 200 transmite o agente de coleta 304 para o cliente 102 ou agente cliente 120. O agente de coleta 304 pode ser configurado de acordo com 5 uma ou mais políticas do mecanismo de política 236 do computador. Em outra modalidade, o agente de coleta 304 transmite a informação coletada no cliente 102 para o computador 200. Em uma modalidade, o mecanismo de política 236 do computador 200 usa a informação coletada e proporciona controle de acesso, autenticação e autorização da conexão do cliente para 10 uma rede 104.
Em uma modalidade, o agente de coleta 304 compreende uma detecção de ponto final e mecanismo de varredura, que identifica e determina um ou mais atributos ou características do cliente. Por exemplo, o agente de coleta 304 pode identificar e determinar um ou mais dos atributos do lado 15 cliente que se seguem: 1) o sistema de operação e/ou uma versão do sistema de operação, 2) um pacote de serviço do sistema de operação, 3) um serviço de execução, 4) um processo de execução, e 5) um arquivo. O agente de coleta 34 pode também identificar e determinar a presença ou versões de um ou mais do que se segue no cliente: 1) software antivírus, 2) software 20 firewall pessoal, 3) software anti span, e 4) software de segurança da Internet. O mecanismo de política 236 pode ser dotado de uma ou mais políticas com base em qualquer um ou mais dos atributos ou características do cliente ou atributos do lado cliente.
Em algumas modalidades, o agente cliente 120 inclui um agente 25 de monitoramento 197 conforme comentado em combinação com as figuras 1D e 2B. O agente de monitoramento 197 pode ser qualquer tipo e forma de roteiro, como, por exemplo, um Básico Visual ou Java roteiro. Em uma modalidade, o agente de monitoramento 129 monitora e mede o desempenho de qualquer parte do agente cliente 120. Por exemplo, em algumas modali30 dades, o agente de monitoramento 129 monitora e mede o desempenho do programa de aceleração 302. Em outra modalidade, o agente de monitoramento 129 monitora e mede o desempenho do cliente contínuo 306. Em outras modalidades, o agente de monitoramento 129 monitora e mede o desempenho do agente de coleta 304. Em ainda outra modalidade, o agente de monitoramento 129 monitora e mede o desempenho do interceptor 350. Em algumas modalidades, o agente de monitoramento 129 monitora e mede qualquer recurso do cliente 102, como, por exemplo, memória, CPU e disco.
O agente de monitoramento 197 pode monitorar e medir o desempenho de qualquer aplicação do cliente. Em uma modalidade, o agente de monitoramento 129 monitora e mede o desempenho de um navegador no cliente 102. Em algumas modalidades, o agente de monitoramento 197 monitora e mede o desempenho de qualquer aplicação distribuída por via do agente cliente 120. Em outras modalidades, o agente de monitoramento 197 mede e monitora tempos de resposta de usuário para uma aplicação, como, por exemplo, tempos de resposta baseados na web ou HTTP. O agente de monitoramento 197 pode monitorar e medir o desempenho de um cliente ICA ou RDP. Em outra modalidade, o agente de monitoramento 197 mede e monitora para uma sessão de usuário ou sessão de aplicação. Em algumas modalidades, o agente de monitoramento 197 mede e monitora uma sessão ICA ou RDP. Em uma modalidade, o agente de monitoramento 197 mede e monitora o desempenho do computador 200 na aceleração de distribuição de uma aplicação e/ou dados para o cliente 102.
Em algumas modalidades e ainda com relação à figura 3, pode ser usado um primeiro programa 322 para instalar e/ou executar o agente cliente 120, ou parte do mesmo, como, por exemplo, o interceptor 350, automaticamente, silenciosamente ou de modo transparente, ou de outra ma25 neira. Em uma modalidade, o primeiro programa 322 compreende um componente de conexão, como, por exemplo, um controle ActiveX ou controle Java ou roteiro que esteja situado em e executado por uma aplicação. Por exemplo, o primeiro programa compreende um controle Active X situado e executado por uma aplicação de navegador da web, como, por exemplo, no 30 espaço de memória ou contexto da aplicação. Em outra modalidade, o primeiro programa 322 compreende um conjunto de instruções executáveis carregadas em e executadas pela aplicação, como, por exemplo, um navegador. Em uma modalidade, o primeiro programa 322 compreende um programa projetado e construído para instalar o agente cliente 120. Em algumas modalidades, o primeiro programa 322 obtém, carrega, ou recebe o agente cliente 120 por via da rede de outro dispositivo de computação. Em outra 5 modalidade, o primeiro programa 322 é um programa instalador ou um plugue e aciona o gerenciador para instalar programas, como, por exemplo, drivers de rede, no sistema de operação do cliente 102.
D. Sistemas e Métodos para configurar e usar expressões de política orientada de obieto
Com relação à figura 4A, está ilustrado um exemplo de uma par
te de um modelo de objeto usado para facilitar o processamento de dados HTTP. Em breve visão geral, as classes de objetos são definidas por uma série de elementos no protocolo HTTP. As classes definidas incluem uma solicitação 405, resposta 410, "hostname" (nome dado a um computador de 15 forma a facilitar sua ligação) 415, uri 420, consulta 425, "cookie" 430, e texto 435. Cada classe é definida para incluir um número de campos e/ou métodos, que possam incluir ou retornar objetos correspondentes a outras classes ou possam incluir ou retornar outros tipos de dados, como, por exemplo, inteiros.
Ainda com relação à figura 4A, agora mais detalhadamente, um
modelo de objeto pode compreender um conjunto de classes de objeto definidas que permitam que um dispositivo de computador especifique e manipule dados, e/ou conjunto de classes de objetos definido que permita que um usuário de um dispositivo de computação direcione as operações do dis25 positivo de computação. Um modelo de objeto pode ser dotado de quaisquer propriedades associadas com o projeto orientado de objeto ou programação incluindo, sem limitação, herança, abstração, condensação, e polimorfismo. Exemplos dos modelos de objeto que podem ser usados em combinação com as expressões orientadas de objeto aqui descritas incluem, sem Iimita30 ção, o modelo de objeto Java, Modelo de Objeto de Componente (COM), e o Modelo de Objeto de Documento (DOM) HTML, e qualquer parte ou combinação de partes desses modelos. Em algumas modalidades, um modelo de objeto ou uma parte de um modelo de objeto pode corresponder a um protocolo. Por exemplo, um modelo de objeto pode ser criado para representar as comunicações HTTP, com o modelo de objeto proporcionando classes e métodos para acessar e manipular as comunicações HTTP. Ou um modelo de 5 objeto pode ser criado para representar as comunicações TCP, IP, UDP, ICA, ou SSL. Ou um modelo de objeto pode ser criado para representar uma aplicação, como modelo de objeto proporcionando classes e métodos para acessar e manipular informação de estado relacionada a um computador de rede 200.
Uma classe de objeto pode compreender uma descrição abstra
ta de um objeto e quaisquer métodos associados ao objeto. Um objeto, uma ocorrência particular de uma classe, pode representar qualquer tipo ou formulário de dados, processo, ou protocolo. Objetos exemplificativos podem incluir, sem limitação, seqüências, texto, números, listas, protocolos, fluxos 15 de dados, conexões, dispositivos, estruturas de dados,sistemas, e pacotes de rede.
Uma classe de objeto pode ser dotada de uma série de membros. Um membro de uma classe de objeto pode compreender qualquer campo, método, construtor, propriedade, ou variável especificada pela classe de objeto. Em algumas modalidades, um membro de uma classe de objeto pode compreender um objeto de uma segunda classe de objeto. Por exemplo, na modalidade ilustrada, a classe de objeto "http_request" 405 contém um método "getUrl" que retorna um objeto uri. Em outras modalidades, um membro de uma classe de objeto pode ser um tipo de dados primitivos de uma arquitetura básica, como, por exemplo, um inteiro, número de ponto flutuante, byte, arranjo, ou variável booleana. Por exemplo, a classe "cookie" contém um campo "contar" que é um inteiro identificando o número dos pares de valor de nome na lista. Em ainda outra modalidade, um membro da classe de objeto pode compreender uma constante. Em ainda outras modalidades, um membro de uma classe de objeto pode compreender um método.
Em alguns casos, um membro de uma classe de objeto pode ser definido na definição de classe de objeto. Em outros casos, um membro de uma classe de objeto pode ser definido em uma classe principal da classe de objeto. Em ainda outros casos, um membro de uma classe de objeto pode ser definido em um principal da classe de objeto e modificado na defini5 ção de classe para o objeto. Por exemplo, tanto a classe "cookie" 430 quanto a de "consulta" 425 herdam os métodos "getName" e "getValue" da sua classe principal "list_nv" que é uma classe representando listas dos pares de valor de nome.
Na modalidade ilustrada, a classe http_request 405 contém uma 10 série de métodos que podem ser usados para processar uma solicitação HTTP. Os campos e métodos podem ser proporcionados para identificar e manipular qualquer parte ou partes de uma solicitação HTTP incluindo, sem limitar, a URL, "cookie", corpo, tipo de conteúdo, data, versão, e "hostname". Em uma modalidade, pode ser proporcionado um método ou métodos para 15 determinar se um determinado fluxo de dados é uma solicitação HTTP formatada válida. Pode também ser proporcionada uma classe similar e/ou métodos para uma resposta HTTP.
A classe uri 420 ilustrada pode compreender qualquer número de campos e métodos para operar e identificar uma uri. Em uma modalidade, a uri pode conter métodos para analisar um ou mais "hostname", porta, servidor, domínio, sufixo de arquivo, caminho, e consulta. Em uma modalidade, a uri pode ser uma subclasse de um objeto de texto geral, que pode permitir que a uri seja tratada como texto não formatado. Por exemplo, a classe uri 420 pode ser uma subclasse da classe de texto 435. Em uma modalidade, a classe uri pode compreender métodos para re-escrever toda ou uma parte da uri. Em algumas modalidades, a classe uri pode ser aplicada a qualquer parte do texto. Por exemplo, a classe uri pode compreender um construtor que aceite uma seqüência de texto e crie um objeto uri pela análise da seqüência. Nessas e em outras modalidades, a classe uri pode compreender um método para indicar se uma URL é uma URL formatada apropriadamente. Em algumas modalidades, uma classe URL pode compreender um método para identificar uma ou mais URLs em uma seqüência de texto. Por exemplo, pode ser proporcionado um método estático "findURL" que retorne uma lista de URLs formatadas validamente em uma determinada seqüência de texto. Esse método pode ser usado, por exemplo, para encontrar um número de URLs contido no corpo de uma resposta HTTP. A classe 5 uri pode então proporcionar métodos para modificar uma ou mais das URLs encontradas.
A classe "cookie" 430 pode compreender qualquer número de campos e métodos para identificar e processar uma "cookie". Em uma modalidade, a "cookie" pode ser uma "cookie" HTTP. Na modalidade ilustrada, a classe "cookie" representa uma "cookie" como uma lista de pares de valor de nome. O método "getValue", em resposta ao recebimento de um número n pode retornar um objeto de texto do valor nth na lista. O método getName, em resposta ao recebimento de um número n pode retornar um objeto de texto do valor nth no nome. Em outras modalidades, uma "cookie" pode ser representada usando qualquer outra sintaxe ou tipo de dados incluindo, sem limitar, uma seqüência, ou lista ligada. Em algumas modalidades, a classe "cookie" pode proporcionar um método para inserir e/ou alterar uma "cookie". Em outras modalidades, uma resposta HTTP ou classe de objeto de solicitação pode proporcionar um método para inserir ou modificar uma "cookie" contida em uma solicitação ou resposta.
A classe de "texto" 435 ilustrada pode compreender qualquer número de campos e/ou métodos para operar em uma seqüência de texto. Uma seqüência de texto pode compreender qualquer seqüência de bytes capaz de ser tratada como caracteres. Em algumas modalidades, um objeto 25 de texto pode compreender uma seqüência de bytes discreta. Em outras modalidades, o objeto de texto pode compreender um ou mais bytes de um fluxo de byte. Nessas modalidades, um objeto de texto pode ser usado para operar em partes do fluxo de byte mesmo que não tenha sido recebido todo o fluxo. Os métodos que podem ser usados em combinação com os objetos 30 de texto podem incluir, sem limitação, comparações, truncamentos, pesquisas, ordenações, e pesquisa e equiparação de expressão regular. Por exemplo, pode ser proporcionado um método para determinar se é encontrada uma determinada seqüência secundária dentro de um objeto de texto. Ou1 por exemplo, pode ser proporcionado um método para determinar uma parte de um objeto de texto precedendo um caractere especial. Ou, por exemplo, pode ser proporcionado um método para identificar uma seqüência de texto seguindo uma determinada expressão regular.
Em algumas modalidades, os métodos podem também ser proporcionados para formatar ou confirmar formatação de texto de maneira que possa ser processado por outras classes e/ou métodos. Por exemplo, pode ser proporcionado um método que assegure que o objeto de texto possa ser 10 tratado como XML. Esse método poderia verificar se o objeto de texto está de acordo com os padrões para formatar XML apropriada e não contenha quaisquer malícias ou erros inadvertidos. Ou, por exemplo, pode ser proporcionado um método similar para determinar se uma seqüência de texto pode ser tratada como uma URL. O método pode, por exemplo, encontrar e subs15 tituir quaisquer caracteres que precisem ser substituídos para seqüências de escape de maneira que o objeto de texto esteja de acordo com as convenções de formatação URL apropriadas.
Um modelo de objeto pode ser implementado usando quaisquer estruturas de dados físicas ou outras implementações físicas básicas. Em algumas modalidades, um número de objetos pode acessar o mesmo objeto na memória física para executar os métodos associados com cada objeto. Em uma modalidade, o modelo de objeto ilustrado pode ser implementado de maneira que uma pluralidade de ocorrências de objeto opere em um fluxo de dado básico, sem precisar produzir cópias separadas do fluxo de dados para cada ocorrência de objeto. Para proporcionar um exemplo detalhado, com relação ao modelo de objeto ilustrado, uma aplicação pode receber uma comunicação HTTP de um cliente e armazenar na memória. A aplicação pode então executar identificação de um objeto http_request, e então chamar funções na classe de objeto http_request 305 para obter uma uri e/ou um objeto "cookie". O computador pode então chamar funções ou campos de referência adicionais na uri e objetos "cookie". Alguns dos ou todos os métodos podem operar pela análise de algum ou de todo fluxo de dados básico, e então retornar referências para partes do fluxo. Por exemplo, um objeto uri pode armazenar locais de memória começando e terminando da uri do fluxo de dados básico. Cada método da classe uri pode então analisar e/ou modificar partes dos dados dentro dos locais de memória identificados. Dessa 5 maneira, o computador pode ser capaz de processar um fluxo de dados usando um modelo de objeto sem precisar manter cópias adicionais no fluxo de dados.
Em outras implementações, uma ou mais cópias adicionais de algum ou de todo fluxo de dados pode ser feita com relação a alguns objetos. Esses objetos podem executar operações em uma cópia de uma parte de fluxo de dados, e, conforme possa ser apropriado, atualizar o fluxo de dados com qualquer alteração feita na cópia.
O modelo de objeto ilustrado e outros podem especificar classes de objeto e estruturas de dados que possam ser aplicadas a qualquer fluxo de entrada. Por exemplo, o modelo de objeto ilustrado pode ser usado para tratar qualquer fluxo de entrada como um objeto http_request, e então utilizar qualquer funcionalidade proporcionada pela classe de objeto http_request. Ademais, apesar do modelo de objeto ilustrado se relacionar a dados HTTP, podem ser usados outros modelos de objeto para proporcionar funcionalidade com relação aos fluxos TCP, SSL, ou ICA. Em algumas modalidades, pode ser proporcionado um modelo de objeto e implementação de maneira que um computador possa selecionar de um número de modelos de objeto para processar um determinado fluxo de dados. Por exemplo, ao receber um determinado fluxo de dados, uma aplicação pode determinar que o fluxo de dados é um fluxo ICA, e aplicar um modelo de objeto apropriado para processar os itens ICA. Contudo, se os dados HTTP forem transmitidos dentro de um fluxo ICA, o computador pode também aplicar um modelo de objeto HTTP, como, por exemplo, um ilustrado, para processar os dados HTTP. Dessa maneira, um computador pode especificar qualquer estrutura ou estruturas para aplicar em um fluxo de dados recebido.
A figura 4B ilustra um exemplo de tela de documentação para uma classe de objeto representando uma URL. Em breve visão geral, a tela de documentação compreende uma lista parcial de um número de métodos e um construtor para a classe "http_url_t", que representa uma URL. A tela de documentação indica um número dos métodos que são implementados na classe "http_url_t", e um número dos métodos implementados na classe 5 principal "text_t". Essas classes podem corresponder às classes "uri" e "texto" descritas com relação à figura 4A.
A figura 4C ilustra um número de expressões orientadas de objeto para uso em um mecanismo de política. Em breve visão geral, uma expressão orientada de objeto 400 contém um número de classes de objeto, 10 que pode corresponder aos protocolos, objetos de protocolos, estruturas de dados, e tipos de dados. Uma expressão orientada de objeto pode especificar um membro de um objeto identificador, que pode compreender métodos, tipos de dados, ou outras classes de objeto. Está ilustrado um número de expressões orientadas de objeto exemplificativo 400a, 400b, 400c. Essas 15 expressões orientadas de objeto podem ser usadas por um dispositivo de rede no desempenho de qualquer função incluindo, sem limitação, análise de fluxos de tráfego, identificação de propriedades de sistema, equilíbrio de carga, comutação de conteúdo e segurança de aplicação.
Ainda com relação à figura 4C, agora mais detalhada, as expressões orientadas de objeto podem compreender qualquer expressão que permita a especificação dos dados e funções com relação a modelo de objeto. Uma primeira expressão orientada de objeto exemplificativa 400 identifica uma classe de objeto e um número de classe de objeto. Na sintaxe das expressões orientadas de objeto ilustradas, um número de um objeto está designado por um período seguindo o objeto e então uma seqüência nomeando o membro do objeto. Por exemplo, HTTP.REQ identifica o método do membro nomeado "REQ" para o objeto HTTP. Nesse exemplo, os nomes do método podem ser todos indicados em caixa-alta. Em outras modalidades, pode ser usada qualquer outra sintaxe para especificar expressões orientadas de objeto. Exemplificativos de sintaxes que podem ser usadas incluem, sem limitação, a sintaxe ou combinação de sintaxes de ActionRoteiro, Java, JavaRoteiro1 C2, Visual FoxPro, VB.Net, C++, Python, Perl, PHP, Ruby e/ou Objective-C.
Na expressão orientada de objeto exemplificativa 400a, a expressão identifica o protocolo HTTP. Em uma modalidade, HTTP pode corresponder a uma classe de objeto, uma classe de objeto abstrato, uma clas5 se de objeto estático, ou qualquer outro componente de um modelo de objeto. Em algumas modalidades, HTTP pode ser uma classe principal de um número de classes de objeto usado para representar e processar comunicações HTTP. Em outras modalidades, "HTTP" pode ser uma classe estática ou método compreendendo um ou mais objetos e/ou métodos referentes à 10 representação e processamento das comunicações HTTP. Por exemplo, a expressão "HTTP.REQ" pode retornar um objeto correspondente a uma solicitação HTTP dentro de um fluxo de dados. Em uma modalidade, esse objeto pode ser uma ocorrência de uma classe de objeto como, por exemplo, uma classe "http_request" comentada na figura 4A. Na modalidade ilustrada, 15 a expressão 400a pode retomar um valor booleano indicando se "Joe" está contido em um valor nomeado "id" na parte de consulta de uma URL de uma solicitação HTTP.
A expressão orientada de objeto exemplificativa 400b proporciona um "typecasting" (exemplo de composição com tipos móveis) explícito, que pode ser usado para especificar estrutura com relação às partes arbitrárias de um fluxo de dados. No exemplo, a seqüência retornada de um item de registro inicial de solicitação HTTP correspondente a um AcceptLanguage é explicitamente "typecast" em uma lista. O método TYPECAST_TO_LIST aceita como um argumento o delimitador de lista, e retorna uma lista com base no delimitador. A expressão então identifica um método CONTÉM para determinar se um dos elementos é "en". Esse exemplo 400b pode ser usado para configurar um dispositivo para detectar se uma solicitação HTTP indica que o solicitante aceita Inglês como uma linguagem. Em algumas modalidades, um modelo de objeto e sintaxe de expressão podem seguir um fluxo de dados para ser "typecast" explicitamente em uma classe de objeto. Isso pode permitir que um usuário configure um dispositivo para especificar estruturas arbitrárias com relação a um fluxo de dados. Isso pode sucessivamente permitir que um usuário alavanque conhecimento de um protocolo ou convenção para formatar fluxos de entrada em uma maneira conveniente para processamento.
Como outro exemplo de um "typecasting" explícito, a expressão 5 HTTP.RES.HEADER("Location").TYPECAST_TO_URL.QUERY pode ser usada para "typecase" um elemento do registro principal HTTP de maneira que seja tratado como uma URL. "Typecasting" os elementos de texto para uma URL, os métodos de processamento URL podem ser disponibilizados para analisar conteúdo em qualquer parte de um fluxo de tráfego de rede.
Em algumas modalidades, podem ser usadas duas ou mais ex
pressões orientadas de objeto em combinação com um operador, como, por exemplo, AND (E), OR (OU), NOT (NÃO), GREATER THAN (MAIOR DO QUE), ou LESS THAN (MENOR DO QUE), para produzir um valor. Por exemplo, na expressão 400c duas expressões que podem retornar valores 15 booleanos são unidas com um operador OR. O resultado da expressão combinada será OR dos valores retornados pelas duas expressões. Em outras modalidades, os operadores podem funcionar com relação a quaisquer objetos ou tipos de dados incluindo, sem limitação, inteiros, números de ponto flutuantes, e seqüências.
Apesar dos exemplos específicos ilustrados refletirem declara
ção orientada de objeto no contexto de um modelo de objeto HTTP, as declarações orientadas de objeto e modelos podem ser usados para acessar quaisquer partes de tráfego de rede passando através de um dispositivo. Além disso, as declarações orientadas de objeto e modelos podem ser usa25 dos para acessar propriedades de sistema de um dispositivo, ou propriedades de uma determinada conexão ou dispositivo conectado.
Em uma modalidade, pode ser usada uma expressão orientada de objeto para comportamento de dispositivo de rede de base em quaisquer propriedades do dispositivo. Por exemplo, a expressão 30 SYS.TIME.WITHIN(time1 .time2) pode ser usada para basear comportamento baseado em um tempo do dia, ou dia do ano. Ou por exemplo, a expressão SYS.CONNECTION.SSL_OPEN.COUNT pode ser usada para retornar uma contagem do número total de conexão SSL que estão presentemente abertas com um sistema, Em ambos os exemplos, o objeto SYS representa o sistema executando a política, e é proporcionado um número de métodos e/ou campos dentro do objeto SYS para acessar informação sobre o status do sistema.
Em outra modalidade, pode ser usada uma expressão orientada de objeto para basear comportamento de dispositivo de rede em quaisquer propriedades de um cliente conectado ao dispositivo. Em uma modalidade, pode ser proporcionado um objeto "CLIENTE" para representar as proprie10 dades de um cliente enviando ou recebendo um fluxo de dados processado presentemente. Por exemplo, a expressão: CLIENT.IP.SR.IN_SUBNET(10.100.202.0/24), pode ser usada para retornar um valor verdadeiro / falso baseado em se um cliente correspondente a um fluxo de dados está em uma determinada sub-rede. Ou, por exemplo, a expressão 15 CLIENT.AGENT.VERSION_NUM pode ser usada par recuperar o número da versão de um agente cliente executando no cliente. Ou, por exemplo, a expressão: CLIENT.VLAN.VIRTUALJP pode ser usada para acessar o endereço IP virtual de um cliente.
Em ainda outra modalidade, pode ser usada uma expressão ori20 entada de objeto para basear um comportamento de dispositivo de rede em qualquer propriedade de um servidor conectado ao dispositivo. Por exemplo, SERVER.METRICS.HTTP.AVG_RESP_TIME pode ser usada para acessar a média do tempo de resposta de um servidor para gerar solicitações HTTP. Ou, por exemplo, SERVER.ICA.MAX_CONNECTIONS. pode ser usada para 25 identificar um número máximo de conexões ICA especificadas para um determinado servidor. Ou, por exemplo, SERVER.ETHER.HEADER pode ser usada para identificar os registros iniciais de pacote ethernet de uma determinada conexão para um servidor.
Em algumas modalidades, a expressão orientada de objeto pode ser usada para isolar uma determinada quantidade de uma comunicação antes ou durante o processamento. Por exemplo, uma aplicação servindo como um Proxy para comunicações HTTP pode querer basear algum comportamento em uma parte inicial da resposta. Nesse caso, pode ser desejável apenas isolar uma parte da resposta, de maneira que o tempo de resposta ponta a ponta não sofra indevidamente. Em uma modalidade, uma expressão pode especificar um número de bytes para receber antes de uma 5 expressão ser avaliada. Por exemplo, a expressão HΊΓTP.REQ.getBody(500).TYPECAST_TO_NV_LIST(,=,,,&').getValue("id,,) pode ser usada para isolar os primeiros bytes de um corpo de solicitação HTTP, e então tratar aqueles bytes como uma lista de pares de valor de nome. A expressão então especifica para obter o valor correspondente ao no10 me "id".
A figura 5 ilustra um exemplo de uma política que pode ser usada na configuração de um dispositivo. Em breve visão geral, uma política 500 compreende uma expressão 510 que pode ser avaliada no contexto de uma regra 505. Uma política 500 pode também compreender uma ação 515 que especifica uma maneira de agir se a regra for satisfeita.
Ainda com relação à figura 5, agora mais detalhada, pode ser usada uma política para configurar um dispositivo. Em algumas modalidades, a política pode ser usada para configurar qualquer dispositivo incluindo, sem limitação, um computador de otimização WAN 200, um computador 20 SSLA/PN 200, um computador de aceleração 200, um computador de cache 200, um computador de equilíbrio de carga, e/ou um dispositivo proporcionando qualquer combinação desses dispositivos. Em outra modalidade, pode ser usada uma política para configurar um agente cliente ou um agente servidor.
Em algumas modalidades, um mecanismo de política executan
do em um dispositivo pode interpretar, avaliar, e/ou executar políticas com relação às funções do dispositivo. Por exemplo, um mecanismo de política 236 pode executar em um computador 200 e interpretar e executar um número de políticas direcionando outras ações e módulos da aplicação incluin30 do, sem limitação, um módulo SSL/VPN 280, um módulo IP intranet 282, um módulo de comutação 284, um módulo DNS 286, um módulo de aceleração 288, um módulo firewall de aplicação 290, e/ou um agente de monitoramento 197. Em algumas modalidades, pode ser proporcionado um conjunto único de políticas para direcionar uma pluralidade de funções de aplicação. Em outras modalidades, pode ser usado um conjunto separado de políticas para configurar cada função de aplicação. As políticas podem ser armazenadas 5 em qualquer maneira dentro de um dispositivo. Em algumas modalidades, pode ser compilada uma política antes de ser executada em um dispositivo. Em outras modalidades, pode ser executada uma política em um tempo de execução.
Uma política 500 pode compreender uma ou mais expressões 10 510. Uma expressão em uma política pode ser avaliada por um dispositivo no tempo de execução com relação aos objetos especificados na expressão para produzir um valor. Uma expressão 510 pode ser qualquer tipo de expressão. Em uma modalidade, uma expressão 510 pode ser uma expressão orientada de objeto. Uma expressão pode ser usada em qualquer lugar den15 tro de uma política. Em algumas modalidades, uma expressão pode ser especificada em uma regra de uma política. Em outras modalidades, uma expressão pode ser especificada em uma ação de uma política.
Uma política 500 pode também compreender uma regra 505. A regra pode ser avaliada em um tempo de execução com relação aos objetos, 20 métodos, e operadores identificados na regra para produzir um resultado. Dependendo do resultado, o computador pode então executar uma ou mais ações especificadas na política. Por exemplo, se a regra avaliar como "verdadeiro" um computador pode executar a ação associada à regra. Ou se a regra avaliar como "falso" o computador não pode executar a ação associa25 da à regra. Em algumas modalidades, uma regra pode compreender uma expressão única. Em outras modalidades, uma regra pode compreender uma pluralidade de expressões conectadas por operadores.
Uma política 500 pode também compreender uma ação 515. Uma ação pode especificar qualquer ação a ser tomada. Exemplos de ações podem incluir, sem limitação, bloqueio ou permissão de fluxo de dados, transferência de fluxo de dados ou objetos para um determinado servidor ou dispositivo, armazenar um objeto na memória, alterar uma parte de um fluxo de dados, alterar uma ou mais propriedades de sistema, executar uma técnica de aceleração e executar uma técnica de compressão. Na política 500 ilustrada, ao determinar que uma solicitação HTTP URL contém um identificador de usuário de "JOE", a política dita uma ação de transferência da soli5 citação para um servidor específico. Em algumas modalidades, uma ação pode compreender uma expressão a ser avaliada no tempo de execução.
A figura 6 ilustra um exemplo de uma tela de entrada de expressão 600 para um usuário para introduzir uma expressão orientada de objeto. Em breve visão geral, uma tela de entrada de expressão 600 compreende 10 um número de menus "pull-down" 620 que permitem que um usuário especifique os membros das classes para incluir em uma expressão criada. A tela 610 pode também compreender um monitor onde um usuário pode ser capaz de ver e/ou editar uma versão de texto da expressão. A tela pode também compreender um monitor 630 que exiba para o usuário informação cor15 respondente a um ou mais objetos.
Ainda com relação à figura 6, agora em maiores detalhes, uma tela de entrada de expressão permite a entrada de expressões orientadas de objeto por um usuário em qualquer maneira. Na modalidade ilustrada, os menus "pull-down" 620 podem ser usados para selecionar objetos. Em ou20 tras modalidades, podem ser usados quaisquer outros elementos de entrada para aceitar uma expressão orientada de objeto incluindo, sem limitação, campos de texto, menus, botões, caixas de opção e barras de ferramenta. Em algumas modalidades, os elementos de entrada de uma tela 600 podem proporcionar funcionalidade para um usuário para criar e verificar expres25 sões válidas. Em algumas modalidades, os menus "pull-down" 620 podem ser povoados automaticamente com membros da classe anteriormente especificada. Por exemplo, ao selecionar "URL" no menu ilustrado, o menu "pull-down" seguinte pode ser povoado com os membros da classe de objeto URL. Dessa maneira um usuário pode ser capaz de navegar com eficiência 30 hierarquias de classe e modelos de objeto para gerar uma expressão. Em outras modalidades, pode ser usado realce de sintaxe, autoconclusão, e/ou autorrecomendação para possibilitar um usuário a facilmente criar e verificar expressões. Por exemplo, um usuário pode ser provido de um campo de texto 610 para compor uma expressão, em que o campo de texto realça vermelho quaisquer objetos ou sintaxe não-reconhecidos. Ou por exemplo, um usuário pode ser provido de um campo de texto 610 que, quando o usuá5 rio digita uma classe de objeto, o campo de texto exibe uma lista de membros da classe de objeto.
Em algumas modalidades, uma tela de entrada de expressão 600 pode exibir para o usuário informação sobre quaisquer objetos ou expressões. Em algumas modalidades, a tela 600 pode exibir as propriedades 10 e/ou usos recomendados de uma determinada classe. Em uma modalidade, a tela 600 pode ser integrada com ou usada ao longo de uma ou mais telas de documentação de classe como, por exemplo, descrito na figura 4B.
A figura 7A ilustra um exemplo de uma tela de interface de configuração que pode ser usada para configurar uma pluralidade de políticas correspondentes a um ou mais dispositivos de rede. Em breve visão geral, uma tela exibe uma lista de funções de dispositivo de rede 710 com pastas contendo uma ou mais políticas, grupos de política, ou ajustes relacionados às funções. No exemplo ilustrado, a tela exibe pastas para políticas de sistema, políticas de rede, políticas DNS, políticas SSL, políticas de descarga, políticas de condensação, políticas de cache integrado, características de proteção, políticas de equilíbrio de carga, políticas de comutação de conteúdo, políticas de redirecionamento de cache, políticas de equilíbrio de carga global, políticas SSL VPN, e políticas de segurança de aplicação. Em algumas modalidades, um número de políticas, grupos de política, e/ou ajustes correspondentes a uma função podem ser referidos como um perfil.
Ainda com relação à figura 7A, conhecida em maiores detalhes, uma interface de configuração pode permitir que um usuário especifique políticas ou ajustes relacionados a um ou mais dispositivos de rede. Em algumas modalidades, pode ser usada uma interface de configuração para confi30 gurar um computador 200 incluindo, sem limitação, um computador VPN, computador de aceleração, ou dispositivo de otimização WAN. Em algumas modalidades, uma interface de configuração única pode permitir que um usuário configure uma pluralidade de computadores. Por exemplo, um usuário pode ser capaz de especificar um ou mais computadores para aplicar uma determinada política, grupo de política ou ajuste. Em uma modalidade, um usuário pode ser capaz de especificar que um número de computadores 5 compartilha um perfil de configuração. Por exemplo, um usuário pode configurar um grupo de computadores 200 de maneira que cada computador seja dotado dos mesmos ajustes de política. Em outras modalidades, pode ser usada uma interface de configuração 700 para configurar um ou mais agentes clientes 120.
Uma interface de configuração 700 pode compreender quaisquer
meios de coleta de entrada incluindo, sem limitação, as interfaces GUIs e de linha de comando. Uma interface de configuração pode compreender uma ou mais telas de entrada de expressão 600. Em uma modalidade, uma interface de configuração pode Ier informação de configuração de um arquivo. 15 Em outra modalidade, uma interface de configuração pode receber informação de configuração sobre uma rede. Por exemplo, uma interface de configuração 700 pode compreender meios para um usuário carregar uma ou mais políticas, ajustes, grupos de política ou perfis. Esses podem compreender políticas comumente usadas ou ajustes para um número de aplicações. 20 Uma interface de configuração pode ocultar quaisquer aspectos
de uma política, grupos de política ou configuração de um usuário. Por exemplo, uma interface de configuração pode preencher em quaisquer partes de uma política ou grupo de política automaticamente ou por valor básico de maneira que um usuário não precise configurar ativamente essas partes. Por 25 exemplo, uma interface de configuração pode proporcionar uma lista de valor básico de ações, onde o usuário precise apenas especificar uma lista de regras sob as quais as ações devam ser tomadas. A sintaxe e a implementação das ações podem ser completa ou parcialmente ocultas do usuário.
A figura 7B ilustra um exemplo de uso de um computador para configurar um computador usando uma interface de configuração. Em breve visão geral, uma interface de configuração 700 compreendendo uma tela de entrada de expressão 500 é exibida em um cliente 102. O cliente 102 transmite os dados de configuração recebidos por via da interface de configuração para o computador 200.
Ainda com relação à figura 7B, agora em maiores detalhes, uma interface de configuração 700 pode ser exibida em um cliente 102 de qual5 quer maneira. Em algumas modalidades, uma interface de configuração 700 pode compreender uma aplicação executando no cliente. Em outras modalidades, uma interface de configuração 700 pode compreender uma página da web exibida pelo computador. Em ainda outras modalidades, uma interface de configuração 700 pode compreender uma página da web exibida por um 10 terceiro dispositivo.
Uma interface de configuração 700 pode compreender quaisquer meios para um usuário introduzir dados de configuração incluindo, sem limitação, campos de texto, botões, janelas, caixas de opção, e funções de arrastar e soltar. Em algumas modalidades, uma interface de configuração 700 15 pode compreender uma tela de entrada de expressão 500. Em algumas modalidades, uma interface de configuração pode também proporcionar telas para um usuário introduzir uma ou mais políticas. Em algumas modalidades, essas telas podem ser integradas com uma ou mais telas de entrada de expressão.
Uma interface de configuração pode transmitir informação de
configuração para um computador 200 por quaisquer meios. A informação de configuração pode ser transmitida por via de qualquer protocolo ou protocolos. Em uma modalidade, a informação de configuração introduzida pelo usuário pode ser salva par um arquivo no cliente 102, e então o arquivo po25 de ser transmitido para o computador. Em outras modalidades, um usuário pode introduzir informação para uma página da web ou uma aplicação da web que possa então transferir a informação de configuração para o computador. Em algumas modalidades, a informação de configuração pode ser compilada, formatada, ou processada de outro modo antes de ser transmiti30 da para o computador 200. Em ainda outras modalidades, a informação de configuração pode ser compilada, formatada, ou processada de outro modo após ter sido recebida pelo computador. A figura 8A descreve uma modalidade de um método de configuração de uma política orientada de objeto de um dispositivo de rede com uma expressão orientada de objeto para especificar estrutura em uma carga útil de um fluxo de pacote recebido por um dispositivo de rede. Em breve 5 visão geral, uma interface de configuração 700 é proporcionada por um dispositivo a fim de configurar uma política 600 para um dispositivo de rede 200 (etapa 801). O dispositivo recebe, por via da interface de configuração 700, uma expressão 610 para a política 600 (etapa 803). O dispositivo recebe por via da interface de configuração 700 informação de usuário identificando 10 uma ação a ser tomada com base em uma avaliação da expressão (etapa 805).
Ainda com relação à figura 8A, agora em detalhes adicionais, uma interface de configuração pode ser proporcionada para configurar uma política 600 para um dispositivo de rede 200 de qualquer maneira (etapa 15 801). Em algumas modalidades, a interface de configuração 700 pode compreender uma interface de linha de comando. Em outras modalidades, a interface de configuração 700 pode compreender uma interface com o usuário gráfica. A interface de configuração 800 pode compreender uma ou mais interface de arrastar e soltar, uma interface de seleção de lista, ou uma inter20 face de realce de sintaxe. Em algumas modalidades, a interface de configuração 700 reside em um dispositivo cliente 102. Em outras modalidades, a interface de configuração 700 executa no dispositivo de rede 200. Em algumas modalidades, um dispositivo proporcionando a interface de configuração 700 está conectado em um computador 200 por uma rede 104. Em al25 gumas modalidades, a interface de configuração 700 é uma página da web. Em algumas modalidades, a interface de configuração 700 é uma página da web que reside no dispositivo de rede 200. Em algumas modalidades, a interface de configuração 700 é uma página da web que reside em um servidor separado 106.
Um dispositivo recebe, por via da interface de configuração 700,
uma expressão 610 para a política 600 especificando uma classe de objeto para aplicar em uma parte da carga útil de um fluxo de pacote e um membro da classe de objeto (etapa 803). Em algumas modalidades, a expressão pode ser recebida por via de uma tela de entrada de expressão 500. Em uma modalidade, a expressão 610 identifica uma parte do texto dentro de um fluxo de pacote. Em determinadas modalidades, a expressão 610 especifica 5 um protocolo, e pode também especificar um ou mais métodos e campos relacionados ao protocolo. Por exemplo, a expressão pode especificar um protocolo HTTP, HTML, FTP, SMTP, ICA, e/ou SSL. O protocolo especificado pode então ser aplicado para analisar um fluxo de dados de acordo com o protocolo.
A expressão recebida pode especificar qualquer classe de obje
to. Por exemplo, a expressão recebida pode especificar quaisquer classes de objeto descritas no modelo de objeto da figura 4A. Uma classe de objeto pode ser especificada de qualquer maneira. Em uma modalidade, a especificação de uma classe de objeto pode compreender a especificação de uma 15 ocorrência da classe de objeto. Por exemplo, a expressão "HTTP.REQ" pode especificar uma ocorrência do objeto "http_resquest" da figura 4A. Em algumas modalidades, a expressão recebida pode compreender uma expressão orientada de objeto.
A expressão recebida pode também especificar qualquer mem20 bro de uma classe de objeto identificada. O membro pode compreender qualquer objeto, tipo de dados ou método. Em algumas modalidades, o membro compreende um campo. Em algumas modalidades, o membro pode compreender um campo correspondente a uma segunda classe de objeto. Em algumas modalidades, o membro da classe de objeto compreende um 25 método. Em algumas modalidades, o membro da classe de objeto é herdado de uma classe principal da classe de objeto. O membro da classe de objeto pode corresponder a uma solicitação ou resposta HTTP. Em outros casos, um membro da classe pode ser um Iocador recurso uniforme ("URL") ou um "cookie".
Em outras modalidades, a expressão 610 compreende um "ty
pecasting" explícito. O "typecasting" explícito pode ser usado para especificar uma classe de objeto para uso com relação a um campo ou objeto retornado. Por exemplo, um campo contendo um número pode ser explicitamente "pypecast" para uma seqüência alfanumérica a fim de executar uma comparação de seqüência. Ou por exemplo, um fluxo de bytes pode ser "typecast" para uma lista com determinado delimitador. Ou, por exemplo, um fluxo de 5 dados pode ser "typecast" como correspondendo a um protocolo específico ou objeto de protocolo.
Um dispositivo pode receber, por via da interface de configuração 700, informação que identifique uma ação 615 para a política 600, a ação 615 a ser tomada baseada em uma avaliação da expressão 610 (etapa 10 805). Em algumas modalidades, a ação 615 pode compreender uma expressão orientada de objeto. Em determinadas modalidades, o método executa a ação 615 a fim de proporcionar equilíbrio de carga, comutação de conteúdo, segurança de aplicação, distribuição de aplicação, aceleração de rede, ou aceleração de aplicação. Por exemplo, a fim de acelerar atividade de rede, o 15 método pode avaliar uma expressão 610 para determinar o local do usuário e, com base no local do usuário, rotear o tráfego de usuário para o servidor geograficamente mais próximo ou servidores 106. Em algumas modalidades, uma política pode executar segurança, aceleração, equilíbrio de carga ou funções de comutação de conteúdo pela reeescrita de uma URL em qual20 quer solicitação ou resposta HTTP. Por exemplo, uma ação 625 pode especificar para modificar a solicitação HTTP de maneira que a URL se refira a um servidor específico ou sítio servidor 106. Em alguns casos, a ação 615 recebida da interface de configuração 700 pode ser uma expressão para "nenhuma ação" ou para uma ação de valor básico.
A figura 8B descreve uma modalidade de um método de aplica
ção, por um dispositivo, expressão orientada de objeto 610 em uma política 600 para especificar uma estrutura em uma carga útil de um fluxo de pacote por um computador 200. Em breve visão geral, uma aplicação 200 identifica uma política 600 compreendendo uma expressão orientada de objeto 610 30 para avaliar com relação a uma carga útil de um fluxo de pacote recebido (etapa 821). O computador 200 atribui valores para uma estrutura de dados especificada pela expressão orientada de objeto 610 com base em uma parte da carga útil (etapa 823). O computador 200 executa uma avaliação da expressão 610 com base nos valores atribuídos (etapa 825) e realiza, em resposta à avaliação, uma ação 615 especificada pela política 600 (etapa 827).
Ainda com relação à figura 8B, agora em detalhes adicionais, um
computador pode identificar uma política para aplicar em um fluxo de dados de qualquer maneira (etapa 821). Em algumas modalidades, um computador pode Ier uma política de um ou mais arquivos de configuração. Em outras modalidades, um mecanismo de política 236 em um computador pode arma10 zenar um número de políticas na memória. Em ainda outras modalidades, um computador pode identificar uma política em resposta a um tipo ou protocolo do fluxo de dados. Por exemplo, um computador pode ser dotado de um conjunto de políticas aplicado em todos os fluxos TCP que chegam. Ou, por exemplo, um computador pode identificar uma ou mais políticas que se15 jam aplicadas aos fluxos SSL. Em uma modalidade, um computador pode identificar uma política com base em um expedidor ou um recebedor de um fluxo de dados. Por exemplo, um computador VPN pode ser dotado de um conjunto de políticas que sejam aplicadas às solicitações de conexão que chegam dos clientes. Ou um dispositivo de aceleração pode identificar uma 20 ou mais políticas para aplicar em um fluxo HTTP de um servidor 106. Em algumas modalidades, a política pode compreender uma política recebida por via de uma interface de configuração 700.
O fluxo de pacote pode ser recebido de qualquer maneira, e de qualquer fonte. Em algumas modalidades, o fluxo de pacote pode ser inter25 ceptado de modo transparente pelo computador. Em outras modalidades, o computador pode receber o fluxo de pacote no processo de "proxying" uma ou mais conexões de camada de transporte. O fluxo de pacote pode compreender qualquer tipo de pacotes incluindo, sem limitação, os pacotes IP, os pacotes TCP, os pacotes UDP, e os pacotes ICMP. O fluxo de pacote 30 pode compreender qualquer outro protocolo ou protocolos.
A política identificada pode compreender uma expressão orientada de objeto para avaliar com relação à carga útil de um fluxo de pacote. A expressão orientada de objeto pode compreender qualquer tipo de expressão orientada de objeto, e pode especificar uma ou mais classes, campos e métodos de objeto. Em algumas modalidades, a expressão orientada de objeto pode compreender parte de uma regra. Em algumas modalidades, a 5 expressão pode especificar um ou mais objetos correspondentes a um cliente, servidor, protocolo HTTP, ou o computador.
A expressão orientada de objeto pode ser avaliada com relação a qualquer carga útil de um fluxo de pacote. Em uma modalidade, a expressão pode ser avaliada com relação à carga útil de um fluxo TCP ou UDP. Em 10 outra modalidade, a expressão pode ser avaliada com relação a um fluxo SSL. Em ainda outra modalidade, a expressão pode ser avaliada com relação à carga útil de um fluxo ICA. O fluxo pode ser recebido de qualquer fonte incluindo, sem limitação, um cliente, um agente cliente, um agente servidor, ou um segundo computador.
O computador atribuí valores para uma estrutura de dados con
forme especificado pela expressão orientada de objeto 610 (etapa 823). Uma estrutura de dados pode compreender a representação física de uma ocorrência de objeto. Em algumas modalidades, o computador pode analisar parte da ou toda carga útil recebida para atribuir os valores. Em outras mo20 dalidades, o computador pode executar quaisquer métodos especificados pela expressão ou incluídos em um modelo de objeto para atribuir valores. Por exemplo, com relação à expressão.
A aplicação "HTTP.REQ.HEADERfAccept
Language").TYPECAST_TO_LIST(",")" pode atribuir valores a um objeto cor25 respondente a cada solicitação, registro inicial, e lista especificada delimitada por vírgula. Em algumas modalidades, a atribuição de valores pode compreender a determinação de uma parte ou de partes do fluxo de dados correspondente a um objeto. Em algumas modalidades, a etapa 823 inclui aplicar, pelo computador 200, uma classe especificada pela expressão orienta30 da de objeto 610 para um fluxo de byte da carga útil. Por exemplo, se uma expressão especificar uma classe URL, o computador pode atribuir um valor para um realce de uma estrutura de dados URL pela determinação dos pontos de início e fim de uma URL dentro da carga útil recebida. Esses pontos de início e fim podem então ser armazenados em uma estrutura de dados URL e usados para executar quaisquer dos métodos na classe URL. Em algumas modalidades, o computador pode atribuir valores a uma pluralidade 5 de estruturas de dados especificada pela expressão orientada de objeto. Em uma modalidade, o mecanismo de política 236 pode executar quaisquer funções relacionadas à avaliação de uma política.
O computador pode executar uma avaliação da expressão 610 com base nos valores atribuídos de qualquer maneira (etapa 825). Em al10 gumas modalidades, o computador pode usar um ou mais métodos de uma classe de objeto especificada pela expressão para executar a avaliação. Em algumas modalidades, a avaliação pode produzir um valor booleano. Em outras modalidades, a avaliação pode produzir um inteiro, uma seqüência ou outro objeto. O computador pode usar os valores atribuídos de qualquer ma15 neira. No exemplo URL acima, o computador, após determinar um ponto de início e fim para a URL, pode então usar esses valores para executar quaisquer operações com relação à URL. Em algumas modalidades, o computador pode então executar o método getSuffix() referido na figura 4A, que identifica um sufixo de tipo de arquivo da URL solicitada. Esse método pode 20 também compreender um ponto de início e fim do sufixo com relação ao ponto de início e fim da URL. A aplicação pode então usar os pontos de início e fim do sufixo para executar uma avaliação do sufixo de arquivo, como, por exemplo, comparando o mesmo à seqüência ".jsp" para determinar se a URL solicitada corresponde à Página de Servidor Java.
Em algumas modalidades, o computador pode avaliar uma regra
compreendendo a expressão. Em outras modalidades, o computador pode avaliar uma regra compreendendo uma pluralidade de expressões.
O computador pode então, em resposta à avaliação, adotar uma ação 615 especificada pela política 600 (etapa 827). Em uma modalidade, o computador age se o resultado da avaliação for um valor correspondente à verdade. Em outra modalidade, o computador pode adotar uma ação se o resultado da avaliação não for zero. A ação adotada pode ser qualquer ação incluindo, sem limitação, qualquer ação relacionada ao equilíbrio de carga, comutação de conteúdo, segurança de aplicação, distribuição de aplicação, aceleração de rede, ou aceleração de aplicação. Em algumas modalidades, a ação 615 compreende uma "não ação".
Em algumas modalidades, o computador pode executar a ação
seguindo imediatamente a avaliação. Em outras modalidades, o computador pode executar a ação subsequente à avaliação de pelo menos outra política. Em ainda outra modalidade, o computador pode executar a ação após aguardar por um predeterminado período de tempo ou aguardar até que um 10 recurso se torne disponível. Em uma modalidade, o computador pode executar a ação após o recebimento de partes adicionais do fluxo de pacote.
Em algumas modalidades, o computador pode então transferir o fluxo de pacote recebido para um ou mais servidores de computadores, clientes, ou agentes clientes. O computador pode executar quaisquer outras funções de computador de rede com relação ao fluxo de pacote incluindo, sem limitação, aceleração, compressão, e equilíbrio de carga.
A figura 8C ilustra um método, em um computador 200, para aplicar as expressões orientadas de objeto 610 em uma política 600 para especificar estrutura em uma carga útil de um fluxo de pacote recebido pelo 20 computador 200. Em breve visão geral, o computador identifica uma política 600 incluindo uma expressão orientada de objeto 610 para avaliar com relação a uma carga útil de um fluxo de pacote recebido (etapa 841). O computador atribui valores para uma estrutura de dados especificada pela expressão orientada de objeto 610 com base em uma parte da carga útil (etapa 25 843). O computador também executa uma avaliação da expressão 610 com base nos valores atribuídos (etapa 845). Em resposta à avaliação, o computador altera uma parte do fluxo de pacote recebido (etapa 847) e transmite o fluxo de pacote alterado (etapa 849).
Ainda com relação à figura 8C, agora mais detalhada, o computador pode identificar uma política 600 que especifique uma expressão orientada de objeto 610 para avaliar com relação a uma carga útil de um fluxo de pacote recebido (etapa 821). Essa etapa pode ser executada de qualquer modo aqui descrito.
O computador pode atribuir valores para uma estrutura de dados especificada pela expressão orientada de objeto 610 com base em uma parte da carga útil de qualquer modo (etapa 823). Essa etapa pode ser execu5 tada de qualquer modo aqui descrito.
O computador executa uma avaliação da expressão com base nos valores atribuídos (etapa 845). Essa etapa pode ser executada de qualquer modo aqui descrito.
Em resposta à avaliação, o computador pode alterar uma parte do fluxo de pacote recebido (etapa 847). Em algumas modalidades, a alteração de uma parte do fluxo de pacote recebido pode compreender uma ação em resposta à avaliação (etapa 827). Em algumas modalidades, a parte do fluxo de pacote que é alterada é especificada pela estrutura de dados identificada pela expressão orientada de objeto. Em outras modalidades, a parte do fluxo de pacote que é alterada é especificada por uma segunda expressão orientada de objeto. Em algumas modalidades, a parte do fluxo de pacote a ser alterada pode ser especificada por uma expressão orientada de objeto em uma ação da política. Em algumas modalidades, o computador pode re-escrever uma URL no corpo de uma resposta ou solicitação HTTP. Em outras modalidades, o computador pode re-escrever um valor do campo de formato no fluxo de pacote. O valor do campo de formato que é alterado pode ser um campo em uma solicitação HTTP, uma resposta HTTP ou qualquer outro campo em um objeto que seja parte do fluxo de pacote. Em ainda outra modalidade, o computador pode alterar um ou mais pares de valor de nome contido no fluxo de pacote. Em algumas modalidades, o computador pode re-escrever uma parte o fluxo de pacote recebido para ocultar ou remover dados confidenciais incluindo, sem limitação, números de identificação pessoal, números de roteamento de conta bancária, informação de contato pessoal, números de segurança social, senhas e outras informações confidenciais.
Para proporcionar um exemplo detalhado, ao receber um fluxo HTTP de um cliente destinado a um servidor, um computador proporcionando funções de segurança de aplicação para o servidor pode determinar aplicar uma política:
se(HTTP.Request.getCookie().getValue("usemame").length>20 então HTTP. Request.getCookie().setValue("usemame""."void")
Nesse exemplo o computador pode analisar parte do ou todo
fluxo HTTP para identificar a parte do fluxo contendo a solicitação, e então o "cookie" dentro da solicitação. O computador pode fazer isso de vários modos, incluindo mantendo uma ou mais estruturas de dados internas com apontadores de referências apontando para as áreas do fluxo correspondente 10 à solicitação e "cookie". O computador pode então identificar o valor de pares de valor de nome de um "username" (nome de usuário)dentro do "cookie" e determinar se a extensão do valor é maior do que 20 caracteres. Uma extensão acima de 20 caracteres pode indicar um erro de aplicação ou um ataque malicioso, como, por exemplo, um ataque de estouro de isolador a15 tentado. Ao determinar que a extensão é maior do que 20 caracteres, o computador pode então alterar o valor para "void" (vazio) ou qualquer outro sinal que possa notificar o servidor recebendo o fluxo que foi enviado um valor inapropriado pelo cliente. O computador pode então usar e/ou modificar quaisquer estruturas de dados internas a fim de alterar o fluxo. O compu20 tador pode então transferir o fluxo alterado para o servidor. Em outras modalidades, o computador pode simplesmente bloquear o fluxo de alcançar o servidor ao detectar o estouro potencial. Nessas modalidades, o computador pode retornar uma mensagem de erro para o cliente.
Em outra modalidade, o computador pode substituir toda uma 25 resposta HTTP com uma nova resposta. Por exemplo, se o computador determinar que uma resposta contém dados confidenciais em um formulário, o computador pode substituir a resposta com uma resposta indicando um erro ou com um conteúdo neutro compreendendo a resposta. Em ainda outra modalidade, um computador pode substituir ou re-escrever toda uma solici30 tação HTTP ou registro inicial de resposta.
O computador pode então transmitir o fluxo de pacote alterado de qualquer modo (etapa 849). Em algumas modalidades, o computador pode transferir o fluxo de pacote alterado para um servidor ou cliente designado como o recebedor do fluxo. Em outras modalidades, o computador pode redirecionar o fluxo para um computador, servidor ou ciente diferente do recebedor pretendido do fluxo. O computador pode transmitir o fluxo de pacote 5 alterado usando qualquer protocolo ou protocolos incluindo, sem limitação, TCP, IP, UDP, SSL, e ICA.
E. Sistemas e métodos para execução de expressões de política indefinidas A figura 9 ilustra uma modalidade de um método, em um computador 200, para aplicar uma política 600 especificando uma ação 615 a ser adotada na eventualidade de um elemento da política 600 estar indefinido. Em breve visão geral, um computador identifica uma política 600 para avaliar com relação a uma carga útil de um fluxo de pacote recebido, onde a política 600 especifica (i) uma expressão 610, (ii) uma primeira ação baseada na expressão 610 e (iii) uma segunda seção 610 para adotar se um elemento estiver indefinido (etapa 901). O computador determina que um elemento da política 600 esteja indefinido com relação à carga útil (etapa 903). Em resposta à sua determinação de que um elemento está indefinido, o computador adota a segunda ação (etapa 905). Falando em geral, o método permite que uma política especifique uma ação a ser adotada se um erro ou exceção for encontrado quando o computador tentar avaliar a política. Dessa maneira, a segunda ação pode ser uma retirada ou um método de execução de erro.
Ainda com relação à figura 9, agora em maiores detalhes, um computador identifica uma política 600 para avaliar com relação a uma carga 25 útil de um fluxo de pacote recebido, onde a política 600 especifica uma expressão, uma primeira ação para adotar com base na expressão 610 e uma segunda ação 610 a ser adotada se um elemento da política estiver indefinido (etapa 901). O computador pode identificar a política de qualquer modo. Em uma modalidade, a expressão pode ser uma expressão orientada de 30 objeto. Em outra modalidade, a expressão 610 pode identificar uma classe de objeto para aplicar em uma parte da carga útil de um fluxo de pacote e um membro do classe de objeto. Em outra modalidade, a expressão 610 especifica um protocolo, e pode também especificar um ou mais métodos e campos relacionados. A expressão pode identificar qualquer tipo de objeto e/ou classes de objeto. Em algumas modalidades, a expressão pode compreender um ou mais métodos de uma classe de objeto.
O fluxo de pacote pode ser recebido em qualquer maneira e de
qualquer fonte. Em algumas modalidades, o fluxo de pacote pode ser interceptado de modo transparente pela aplicação. Em outras modalidades, a aplicação pode receber o fluxo de pacote no processo de "proxying" uma ou mais conexões de camada de transporte. O fluxo de pacote pode compreen10 der qualquer tipo de pacotes incluindo, sem limitação, pacotes IP, V TCP, pacotes UDP, e pacotes ICMP. O fluxo de pacote pode compreender qualquer outro protocolo ou protocolos.
A primeira ação especificada pela política pode compreender qualquer ação. Em algumas modalidades, a primeira ação pode compreen15 der uma ação a ser executada se a expressão ou uma regra contendo a expressão avaliar para verdadeiro. Em algumas modalidades, a ação 615 pode se referir a um equilíbrio de carga, comutação de carga, segurança de aplicação, distribuição de aplicação, aceleração de rede, ou aceleração de aplicação. Em outras modalidades, qualquer ação 615 pode consistir em ”ne20 nhuma ação" ou ação de valor básico.
A segunda ação especifica uma ação a ser adotada se um elemento da política estiver indefinido. Um elemento da política pode compreender qualquer parte da política incluindo, sem limitação, uma ou mais expressões, regras, ou operações. Um elemento pode estar indefinido em 25 qualquer circunstância onde um computador não possa atribuir com sucesso um valor para o elemento. Em uma modalidade, um elemento pode estar indefinido se o elemento resultar em uma comparação de tipos incompatíveis como, por exemplo, determinar se um inteiro é maior do que uma lista; ou um valor booleano é igual a uma seqüência. Em outras modalidades, um 30 elemento pode estar indefinido se o elemento resultar em um ou mais valores nulos. Por exemplo, se uma expressão tentar acessar um valor de "nome de usuário" dentro de um objeto URL e a expressão for aplicada em um fluxo de pacote com uma URL sem nenhum valor de nome de usuário especificado, pode ser definida uma operação com relação ao nome de usuário. Em outras modalidades, um elemento pode estar indefinido como resultado de um ou mais "typecasts" inadequados.
5 Em algumas modalidades, a segunda ação pode ter sido especi
ficada por um usuário por via de uma interface de configuração. Por exemplo, ao entrar ou visualizar uma política na interface de configuração, um usuário pode ser prontificado a entrar uma ação a ser adotada se a política estiver indefinida no tempo de execução. Em outras modalidades, a segunda 10 ação pode compreender uma segunda ação de valor básico pré-configurado. Por exemplo, um grupo de políticas pode ser dotado de uma ação de valor básico para adotar na eventualidade de um elemento indefinido. Por exemplo, um grupo de políticas possibilitando a re-escrita URL pode ser dotado de uma segunda ação de valor básico se não re-escrever quaisquer URLs. Ou 15 um grupo de políticas para executar equilíbrio de carga pode ser dotado de uma segunda ação de valor básico de transferência de fluxo de pacote para um servidor de assistência designado.
O computador 200 pode determinar se um elemento da política 600 está indefinido com relação à carga útil de qualquer modo (etapa 903). 20 Em algumas modalidades, a aplicação pode determinar que a política esteja indefinida no processo de avaliação da política. Em outras modalidades, o computador pode determinar que a política esteja indefinida no processo de pré-compilação, compilação ou interpretação da política. Em algumas modalidades, o computador pode determinar que a política esteja indefinida pela 25 detecção de uma ou mais exceções geradas durante a avaliação da política. Por exemplo, o computador pode detectar um apontador nulo, estouro, ou exceção de processamento aritmético durante a avaliação da política.
Em resposta à determinação de que um elemento está indefinido, o computador pode adotar a segunda ação (etapa 905). A segunda ação pode compreender qualquer ação aqui descrita. Em algumas modalidades, a segunda ação pode compreender o recebimento e ou transmissão do fluxo de pacote. Em outras modalidades, a segunda ação pode compreender nenhuma ação.
F. Sistemas e métodos para configurar e usar grupos de política
A figura 10A, ilustra um exemplo de um banco de política. Em breve visão geral, um banco de política 1000a compreende um grupo de 5 uma ou mais políticas com uma ordem especificada para avaliação. No exemplo ilustrado, a ordem está especificada por números de Linha para cada política. Cada política pode também ser dotada de instruções de fluxo 1010a, 1010b, 1010c, 101 Od (geralmente 1010) indicando uma política a ser avaliada após a avaliação da política em curso.
Ainda com relação à figura 10A, agora mais detalhada, um ban
co de política 1000 pode compreender qualquer número de políticas incluindo, sem limitação, 1, 2, 3, 4, 5, 6, 10, 20, 50 e 100 políticas. As políticas de um banco de política podem compreender quaisquer políticas aqui descritas. Em algumas modalidades, um banco de política pode compreender um gru15 po de políticas executando uma função comum. Por exemplo, um banco de política pode compreender um grupo de políticas proporcionando funções de equilíbrio de carga. Ou, por exemplo, um banco de política pode compreender um grupo de todas as políticas para aperfeiçoar cache.
Um banco de política pode ser configurado de qualquer modo. Em algumas modalidades, pode ser proporcionada uma interface de configuração 700 que permita que um usuário crie e agrupe uma ou mais políticas. Em algumas modalidades, pode ser proporcionada uma interface de configuração que permita que um usuário nomeie um determinado banco de política. Em outras modalidades, pode ser proporcionada uma interface de configuração que permita que um usuário especifique um ou mais atributos de um banco de política. Por exemplo, um banco de política pode ser dotado de uma ação de valor básico para executar na eventualidade de uma exceção ou política indefinida. Ou por exemplo, um banco de política pode ser dotado de um conjunto de circunstâncias no qual o banco de política seja aplicado. Por exemplo, um usuário pode especificar que um banco de política deva ser usado com relação a todo tráfego HTTP que chegue. Ou, por exemplo, um usuário pode especificar um banco de política para ser usado ao receber quaisquer solicitações de conexão de novos dispositivos. Em outras modalidades, um banco de política pode compreender um conjunto de atributos que sejam usados para reforçar determinadas características nas políticas do banco de política. Por exemplo, um banco de política pode requerer que 5 nenhuma política no banco de política acesse um determinado objeto. Os atributos de um banco de política podem ser reforçados no tempo de configuração ou no tempo de execução.
Um banco de política pode ser armazenado de qualquer modo. Em algumas modalidades, um banco de política pode ser armazenado em um arquivo em um computador. Em outras modalidades, um banco de política pode ser armazenado em um mecanismo de política 216 de um computador.
Um banco de política pode compreender quaisquer meios de ordenação de políticas para avaliação. Em uma modalidade, um banco de 15 política pode compreender uma lista ordenada de políticas. Em outras modalidades, um banco de política pode compreender um conjunto de políticas com uma ou mais instruções de fluxo 1010 indicando uma ordem de avaliação. Em ainda outras modalidades, um banco de política pode compreender uma lista numerada de políticas a serem executadas em ordem de números 20 crescentes.
Cada expressão em um banco de política pode especificar uma instrução de fluxo 1010. Uma instrução de fluxo 1010 pode compreender qualquer informação ou expressão indicando uma política a ser executada na eventualidade de uma política contendo a instrução de fluxo avalie para 25 verdadeiro. Em uma modalidade, uma instrução de fluxo pode compreender uma declaração "SEGUINTE" 1010a, que indica que a próxima política no banco deva ser avaliada. Em outra modalidade, uma instrução de fluxo pode compreender uma declaração "IR PARA" 1010b que identifica outra política no banco de política a ser avaliada a seguir. Em algumas modalidades, uma 30 declaração IR PARA pode identificar uma política por um número de linha. Em outras modalidades, uma declaração IR PARA pode identificar uma política por um nome de política ou outro identificador. Em ainda outra modalidade, uma instrução de fluxo pode compreender uma declaração "FIM", que indica que nenhuma outra política do banco de política deva ser avaliada.
Em algumas modalidades, uma instrução de fluxo 1010 pode compreender uma expressão ou expressão a ser avaliada para determinar a 5 política a ser executada a seguir. Uma instrução de fluxo pode compreender qualquer expressão incluindo, sem limitação qualquer expressão orientada de objeto. Por exemplo, a instrução de fluxo 1010 especifica que um inteiro seguindo uma parte "servnum" de uma consulta deva ser adicionada para 17 para determinar a linha da política a ser executada a seguir. No banco de 10 política exempiificativo, a instrução de fluxo 1010 pode ser usada para distribuir solicitações HTTP dentre uma série de servidores com base em um parâmetro nas solicitações.
Em algumas modalidades, pode ser proporcionada uma interface de configuração 700 com meios para um usuário ordenar as políticas 15 dentro de um banco de política. A interface de configuração pode permitir que um usuário especifique números de linha, prioridades, ordenação de lista, ou quaisquer outros meios de especificar ordem de avaliação. Em algumas modalidades, uma interface de configuração 700 pode permitir que um usuário especifique uma ou mais instruções de fluxo com relação a uma 20 política ou um banco de política. Em outras modalidades, a interface de configuração pode também proporcionar quaisquer meios de entrada para introduzir uma ou mais instruções de fluxo 1010 correspondente às políticas no banco de política.
A figura 10B ilustra uma modalidade de um método de controle 25 de fluxo dentre as políticas 600 usado em um dispositivo de rede 200 processando um fluxo de pacote. Em breve visão geral, o método inclui identificar, por um computador 200, uma pluralidade de políticas 600 para aplicar em um fluxo de pacote recebido, onde pelo menos uma das políticas 600 inclui um identificador de políticas (etapa 1001). O computador processa 30 uma primeira política 600 de uma pluralidade de políticas 600, identificando (i) uma regra 605 que inclui uma primeira expressão 610 (ii) uma primeira ação 615 a ser adotada com base em uma avaliação da regra 605, e (iii) uma segunda política 600 dentre múltiplas políticas (etapa 1003). Com base em uma avaliação da expressão 610, o computador determina que a regra 605 avalie para verdadeiro (etapa 1005). Em resposta à determinação, o computador 200 processa a segunda política identificada 600 (etapa 1007).
Ainda com relação à figura 10B, agora em detalhe adicional, o
computador identifica uma pluralidade de políticas 600 para aplicar em um fluxo de pacote recebido onde pelo menos uma da pluralidade de políticas especifica um identificador de política (etapa 1001). O computador pode identificar a pluralidade de políticas de qualquer modo. Em algumas modali10 dades, o computador pode identificar que a pluralidade de políticas corresponda às políticas para um determinado fluxo de dados, fonte de fluxo de dados, ou recebedor de fluxo de dados. Em uma modalidade, a pluralidade de políticas pode compreender um banco de política.
O fluxo de pacote pode ser recebido de qualquer modo e de 15 qualquer fonte. Em algumas modalidades, o fluxo de pacote pode ser interceptado de modo transparente pelo computador. Em outras modalidades, o computador pode receber o fluxo de pacote no processo de "proxying" uma ou mais conexões de camada de transporte. O fluxo de pacote pode compreender qualquer tipo de pacotes incluindo, sem limitações, os pacotes IP, 20 os pacotes TCP, os pacotes UDP, e os pacotes ICMP. O fluxo de pacote pode compreender qualquer protocolo ou protocolos.
O pelo menos um identificador de política pode compreender quaisquer meios de identificar uma política, incluindo, sem limitação, um número de linha, um nome de política, ou número de prioridade. Em algu25 mas modalidades, cada política 600 da pluralidade de políticas 600 especifica uma classificação indicando uma ordem de valor básico na qual as políticas devam ser processadas.
O computador 200 processa uma primeira política 600 da pluralidade de políticas 600 na qual a primeira política 600 identifica uma regra 605 que especifica uma primeira expressão 610, uma primeira ação 615 a ser adotada com base na avaliação da regra 605, e uma expressão 610 identificando uma segunda política 600 da pluralidade de políticas 600 (etapa 1003). A primeira política pode ser processada de acordo com qualquer método para avaliar e processar uma política. Em algumas modalidades, a primeira política pode compreender uma expressão orientada de objeto. Em outras modalidades, a primeira política pode compreender uma regra compreendendo uma expressão orientada de objeto.
A primeira política pode conter qualquer expressão identificando uma segunda política. Em algumas modalidades, a primeira política pode compreender um nome da segunda política. Em outras modalidades, a primeira política 600 inclui um inteiro que especifica a classificação de uma se10 gunda política 600 a ser processada a seguir se for aplicada uma primeira ação 615.
Em algumas modalidades, a primeira política pode compreender uma instrução de fluxo 1010. A primeira política pode compreender qualquer instrução de fluxo, incluindo "seguinte", "ir para" ou "fim". A primeira política 15 pode compreender quaisquer outros elementos, incluindo, sem limitação, uma ação ser executada se um elemento da primeira política estiver indefinido. Em uma modalidade, a primeira política está indefinida. Em uma modalidade, cada política da pluralidade de políticas pode compreender uma instrução de fluxo.
Com base na avaliação da expressão 610 pelo computador 200,
o computador determina que a regra 605 avalie para verdadeiro (etapa 1005). Em algumas modalidades, essa etapa inclui a avaliação de uma expressão orientada de objeto 610.
Em resposta à determinação de que a regra avalie para verda25 deiro, o computador 200 pode processar a segunda política identificada 600 (etapa 1007). Em uma modalidade, a etapa 1007 pode compreender executar uma instrução de fluxo especificada pela primeira política. Em algumas modalidades, o computador 200 pode avaliar uma expressão 610 para determinar uma classificação de uma segunda política 600 dentre as múltiplas 30 políticas 600 a serem processadas a seguir. Em algumas modalidades, o computador 200 pode avaliar uma expressão orientada de objeto 610 para determinar a classificação de uma segunda política 600 dentre as múltiplas políticas 600 a serem processadas a seguir. Por exemplo, o computador pode avaliar um expressão para avaliar um número de linha a ser usado em combinação com uma instrução de fluxo de pacote IR PARA. Após determinar o número de linha, o computador pode então processar a política no determinado número de linha.
Em algumas modalidades, o computador pode também adotar a ação especificada pela primeira política ao determinar que a regra seja verdadeira. Em outras modalidades, ao determinar que a regra seja verdadeira, o computador pode armazenar a ação especificada pela primeira política em uma lista. Essa lista pode ser usada para armazenar uma série de ações a serem adotadas. Em uma modalidade, à medida que um computador processa uma série de políticas em um banco de política, o computador pode armazenar uma lista para cada política que contenha uma regra avaliada para verdadeira. Após processar a série de políticas, o computador pode então adotar todas as ações armazenadas na lista. Em outra modalidade, à medida que um computador processa uma pluralidade de bancos de política, o computador pode armazenar uma lista de ações para cada política que contenha uma regra que tenha avaliado para verdadeiro, após processar a série de bancos de política, o computador pode então adotar todas as ações armazenadas na lista.
A figura 11A ilustra um diagrama em bloco ilustrando um controle de fluxo dentre uma pluralidade de grupos de política. Em breve visão geral, o banco de política 1000b compreende uma série de políticas. Uma das políticas compreende uma ação de invocação 1110 que invoca um segundo 25 banco de política 1000c. A ação de invocação 1110 indica um banco de política 1000c a ser processado se a regra da política contendo a ação avaliar para verdadeiro. Após processar o banco de política invocado, um computador pode então retomar o processamento do primeiro banco de política 1000b. Esse processamento será adicionalmente descrito com relação à 30 figura 11B.
Ainda com relação à figura 11 A, pode ser proporcionada uma interface de configuração 700 que permita que um usuário especifique uma ordem de execução dentre os grupos de política pela inclusão de uma ou mais ações de invocação 1110. Uma ação de invocação pode identificar um grupo de política em uma maneira incluindo, sem limitação, por nome, por local de memória, ou por qualquer outro identificador. Em algumas modali5 dades, os grupos de política podem compreender bancos de política. Em ainda outras modalidades, uma ação de invocação 1110 pode especificar uma política específica dentro de um segundo banco de política.
Em algumas modalidades, uma ação de invocação 1110 pode incluir um ou mais direcionadores indicando como o segundo grupo de política deva ser processado. Em uma modalidade, uma ação de invocação 1110 contida em um primeiro banco de política pode especificar se o processamento do primeiro banco de política deve ou não ser retomado após o processamento do banco de política invocado. Em outra modalidade, uma ação de invocação 1110 pode especificar se o processamento do primeiro banco de política deve ou não ser retomado se for encontrada uma parada brusca ou exceção no banco de política invocado. Por exemplo, uma ação de invocação pode especificar que se for encontrada uma instrução de fluxo "FIM" no segundo banco de política, o processamento deve retomar com o primeiro banco de política. Ou uma ação de invocação pode especificar que se for encontrada uma instrução de fluxo "FIM" no segundo banco de política, nenhuma outra política do primeiro banco de política deve ser processada.
Dessa maneira, um usuário pode configurar uma série de bancos de política para assegurar que determinadas políticas sejam processadas, mesmo onde os resultados de um ou mais bancos de política sejam 25 incertos. Por exemplo, um banco de política proporcionando políticas para negar acesso às URLs restritas pode invocar um banco de política para proporcionar segurança SQL ao detectar que uma URL indique que uma solicitação contenha consultas SQL. A invocação pode especificar que independente do resultado do processamento do banco de política de segurança 30 SQL, o processamento retome no módulo URL após o processamento do banco de política SQL. Dessa maneira, o usuário pode ser assegurado de que seja executado todo banco de política de reforço URL restrita, que pode assegurar que todas as URLs restritas sejam bloqueadas.
Um usuário pode usar as ações de invocação 1110 de banco de política para assegurar que as políticas não sejam avaliadas na eventualidade de um determinado banco de política encontrar uma exceção ou uma pa5 rada brusca. Por exemplo, um banco de política proporcionando políticas de comutação de conteúdo, após determinar uma aplicação correspondente a uma solicitação, pode invocar um banco de política contendo políticas de segurança de aplicação para a aplicação. A invocação pode indicar se o banco de política de segurança de aplicação encontrar uma instrução "FIM", 10 nenhuma política deve ser avaliada no banco de política de comutação de contudo. Isso pode ser usado nos casos onde a instrução "FIM" no banco de política de segurança de aplicação indicar que uma exigência de segurança não tenha sido atendida, e, portanto, não deva ser feito nenhum processamento da solicitação.
Em algumas modalidades, um computador pode ser configurado
com uma ou mais ordens de execução de valor básico para grupos de política. Por exemplo, um computador pode ser dotado de um ou mais grupos de política globais que sejam sempre aplicados primeiro, seguido de uma ou mais computadores ou grupos de política específicos vServer que sejam 20 processados seguindo os grupos de política globais. Em algumas modalidades, os bancos de política podem ser dotados de valor básico ordenando responsivo às funções realizadas pelos bancos de política. Por exemplo, pode ser primeiro aplicada uma pluralidade de políticas SSL para tráfego que chega, e então um conjunto de políticas de segurança pode ser para o 25 tráfego decodificado, seguido por um banco de políticas de comutação de conteúdo.
A figura 11B ilustra uma modalidade de um método de controle de fluxo dentre grupos de política usados em um dispositivo de rede 200 processando um fluxo de pacote. Em breve visão geral, um computador i30 dentifica um primeiro grupo de política para aplicar um fluxo de pacote recebido (etapa 1101). O computador processa uma primeira política do primeiro grupo de política, onde a primeira política identifica (i) uma regra 605 especificando uma primeira expressão 610, e (ii) informação identificando um segundo grupo de política (etapa 1103). O computador avalia a regra 605 (etapa 1105). Em resposta à avaliação da regra 605, o computador processa o segundo grupo de política identificado (etapa 1107). Após o processamento 5 do segundo grupo de política, o computador processa uma segunda política 600 do primeiro grupo de política (etapa 1109).
Ainda com relação à figura 11, agora mais detalhado, um computador pode identificar um primeiro grupo de política para aplicar em um fluxo de pacote recebido de qualquer maneira (etapa 1101). O fluxo de pacote pode ser recebido de qualquer fonte e pode compreender qualquer protocolo ou protocolos.
Em algumas modalidades, a primeira política pode compreender uma expressão orientada de objeto. Em outras modalidades, a primeira política pode compreender uma regra incluindo pelo menos uma expressão e/ou expressão orientada de objeto. Em algumas modalidades, a primeira política 600 especifica uma ação 615 com base em uma avaliação da regra 605.
A informação identificando um segundo grupo de política pode compreender qualquer formato de informação de identificação. Em uma modalidade, o segundo grupo de política pode compreender um banco de polí20 tica, e a informação de identificação pode compreender um nome do banco de política. Em algumas modalidades, a informação identificando o segundo banco de política pode compreender uma ação de invocação 1110.
O computador pode processar a primeira política 600 de qualquer modo (etapa 1103). O computador pode avaliar uma ou mais expressões orientadas no processamento da política.
O computador 200 pode avaliar a regra 605 de qualquer maneira (etapa 1105). Em algumas modalidades, o computador pode avaliar uma expressão orientada de objeto 610. Em algumas modalidades, o computador pode determinar um valor booleano correspondente à regra.
Em resposta à avaliação da regra 605, o computador processa o
segundo grupo de política identificado (etapa 1107). Em algumas modalidades, o computador pode apenas processar o segundo grupo de política se a regra avaliar para verdadeiro. Em outras modalidades, o computador pode apenas processar o segundo grupo de política se a regra avaliar para um valor diferente de zero. O computador pode processar o segundo grupo de qualquer maneira. Em algumas modalidades, o computador aplicação pode 5 processar o segundo banco de política começando com uma política específica identificada por uma ação de invocação 1110.
Em algumas modalidades, após o processamento do segundo grupo de política, o computador pode processar uma segunda política do primeiro grupo de política. Por exemplo, na figura 11 A, um computador pode avaliar a política da linha 11 no banco de política 1000b. Se a regra for verdadeira, o computador pode adotar a ação de invocação 1110, e o computador pode processar o banco de política 1000c. Após o término do processamento do banco de política P3, o computador pode retornar para o banco de política 1000b e processar a instrução seguinte, que é a linha 12. Em algumas modalidades, a aplicação pode apenas retomar o primeiro banco de política se o segundo banco de política resultar em uma parada suave, como, por exemplo, onde a última instrução de um banco de política aponte uma instrução SEGUINTE, como na linha 30 do banco de política 1000c. Em outras modalidades, o computador pode retomar o processamento do primeiro banco de política mesmo onde for indicada uma parada brusca, como, por exemplo, linha 11 do banco de política 1000c.
Em algumas modalidades, o segundo grupo de política pode também conter uma ou mais ações de invocação. Nessas modalidades, a avaliação do banco de política pode ser encadeada de muitas maneiras. Em 25 algumas modalidades, um computador 200 pode processar um terceiro grupo de política, onde o terceiro grupo de política é identificado por uma política 600 no segundo grupo de política. Em outras modalidades, o primeiro banco de política pode ser dotado de uma pluralidade de ações de invocação 1110. Nessas modalidades, o computador pode processar um terceiro 30 grupo de política, onde o terceiro grupo de política é identificado pela segunda política 600 do primeiro grupo de política. Em ainda outras modalidades, a primeira política 600 especifica uma segunda política 600 do primeiro grupo de política a ser processado após o segundo grupo de política ser processado. Por exemplo, uma política compreendendo uma ação de invocação 1110 pode também compreender uma instrução de fluxo que especifica uma política do primeiro grupo de política a ser processado após o processamento retomar do segundo grupo de política.
G. Sistemas e métodos para configurar e usar perfis de segurança de aplicação
A figura 12 ilustra uma série de telas de configuração 1200, 1210, 1260, 1240 para configurar um perfil de segurança de aplicação. Em 10 breve visão geral, uma tela de criação de perfil 1200 permite que um usuário introduza um nome e propriedades gerais para um novo perfil de segurança de aplicação. Uma tela de configuração de perfil 1210 permite que um usuário selecione uma ou mais verificações contidas dentro de um perfil. Duas telas de configuração de verificação 1240, 1260 podem permitir que um usu15 ário modifique ajustes de uma verificação individual.
Ainda com relação à figura 12, agora mais detalhada, uma tela de criação 1200 permite que um usuário introduza um nome de perfil e informação adicional referente ao perfil. Um perfil pode ser nominado de qualquer modo. Em algumas modalidades, um nome de perfil pode refletir a fun20 ção ou funções do perfil. Qualquer informação adicional pode ser especificada juntamente com o perfil. Em uma modalidade, o perfil pode especificar informação sobre o tipo de tráfego de rede que o perfil aplica. Por exemplo, o perfil pode aplicar tráfego HTTP ou HTML. Ou o perfil pode aplicar para tráfego de serviços na web.
Uma tela de configuração de perfil 1210 pode permitir que um
usuário especifique uma ou mais verificações para uso com o perfil. Uma verificação pode compreender qualquer conjunto de políticas ou ações relacionadas à função de segurança comum. Por exemplo, uma verificação "cookie" pode compreender um conjunto de políticas, ajustes ou ações para 30 evitar adulteração de "cookie". Ou a verificação de um cartão de crédito pode compreender um conjunto de políticas, ou ações para evitar que informação de cartão de crédito confidencial seja transmitida por via de um dispositivo. Em uma modalidade ilustrada, um usuário pode escolher bloquear, alertar ou entrar no sistema com relação a uma determinada verificação. Se for selecionado "bloquear", o perfil pode bloquear todo tráfego que não atenda à verificação. Se for selecionado "alertar", um administrador ou usuário pode 5 receber um alerta se um fluxo de pacote não atender à verificação. Se for selecionado "entrar no sistema", pode ser criada uma entrada no sistema cada vez que um fluxo de pacote for transmitido através de um dispositivo que não atenda à verificação. Se a tela de configuração de perfil puder proporcionar a opção para modificar qualquer dessas verificações e regras. Em 10 alguma modalidade, podem ser traduzidas quaisquer modificações para uma verificação em uma expressão de política de realce usada para configurar um dispositivo de rede.
Uma tela de configuração de verificação 1240, 1260 pode compreender qualquer dispositivo de entrada para modificar uma verificação, em 15 uma modalidade, um usuário pode ser capaz de especificar uma ou mais políticas para ser incluída em uma verificação. Em outra modalidade, um usuário pode ser capaz de modificar um ou mais ajustes da verificação. Um ajuste de uma verificação pode compreender qualquer informação usada pela verificação na determinação se um fluxo de tráfego satisfaz a verifica20 ção. Por exemplo, com relação a uma verificação que valide as URLs de início, um ajuste pode compreender uma ou mais URLs de início permitidas. Ou por exemplo, para uma verificação de formato de campo de forma, um ajuste pode compreender um ou mais endereços para os quais a verificação de formato deva ser aplicada. Em algumas modalidades, um ajuste pode 25 corresponder a um ou mais elementos de uma política de realce, Por exemplo, uma URL de início permitida pode ser incorporada como uma expressão na regra da política sendo dotada de uma ação que permita a passagem do tráfego.
A figura 13A ilustra um diagrama de fluxo de um método para configurar um ou mais perfis de segurança de aplicação para um dispositivo, onde cada perfil de segurança de aplicação especifica um número de verificações para executar funções de segurança relacionada a uma aplicação. Em breve visão geral, o método compreende proporcionar uma interface de configuração para configurar um perfil de segurança de aplicação (etapa 1301). O método compreende receber um primeiro ajuste, por via da interface de configuração, que corresponde a uma primeira verificação do perfil de 5 segurança de aplicação (etapa 1301). O método também compreende receber, por via da interface de configuração,um segundo ajuste, que corresponde a uma segunda verificação do perfil de segurança de aplicação (etapa 1305). O método também compreende identificar uma política 600 que especifique uma regra 605 que inclua uma primeira expressão 600 (etapa 10 1307). O método pode então compreender receber informação identificando um perfil de segurança de aplicação a ser processado com base em uma avaliação da regra 605 (etapa 1309).
Ainda com relação à figura 13A, agora com detalhe adicional, é proporcionada uma interface de configuração para configurar um perfil de segurança de aplicação (etapa 1301). A interface de configuração pode compreender quaisquer interfaces de configuração, componentes e métodos aqui descritos. Em algumas modalidades, a interface de configuração compreende uma ou mais interface de arrastar e soltar, uma interface de seleção de lista, ou uma interface de realce de sintaxe. Em outras modalidades, a interface de configuração pode compreender uma tela de configuração de expressão 600. Em ainda outras modalidades, a interface de configuração pode compreender uma série de telas de criação de perfil 1300, telas de configuração de verificação 1310, e/ou telas de configuração de ajuste 1340, 1360. Em ainda outras modalidades, a interface de configuração 700 é uma interface de linha de comando. A interface de configuração pode executar em qualquer dispositivo. Em algumas modalidades, o método inclui a execução da interface de configuração 700 em um dispositivo em comunicação com um dispositivo de rede 200. Em outras modalidades, o método incluía execução da interface de configuração 700 no dispositivo de rede 200. Em uma modalidade, o método proporciona um usuário com uma interface de configuração 1300 para criar uma pluralidade de perfis de configuração.
Um dispositivo pode receber, por via de uma interface de configuração, um primeiro ajuste que especifique uma primeira verificação correspondente do perfil de segurança de aplicação (etapa 1303). Em algumas modalidades, o dispositivo recebe da interface de configuração 700 uma URL para ser usada pela primeira verificação. Em outras modalidades, o 5 dispositivo recebe da interface de configuração 700 uma expressão 610 especificando uma ou mais URLs para ser usada pela primeira verificação. Em ainda outras modalidades, o dispositivo recebe da interface de configuração 700 uma expressão orientada de objeto 600 especificando uma ou mais URLs para serem usadas pela primeira verificação. Em algumas modalidades, o 10 ajuste pode compreender uma indicação se a verificação deve bloquear, entrar no sistema, ou gerar um alerta com relação a um fluxo de pacote que viole a verificação. Em outras modalidades, o ajuste pode compreender um elemento de uma ou mais políticas incluído na verificação.
O dispositivo também recebe, por via da interface de configuração 700, um segundo ajuste que especifica uma segunda verificação correspondente do perfil de segurança de aplicação (etapa 1305). Esse ajuste pode ser recebido de qualquer modo no qual o primeiro ajuste foi recebido.
O dispositivo pode incluir, por via da interface de configuração 700, uma política 600 que especifique uma regra 605 que inclua uma primei20 ra expressão 610 (etapa 1307). Em algumas modalidades, a política pode compreender uma expressão orientada de objeto. A política pode ser identificada de qualquer maneira. Em algumas modalidades, a política pode ser escolhida de uma lista. Em outras modalidades, a política pode ser escolhida por via de uma interface de arrastar e soltar. Em ainda outras modalidades, 25 a política pode ser automaticamente escolhida com relação a um determinado perfil. Em uma modalidade, a política pode ser introduzida diretamente pelo usuário.
O dispositivo pode receber, por via da interface 700, informação que identifique o perfil de segurança de aplicação a ser processado com base em uma avaliação da regra 605 (etapa 1309). Em uma modalidade, o perfil de segurança de aplicação pode ser representado como um banco de política, e uma ação de invocação pode ser adicionada à política identificando o banco de política. Em algumas modalidades, o método inclui armazenar o perfil de segurança de aplicação. Em outras modalidades, o método inclui transmitir o perfil de segurança de aplicação para um dispositivo de rede 200.
Em algumas modalidades, um perfil de segurança de aplicação
pode ser especificado como uma ação para mais de uma política. Por exemplo, pode haver várias condições sob as quais um perfil de segurança de aplicação incluindo uma consistência de campo e verificações de estouro de isolamento devam ser aplicadas. Uma pluralidade de políticas, cada uma 10 especificando uma das várias condições, cada uma pode invocar um perfil de segurança de aplicação como uma ação.
A figura 13B ilustra uma modalidade de um método para executar um ou mais perfis de segurança de aplicação para um dispositivo, cada perfil de segurança de aplicação especificando um número de funções de 15 segurança de execução de grupos de política relacionado a uma aplicação. Em breve visão geral, o método inclui um computador identificando uma primeira política para aplicar em um fluxo de pacote recebido; onde a primeira política 600 especifica uma regra 605 que inclui uma primeira expressão 610 e identifica um perfil de segurança de aplicação (etapa 1321). O computador 20 200 avalia a regra 605 (etapa 1323). O computador, em resposta à avaliação da regra 605 processa uma primeira verificação especificada pelo perfil de segurança de aplicação (etapa 1325). Em resposta à avaliação da regra 605, o computador também processa uma segunda verificação especificada pelo perfil de segurança de aplicação (etapa 1327).
Ainda com relação à figura 13B, agora em detalhe adicional, o
método inclui um computador para identificar uma primeira política para aplicar em um fluxo de pacote recebido; onde a primeira política 600 especifica uma regra 605 que inclui uma primeira expressão 610 e identifica um perfil de segurança de aplicação (etapa 1321). Em algumas modalidades, o com30 putador 200 compreende um dispositivo Proxy VPN. Em algumas outras modalidades, o computador 200 identifica uma primeira política 600 para aplicar em um fluxo de pacote TCP recebido. O fluxo de pacote pode ser recebido de qualquer maneira e de qualquer fonte. O fluxo de pacote pode compreender qualquer protocolo ou protocolos.
O computador 200 avalia a regra da política (etapa 1323). O computador pode avaliar a regra de acordo com qualquer técnica. Em algumas 5 modalidades, a regra pode compreender uma expressão orientada de objeto. Em outras modalidades, a regra pode compreender uma pluralidade de expressões orientadas de objeto. Em algumas modalidades, o computador pode determinar um valor booleano como um resultado da avaliação de expressão.
Em resposta à avaliação da regra 605, o computador 200 processa uma primeira verificação especificada pelo perfil de segurança de aplicação (etapa 1325). Em algumas modalidades, o computador pode processar a primeira verificação em resposta à determinação de que a regra é verdadeira.
O computador pode processar a primeira verificação de qualquer maneira. Em algumas modalidades, o computador avalia pelo menos um ajuste da primeira verificação para determinar se aplica ou não a primeira verificação. Em algumas outras modalidades, o computador determina que uma URL contida no fluxo de pacote combina pelo menos com um ajuste da primeira verificação, e aplica a primeira verificação em resposta à determinação. Em ainda outras modalidades, o computador pode determinar que uma URL contida no fluxo de pacote combina com uma expressão 610 de um ajuste da primeira verificação em resposta à primeira verificação, e aplicar a primeira verificação em resposta à determinação. Em outras modalidades, o computador pode determinar que a URL contida no fluxo de pacote combina com uma expressão orientada de objeto 610 de um ajuste da primeira verificação. O computador pode aplicar a primeira verificação em resposta à determinação.
Ainda em resposta à avaliação da regra 605, o computador 200 processa uma segunda verificação pelo perfil de segurança de aplicação (etapa 1327). Em algumas modalidades, o computador pode processar a segunda verificação em resposta à determinação de que a regra é verdadeira. Em algumas modalidades, o método usa pelo menos uma da primeira verificação e segunda verificação a fim de realizar uma de: determinação de injeção SQL, detecção de URL de inicio inválido, detecção de adulteração de "cookie", detecção de consistência de campo de forma, detecção de estouro de isolador, detecção de roteiro de lugar transversal, detecção de número de 5 cartão de crédito, detecção de URL inválida. Em algumas outras modalidades, o método usa pelo menos uma primeira verificação e segunda verificação para executar um bloqueio de injeção SQL, um bloqueio de URL de início inválido, bloqueio de adulteração e "cookie", bloqueio de campo de forma inconsistente, bloqueio de estouro de isolador, bloqueio de roteiro de lugar 10 transversal, bloqueio de número de cartão de crédito e bloqueio de URL inválida.
Ao mesmo tempo em que a invenção foi especificamente ilustrada e descrita com relação às modalidades preferidas específicas, deve ser compreendido por aqueles versados na técnica que podem ser feitas várias 15 alterações na forma e detalhe na presente invenção sem se afastar do espírito nem do escopo da mesma conforme definido pelas reivindicações em anexo.

Claims (237)

REIVINDICAÇÕES
1. Método para configurar uma política de um dispositivo de rede com expressão orientada de objeto para especificar estrutura em uma carga útil de um fluxo de pacote recebido por um dispositivo de rede, o método compreendendo: (a) proporcionar uma interface de configuração para configurar uma política para um dispositivo de rede; (b) receber por via da interface de configuração, uma expressão para a política, a expressão identificando (i) uma classe de objeto para aplicar em uma parte da carga útil de um fluxo de pacote, e (ii) um membro da classe de objeto; e (c)receber, por via da interface de configuração, informação identificando uma ação para a política, a ação a ser adotada com base em uma avaliação da expressão.
2. Método, de acordo com a reivindicação 1, em que a etapa (a) compreende proporcionar para um usuário, uma interface de configuração de linha de comando.
3. Método, de acordo com a reivindicação 1, em que a etapa (a) compreende proporcionar para um usuário, uma interface de configuração compreendendo uma ou mais interfaces de arrastar e soltar, uma interface de seleção de lista, ou uma interface de realce de sintaxe.
4. Método, de acordo com a reivindicação 1, em que a etapa (a) compreende a execução da interface de configuração em um dispositivo conectado ao dispositivo de rede.
5. Método, de acordo com a reivindicação 1, em que a etapa (a) compreende executar a interface de configuração em um dispositivo de rede.
6. Método, de acordo com a reivindicação 1, compreendendo adicionalmente receber, de um usuário, informação identificando um protocolo.
7. Método, de acordo com a reivindicação 6, em que a etapa (b) compreende receber uma classe de objeto para aplicar em uma parte de uma carga útil de um fluxo de pacote, a classe de objeto correspondente ao protocolo identificado.
8. Método, de acordo com a reivindicação 1, compreendendo adicionalmente receber, do usuário, informação identificando um protocolo a ser usado na interpretação de carga útil de um fluxo de pacote.
9. Método, de acordo com a reivindicação 1, em que o membro da classe de objeto compreende um campo.
10. Método, de acordo com a reivindicação 1, em que o membro da classe de objeto compreende um campo correspondente a uma segunda classe de objeto.
11. Método, de acordo com a reivindicação 1, em que o membro da classe de objeto compreende um método.
12. Método, de acordo com a reivindicação 1, em que o membro da classe de objeto é herdado de uma classe principal da classe de objeto.
13. Método, de acordo com a reivindicação 1, em que a classe de objeto corresponde a uma solicitação HTTP.
14. Método, de acordo com a reivindicação 1, em que a classe de objeto corresponde a uma solicitação HTTP, e o membro da classe de objeto compreende uma URL.
15. Método, de acordo com a reivindicação 1, em que a classe de objeto corresponde a uma solicitação HTTP, e o membro da classe de objeto compreende um "Cookie".
16. Método, de acordo com a reivindicação 1, em que a classe de objeto corresponde a uma resposta HTTP.
17. Método, de acordo com a reivindicação 1, em que a classe de objeto corresponde a um corpo de resposta HTTP, e o membro da classe de objeto corresponde a uma URL.
18. Método, de acordo com a reivindicação 1, em que a etapa (b) compreende receber por via da interface de configuração, uma expressão para a política, a expressão identificando (i) uma classe de objeto para aplicar em uma parte da carga útil de um fluxo de pacote, (ii) um campo da classe de objeto, o campo correspondendo a uma segunda classe de objeto e (ii) um ""typecasting" explícito do campo.
19. Método, de acordo com a reivindicação 1, em que a etapa (b) compreende receber por via da interface de configuração, uma expressão para a política, a expressão identificando (i) uma classe de objeto para aplicar em uma parte de carga útil do fluxo de pacote, (ii) um método da classe de objeto, o método retornando um objeto correspondente a uma segunda classe de objeto, e (iii) um ""typecasting" explícito do objeto retornado.
20. Método, de acordo com a reivindicação 1, em que a etapa (c) compreende informação identificando uma ação para a política, a ação a ser adotada baseada em uma avaliação de uma regra contendo a expressão.
21. Método, de acordo com a reivindicação 1, em que a ação especifica uma função direcionada para pelo menos um de: equilíbrio de carga, comutação de conteúdo, segurança de aplicação, distribuição de aplicação, aceleração de rede, e aceleração de aplicação.
22. Método, de acordo com a reivindicação 1, em que a ação compreende uma URL no corpo da resposta HTTP.
23. Método, de acordo com a reivindicação 1, em que a ação compreende uma expressão orientada de objeto.
24. Método de aplicação em um computador de expressões orientadas de objeto em uma política para especificar estrutura em uma carga útil de um fluxo de pacote recebido pelo computador, o método compreendendo: (a) identificar, por um computador, uma política para avaliar com relação a uma carga útil de um fluxo de pacote recebido, a política especificando (i) uma classe de objeto para aplicar em uma parte da carga útil de um fluxo de pacote, (ii) um membro da classe de objeto e (ii) uma ação; (b) selecionar, pelo computador, uma parte da carga útil identificada pela classe de objeto; (c) determinar pelo computador, um valor para o membro da classe de objeto; e (d) adotar a ação em resposta ao valor determinado.
25. Método, de acordo com a reivindicação 24, em que a política identifica um protocolo.
26. Método, de acordo com a reivindicação 25, compreendendo adicionalmente analisar uma parte da carga útil de acordo com o protocolo identificado.
27. Método, de acordo com a reivindicação 25, em que o protocolo é HTTP.
28. Método, de acordo com a reivindicação 24, em que o membro da classe de objeto compreende um campo.
29. Método, de acordo com a reivindicação 24, em que o membro da classe de objeto compreende um campo correspondente a uma segunda classe de objeto.
30. Método, de acordo com a reivindicação 24, em que o membro da classe de objeto compreende um método.
31. Método, de acordo com a reivindicação 24, em que o membro da classe de objeto é herdado de uma classe principal da classe de objeto.
32. Método, de acordo com a reivindicação 24, em que a classe de objeto corresponde a uma solicitação HTTP.
33. Método, de acordo com a reivindicação 24, em que a classe de objeto corresponde a uma solicitação HTTP e o membro da classe de objeto compreende uma URL.
34. Método, de acordo com a reivindicação 24, em que a classe de objeto corresponde a uma solicitação HTTP, e o membro da classe de objeto compreende um "cookie".
35. Método, de acordo com a reivindicação 24, em que a classe de objeto corresponde a uma resposta HTTP.
36. Método, de acordo com a reivindicação 24, em que a classe de objeto corresponde a um corpo de resposta HTTP, e o membro da classe de objeto corresponde a uma URL.
37. Método, de acordo com a reivindicação 24, em que a etapa (c) compreende determinar, pelo computador, um valor para o membro da classe de objeto; e executar um "typecasting" explícito do valor determinado.
38. Método, de acordo com a reivindicação 24, em que a etapa (d) compreende: avaliar a expressão com base no valor determinado; executar uma operação no valor determinado para produzir um resultado, e adotar a ação em resposta ao resultado produzido.
39. Método, de acordo com a reivindicação 38, em que a operação compreende um de: E, OU, MAIOR DO QUE, MENOR DO QUE, IGUAIS, e NÃO IGUAIS.
40. Método, de acordo com a reivindicação 24, em que a etapa (d) compreende executar uma ação direcionada para pelo menos um de: equilíbrio de carga, comutação de conteúdo, segurança de aplicação, distribuição de aplicação, aceleração de rede e aceleração de aplicação.
41. Método, de acordo com a reivindicação 24, em que a etapa (d) compreende uma URL no corpo da resposta HTTP contida no fluxo de pacote.
42. Computador para aplicar expressões orientadas de objeto em uma política para especificar estrutura de carga útil de um fluxo de pacote recebido pelo computador, o computador compreendendo: um processador de pacote que recebe um fluxo de pacote; e um mecanismo de política que identifica uma política para avaliar com relação a uma carga útil de um fluxo de pacote recebido, a política especificando (i) uma classe de objeto para aplicar em uma parte da carga útil do fluxo de pacote, (ii) um membro da classe de objeto e (iii) uma ação; selecionar uma parte da carga útil identificada pela classe de objeto; determinar um valor para um membro da classe de objeto; e adotar a ação em resposta ao valor determinado.
43. Sistema, de acordo com a reivindicação 42, em que a política identifica um protocolo.
44. Sistema, de acordo com a reivindicação 43, em que o mecanismo de política analisa uma parte da carga útil de acordo com o protocolo identificado.
45. Sistema, de acordo com a reivindicação 43, em que o protocolo é HTTP.
46. Sistema, de acordo com a reivindicação 42, em que o membro da classe de objeto compreende um campo.
47. Sistema, de acordo com a reivindicação 42, em que o membro da classe de objeto compreende um campo correspondente a uma segunda classe de objeto.
48. Sistema, de acordo com a reivindicação 42, em que o membro da classe de objeto compreende um método.
49. Sistema, de acordo com a reivindicação 42, em que o membro da classe de objeto é herdado de uma classe principal da classe de objeto.
50. Sistema, de acordo com a reivindicação 42, em que a classe de objeto corresponde a uma solicitação HTTP.
51. Sistema, de acordo com a reivindicação 42, em que a classe de objeto corresponde a uma solicitação HTTP, e o membro da classe de objeto compreende uma URL.
52. Sistema, de acordo com a reivindicação 42, em que a classe de objeto corresponde a uma solicitação HTTP, e o membro da classe de objeto corresponde a um "cookie".
53. Sistema, de acordo com a reivindicação 42, em que a classe de objeto corresponde a uma resposta HTTP.
54. Sistema, de acordo com a reivindicação 42, em que a classe de objeto corresponde a um corpo de resposta, e o membro da classe de objeto corresponde a uma URL.
55. Sistema, de acordo com a reivindicação 42, em que o mecanismo de política determina um valor para o membro da classe de objeto; e executa um "typecasting" explícito do valor determinado.
56. Sistema, de acordo com a reivindicação 42, em que o mecanismo de política avalia a expressão com base no valor determinado; executa uma operação no valor determinado para produzir um resultado, e adota a ação em resposta ao resultado produzido.
57. Sistema, de acordo com a reivindicação 38, em que a operação compreende uma de E, OU, MAIOR DO QUE, MENOR DO QUE, IGUAIS, e NÃO IGUAIS.
58. Sistema, de acordo com a reivindicação 42, em que o mecanismo de política executa uma ação direcionada para pelo menos um de: equilíbrio de carga, comutação de conteúdo, segurança de aplicação, distribuição de aplicação, aceleração de rede, e aceleração de aplicação.
59. Sistema, de acordo com a reivindicação 42, em que a ação de política reescreve uma URL no corpo de uma resposta HTTP contida no fluxo de pacote.
60. Método de aplicação em um computador de expressões orientadas de objeto em uma política para especificar estrutura em uma carga útil de um fluxo de pacote recebido pelo computador, o método compreendendo: (a) identificar pelo computador, uma política compreendendo uma expressão orientada de objeto para avaliar com relação a uma carga útil de um fluxo de pacote recebido; (b) atribuir, pela pluralidade, valores para uma estrutura de dados especificada pela expressão orientada de objeto com base em uma parte da carga útil; (c) executar pelo computador, uma avaliação da expressão com base nos valores atribuídos; e (d) adotar, em resposta à avaliação, uma ação especificada pela política.
61. Método, de acordo com a reivindicação 60, em que a etapa (b) compreende aplicar, pelo computador, uma estrutura de dados especificada pela expressão orientada de objeto para um fluxo de byte da carga útil.
62. Computador para aplicar expressões orientadas de objeto em uma política para especificar estrutura em uma carga útil de um fluxo de pacote recebido pelo computador, o computador compreendendo: um processador de pacote que recebe um fluxo de pacote; e; um mecanismo de política que identifica uma política compreendendo uma expressão orientada de objeto para avaliar com relação a uma carga útil do fluxo de pacote; atribuir valores para uma estrutura de dados especificada pela expressão orientada de objeto com base em uma parte da carga útil, executar uma avaliação da expressão com base nos valores atribuídos, e adotar, em resposta à avaliação, uma ação especificada pela política.
63. Computador, de acordo com a reivindicação 62, em que o mecanismo de política aplica uma estrutura de dados especificada pela expressão orientada de objeto em um fluxo de byte da carga útil.
64. Método de aplicação em um computador de expressões em uma política para especificar estrutura em uma carga útil de um floco recebido pelo computador, o método compreendendo: (a) identificar, pelo computador, uma política compreendendo uma expressão orientada de objeto para avaliar com relação a uma carga útil de um fluxo de pacote recebido; (b) atribuir, pelo computador, valores para uma estrutura de dados especificada pela expressão orientada de objeto com base em uma parte da carga útil; (c) executar, pelo computador, uma avaliação da expressão com base nos valores atribuídos; (d) alterar, em resposta à avaliação, uma parte do fluxo de pacote recebido; e (e) transmitir pelo computador, o fluxo de pacote alterado.
65. Método, de acordo com a reivindicação 64, em que a política identifica um protocolo.
66. Método, de acordo com a reivindicação 65, compreendendo adicionalmente analisar uma parte da carga útil de acordo com o protocolo identificado.
67. Método, de acordo com a reivindicação 65, em que o protocolo é HTTP.
68. Método, de acordo com a reivindicação 64, em que a expressão especifica uma classe de objeto correspondente a uma solicitação HTTP.
69. Método, de acordo com a reivindicação 64, em que a expressão especifica uma classe de objeto correspondente a uma solicitação HTTP, e uma classe de objeto correspondente a uma URL.
70. Método, de acordo com a reivindicação 64, em que a expressão especifica uma classe de objeto correspondente a um corpo de resposta HTTP, e uma classe de objeto correspondente a uma URL.
71. Método, de acordo com a reivindicação 64, em que a etapa (d) compreende alterar uma parte do fluxo de pacote especificado pela estrutura de dados.
72. Método, de acordo com a reivindicação 64, em que a etapa (d) compreende alterar uma parte do fluxo de pacote especificado em uma segunda expressão orientada de objeto.
73. Método, de acordo com a reivindicação 64, em que a etapa (d) compreende re-escrever uma URL no corpo da resposta HTTP contida no fluxo de pacote.
74. Método, de acordo com a reivindicação 64, em que a etapa (d) compreende ocultar um número de cartão de crédito contido no fluxo de pacote.
75. Método, de acordo com a reivindicação 64, em que a etapa (d) compreende re-escrever uma URL em uma solicitação HTTP.
76. Método, de acordo com a reivindicação 64, em que a etapa (d) compreende re-escrever um valor de campo de forma de uma resposta HTTP.
77. Computador para aplicar expressões orientadas de objeto em uma política para especificar estrutura em uma carga útil de um fluxo de pacote recebido pelo computador, o computador compreendendo: um processador de pacote que recebe um fluxo de pacote; e um mecanismo de política que identifica uma política compreendendo uma expressão orientada de objeto para avaliar com relação a uma carga útil do fluxo de pacote recebido, atribui valores para uma estrutura de dados especificada pela expressão orientada de objeto com base em uma parte da carga útil; executa, pela pluralidade, uma avaliação da expressão com base nos valores atribuídos; altera, em resposta à avaliação, uma parte do fluxo de pacote recebido; e transmite o fluxo de pacote alterado.
78. Computador, de acordo com a reivindicação 77, em que a política identifica um protocolo.
79. Computador, de acordo com a reivindicação 78, compreendendo adicionalmente analisar uma parte da carga útil de acordo com o protocolo identificado.
80. Computador, de acordo com a reivindicação 78, em que o protocolo é HTTP.
81. Computador, de acordo com a reivindicação 77, em que a expressão especifica uma classe de objeto correspondente a uma solicitaçãoHTTP.
82. Computador, de acordo com a reivindicação 77, em que a expressão especifica uma classe de objeto correspondente a uma solicitação HTTP, e uma classe de objeto correspondente a uma URL.
83. Computador, de acordo com a reivindicação 77, em que a expressão especifica uma classe de objeto correspondente a um corpo de solicitação HTTP, e uma classe de objeto correspondente a uma URL.
84. Computador, de acordo com a reivindicação 77, em que o mecanismo de política altera uma parte do fluxo de pacote especificado pela estrutura de dados.
85. Computador, de acordo com a reivindicação 77, em que o mecanismo de política altera uma parte do fluxo de pacote especificado por uma segunda expressão orientada de objeto.
86. Computador, de acordo com a reivindicação 77, em que o mecanismo de política re-escreve uma URL no corpo de uma resposta HTTP contida no fluxo de pacote.
87. Computador, de acordo com a reivindicação 77, em que o mecanismo de política oculta um número de cartão de crédito contido no fluxo de pacote.
88. Computador, de acordo com a reivindicação 77, em que o mecanismo de política re-escreve uma URL em uma solicitação HTTP.
89. Computador, de acordo com a reivindicação 77, em que o mecanismo de política re-escreve um valor de campo de forma de uma resposta HTTP.
90. Método de configuração de um dispositivo de rede para especificar controle de fluxo dentre as políticas usadas no processamento de um fluxo de pacote, o método compreendendo: (a) proporcionar uma interface de configuração para configurar uma pluralidade de políticas de um dispositivo de rede, pelo menos uma política da pluralidade de políticas compreendendo um identificador de política; e (b) receber, por via da interface de configuração, informação identificando uma primeira política da pluralidade de políticas, a primeira política identificando (i) uma regra compreendendo uma primeira expressão e (ii) uma primeira ação a ser adotada com base em uma avaliação da regra; e (c) receber, por via da interface de configuração, informação identificando uma segunda política da pluralidade de políticas para aplicar subsequente à primeira política se a regra avaliar para verdadeiro.
91. Método, de acordo com a reivindicação 90, em que a etapa (a) compreende proporcionar uma interface de configuração de linha de comando.
92. Método, de acordo com a reivindicação 90, em que a etapa (a) compreende proporcionar uma interface de configuração compreendendo uma ou mais interfaces de arrastar e soltar, uma interface de seleção de lista, ou uma interface de realce de sintaxe.
93. Método, de acordo com a reivindicação 90, em que a etapa (a) compreende executar a interface de configuração em um dispositivo em comunicação com o dispositivo de rede.
94. Método, de acordo com a reivindicação 90, em que a etapa (a) compreende executar a interface de configuração no dispositivo de rede.
95. Método, de acordo com a reivindicação 90, em que a primeira expressão é uma expressão orientada de objeto.
96. Método, de acordo com a reivindicação 90, em que a primeira ação compreende nenhuma ação.
97. Método, de acordo com a reivindicação 90, em que a primeira ação especifica uma função executando uma de: equilíbrio de carga, comutação de conteúdo, segurança de aplicação, distribuição de aplicação, aceleração de rede, ou aceleração de aplicação.
98. Método, de acordo com a reivindicação 90, em que a etapa (c) compreende receber um inteiro especificando um número de linha de uma segunda política.
99. Método, de acordo com a reivindicação 90, em que a etapa (c) compreende receber um identificador de política especificando uma segunda política.
100. Método, de acordo com a reivindicação 90, em que a etapa (c) compreende receber uma expressão orientada de objeto para avaliar em execução para especificar um número de linha de uma segunda política.
101. Método, de acordo com a reivindicação 90, em que a etapa (c) compreende receber uma expressão orientada de objeto para ser avaliada em tempo real para especificar um número de linha de uma segunda política.
102. Método, de acordo com a reivindicação 90, em que a pluralidade de políticas compreende um banco de política.
103. Método, de acordo com a reivindicação 90, em que cada política da pluralidade de políticas compreende uma classificação de uma ordem de valor básico na qual as políticas serão processadas por um dispositivo de rede.
104. Método de controle de fluxo dentre as políticas usadas em um dispositivo de rede processando um fluxo de pacote, o método compreendendo: (a) identificar, por um computador, uma pluralidade de políticas para aplicar em um fluxo de pacote recebido, pelo menos uma política da pluralidade de políticas compreendendo um identificador de política; (b) processar, pelo computador, uma primeira política da pluralidade de políticas, a primeira política identificando (i) uma regra compreendendo uma primeira expressão e (ii) uma primeira ação para ser adotada com base em uma avaliação da regra, e (iii) uma segunda política da pluralidade de políticas; (c) determinar, pelo computador, com base em uma avaliação a expressão, os cálculos da rede para verdadeiro; e (d) processar, pelo computador em resposta à determinação, a segunda política identificada.
105. Método, de acordo com a reivindicação 104, em que a etapa (c) compreende avaliar uma expressão orientada de objeto.
106. Método, de acordo com a reivindicação 104, compreendendo adicionalmente a etapa de executar, em resposta à determinação uma ação identificada pela primeira política.
107. Método, de acordo com a reivindicação 104, compreendendo adicionalmente a etapa de executar, em resposta à determinação uma ação identificada pela primeira política; a ação compreendendo executar uma de: equilíbrio de carga, comutação de conteúdo, segurança de aplicação, distribuição de aplicação, aceleração de rede, ou aceleração de aplicação.
108. Método, de acordo com a reivindicação 104, em que a primeira política compreende um inteiro especificando uma classificação de uma segunda política da pluralidade de políticas a ser processada a seguir se a primeira ação se aplicar.
109. Método, de acordo com a reivindicação 104, em que a etapa (d) compreende avaliar, pelo computador, uma expressão para determinar uma classificação da segunda política da pluralidade de políticas a ser processada a seguir.
110. Método, de acordo com a reivindicação 104, em que a etapa (d) compreende avaliar, pelo computador, uma expressão orientada de objeto para determinar uma classificação de uma segunda política da pluralidade de políticas a ser processada a seguir.
111. Método, de acordo com a reivindicação 104, em que computador de políticas compreende um banco de política.
112. Método, de acordo com a reivindicação 104, em que cada política compreende uma classificação para indicar uma ordem de valor básico na qual as políticas devem ser processadas.
113. Método, de acordo com a reivindicação 104, compreendendo adicionalmente armazenar na lista, em resposta à determinação, uma ação identificada pela primeira política.
114. Método, de acordo com a reivindicação 113, compreendendo adicionalmente armazenar, na lista, pelo menos outra ação identificada em pelo menos outra política sendo dotada de uma regra avaliada para verdadeira.
115. Método, de acordo com a reivindicação 114, compreendendo adicionalmente executar cada ação armazenada na lista de ações.
116. Computador para proporcionar controle de fluxo dentre políticas usadas em um dispositivo de rede processando um fluxo de pacote, o computador compreendendo: um processador de pacote que recebe um fluxo de pacote; e um mecanismo de política que identifica uma pluralidade de políticas para aplicar em um fluxo de pacote recebido, pelo menos uma política da pluralidade de políticas compreendendo um identificador de política, processa uma primeira política da pluralidade de políticas, a primeira política identificando (i) uma regra compreendendo uma primeira expressão e (ii) uma primeira ação a ser adotada com base em uma avaliação da regra, e (iii) uma segunda pluralidade de políticas; determinar, com base em uma avaliação da expressão, se a regra avalia para verdadeiro; e processar, por um computador em resposta à determinação, a segunda política identificada.
117. Computador, de acordo com a reivindicação 116, em que o mecanismo de política avalia uma expressão orientada de objeto.
118. Computador, de acordo com a reivindicação 116, em que o mecanismo de política executa, em resposta à determinação, uma ação identificada pela primeira política.
119. Computador, de acordo com a reivindicação 116, em que o mecanismo de política executa, em resposta à determinação, uma ação identificada pela primeira política; a ação compreendendo executar uma de: equilíbrio de carga, comutação de conteúdo, segurança de aplicação, distribuição de aplicação, aceleração de rede, ou aceleração de aplicação.
120. Computador, de acordo com a reivindicação 116, em que a primeira política compreende um inteiro especificando uma classificação de uma segunda política da pluralidade de políticas a ser processada a seguir se a primeira ação aplicar.
121. Computador, de acordo com a reivindicação 116, em que o mecanismo de política avalia uma expressão para determinar uma classificação de uma segunda política da pluralidade de políticas a ser processada a seguir.
122. Computador, de acordo com a reivindicação 116, em que o mecanismo de política avalia uma expressão orientada de objeto para determinar uma classificação de uma segunda política da pluralidade de políticas a ser processada a seguir.
123. Computador, de acordo com a reivindicação 116, em que a pluralidade de políticas compreende um banco de política.
124. Computador, de acordo com a reivindicação 116, em que cada política da pluralidade de políticas compreende uma classificação indicando uma ordem de valor básico na qual as políticas devem ser processadas.
125. Computador, de acordo com a reivindicação 116, em que o mecanismo de política armazena em uma lista, em resposta à determinação, uma ação identificada pela primeira política.
126. Computador, de acordo com a reivindicação 125, em que o mecanismo de política armazena, na lista, pelo menos outra ação, a pelo menos outra ação identificada em pelo menos outra política sendo dotada de uma regra avaliada para verdadeiro.
127. Computador, de acordo com a reivindicação 126, em que o mecanismo de política executa cada ação armazenada na lista de ações.
128. Método para configurar controle de fluxo dentre grupos de política usados em um dispositivo de rede processando um fluxo de pacote, o método compreendendo: (a) proporcionar uma interface de configuração para configurar uma pluralidade de grupos de política para um dispositivo de rede; (b) identificar, pela interface de configuração, uma primeira política de um grupo de política, a primeira política especificando uma regra compreendendo uma primeira expressão; e (c) receber, por via da interface, informação identificando um segundo grupo de política a ser processado com base em uma avaliação da regra.
129. Método, de acordo com a reivindicação 128, em que a etapa (a) compreende proporcionar uma interface de configuração de linha de comando.
130. Método, de acordo com a reivindicação 128, em que a etapa (a) compreende proporcionar uma interface de configuração compreendendo uma ou mais interface de arrastar e soltar, uma interface de seleção de lista, ou interface de realce de sintaxe.
131. Método, de acordo com a reivindicação 128, em que a etapa (a) compreende executar a interface de configuração em um dispositivo de comunicação com o dispositivo de rede.
132. Método, de acordo com a reivindicação 128, em que a etapa (a) compreende executar a interface de configuração no dispositivo de rede.
133. Método, de acordo com a reivindicação 128, em que a etapa (a) compreende proporcionar para um usuário uma interface de configuração para criar uma pluralidade de grupos de política.
134. Método, de acordo com a reivindicação 128, em que a primeira política especifica uma regra sendo dotada de uma expressão orientada de objeto.
135. Método, de acordo com a reivindicação 128, em que a primeira política especifica uma ação a ser adotada em uma avaliação da regra.
136. Método, de acordo com a reivindicação 128, em que a primeira política especifica uma ação adotada se a regra avaliar para verdadeiro; a ação compreendendo executar um de: equilíbrio de carga, segurança de aplicação, distribuição de aplicação, aceleração de rede, ou aceleração de aplicação.
137. Método, de acordo com a reivindicação 128, em que a primeira política especifica uma segunda política do primeiro grupo de política a ser processado após o segundo grupo de política ser processado.
138. Método, de acordo com a reivindicação 128, em que a etapa (c) compreende receber, por via da interface, informação identificando um segundo grupo de política a ser processado se a regra avaliar para verdadeiro.
139. Método, de acordo com a reivindicação 128, em que a etapa (c) compreende receber, por via da interface, um rótulo a ser processado com base em uma avaliação da regra.
140. Método de controle de fluxo dentre grupos de política usados em um dispositivo de rede processando um fluxo de pacote, o método compreendendo: (a) identificar, pela aplicação, um primeiro grupo de política para aplicar um fluxo de pacote recebido; (b) processar, pelo computador, uma primeira política do primeiro grupo de política, a primeira política identificando (i) uma regra compreendendo uma primeira expressão, e (ii) informação identificando um segundo grupo de política; (c) processar, pelo computador em resposta à avaliação da regra, o segundo grupo de política identificado.
141. Método, de acordo com a reivindicação 140, em que a etapa (c) compreende avaliar uma expressão orientada de objeto.
142. Método, de acordo com a reivindicação 140, em que a primeira política especifica uma ação a ser adotada em uma avaliação da regra.
143. Método, de acordo com a reivindicação 140, compreendendo adicionalmente a etapa de executar, em resposta à determinação, a ação identificada pela primeira política.
144. Método, de acordo com a reivindicação 140, em que a ação compreende executar uma de: equilíbrio de carga, comutação de conteúdo, segurança de aplicação, distribuição de aplicação, aceleração de rede, ou aceleração de aplicação.
145. Método, de acordo com a reivindicação 140, compreendendo adicionalmente armazenar em uma lista, em resposta à determinação, a ação identificada pela primeira política.
146. Método, de acordo com a reivindicação 145, compreendendo adicionalmente armazenar, na lista pelo menos outra ação, a pelo menos outra ação identificada em uma segunda política do segundo grupo de política.
147. Método, de acordo com a reivindicação 145, compreendendo adicionalmente executar cada ação armazenada na lista de ações.
148. Método, de acordo com a reivindicação 140, compreendendo adicionalmente, processar, pelo computador após o processamento do segundo grupo de política, uma segunda política do primeiro grupo de política.
149. Método, de acordo com a reivindicação 140, compreendendo adicionalmente, processar, pelo computador, um terceiro grupo de política, o terceiro grupo de política identificado pela segunda política do segundo grupo de política.
150. Método, de acordo com a reivindicação 140, compreendendo adicionalmente, processar, pelo computador, um terceiro grupo de política, o terceiro grupo de política identificado pela segunda política do primeiro grupo de política.
151. Método, de acordo com a reivindicação 140, em que a primeira política especifica uma segunda política do primeiro grupo de política a ser processado após o segundo grupo de política ser processado.
152. Método, de acordo com a reivindicação 151, compreendendo adicionalmente, processar pelo computador após o processamento do segundo grupo de política a segunda política.
153. Computador proporcionando controle de fluxo dentre grupos de política usados no processamento de um fluxo de pacote, o computador compreendendo: um processador de pacote que recebe um fluxo de pacote; e um mecanismo de política que identifica um primeiro grupo de política para aplicar em um fluxo de pacote recebido; processa uma primeira política do primeiro grupo de política, a primeira política identificando (i) uma regra compreendendo uma primeira expressão e ii) informação identificando um segundo grupo de política; avalia a regra; e processa, em resposta à avaliação da regra, o segundo grupo de política identificado.
154. Computador, de acordo com a reivindicação 153, em que o mecanismo de política avalia uma expressão orientada de objeto.
155. Computador, de acordo com a reivindicação 153, em que o mecanismo de política executa, em resposta à determinação, uma ação identificada pela primeira política.
156. Computador, de acordo com a reivindicação 153, em que o mecanismo de política executa uma de: equilíbrio de carga, segurança de aplicação, distribuição de aplicação, aceleração de rede, ou aceleração de aplicação.
157. Computador, de acordo com a reivindicação 153, em que o mecanismo de política armazena em uma lista, em resposta à determinação, uma ação identificada pela primeira política.
158. Computador, de acordo com a reivindicação 153, em que o mecanismo de política armazena em uma lista pelo menos outra ação, a pelo menos outra ação identificada em uma segunda política do segundo grupo de política.
159. Computador, de acordo com a reivindicação 158, em que o mecanismo de política executa cada ação armazenada na lista de ações.
160. Computador, de acordo com a reivindicação 153, em que o mecanismo de política processa, após o processamento do segundo grupo de política, uma segunda política do primeiro grupo de política.
161. Computador, de acordo com a reivindicação 153, em que o mecanismo de política processa um terceiro grupo de política, o terceiro grupo de política identificado por uma política do segundo grupo de política.
162. Computador, de acordo com a reivindicação 153, em que o mecanismo de política, após o processamento do segundo grupo de política, retoma o processamento do primeiro grupo de política.
163. Computador, de acordo com a reivindicação 153, em que o mecanismo de política processa um terceiro grupo de política identificado pela segunda política do primeiro grupo de política.
164. Computador, de acordo com a reivindicação 153, em que a primeira política especifica uma segunda política do primeiro grupo de política a ser processado após o segundo grupo de política ser processado.
165. Computador, de acordo com a reivindicação 164, em que o mecanismo de política processa, após o processamento do segundo grupo de política, a segunda política.
166. Método de configuração de uma política usada por um dispositivo de rede pela especificação de uma ação a ser adotada na eventualidade de um elemento da política estar indefinido, o método compreendendo: (a) proporcionar uma interface de configuração para configurar uma política de um dispositivo de rede: (b) identificar, pela interface de configuração, uma política compreendendo uma primeira ação a ser adotada com base em uma avaliação de uma expressão; (c) receber, por via da interface de configuração, informação identificando uma segunda ação para a política, a segunda ação a ser adotada se um elemento da política estiver indefinido.
167. Método, de acordo com a reivindicação 166, em que a etapa (a) compreende proporcionar uma interface de configuração de linha de comando para configurar uma política de um dispositivo de rede.
168. Método, de acordo com a reivindicação 166, em que a etapa (a) compreende proporcionar uma interface de configuração compreendendo uma ou mais interfaces de arrastar e soltar, uma interface de seleção, ou uma interface de realce de sintaxe.
169. Método, de acordo com a reivindicação 166, em que a etapa (a) compreende executar a interface de configuração em um dispositivo em comunicação com o dispositivo de rede.
170. Método, de acordo com a reivindicação 166, em que a etapa (a) compreende executar a interface de configuração em um dispositivo em comunicação com o dispositivo de rede.
171. Método, de acordo com a reivindicação 166, em que a etapa (a) compreende configurar, pelo usuário por via da interface de configuração, uma expressão orientada de objeto para a política.
172. Método, de acordo com a reivindicação 166, em que a etapa (b) compreende receber, do usuário por via da interface de configuração, uma expressão para a política, a expressão sendo dotada de uma classe de objeto e de uma série de classe de objeto.
173. Método, de acordo com a reivindicação 166, em que a segunda ação compreende nenhuma ação.
174. Método, de acordo com a reivindicação 166, em que a segunda ação compreende bloquear a transmissão de uma parte do fluxo de pacote do dispositivo de rede.
175. Método, de acordo com a reivindicação 166, em que pelo menos uma da primeira ação ou da segunda ação especifica uma função executando uma de: equilíbrio de carga, comutação de conteúdo, segurança de aplicação, distribuição de aplicação, aceleração de rede, ou aceleração de aplicação.
176. Método, de acordo com a reivindicação 166, em que pelo menos uma da primeira ação e da segunda ação especifica re-escrever uma parte da carga útil do fluxo de pacote.
177. Método, de acordo com a reivindicação 166, em que pelo menos uma da primeira ação e da segunda ação especifica re-escrever uma URL contida em uma resposta HTTP.
178. Método, de acordo com a reivindicação 166, em que pelo menos uma da primeira ação e da segunda ação compreende uma expressão orientada de objeto.
179. Método, de acordo com a reivindicação 166, em que a etapa (c) compreende receber, por via da interface de configuração, informação identificando uma segunda ação para a política, a segunda ação a ser adotada se uma expressão da política estiver indefinida.
180. Método, de acordo com a reivindicação 166, em que a etapa (c) compreende receber, por via da interface de configuração, informação identificando uma segunda ação para a política, a segunda ação a ser adotada se uma regra da política estiver indefinida.
181. Método, de acordo com a reivindicação 166, em que a etapa (c) compreende receber, por via da interface de configuração, informação identificando uma segunda ação para a política, a segunda ação a ser adotada se a primeira ação da política estiver indefinida.
182. Método de aplicação em um computador de uma política especificando uma ação a ser adotada na eventualidade de um elemento da política estiver indefinido, o método compreendendo: (a) identificar, por um computador, uma política para avaliar com relação a uma carga útil de um fluxo de pacote recebido, a política especificando (i) uma expressão, (ii) uma primeira ação a ser adotada com base em uma avaliação da expressão e (iii) uma segunda ação a ser adotada se um elemento da política estiver indefinido; (b) determinar, pelo computador, se um elemento da política está indefinido com relação à carga útil; e (c) adotar, pelo computador em resposta à determinação, a segunda ação.
183. Método, de acordo com a reivindicação 182, em que a etapa (b) compreende avaliar uma expressão orientada de objeto.
184. Método, de acordo com a reivindicação 182, em que a etapa (b) compreende avaliar uma expressão sendo dotada de uma classe de objeto e um membro da classes de objeto.
185. Método, de acordo com a reivindicação 182, em que a etapa (b) compreende determinar, pelo computador, se a expressão está indefinida com relação ao fluxo de pacote.
186. Método, de acordo com a reivindicação 182, em que a etapa (b) compreende determinar, pelo computador, uma regra da política está indefinida.
187. Método, de acordo com a reivindicação 182, em que a etapa (b) compreende determinar, pelo computador, a primeira ação da política está indefinida.
188. Método, de acordo com a reivindicação 182, em que a etapa (c) compreende adotar nenhuma ação.
189. Método, de acordo com a reivindicação 182, em que a etapa (c) compreende bloquear transmissão do fluxo de pacote do computador.
190. Método, de acordo com a reivindicação 182, em que a etapa (c) compreende executar uma de: equilíbrio de carga, comutação de controle, segurança de aplicação, distribuição de aplicação, aceleração de rede, ou aceleração de aplicação.
191. Método, de acordo com a reivindicação 182, em que a etapa (c) compreende re-escrever uma parte da carga útil do fluxo de pacote.
192. Método, de acordo com a reivindicação 182, em que a etapa (c) compreende re-escrever uma URL contida em uma resposta HTTP.
193. Computador que possibilita que os usuários especifiquem uma ação a ser adotada na eventualidade de uma expressão contida em uma política não puder ser avaliada pelo computador, o computador compreendendo: um processador de pacote que recebe um fluxo de pacote; e um mecanismo de política que identifica uma política para avaliar com relação à carga útil do fluxo de pacote recebido, a política especificando (i) uma expressão, ii) uma primeira ação a ser adotada com base na avaliação da expressão e (iii) uma segunda ação a ser adotada se a expressão não for avaliada com sucesso; determinar que a expressão não possa ser avaliada com sucesso com relação ao fluxo de pacote; e adotar a segunda ação.
194. Computador, de acordo com a reivindicação 193, em que o mecanismo de política avalia uma expressão orientada de objeto.
195. Computador, de acordo com a reivindicação 193, em que o mecanismo de política avalia uma expressão sendo dotada de uma classe de objeto e de um membro da classe de objeto.
196. Computador, de acordo com a reivindicação 193, em que a segunda ação compreende nenhuma ação.
197. Computador, de acordo com a reivindicação 193, em que a segunda ação compreende bloquear uma parte de um fluxo de pacote.
198. Computador, de acordo com a reivindicação 193, em que pelo menos uma da primeira ação e da segunda ação especifica uma função direcionada a pelo menos uma de: equilíbrio de carga, comutação de conteúdo, distribuição de aplicação, aceleração de rede, e aceleração de aplicação.
199. Computador, de acordo com a reivindicação 193, em que pelo menos uma da primeira ação ou da segunda ação especifica a reescrita de uma parte da carga útil do fluxo de pacote.
200. Computador, de acordo com a reivindicação 193, em que pelo menos uma da primeira ação ou da segunda ação especifica a reescrita de uma URL contida na resposta HTTP.
201. Computador, de acordo com a reivindicação 193, em que o mecanismo de política determina que a expressão está indefinida com relação ao fluxo de pacote.
202. Computador, de acordo com a reivindicação 193, em que o mecanismo de política determina que uma regra da política está indefinida com relação ao fluxo de pacote.
203. Computador, de acordo com a reivindicação 193, em que o mecanismo de política determina que a primeira seção está indefinida com relação ao fluxo de pacote.
204. Método para configurar um ou mais perfis de segurança de aplicação para um dispositivo, cada perfil de segurança de aplicação especificando um número de funções de segurança executando verificações relacionadas a uma aplicação, o método compreendendo: (a) proporcionar uma interface de configuração para configurar um perfil de segurança de aplicação: (b) receber, por via da interface de configuração, um primeiro ajuste, o ajuste especificando correspondência para uma primeira verificação do perfil de segurança de aplicação; (c) receber, por via da interface de configuração, um segundo ajuste, o segundo ajuste especificando correspondência para uma segunda verificação do perfil de segurança de aplicação; (d) identificar, pela interface de configuração, uma política, a política especificando uma regra compreendendo uma primeira expressão; e (e) receber, por via da interface, informação identificando o perfil de segurança de aplicação a ser processado com base em uma avaliação da regra.
205. Método, de acordo com a reivindicação 204, em que a etapa (a) compreende proporcionar uma interface de configuração de linha de comando.
206. Método, de acordo com a reivindicação 204, em que a etapa (a) compreende proporcionar uma interface de configuração compreendendo uma ou mais interfaces de arrastar e soltar, uma interface de seleção de lista, ou interface de realce de sintaxe.
207. Método, de acordo com a reivindicação 204, em que a etapa (a) compreende executar a interface de configuração em um dispositivo em comunicação com o dispositivo de rede.
208. Método, de acordo com a reivindicação 204, em que a etapa (a) compreende executar a interface de configuração no dispositivo de rede.
209. Método, de acordo com a reivindicação 204, em que a etapa (a) compreende proporcionar, para um usuário, uma interface de configuração para criar uma pluralidade de perfis de aplicação.
210. Método, de acordo com a reivindicação 204, em que a etapa (b) compreende receber, por via da interface de configuração, uma URL para ser usada pela primeira verificação.
211. Método, de acordo com a reivindicação 204, em que a etapa (b) compreende receber, por via da interface de configuração, uma expressão especificando uma ou mais URLs a serem usadas pela primeira verificação.
212. Método, de acordo com a reivindicação 204, em que a etapa (b) compreende receber, por via da interface de configuração, uma expressão orientada de objeto especificando uma ou mais URLs para ser usada pela primeira verificação.
213. Método, de acordo com a reivindicação 204, em que a etapa (d) compreende identificar, por via da interface de configuração, política sendo dotada de uma expressão orientada de objeto.
214. Método, de acordo com a reivindicação 204, em que pelo menos uma da primeira verificação e segunda verificação realizam uma de: detecção de injeção SQL, detecção de URL de início inválida, detecção de adulteração de "cookie", detecção de consistência de campo de forma, detecção de estouro de isolador, detecção de roteiro de lugar cruzado, detecção de número de cartão de credito, e detecção de URL inválida.
215. Método, de acordo com a reivindicação 204, em que pelo menos uma da primeira verificação e segunda verificação realizam uma de: bloqueio de injeção SQL, bloqueio de URL de início inválida, bloqueio de adulteração de "cookie", bloqueio de campo de forma inconsistente, bloqueio de estouro de isolador, bloqueio de roteiro de lugar transversal, bloqueio de número de cartão de crédito, e bloqueio de URL inválida.
216. Método, de acordo com a reivindicação 204, compreendendo adicionalmente armazenar o perfil de segurança de aplicação.
217. Método, de acordo com a reivindicação 204, compreendendo adicionalmente transmitir o perfil de segurança de aplicação para um dispositivo de rede.
218. Método para executar em um computador um ou mais perfis de segurança de aplicação, cada perfil de segurança de aplicação especificando um número de grupos de política executando funções de segurança relacionados a uma aplicação, o método compreendendo: (a) identificar, por um computador, uma primeira política para aplicar em um fluxo de pacote; a primeira política especificando uma regra compreendendo uma primeira expressão e identificando um perfil de segurança de aplicação; (b) avaliar a regra pelo computador; (c) processar, pelo computador em resposta a uma avaliação da regra, uma primeira verificação especificada pelo perfil de segurança de aplicação; e (d) processar, pelo computador em resposta à avaliação da regra, uma segunda verificação especificada pelo perfil de segurança de aplicação.
219. Método, de acordo com a reivindicação 218, em que o computador compreende um dispositivo Proxy VPN.
220. Método, de acordo com a reivindicação 218, em que a etapa (a) compreende identificação, por um computador, uma primeira política para aplicar em um fluxo de pacote TCP recebido.
221. Método, de acordo com a reivindicação 218, em que a etapa (b) compreende avaliação, pelo computador, uma expressão orientada de objeto da regra.
222. Método, de acordo com a reivindicação 218, em que a etapa (c) compreende avaliar pelo menos um ajuste da primeira verificação para determinar se aplica ou não a primeira verificação.
223. Método, de acordo com a reivindicação 218, em que a etapa (c) compreende determinar que uma URL contida no fluxo de pacote combina pelo menos um ajuste da primeira verificação, e aplicar a primeira verificação em resposta a uma determinação.
224. Método, de acordo com a reivindicação 218, em que a etapa (c) compreende determinar que uma URL contida no fluxo de pacote combina uma expressão de um ajuste da primeira verificação, e aplicar a primeira verificação em resposta à determinação.
225. Método, de acordo com a reivindicação 218, em que a etapa (c) compreende determinar que uma URL contida no fluxo de pacote combina uma expressão orientada de objeto de um ajuste da primeira verificação, e aplicar a primeira verificação em resposta à determinação.
226. Método, de acordo com a reivindicação 218, em que pelo menos uma da primeira verificação e segunda verificação executa uma de: detecção de injeção SQL, detecção de URL de início inválida,detecção de adulteração de "cookie", detecção de consistência de campo da forma, detecção de estouro de isolador, detecção de roteiro de lugar transversal, detecção de número de cartão de crédito, e detecção de URL inválida.
227. Método, de acordo com a reivindicação 218, em que pelo menos uma da primeira verificação e segunda verificação executa uma de: bloqueio de injeção de SQL, bloqueio de URL de início inválido, bloqueio de adulteração de "cookie", bloqueio de campo de forma inconsistente, bloqueio de estouro de isolador, bloqueio de roteiro de lugar transversal, bloqueio de cartão de crédito, e bloqueio de URL inválida.
228. Computador para executar um ou mais perfis de segurança de aplicação para um dispositivo, cada perfil de segurança de aplicação especificando um numero de grupos de política executando funções de segurança relacionadas a uma aplicação, o computador compreendo: um processador de pacote que recebe um fluxo de pacote; e um mecanismo de política em comunicação com o processador de pacote que identifica uma primeira política para aplicar no fluxo de pacote recebido; a primeira política especificando uma regra compreendendo uma primeira expressão e identificando um perfil de segurança de aplicação; calcular a regra; processar, em resposta a uma avaliação da regra, uma primeira verificação especificada pelo perfil de segurança de aplicação; e processar, em resposta à avaliação da regra, uma segunda verificação especificada pelo perfil de segurança de aplicação.
229. Computador, de acordo com a reivindicação 228, em que o computador compreende um dispositivo Proxy VPN.
230. Computador, de acordo com a reivindicação 228, em que o mecanismo de política identifica uma primeira política para aplicar em um fluxo de pacote TCP recebido.
231. Computador, de acordo com a reivindicação 228, em que o mecanismo de política avalia uma expressão orientada de objeto da regra.
232. Computador, de acordo com a reivindicação 228, em que o mecanismo de política avalia pelo menos um ajuste de uma primeira verificação para determinar se aplica a primeira verificação.
233. Computador, de acordo com a reivindicação 228, em que o mecanismo de política determina que uma URL contida no fluxo de pacote combine pelo menos um ajuste da primeira verificação, e aplica a primeira verificação em resposta à determinação.
234. Computador, de acordo com a reivindicação 228, em que o mecanismo de política determina que uma URL contida no fluxo de pacote combine uma expressão de um ajuste da primeira verificação, e aplica a primeira verificação na determinação.
235. Computador, de acordo com a reivindicação 228, em que o mecanismo de política determina que uma URL contida no fluxo de pacote combine uma expressão orientada de objeto de um ajuste da primeira verificação, e aplica a primeira verificação em resposta à determinação.
236. Computador, de acordo com a reivindicação 228, em que pelo menos uma da primeira verificação e segunda verificação execute uma de: detecção de injeção SQL, detecção de URL de início inválida, detecção de adulteração de "cookie", detecção de consistência de campo de forma, detecção de estouro de isolador, detecção de roteiro de lugar cruzado, detecção de número de cartão de crédito, e detecção de URL inválida.
237. Computador, de acordo com a reivindicação 228, em que pelo menos uma da primeira verificação e segunda verificação execute uma de: bloqueio de injeção SQL, bloqueio de URL de início inválida, bloqueio de adulteração de "cookie", bloqueio de campo de forma inconsistente, bloqueio de estouro de isolador, bloqueio de roteiro de lugar cruzado, bloqueio de número de cartão de crédito, e bloqueio de URL inválida.
BRPI0808859-4A 2007-03-12 2008-03-12 Sistemas e métodos para configurar, aplicar e gerenciar políticas de segurança BRPI0808859A2 (pt)

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
US11/685,180 US8631147B2 (en) 2007-03-12 2007-03-12 Systems and methods for configuring policy bank invocations
US11/685,177 US8490148B2 (en) 2007-03-12 2007-03-12 Systems and methods for managing application security profiles
US11/685,147 2007-03-12
US11/685,175 US7853679B2 (en) 2007-03-12 2007-03-12 Systems and methods for configuring handling of undefined policy events
US11/685,175 2007-03-12
US11/685,177 2007-03-12
US11/685,171 US7853678B2 (en) 2007-03-12 2007-03-12 Systems and methods for configuring flow control of policy expressions
US11/685,167 2007-03-12
US11/685,147 US7865589B2 (en) 2007-03-12 2007-03-12 Systems and methods for providing structured policy expressions to represent unstructured data in a network appliance
US11/685,167 US7870277B2 (en) 2007-03-12 2007-03-12 Systems and methods for using object oriented expressions to configure application security policies
US11/685,180 2007-03-12
US11/685,171 2007-03-12
PCT/US2008/056671 WO2008112769A2 (en) 2007-03-12 2008-03-12 Systems and methods for configuring, applying and managing object-oriented policy expressions for a network device

Publications (1)

Publication Number Publication Date
BRPI0808859A2 true BRPI0808859A2 (pt) 2014-09-09

Family

ID=39731722

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0808859-4A BRPI0808859A2 (pt) 2007-03-12 2008-03-12 Sistemas e métodos para configurar, aplicar e gerenciar políticas de segurança

Country Status (7)

Country Link
EP (2) EP2135385B1 (pt)
CN (2) CN101682526B (pt)
AU (1) AU2008225150A1 (pt)
BR (1) BRPI0808859A2 (pt)
CA (1) CA2679499A1 (pt)
IL (1) IL200736A0 (pt)
WO (1) WO2008112769A2 (pt)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8490148B2 (en) 2007-03-12 2013-07-16 Citrix Systems, Inc Systems and methods for managing application security profiles
US8631147B2 (en) 2007-03-12 2014-01-14 Citrix Systems, Inc. Systems and methods for configuring policy bank invocations
EP2351333B1 (en) * 2008-11-25 2019-09-18 Citrix Systems, Inc. Systems and methods for applying transformations to ip addresses obtained by domain name service (dns)
US8887227B2 (en) 2010-03-23 2014-11-11 Citrix Systems, Inc. Network policy implementation for a multi-virtual machine appliance within a virtualization environtment
US20120158819A1 (en) * 2010-12-21 2012-06-21 Microsoft Corporation Policy-based application delivery
WO2012091371A1 (en) * 2010-12-26 2012-07-05 Lg Electronics Inc. Method for transmitting broadcast service, method for receiving the broadcasting service, and apparatus for receiving the broadcasting service
EP2726994A1 (en) 2011-06-29 2014-05-07 Verisign, Inc. Data plane packet processing tool chain
CN107332805B (zh) * 2016-04-29 2021-02-26 阿里巴巴集团控股有限公司 检测漏洞的方法、装置和系统
WO2020037607A1 (zh) * 2018-08-23 2020-02-27 华为技术有限公司 一种传输数据的方法和装置
CN111800444B (zh) * 2019-04-09 2023-01-31 杭州萤石软件有限公司 一种可动态调整的控制系统和控制方法
CN111818175B (zh) * 2020-07-24 2023-06-30 南方电网数字电网研究院有限公司 企业服务总线配置文件生成方法、装置、设备和存储介质
CN112055032B (zh) * 2020-09-21 2022-05-17 迈普通信技术股份有限公司 一种报文处理方法、装置、电子设备及存储介质
US11374838B1 (en) * 2021-03-29 2022-06-28 Mellanox Technologies, Ltd. Using a data processing unit (DPU) as a pre-processor for graphics processing unit (GPU) based machine learning
US11930047B2 (en) * 2021-10-11 2024-03-12 Hewlett Packard Enterprise Development Lp Unified policy broker
CN114845312B (zh) * 2022-04-02 2023-05-16 四川安迪科技实业有限公司 一种基于tdma卫星网管自动搭建组网环境的方法
EP4332812A1 (de) * 2022-08-29 2024-03-06 Siemens Aktiengesellschaft Verfahren zum rechnergestützten verwalten von sicherheitsprofilen für eine anzahl von applikationen in einem datennetz
CN121094758B (zh) * 2025-11-07 2026-04-10 钱塘征信有限公司 配置工单处理方法、装置、设备、介质和产品

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7246370B2 (en) * 2000-01-07 2007-07-17 Security, Inc. PDstudio design system and method
US20030115204A1 (en) * 2001-12-14 2003-06-19 Arkivio, Inc. Structure of policy information for storage, network and data management applications
US7587517B2 (en) * 2002-07-08 2009-09-08 Precache Inc. Packet routing via payload inspection for quality of service management
US7246156B2 (en) * 2003-06-09 2007-07-17 Industrial Defender, Inc. Method and computer program product for monitoring an industrial network
JP4336858B2 (ja) * 2003-07-02 2009-09-30 日本電気株式会社 ポリシ処理システム、ポリシ処理方法及びポリシ処理プログラム
KR100502068B1 (ko) * 2003-09-29 2005-07-25 한국전자통신연구원 네트워크 노드의 보안 엔진 관리 장치 및 방법
US20060294219A1 (en) * 2003-10-03 2006-12-28 Kazuki Ogawa Network system based on policy rule
US20060026680A1 (en) * 2004-07-29 2006-02-02 Zakas Phillip H System and method of characterizing and managing electronic traffic
US7499412B2 (en) * 2005-07-01 2009-03-03 Net Optics, Inc. Active packet content analyzer for communications network
US7937756B2 (en) * 2005-08-19 2011-05-03 Cpacket Networks, Inc. Apparatus and method for facilitating network security

Also Published As

Publication number Publication date
EP2135385B1 (en) 2013-11-13
WO2008112769A3 (en) 2009-03-12
WO2008112769A2 (en) 2008-09-18
CN101682526A (zh) 2010-03-24
CA2679499A1 (en) 2008-09-18
EP2456125B1 (en) 2014-11-12
CN103560905A (zh) 2014-02-05
CN101682526B (zh) 2013-11-20
EP2456125A1 (en) 2012-05-23
CN103560905B (zh) 2017-03-01
AU2008225150A1 (en) 2008-09-18
IL200736A0 (en) 2010-05-17
HK1139534A1 (en) 2010-09-17
HK1171292A1 (en) 2013-03-22
EP2135385A2 (en) 2009-12-23

Similar Documents

Publication Publication Date Title
BRPI0808859A2 (pt) Sistemas e métodos para configurar, aplicar e gerenciar políticas de segurança
US8631147B2 (en) Systems and methods for configuring policy bank invocations
US7853679B2 (en) Systems and methods for configuring handling of undefined policy events
US7853678B2 (en) Systems and methods for configuring flow control of policy expressions
US8490148B2 (en) Systems and methods for managing application security profiles
US7865589B2 (en) Systems and methods for providing structured policy expressions to represent unstructured data in a network appliance
US7870277B2 (en) Systems and methods for using object oriented expressions to configure application security policies
CN102577302B (zh) 用于在具有流量管理的连接中使用端点审计的系统和方法
US8667146B2 (en) Systems and methods for configuration driven rewrite of SSL VPN clientless sessions
US7925694B2 (en) Systems and methods for managing cookies via HTTP content layer
CN101632067B (zh) 用于终端用户体验监控的系统和方法
CN101523806A (zh) 用于使用动态响应时间来确定网络服务的响应度的方法和设备
CN102292708A (zh) 用于策略的http调出的系统和方法
CN101523866A (zh) 用于分层全局负载平衡的系统和方法
CN101523850A (zh) 用于提供多模式传输层压缩的系统和方法
HK1171292B (en) Systems and methods for configuring, applying and managing application security profiles
HK1139534B (en) Method of configuring a policy of a network device, and appliance and method of applying object-oriented expressions in a policy

Legal Events

Date Code Title Description
B11A Dismissal acc. art.33 of ipl - examination not requested within 36 months of filing
B11Y Definitive dismissal - extension of time limit for request of examination expired [chapter 11.1.1 patent gazette]