ES2302809T3 - Filtro de paquetes dinamicos que utiliza un seguimiento de sesion. - Google Patents

Filtro de paquetes dinamicos que utiliza un seguimiento de sesion. Download PDF

Info

Publication number
ES2302809T3
ES2302809T3 ES02730558T ES02730558T ES2302809T3 ES 2302809 T3 ES2302809 T3 ES 2302809T3 ES 02730558 T ES02730558 T ES 02730558T ES 02730558 T ES02730558 T ES 02730558T ES 2302809 T3 ES2302809 T3 ES 2302809T3
Authority
ES
Spain
Prior art keywords
session
sessions
package
database
received
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Lifetime
Application number
ES02730558T
Other languages
English (en)
Inventor
Ronen Goldberg
Gady Daniely
Moshe Zezak
Drory Shohat
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Telecom Italia SpA
Original Assignee
Telecom Italia SpA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Telecom Italia SpA filed Critical Telecom Italia SpA
Application granted granted Critical
Publication of ES2302809T3 publication Critical patent/ES2302809T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0254Stateful filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass

Landscapes

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

Abstract

Procedimiento de filtrado de una corriente de paquetes de entrada, estando caracterizado dicho procedimiento por el hecho de que comprende las etapas de: establecer una base de datos de sesiones adaptada para almacenar datos relacionados con sesiones para una pluralidad de sesiones y que comprende por lo menos una lista enlazada de sesiones, correspondiendo cada sesión a un interfaz de conexión; abrir una nueva sesión al recibir un interfaz de conexión no previamente almacenado en dicha base de datos de sesiones; reconocer una sesión asociada con un paquete recibido según su interfaz de conexión asociado; procesar los datos de la sesión correspondientes ha dicho paquete recibido según una pluralidad de reglas predefinidas para generar resultados de procesamiento; y decidir si se permite o se deniega dicho paquete recibido según dichos resultados de procesamiento.

Description

Filtro de paquetes dinámicos que utiliza un seguimiento de sesión.
Campo de la invención
La presente invención se refiere en general a sistemas de comunicación de datos, y más particularmente se refiere a un filtro de paquetes dinámicos que utiliza el seguimiento de la sesión para tomar decisiones si se permite o se deniega un paquete.
\vskip1.000000\baselineskip
Antecedentes de la invención
En los últimos años, el mundo ha sido testigo del crecimiento explosivo de Internet. Cada año se han añadido muchos más servidores mientras que el número de usuarios parece que crece sin límite. Internet permite comunicaciones utilizando diferentes técnicas incluyendo el acceso a ordenadores remotos, la transferencia de archivos, la navegación de páginas web (WWW), el correo electrónico, etc. si en diseñado varios protocolos y se utilizan en Internet para tratar varios tipos de comunicaciones por ejemplo, el protocolo de transferencia de archivos (FTP) para la transferencia de archivos, el lenguaje de marcado de hipertexto (HTML) para el tráfico web, etc. generalmente, el protocolo relacionado con las comunicaciones y Carnet está agrupado bajo el paraguas del protocolo de control de transmisión/
protocolo de Internet (TCP/IP) adecuado de protocolos incluyen protocolo en varias capas de la pila de comunicaciones
OSI.
Una característica clave de Internet es que es una República que es accesible casi por todo el mundo con un ordenador, una línea telefónica y una cuenta y un proveedor de servicio de Internet (ISP). Un inconveniente de esta accesibilidad pública a gran escala es que permite un fácil acceso a hackers y otros que intentan realizar axilares maliciosas contra uno o más servidores en Internet. La conducta ilegal tal como el robo de información secreta o el borrado de archivos importantes por parte de un usuario malicioso es posible por parte de un hacker que se traduce en un ordenador de una red remota y que se aprovecha de una manera exitosa de los datos de comunicación. La necesidad de seguridad ha hecho que el Comité de Arquitectura de Internet (IAB) incluya características de seguridad tal como la encriptación y la autentificación en IPv6 que permiten transacciones seguras en Internet.
Para combatir la amenaza de los hackers y asegurar las redes privadas, es común hoy colocar un cortafuegos en la entrada de la red privada en una compañía u organización. El cortafuegos utiliza alguna forma de filtro de paquetes que funciona para respetar una política de seguridad definida por el usuario. El cortafuegos es un sistema que determina el límite entre la red local de la organización y el Internet global. Implementa el filtrado de todas las comunicaciones de datos para evitar la fuga de información a la red exterior y evitar el acceso no autorizado a la red interna desde el exterior. Una decisión de denegación/permiso se realiza para cada paquete que se recibe por parte del corta-
fuegos.
Al mismo tiempo, el mundo es testigo de la demanda aumentada de servicios sin cables (es decir, teléfonos celulares, localizadores de dos vías, dispositivo sin cables, etc.) y dispositivos de informática personal tales como portátiles, agendas electrónicas, etc. muchos de estos dispositivos informáticos personales incorporan circuitos de comunicaciones sin cables para permitir que se comuniquen a través de redes sin cables (por ejemplo, celulares u otros esquemas de banda ancha) en redes WAN tales como Internet. Así, más y más agendas electrónicas y teléfonos celulares están conectados a Internet, exponiendo así estos dispositivos a riesgos de seguridad. Preferiblemente, estos dispositivos utilizan algún tipo de cortafuegos para protegerlos contra el acceso no autorizado al dispositivo. La mayoría de cortafuegos actuales, sin embargo, están implementados en software y requieren recursos informáticos de un ordenador de sobremesa completo, haciendo su uso en un dispositivo informático portátil tal como un teléfono celular a una agenda electrónica poco práctico.
De esta manera, existe la necesidad de un cortafuegos o un filtro de paquetes que se pueda implementar fácilmente en pequeño tamaño adecuado para su incorporación en dispositivos informáticos portátiles pequeños, tales como teléfonos celulares y agendas electrónicas conectadas sin cables.
La solicitud de patente europea EP 0 910 197 A2 describe un cortafuegos configurado para realizar un filtrado de paquetes de estado completo mediante la recogida de resultados de procesamiento de reglas para paquetes recibidos, y a continuación utilizarlo resultado recogidos para derivar el procesamiento de la regla para paquetes similares posteriores. Por ejemplo, los resultados de aplicar una regla asignada a un paquete de una sesión de arrendada se pueden recoger, de manera que cuando un paquete posterior de la misma red llega al cortafuegos, los resultados recogidos del paquete previo se utilizan para el paquete posterior. Si no se encuentra una coincidencia en la memoria, la regla determinada se aplica al paquete; a continuación, sino se encuentra una coincidencia en la regla determinada, el paquete se "abandona". Esta técnica evita la necesidad de aplicar la regla determinada a cada paquete de
entrada.
\newpage
Descripción de la invención
La presente invención proporciona un filtro de paquetes dinámico nuevo y útil que se puede implementar el hardware, software o una combinación de los mismos. La presente invención se puede incorporar en un cortafuegos basado en hardware adecuado para su utilización en dispositivos informáticos portátiles tales como teléfonos celulares y agendas electrónicas conectadas sin cables que están adaptadas para conectarse a Internet.
La invención realiza un filtrado de paquetes dinámico en los paquetes recibidos sobre una corriente de paquetes de entrada. Preferiblemente, la invención se coloca entre una WAN (es decir, Internet) y una LAN local. En este caso, el filtro de paquetes dinámico es operativo para filtrar tanto los paquetes de entrada desde la WAN a la LAN y los paquetes de salida desde la LAN a la WAN. Nótese que el filtrado dinámico es efectivo para comprobar el comportamiento del protocolo dinámico más que las reglas estáticas de un protocolo. La invención consigue esto mediante la creación de sesiones para rastrear el estado de las comunicaciones entre la fuente y el destino.
Nuevas sesiones se detectan, crean y los datos relacionados con las mismas se almacenan en una base de datos de la sesión. Se realiza un intento para reconocer cada paquete recibido y asociarlo con una sesión previamente abierta. El reconocimiento de una sesión se acelera mediante la utilización de una tabla de codificación para determinar rápidamente el registro de la sesión correspondiente en la base de datos de la sesión. La codificación se puede calcular utilizando información de interfaz de conexión completa o parcial. La información de interfaz de conexión completan comprende la fuente de 104 bits y la dirección IP del destino, el número del puerto fuente y de destino y el protocolo. La información de interfaz de conexión parcial, calificada de vacío, no dispone de uno o más sujetos de información. Una base de datos de vacíos se utiliza para almacenar los vacíos que están actualmente abiertos. Una vez se reconoce una sesión de vacíos, el vacío se llena con los parámetros faltantes.
Si no se encuentra ninguna, se crea una nueva sesión. Si se encuentra una existente, los datos relacionados con la sesión se leen desde la base de datos de la sesión y el paquete recibido se comprueba respecto a una serie de reglas. La regla se describen como diagramas de transición del estado que especifican los estados y las transiciones permitidas por el protocolo particular.
Si un paquete está de acuerdo con el comportamiento legal para el protocolo, es permitido, de otra manera, se deniega. Los datos de la sesión se actualizan a continuación con una nueva información del estado y los parámetros relacionados y se escribe otra vez en la base de datos de la sesión.
Aunque la invención está diseñada para su implementación en hardware, también se puede implementar en software. En una realización, un ordenador comprende un procesador, una memoria, etc. es operativo para ejecutar el software adaptado para realizar el procedimiento de filtrado de paquetes dinámico de la presente invención.
Así, se proporciona según la presente invención un procedimiento de filtrado de una corriente de paquetes de entrada, comprendiendo el procedimiento las etapas de establecer una base de datos de sesiones adaptada para almacenar los datos relacionados con la sesión para una pluralidad de sesiones y que comprende por lo menos una lista en la sala de sesiones, correspondiendo cada sesión a un interfaz de conexión, abriendo una nueva sesión bajo la recepción de un interfaz de conexión no almacenado previamente en la base de datos de las sesiones, reconociendo una sesión asociada con un paquete recibido según su interfaz de conexión asociado, procesando los datos de la sesión correspondientes al paquete recibido según una pluralidad de reglas predefinidas para generar resultados de procesamiento y decidir si se permite o deniega el paquete recibido según los resultados de procesamiento.
También se proporciona según la presente invención un procedimiento de monitorización del estado de una sesión de comunicaciones, comprendiendo el procedimiento las etapas de establecer una base de datos de las sesiones adaptada para almacenar los datos relacionados de las sesiones para una pluralidad de sesiones, correspondiendo cada sesión a un interfaz de conexión, reconociendo una sesión según un primer cálculo de codificación en el interfaz de conexión asociado con un paquete recibido, reconocer una sesión de vacío según un segundo cálculo de codificación en una interfaz de conexión parcial asociado con el paquete recibido, leer los datos de la sesión desde la base de datos de la sesión, los datos de la sesión asociados con una sesión reconocida o con una sesión vacía reconocida, rastrear un estado de conexión de la sesión y comprobar el estado contra una pluralidad de reglas para determinar si se permite o se deniega el paquete recibido y escribir los datos de la sesión actualizados otra vez en la base de datos de la
sesión.
También se prevé según la presente invención un filtro dinámico para filtrar una corriente de paquetes de entrada que comprende una base de datos de sesiones adaptada para almacenar datos relacionados con las sesiones para una pluralidad de sesiones y que comprende por lo menos una lista enlazada de sesiones, correspondiendo cada sesión a un interfaz de conexión, un módulo de reconocimiento de sesiones adaptado para buscar la base de datos de las sesiones para una sesión cuyo interfaz de conexión asociado coincide con el de un paquete recibido, un módulo de gestión de las sesiones adaptado para mantener la base de datos de las sesiones incluyendo la edición, el borrado y la modificación de las sesiones en la base de datos de las sesiones y un módulo de filtro principal operativo para rastrear un estado de conexión de la sesión correspondiente a un paquete recibido y comprobar el estado de conexión contra una pluralidad de reglas para determinar si se permite o se deniega el paquete recibido.
\newpage
También se prevé según la presente invención un aparato de computación digital, que comprende medios de comunicación adaptados para conectar el aparato a una red de área amplia (WAN), medios de memoria que comprenden una memoria volátil y no volátil, prestando la memoria no volátil adaptada para almacenar uno o más programas de aplicación, un procesador acoplado a los medios de memoria y los medios de comunicación para ejecutar uno o más programas de aplicación y un filtro dinámico para filtrar una corriente de paquetes de entrada que comprende una base de datos de sesiones adaptado para almacenar datos relacionados con las sesiones para una pluralidad de sesiones y que comprende por lo menos una lista enlazada de sesiones, correspondiendo cada sesión a un interfaz de conexión, un módulo de reconocimiento de sesiones adaptado para buscar en la base de datos de la sesión si una sesión cuyo interfaz de conexión asociado coincide con el de un paquete recibido, un módulo de administración de sesiones adaptado para mantener la base de datos de las sesiones incluyendo la edición, el borrado y la modificación de las sesiones de la base de datos de las sesiones y un módulo de filtro principal operativo para atrás crear un estado de conexión de la sesión correspondiente a un paquete recibido y comprobar el estado de conexión contra una pluralidad de reglas para determinar si se permite o se deniega el paquete recibido.
También se prevé según la presente invención un medio de almacenamiento que se puede leer en un ordenador que tiene un programa informático en el mismo para provocar un sistema programado de una manera adecuada para buscar una pluralidad de cadenas mediante la realización de las siguientes etapas cuando este programa se ejecuta en el sistema: establecer una base de datos de sesiones adaptada para almacenar datos relacionados con las sesiones para una pluralidad de sesiones y que comprende por lo menos una lista enlazada de sesiones, correspondiendo cada sesión a un interfaz de conexión, abrir una nueva sesión al recibir un interfaz de conexión no previamente almacenado en la base de datos de las sesiones, reconocer una sesión asociada con un paquete recibido según su interfaz de conexión asociado, procesar los datos de las sesiones correspondientes al paquete recibido según una pluralidad de reglas predefinidas para generar resultados de procesamiento y decidir si se permite o se deniega el paquete recibido según los resultados de procesamiento.
\vskip1.000000\baselineskip
Breve descripción de los dibujos
La invención se describe aquí, solamente a modo de ejemplo, con referencia a los dibujos adjuntos, en los cuales:
La figura 1 es un diagrama de bloques que muestra varias aplicaciones de ejemplo del filtro de paquetes dinámico de la presente invención en el contexto de una WAN o Internet;
La figura 2 es un diagrama de bloques que muestra el filtro de paquetes dinámico de la presente invención en mayor detalle;
La figura 3 es un diagrama de flujo que muestra el procedimiento de procesador del filtro principal de la presente invención;
La figura 4 es un diagrama de transición del estado que muestra el procedimiento de procesador del filtro principal de la presente invención cuando se encuentra una coincidencia;
La figura 5 es un diagrama de transición de estado que muestra el procedimiento de procesador de filtro principal de la presente invención cuando no se encuentra ninguna coincidencia;
La figura 6 es un diagrama que muestra la técnica de codificación de determinación de la sesión asociada con un paquete de entrada;
La figura 7 es un diagrama de flujo que muestra el procedimiento de codificación del proceso de reconocimiento de la sesión de la presente invención;
La figura 8 es un diagrama de flujo que muestra el procedimiento de búsqueda vacío del procedimiento de reconocimiento de la sesión de la presente invención;
La figura 9 es un diagrama que muestra el flujo de paquetes de una sesión TCP;
La figura 10 es un diagrama de transición de estado que muestra el protocolo de intercambio de 3 vías que se produce al abrir una sesión TCP;
Las figuras 11A y 11B son un diagrama de transición del estado que muestra el protocolo de intercambio de 4 vías que se produce al cerrar una sesión TCP;
La figura 12 es un diagrama que muestra el flujo de paquetes de una sesión ARP;
La figura 13 es un diagrama que vuestra sus flujo de paquetes de una sesión de eco ICMP;
La figura 14 es un diagrama que muestra el flujo de paquetes de una sesión de mensaje/error ICMP;
La figura 15 es un diagrama que muestra el rastreo de ventana de número de secuencia realizado durante las reglas de comprobación mediante el procesador de filtro principal;
La figura 16 es un diagrama que muestra el rastreo de ventana de número de secuencia de reconocimiento realizado durante las reglas de comprobación mediante el procesador de filtro principal;
La figura 17 es un diagrama que muestra la estructura de la lista de enlace utilizada menos recientemente utilizada para rastrear la antigüedad de la sesión;
La figura 18 que sin diagrama de flujo que muestra el procedimiento de actualización de la lista enlazada LRU bajo el reconocimiento de una sesión asociada con un paquete de entrada;
La figura 19 es un diagrama de flujo que muestra el procesamiento del módulo de administración de las sesiones de la presente invención;
La figura 20 es un diagrama de flujo que muestra el procesamiento realizado por el módulo de administración de las sesiones de la presente invención para abrir una sesión;
La figura 21 es un diagrama de flujo que muestra el procesamiento realizado mediante el módulo de administración de las sesiones de la presente invención para cerrar una sesión;
La figura 22 es un diagrama que muestra los indicadores de familia para una sesión;
La figura 23 es un diagrama que muestra una relación de familia de ejemplo entre una pluralidad de sesiones; y
La figura 24 su diagrama de bloques que muestra un ejemplo de sistema de procesamiento informático en plataforma adaptado para realizar el filtrado de paquetes dinámico con el procedimiento de rastreo de sesiones de la presente invención.
\vskip1.000000\baselineskip
Descripción detallada de la invención Notación utilizada a lo largo de toda la descripción
La siguiente notación se utiliza a lo largo de este documento.
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
(Tabla pasa a página siguiente)
100
Descripción detallada de la invención
La presente invención proporciona un filtro de paquetes dinámico nuevo y útil que se puede implementar en hardware, software o una combinación de ambos. La presente invención se puede incorporar en un cortafuegos basado en hardware adecuado para su utilización en dispositivos informáticos portátiles, tales como teléfonos celulares y PDAs conectada sin cables que estén adaptadas para conectarse a Internet.
La invención realiza un filtrado de paquetes dinámico en los paquetes recibidos sobre una corriente de paquetes de entrada. Preferiblemente, la invención está colocada entre una WAN (es decir, Internet) y una LAN local. En este caso, el filtro de paquetes dinámico es operativo para filtrar tanto paquetes de entrada desde la WAN a la LAN y paquetes de salida desde la LAN a la WAN. Véase que el filtrado dinámico es efectivo para comprobar el comportamiento del protocolo dinámico más que las reglas estáticas de un protocolo. La invención consigue esto mediante la creación de sesiones para rastrear el estado de las comunicaciones entre la fuente y el destino.
Nótese que la corriente de entrada puede comprender cualquier tipo de datos de entrada según la aplicación particular, tal como marcos, paquetes, bytes, PDUs, etc. Solamente por motivos de ilustración, la corriente de datos de entrada se considera como una secuencia de paquetes.
Debe indicarse que el filtro de paquetes dinámico representado se presenta como un ejemplo solamente, y no se pretende limitar el alcance de la invención. Un experto en la técnica eléctrica puede construir otros filtros de paquetes dinámicos, en hardware, software o una combinación de ambos para realizar un filtrado dinámico de paquetes utilizando los principios de la presente invención aquí descritos sin apartarse del alcance de la invención.
El filtro dinámico de la presente invención es operativo para mantener una tabla de conexión indicada como una base de datos de sesiones para monitorizar el estado de una sesión de comunicaciones. Se añade una nueva sesión a la base de datos de la sesiones si pasa una regla de política de seguridad estática. Una vez se ha creado una sesión, paquetes posteriores correspondientes a esta sesión se inspeccionan según el estado de la sesión para el protocolo particular asociado con el paquete. El paquete se permite solamente si el paquete está conforme a las especificaciones del protocolo particular.
El filtro dinámico de la presente invención tiene una amplia aplicación en muchos tipos diferentes de sistemas. Un diagrama de bloques que muestra varias aplicaciones de ejemplo del filtro dinámico de paquetes de la presente invención en el contexto de una WAN o Internet se muestra en la figura 1. Típicamente, el filtro dinámico se construye como una parte de un cortafuegos utilizado para evitar un acceso no autorizado a una red protegida, tal como se muestra en cada uno de los tres ejemplos aquí mostrados.
En el primer ejemplo, el filtro dinámico 16 es un componente en un cortafuegos 14 que está implementado en alguna forma el dispositivo informático personal 12 en comunicación con o sin cables con una red 10, tal como una WAN o Internet. El dispositivo informático personal puede comprender cualquier dispositivo, tal como una asistente digital personal (PDA), por ejemplo, una agenda Palm, 1 teléfono celular, un auricular sin cables, etc. En este ejemplo, el filtro dinámico/cortafuegos funciona para filtrar de manera bidireccional paquetes entre Internet y el dispositivo.
En un segundo ejemplo, el filtro dinámico 22 es un componente en un cortafuegos 20 que está implementado en un adaptador de clavija de cable 18 en comunicaciones con o sin cables con la WAN o Internet 10. El dispositivo 18 se asienta entre Internet y un módem de banda ancha 24 que funciona para conectar una LAN 26 a Internet. El filtro dinámico en el adaptador de la clavija de cable funciona para filtrar paquetes enviados desde Internet a la LAN, y viceversa. El módem de banda ancha está adaptado para modular y demodular una señal de banda ancha tal como xDSL, por ejemplo ADSL, HDSL, VDSL, etc., satélite, RF basado en tierra, microondas, etc.
En un tercer ejemplo, el filtro dinámico 30 es un componente en el cortafuegos 28 que está implementado en un ordenador aislado 31, por ejemplo, un ordenador personal (PC), en comunicación con o sin cables con la WAN o Internet. El ordenador que contiene el cortafuegos está situado entre Internet y la LAN 32 que se ha de proteger. El filtro dinámico en el cortafuegos funciona para filtrar paquetes enviados desde Internet a la LAN y viceversa.
El filtro dinámico se describirá ahora en mayor detalle. Un diagrama de bloques que muestra el filtro dinámico de paquetes de la presente invención se muestra en mayor detalle en la figura 2. El filtro dinámico, referenciado en general 40, comprende una interfaz bus 48, memoria intermedia/registros 50, un módulo de reconocimiento de sesión 52, un módulo de procesamiento del filtro principal 54, un módulo de administración de la sesión 56, una tabla de codificación 60, una tabla de vacío 62 y una base de datos de las sesiones 64. El filtro dinámico se comunica con un dispositivo servidor/CPU 42, un decodificador de encabezados 46, un filtro estático 51 y una unidad de búsqueda de contenido 53 sobre un bus 47 a través de la interfaz del bus.
Nótese que a lo largo de este documento, se asume que el filtro dinámico está situado entre una WAN y una LAN y que es operativa para filtrar paquetes en ambas direcciones. Los paquetes de entrada se refiere a unos paquetes recibidos desde la WAN hacia la LAN y los paquetes de salida se refiere una paquetes recibidos desde la LAN hacia la WAN. Así, la corriente de paquetes de entrada o de comprender paquetes de entrada y de salida.
\newpage
La corriente de paquetes de entrada 44 se recibe desde la CPU y sus contenidos se envía al decodificador de encabezados que funciona para de codificar (o analizar sintácticamente) la porción del encabezado del paquete. El decodificador de encabezados es operativo para extraer los campos de interés que se utilizan mediante el filtro dinámico. Los datos extraídos mediante el decodificador de encabezados se envían al filtro dinámico a través del bus. Los datos incluyen un valor de codificación (si se calcula mediante la CPU), datos de interfaz de conexión de 104 bits que incluyen una fuente de 32 bits y una dirección IP de destino, una fuente de 16 bits y un puerto de destino y un protocolo de 8 bits, un valor de función dinámica que indica el tipo de capa de 4 paquetes, por ejemplo, ICMP, ARP, TCP, UDP, etc. para el protocolo TCP, también incluye un número de secuencia de 32 bits, una respuesta de 32 bits, una longitud de carrera de 11 bits y un tamaño de ventana de 16 bits. Nótese que dependiendo de la implementación, el decodificador de encabezados se puede construir como un módulo externo o puede ser integral con el filtro dinámico.
Cada tipo de capa de 4 paquetes se representa mediante un valor de función dinámica diferente. Este valor se utiliza mediante el filtro dinámico para seleccionar la máquina de hardware apropiada que se utiliza cuando se procesa el paquete de recibido para rastrear el estado de la sesión y verificar su legalidad. La longitud de la carga se calcula mediante el decodificador de encabezados y se envía al filtro dinámico. Se calcula restando del campo de la longitud total en el paquete IP, la suma del encabezado IP y longitud en el encabezado TCP.
El procesador de filtro principal comprende la interfaz de CPU 58 y funciona como el bloque de procesamiento principal del filtro dinámico. Abre nuevas sesiones, procesa sesiones existentes y rastrea el estado de una sesión mientras verifica si es legal, es decir, si está permitida, e indica los cambios según el protocolo particular. El módulo de reconocimiento de la sesión funciona para recibir un interfaz de conexión y busca en las bases de datos de las sesiones una sesión abierta que coincida con el interfaz de conexión. El módulo de administración de la sesión funciona para mantener una lista en la hada de codificación y por lo menos una lista enlazada última recientemente utilizada (LRU), con lo cual se añade en y se borran sesiones de las listas. La base de datos de las sesiones funciona para almacenar el interfaz de conexión y otros datos relacionados con las sesiones, incluyendo el estado de la sesión y el estado actual, para su utilización mediante los diferentes módulos de procesamiento del filtro dinámico. Las tablas de codificación y vacías se utilizan para acelerar el reconocimiento de las sesiones. Estos componentes se describen en mayor detalle a continuación.
\vskip1.000000\baselineskip
Procesamiento del filtro principal
El procesamiento del filtro principal se describirá ahora en mayor detalle. Un diagrama de flujo que muestra el procedimiento de procesamiento del filtro principal de la presente invención se muestra en la figura 3. El filtro dinámico está construido para procesar datos en paquetes de una manera en tres etapas, en el que los datos de la sesión asociada con el paquete se leen desde la base de datos de las sesiones en una etapa, los datos se procesan a continuación en una segunda etapa y los resultados de procesamiento se vuelven a escribir en la base de datos de las sesiones en una tercera etapa. Durante la etapa de procesamiento, el estado de la sesión se rastrea contra reglas predefinidas y se toma una decisión si se permite o deniega el paquete.
En primer lugar, se realiza el reconocimiento de la sesión (etapa 70), con lo cual la base de datos de las sesiones se busca para un interfaz de conexión que coincide con el del paquete recibido. Los resultados del reconocimiento se devuelven al procesador del filtro principal (etapa 72). Si no se encuentra ninguna coincidencia (etapa 74), se realiza una comprobación de reglas estáticas utilizando un filtro estático (etapa 76). El filtro estático, que puede o no ser parte del filtro dinámico, funciona para realizar una comprobación estática del paquete recibido contra una serie de reglas estáticas que corresponden a diferentes protocolos. La comprobación de paquetes con reglas estáticas es bien conocida en las técnicas de comunicación, y por lo tanto, no se elaboran aquí.
Si el resultado de la comprobación de la reglas estáticas es la denegación del paquete, es decir, el paquete infringe uno o más reglas de protocolo (etapa 78), el paquete es rechazado (etapa 96). Si el resultado de la comprobación de las reglas estáticas es permitir el paquete, se comprueba si el paquete es un abridor de sesión (etapa 80). Un paquete es un abridor de sesión si es un paquete que puede abrir de manera lógica una sesión. Por ejemplo, un paquete de respuesta no puede abrir una sesión, un paquete TCP ha de ser un paquete SYN para abrir una sesión, etc. Si el paquete no es un abridor que sesión, se rechaza (etapa 96).
Si el paquete es un abridor de sesión válido, se crea una nueva sesión (etapa 82). Los datos y los parámetros relacionados con la sesión se almacenan en la base de datos de las sesiones (etapa 84). A continuación se calcula y almacena un puntero de codificación de la nueva sesión en la tabla de codificación (etapa 86). El puntero de codificación se utiliza para encontrar rápidamente la sesión durante la etapa de reconocimiento.
Si se encuentra una sesión que tiene un interfaz de conexión que coincide el del paquete recibido (etapa 74), los datos de la sesión se leen desde la base de datos de las sesiones (etapa 88) y a continuación se procesan los datos de la sesión (etapa 90). Las reglas dinámicas asociadas con el protocolo de paquetes particular se comprueban y se toma una determinación de si permitir o denegar el paquete. El estado de la sesión se rastrea y comprueba contra el comportamiento permitido para el protocolo particular. Según la invención, la comprobación de las reglas dinámicas se realiza en hardware más que en software. Alternativamente, las reglas dinámicas también se pueden comprobar a través de medios de software.
Si el paquete se deniega (etapa 92), el paquete se rechaza (etapa 96). Si se permite, los datos de la sesión actualizados con el estado de rastreo de la sesión actualizada se vuelven a escribir en la base de datos de las sesiones (etapa 94).
Después de un abridor de sesión, un rechazo de un paquete o un permiso de un paquete, se escribe en uno o más registros de estado y se realiza una interrupción señalando que se ha finalizado el procesamiento del filtro principal en la CPU u otro dispositivo servidor (etapa 98).
Un diagrama de transición de estado que muestra el procedimiento de procesador del filtro principal de la presente invención cuando se encuentra una coincidencia se muestra en la figura 4. El diagrama de transición de estado, indicada general mediante la referencia 290, comprende una pluralidad de transiciones y estados que implementan la lógica de procesamiento del filtrado principal cuando se encuentra una coincidencia. El proceso empieza en el estado de coincidencia 292 y se mueve para buscar punteros y estado 294. En este estado, el puntero y los datos de estado asociados con la sesión se buscan.
Si la sesión es una sesión TCP, los datos relacionados TCP se buscan en la base de datos de las sesiones (estados 297). El proceso se mueve a continuación al estado de procesamiento TCP 298. El procesamiento realizado comprende el rastreo del estado de la sesión TCP y la comprobación de si el comportamiento de la sesión es legal, tal como se describe en mayor detalle posteriormente. El paquete se puede rechazar (estado 302) o permitir, en donde el procesamiento continúa con la espera a que se complete la comprobación del filtrado estático (estado 304). El filtrado estático se realiza fuera del filtro dinámico utilizando cualquier técnica del filtrado estático bien conocida. La comprobación del filtro estático puede rechazar el paquete (estado 302) o puede permitir el paquete, con lo cual el proceso espera que la máquina de contenido complete la búsqueda de la carga de las cadenas válidas y espera que se complete la verificación de la suma de comprobación (estado 306). Si se pasa la verificación de los suma de comprobación y se encuentra una cadena válida, los parámetros TCP se actualizan y se almacenan en la base de datos de las sesiones (estado 310). Los punteros de la sesión se actualizan a continuación (estado 312) y se permite el paquete (estado 314). Si la verificación de la suma de comprobación vuelve a un error de la suma de comprobación o la máquina de contenido encuentra una cadena inválida, el paquete se rechaza (estado 302). Las cadenas inválidas comprenden cadenas encontradas mediante la máquina de contenido que no están permitidas por una o más razones, por ejemplo, indica la presencia de un virus, comandos no permitidos tales como el comando FTP DELETE, etc. Las cadenas válidas comprenden cadenas permitidas o cadenas no coincidentes. Una máquina de contenido adecuado para su utilización con la presente invención se describe en mayor detalle en el documento US 6738779, presentada el 21 de febrero de 2001, titulada "aparato y procedimiento de búsqueda de cadenas paralelas múltiples", asignada de manera similar e incorporada aquí por referencia en su totalidad.
Un procesamiento similar se realiza para protocolos diferentes de TCP. Si la sesión es una sesión no TCP (por ejemplo, UDP, ARP, ICMP, etc.), se introduce el otro estado de procesamiento de protocolo 296. El procesamiento realizado comprende el seguimiento del estado de conexión y la comprobación de si el comportamiento de la sesión es legal para el protocolo particular, tal como se describe en mayor detalle a continuación. El paquete se puede rechazar (estado 302) o permitir, en donde el procesamiento que continúa con la espera a que se complete la comprobación de filtrado estático (estado 300). La comprobación de filtro estático puede rechazar el paquete (estado 302) o puede permitir el paquete, con lo cual el proceso espera a que la máquina de contenido complete la búsqueda de la carga y espera que se complete la verificación de la suma de comprobación (estado 306). Si la verificación de la suma de comprobación pasa y se encuentra una cadena válida, los parámetros del protocolo particular se actualizan y se almacenan en la base de datos de las sesiones (estado 308). Los punteros de sesión se actualizan a continuación (estado 312) y se permite el paquete (estado 314). Si la verificación de la suma de comprobación devuelve un error de suma de comprobación o la máquina de contenido encuentra una cadena inválida, el paquete se rechaza (estado 302).
Un diagrama de transición de estado que muestra el procedimiento de procesador de filtro principal de la presente invención cuando no se encuentra ninguna coincidencia se muestra en la figura 5. El diagrama de transición de estado, referenciado en general con 320, comprende una pluralidad de transiciones y estados que implementan la lógica del procesamiento del filtrado principal cuando no se encuentra ninguna coincidencia. El proceso empieza en el estado de que no se ha encontrado ninguna coincidencia 322 y se mueve a la espera del estado de determinación del filtro está-
tico 326 si la sesión es un inicio de sesión. Si la sesión no es un inicio de sesión, el paquete se rechaza (estado 324).
Si el filtro estático permite el paquete, el proceso espera que la máquina de contenido y que el verificador de la suma de comprobación complete la comprobación (estado 328), de otra manera el paquete se rechaza (estado 324). Si la máquina de contenido encuentra una cadena inválida por la verificación de la suma de comprobación revela un error de la suma de comprobación, el paquete se rechaza (estado 324). Si la verificación de la suma de comprobación y la búsqueda de la máquina de contenido se completa sin errores, se abre una sesión y los datos del interfaz de conexión se almacenan en la base de datos de las sesiones (estado 330). El estado, el sello de la hora y el estado de la conexión también se almacenan en la base de datos de las sesiones (estado 332). Si la sesión es una sesión no TCP, el paquete se permite (estado 336). En el caso de una sesión TCP, se abre una sesión TCP (estado 334) y el paquete se permite a continuación (estado 336).
Según la invención, el filtro dinámico es adecuado para su implementación en hardware adaptado para realizar el procesamiento de seguimiento de la sesión en paralelo para todos los protocolos soportados. Durante la búsqueda de los datos de la sesión en el caso de una coincidencia el interfaz de conexión, los datos previamente buscados se procesan en paralelo. Una vez se puso en los datos, toda la comprobación de la sesión para los diferentes protocolos se realiza en un único ciclo de reloj. Así, la implementación del hardware de la invención acelera mucho el proceso de filtrado de los paquetes.
Reconocimiento de la sesión
El proceso de reconocimiento de la sesión se describirá ahora en mayor detalle. Un diagrama que muestra la técnica de codificación de determinación de la sesión asociada con un paquete de entradas se muestra en la figura 6. Cada sesión corresponde a un único interfaz de conexión. Una sesión se identifica comparando el interfaz de conexión de paquete recibido con los paquetes asociados con sesiones previamente abiertas almacenadas en la base de datos desde las sesiones. Para acelerar el reconocimiento de una sesión, se utiliza una tabla de codificación que almacena punteros de codificación en registros de sesiones en la base de datos de las sesiones, y permite una búsqueda rápida de la sesión correspondiente a un interfaz de conexión recibido.
Nuevas sesiones se almacenan en la base de datos de las sesiones y se calcula una codificación en el interfaz de conexión, mediante el filtro dinámico o la CPU. Un puntero de codificación se almacena en una posición en la tabla de codificación 60 (figura 2) apuntado mediante el resultado de la codificación. Si se almacena más de una sesión en esa posición, la sesión se añade a una lista enlazada. Nótese que inicialmente, cada entrada en la tabla de codificación se inicia en NULL.
Al recibir un paquete, el interfaz de conexión 100 se introduce en el calculador de codificación 102 que funciona para generar un resultado de codificación 104. El resultado de la codificación se utiliza como el índice de la tabla de codificación 106, que comprende una pluralidad de entradas 108, cada una conteniendo un puntero de codificación. El puntero de codificación apunta a una lista enlazada de sesiones 110 en la base de datos de las sesiones. Cada registro de la sesión en la base de datos de las sesiones comprende punteros previos 114 y siguientes 112, implementando así una lista doblemente enlazada. Si se produce una cierto en el interfaz de conexión, cada sesión en la lista enlazada se ha de comprobar para una coincidencia con el interfaz de conexión del paquete recibido.
Preferiblemente, la función de codificación se elige para producir una propagación lo más uniforme posible de resultados de codificación a través de la tabla de codificación. La función de codificación puede ser cualquier función adecuada, tal como una función XOR o CRC. En una realización, el rendimiento se puede mejorar con una función de codificación XOR simple utilizando un vector aleatorio en el cálculo del resultado de la codificación según la siguiente ecuación.
1
En el que el operador (x) se define como sigue
\vskip1.000000\baselineskip
2
y
OUT_{i} representa el i-ésimo byte de la matriz de salida;
SOCK_{i} representa el k-ésimo byte de la matriz de entrada;
RV_{ik} representa el byte i, j de la matriz de vector aleatorio;
(+) indica la función XOR.
\vskip1.000000\baselineskip
Los datos del interfaz de conexión de entrada se generan así utilizando el vector aleatorio y los datos del interfaz de conexión de entrada.
El diagrama de flujo que ilustra el procedimiento de codificación del proceso de reconocimiento de sesión de la presente invención se muestra en la figura 7. La primera etapa es calcular un valor de codificación desde el interfaz de conexión en el paquete recibido, tal como de la manera descrita anteriormente (etapa 120). El resultado de la codificación del byte R se utiliza como el índice en la tabla de codificación para recuperar el puntero correspondiente al interfaz de conexión (etapa 122). Si el puntero de codificación apunta a NULL (etapa 124), entonces no hay ninguna sesión y se devuelve "sesión encontrada" al proceso de filtro principal (etapa 126).
Si el puntero de codificación no es NULL, el interfaz de conexión de la sesión se lee desde la base de datos de las sesiones (etapa 128) y se compara con el interfaz de conexión en el paquete recibido (etapa 130). Si los interfaces de conexión coinciden (etapa 132), se encuentra una coincidencia de sesión (etapa 134) y se informa al proceso de filtro principal. Si los interfaces de conexión no coinciden (etapa 132), se lee el siguiente puntero de codificación desde la lista enlazada (etapa 136) y el procedimiento se repite desde la etapa 124 hasta que el último puntero de codificación apunta a NULL o se encuentra una coincidencia.
Nótese que se realiza siempre una comparación completa en el interfaz de conexión, incluso en el caso de que solamente esté almacenada una sesión en la lista enlazada. Nótese también que el alcance de la invención no está limitado por qué entidad actualiza y mantiene la lista enlazada, es decir, el filtro dinámico o la CPU. La profundidad de la tabla de codificación puede ser de cualquier valor deseado. Típicamente, sin embargo, la profundidad se ajusta según el número de sesiones que sean de seguir de manera simultánea. Preferiblemente, el número de entradas de codificación es dos o cuatro veces el número de sesiones, ya que no es deseable tener muchos duplicados debido a la naturaleza de consumo de tiempo de la comparación del interfaz de conexión completo.
Según la presente invención, el módulo de reconocimiento de la sesión comprende la capacidad de buscar sesiones utilizando datos del interfaz de conexión parciales. Los datos de interfaz de conexión parciales, llamados vacíos, comprenden cualquier interfaz de conexión en el que falta en uno o más objetos de información, es decir, cualquier combinación de uno o más de los cinco elementos que forman un interfaz de conexión (interfaz de conexión y destino de la dirección IP, fuente y destino del puerto y protocolo). Un vacío se refiere a una abertura hecha en el cortafuegos/filtro dinámico para permitir que los paquetes posteriores pasen a través aún que no pasen la base de la regla del filtro estático. Un paquete asociado con un vacío puede tener cero o más parámetros faltantes en su interfaz de conexión asociado. Los interfaces de conexión con uno o más parámetros faltantes se colocan en una tabla de vacíos y se realiza una búsqueda de vacíos.
El procedimiento de búsqueda de los vacíos es un procedimiento de búsqueda secundario organizado mediante el módulo de reconocimiento de la sesión en respuesta al no encontrar una coincidencia de sesión utilizando el procedimiento de coincidencia de interfaz de conexión completa descrita en conexión con la figura 7. Los vacíos no son deseables y una vez establecidos, la CPU y el filtro dinámico intentarán "llenarlos" al recibir el primer paquete que produce una coincidencia de interfaz de conexión parcial.
Una tabla de vacíos 62 (figura 2) se utiliza para almacenar la información de los vacíos típicamente proporcionada por el software en capas de procesamiento 5 y mayores. En el caso donde un interfaz de conexión comprende 5 objetos, la tabla de vacíos comprende 32 registros (de 0 a 31). Por ejemplo, al procesar paquetes FTP, paquetes relacionados con telefonía IP, etc., uno o más parámetros del interfaz de conexión no se conocen inicialmente. En estos casos, la CPU abre un vacío en la tabla de vacíos en una posición correspondiente a los parámetros faltantes.
Nótese que la entrada 31 (es decir, todas) en la tabla de vacíos no se utiliza, ya que representa que no hay ningún parámetro faltante. Cada entrada en la tabla de vacíos tiene los siguientes campos listados en la tabla 1.
TABLA 1 Campos de la tabla de vacíos
3
4
En el ejemplo aquí previsto, el tipo de vacío se define como cinco bits correspondientes a los cinco posibles parámetros faltantes: bit 4 - protocolo; bit 3 - puerto remoto; bit 2 - puerto local; bit 1 - IP remota; bit 0 - IP local. Así, el tipo de vacío "11011" corresponde al parámetro de puerto local faltante.
El procedimiento de codificación descrita anteriormente requiere una información del interfaz de conexión completo para generar el valor de codificación. Si el paquete recibido es uno que ha de "llenar" un vacío, el reconocimiento de la sesión utilizando el procedimiento de CODIFICACIÓN (figura 7) producirá una coincidencia no encontrada y el vacío no se puede llenar. La sesión "de vacío" no se podría encontrar porque la CODIFICACIÓN se calcula sobre el interfaz de conexión completo del paquete recibido, mientras que la entrada en la tabla de CODIFICACIÓN que apunta a la sesión de vacíos se calculo sobre los interfaces de conexión parciales conocidos previamente.
La tabla de vacíos soluciona este problema almacenando la información completa que se ha escrito mediante la CPU y leído mediante el filtro dinámico. Un vacío es una sesión abierta mediante un proceso externo que realiza el filtrado dinámico en la capa de aplicación. Nótese que la CPU está adaptada para calcular inicialmente el valor de codificación parcial y almacenarlo en la tabla de codificación, ya que la CPU es la entidad que detecta primero la existencia de un vacío. El primer paquete cuyo interfaz de conexión parcial coincide con el de la base de datos, cerrará el vacío, ya que los parámetros faltantes se pueden determinar a partir del paquete recibido. La tabla de vacíos comprende 32 entradas, cada una correspondiendo a una única combinación de uno o más parámetros faltantes, en la que cada "bit" representa uno de los cinco parámetros forman el interfaz de conexión.
Cada entrada almacena un campo que indica el número de vacíos de ese tipo particular y los punteros siguiente y previo respecto a las otras entradas. Así, el siguiente y el puntero previo forman una lista enlazada de vacíos. Un registro de first_valid_entry almacena un puntero en la primera entrada en la lista. Un NULL en este registro indica que no se ha almacenado ningún vacío en la base de datos de las sesiones. La última entrada almacena un puntero NULL para indicar el final de la lista.
Un diagrama de flujo que muestra el procedimiento de búsqueda de vacíos del proceso de reconocimiento de la sesión de la presente invención se muestra en la figura 8. La primera etapa es leer la primera entrada de vacío que utiliza los contenidos de la first_valid_enter (etapa 140). Si el puntero de vacío en el registro apunta a NULL (etapa 142), no se encuentra ningún vacío y esto se informa (etapa 144) y vuelve el procedimiento.
Si el puntero de vacío en el registro no apunta a NULL (etapa 142), se calcula un valor de codificación según el código de vacío (etapa 146). El código de vacío es la representación de cinco bits de los parámetros faltantes indicados mediante la entrada en la tabla de vacíos apuntada mediante el puntero de vacío. Los parámetros faltantes no se utilizan en el cálculo de la codificación o se remplazan mediante un cierto valor, es decir, ceros o unos.
El resultado de la codificación generada se utiliza a continuación tal como se ha descrito anteriormente para recuperar un puntero de codificación desde la tabla de codificación 60 (figura 2) utilizando los resultados de la codificación como índice (etapa 146). Si el puntero de codificación apunta a NULL (etapa 150), se lee el siguiente puntero de vacío desde la lista enlazada de vacíos (etapa 164) y el procedimiento continúa con la etapa 142. Si el puntero de vacío no apunta a NULL (etapa 150), la información parcial del interfaz de conexión se lee desde la entrada en la base de datos de las sesiones correspondiente al puntero de codificación (etapa 152).
La lectura del interfaz de conexión parcial desde la entrada en la base de datos de las sesiones se compara con el interfaz de conexión parcial recibido en el paquete (etapa 154). Si los interfaces de conexión parciales coinciden (etapa 156), se declara que se ha encontrado una coincidencia de sesión (etapa 158). Si los interfaces de conexión parciales no coinciden, se lee el siguiente puntero de codificación de la lista enlazada (etapa 160), y si el puntero de codificación no apunta a NULL (etapa 162), el procedimiento continúa con la etapa 152 y el interfaz de conexión parcial en la siguiente sesión se comprueba. Por el contrario, si el siguiente puntero de codificación apunta a NULL (etapa 162), se lee el siguiente puntero de vacío de la lista enlazada de vacíos (etapa 164) y el procedimiento continúa con la etapa 142.
Una vez se ha reconocido una sesión utilizando el procedimiento de búsqueda de vacíos, se procede con el procesamiento del paquete y los datos de la sesión como en el caso de una búsqueda de interfaz de conexión completa. Así, según la presente invención, se puede producir el reconocimiento de la sesión utilizando información del interfaz de conexión completa o parcial. Como la información se extrae de paquetes recibidos posteriormente, se llenan cualesquiera vacíos abiertos.
Base de datos de las sesiones
La base de datos de las sesiones 64 (figura 2) se describirá ahora en mayor detalle. Tal como se ha descrito anteriormente, la base de datos de las sesiones funcionan para almacenar datos relacionados con las sesiones para una pluralidad de sesiones. El tamaño de la base de datos de las sesiones puede variar dependiendo de la implementación y de los requerimientos del sistema. Los campos que forman cada registro de la base de datos se indican a continuación en la tabla 2.
TABLA 2 Campos del registro de la base de datos de las sesiones
5
6
7
El primer grupo de campos 1 a 5 representa el interfaz de conexión utilizado para identificar la sesión. Los campos 4 y 5 están adaptados para almacenar diferentes datos dependiendo del protocolo. Por ejemplo, datos del puerto local y remoto se almacenan para paquetes TCP y UDP, el número de secuencia ICMP, el tipo y código de los datos se almacenan para paquetes relacionados con la sesión de eco ICMP.
Los campos 6 y 7 almacenan el siguiente y el puntero de codificación previo en la lista enlazada de codificación descrita anteriormente. La lista enlazada de codificación se utiliza durante el reconocimiento de la sesión de un paquete. Los campos 8 y 9 almacenan el siguiente y el puntero previo LRU en una lista enlazada LRU utilizada para ordenar las sesiones en términos de antigüedad. La operación de la lista enlazada LRU se describe el mayor detalle a continuación. El campo 10 almacena el número de hijos. Este campo se utiliza en el caso donde la aplicación asociada con esta sesión requiere la apertura de sesiones adicionales. Cada sesión (es decir, la sesión hijo) abierta incrementa el número de hijos.
El filtro dinámico también comprende un registro del estado de la sesión para dirigir la información relacionada con el estado a y desde la CPU. El estado de la sesión comprende una pluralidad de bits, tal como se muestra a continuación en la tabla 3.
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
(Tabla pasa a página siguiente)
TABLA 3 Bits de estado de la sesión
8
9
Los campos 12 a 22 se utilizan para propósitos de traducción de la dirección de la red. Los campos 23 a 28 y 31 a 32 son todos campos relacionados TCP y se utilizan en paquetes TCP de procesamiento y seguimiento. El campo 29 almacena el estado de conexión para todos los tipos de protocolos. El parámetro del estado de conexión es un valor que representa el estado actual de la conexión. Se utilizan diferentes valores para diferentes protocolos. Como ejemplo ilustrativo, los estados de conexión para varios protocolos se indican a continuación en la tabla 4.
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
TABLA 4 Estados de conexión
10
11
El campo 30 almacena el sello de la hora utilizado para datar una sesión. El tiempo se representa en 16 bits y se almacena como una diferencia o delta de tiempo según el protocolo particular. Periódicamente, la CPU instruye al módulo de administración de la sesión para realizar el fechado de las sesiones, con lo cual las sesiones que están fuera de fecha se cierran.
Los campos 33 a 36 se utilizan para almacenar punteros de sesiones relacionadas con esta sesión. Información de la familia diversa se almacenan en la base de datos de las sesiones incluyendo información de hermanos, hijos y parientes.
\vskip1.000000\baselineskip
Ejemplo de seguimiento de una sesión: Abrir/Cerrar sesión TCP
Tal como se ha descrito anteriormente, el procesamiento del filtro principal es la entidad que realiza la comprobación de las reglas una vez se ha reconocido la sesión y los datos de la sesión asociados con el paquete recibido se leen desde la base de datos de las sesiones. Según una implementación de hardware de la invención, se proporciona un circuito separado para cada protocolo que se ha de comprobar en una base dinámica, siendo el TCP el más complejo. Una implementación del software utiliza códigos de aplicación para realizar la comprobación dinámica de las reglas.
Como ejemplo, el procesamiento requerido que se ha de realizar mediante circuitos de hardware para el protocolo TCP se describe en forma de diagramas de transición de estado para el proceso de apertura y cierre de una sesión TCP. Nótese que el experto en la materia eléctrica puede utilizar los diagramas de transición de estado aquí descritos para construir circuitos que implementen la misma funcionalidad mostrada en los diagramas de transición de estado.
Un diagrama que muestra el flujo de paquetes de una sesión TCP se muestra en la figura 9. El flujo aquí descrito es bien conocido en la técnica de la comunicación y se muestra como una ayuda en la comprensión de los siguientes diagramas de transición de estado para el protocolo de intercambio de 3 vías y de 4 vías. Las sesiones TCP se abren entre dos servidores A y B mediante la solicitud de números de secuencia sincronizados a través de paquetes que comprenden la señal SYN. Una vez abiertos, los datos fluyen entre los dos servidores tal como se representa mediante los paquetes ACK. Una sesión TCP se cierra a ambos lados enviando paquetes que comprenden la señal FIN que indica que el emisor no tiene más datos para enviar. El acuse de recibo de los paquetes FIN cierra la sesión.
Nótese que durante los protocolos de intercambio, los números de acuse de recibo extraídos del paquete recibido se verifican contra los números de acuse de recibo esperados almacenados en la base de datos de las sesiones. Durante el seguimiento de la sesión abierta, la secuencia y el número de acuse de recibo se verifican para que estén en el interior de la ventana, tal como se describe posteriormente. Si un paquete RST llega (es decir, un paquete con la marca RESET afirmada en el encabezado TCP), la sesión se cierra.
Un diagrama de transición de estado que muestra el protocolo de intercambio de 3 vías que se produce al abrir una sesión TCP se muestra en la figura 10. Los posibles paquetes de entrada incluyen paquetes RX/TX SYN, RX/TX SYN ACK o RX/TX ACK. El diagrama de transición de estado, indicado en general mediante la referencia 170, comprende una pluralidad de estados válidos (es decir, legales) y transiciones asociadas. Nótese que TX indica la dirección desde la LAN a la WAN y RX indica la dirección desde la WAN a la LAN.
Al detectar la apertura de una sesión TCP, se introduce el estado NULL 172. En este estado, se abre una nueva sesión en la base de datos de las sesiones y se generan los siguientes campos y se almacenan en el registro de la sesión: los números de secuencia recibidos, el sello de la hora, el estado de conexión que indica el estado NULL, el tamaño máximo de la ventana, el número de secuencia máximo y el número de acuse de recibo esperado. El siguiente estado depende de en qué lado se ha recibido el paquete, es decir, LAN o WAN. Si se recibe un paquete RX SYN, el siguiente estado comprende el estado de conexión TCP solicitado WAN 176. En caso contrario, se introduce el estado de conexión TCP solicitado LAN 184. En este estado, tal como se realiza en todos los otros estados también, los datos correspondientes a la sesión reconocida tal como se derivan del paquete recibido se leen desde la base de datos de las sesiones. Uno o más campos se comprueban para su legalidad, uno o más campos se actualizan y los datos de la sesión se escriben otra vez en la base de datos de las sesiones.
En el estado 176, la comprobación principal realizada incluye comprobar si el número de acuse de recibo está correlacionado con el número de acuse de recibo esperado. El estado de conexión, el número de secuencia inicial LAN, el número de secuencia máxima LAN, el tamaño de la ventana LAN y el acuse de recibo LAN esperado para la última porción del protocolo de intercambio se actualizan. La recepción del RX SYN y TX SYN son legales y no provocan un cambio de estado.
La recepción de un TX SYN ACK mueve la sesión al estado de conexión TCP aceptado LAN 178, mientras que la recepción de un RX SYN ACK mueve la sesión al estado de conexión TCP aceptado WAN 186. Los RX SYN, TX SYN, RX SYN ACK y TX SYN son legales y no provocan un cambio en el estado. En estos dos estados, se realiza una comprobación similar de los parámetros de la sesión. Una vez se ha completado la comprobación y la actualización, los parámetros actualizados se vuelven a escribir en la base de datos de las sesiones.
La recepción de un RX ACK mientras está en el estado 178 o un TX ACK mientras está en el estado 186 mueve la sesión al estado de conexión TCP abierta 180. La recepción de un RX SYN ACK, TX SYN, RX ACK o TX ACK son legales y no provocan un cambio en el estado. Esto representa el estado de sesión TCP abierta, con lo cual cada paquete TCP recibir posteriormente para esta sesión se comprueba para su legalidad. Por ejemplo, se realiza el seguimiento del número de secuencia y el acuse de recibo. También se actualizan los campos del número de la secuencia máxima para la LAN o WAN, dependiendo de la dirección del paquete.
Así, cada etapa del protocolo de intercambio de 3 vías para la apertura de una sesión TCP se sigue de manera dinámica y se rechazan los paquetes que intentan transiciones ilegales. Así, solamente se permiten paquetes que están de acuerdo de una manera adecuada con el protocolo TCP.
Un diagrama de transición de estado que muestra el protocolo de intercambio de 4 vías que se produce a cerrar una sesión TCP se muestra en las figuras 11A y 11B. Las posibles entradas en estos diagrama, indicadas en general con la referencia 190, incluyen RX/TX ACK, RX/TX FIN ACK, RX/TX FIN ACK (FIN) o RX/TX ACK (FIN). Nótese que TX/RX ACK representa los paquetes regulares de acuse de recibo mientras que ACK (FIN) representa un acuse de recibo del paquete FIN.
El estado inicial en este diagrama es el estado de conexión abierta 192. La recepción de paquetes RX ACK o TX ACK no provocan cambios en el estado. La recepción de un TX FIN ACK provoca que la sesión se mueva al estado FIN enviado LAN 194, mientras que la recepción de un RX FIN ACK provoca que la sesión se mueva al estado FIN enviado WAN 204. La recepción de un RX FIN ACK mientras está en el estado 194 o un TX FIN ACK mientras está en el estado 204 provoca que la sesión se mueva al estado FIN enviado WAN/FIN enviado LAN 202. La recepción de paquetes RX/TX FIN o RX/TX ACK no provoca un cambio de estado.
\newpage
La recepción de un paquete RX ACK (FIN) mientras está en el estado 194 provoca que la sesión se mueva al estado WAN ACKed LAN FIN 196. La recepción de paquetes RX/TX ACK, RX ACK (FIN) o TX FIN ACK no provoca un cambio de estado. La recepción de un paquete TX ACK (FIN) mientras está en el estado 204 provoca que la sesión se mueva al estado LAN ACKed LAN FIN 206. La recepción de paquetes RX/TX ACK, TX ACK (FIN) o RX FIN ACK no provoca un cambio de estado.
La recepción de paquetes RX FIN ACK o RX FIN ACK (FIN) mientras está en el estado 196 provoca que la sesión se mueva al estado WAN ACKed LAN FIN/WAN enviado FIN 198. Los paquetes RX/TX ACK, RX ACK (FIN), RX FIN ACK (FIN) y RX/TX FIN no causan un cambio de estado. La recepción de paquetes TX FIN ACK o TX FIN ACK (FIN) mientras está en el estado 206 provoca que la sesión se mueva al estado WAN ACKed LAN FIN/WAN enviado FIN 210. Los paquetes RX/TX ACK, TX ACK (FIN) y RX/TX FIN no provocan un cambio de estado.
La recepción de un paquete RX FIN ACK (FIN) mientras está en el estado 194 provoca que la sesión se mueva directamente al estado WAN ACKed LAN FIN/WAN enviado FIN 198. La recepción de un paquete TX FIN ACK (FIN) mientras está en el estado 204 provoca que la sesión se mueva directamente al estado LAN ACKed WAN FIN/LAN enviado FIN 210.
La recepción de paquetes TX ACK (FIN) o TX FIN ACK (FIN) mientras se está en el estado 198 con la recepción de paquetes RX ACK (FIN) o RX FIN ACK (FIN) mientras se está en el estado 210 provocan que la sesión se mueva al estado Cerrar TCP mediante FIN 200. Los paquetes RX/TX FIN, RX/TX ACK, TX FIN y RX/TX ACK (FIN) no provocan un cambio de estado.
Así, cada etapa del protocolo de intercambio de 4 vías para cerrar una sesión TCP se sigue dinámicamente y los paquetes que intentan transiciones ilegales se rechazan. Así, solamente los paquetes que están conformes de manera adecuada con el protocolo TCP son permitidos.
La invención también comprende también el seguimiento de sesiones para otros protocolos. Un diagrama que muestra el flujo de paquetes de una sesión ARP se muestra en la figura 12. Asumiendo dos servidores A y B, el seguimiento de la sesión ARP comprende abrir una sesión al recibir un paquete solicitado ARP. Se permiten paquetes posteriores ARP de solicitud/respuesta con el mismo interfaz de conexión (incluyendo retransmisiones). Preferiblemente, se especifica una corta variación de tiempo después de una respuesta ARP, ya que una sesión ARP abierta no sé de mantener abierta durante un período de tiempo extendido. Una respuesta ARP cierra la sesión.
Un diagrama que muestra el flujo de paquetes de una sesión de eco ICMP se muestra en la figura 13. Asumiendo dos servidores A y B, la solicitud de eco ICMP abre una sesión de eco ICMP. Una vez está abierta la sesión, solamente se permite una respuesta de eco ICMP con el mismo interfaz de conexión. No se permite ninguna retransmisión porque la retransmisión de eco utiliza diferentes números de secuencia ID, es decir, diferentes interfaces de conexión. Una respuesta de eco ICMP cierra la sesión.
Un diagrama que muestra el flujo de paquetes de una sesión ICMP de mensaje/error se muestra en la figura 14. El paquete ICMP de mensaje/error comprende un campo de encabezado IP, un encabezado ICMP, un encabezado IP y 64 bits de encabezado TCP. Un mensaje/error ICMP encapsula el encabezado IP del paquete original además de los 64 bits del encabezado TCP. Se ha de permitir un paquete de mensaje/error ICMP por la base de datos de reglas de política de seguridad (es decir, el filtro estático externo), de otra manera, se rechazará automáticamente mediante el procesamiento de filtro principal. El filtro dinámico procesa solamente el paquete parcial encapsulado (es decir, la sesión se reconoce según los interfaces de conexión encapsulados). Si es permitido por el filtro estático y la sesión se encontró durante el reconocimiento de la sesión entonces (1) se permite un paquete de mensaje ICMP y solamente se modifica el campo de sello del tiempo de la sesión, (2) se permite un paquete de error ICMP y el estado de la conexión se cambia a "cerrado mediante LAN/WAN ICMP ERROR". Los paquetes posteriores que pertenecen a esta sesión se rechazarán debido a este error. La configuración externa (tal como través de la CPU) determina qué tipo de ICMP (TIPO/CÓDIGO ICMP) se considera que es un mensaje y qué se considera que es un error. Un paquete ICMP con problemas de seguridad se ha de rechazar por adelantado según la base de datos de las reglas de política de seguridad.
Seguimiento del número de secuencia/acuse de recibo
Según la invención, el procesamiento del filtro principal está adaptado para seguir los números de secuencia de la sesión TCP/IP. Un diagrama que muestra el seguimiento de la ventana del número de secuencia durante la comprobación de las reglas mediante el procesador de filtro principal se muestra en la figura 15. El seguimiento del número de secuencia se realiza mediante el procesamiento del filtro principal, mientras está en el estado de conexión TCP abierta 180 utilizando el campo del tamaño de la memoria intermedia en el encabezado TCP. Asumiendo que el eje X representa el número de secuencia LAN, el tamaño de la ventana WAN máxima 240 en bytes se resta si se añade al número de secuencia LAN máxima, tal como se indica mediante las líneas de trazos verticales. El número de secuencia LAN inicial se indica en el extremo izquierdo del eje X. Se indica el rango de secuencia LAN permitido 242.
Para cada paquete, límite inferior se calcula como el mayor del número de la secuencia LAN inicial o el máximo de la secuencia LAN menos el tamaño de la ventana WAN máximo. El límite superior es la suma del número de la secuencia LAN máximo y el tamaño de la ventana WAN máximo. Si el número de secuencia del paquete transmitido está incluido entre los límites inferior y superior, el paquete se permite. En caso contrario, el paquete se rechaza. Los paquetes con números de secuencia fuera del rango de secuencia permitido se rechazan. Nótese que el número de secuencia de un paquete recibido se sitio de la misma manera con la diferencia siendo el cambio de las entidades LAN y WAN en la descripción anterior.
Un diagrama que muestra el seguimiento de la ventana de número de secuencia de acuse de recibo realizado durante la comprobación de las reglas mediante el procesador del filtro principal se muestra en la figura 16. El seguimiento del número de acuse de recibo se realiza mediante el procesamiento del filtro principal mientras está en el estado de conexión TCP abierta 180 utilizando el campo de tamaño de la memoria intermedia en el encabezado TCP. Asumiendo que el eje X representa el número de secuencia WAN, el tamaño de la ventana LAN máximo 250 en bytes se resta y añade al número de secuencia WAN máximo tal como se indica mediante las líneas de trazos verticales. El número de secuencia WAN inicial se indica en el extremo izquierdo del eje X. Se indica el rango de acuse de recibo permitido 252. La comprobación de las reglas para el número de acuse de recibo es análoga al del número de secuencia tal como se ha descrito dependiendo de si el paquete se envió o recibió mediante la WAN o la LAN.
Debe indicarse que según la invención, el módulo de procesamiento del filtro principal es operativo para comprobar de manera dinámica las reglas asociadas también con otros protocolos, incluyendo pero no estando limitados a UDP, ICMP incluyendo solicitud/respuesta de eco, mensajes de control y error, ARP, fragmentación ICMP y IP.
Módulo de administración de la sesión
Según la invención, el módulo de administración de la sesión es operativo para mantener una lista en la sala para almacenar las sesiones en el orden de menos recientemente utilizadas. El módulo de administración de la sesión realiza varias funciones relativas al mantenimiento y control de la base de datos de las sesiones. El módulo de administración de la sesión funciona para comprobar la validez de los sellos de la hora (es decir, la antigüedad) de las sesiones almacenadas en la base de datos de las sesiones bajo el comando desde la CPU. Cuando se recibe el comando para realizar el envejecimiento, los campos del sello del tiempo de cada registro en la base de datos de las sesiones se examinan y aquellos registros cuyo límite de tiempo ha expirado se cierran. El envejecimiento se realiza en las sesiones para purgar sesiones que se han vuelto viejas y que no se cerraron normalmente por algún motivo. Por ejemplo, una sesión puede expirar si corresponde a un paquete que ha violado una regla.
El módulo de administración de la sesión también funciona para proporcionar una sesión no utilizada (es decir, vacía y disponible) a la CPU cual procesamiento del filtro principal 54 (figura 2) bajo solicitud. En operación, la CPU/procesamiento del filtro principal solicita una nueva sesión y el módulo de administración de la sesión busca una y devuelve el índice a la CPU/procesamiento de filtro principal respectivamente. De una manera similar, el módulo de administración de la sesión también desconecta prestamente una sesión que está en uso cuando se requiere, es decir, envejecimiento, solicitud de la CPU, solicitud de procesamiento del filtro principal, etc. el módulo de administración de la sesión también abre nuevas sesiones, en las que se actualizan los punteros LRU y los punteros de codificación en la tabla de codificación y en la base de datos de las sesiones.
La estructura de la lista enlazada menos recientemente usada (LRU) utilizada para seguir el uso de la sesión se muestra en la figura 17. Cada vez que se reconoce una sesión (es decir, se accede), del correspondiente paquete es permitido mediante el procesamiento del filtro principal, la sesión se coloca en la cola de la lista enlazada LRU. La lista enlazada por duplicado, indicada en general mediante la referencia 220, comprende una pluralidad de sesiones 226, teniendo cada una un punteros siguiente 222 y un puntero previo 224. La sesión en la cola de la lista enlazada LRU se apunta mediante el contenido de un registro tail_LRU_index_reg 228. La sesión apuntada mediante este registro representa la sesión más recientemente usada. La sesión al inicio de la lista enlazada LRU se apunta mediante el contenido de un registro head_LRU_index_reg 227.
El módulo de administración de la sesión también actualiza y mantiene las relaciones de familia al cerrar una sesión, tal como se describe en mayor detalle posteriormente.
La lista enlazada LRU se utiliza para determinar, en el caso de que la base de datos de las sesiones esté llena, que sesión se borra cuando se añade una nueva sesión. En este caso, la sesión utilizada menos recientemente se cierra y el registro se utiliza para almacenar la nueva sesión.
Un diagrama de flujo que muestra el procedimiento de actualización de la lista enlazada LRU al reconocer una sesión asociada con un paquete de entrada se muestra en la figura 18. El procedimiento de actualización se realiza cada vez que se accede a una sesión coincidente y se permite el correspondiente paquete. Con referencia a la figura 17, en particular, las sesiones marcadas con sesión previa, sesión coincidente y siguiente sesión, la sesión coincidente se mueve desde su posición en la lista a la cola para ser la sesión más recientemente utilizada. La sesión coincidente se borra mediante (1) ajustar el siguiente puntero LRU de la sesión previa al siguiente puntero LRU de la sesión coincidente y (2) ajustar el puntero LRU previo de la siguiente sesión al puntero LRU previo de la sesión coincidente (etapa 230).
La sesión coincidente se hace entonces la más recientemente utilizada mediante (1) ajustar el siguiente puntero LRU de la sesión coincidente a NULL, (2) ajustar el puntero LRU previo de la sesión coincidente a los contenidos del registro tail_LRU_index_reg y (3) ajustar el registro tail_LRU_index_reg al índice de la sesión coincidente (etapa 232).
Un diagrama de flujo que muestra el procesamiento del módulo de administración de la sesión de la presente invención se muestra en la figura 19. El procesamiento de la administración de la sesión empieza con la etapa inactiva 342 y se mueve a la siguiente etapa dependiendo del evento. En el caso de una instrucción "obtener no utilizada" del CPU o procesador del filtro principal, se busca el estado de la sesión menos recientemente utilizada (etapa 344). Si la sesión está en uso (etapa 350), entonces se cierra la sesión (etapa 348). Si la sesión no está en uso, el head_LRU_index_reg se ajusta al siguiente puntero LRU de la sesión menos recientemente utilizada y el siguiente/previo puntero LRU se ajusta a NULL (etapa 352). Los punteros LRU siguiente y previo de la sesión borrados se ajustan entonces a NULL, borrando de esta manera la sesión menos recientemente utilizada de la lista enlazada LRU (etapa 354). La variable unused_ses se ajusta a la sesión acabada de desconectar y la marca para informar a la CPU cual procesamiento del filtro principal se ajusta en consecuencia a "1" (etapa 356). El proceso vuelve a continuación a inactivo (etapa 358).
Un comando "comprobar tiempo muerto" desde la CPU provoca que el administrador de la sesión empiece a comprobar los tiempos muertos de las sesiones. El index_counter se incrementa (etapa 362) y se busca el estado de una sesión (es decir, el index_counter) (etapa 364). Si la sesión está actualmente en uso (etapa 366), se busca el sello de la hora de la sesión (etapa 372). Si el sello de la hora es mayor que el tiempo real (es decir, la sesión ha expirado) (etapa 374), la sesión se cierra (etapa 376).
Si la sesión no se utiliza o si la sesión ha expirado, se comprueba si el index_counter es menor que el último índice (etapa 368). Si lo es, el index_counter se incrementa (etapa 370) y el procedimiento continúa con la etapa 364. Si no lo es, se completa la comprobación del tiempo muerto, el procesamiento del filtro principal se informa (etapa 360) y el procedimiento vuelve a inactivo (etapa 358).
Un diagrama de flujo el procesamiento realizado mediante el módulo de administración de la sesión de la presente invención para abrir una sesión se muestra en la figura 20. Cuando se abre una sesión, se coloca en la cola de la lista enlazada LRU (etapa 380). La sesión también se coloca en el lugar apropiado en la lista enlazada decodificación (etapa 382). El procedimiento a continuación retorna al estado inactivo (etapa 384).
Un diagrama de flujo que muestra el procesamiento realizado por el módulo de administración de la sesión de la presente invención para cerrar una sesión se muestra en la figura 21. Si la sesión se puede cerrar como se especifica mediante la señal HLD (etapa 390), la sesión se borra sin modificación de los punteros LRU (etapa 392). El procedimiento a continuación vuelve al estado inactivo (etapa 404).
Si la sesión no se puede cerrar (etapa 390), y la solicitud de cierre fue de vida a una comprobación de tiempo muerto (etapa 394), la sesión no se cierra (etapa 396) y el procedimiento vuelve al estado inactivo (etapa 404). Si la solicitud de cierre no fue debida a una comprobación de tiempo muerto, se busca la siguiente sesión apuntada mediante la sesión utilizada menos recientemente (etapa 398). Si esta sesión no se puede cerrar (etapa 400), el procedimiento continúa con la etapa 398 y el proceso se repite hasta que se encuentra una sesión que se puede cerrar. Si se encuentra una sesión que se puede cerrar (etapa 400), la sesión se configura como la LRU (etapa 401). La sesión se borra a continuación
excepto para los punteros LRU (etapa 402) y el procedimiento vuelve a continuación al estado inactivo (etapa 404).
Tal como se ha indicado anteriormente, el módulo de administración también funciona para mantener cuatro punteros de relación de familia en la base de datos de las sesiones, que definen las relaciones de familia de la sesión. Los punteros de las relaciones de familia se actualizan al cerrar una sesión. Un diagrama que muestra los punteros de familia para una sesión se muestra en la figura 22. Cada sesión puede tener un puntero padre que apunta a una sesión padre, un primer puntero de hijo que apunta desde el pariente a su primer hijo y punteros de hermano siguiente/previo que se utilizan para implementar una lista enlazada por duplicado entre sesiones que tienen el mismo padre.
Los campos 33 a 36 en la base de datos de las sesiones se utilizan para almacenar la información de los punteros de relación de familia. Las propias relaciones de familia se determinan mediante la CPU. Si una sesión se cierra mediante el administrador de la sesión (es decir, debido a la comprobación de tiempo muerto o para hacer espacio para una nueva sesión), el administrador de la sesión es operativo para actualizar los punteros de familia en consecuencia.
Según la presente invención, los punteros de familia se utilizan para conectar de manera lógica sesiones que pertenecen a la misma aplicación. Por ejemplo, un servicio FTP abre dos sesiones TCP/IP diferentes: una sesión de control en el puerto 21 y una sesión de datos en el puerto 20. El control FTP es la sesión padre mientras que los datos FTP son la sesión hijo. En general, es posible cualquier relación de familia utilizando los cuatro punteros de familia junto con el número del campo hijo (10), es decir, se soporta cualquier aplicación padre/hijo. Cuando una sesión padre se cierra a través de mecanismos LRU/tiempo muerto, el administrador de la sesión utiliza los punteros de familia para cerrar todas las sesiones creadas posteriormente que pertenecen a la familia.
A veces, no todas las conexiones utilizan de manera simultánea. Por ejemplo, es posible que la aplicación se conecte utilizando solamente la sesión hijo durante un período de tiempo. Para evitar el cierre de la sesión de control padre mediante los mecanismos LRU/tiempo muerto, la CPU ajusta el bit HLD en la sesión padre. El administrador de la sesión no cerrará una sesión que tiene una sesión hijo abierta (es decir, número de hijos > 0) y cuyo bit HLD se hace valer. Cuando una de las sesiones de la familia se cierra, el administrador de la sesión es operativo para mantener todo los punteros de familia, es decir, cierra todas sus sesiones hijo (si existen), actualiza las sesiones de hermano de la familia en la lista enlazada por duplicado (si existen), resta el número de hijos de su sesión padre (si existen) y actualiza la lista enlazada por duplicado padre/primer hijo.
Un diagrama que muestra un ejemplo de la relación de familia entre una pluralidad de sesiones se muestra en la figura 23. En este ejemplo, una sesión padre está relacionada con una sesión hijo que, a su vez, está relacionada con dos sesiones hermano. La primera sesión hijo es también una sesión padre que tiene una sesión hijo que es el nieto de la sesión padre superior.
Realización de ordenador
En otra realización, un ordenador es operativo para ejecutar software adaptado para realizar el procedimiento del filtro de paquetes dinámico de la presente invención. Un diagrama de bloques que muestra un sistema de procesamiento de ordenador de ejemplo en una plataforma adaptada para realizar el filtrado de paquetes dinámico con el procedimiento de seguimiento de la sesión de la presente invención se muestra en la figura 24. El sistema se puede incorporar en un dispositivo de comunicaciones, tal como una PDA, teléfono celular, módem de cable, módem de banda ancha, ordenador portátil, PC, equipo de transmisión o conmutación de red, dispositivos de red o cualquier otro dispositivo de comunicaciones con o sin cables. El dispositivo se puede construir utilizando cualquier combinación de hardware y/o software.
El sistema informático, indicado en general mediante la referencia 260, comprende un procesador 264 que se puede implementar como un microcontrolador, microprocesador, microordenador, núcleo ASIC, núcleo FPGA, unidad de procesamiento central (CPU) o procesador de señal digital (DSP). El sistema también comprende una memoria estática solamente de lectura (ROM) 266 y una memoria principal dinámica (por ejemplo, RAM) 270 todas en comunicación con el procesador. El procesador está también en comunicación, a través de un bus 262, con una serie de dispositivos periféricos que están también incluidos en el sistema informático.
El dispositivo está conectado a una WAN 280, tal como Internet a través de una interfaz WAN 272. La interfaz comprende interfaces con y/o sin cables en uno o más canales de comunicación WAN. El procesamiento de comunicaciones I/O 274 transfiere los datos entre la interfaz WAN y el procesador. El sistema informático está también conectado a una LAN 273 a través de una tarjeta de interfaz de red (NIC) 271 dependiendo de la implementación. En operación, el sistema informático es operativo para filtrar de manera dinámica los paquetes de entrada de este la WAN a la LAN y los paquetes de salida desde la LAN a la WAN tal como se ha descrito anteriormente.
Una interfaz de usuario opcional 276 responde a las entradas del usuario y proporciona retroalimentación y otra información de estado. Una interfaz servidor 278 conecta un dispositivo informático servidor 282 al sistema. El servidor está adaptado para configurar, controlar y mantener el funcionamiento del sistema. El sistema también comprende un dispositivo de almacenamiento magnético 268 para almacenar programas de aplicaciones y datos. El sistema comprende un medio de almacenamiento que se puede leer con ordenador que puede incluir cualesquiera medios de memoria adecuados, incluyendo, pero no estando limitado, almacenamiento magnético, almacenamiento óptico, unidad de CD-ROM, unidad ZIP, unidad DVD, cassette DAT, memoria volátil o no volátil semiconductora, dispositivos de memoria biológica, o cualquier otro dispositivo de almacenamiento de memoria.
El software actualizado para implementar la funcionalidad del filtro dinámico de la presente invención está adaptado para residir en un medio que se puede leer con un ordenador, tal como un disco magnético en una unidad de disco. Alternativamente, el medio que se puede leer en un ordenador puede comprender un diskette, una tarjeta de memoria flash, memoria basada en EPROM, EEROM, EEPROM, almacenamiento de memoria burbuja, almacenamiento ROM, etc. el software adaptado para realizar el procedimiento de filtrado de paquetes dinámico de la presente invención también puede residir, total o parcialmente, en las memorias principales estáticas o dinámicas o en firmware en el procesador del sistema informático (es decir, en el microcontrolador, microprocesador, microordenador, DSP, memoria interna, etc.).
En realizaciones alternativas, el procedimiento de la presente invención se puede aplicar a implementaciones de la invención en circuitos integrados, disposiciones de puerta de campo programables (FPGAs), chip sets o circuitos integrados de aplicación específica (ASICs), implementaciones sin cables y otros productos de sistemas de comunicación.
\vskip1.000000\baselineskip
Referencias citadas en la descripción
Esta lista de referencias citadas por el solicitante es solamente para conveniencia del lector. No forma parte del documento de patente europea. Aunque se ha tomado el máximo cuidado en la recopilación de las referencias, no se pueden excluir errores u omisiones y la OEP se descarga de cualquier responsabilidad en este aspecto.
Documentos de patente citados en la descripción
\bullet EP 0910197 A2 [0007]
\bullet US 6738779 B [0043]

Claims (31)

1. Procedimiento de filtrado de una corriente de paquetes de entrada, estando caracterizado dicho procedimiento por el hecho de que comprende las etapas de:
establecer una base de datos de sesiones adaptada para almacenar datos relacionados con sesiones para una pluralidad de sesiones y que comprende por lo menos una lista enlazada de sesiones, correspondiendo cada sesión a un interfaz de conexión;
abrir una nueva sesión al recibir un interfaz de conexión no previamente almacenado en dicha base de datos de sesiones;
reconocer una sesión asociada con un paquete recibido según su interfaz de conexión asociado;
procesar los datos de la sesión correspondientes ha dicho paquete recibido según una pluralidad de reglas predefinidas para generar resultados de procesamiento; y
decidir si se permite o se deniega dicho paquete recibido según dichos resultados de procesamiento.
\vskip1.000000\baselineskip
2. Procedimiento según la reivindicación 1, que también comprende la etapa de actualizar los contenidos de dicha base de datos de sesiones según dichos resultados de procesamiento.
3. Procedimiento según la reivindicación 1, en el que dicha etapa de decisión comprende permitir dicho paquete recibido si dicho paquete recibido no viola ninguna de dicha pluralidad de reglas predefinidas.
4. Procedimiento según la reivindicación 1, en el que dicha etapa de decisión comprende de negar dicho paquete recibido si dicho paquete recibido viola una o más de dicha pluralidad de reglas predefinidas.
5. Procedimiento según la reivindicación 1, que también comprende la etapa de borrar sesiones no utilizadas de dicha base de datos de sesiones.
6. Procedimiento según la reivindicación 1, que también comprende la etapa de establecer y mantener una lista enlazada por duplicado de menos recientemente utilizadas LRU que tiene un encabezado y una cola, en el que las sesiones más recientemente utilizadas se almacenan en la cola y las sesiones menos recientemente utilizadas se almacenan en el encabezado.
7. Procedimiento según la reivindicación 6, en el que en el caso de que dicha lista LRU esté llena, la sesión en el encabezado se borra y se añade una nueva sesión en la cola.
8. Procedimiento según la reivindicación 1, que también comprende la etapa de borrar sesiones cuyos sellos de la hora asociados han excedido un límite predeterminado.
9. Procedimiento según la reivindicación 1, que también comprende la etapa de establecer una tabla de vacíos que comprende una pluralidad de registros, representando cada uno un único subconjunto de información de interfaz de conexión incompleto.
10. Procedimiento según la reivindicación 1, en el que dicha etapa de abrir una nueva sesión comprende las etapas de:
almacenar los datos de la sesión relacionados con dicha nueva sesión en dicha base de datos de sesiones;
calcular un valor de codificación en el interfaz de conexión asociado con dicha nueva sesión; y
almacenar dicho valor de codificación en una tabla de codificación.
\vskip1.000000\baselineskip
11. Procedimiento según la reivindicación 1, en el que dicha etapa de reconocimiento de una sesión comprende las etapas de:
calcular un valor de codificación sobre el interfaz de conexión asociado con la sesión que se ha de reconocer;
buscar un puntero de codificación en una tabla de codificación utilizando el resultado de la codificación como índice;
recuperar los datos del interfaz de conexión de dicha base de datos de sesiones según dicho puntero de codificación; y
reconocer dicha sesión si el interfaz de conexión recuperado coincide con el interfaz de conexión asociado con la sesión recibida.
\vskip1.000000\baselineskip
12. Procedimiento según la reivindicación 1, en el que dicha etapa de procesamiento de los datos de la sesión comprende el seguimiento del estado de un protocolo de control de transmisión TCP que abre un protocolo de transmisión si la sesión comprende una sesión de apertura TCP.
13. Procedimiento según la reivindicación 1, en el que dicha etapa de procesamiento de los datos de la sesión comprende el seguimiento del estado de un protocolo de control de transmisión TCP que cierra un protocolo de transmisión si la sesión comprende una sesión de cierre TCP.
14. Procedimiento según la reivindicación 1, en el que dicha etapa de procesamiento de los datos de la sesión comprende el seguimiento de la secuencia y el acuse de recibo de dicha sesión contra una ventana si dicha sesión comprende una sesión de protocolo de control de transmisión TCP.
15. Filtro dinámico (40) para filtrar una corriente de paquetes de entrada, estando caracterizado por el hecho de que comprende:
una base de datos de sesiones (64) adaptada para almacenar datos relacionados con sesiones para una pluralidad de sesiones y que comprende por lo menos una lista enlazada de sesiones, correspondiendo cada sesión a un interfaz de conexión;
un módulo de reconocimiento de sesión (52) adaptado para buscar en dicha base de datos de sesiones una sesión cuyo interfaz de conexión asociado coincide con el de un paquete recibido;
un módulo de administración de sesión (56) adaptado para mantener dicha base de datos de sesiones, incluyendo la adición, el borrado y la modificación de las sesiones en dicha base de datos de sesiones; y
un módulo de filtro principal (54) operativo para seguir un estado de conexión de la sesión correspondiente a un paquete recibido y comprobar dicho estado de conexión contra una pluralidad de reglas para determinar si se permite o se deniega dicho paquete recibido.
\vskip1.000000\baselineskip
16. Filtro dinámico según la reivindicación 15, en el que dicho filtro principal (54) está adaptado para escribir datos de sesiones modificados otra vez en dicha base de datos de sesiones (64) después de que se realice la determinación de si se permite o deniega dicho paquete recibido.
17. Filtro dinámico según la reivindicación 15, en el que dicho filtro principal (54) está adaptado para permitir dicho paquete recibido si dicho paquete recibido no viola ninguna de dicha pluralidad de reglas.
18. Filtro dinámico según la reivindicación 15, en el que dicho filtro de principal está adaptado para denegar dicho paquete recibido si dicho paquete recibido viola una o más de dicha pluralidad de reglas.
19. Filtro dinámico según la reivindicación 15, en el que dicho módulo de administración de sesión (56) está adaptado para borrar sesiones no utilizadas de dicha base de datos de sesiones (64).
20. Filtro dinámico según la reivindicación 15, en el que dicho módulo de administración de sesión (56) está adaptado para establecer y mantener una lista en la azada por duplicado de menos recientemente utilizada LRU que tiene un encabezamiento y una cola, en el que las sesiones más recientemente utilizadas se almacenan en la cola y las sesiones menos recientemente utilizadas se almacenan en el encabezamiento.
21. Filtro dinámico según la reivindicación 15, en el que dicho módulo de administración de sesión (56) está adaptado para borrar sesiones cuyos sellos de la hora han superado un límite predeterminado.
22. Filtro dinámico según la reivindicación 15, que también comprende una tabla de vacíos (62) que consiste en una pluralidad de registros, representando cada uno un único su conjunto de información de interfaz de conexión incompleta.
23. Filtro dinámico según la reivindicación 15, en el que dicho módulo de administración de sesión (56) comprende medios de apertura de la sesión adaptados para:
almacenar datos de la sesión relacionados con dicha nueva sesión en dicha base de datos de sesiones;
calcular un valor de codificación en el interfaz de conexión asociado con dicha nueva sesión; y
almacenar dicho valor de codificación en una tabla de codificación.
\vskip1.000000\baselineskip
24. Filtro dinámico según la reivindicación 15, en el que dicho módulo de reconocimiento de sesión (56) comprende medios adaptados para:
calcular un valor de codificación en el interfaz de conexión asociado con la sesión que se ha de reconocer;
buscar un puntero de codificación en una tabla de codificación utilizando el resultado de la codificación como índice;
recuperar los datos del interfaz de conexión de dicha base de datos de sesiones según dicho puntero de codificación; y
reconocer dicha sesión si el interfaz de conexión recuperado coincide con el interfaz de conexión asociado con la sesión recibida.
25. Filtro dinámico según la reivindicación 15, en el que dicho filtro principal (54) comprende medios para seguir el estado de un protocolo de control de transmisión TCP que abre un protocolo de transmisión si la sesión comprende una sesión de apertura TCP.
26. Filtro dinámico según la reivindicación 15, en el que dicho filtro principal (54) comprende medios para el seguimiento del estado de un protocolo de control de transmisión TCP que cierra un protocolo de transmisión si la sesión comprende una sesión de cierre TCP.
27. Filtro dinámico según la reivindicación 15, en el que dicho filtro principal (54) comprende medios para el seguimiento de la secuencia y el acuse de recibo de dicha sesión contra una ventana si dicha sesión comprende una sesión de protocolo de control de transmisión TCP.
28. Filtro dinámico según la reivindicación 15, en el que dicho filtro dinámico está implementado como una disposición de puerta de campo programable FPGA.
29. Filtro dinámico según la reivindicación 15, en el que dicho filtro dinámico está implementado como un circuito integrado de aplicación específica ASIC.
30. Aparato de computación digital, que comprende:
medios de comunicación (272, 274) adaptados para conectar dicho aparato a una red de área amplia (WAN);
medios de memoria (266, 268, 270) comprenden memoria volátil y no volátil, estando adaptada dicha memoria no volátil para almacenar uno o más programas de aplicación;
un procesador (264) acoplado a dichos medios de memoria y dichos medios de comunicación para ejecutar dicho uno o más programas de aplicación;
estando caracterizado dicho aparato de computación digital por el hecho de que comprende:
un filtro dinámico (40) para filtrar una corriente de paquetes de entrada, que comprende:
una base de datos de sesiones (64) adaptada para almacenar datos relacionados con sesiones para una pluralidad de sesiones y que comprende por lo menos una lista enlazada de sesiones, correspondiendo cada sesión a un interfaz de conexión;
un módulo de reconocimiento de sesión (52) adaptado para buscar en dicha base de datos de sesiones una sesión cuyo interfaz de conexión asociado coincide con el de un paquete recibido;
un módulo de administración de sesión (56) adaptado para mantener dicha base de datos de sesiones, incluyendo la adición, el borrado y la modificación de las sesiones en dicha base de datos de sesiones; y
un módulo de filtro principal (54) operativo para el seguimiento de un estado de conexión de la sesión correspondiente a un paquete recibido y la comprobación de dicho estado de conexión contra una pluralidad de reglas para determinar si se permite o se deniega dicho paquete recibido.
31. Medio de almacenamiento que se puede leer en un ordenador, estando caracterizado por el hecho de que tiene un programa de ordenador realizado en el mismo para provocar que un sistema programado que una manera adecuada busquen una pluralidad de cadenas mediante la realización de las siguientes etapas cuando este programa se ejecuta en dicho sistema:
establecer una base de datos de sesiones adaptada para almacenar datos relacionados con sesiones para una pluralidad de sesiones y que comprende por lo menos una lista enlazada de sesiones, correspondiendo cada sesión a un interfaz de conexión;
abrir una nueva sesión al recibir un interfaz de conexión no previamente almacenado en dicha base de datos de sesiones;
reconocer una sesión asociada con un paquete recibido según su interfaz de conexión asociado;
procesar los datos de la sesión correspondientes al dicho paquete recibido según una pluralidad de reglas predefinidas para generar resultados de procesamiento; y
decidir si se permite o se deniega dicho paquete recibido según dichos resultados de procesamiento.
ES02730558T 2001-05-09 2002-05-10 Filtro de paquetes dinamicos que utiliza un seguimiento de sesion. Expired - Lifetime ES2302809T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/851,768 US6816455B2 (en) 2001-05-09 2001-05-09 Dynamic packet filter utilizing session tracking
US851768 2001-05-09

Publications (1)

Publication Number Publication Date
ES2302809T3 true ES2302809T3 (es) 2008-08-01

Family

ID=25311632

Family Applications (1)

Application Number Title Priority Date Filing Date
ES02730558T Expired - Lifetime ES2302809T3 (es) 2001-05-09 2002-05-10 Filtro de paquetes dinamicos que utiliza un seguimiento de sesion.

Country Status (12)

Country Link
US (1) US6816455B2 (es)
EP (1) EP1386464B1 (es)
JP (1) JP4162210B2 (es)
KR (1) KR100876935B1 (es)
CN (1) CN100550889C (es)
AT (1) ATE381839T1 (es)
AU (1) AU2002302873A1 (es)
BR (1) BRPI0209463B1 (es)
CA (1) CA2445751C (es)
DE (1) DE60224177T2 (es)
ES (1) ES2302809T3 (es)
WO (1) WO2002091700A2 (es)

Families Citing this family (158)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6430188B1 (en) * 1998-07-08 2002-08-06 Broadcom Corporation Unified table for L2, L3, L4, switching and filtering
US7272571B2 (en) * 2000-07-07 2007-09-18 Mars Incorporated Method and apparatus for effective distribution and delivery of goods ordered on the World-Wide-Web
US7224801B2 (en) * 2000-12-27 2007-05-29 Logitech Europe S.A. Wireless secure device
GB2371186A (en) * 2001-01-11 2002-07-17 Marconi Comm Ltd Checking packets
GB2376854A (en) * 2001-06-19 2002-12-24 Hewlett Packard Co Centralised security service for ISP environment
JP4145032B2 (ja) * 2001-08-07 2008-09-03 富士通株式会社 無線lanシステム
JP2003087693A (ja) * 2001-09-11 2003-03-20 Sony Corp 情報処理装置および方法、並びにプログラム
US7400579B2 (en) * 2001-09-28 2008-07-15 Intel Corporation Method and apparatus for per-call filtering of H.323 packets
US7216161B1 (en) * 2001-11-08 2007-05-08 Cisco Technology, Inc. Maintaining internet access while moving from port to port
US7813346B1 (en) * 2001-11-21 2010-10-12 Juniper Networks, Inc. Filter-based forwarding in a network
EP1326393B1 (en) * 2001-12-18 2004-08-11 Stonesoft Corporation Validation of the configuration of a Firewall
US6957281B2 (en) * 2002-01-15 2005-10-18 Intel Corporation Ingress processing optimization via traffic classification and grouping
US7145911B2 (en) * 2002-03-05 2006-12-05 Hewlett-Packard Company Method and system for parallel hash transformation for an address input
US7085271B2 (en) * 2002-03-14 2006-08-01 Hewlett-Packard Development Company, L.P. Method and system for performing flow based hash transformation to generate hash pointers for a network device
US7126948B2 (en) * 2002-03-21 2006-10-24 Hewlett-Packard Development Company, L.P. Method and system for performing a hash transformation to generate a hash pointer for an address input by using rotation
US7216260B2 (en) * 2002-03-27 2007-05-08 International Business Machines Corporation Method, system and program product for dynamically detecting errant data sequences and performing corresponding actions
TW588532B (en) * 2002-03-29 2004-05-21 Realtek Semiconductor Corp Management device and method of NAT/NAPT session
US7299264B2 (en) * 2002-05-07 2007-11-20 Hewlett-Packard Development Company, L.P. System and method for monitoring a connection between a server and a passive client device
US7167980B2 (en) * 2002-05-30 2007-01-23 Intel Corporation Data comparison process
US7363488B2 (en) * 2002-08-07 2008-04-22 Honeywell International Inc. Method and apparatus for prefiltering received messages in a security system
US7600008B1 (en) * 2002-10-16 2009-10-06 Juniper Networks, Inc. Systems and methods for harvesting expired sessions
US7454499B2 (en) * 2002-11-07 2008-11-18 Tippingpoint Technologies, Inc. Active network defense system and method
US7353538B2 (en) * 2002-11-08 2008-04-01 Federal Network Systems Llc Server resource management, analysis, and intrusion negation
JP2004179877A (ja) * 2002-11-26 2004-06-24 Sony Corp 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
KR100542090B1 (ko) 2002-12-16 2006-01-11 한국전자통신연구원 무선 통신 시스템에서의 오류 제어 방법, 매체 접속 제어프레임 설계 방법 및 단말기 등록 방법과 기록 매체
US7483972B2 (en) * 2003-01-08 2009-01-27 Cisco Technology, Inc. Network security monitoring system
US20040143751A1 (en) * 2003-01-17 2004-07-22 Cyrus Peikari Protection of embedded processing systems with a configurable, integrated, embedded firewall
US7590715B1 (en) * 2003-03-03 2009-09-15 Emc Corporation Method and system for automatic classification of applications and services by packet inspection
US8296452B2 (en) * 2003-03-06 2012-10-23 Cisco Technology, Inc. Apparatus and method for detecting tiny fragment attacks
US7325002B2 (en) * 2003-04-04 2008-01-29 Juniper Networks, Inc. Detection of network security breaches based on analysis of network record logs
JP4196732B2 (ja) 2003-05-26 2008-12-17 日本電気株式会社 データ転送装置及びプログラム
US7660794B2 (en) * 2003-06-03 2010-02-09 Hewlett-Packard Development Company, L.P. Method and program product for reducing database walk frequency while repetitively accessing a firewall connection and rule database
US7620808B2 (en) * 2003-06-19 2009-11-17 Nokia Corporation Security of a communication system
US6985920B2 (en) * 2003-06-23 2006-01-10 Protego Networks Inc. Method and system for determining intra-session event correlation across network address translation devices
US7620070B1 (en) 2003-06-24 2009-11-17 Nvidia Corporation Packet processing with re-insertion into network interface circuitry
US7913294B1 (en) * 2003-06-24 2011-03-22 Nvidia Corporation Network protocol processing for filtering packets
US7286476B2 (en) * 2003-08-01 2007-10-23 F5 Networks, Inc. Accelerating network performance by striping and parallelization of TCP connections
US7644365B2 (en) * 2003-09-12 2010-01-05 Cisco Technology, Inc. Method and system for displaying network security incidents
US20050079858A1 (en) * 2003-10-09 2005-04-14 Rosen Eric C. Method and apparatus for restricting media communication in a communication network
US20050108434A1 (en) * 2003-11-13 2005-05-19 Witchey Nicholas J. In-band firewall for an embedded system
US7844731B1 (en) * 2003-11-14 2010-11-30 Symantec Corporation Systems and methods for address spacing in a firewall cluster
US7389532B2 (en) * 2003-11-26 2008-06-17 Microsoft Corporation Method for indexing a plurality of policy filters
US7634655B2 (en) * 2004-02-13 2009-12-15 Microsoft Corporation Efficient hash table protection for data transport protocols
US7840763B2 (en) * 2004-03-12 2010-11-23 Sca Technica, Inc. Methods and systems for achieving high assurance computing using low assurance operating systems and processes
US7490350B1 (en) * 2004-03-12 2009-02-10 Sca Technica, Inc. Achieving high assurance connectivity on computing devices and defeating blended hacking attacks
US7650635B2 (en) * 2004-04-07 2010-01-19 Cisco Technology, Inc. Method and apparatus for preventing network attacks by authenticating internet control message protocol packets
WO2005101760A1 (ja) * 2004-04-15 2005-10-27 Nec Corporation クラスタシステム及びクラスタメンバ並びにプログラム
US7422152B2 (en) 2004-05-13 2008-09-09 Cisco Technology, Inc. Methods and devices for providing scalable RFID networks
WO2005114951A1 (en) * 2004-05-20 2005-12-01 Computer Associates Think, Inc. Systems and methods for detecting denial of service attacks
KR100619031B1 (ko) * 2004-06-11 2006-08-31 삼성전자주식회사 부가 데이터의 인터랙티브한 이용방법 및 장치, 그에 따른수신장치
US8155117B2 (en) * 2004-06-29 2012-04-10 Qualcomm Incorporated Filtering and routing of fragmented datagrams in a data network
US20090094671A1 (en) * 2004-08-13 2009-04-09 Sipera Systems, Inc. System, Method and Apparatus for Providing Security in an IP-Based End User Device
US8862718B2 (en) 2006-07-12 2014-10-14 Avaya Inc. System, method and apparatus for troubleshooting an IP network
US7933985B2 (en) * 2004-08-13 2011-04-26 Sipera Systems, Inc. System and method for detecting and preventing denial of service attacks in a communications system
US8707419B2 (en) * 2006-06-29 2014-04-22 Avaya Inc. System, method and apparatus for protecting a network or device against high volume attacks
US7865944B1 (en) * 2004-09-10 2011-01-04 Juniper Networks, Inc. Intercepting GPRS data
JP2006121667A (ja) * 2004-09-27 2006-05-11 Matsushita Electric Ind Co Ltd パケット受信制御装置及びパケット受信制御方法
US7620071B2 (en) * 2004-11-16 2009-11-17 Intel Corporation Packet coalescing
US7509431B2 (en) * 2004-11-17 2009-03-24 Cisco Technology, Inc. Performing message and transformation adapter functions in a network element on behalf of an application
US7664879B2 (en) 2004-11-23 2010-02-16 Cisco Technology, Inc. Caching content and state data at a network element
US7694334B2 (en) * 2004-12-03 2010-04-06 Nokia Corporation Apparatus and method for traversing gateway device using a plurality of batons
US7987272B2 (en) 2004-12-06 2011-07-26 Cisco Technology, Inc. Performing message payload processing functions in a network element on behalf of an application
US7725934B2 (en) 2004-12-07 2010-05-25 Cisco Technology, Inc. Network and application attack protection based on application layer message inspection
US7496750B2 (en) * 2004-12-07 2009-02-24 Cisco Technology, Inc. Performing security functions on a message payload in a network element
US8082304B2 (en) 2004-12-10 2011-12-20 Cisco Technology, Inc. Guaranteed delivery of application layer messages by a network element
US7606267B2 (en) 2004-12-10 2009-10-20 Cisco Technology, Inc. Reducing the sizes of application layer messages in a network element
US7876777B2 (en) * 2004-12-30 2011-01-25 Honeywell International Inc. Multiple protocol decoder
US7551567B2 (en) * 2005-01-05 2009-06-23 Cisco Technology, Inc. Interpreting an application message at a network element using sampling and heuristics
US7796603B1 (en) 2005-01-14 2010-09-14 Acme Packet, Inc. Method and system for controlling media sessions in networks that use communication protocols with distinct signaling and media channels
US8249076B1 (en) * 2005-01-14 2012-08-21 Acme Packet, Inc. Method, system and architecture for validating media sessions in networks that use communication protocols with distinct signaling and media channels
US7698416B2 (en) 2005-01-25 2010-04-13 Cisco Technology, Inc. Application layer message-based server failover management by a network element
JP4170299B2 (ja) * 2005-01-31 2008-10-22 独立行政法人 宇宙航空研究開発機構 通信状態遷移モニタ方法及びこれを利用した通信状態遷移モニタ装置
US7860006B1 (en) * 2005-04-27 2010-12-28 Extreme Networks, Inc. Integrated methods of performing network switch functions
US7668969B1 (en) 2005-04-27 2010-02-23 Extreme Networks, Inc. Rule structure for performing network switch functions
US20060259570A1 (en) * 2005-05-13 2006-11-16 Microsoft Corporation Method and system for closing an RDMA connection
US7761619B2 (en) * 2005-05-13 2010-07-20 Microsoft Corporation Method and system for parallelizing completion event processing
US7706314B2 (en) * 2005-05-20 2010-04-27 Cisco Technology, Inc. Approach for implementing IPsec in performance enhancing proxy (PEP) environments
US7725595B1 (en) * 2005-05-24 2010-05-25 The United States Of America As Represented By The Secretary Of The Navy Embedded communications system and method
US7881291B2 (en) * 2005-05-26 2011-02-01 Alcatel Lucent Packet classification acceleration using spectral analysis
US7345585B2 (en) 2005-08-01 2008-03-18 Cisco Technology, Inc. Network based device for providing RFID middleware functionality
WO2007019583A2 (en) * 2005-08-09 2007-02-15 Sipera Systems, Inc. System and method for providing network level and nodal level vulnerability protection in voip networks
US7882262B2 (en) 2005-08-18 2011-02-01 Cisco Technology, Inc. Method and system for inline top N query computation
US7818786B2 (en) * 2005-08-19 2010-10-19 Electronics And Telecommunications Research Institute Apparatus and method for managing session state
WO2007033344A2 (en) * 2005-09-14 2007-03-22 Sipera Systems, Inc. System, method and apparatus for classifying communications in a communications system
US20070130367A1 (en) * 2005-11-18 2007-06-07 Vivek Kashyap Inbound connection prioritization
US7649886B2 (en) * 2005-11-21 2010-01-19 Motorola, Inc. Method and system for processing incoming packets in a communication network
CN1980178A (zh) * 2005-12-03 2007-06-13 鸿富锦精密工业(深圳)有限公司 网络装置及其转发多播封包的方法
US8274979B2 (en) * 2005-12-30 2012-09-25 Telecom Italia S.P.A. Method and system for secure communication between a public network and a local network
US7650367B2 (en) * 2006-01-13 2010-01-19 Tekelec Methods, systems, and computer program products for detecting and restoring missing or corrupted data in a distributed, scalable, redundant measurement platform database
JP4137948B2 (ja) * 2006-02-14 2008-08-20 日本電信電話株式会社 パケット通過制御装置及びパケット通過制御方法
US20070195776A1 (en) * 2006-02-23 2007-08-23 Zheng Danyang R System and method for channeling network traffic
US8233388B2 (en) * 2006-05-30 2012-07-31 Cisco Technology, Inc. System and method for controlling and tracking network content flow
KR100834570B1 (ko) 2006-06-23 2008-06-02 한국전자통신연구원 실시간 상태 기반 패킷 검사 방법 및 이를 위한 장치
US8812638B2 (en) * 2006-07-12 2014-08-19 Telefonaktiebolaget Lm Ericsson (Publ) Method, apparatus and computer program product for controlling devices
CN101115055B (zh) * 2006-07-24 2010-05-12 上海贝尔阿尔卡特股份有限公司 通信网络中报告隧道数据包中各级错误的装置及方法
US8751866B2 (en) * 2006-09-28 2014-06-10 International Business Machines Corporation Autonomic fault isolation in a highly interconnected system
US7646728B2 (en) * 2006-10-13 2010-01-12 SafeMedia Corp. Network monitoring and intellectual property protection device, system and method
US8302179B2 (en) * 2006-12-13 2012-10-30 Avaya Inc. Embedded firewall at a telecommunications endpoint
US8145746B1 (en) * 2007-02-09 2012-03-27 Juniper Networks, Inc. Using the TCP window size for identifying packets and debugging
US8477804B2 (en) * 2007-03-02 2013-07-02 Hitachi, Ltd. ICMP translator
US7894358B2 (en) * 2007-03-15 2011-02-22 Cisco Technology, Inc. Detection of heavy users of network resources
US8935669B2 (en) * 2007-04-11 2015-01-13 Microsoft Corporation Strategies for performing testing in a multi-user environment
CN101296221B (zh) * 2007-04-29 2012-01-11 中兴通讯股份有限公司 媒体接入控制层的数据处理方法
KR100894908B1 (ko) 2007-05-15 2009-04-30 고려대학교 산학협력단 인터넷 기반 음성 서비스에서 비정상 패킷을 탐지하는 방법및 컴퓨터로 읽을 수 있는 매체
US20080307093A1 (en) * 2007-06-07 2008-12-11 Samsung Electronics Co., Ltd. Method and system for managing resource consumption by transport control protocol connections
JP4900119B2 (ja) * 2007-08-01 2012-03-21 ヤマハ株式会社 ネットワーク機器
TW200930056A (en) * 2007-12-26 2009-07-01 Altek Corp Handshake dual-processor architecture of digital cameras
US8503886B1 (en) * 2008-01-03 2013-08-06 Nextel Communications Inc. Systems and methods for visual light communication
JP5035068B2 (ja) * 2008-03-28 2012-09-26 富士通株式会社 サービス処理状況分析プログラム、サービス処理状況分析装置、およびサービス処理状況分析方法
US8315256B2 (en) * 2008-04-17 2012-11-20 Gigamon Llc State-based filtering on a packet switch appliance
WO2010011467A1 (en) 2008-06-29 2010-01-28 Oceans' Edge, Inc. Mobile telephone firewall and compliance enforcement system and method
US20100005263A1 (en) * 2008-07-04 2010-01-07 Huawei Technologies Co., Ltd. Information backup method, firewall and network system
US7817631B1 (en) 2008-07-09 2010-10-19 Google Inc. Network transfer protocol
US8401990B2 (en) * 2008-07-25 2013-03-19 Ca, Inc. System and method for aggregating raw data into a star schema
US9692856B2 (en) * 2008-07-25 2017-06-27 Ca, Inc. System and method for filtering and alteration of digital data packets
US8352391B1 (en) 2008-08-20 2013-01-08 Juniper Networks, Inc. Fast update filter
US8275116B2 (en) 2008-08-29 2012-09-25 8X8, Inc. Networked contact center
US8243913B2 (en) * 2008-08-29 2012-08-14 8×8, Inc. Limiting contact in a networked contact center environment
US8051167B2 (en) * 2009-02-13 2011-11-01 Alcatel Lucent Optimized mirror for content identification
US20100211544A1 (en) * 2009-02-19 2010-08-19 Jyshyang Chen System with session synchronization
US8750112B2 (en) * 2009-03-16 2014-06-10 Echostar Technologies L.L.C. Method and node for employing network connections over a connectionless transport layer protocol
US7990976B2 (en) * 2009-05-13 2011-08-02 Telefonaktiebolaget L M Ericsson (Publ) Negotiated secure fast table lookups for protocols with bidirectional identifiers
US8407241B2 (en) * 2009-06-12 2013-03-26 Microsoft Corporation Content mesh searching
FR2949934B1 (fr) * 2009-09-09 2011-10-28 Qosmos Surveillance d'une session de communication comportant plusieurs flux sur un reseau de donnees
JP5445147B2 (ja) * 2010-01-07 2014-03-19 富士通株式会社 リスト構造制御回路
TW201246867A (en) * 2011-05-06 2012-11-16 Ralink Technology Corp Packet processing accelerator and method thereof
CN103095665A (zh) * 2011-11-07 2013-05-08 中兴通讯股份有限公司 一种提升防火墙处理性能的方法和装置
US9712887B2 (en) * 2012-04-12 2017-07-18 Arris Canada, Inc. Methods and systems for real-time transmuxing of streaming media content
US9262320B2 (en) 2012-06-15 2016-02-16 International Business Machines Corporation Tracking transactional execution footprint
US9223687B2 (en) 2012-06-15 2015-12-29 International Business Machines Corporation Determining the logical address of a transaction abort
US9311101B2 (en) 2012-06-15 2016-04-12 International Business Machines Corporation Intra-instructional transaction abort handling
US9298469B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Management of multiple nested transactions
US9015419B2 (en) * 2012-06-15 2015-04-21 International Business Machines Corporation Avoiding aborts due to associativity conflicts in a transactional environment
US9298631B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Managing transactional and non-transactional store observability
US9537828B2 (en) 2012-09-11 2017-01-03 Young Ok Jun Secure mobile communication relay having firewall function
US9674052B2 (en) * 2012-09-20 2017-06-06 Hewlett Packard Enterprise Development Lp Data packet stream fingerprint
US9350762B2 (en) 2012-09-25 2016-05-24 Ss8 Networks, Inc. Intelligent feedback loop to iteratively reduce incoming network data for analysis
KR20140047221A (ko) * 2012-10-09 2014-04-22 (주)소만사 네트워크 정보유출방지 기기의 대용량 패킷 처리를 위한 하드웨어 엔진
US9047417B2 (en) 2012-10-29 2015-06-02 Intel Corporation NUMA aware network interface
GB201302402D0 (en) * 2013-02-11 2013-03-27 Telecom Ltd Q Communication apparatus
US9043593B2 (en) * 2013-03-11 2015-05-26 International Business Machines Corporation Session attribute propagation through secure database server tiers
JP6040102B2 (ja) * 2013-06-04 2016-12-07 株式会社日立製作所 不正情報検知方法および不正情報検知装置
US10684973B2 (en) 2013-08-30 2020-06-16 Intel Corporation NUMA node peripheral switch
US10367787B2 (en) * 2013-12-20 2019-07-30 Mcafee, Llc Intelligent firewall access rules
US10721160B2 (en) 2014-05-15 2020-07-21 Samsung Electronics Co., Ltd. Method of distributing data and device supporting the same
US10911353B2 (en) * 2015-06-17 2021-02-02 Extreme Networks, Inc. Architecture for a network visibility system
US10771475B2 (en) 2015-03-23 2020-09-08 Extreme Networks, Inc. Techniques for exchanging control and configuration information in a network visibility system
US10129088B2 (en) 2015-06-17 2018-11-13 Extreme Networks, Inc. Configuration of rules in a network visibility system
CN106161224B (zh) 2015-04-02 2019-09-17 阿里巴巴集团控股有限公司 数据交换方法、装置及设备
CN108353001B (zh) * 2015-10-30 2021-10-29 意大利电信股份公司 分组交换通信网络中的性能测量
CN105939322B (zh) * 2015-12-08 2019-12-06 杭州迪普科技股份有限公司 报文攻击防护的方法及装置
US10419808B2 (en) * 2016-09-08 2019-09-17 Gvbb Holdings S.A.R.L. System and method for scalable physical layer flow of packetized media streams
EP3310015A1 (en) * 2016-10-11 2018-04-18 Secucloud GmbH Network filtering using router connection data
CN109587074B (zh) * 2017-09-29 2022-04-29 中兴通讯股份有限公司 报文处理方法、装置、存储介质及处理器
CN110365759B (zh) * 2019-07-08 2021-12-28 深圳市多尼卡航空电子有限公司 一种数据转发方法、装置、系统、网关设备及存储介质
CN112612670B (zh) * 2020-12-02 2023-04-11 北京东土军悦科技有限公司 一种会话信息统计方法、装置、交换设备及存储介质
CN114285771B (zh) * 2021-12-30 2024-02-06 阿里巴巴(中国)有限公司 一种tcp连接的连接状态追踪方法及装置
CN116112290A (zh) * 2023-04-10 2023-05-12 北京长亭未来科技有限公司 一种应用于Web集中管理系统的流量中转方法及装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5446736A (en) 1993-10-07 1995-08-29 Ast Research, Inc. Method and apparatus for connecting a node to a wireless network using a standard protocol
US5623601A (en) * 1994-11-18 1997-04-22 Milkway Networks Corporation Apparatus and method for providing a secure gateway for communication and data exchanges between networks
JP3262689B2 (ja) 1995-05-19 2002-03-04 富士通株式会社 遠隔操作システム
US5889962A (en) * 1995-10-13 1999-03-30 Apple Computer, Inc. Method and system for providing an additional identifier for sessions in a file server
US5828846A (en) * 1995-11-22 1998-10-27 Raptor Systems, Inc. Controlling passage of packets or messages via a virtual connection or flow
JP3688830B2 (ja) 1995-11-30 2005-08-31 株式会社東芝 パケット転送方法及びパケット処理装置
US5999525A (en) 1996-11-18 1999-12-07 Mci Communications Corporation Method for video telephony over a hybrid network
US5867494A (en) 1996-11-18 1999-02-02 Mci Communication Corporation System, method and article of manufacture with integrated video conferencing billing in a communication system architecture
US6173364B1 (en) * 1997-01-15 2001-01-09 At&T Corp. Session cache and rule caching method for a dynamic filter
US6233686B1 (en) * 1997-01-17 2001-05-15 At & T Corp. System and method for providing peer level access control on a network
US5983270A (en) * 1997-03-11 1999-11-09 Sequel Technology Corporation Method and apparatus for managing internetwork and intranetwork activity
US6006268A (en) * 1997-07-31 1999-12-21 Cisco Technology, Inc. Method and apparatus for reducing overhead on a proxied connection
US6154775A (en) 1997-09-12 2000-11-28 Lucent Technologies Inc. Methods and apparatus for a computer network firewall with dynamic rule processing with the ability to dynamically alter the operations of rules
US6341130B1 (en) * 1998-02-09 2002-01-22 Lucent Technologies, Inc. Packet classification method and apparatus employing two fields
US6122665A (en) 1998-08-26 2000-09-19 Sts Software System Ltd. Communication management system for computer network-based telephones
US6219786B1 (en) * 1998-09-09 2001-04-17 Surfcontrol, Inc. Method and system for monitoring and controlling network access
US6219706B1 (en) * 1998-10-16 2001-04-17 Cisco Technology, Inc. Access control for networks
US6347312B1 (en) * 1998-11-05 2002-02-12 International Business Machines Corporation Lightweight directory access protocol (LDAP) directory server cache mechanism and method
US6182149B1 (en) 1999-01-11 2001-01-30 3Com Corporation System for managing dynamic processing resources in a network
WO2001031874A2 (en) * 1999-10-28 2001-05-03 Jpmorgan Chase Bank Secured session sequencing proxy system supporting multiple applications and method therefor
US6496935B1 (en) * 2000-03-02 2002-12-17 Check Point Software Technologies Ltd System, device and method for rapid packet filtering and processing

Also Published As

Publication number Publication date
US6816455B2 (en) 2004-11-09
AU2002302873A1 (en) 2002-11-18
CN1518823A (zh) 2004-08-04
EP1386464B1 (en) 2007-12-19
WO2002091700A3 (en) 2003-02-06
BRPI0209463B1 (pt) 2017-01-17
JP4162210B2 (ja) 2008-10-08
CN100550889C (zh) 2009-10-14
KR100876935B1 (ko) 2009-01-07
CA2445751C (en) 2011-04-26
DE60224177T2 (de) 2008-12-04
KR20040008171A (ko) 2004-01-28
BR0209463A (pt) 2004-12-07
WO2002091700A2 (en) 2002-11-14
JP2004538678A (ja) 2004-12-24
DE60224177D1 (de) 2008-01-31
CA2445751A1 (en) 2002-11-14
US20040013112A1 (en) 2004-01-22
EP1386464A2 (en) 2004-02-04
ATE381839T1 (de) 2008-01-15

Similar Documents

Publication Publication Date Title
ES2302809T3 (es) Filtro de paquetes dinamicos que utiliza un seguimiento de sesion.
JP4344609B2 (ja) セキュリティ・アソシエーション・プロセッサを組み込んだ仮想プライベートネットワーク機構
US8274979B2 (en) Method and system for secure communication between a public network and a local network
US9954873B2 (en) Mobile device-based intrusion prevention system
CN1574792B (zh) 用于执行网络防火墙的基于多层的方法
RU2365986C2 (ru) Архитектура многоуровневого брандмауэра
US20070022474A1 (en) Portable firewall
US20160050227A1 (en) Out of band end user notification systems and methods for security events related to non-browser mobile applications
MXPA04000800A (es) Metodo que autentifica cargas utiles de paquete.
US20080101222A1 (en) Lightweight, Time/Space Efficient Packet Filtering
US9608973B2 (en) Security management system including multiple relay servers and security management method
US20070150947A1 (en) Method and apparatus for enhancing security on an enterprise network
CN113904826B (zh) 数据传输方法、装置、设备和存储介质
CN113783868A (zh) 一种基于商用密码保护闸机物联网安全的方法及系统
US8185642B1 (en) Communication policy enforcement in a data network
Allix Covert channels analysis in TCP/IP networks
Ferreira et al. A secure wireless architecture to access a virtual electronic patient record
Ko et al. H/W BASED FIREWALL FOR HIGH-PERFORMANCE NETWORK SECURITY