ES2711368T3 - Distribución de paquetes de dos niveles con distribución de paquete de primer nivel sin estado a un grupo de servidores y distribución de paquetes de segundo nivel con estado a un servidor dentro del grupo - Google Patents
Distribución de paquetes de dos niveles con distribución de paquete de primer nivel sin estado a un grupo de servidores y distribución de paquetes de segundo nivel con estado a un servidor dentro del grupo Download PDFInfo
- Publication number
- ES2711368T3 ES2711368T3 ES13730325T ES13730325T ES2711368T3 ES 2711368 T3 ES2711368 T3 ES 2711368T3 ES 13730325 T ES13730325 T ES 13730325T ES 13730325 T ES13730325 T ES 13730325T ES 2711368 T3 ES2711368 T3 ES 2711368T3
- Authority
- ES
- Spain
- Prior art keywords
- packet
- server
- level
- flow
- servers
- 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.)
- Active
Links
- 238000009826 distribution Methods 0.000 title claims abstract description 306
- 238000000034 method Methods 0.000 claims abstract description 130
- 230000003068 static effect Effects 0.000 claims abstract description 61
- 238000012545 processing Methods 0.000 claims abstract description 47
- 230000008569 process Effects 0.000 claims abstract description 42
- 238000004891 communication Methods 0.000 claims abstract description 18
- 238000010586 diagram Methods 0.000 description 27
- 238000013459 approach Methods 0.000 description 19
- 238000003860 storage Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 241000406668 Loxodonta cyclotis Species 0.000 description 7
- 230000008901 benefit Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 230000001052 transient effect Effects 0.000 description 6
- 239000008186 active pharmaceutical agent Substances 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000002688 persistence Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- TVZRAEYQIKYCPH-UHFFFAOYSA-N 3-(trimethylsilyl)propane-1-sulfonic acid Chemical compound C[Si](C)(C)CCCS(O)(=O)=O TVZRAEYQIKYCPH-UHFFFAOYSA-N 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000004907 flux Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 239000000696 magnetic material Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1014—Server selection for load balancing based on the content of a request
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1027—Persistence of sessions during load balancing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1006—Server selection for load balancing with static server selection, e.g. the same server being selected for a specific client
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1023—Server selection for load balancing based on a hash applied to IP addresses or costs
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Un método, que se realiza en uno o más elementos de red que están en comunicación entre los clientes que transmiten paquetes y servidores, para distribuir los paquetes entre los servidores que han de procesar los paquetes, al tiempo que proporciona la adherencia de los flujos de los paquetes a los servidores asignados a procesar los paquetes de los flujos, el método comprende los pasos de: recibir un paquete de un flujo en un módulo (531) de distribución de paquetes de primer nivel estático; seleccionar estáticamente un grupo de servidores, de entre una pluralidad de grupos de servidores, para el paquete del flujo con el módulo de distribución de paquetes de primer nivel estático, en el que la selección estática del grupo de servidores no implica el uso de un estado que asigna el paquete del flujo al grupo seleccionado de servidores (532); distribuir el paquete del flujo a un sistema (533) de distribución de paquetes de segundo nivel con estado distribuido; seleccionar con estado un servidor del grupo seleccionado de servidores que ha de procesar el paquete del flujo con el sistema de distribución de paquetes de segundo nivel con estado distribuido al acceder al estado que asigna el procesamiento de paquetes del flujo al servidor seleccionado (534); y distribuir el paquete del flujo al servidor seleccionado (535), caracterizado porque el paso de distribución del paquete del flujo al sistema de distribución de paquetes de segundo nivel con estado distribuido comprende un paso de distribución del paquete del flujo a cada uno de una pluralidad de módulos de distribución de paquetes de segundo nivel con estado distribuidos que cada uno corresponde a un servidor diferente del grupo seleccionado de servidores.
Description
DESCRIPCION
Distribucion de paquetes de dos niveles con distribucion de paquete de primer nivel sin estado a un grupo de servidores y distribucion de paquetes de segundo nivel con estado a un servidor dentro del grupo Antecedentes
Campo
Las realizaciones de la invencion se refieren al campo de las redes; y mas especificamente, a los paquetes de distribucion entre servidores en redes.
Informacion de antecedentes
Existen numerosos ejemplos en redes en los que los clientes o solicitantes de servicios se comunican con servidores o proveedores de servicios o recursos a traves de una o mas redes. Los clientes solicitan tipicamente un recurso o que se realice un servicio y los servidores realizan el servicio o proporcionan el recurso. A menudo, se proporciona un conjunto de servidores para proporcionar una mayor capacidad de servicio, resistencia o alta disponibilidad (por ejemplo, en el caso de que un servidor falle o se desconecte), etc. Como ejemplo, se puede usar una granja de servidores para proporcionar servicios asociados con sitios web, redes de charla interactiva en Internet, sitios de protocolo de transferencia de archivos de gran ancho de banda, servidores de protocolo de transferencia de noticias de red (NNTP), servidores de sistema de nombres de dominio (DNS), por nombrar solo algunos ejemplos.
El equilibrio de carga del servidor se usa comunmente para distribuir las solicitudes de servicio de los clientes entre un conjunto de servidores para equilibrar o distribuir de manera mas equitativa las cargas (por ejemplo, cargas de procesamiento o cargas de trabajo) asociadas con el manejo de las solicitudes de servicio entre el conjunto de servidores. El equilibrio de carga del servidor, dentro de ciertas restricciones, generalmente ayuda a evitar que algunos de los servidores se sobrecarguen mientras que otros servidores estan siendo infrautilizados. Este equilibrio de carga del servidor generalmente ofrece ventajas tales como un mayor uso de recursos, mayor rendimiento, mayor productividad, menor tiempo de respuesta, menor sobrecarga del servidor, etc. Ademas, el equilibrio de carga del servidor tambien se puede usar junto con proporcionar resistencia o alta disponibilidad al redistribuir las cargas cuando uno de los servidores falla, se desconecta, etc. En general, el equilibrio de carga del servidor es transparente para los clientes que solicitan los servicios.
Los algoritmos de equilibrio de carga del servidor se usan comunmente para determinar a que servidores distribuir las solicitudes de servicio o las cargas de trabajo. Los algoritmos de equilibrio de carga del servidor comunmente incluyen algoritmos de planificacion asi como otros algoritmos. Los algoritmos usados para implementar el equilibrio de carga del servidor varian desde algoritmos relativamente simples hasta algoritmos relativamente sofisticados. Los ejemplos de algoritmos relativamente simples incluyen algoritmos de eleccion aleatoria y algoritmos de turnos rotativos. Los ejemplos de algoritmos mas sofisticados incluyen aquellos que toman en cuenta los factores pertinentes para el equilibrio de carga, como la carga actual del servidor, el estatus arriba/abajo de un servidor, etc. A modo de ejemplo, se puede usar un algoritmo de turnos rotativos ponderado y las ponderaciones para los servidores pueden cambiarse dinamicamente basandose en las cargas de trabajo actuales de los servidores.
Un tipo comun de equilibrio de carga del servidor se conoce como equilibrio de carga del servidor con estado. En un enfoque conocido para el equilibrio de carga del servidor con estado, se detecta un primer paquete de un flujo en un equilibrador de carga del servidor. Por ejemplo, un paquete SYN de una conexion TCP puede detectarse al examinar un encabezado del paquete SYN. El equilibrador de carga del servidor usa un algoritmo de equilibrio de carga del servidor (por ejemplo, un algoritmo de eleccion aleatoria o un algoritmo de turnos rotativos) para seleccionar o asignar un servidor para manejar la conexion TCP. Una entrada que incluye un identificador para la conexion TCP y un identificador para el servidor asignado para manejar la conexion TCP se agrega como estado a una tabla de estado mantenida por el equilibrador de carga del servidor. Posteriormente, cuando se reciben paquetes adicionales de la conexion TCP, el equilibrador de carga del servidor realiza una busqueda de tabla en la tabla de estado. La busqueda en la tabla localiza la entrada que mapea el identificador de conexion TCP al identificador del servidor. El equilibrador de carga del servidor reenvia los paquetes adicionales al servidor identificado. En tal enfoque de estado, el estado que se basa en una decision anterior de equilibrio de carga (por ejemplo, basado en un calculo previo con un algoritmo de equilibrio de carga) se almacena o conserva y se usa para tomar las posteriores decisiones de equilibrio de carga.
Tales enfoques de equilibrio de carga del servidor con estado tienden a tener ciertos inconvenientes, especialmente cuando el numero de conexiones es alto. Como ejemplo, cuando el numero de conexiones es alto, el tamano de la tabla de estado tiende a ser correspondientemente grande. Como resultado, la cantidad de memoria para almacenar la tabla generalmente aumenta. Ademas, el tiempo y los recursos de procesamiento necesarios para realizar busquedas de tablas generalmente tambien aumentan. Tales busquedas de tabla se pueden realizar para cada paquete recibido para cada conexion establecida. Ademas, el algoritmo de equilibrio de carga se puede realizar para cada nueva conexion. En consecuencia, especialmente cuando el numero de conexiones es alto, tales enfoques
pueden causar que el equilibrador de carga severa sufra el agotamiento de los recursos de la memoria y/o los recursos de procesamiento. Alternativamente, en un esfuerzo por evitar dicho agotamiento de recursos, los equilibradores de carga pueden ser altamente aprovisionados con hardware, lo que generalmente tiende a hacerlos mas costosos. Otro inconveniente potencial, si se proporciona un equilibrador de carga del servidor redundante o de copia de seguridad (por ejemplo, para resistencia o alta disponibilidad), es que se puede encontrar una sobrecarga significativa de comunicacion y procesamiento para sincronizar el estado (por ejemplo, la tabla de estado) del equilibrador de carga del servidor redundante o de copia de seguridad.
El documento US 7321926 divulga un sistema de asignar un recurso a una solicitud de servicio. Los servidores se asignan virtualmente mediante una jerarquia que incluye grupos de servidores y supergrupos de los grupos de servidores.
El documento US 2006/0233106 divulga una arquitectura que facilita el equilibrio de carga entre una pluralidad de anfitriones y preserva la afinidad de sesion a un anfitrion dado.
Sumario
En un aspecto, un metodo, que se realiza en uno o mas elementos de red que estan en comunicacion entre clientes que transmiten paquetes y servidores, para distribuir los paquetes entre los servidores que deben procesar los paquetes. Se proporciona la adherencia de los flujos de los paquetes a los servidores asignados para procesar los paquetes de los flujos. El metodo incluye un paso para recibir un paquete de un flujo en un modulo de distribucion de paquetes de primer nivel estatico. El metodo tambien incluye un paso para seleccionar estaticamente un grupo de servidores, entre una pluralidad de grupos de servidores, para el paquete del flujo con el modulo de distribucion de paquetes de primer nivel estatico. La seleccion estatica del grupo de servidores no implica el uso de un estado que asigna el paquete del flujo al grupo seleccionado de servidores. El metodo incluye ademas un paso para distribuir el paquete del flujo a un sistema de distribucion de paquetes de segundo nivel con estado distribuido. Tambien se incluye un paso para seleccionar con estado un servidor del grupo seleccionado de servidores que debe procesar el paquete del flujo con el sistema de distribucion de paquetes de segundo nivel con estado distribuido al acceder al estado que asigna el procesamiento de paquetes del flujo al servidor seleccionado. El metodo incluye un paso para distribuir el paquete del flujo al servidor seleccionado. Las ventajas que pueden lograrse dependiendo de la implementacion incluyen la capacidad de manejar eficientemente grandes cantidades de flujos y/o la capacidad de manejar una cantidad de flujos eficientemente sin un suministro excesivo de hardware, la capacidad de evitar el uso del estado en el primer nivel de distribucion de paquetes, y la capacidad de dinamizacion de los servidores sin interrumpir la adherencia de los flujos existentes.
En otro aspecto, un sistema de distribucion de paquetes multinivel configurado para ser implementado en uno o mas elementos de red en una red entre clientes que transmiten paquetes y servidores. El sistema de distribucion de paquetes multinivel es operable para distribuir los paquetes entre los servidores, al tiempo que proporciona la adherencia de los flujos de los paquetes a los servidores. El sistema de distribucion de paquetes multinivel incluye un modulo de distribucion de paquetes de primer nivel estatico configurado para recibir un paquete de un flujo. El modulo de distribucion estatica de paquetes de primer nivel es operable para seleccionar estaticamente un grupo de servidores, entre una pluralidad de grupos de servidores, para el paquete del flujo. La seleccion estatica del grupo de servidores no implica el uso de un estado que asigna el paquete del flujo al grupo seleccionado de servidores. El sistema de distribucion de paquetes multinivel tambien incluye un sistema de distribucion de paquetes de segundo nivel con estado distribuido en comunicacion con el modulo de distribucion de paquetes de primer nivel estatico. El sistema de distribucion de paquetes de segundo nivel con estado distribuido incluye una pluralidad de modulos de distribucion de paquetes de segundo nivel con estado distribuidos. El sistema de distribucion de paquetes de segundo nivel con estado distribuido es operable para seleccionar sin estado un servidor del grupo seleccionado de servidores que debe procesar el paquete del flujo. La seleccion sin estado del servidor implica el uso de un estado que asigna el flujo al servidor seleccionado. El sistema de distribucion de paquetes de segundo nivel con estado distribuido es operable para distribuir el paquete al servidor seleccionado. Las ventajas que pueden lograrse dependiendo de la implementacion incluyen la capacidad de manejar eficientemente grandes cantidades de flujos y/o la capacidad de manejar una cantidad de flujos eficientemente sin un suministro excesivo de hardware, la capacidad de evitar el uso del estado en el primer nivel de distribucion de paquetes, y la capacidad de dinamizacion de los servidores sin interrumpir la adherencia de los flujos existentes.
Breve descripcion de los dibujos
La invencion se puede entender mejor haciendo referencia a la siguiente descripcion y los dibujos adjuntos que se usan para ilustrar las realizaciones de la invencion. En los dibujos:
La figura 1 es un diagrama de bloques de una red que tiene una realizacion de un sistema de distribucion de paquetes multinivel que es operable para distribuir flujos de paquetes entre servidores que estan asignados para procesar los paquetes mientras proporciona la adherencia de los flujos a los servidores.
La figura 2 es un diagrama de bloques de una realizacion mas detallada de un sistema de distribucion de paquetes de dos niveles que es operable para distribuir paquetes entre servidores y proporcionar adherencia de flujos de los paquetes a los servidores.
La figura 3 es un diagrama de bloques de un sistema de distri bucion de paquetes de dos niveles que incluye un modulo de distri bucion de paquetes de primer nivel estatico/sin estado que se implementa en hardware que es distinto del hardware usado para implementar un sistema de distri bucion de paquetes de segundo nivel con estado distribuido.
La figura 4 es un diagrama de bloques de un sistema de distribucion de paquetes de dos niveles implementado en un unico elemento de red.
La figura 5 es un diagrama de flujo de bloques de una realizacion de un metodo, que se puede realizar en uno o mas elementos de red que estan en comunicacion entre clientes que transmiten paquetes y servidores, para distribuir los paquetes entre los servidores que deben procesar los paquetes, a la vez que proporciona adherencia de los flujos de los paquetes a los servidores asignados para procesar los paquetes de los flujos.
La figura 6 es un diagrama de flujo de bloques de una realizacion de un metodo que se puede realizar por cada modulo de distribucion de paquetes de segundo nivel con estado distribuido de un grupo seleccionado para flujos de tipo 1 para seleccionar un servidor para procesar un paquete.
La figura 7 es un diagrama de flujo de bloques de una realizacion de un metodo que se puede realizar por cada modulo de distribucion de paquetes de segundo nivel con estado distribuido de un grupo seleccionado para flujos de tipo 1 o tipo 2 para seleccionar un servidor para procesar un paquete.
La figura 8 es un diagrama de bloques de una realizacion de un conjunto de modulos de distribucion de paquetes de segundo nivel con estado distribuidos de un grupo que tiene un conjunto de ejemplos de tablas de flujo correspondiente.
La figura 9 es un diagrama de bloques de una realizacion de un conjunto de modulos de distribucion de paquetes de segundo nivel con estado distribuidos de un grupo que tiene un conjunto de ejemplo correspondiente de tablas de flujo y un conjunto de ejemplos correspondiente de tablas de flujo existente en otros.
La figura 10 es un diagrama de bloques de una realizacion de distribucion de flujos de tipo 1 y tipo 2 entre grupos de modulos de distribucion de paquetes de segundo nivel con estado distribuidos.
La figura 11 es un diagrama de bloques de una realizacion de un grupo de modulos de distribucion de paquetes de segundo nivel con estado distribuidos que son operables para enviar mensajes entre si en los que los mensajes indican los estados y/o las cargas de los servidores correspondientes.
La figura 12 es un diagrama de bloques de una realizacion de modulos de distribucion de paquetes de segundo nivel con estado distribuidos correspondientes a diferentes grupos de servidores que intercambian mensajes entre si, en los cuales los mensajes indican estados y/o cargas asociados con el grupo de servidores correspondiente.
La figura 13 es un diagrama de bloques de una realizacion de un sistema de distribucion de paquetes de dos niveles que es operable para reenviar de manera eficiente paquetes de flujos de mayor volumen (por ejemplo, flujos de elefante) y flujos de menor volumen (por ejemplo, flujos de raton).
Descripcion de las realizaciones
En la siguiente descripcion, se exponen numerosos detalles especificos, tales como configuraciones especificas de red, algoritmos, secuencias de operaciones, estructuras de datos, opciones de particion/integracion y similares. Sin embargo, se entiende que las realizaciones de la invencion pueden ponerse en practica sin estos detalles especificos. En otros casos, los circuitos, estructuras y tecnicas bien conocidos no se han mostrado en detalle para no entorpecer la comprension de esta descripcion.
Como se usa en el presente documento, un elemento de red (por ejemplo, un enrutador, un conmutador, un puente) es una pieza de equipo de red, que incluye hardware y software, que interconecta comunicativamente a otros equipos en la red (por ejemplo, otros elementos de red, estaciones finales, etc.). Algunos elementos de la red son "elementos de la red de servicios multiples" que brindan soporte para multiples funciones de red (por ejemplo, enrutamiento, conexion en puente, conmutacion, agregacion de capa 2, control de limite de sesion, calidad de servicio y/o gestion de abonados) y/o proporcionan soporte para multiples servicios de aplicaciones (por ejemplo, datos, voz y video). Las estaciones finales de abonado (por ejemplo, clientes, estaciones de trabajo, portatiles, ultraportatil, miniordenador portatil, telefonos moviles, telefonos inteligentes, telefonos multimedia, telefonos con protocolo de voz a traves de Internet (VOIP), equipos de usuario, terminales, reproductores de medios portatiles, unidades de GPS, sistemas de juegos, decodificadores) acceden a los contenidos/servicios proporcionados a traves
de Internet y/o contenidos/servicios proporcionados en redes privadas virtuales (las VPN) superpuestas (por ejemplo, a traves de un tunel) en Internet. El contenido y/o los servicios tipicamente son proporcionados por una o mas estaciones finales (por ejemplo, estaciones finales de servidor) que pertenecen a un servicio o proveedor de contenido o estaciones finales que participan en un servicio de igual a igual, y pueden incluir, por ejemplo, paginas web publicas ( por ejemplo, contenido gratuito, escaparates, servicios de busqueda), paginas web privadas (por ejemplo, paginas web a las que se accede mediante nombre de usuario/contrasena que proporcionan servicios de correo electronico) y/o redes corporativas a traves de las VPN. Tipicamente, las estaciones finales de los abonados se acoplan (por ejemplo, a traves de equipos de las instalaciones del cliente acoplados a una red de acceso (cableada o inalambrica)) a elementos de la red de borde, que se acoplan (por ejemplo, a traves de uno o mas elementos de la red central) a otros elementos de la red de borde, que se acoplan a otras estaciones finales (por ejemplo, estaciones finales de servidor).
La figura 1 es un diagrama de bloques de una red que tiene clientes 101 que son operables para transmitir flujos de paquetes, servidores 112 que son operables para procesar los paquetes, y una realizacion de un sistema 100 de distribucion de paquetes multinivel que es operable para distribuir los paquetes entre los servidores y proporcionan adherencia de los flujos a los servidores asignados para procesar los paquetes de los flujos. En algunas realizaciones, el sistema de distribucion de paquetes multinivel puede representar un sistema de equilibrio de carga del servidor multinivel y puede usarse para distribuir o equilibrar de manera aproximadamente uniforme las cargas de trabajo asociadas con el procesamiento de paquetes entre los servidores. Otras realizaciones no estan limitadas a dicho equilibrio de carga del servidor.
Los clientes 101 estan acoplados, conectados o de otro modo en comunicacion a traves de una o mas redes 102 al sistema 100 de distribucion de paquetes multinivel. En la ilustracion, se muestra el cliente 1 101-1 a traves del cliente P 101-P, donde P puede ser cualquier numero entero. Cada cliente puede representar una combinacion de hardware y software (por ejemplo, un sistema operativo y una aplicacion de cliente) que es capaz de acceder a servicios y/o recursos a traves de una o mas conexiones de red. Los ejemplos de clientes adecuados incluyen, entre otros, dispositivos de cliente inalambricos (por ejemplo, telefonos moviles, portatiles, ordenadores moviles, dispositivos de mano, etc.) y dispositivos de cliente con cable (por ejemplo, ordenadores de escritorio, decodificadores, etc.). Los clientes son operables para transmitir o enviar paquetes de conexiones u otros flujos 105 a traves de una o mas redes al sistema de distribucion de paquetes multinivel.
El sistema 100 de distribucion de paquetes multinivel esta acoplado, conectado o, de lo contrario, en comunicacion con una o mas redes 102 para recibir los paquetes de los flujos 105 de los clientes 101. El sistema 100 de distribucion de paquetes multinivel tambien esta acoplado, conectado o, de lo contrario, en comunicacion con un conjunto de servidores 112. Cada servidor puede representar cualquier combinacion de hardware y software (por ejemplo, un sistema operativo y una aplicacion de servidor) que sea capaz de proporcionar servicios y/o contenido a los clientes a traves de una o mas interfaces de red y/o que de otra manera funcione como un servidor. Los ejemplos de servidores adecuados incluyen, entre otros, software ejecutable en hojas (por ejemplo, servidores de hoja), tarjetas de control, tarjetas de servicio, procesadores, nucleos de procesador, etc. Como se muestra en la ilustracion, en algunas realizaciones, los servidores se asocian o se agrupan logicamente en multiples grupos 13. En la ilustracion, los servidores se agrupan logicamente en el grupo 1113-1 a traves del grupo N 113-N, donde N puede ser cualquier numero entero. Al menos uno de los grupos tiene una pluralidad de servidores y los otros grupos pueden tener cada uno uno o mas servidores. En algunos casos, cada uno de los grupos tiene una pluralidad de servidores. En algunas realizaciones, un servidor puede ser compartido por mas de un grupo (es decir, los grupos pueden estar superpuestos).
El sistema de distribucion de paquetes multinivel es operable para distribuir los paquetes de los flujos 105 entre los servidores del conjunto de servidores 112. En algunas realizaciones, el sistema de distribucion de paquetes multinivel puede distribuir paquetes de una manera que proporcione o mantenga la adherencia de los flujos de los paquetes a los servidores asignados para procesar los paquetes de los flujos. Tal adherencia de flujo tambien se conoce como persistencia de flujo. La distribucion de paquetes con la adherencia del flujo o la persistencia del flujo puede implicar la distribucion de todos los paquetes de un flujo al mismo servidor. El sistema de distribucion de paquetes multinivel puede asignar inicialmente un flujo (por ejemplo, basado en un primer paquete del flujo) a uno de los servidores. Por ejemplo, el paquete inicial de un flujo entrante (por ejemplo, el paquete SYN de una conexion TCP, un paquete I NIT de una conexion SCTP, etc.) se reenvia a un servidor. Posteriormente, todos los otros paquetes encontrados para la misma conexion o flujo pueden reenviarse al mismo servidor. Comunmente, cada servidor mantiene el estado (por ejemplo, datos de sesion) que esta asociado con los flujos que esta asignado a procesar. Este estado a menudo no es mantenido por, o esta disponible para, los otros servidores, pero a menudo es necesario para procesar correctamente los paquetes de los flujos. Por ejemplo, este es a menudo el caso de los protocolos de transporte orientados a la conexion como TCP, SCTP, etc.
Un flujo puede representar el trafico de red que se identifica por un conjunto comun de atributos que caracterizan el flujo. Como se usa en el presente documento, un flujo representa mas que un unico paquete (es decir, tiene al menos dos paquetes). Como un primer ejemplo, un flujo puede representar el trafico de red identificado por cinco atributos de tupla (por ejemplo, direccion IP de origen/destino, protocolo, puertos TCP/UDP de origen/destino). Como segundo ejemplo, un flujo puede representar el trafico de red identificado por las direcciones de MAC de
origen/destino. Como tercer ejemplo, un flujo puede representar el trafico de red identificado por los ID de VLAN. Como cuarto ejemplo, un flujo puede representar el trafico de red identificado por los nodos de origen y destino del trafico. Como quinto ejemplo, a traves de un determinado enlace del nodo a al nodo b, los paquetes que pasan por el enlace con una direccion IP de origen especifica (por ejemplo, IP1) pueden representar un flujo identificado por la direccion IP de origen sobre ese enlace con los atributos (IP1, a, b). Como sexto ejemplo, en una red de acceso, el trafico originado por un abonado puede representar un flujo identificado como el trafico que pasa a traves de un puerto especifico de la pasarela residencial. Tales flujos de abonado en las redes de acceso y de borde tambien pueden identificarse por las direcciones IP del abonado. El flujo del abonado ascendente/descendente (el flujo del lado del abonado/red al lado de la red/abonado) puede tener la direccion IP del abonado como la direccion IP de origen/destino, respectivamente. Un flujo puede incluir un flujo unico, subflujos multiples o muchos subflujos. Un flujo de grano grueso mas grande puede incluir subflujos de grano mas fino mas pequenos. Por ejemplo, un flujo agregado que pasa a traves de un enlace (desde el nodo a al nodo b) con multiples direcciones IP de destino tiene una granularidad mas gruesa que un subflujo que pasa por el mismo enlace con una unica direccion IP de destino. El flujo anterior se puede denominar flujo de enlace y el ultimo flujo se puede denominar flujo de IP de destino de enlace.
El sistema 100 de distribucion de paquetes multinivel, que en este caso es un sistema de distribucion de paquetes de dos niveles, incluye un modulo 103 de distribucion de paquetes de primer nivel estatico y/o sin estado y un sistema 107 de distribucion de paquetes de segundo nivel con estado distribuido. El modulo 103 de distribucion de paquetes de primer nivel estatico/sin estado esta acoplado, conectado o, de otro modo, en comunicacion con una o mas redes 102 para recibir los paquetes de los flujos 105. El modulo de distribucion de paquetes de primer nivel estatico/sin estado incluye un modulo 104 de seleccion de grupo estatico/sin estado. El modulo de seleccion de grupo estatico/sin estado es operable para seleccionar estaticamente y/o sin estado un grupo de servidores 113, entre los multiples grupos de servidores 113-1 a 113-N, para los paquetes de los flujos 105. Al seleccionar los grupos de estaticamente/sin estado, se entiende que el modulo no necesita usar el estado para seleccionar los grupos. No es necesario mantener el estado (por ejemplo, una tabla de estado) que asigna o mapea los paquetes de los flujos a grupos de servidores. Especialmente cuando el numero de conexiones a manejar es alto, esto puede ayudar a reducir el agotamiento de recursos y/o el aprovisionamiento de hardware. No se requiere que el modulo de distribucion de paquetes de primer nivel estatico/sin estado mantenga ningun estado, ya que de hecho se puede mantener cierto estado (por ejemplo, otro estado que no sea una tabla de flujo y/o para otros fines ademas de seleccionar un grupo para un paquete).
Mas bien, el modulo puede usar un enfoque estatico, como, por ejemplo, un algoritmo hash u otro algoritmo estatico (por ejemplo, que determina estaticamente el grupo basandose en el contenido del paquete). Por ejemplo, una funcion hash puede mapear atributos del paquete a un identificador de grupo del grupo seleccionado. Se puede generar un identificador de flujo a partir del paquete (por ejemplo, basado en ciertos campos del encabezado de paquetes). El ID de flujo puede representar un ID o etiqueta (por ejemplo, un numero) que se usa para identificar un flujo. Como ejemplo particular, hay que considerar los servidores N (por ejemplo, N = 10). Una funcion hash simple puede tomar el ultimo byte de una direccion IP de origen (por ejemplo, 192.168.1.122) del paquete como un entero (por ejemplo, 122) y tomar el modulo N (por ejemplo, N = 10). El numero resultante (por ejemplo, 2) esta entre 0 y N-1, lo que apunta a un grupo al que se ha de reenviar el paquete. Para mayor claridad, el termino estatico no implica que la seleccion deba ser invariable, ya que la seleccion estatica puede cambiar, por ejemplo, si cambia el numero de grupos (por ejemplo, se agrega un grupo de tal manera que la funcion hash se realiza con N = 11, o se elimina un grupo de tal manera que la funcion hash se realiza con N = 9). Mas bien, como se menciono, el termino estatico se refiere a la falta de uso del estado (por ejemplo, una tabla de estado) para mapear o asignar el paquete al grupo. El modulo de distribucion de paquetes de primer nivel estatico/sin estado esta acoplado, conectado o, de otro modo, en comunicacion para proporcionar una distribucion de flujo a grupo de paquetes 106 al sistema 107de distribucion de paquetes de segundo nivel con estado distribuido. El modulo de distribucion de paquetes de primer nivel estatico/con estado proporciona adherencia de flujo a grupo de tal manera que todos los paquetes del flujo se distribuyen al mismo grupo. El modulo de distribucion de paquetes de primer nivel estatico/sin estado se puede implementar en hardware, software, firmware o varias combinaciones de los mismos. En algunas realizaciones, el modulo de distribucion de paquetes de primer nivel estatico/sin estado puede incluir al menos algun hardware, circuiteria o logica en particular (por ejemplo, circuiteria de aplicacion especifica), aunque esto no es necesario.
El sistema 107 de distribucion de paquetes de segundo nivel con estado distribuido incluye multiples modulos 108 de distribucion de paquetes de segundo nivel con estado distribuidos. En la ilustracion, se muestran el modulo 1108-1 a traves del modulo M 108-M, donde M puede ser cualquier numero entero. En algunas realizaciones, cada uno de los modulos 108 de distribucion de paquetes de segundo nivel con estado distribuidos puede corresponder a uno o mas de los grupos de servidores 113. Cada uno de los modulos 108 de distribucion de paquetes de segundo nivel con estado distribuidos incluye un modulo 109 de seleccion de servidor de segundo nivel con estado distribuido correspondiente y un estado correspondiente 110. En particular, el modulo 1 de distribucion de paquetes de segundo nivel incluye un modulo 109-1 de seleccion de servidor de segundo nivel con estado distribuido y un estado 110-1, y el modulo M de distribucion de paquetes de segundo nivel M®sim° incluye un modulo 109-M de seleccion de servidor de segundo nivel con estado distribuido y un estado 110-M. Cada uno de los modulos de seleccion de servidor de segundo nivel con estado distribuidos puede ser operable para seleccionar con estado un servidor individual particular, del grupo de servidores seleccionados por el modulo 103 de distribucion de paquetes de primer nivel
estatico/sin estado, que ha de procesar los paquetes de los flujos 105. En algunas realizaciones, el sistema de distribucion de paquetes de segundo nivel con estado distribuido se puede usar para lograr un equilibrio de carga del servidor sustancialmente uniforme en todos los servidores dentro del grupo seleccionado por el primer nivel. Otras realizaciones no se limitan al equilibrio de carga del servidor.
Al seleccionar con estado el servidor, el modulo 109 de seleccion de servidor puede ser operable para acceder y usar el estado correspondiente 110. En algunas realizaciones, el estado puede mapear o asignar el flujo al servidor seleccionado. A modo de ejemplo, cada estado puede representar una tabla de estado que tiene entradas que mapean diferentes conexiones o flujos (por ejemplo, identificadores de flujo) a los servidores correspondientes (por ejemplo, identificadores de servidor) asignados para manejar el procesamiento de los paquetes de las conexiones o flujos. El procesamiento de la distribucion de paquetes en el nivel dos tiende a ser mas intensivo en computacion que el nivel 1, pero se distribuye a traves de los multiples modulos de distribucion de paquetes. En consecuencia, a traves de dicha distribucion, el estado dentro de cada uno de los modulos de distribucion de paquetes multiples generalmente es menor en cantidad que lo que se necesitaria sin dicha distribucion. El almacenamiento de cada una de estas cantidades menores de estado generalmente consume menos memoria, y el uso del estado (por ejemplo, realizar busquedas de tablas) generalmente Neva menos tiempo y consume menos recursos de procesamiento. Ventajosamente, la distribucion del sistema de distribucion de paquetes de segundo nivel con estado ayuda a hacer que el enfoque sea mas ampliable a un gran numero de conexiones u otros flujos. El modulo de distribucion de paquetes de segundo nivel con estado distribuido esta acoplado, conectado o, de otro modo, en comunicacion para proporcionar la distribucion de flujo a servidor o el reenvio de paquetes 111 a los servidores seleccionados que pueden procesar los paquetes. El modulo de distribucion de paquetes de segundo nivel con estado distribuido puede proporcionar adherencia del flujo al servidor, de manera que todos los paquetes del flujo se distribuyan al mismo servidor.
Como se muestra, y sin limitacion, en algunas realizaciones, el conjunto de servidores 112 puede estar en comunicacion con otros servidores 115 a traves de una o mas redes 114. A modo de ejemplo, los servidores 115 pueden proporcionar servicios o contenido a los clientes. Por ejemplo, los clientes pueden iniciar conexiones con los servidores 115 a traves de los servidores 112. Los servidores 112 pueden realizar el procesamiento asociado con las conexiones, como, por ejemplo, la gestion de abonados, la inspeccion profunda de paquetes o similares. Alternativamente, en otras realizaciones, los servidores 112 pueden ser los puntos finales de conexion o flujo y los servidores 112 pueden proporcionar el conjunto complete de contenido y/o servicios para los clientes.
En algunas realizaciones, el sistema de distribucion de paquetes multinivel puede implementarse en un solo elemento de red (por ejemplo, un unico enrutador). En otras realizaciones, el sistema de distribucion de paquetes multinivel puede implementarse en dos o mas elementos de red conectados. En algunas realizaciones, el primer y segundo nivel del sistema de distribucion de paquetes multinivel se implementan en hardware diferente.
El sistema 100 de distribucion de paquetes multinivel puede proporcionar una serie de ventajas, especialmente cuando el numero de conexiones y/o la cantidad de trafico son altos. En los ultimos anos, ha habido un aumento significativo en la cantidad de dispositivos en red y en el trafico de red en general que se encuentra en las redes, incluida Internet. Ademas, muchas de estas conexiones, como las que proporcionan video (por ejemplo, video a demanda, television de alta definition, etc.) tienen un ancho de banda relativamente alto. Como se menciono anteriormente en la section de antecedentes, algunos enfoques conocidos de equilibrio de carga con estado tienden a sufrir agotamiento de recursos, especialmente cuando la cantidad de conexiones y/o la cantidad de trafico son altas. Sin embargo, el sistema de distribucion de paquetes multinivel puede ayudar a evitar, o al menos reducir, dicho agotamiento de recursos. El modulo de distribucion de paquetes de primer nivel implementa un enfoque estatico/sin estado y no necesita retener el estado. Las tareas de distribucion de paquetes y el mantenimiento del estado mas intensivos en computacion se realizan en el segundo nivel, que se distribuye en multiples modulos de distribucion de paquetes. Cada uno de los multiples modulos de distribucion de paquetes tiene un estado asociado, que es menor en cantidad que el que se necesitaria sin dicha distribucion. El almacenamiento de cada una de estas cantidades menores de estado generalmente consume menos memoria, y el uso del estado (por ejemplo, realizar busquedas de tablas) generalmente Neva menos tiempo y consume menos recursos de procesamiento.
La figura 2 es un diagrama de bloques de una realization mas detallada de un sistema 200 de distribucion de paquetes de dos niveles. En algunas realizaciones, el sistema de distribucion de paquetes de dos niveles se puede usar para el equilibrio de carga del servidor y/o para distribuir sustancialmente las cargas asociadas con el procesamiento de paquetes entre los servidores. Otras realizaciones no estan limitadas al equilibrio de carga.
El sistema 200 de distribucion de paquetes de dos niveles incluye un modulo 203 de distribucion de paquetes de primer nivel estatico/sin estado y un sistema 207 de distribucion de paquetes de segundo nivel con estado distribuido. El modulo de distribucion de paquetes de primer nivel estatico/sin estado incluye un modulo 204 de seleccion de grupo estatico/sin estado. En algunas realizaciones, el modulo de seleccion de grupo estatico/sin estado puede incluir un modulo hash 216 para seleccionar un grupo para un flujo realizando un hash (por ejemplo, basado en el contenido de un paquete). Como se muestra, en algunas realizaciones, el modulo de seleccion de grupo estatico/sin estado puede omitir el estado 217 que asigna el paquete del flujo al grupo seleccionado de
servidores. El modulo de distribucion de paquetes de primer nivel estatico/sin estado puede proporcionar una distribucion 206 de paquetes de flujo a grupo.
El sistema 207 de distribucion de paquetes de segundo nivel con estado distribuido esta acoplado, conectado o, de lo contrario, en comunicacion con el modulo 203 de distribucion de paquetes de primer nivel estatico/sin estado. En la realizacion ilustrada, el sistema de distribucion de paquetes de segundo nivel incluye seis modulos 208-1 a 208-6 de distribucion de paquetes (PD) de segundo nivel con estado distribuidos (DSSL). Cada uno de los modulos 208-1 a 208-6 de PD de DSSL corresponde a uno respective de seis servidores 212-1 a 212-6. Por ejemplo, el modulo 3 208- 3 de PD de DSSL corresponde al servidor 3212-3. Si bien se muestran seis servidores y seis modulos de PD de DSSL en la realizacion ilustrada, en otras realizaciones puede haber menos o mas servidores y/o modulos de PD de DSS. Los servidores se muestran en lineas discontinuas para indicar que no forman parte del sistema 200 de distribucion de paquetes de dos niveles. Cada uno de los seis modulos de PD de DSSL tiene un modulo 209-1 a 209- 6 de seleccion de servidor correspondiente y un estado correspondiente 210-1 a 210-6. Por ejemplo, el modulo 3 208-3 de PD de DSSL tiene un modulo 209-3 de seleccion de servidor y un estado 210-3 (por ejemplo, una tabla de estado). Los modulos de seleccion del servidor y el estado pueden ser como se describio anteriormente. Cada uno de los modulos de PD de DSSL realiza calculos de distribucion de paquetes (por ejemplo, calculos de seleccion de servidor) y toma decisiones de distribucion de paquetes para su servidor correspondiente. El sistema de distribucion de paquetes de segundo nivel con estado distribuido y/o los modulos de PD de DSSL proporcionan una distribucion 211 de paquetes de flujo a servidor.
En la realizacion ilustrada, para fines de ilustracion, los servidores y sus correspondientes modulos de PD de DSSL se dividen logicamente en tres grupos. En particular, los servidores 1-3 y los modulos 1-3 de PD de DSSL estan en el grupo 1, los servidores 4-5 y los modulos 4-5 de PD de DSSL estan en el grupo 2, y los servidores 5-6 y los modulos 5-6 de PD de DSSL estan en el grupo 3. El modulo de distribucion de paquetes de primer nivel estatico/sin estado puede seleccionar uno de estos grupos 1 -3 y la distribucion 206 de paquetes de flujo a grupo puede distribuir el paquete a uno de estos grupos 1-3. Los modulos de PD de DSSL dentro del grupo seleccionado pueden seleccionar uno de los servidores dentro del grupo seleccionado y la distribucion 211 de paquetes de flujo a servidor puede reenviar el paquete al servidor seleccionado.
Para ilustrar mejor una realizacion del funcionamiento del sistema de distribucion de paquetes de dos niveles, hay que considerar la recepcion de un primer paquete [F1] de un primer flujo, un segundo paquete [F2] de un segundo flujo y un tercer paquete [F3] de un tercero flujo, en el modulo 203 de distribucion de paquetes de primer nivel estatico/sin estado. El modulo 203 de distribucion de paquetes de primer nivel estatico/sin estado, en este ejemplo, puede seleccionar de estaticamente/sin estado el grupo 1 para el primer paquete [F1], el grupo 2 para el segundo paquete [F2] y el grupo 3 para el tercer paquete [F3]. En algunas realizaciones, los paquetes pueden proporcionarse o distribuirse a cada uno de los modulos de PD de DSSL del grupo seleccionado. Como se muestra, el primer paquete [F1] puede distribuirse a cada uno de los modulos 1-3 de PD de DSSL, el segundo paquete [F2] puede distribuirse a cada uno de los modulos 4-5 de PD de DSSL, y el tercer paquete [F3] puede distribuirse a cada uno de los modulos 5-6 de PD de DSSL. En algunas realizaciones, los modulos de PD de DSSL dentro de cada grupo pueden compartir un dominio de multidifusion y/o difusion y los paquetes pueden ser multidifundidos y/o difundidos a los modulos de PD de DSSL dentro de cada grupo. En algunas realizaciones, los modulos de PD de DSSL dentro de cada grupo pueden compartir un identificador de red de area local virtual (VLAN). Por ejemplo, los modulos de PD de DSSL dentro del grupo 1 pueden tener ID de VLAN n.° 1, los modulos de PD de DSSL dentro del grupo 2 pueden tener ID de VLAN n.° 2 y los modulos de PD de DSSL dentro del grupo 3 pueden tener ID de VLAN n.° 3.
En algunas realizaciones, los modulos de distribucion de paquetes de segundo nivel dentro de cada grupo pueden realizar colectivamente la distribucion de paquetes de manera distribuida para asignar el paquete del flujo a un servidor apropiado dentro de cada grupo. En algunas realizaciones, como consecuencia de la adherencia del flujo, cada paquete para un flujo dado solo puede ser aceptado para ser procesado por un servidor y los otros servidores dentro del grupo pueden descartar el paquete. En la realizacion ilustrada, por ejemplo, el modulo 2 de PD de DSSL puede seleccionar el servidor 2 y hacer que su copia del paquete [F1] sea aceptada para su procesamiento por el servidor 2, mientras que los modulos 1 y 3 de PD de DSSL no pueden seleccionar su servidor correspondiente y pueden hacer que sus copias correspondientes del paquete [F1] sean descartadas. De manera similar, el modulo 4 de PD de DSSL puede seleccionar el servidor 4 y hacer que su copia del paquete [F2] sea aceptada para su procesamiento por el servidor 4, mientras que el modulo 5 de PD de DSSL no puede seleccionar el servidor 5 y puede hacer que sus copias correspondientes de los paquetes [F2] y [F3] sean descartadas. Continuando, el modulo 6 de PD de DSSL puede seleccionar el servidor 6 y hacer que su copia del paquete [F3] sea aceptada para ser procesada por el servidor 6. Este es solo un ejemplo ilustrativo y el alcance de la invencion no se limita a este ejemplo.
La figura 3 es un diagrama de bloques de un sistema de distribucion de paquetes de dos niveles que incluye un modulo 304 de distribucion de paquetes de primer nivel estatico/sin estado que se implementa en el hardware 322 que es distinto del hardware 324 usado para implementar un sistema de distribucion de paquetes de segundo nivel con estado distribuido. A modo de ejemplo, el hardware diferente puede ser hardware en diferentes elementos de red, diferentes porciones de hardware de un elemento de red, diferentes placas, diferentes tarjetas, diferentes procesadores, diferentes nucleos de procesador, etc. En algunas realizaciones, ademas de que un hardware es
distinto, se puede compartir un poco de hardware. En algunas realizaciones, el hardware 324 usado para implementar el sistema 307 de distribucion de paquetes de segundo nivel con estado distribuido puede ser el mismo que, o puede incluir, hardware usado para implementar un conjunto de servidores 312 para los cuales el sistema de distribucion de paquetes de dos niveles realiza el paquete distribucion. A modo de ejemplo, un modulo de distribucion de paquetes de segundo nivel con estado distribuido del sistema 307 y uno de los servidores 312 pueden compartir el hardware de una porcion de un elemento de red, un hoja, una placa, una tarjeta, un procesador o un nucleo de procesador. Ventajosamente, la mayoria de las tareas de uso intensivo de memoria y computacion del sistema general de distribucion de paquetes se pueden descargar a la memoria existente y a los recursos de procesamiento de los servidores. Compartir dicho hardware puede ayudar a que la distribucion distribuida de paquetes de segundo nivel con estado sea ampliable a un gran numero de conexiones u otros flujos sin que sea necesario un suministro excesivo de hardware adicional debido a la capacidad de hacer uso del hardware existente. En algunas realizaciones, el hardware 322 y el hardware 324 pueden estar dentro de un unico elemento de red. En otras realizaciones, el hardware 322 y el hardware 324 pueden estar dentro de dos o mas elementos de red conectados.
La figura 4 es un diagrama de bloques de un sistema de distribucion de paquetes de dos niveles implementado en un unico elemento de red. Los elementos de red se suelen separar en un piano de control y un piano de datos (a veces denominado piano de reenvio o piano de medios). En el caso de que el elemento de red sea un enrutador (o este implementando la funcionalidad de enrutamiento), el piano de control generalmente determina como se han de enrutar los datos (por ejemplo, los paquetes) (por ejemplo, el proximo salto para los datos y el puerto de salida para esos datos), y el piano de datos se encarga de reenviar esos datos. Por ejemplo, el piano de control tipicamente incluye uno o mas protocolos de enrutamiento que se comunican con otros elementos de la red para intercambiar rutas y seleccionar esas rutas basandose en una o mas metricas de enrutamiento. Las rutas y adyacencias se almacenan en una o mas estructuras de ruta en el piano de control. El piano de control programa el piano de datos con informacion basada en la estructura o estructuras de enrutamiento. El piano de datos usa estas estructuras de reenvio y adyacencia cuando reenvia trafico. Para el reenvio de capa 2, el elemento de red puede almacenar una o mas tablas de puente que se usan para reenviar datos basandose en la informacion de capa 2.
En algunas realizaciones, un elemento de red incluye un conjunto de una o mas tarjetas de linea, un conjunto de una o mas tarjetas de control y, opcionalmente, un conjunto de una o mas tarjetas de servicio (a veces denominadas tarjetas de recursos). En otras realizaciones, un elemento de red incluye un conjunto de una o mas tarjetas de linea y un conjunto de una o mas tarjetas de servicio. Estas tarjetas se acoplan juntas mediante uno o mas mecanismos (por ejemplo, una primera malla completa que acopla las tarjetas de linea y una segunda malla completa que acopla todas las tarjetas, una estructura de conmutador, un piano posterior, etc.). El conjunto de tarjetas de linea constituye el piano de datos, mientras que el conjunto de tarjetas de control y/o tarjetas de servicio proporcionan el piano de control e intercambian paquetes con elementos de red externos a traves de las tarjetas de linea. El conjunto de tarjetas de servicio puede proporcionar procesamiento especializado (por ejemplo, servicios de capa 4 a capa 7 (por ejemplo, firewall, IPsec, IDS, P2P), controlador de limite de sesion VoIP, pasarelas inalambricas moviles (GGSN, pasarelas de sistema de paquetes evolucionados (EPS)). A modo de ejemplo, se puede usar una tarjeta de servicio para terminar los tuneles IPsec y ejecutar los algoritmos de cifrado y autenticacion del asistente.
Con referenda nuevamente a la figura 4, el elemento de red incluye una o mas tarjetas 422 de linea, una estructura 420 de conmutacion y un conjunto de tarjetas 424 de control y/o servicio. Las tarjetas pueden estar completamente interconectadas entre si de manera convencional. En la realizacion ilustrada, se muestran N tarjetas de control y/o servicio, donde N puede ser cualquier numero entero. En la realizacion ilustrada, el sistema 404 de distribucion de paquetes de primer nivel estatico/sin estado se implementa en las tarjetas 422 de linea. Un sistema 408 de distribucion de paquetes de segundo nivel con estado distribuido se implementa en el conjunto de tarjetas 424 de control y/o servicio. Las tarjetas de control y/o servicio tambien se usan para implementar servidores 412. En particular, el modulo 1408-1 de PD de DSSL se implementa en la tarjeta 1424-1 de control/servicio que tambien implementa el servidor 1 412-1, el modulo 2 408-2 de PD de DSSL se implementa en la tarjeta 2 424-2 de control/servicio que tambien implementa el servidor 2412-2, y el modulo N 408-N de PD de DSSL se implementa en la tarjeta N 424-N de control/servicio que tambien implementa el servidor N 412-N. El modulo de distribucion de paquetes de primer nivel puede incluir informacion sobre un grupo seleccionado (por ejemplo, un ID de grupo) de las tarjetas de control/servicio en un paquete y reenviar el paquete a la estructura de conmutador. La estructura de conmutador, que en una realizacion incluye un conjunto de tarjetas de conmutacion, puede usar la informacion sobre el grupo seleccionado (por ejemplo, el ID de grupo) para realizar multidifusion y/o difusion a todas las tarjetas de control/servicio del grupo seleccionado.
La figura 5 es un diagrama de flujo de bloques de una realizacion de un metodo 530, que se puede realizar en uno o mas elementos de red que estan en comunicacion entre clientes que transmiten paquetes y servidores, para distribuir los paquetes entre los servidores que han de procesar los paquetes, a la vez que proporciona adherencia de los flujos de los paquetes a los servidores asignados para procesar los paquetes de los flujos. En algunas realizaciones, el metodo 530 puede realizarse mediante el sistema 100 de distribucion de paquetes multinivel de la figura 1 o el sistema 200 de distribucion de paquetes de dos niveles de la figura 2. En otras realizaciones, el metodo puede ser realizado por otros sistemas de distribucion de paquetes multinivel o de dos niveles diferentes. Ademas, el
sistema 100 de distribucion de paquetes multinivel y el sistema 200 de distribucion de paquetes de dos niveles pueden realizar metodos iguales o diferentes al metodo 530.
El metodo incluye recibir un paquete de un flujo en un modulo de distribucion de paquetes de primer nivel estatico, en el bloque 531. El paquete puede ser de cualquier tipo y protocolo conocido. Una ventaja de los enfoques divulgados en el presente documento es que no estan limitados a ningun tipo de paquete o protocolo de paquete en particular (por ejemplo, son indiferentes al protocolo). La adherencia del flujo se puede lograr incluso en protocolos que no permiten y/o sin necesidad de incluir informacion sobre un servidor asignado a un flujo dentro de un paquete o encabezado de paquete.
Un grupo de servidores se selecciona estaticamente para el paquete del flujo, entre una pluralidad de grupos de servidores, con el modulo de distribucion de paquetes de primer nivel estatico, en el bloque 532. Al seleccionar el grupo de servidores, no hay acceso ni uso del estado (por ejemplo, una tabla de flujo) que asigna el paquete del flujo al grupo seleccionado de servidores. En algunas realizaciones, el grupo de servidores se selecciona realizando un hash o similar con contenido del paquete.
El paquete del flujo se distribuye a un sistema de distribucion de paquetes de segundo nivel con estado distribuido, en el bloque 533. En algunas realizaciones, el paquete del flujo es multidifundido, difundido o, de lo contrario, se distribuye a cada uno de un conjunto de modulos de distribucion de paquetes de segundo nivel con estado distribuidos. En algunas realizaciones, los modulos de segundo nivel comparten un ID de VLAN. En algunas realizaciones, cada uno de los conjuntos de modulos distribuidos corresponde a un servidor diferente del grupo seleccionado. En algunas realizaciones, el paquete del flujo se distribuye desde el hardware usado para implementar el modulo de distribucion de paquetes de primer nivel hasta el hardware separado o distinto que se usa para implementar el sistema de distribucion de paquetes de segundo nivel con estado distribuido, que en algunos casos tambien se usa para implementar los servidores.
Un servidor del grupo seleccionado de servidores que ha de procesar el paquete del flujo se selecciona con estado con el sistema de distribucion de paquetes de segundo nivel con estado distribuido, en el bloque 534. Seleccionar con estado el servidor puede incluir el acceso y el uso del estado que asigna el procesamiento de paquetes del flujo al servidor seleccionado. En algunas realizaciones, cada uno de un conjunto de modulos de distribucion de paquetes de segundo nivel con estado distribuidos, que corresponden a un servidor diferente del grupo seleccionado, determina si hacer que el paquete correspondiente sea aceptado para su procesamiento por el servidor correspondiente o descartado. En un aspecto, solo uno de los modulos para el grupo seleccionado determina que el paquete ha de aceptarse, mientras que todos los demas modulos para el grupo seleccionado determinan que el paquete ha de descartarse.
El paquete del flujo se distribuye al servidor seleccionado, en el bloque 535. El servidor seleccionado puede procesar el paquete del flujo. En algunas realizaciones, posteriormente, otros paquetes del flujo se dirigen al mismo servidor seleccionando primero el mismo grupo y luego seleccionando el mismo servidor de manera que se proporcione la adherencia del flujo.
Para ciertos tipos de flujos, es posible detectar el inicio del flujo o el primer paquete del flujo basandose solo en los bits o el contenido del primer paquete del flujo sin necesidad de consultar otra informacion. Por ejemplo, un paquete inicial de una conexion o flujo puede identificarse como tal en el contenido del paquete inicial. Es decir, el paquete inicial de un flujo puede tener bits o contenido que indica que el paquete es el primer paquete del flujo. Los ejemplos de tales tipos de paquetes incluyen, entre otros un paquete TCP que tiene un indicador SYN para indicar que es el primer paquete en un flujo, un paquete SCTP que tiene un indicador para indicar que es el primer paquete en un flujo. De manera similar, otros protocolos orientados a la conexion comunmente tienen una forma de informar a otros elementos de la red a traves del contenido de un paquete inicial de que el paquete es el primer paquete de una conexion o flujo. Como un ejemplo adicional, un flujo de nivel de abonado puede identificarse por la direccion IP del abonado (por ejemplo, la direccion IP de origen/destino del trafico ascendente/descendente). En tal caso, una solicitud de inicio RADIUS o una solicitud DHCP puede indicar el inicio del flujo de nivel de abonado. Como el ID de flujo se basa en la direccion IP de origen, el nuevo flujo para un abonado se detectara percibiendo el paquete RADIUS o el paquete DHCP que se genera para establecer la sesion del abonado. Los tipos de conexiones o flujos para los cuales es posible detectar o identificar el inicio del flujo o el primer paquete del flujo basandose solo en los bits o el contenido del primer paquete del flujo sin necesidad de consultar otra informacion se conocen como conexiones o flujos de tipo 1.
La figura 6 es un diagrama de flujo de bloques de una realizacion de un metodo 638 que puede ser realizado por cada modulo de distribucion de paquetes de segundo nivel con estado distribuido de un grupo seleccionado para flujos de tipo 1 para seleccionar un servidor para procesar un paquete. Se recibe un paquete en un modulo de distribucion de paquetes de segundo nivel con estado distribuido, en el bloque 639. Se realiza una determinacion, en el bloque 640, si el paquete es para un nuevo flujo al examinar el paquete (por ejemplo, un encabezado del paquete). Por ejemplo, el paquete o encabezado de paquete puede incluir un marcador o indicador que indica que es un paquete inicial de un nuevo flujo. El modulo de distribucion de paquetes de segundo nivel puede tener un modulo de examen de paquetes para hacer esta determinacion. Si el paquete es para un nuevo flujo (es decir, "si"
es la determinacion en el bloque 640), el metodo avanza al bloque 641. En el bloque 641, se selecciona un servidor para procesar el paquete con un nuevo algoritmo de distribucion de paquetes de flujo que es consistente entre todos los modulos del grupo seleccionado. Por el nuevo algoritmo de distribucion de paquetes de flujo que es consistente entre todos los modulos del grupo seleccionado, se entiende que las instancias de los algoritmos en cada uno de los modulos del grupo seleccionado son operables para seleccionar el mismo servidor identico para procesar el paquete (es decir, todos seleccionan consistentemente el mismo servidor). Por ejemplo, todos los modulos del grupo seleccionado seleccionaran el servidor 2 en lugar de cualquiera de los modulos que seleccionan un servidor diferente. En algunas realizaciones, los algoritmos son todos identicos. En otras realizaciones, los algoritmos pueden ser diferentes pero, sin embargo, producen selecciones consistentes. Los tipos de algoritmos descritos anteriormente son adecuados, como, por ejemplo, de turnos rotativos, de seleccion aleatoria, de turnos rotativos ponderados, seleccion aleatoria ponderada, funciones hash, etc., asi como otros tipos conocidos de algoritmos mas sofisticados. Como ejemplo especifico, cada modulo puede usar una funcion hash coherente (por ejemplo, una misma funcion hash) que mapea un ID de flujo extraido del paquete a los ID del servidor, de modo que se seleccionara el mismo servidor y solo ese servidor aceptara el paquete para su procesamiento. En algunas realizaciones, este algoritmo puede intentar distribuir o equilibrar aproximadamente de manera igual las cargas asociadas con el procesamiento de paquetes entre los servidores (por ejemplo, usarse para equilibrar la carga del servidor) por ejemplo a traves de ponderaciones. Otras realizaciones no se limitan al equilibrio de carga del servidor.
Se realiza una determinacion, en el bloque 642, si el servidor seleccionado, que es seleccionado por el modulo que realiza el metodo (es decir, el servidor seleccionado en el bloque 641), corresponde al modulo que realiza el metodo. Por ejemplo, la determinacion seria "si" si un modulo 2 correspondiente a un servidor 2 selecciono el servidor 2, o la determinacion seria "no" si el modulo 2 correspondiente al servidor 2 seleccionara cualquier otro servidor ademas del servidor 2. El segundo nivel puede tener un modulo de determinacion para hacer esta determinacion. Si el servidor seleccionado no corresponde al modulo (es decir, "no" es la determinacion en el bloque 642), el metodo avanza al bloque 643. En el bloque 643, el modulo que realiza el metodo hace que el paquete sea descartado (por ejemplo, el modulo descarta el paquete, el modulo no reenvia el paquete al servidor o el modulo hace que el servidor descarte el paquete, etc.). Alternativamente, si el servidor seleccionado corresponde al modulo (es decir, "si" es la determinacion en el bloque 642), el metodo avanza al bloque 644. En el bloque 644, se registra un nuevo identificador de flujo (ID de flujo) en una tabla de flujo del modulo que realiza el metodo. En algunas realizaciones, la tabla de flujo puede incluir un conjunto completo de ID de flujo para todos los flujos asignados al servidor correspondiente al modulo que realiza el metodo. En un aspecto, la tabla de flujo puede incluir pares de ID de flujo mapeados al ID de servidor del servidor correspondiente. Alternativamente, en otro aspecto, la tabla de flujo solo puede incluir explicitamente los ID de flujo y el ID del servidor puede ser implicito o entendido. El modulo hace que el paquete sea aceptado para su procesamiento por el servidor correspondiente, en el bloque 645 (por ejemplo, el modulo acepta el paquete, el modulo reenvia el paquete al servidor o el modulo hace que el servidor acepte el paquete, etc.).
Con referenda nuevamente al bloque 640, si el paquete no es para un nuevo flujo (es decir, la determinacion es "no"), el metodo avanza al bloque 646. En el bloque 646, se determina si un identificador de flujo (ID de flujo) para el paquete esta en una tabla de flujo del modulo que realiza el metodo. El segundo nivel puede tener un modulo de verificador de tabla de flujo para hacer esta determinacion. Si el ID de flujo no esta en la tabla de flujo, el modulo hace que el paquete sea descartado, en el bloque 647. Normalmente, dado que el paquete no es para un nuevo flujo, y el ID de flujo no esta en la tabla de flujo del modulo, se asumira que el ID de flujo esta en una tabla de flujo de uno de los otros modulos del grupo seleccionado. Alternativamente, si el ID de flujo esta en la tabla de flujo, el modulo hace que el paquete sea aceptado para su procesamiento por el servidor correspondiente, en el bloque 648. Dado que el paquete es para un flujo existente listado en la tabla de flujo del modulo que realiza el metodo, para mantener la persistencia del flujo o la adherencia del flujo, el paquete deberia ser aceptado para su procesamiento. El segundo nivel puede tener un modulo de determinacion para determinar si aceptar o descartar. Por lo general, es posible que todos los demas modulos que realizan el metodo no encuentren el ID de flujo para el paquete en sus tablas de flujo (por ejemplo, solo una tabla de flujo incluye el ID de flujo) y puede hacer que el paquete sea descartado para que no sea procesado por sus servidores correspondientes.
Este es solo un ejemplo de un metodo adecuado. Si bien el metodo se ha mostrado en una forma relativamente basica, las operaciones se pueden agregary/o eliminar opcionalmente del metodo. Ademas, aunque se ha mostrado y descrito un orden particular de operaciones, debe entenderse que ese orden particular es de ejemplo. Realizaciones alternativas pueden realizar opcionalmente las operaciones en orden diferente, combinar ciertas operaciones, superponer ciertas operaciones, etc. Por ejemplo, otra realizacion puede hacer la determinacion en el bloque 646 antes de la determinacion en el bloque 640.
Para otros tipos de conexiones o flujos, no es posible detectar el inicio del flujo, o el primer paquete del flujo, basandose solo en los bits o el contenido del primer paquete del flujo sin necesidad de consultar otra informacion. Tales tipos de conexiones o flujos se denominan en el presente documento conexiones o flujos de tipo 2.
La figura 7 es un diagrama de flujo de bloques de una realizacion de un metodo 750 que puede ser realizado por cada modulo de distribucion de paquetes de segundo nivel con estado distribuido de un grupo seleccionado para flujos de tipo 1 o tipo 2 para seleccionar un servidor para procesar un paquete. El metodo 750 es un enfoque
generico que no se limita a ningun protocolo en particular o la necesidad de detectar un nuevo flujo solamente desde el contenido del paquete. Este enfoque puede usarse para flujos de tipo 1, flujos de tipo 2 o una combinacion de flujos de tipo 1 y tipo 2. Se recibe un paquete en un modulo de distribucion de paquetes de segundo nivel con estado distribuido, en el bloque 751. Se realiza una determinacion, en el bloque 752, si un ID de flujo para el paquete esta en una tabla de flujo del modulo que realiza el metodo. Si el ID de flujo esta en la tabla de flujo (es decir, "si" es la determinacion en el bloque 752), el metodo avanza al bloque 753. En el bloque 753, el modulo hace que el paquete sea aceptado para su procesamiento por el servidor correspondiente. Alternativamente, si el ID de flujo no esta en la tabla de flujo (es decir, "no" es la determinacion en el bloque 752), el metodo avanza al bloque 754. En el bloque 754, se determina si el ID de flujo para el paquete se encuentra en una tabla de flujo existente en otros del modulo que realiza el metodo. En algunas realizaciones, la tabla de flujo existente en otros puede enumerar o incluir los ID de flujo asignados a los servidores del grupo seleccionado que no sea el servidor correspondiente al modulo que realiza el metodo. La combinacion de los ID de flujo incluidos en la tabla de flujo del modulo y los diferentes ID de flujo incluidos en la tabla de flujo existente en otros del modulo representa la identificacion de todos los flujos existentes a los que da servicio el grupo de servidores. Los ID de flujo en la tabla de flujo y la tabla de flujo existente en otros de un modulo dado se excluyen mutuamente. Si el ID de flujo se encuentra en la tabla de flujo existente en otros(es decir, "si" es la determinacion en el bloque 754), el modulo hace que el paquete sea descartado, en el bloque 755.
Alternativamente, si el ID de flujo no se encuentra en la tabla de flujo existente en otros (es decir, "no" es la determinacion en el bloque 754), el metodo avanza al bloque 756. El hecho de que el ID de flujo del paquete no exista ni en la tabla de flujo del modulo ni en la tabla de flujo existente en otros del modulo indica de manera inferencial que el paquete es para un nuevo flujo. Como tal, se puede tomar una nueva decision de distri bucion de paquetes para el paquete del nuevo flujo. En algunos casos, se puede tomar esta decision para lograr el equilibrio de carga del servidor, aunque esto no es necesario. Se selecciona un servidor para procesar el paquete con un nuevo algoritmo de distribucion de paquetes de flujo que es consistente entre todos los modulos del grupo seleccionado, en el bloque 756. Como se menciono anteriormente, esto se refiere a las instancias de los algoritmos en cada uno de los modulos del grupo seleccionado que selecciona el mismo servidor para procesar el paquete. Se determina si el servidor seleccionado corresponde al modulo que realiza el metodo, en el bloque 757. Si el servidor seleccionado corresponde al modulo que realiza el metodo (es decir, "si" es la determinacion en el bloque 757), se registra o almacena un nuevo ID de flujo para el paquete en una tabla de flujo del modulo que realiza el metodo, en el bloque 758. El modulo hace que el paquete sea aceptado para su procesamiento por el servidor correspondiente, en el bloque 759. Con referencia nuevamente al bloque 757. Si el servidor seleccionado no se corresponde con el modulo que realiza el metodo (es decir, "no" es la determinacion), se registra o almacena un nuevo ID de flujo para el paquete en la tabla de flujo existente en otros del modulo que realiza el metodo, en el bloque 760. El modulo hace que el paquete sea descartado, en el bloque 761.
De forma similar, todos los demas modulos del grupo pueden mantener una tabla de flujo existente en otros. Cada una de las tablas de flujo existente en otros permite al modulo correspondiente saber cuales y cuantos flujos estan manejando los otros servidores del grupo. En algunas realizaciones, esta informacion en el conjunto de tablas de flujo existente en otros se puede usar para informar o modificar el nuevo algoritmo de planificacion de paquetes (por ejemplo, para realizar el equilibrio de carga del servidor). Por ejemplo, el nuevo algoritmo de distribucion de paquetes de flujo puede distribuir paquetes para nuevos flujos a un servidor con el menor numero de flujos. En algunas realizaciones, los modulos del grupo pueden intercambiar mensajes para sincronizar la informacion sobre sus tablas de flujo y las tablas de flujo existente en otros para mantener una vista coherente de los flujos dentro del grupo.
Dado que el metodo 750 de la figura 7 usa las tablas de flujo existente en otros, que deben almacenarse, tiende a consumir mas memoria que el metodo 638 de la figura 6. Ademas, mantener y usar las tablas de flujo existente en otros tiende a requerir recursos de procesamiento adicionales. Por ejemplo, es posible que deba realizarse una busqueda en la tabla de flujo existente en otros al llegar cada paquete cuyo ID de flujo no este representado en la tabla de flujo del modulo. Por consiguiente, la realizacion del metodo 638 puede ofrecer ciertas ventajas sobre la ejecucion del metodo 750 para flujos de tipo 1. Afortunadamente, muchos de los tipos mas comunes de conexiones 0 flujos son conexiones o flujos de tipo 1 (por ejemplo, TCP, SCTP, GTP, otros protocolos orientados a la conexion, etc.). En algunas realizaciones, el metodo 638 se puede usar para tales tipos de flujos sin necesidad de realizar el metodo 750. En otras realizaciones, el metodo 750 se puede realizar para todos los flujos independientemente de si son de tipo 1 o de tipo 2. En aun otras realizaciones, el metodo 638 puede realizarse para los flujos que son de tipo 1 y el metodo 750 puede realizarse para los flujos que son de tipo 2 y/o para flujos que son de ambos tipos.
Este es solo un ejemplo de un metodo adecuado. Si bien el metodo se ha mostrado en una forma relativamente basica, las operaciones se pueden agregary/o eliminar opcionalmente del metodo. Ademas, aunque se ha mostrado y descrito un orden particular de operaciones, ha de entenderse que ese orden particular es de ejemplo. Realizaciones alternativas pueden realizar opcionalmente las operaciones en orden diferente, combinar ciertas operaciones, superponer ciertas operaciones, etc. Por ejemplo, otra realizacion puede hacer la determinacion en el bloque 754 antes de la determinacion en el bloque 752. Como otro ejemplo, los dos metodos se pueden combinar en un solo metodo hibrido.
La figura 8 es un diagrama de bloques de una realizacion de un conjunto de modulos 808 de distribucion de paquetes de segundo nivel con estado distribuido (PD de DSSL, por sus siglas en ingles), de un grupo que tiene un conjunto correspondiente de tablas 810 de flujo. En la realizacion ilustrada, para fines de ilustracion, el grupo tiene tres modulos 808-1, 808-2, 808-3 de PD de DSSL que tienen tres tablas 810-1, 810-2, 810-3 de flujo correspondientes, aunque el alcance de la invencion no es tan limitada. Ademas, en la realizacion ilustrada, para fines de ilustracion, seis flujos que tienen el ID de flujo n.° 1-6 son servidos por el grupo y representados en las tablas de flujo, aunque el alcance de la invencion no esta tan limitado. Un primer servidor correspondiente al modulo 1 de PD de DSSL se asigna para dar servicio a un primer flujo con ID de flujo n.° 1, un tercer flujo con ID de flujo n.° 3 y un quinto flujo con ID de flujo n.° 5. En consecuencia, los ID de flujo n.° 1, n.° 3 y n.° 5 se incluyen en la tabla 810-1 de flujo del modulo 1 de PD de DSSL. Se asigna un segundo servidor correspondiente al modulo 2 de PD de DSSL para dar servicio a un segundo flujo con ID de flujo n.° 2. Por consiguiente, el ID de flujo n.° 2 se incluye en la tabla 810-2 de flujo del modulo 2 de PD de DSSL. Se asigna un tercer servidor correspondiente al modulo 3 de PD de DSSL para dar servicio a un cuarto flujo con ID de flujo n.° 4 y un sexto flujo con ID de flujo n.° 6. En consecuencia, los ID de flujo n.° 4 y n.° 6 se incluyen en la tabla 810-3 de flujo del modulo 3 de PD de DSSL.
La figura 9 es un diagrama de bloques de una realizacion de un conjunto de modulos 908 de PD de DSSL de un grupo que tiene un conjunto correspondiente de tablas 910 de flujo y un conjunto correspondiente de tablas 962 de flujo existente en otros. En la realizacion ilustrada, para fines de ilustracion, el grupo tiene tres modulos 908-1, 908-2, 908-3 de PD de DSSL que tienen tres tablas 910-1, 910-2, 910-3 de flujo correspondientes, aunque el alcance de la invencion no es tan limitada. Ademas, en la realizacion ilustrada, para fines de ilustracion, seis flujos que tienen el ID de flujo n.° 1-6 son servidos por el grupo y representados en las tablas de flujo, aunque el alcance de la invencion no esta tan limitado. Un primer servidor correspondiente al modulo 1 de PD de DSSL se asigna para dar servicio a un primer flujo con ID de flujo n.° 1, un tercer flujo con ID de flujo n.° 3 y un quinto flujo con ID de flujo n.° 5. En consecuencia, los ID de flujo n.° 1, n.° 3 y n.° 5 se incluyen en la tabla 810-1 de flujo del modulo 1 de PD de DSSL. Se asigna un segundo servidor correspondiente al modulo 2 de PD de DSSL para dar servicio a un segundo flujo con ID de flujo n.° 2. Por consiguiente, el ID de flujo n.° 2 se incluye en la tabla 810-2 de flujo del modulo 2 de PD de DSSL. Se asigna un tercer servidor correspondiente al modulo 3 de PD de DSSL para dar servicio a un cuarto flujo con ID de flujo n.° 4 y un sexto flujo con ID de flujo n.° 6. En consecuencia, los ID de flujo n.° 4 y n.° 6 se incluyen en la tabla 810-3 de flujo del modulo 3 de PD de DSSL.
El ID de flujo n.° 2 correspondiente al servidor 2, el ID de flujo n.° 4 correspondiente al servidor 3 y el ID de flujo n.° 6 correspondientes al servidor 3 se incluyen en la tabla 962-1 de flujo existente en otros del modulo 1 de PD de DSSL. El ID de flujo n.° 1 correspondiente al servidor 1, el ID de flujo n.° 3 correspondiente al servidor 1, el ID de flujo n.° 5 correspondiente al servidor 1, el ID de flujo n.° 4 correspondiente al servidor 3 y el ID de flujo n.° 6 correspondiente al servidor 3 se incluyen en la tabla 962-2 de flujo existente en otros del modulo 2 de PD de DSSL. El ID de flujo n.° 1 correspondiente al servidor 1, el ID de flujo n.° 3 correspondiente al servidor 1, el ID de flujo n.° 5 correspondiente al servidor 1 y el ID de flujo n.° 2 correspondiente al servidor 2 se incluyen en la tabla 962-3 de flujo existente en otros del modulo 3 de PD de DSSL. Como se muestra en la realizacion ilustrada, las tablas de flujo existente en otros pueden, en algunas realizaciones, identificar los servidores que corresponden a (por ejemplo, el servicio) cada ID de flujo. Ventajosamente, la inclusion de los ID de servidor en la tabla de flujo existente en otros ayuda a proporcionar una imagen mas completa del grupo y, en algunas realizaciones, se puede usar para fines de alta disponibilidad y/o para realizar el equilibrio de carga del servidor. Alternativamente, en otras realizaciones, las tablas de flujo existente en otros pueden simplemente enumerar los ID de flujo correspondientes a los otros servidores.
La figura 10 es un diagrama de bloques de una realizacion de la distribucion de flujos de tipo 1 y tipo 2 entre los grupos 1013 de los modulos 1008 de PD de DSSL. El grupo 11013-1 esta dedicado a flujos de solo tipo 1. Los ejemplos de tales flujos incluyen, entre otros flujos TCP y SCTP. Cada uno de un modulo 11008-1 de PD de DSSL, un modulo 21008-2 de PD de DSSL y un modulo 31008-1 de PD de DSSL tiene un modulo 1064 de seleccion de servidor que es operable para seleccionar servidores para flujos de tipo 1. A modo de ejemplo, cada uno de los modulos de seleccion de servidor en el grupo 1 puede ser operable para implementar el metodo de la figura 6.
El grupo 2 1013-2 se usa tanto para flujos de tipo 1 como de tipo 2. Por ejemplo, el grupo 2 se puede usar para la gestion de flujo de nivel de abonado. Un flujo de nivel de abonado puede incluir subflujos de tipo 1 y tipo 2. Por ejemplo, un abonado puede tener diferentes aplicaciones ejecutandose en una estacion final, y algunas de las aplicaciones pueden usar flujos de tipo 1 mientras que otros usan flujos de tipo 2. Como otro ejemplo, el grupo 2 puede usarse para algunos flujos de tipo 1 y otros flujos de tipo 2 independientemente de si son flujos de abonados. Cada uno de un modulo 41008-4 de PD de DSSL y un modulo 51008-5 de PD de DSSL tiene un modulo 1064 de seleccion de servidor que es operable para seleccionar servidores para flujos de tipo 1, y tambien un modulo 1066 de seleccion de servidor que es operable para seleccionar servidores para flujos de tipo 2. A modo de ejemplo, cada uno de los modulos 1064 de seleccion de servidor de tipo 1 puede ser operable para implementar el metodo de la figura 6, y cada uno de los modulos 1066 de seleccion de servidor de tipo 2 puede ser operable para implementar el metodo de la figura 7. Como se muestra, cada uno de los modulos de PD de DSSL en el grupo 2 tambien puede incluir un conmutador logico 1065 que es operable para examinar paquetes entrantes, determinar si los paquetes son para flujos de tipo 1 o tipo 2 y, en consecuencia, hacer que se use el modulo 1064 de seleccion de servidor tipo 1 o el modulo 1066 de seleccion de servidor de tipo 2.
El grupo 31013-3 esta dedicado a flujos de tipo 2. Un modulo 6 1008-6 de PD de DSSL tiene un modulo 1066 de seleccion de servidor que es operable para seleccionar servidores para flujos de tipo 2.
La figura 11 es un diagrama de bloques de una realizacion de un grupo 1113 de modulos 1108 de PD de DSSL que son operables para enviar mensajes entre si en los que los mensajes indican los estados y/o las cargas de los servidores correspondientes 1112. Un modulo 11108-1 de PD de DSSL corresponde a un servidor 11112-1, un modulo 2 1108-2 de PD de DSSL corresponde a un servidor 2 1112-2 y un modulo 3 1108-3 de PD de DSSL corresponde a un servidor 31112-3. Los servidores y los modulos de PD de DSSL pertenecen al mismo grupo 1113. El modulo 1 de PD de DSSL envia un primer mensaje (ml) que indica un primer estado (S1) y una primera carga (L1) del servidor 1 al modulo 2 de PD de DSSL y al modulo 3 de PD de DSSL. El modulo 2 de PD de DSSL envia un segundo mensaje (m2) que indica un segundo estado (S2) y una segunda carga (L2) del servidor 2 al modulo 1 de PD de DSSL y al modulo 3 de PD de DSSL. El modulo 3 de PD de DSSL envia un tercer mensaje (m3) que indica un tercer estado (S3) y una tercera carga (L3) del servidor 3 al modulo 1 de PD de DSSL y al modulo 2 de PD de DSSL. En un aspecto, cada modulo de PD de DSSL puede difundir o multidifundir un paquete que indica el estado y/o carga a los otros modulos dentro de su grupo. Los modulos de PD de DSSL pueden incluir cada uno un modulo de envio de mensajes y un modulo de recepcion de mensajes para enviar y recibir respectivamente estos mensajes. En algunas realizaciones, cada modulo de PD de DSSL tambien puede enviar el mismo o un tipo diferente de mensaje que indica un estado y/o una carga a un modulo de distribucion de paquetes de primer nivel. El paquete puede tener cualquiera de varios formatos o protocolos adecuados. En otra realizacion, los mensajes pueden incluir informacion de estado sin incluir informacion de carga. En otra realizacion mas, los mensajes pueden incluir informacion de carga sin incluir informacion de estado.
Los estados representan estados y/o estatus de los servidores. Los ejemplos de estatus/estado adecuado incluyen, entre otros vivo (por ejemplo, activo y capaz de procesar paquetes), apagado sin problemas (por ejemplo, capaz de procesar paquetes para conexiones existentes pero no aceptando nuevas conexiones), dejando el grupo, uniendose al grupo, reiniciando (por ejemplo, en proceso de recuperacion de un fallo o reinicio), y similares, y combinaciones de los mismos. En un aspecto, un mensaje recibido de un modulo de PD de DSSL puede indicar implicitamente, en lugar de explicitamente, el estado. Por ejemplo, cuando se recibe un mensaje de un modulo de PD de DSSL, se puede suponer que el servidor correspondents esta vivo y/o activo. Si no se recibe un mensaje de un modulo de PD de DSSL dentro de un periodo de tiempo determinado, se puede suponer que el servidor correspondiente no esta disponible. Las cargas pueden representar cargas asociadas con los servidores. Los ejemplos de cargas adecuadas incluyen, entre otros carga de trabajo actual, numero de conexiones, numero de flujos, carga en un procesador, carga termica (por ejemplo, temperatura), cantidad de memoria consumida, tamano de la tabla de flujo, etc.).
El modulo 1 de PD de DSSL tiene un nuevo modulo 1109-1 de ajuste de algoritmo de distribucion de paquetes de flujo, el modulo 2 de PD de DSSL tiene un nuevo modulo 1109-2 de ajuste de algoritmo de distribucion de paquetes de flujo y el modulo 3 de PD de DSSL tiene un nuevo modulo 1109-3 de flujo de ajuste de algoritmo de distribucion de paquetes. En algunas realizaciones, cada uno de los nuevos modulos de ajuste de algoritmo de distribucion de paquetes de flujo puede ser operable para ajustar dinamicamente un algoritmo de distribucion de paquetes (por ejemplo, un nuevo algoritmo de distribucion de paquetes de flujo) basado en los estados y/o cargas. Por ejemplo, en algunas realizaciones, las ponderaciones de un nuevo algoritmo de distribucion de paquetes de flujo ponderado, como una eleccion aleatoria ponderada o un algoritmo de turnos rotativos ponderado, pueden ajustarse dinamicamente basandose en el conjunto de cargas indicadas en los mensajes intercambiados dentro del grupo para tener en cuenta las cargas actuales en los servidores. Tambien se contemplan otras formas de modificar otros tipos de algoritmos conocidos en las tecnicas. Como otro ejemplo, los modulos de PD de DSSL de un grupo pueden modificar sus algoritmos de distribucion de paquetes para considerar un servidor dado que ya no esta disponible y/o para considerar un servidor determinado que se esta agregando al grupo.
En diferentes realizaciones, la informacion de estado y/o carga se puede usar para diferentes fines. En algunas realizaciones, la informacion de estado y/o carga se puede usar para distribuir paquetes entre los servidores de acuerdo con una politica u objetivo de distribucion de paquetes. Los ejemplos incluyen, entre otros, equilibrio de carga severa, calidad de garantia de servicio, equilibrio de carga termica, gestion de temperatura, etc. En algunas realizaciones, la informacion de estado y/o carga se puede usar junto con la implementacion de alta disponibilidad. La alta disponibilidad a veces se denomina resistencia, redundancia, proteccion contra fallos, etc. La alta disponibilidad se usa comunmente para prevenir o al menos reducir la interrupcion del servicio que, de lo contrario, puede ocurrir cuando uno o mas servidores dejan de estar disponibles. Los servidores pueden dejar de estar disponibles debido a varias razones potenciales, como, por ejemplo, un fallo de hardware, un fallo de software, apagandose o desconectandose para cambiar el software y/o hardware por parte de un administrador, o similares. Los mensajes intercambiados entre los modulos de PD de DSSL se pueden usar, o pueden ayudar, para detectar cuando un servidor deja de estar disponible. Posteriormente, los servicios del servidor no disponible pueden transferirse a uno o mas servidores para que no haya interrupciones en la prestacion de los servicios.
Varias configuraciones conocidas de alta disponibilidad o redundancia son adecuadas. Los ejemplos de configuraciones de alta disponibilidad adecuadas incluyen, entre otros configuraciones activas/pasivas en las que un servidor activo tiene un servidor pasivo o en espera completamente redundante que se puede activar si el servidor activo ya no esta disponible, configuraciones activas/activas en las que uno o mas servidores activos son operables
para hacer una copia de seguridad de otro servidor activo y manejar ese procesamiento de servidores en caso de que ese servidor ya no este disponible, las configuraciones pasivas M activas N donde los servidores pasivos M (por ejemplo, uno o mas) hacen una copia de seguridad de los servidores activos N ( por ejemplo, una pluralidad), y similares, y combinaciones de los mismos. En varias realizaciones de ejemplo, se puede proporcionar redundancia por servidor, por grupo, por conjunto de grupos o globalmente (por ejemplo, para todos los grupos).
Hay que considerar un ejemplo de como agregar un nuevo servidor activo a un grupo. Los nuevos algoritmos de distribucion de paquetes de flujo de los modulos de PD de DSSL pueden modificarse para tener en cuenta el nuevo servidor activo. Por ejemplo, suponiendo que un nuevo algoritmo de distribucion de paquetes de flujo basado en hash mapee un modulo n a una direccion IP de origen a n servidores en un grupo, cuando el nuevo servidor activo se agregue al grupo, el modulo puede tomarse n 1 en lugar de n para considerar el nuevo servidor activo.
Ventajosamente, la adherencia de flujo al servidor para los flujos existentes se puede mantener cuando se agrega un servidor adicional dado a un grupo (es decir, no es necesario cambiar los servidores que manejan los flujos existentes). El nuevo algoritmo de distribucion de paquetes de flujo se invoca solo para flujos nuevos y no para flujos existentes. Hay que considerar un flujo de tipo 1 que se maneja con el metodo de la figura 6. Cuando un modulo de PD de DSSL recibe un paquete para un flujo existente, el modulo de PD de DSSL determina que el paquete es para un flujo existente mediante el examen del encabezado del paquete (por ejemplo, en el bloque 640). El modulo de PD de DSSL determina si el ID de flujo para el flujo existente esta en la tabla de flujo del modulo (por ejemplo, en el bloque 646). El servidor que estaba sirviendo al flujo encontrara el ID de flujo asociado en su tabla de flujo correspondiente y aceptara el paquete (por ejemplo, en el bloque 648). Otros servidores no encontraran el ID de flujo en sus correspondientes tablas de flujo y descartaran el paquete (por ejemplo, en el bloque 647). Por lo tanto, la adherencia del flujo al servidor se mantiene para los flujos existentes cuando se agrega un nuevo servidor a un grupo.
De manera similar, hay que considerar un flujo de tipo 2 que se maneja mediante el metodo de la figura 7. Cuando se agrega un servidor dado a un grupo, se puede mantener la adherencia de flujo al servidor para los flujos existentes (es decir, no es necesario cambiar los servidores que manejan los flujos existentes). Inicialmente, la tabla de flujo y la tabla de flujo existente de otros correspondientes al servidor agregado estan vacias. La tabla de flujo solo se rellena cuando el servidor correspondiente acepta un nuevo flujo para procesarlo. Cuando se recibe un paquete para un flujo existente, el modulo de PD de DSSL correspondiente al servidor agregado determinara que el ID de flujo para el paquete no esta en su tabla de flujo correspondiente (por ejemplo, en el bloque 752). La tabla de flujo existente en otros que corresponde al servidor agregado puede actualizarse con los flujos existentes para el grupo antes de tomar decisiones para aceptar o descartar paquetes. Despues de que se haya actualizado la tabla de flujo existente en otros, ya que el paquete es para un flujo existente, el modulo de PD de DSSL determinara que el ID de flujo para el paquete se encuentra en su tabla de flujo existente en otros (por ejemplo, en el bloque 754) y hara que el paquete sea descartado (por ejemplo, en el bloque 755).
Un servidor activo tambien puede ser eliminado de un grupo. Por ejemplo, en una configuracion activa/activa, uno de los servidores activos puede fallar o desconectarse. En algunas realizaciones, con el fin de proporcionar una alta disponibilidad, el estado de un servidor dado puede ser mantenido por uno o mas servidores activos o pasivos que estan destinados a proporcionar resistencia o alta disponibilidad para el servidor dado. Por ejemplo, hay que considerar un flujo de tipo 1 y una configuracion de alta disponibilidad activa/pasiva. El servidor pasivo o en espera puede mantener el estado y un conjunto de flujos (por ejemplo, una tabla de flujo) de cada servidor activo del que es responsable para realizar una copia de seguridad. Como otro ejemplo, en una configuracion de alta disponibilidad activa/activa, un servidor activo puede mantener al menos esa parte del estado y un conjunto de flujos de otro servidor activo que es responsable de realizar una copia de seguridad. Cuando falla un servidor activo, el servidor responsable de realizar una copia de seguridad de ese servidor puede mover los ID de flujo a su tabla de flujo. Los nuevos algoritmos de distribucion de paquetes de flujo tambien pueden modificarse para reflejar que el servidor se ha eliminado del grupo. Por ejemplo, un algoritmo basado en hash se puede realizar modulo n-1 despues de eliminar el servidor, mientras que el modulo n se realizo antes de la eliminacion del servidor, donde n es el numero de servidores activos en el grupo.
En algunas realizaciones, los mensajes que indican el estatus tambien pueden proporcionarse a un modulo de distribucion de paquetes de primer nivel estatico/sin estado. Mientras los mensajes recibidos por el modulo de distribucion de paquetes de primer nivel indiquen que al menos un servidor del grupo esta activo y disponible para procesar paquetes, el modulo de distribucion de paquetes de primer nivel no necesita ajustar necesariamente su enfoque de distribucion de paquetes. Mas bien, puede seguir distribuyendo paquetes al grupo como antes. Si no se reciben mensajes para un grupo en un periodo de tiempo determinado, el modulo de distribucion de paquetes de primer nivel puede inferir que todos los servidores del grupo no estan disponibles y puede cambiar su mapeo de flujo a grupo para que los paquetes se proporcionen a uno o mas grupos distintos.
La figura 12 es un diagrama de bloques de una realizacion de modulos 1210 de PD de DSSL correspondientes a diferentes grupos de servidores que intercambian mensajes entre si en los que los mensajes indican estados y/o cargas asociados con el grupo de servidores correspondiente. Un modulo 11210-1 de PD de DSSL corresponde a un grupo 1 de servidores 1213-1. Un modulo 2 1210-2 de PD de DSSL corresponde a un grupo 2 de servidores
1213-2. El modulo 1 de PD de DSSL envia un primer mensaje (M1) que indica un primer estado (S1) y una primera carga (L1) asociada con el grupo 1 de servidores. El modulo 2 de PD de DSSL envia un segundo mensaje (M2) que indica un segundo estado (S2) y una segunda carga (L2) asociada con el grupo 2 de servidores. Los modulos de PD de DSSL pueden incluir cada uno un modulo de envio de mensajes y un modulo de recepcion de mensajes para enviar y recibir respectivamente estos mensajes. En un aspecto, los estados y las cargas pueden reflejar todo el grupo (por ejemplo, un numero total de servidores activos y una carga media). En otro aspecto, los estados y las cargas pueden incluir diferentes estados y cargas correspondientes para cada servidor del grupo. En algunas realizaciones, uno de los modulos de PD de DSSL de un grupo, o un modulo de PD de DSSL dedicado adicional compartido por un grupo, puede recibir informacion de estado y/o carga sobre otros servidores del grupo a traves de los mensajes intercambiados como se describe anteriormente junto con la figura 11, y luego puede promediar y/o combinar los estados y las cargas en un mensaje que se intercambia con los otros grupos.
El modulo 1 de PD de DSSL incluye un modulo 1268-1 de reasignacion de grupo de servidores que es operable para reasignar un servidor entre grupos de servidores (por ejemplo, del grupo 1 al grupo 2 y/o del grupo 2 al grupo 1). De manera similar, el modulo 2 de PD de DSSL incluye un modulo 1268-2 de reasignacion de grupo de servidores que es operable para reasignar un servidor entre grupos de servidores. En algunas realizaciones, un servidor puede ser reasignado entre los grupos para lograr un objetivo dado y/o de acuerdo con los criterios (por ejemplo, para lograr el equilibrio de carga del servidor, para lograr una calidad de servicio garantizada, para moderar las temperaturas en los servidores, etc.). Por ejemplo, un servidor puede ser reasignado dinamicamente y sin problemas entre grupos para equilibrar de manera mas uniforme las cargas entre los servidores de los grupos (por ejemplo, cuando un grupo tiene mas recursos del servidor de los que necesita y el otro no tiene suficientes). En el contexto del equilibrio de carga del servidor, la capacidad de reasignar servidores entre grupos permite que se logre un equilibrio de carga del servidor muy uniforme mediante los dos esquemas de nivel divulgados en el presente documento cuando se desee. Como se muestra, en una realizacion, basandose en los mensajes intercambiados, un servidor 1269 puede eliminarse del grupo 2 y agregarse como servidor 1270 al grupo 1.
Es habitual que un gran porcentaje del trafico en las redes, incluida Internet, sea atribuible a flujos de volumen relativamente un poco mayores. Estos flujos de mayor volumen a veces se denominan flujos de elefante. Un porcentaje relativamente pequeno del trafico es atribuible a un numero relativamente grande de flujos de menor volumen. Estos flujos de volumen mas pequenos a veces se denominan flujos de raton.
La figura 13 es un diagrama de bloques de una realizacion de un sistema 1300 de distribucion de paquetes de dos niveles que es operable para reenviar de manera eficiente paquetes de flujos de mayor volumen (por ejemplo, flujos de elefante) y flujos de menor volumen (por ejemplo, flujos de raton). Como se usa en el presente documento, los terminos flujos de mayor y menor volumen son terminos relativos y no absolutos (es decir, un flujo de mayor volumen es mas grande que un flujo de menor volumen). El sistema de distribucion de paquetes de dos niveles incluye un modulo 1303 de distribucion de paquetes de primer nivel. El modulo de distribucion de paquetes de primer nivel incluye un modulo 1371 de distribucion de paquetes de mayor volumen de primer nivel con estado que es operable para distribuir paquetes para flujos de volumen relativamente mayores ya identificados. Como se muestra en (1), supongase que se recibe un paquete entrante de un flujo de mayor volumen aun no identificado en el modulo de distribucion de paquetes de primer nivel. El modulo de distribucion de paquetes de mayor volumen de primer nivel con estado incluye una tabla 1373 de flujo de mayor volumen que mapea los ID de flujo para flujos de mayor volumen ya identificados (por ejemplo, los flujos de elefante) a los servidores correspondientes ya asignados para manejar los flujos de mayor volumen. La tabla de flujo de mayor volumen representa el estado que se mantiene para los flujos de mayor volumen. Dado que los flujos de mayor volumen son generalmente pocos en numero, la cantidad de estado que se necesita almacenar y utilizar no es excesiva. Un modulo 1372 de verificador de tabla de flujo de mayor volumen es operable para verificar la tabla de flujo de mayor volumen para un ID de flujo correspondiente al paquete entrante. Dado que el paquete proviene de un flujo de mayor volumen aun no identificado (por ejemplo, es el primero o uno de los paquetes iniciales del flujo de mayor volumen), aun no se ha determinado que el flujo sea un flujo de mayor volumen y el ID de flujo aun no se ha registrado en la tabla de flujo de mayor volumen.
Como se muestra en (2), al determinar que el ID de flujo del paquete entrante no se encuentra en la tabla de flujo de mayor volumen, se consulta un modulo 1304 de seleccion de grupo de mayor volumen no identificado/menor volumen estatico/sin estado. Este modulo 1304 que es operable para distribuir paquetes para flujos de menor volumen (por ejemplo, flujos de raton), como su nombre lo indica, asi como para flujos de mayor volumen (por ejemplo, flujos de elefante) que aun no se han identificado y registrado como tales en la tabla de flujo de mayor volumen. El modulo puede usar un enfoque estatico/sin estado similar a los descritos en otra parte del presente documento para seleccionar un grupo de servidores. Como se muestra en (3), el paquete puede ser multidifundido, difundido o de otra manera distribuido a un conjunto de modulos 1308-1, 1308-2 de distribucion de paquetes de segundo nivel distribuidos en el grupo seleccionado.
Un modulo 1308-1 de distribucion de paquetes de segundo nivel distribuido incluye un modulo 1374 de desviacion de gran volumen. Si el ID de flujo para el paquete estaba en la tabla de flujo de mayor volumen, y el paquete se distribuyo a un servidor seleccionado, entonces el modulo de desviacion de mayor volumen es operable para hacer que el paquete sea proporcionado al servidor 1312 seleccionado para su procesamiento. Sin embargo, como este no es el caso para el paquete actualmente considerado de un flujo de mayor volumen aun no identificado, como se
muestra en (4) se usa un modulo 1309 de seleccion de servidor de segundo nivel distribuido para seleccionar un servidor en el grupo seleccionado al que se distribuira el paquete. Se puede usar un enfoque similar o igual a los descritos en otro lugar en el presente documento para la seleccion del servidor. Como se muestra en (5), un modulo 1375 de deteccion de mayor volumen es operable para detectar flujos de mayor volumen. Se conocen varios enfoques en la tecnica para detectar flujos de elefante u otros flujos de mayor volumen. Los enfoques simples, por ejemplo, son usar el historial pasado, para designar ciertas direcciones IP de origen como flujos de mayor volumen, etc. Si el flujo se detecta como un flujo de raton, no es necesario tomar medidas adicionales. Sin embargo, supongase, para fines de ilustracion, que el modulo de deteccion de mayor volumen determina que el paquete es para un mayor flujo de volumen. Como se muestra en (6), se invoca un modulo 1376 de modificacion de la tabla de flujo de mayor volumen. Como se muestra en (7), el modulo de modificacion es operable para hacer que se modifique la tabla 1373 de flujo de mayor volumen. Por ejemplo, el modulo de modificacion puede indicar a la tabla de flujo de mayor volumen que agregue una entrada que asigne el ID de flujo para el paquete al servidor seleccionado.
Como se muestra en (8), cuando un paquete entrante subsiguiente del ahora identificado flujo de mayor volumen se recibe en el modulo de distribucion de paquetes de primer nivel, el modulo de verificador de la tabla de flujo de mayor volumen comprobara la tabla de flujo de mayor volumen. El ID de flujo para el ahora identificado flujo de mayor volumen se conserva ahora como estado en la tabla de flujo de mayor volumen junto con el servidor correspondiente seleccionado para procesar los paquetes del flujo de mayor volumen. Como se muestra en (9), el modulo de distribucion de paquetes de mayor volumen de primer nivel con estado puede unidifundir o distribuir el paquete al servidor seleccionado indicado en la tabla de flujo de mayor volumen. Por consiguiente, el modulo de distribucion de paquetes de primer nivel es operable para realizar tanto la distribucion de paquetes de flujo de unidifusion de estado a servidor para una porcion de los flujos (por ejemplo, flujos de mayor volumen), como una distribucion de paquetes de multidifusion de flujo a grupo estatico/sin estado para una porcion de los flujos (por ejemplo, flujos de menor volumen). En otras realizaciones, tal enfoque hibrido se puede usar para otros criterios ademas de flujos de mayor/menor volumen (por ejemplo, tipos particulares de trafico o conexiones).
El enfoque descrito anteriormente puede ofrecer ciertas ventajas potenciales. Por un lado, una gran parte del trafico (por ejemplo, la de los flujos de elefante) se puede detectar y unidifundir al servidor correspondiente en lugar de tener que multidifundir los paquetes a todos los servidores de un grupo. Dependiendo de la cantidad de servidores dentro del grupo, esto puede ayudar a reducir significativamente la cantidad de trafico de paquetes en la interconexion o el acoplamiento entre el primer y el segundo nivel. Ademas, algunas de las tareas de computacion relativamente mas intensivas que de otro modo se realizarian en el segundo nivel con estado pueden evitarse. Debido a que la tabla de flujo de mayor volumen puede almacenar el estado de los flujos que son relativamente pequenos, la cantidad de estado no es excesiva (por ejemplo, la tabla de flujo de mayor volumen puede ser relativamente pequena), por lo que la memoria para almacenar el estado y el tiempo y el procesamiento para acceder al estado tampoco son excesivos. Ademas, las tareas relativamente mas intensivas en computacion de detectar flujos de mayor volumen, asi como la distribucion de paquetes con estado, se han descargado al modulo de distribucion de paquetes de segundo nivel distribuido.
Habiendo descrito varias realizaciones, ahora se describiran algunas realizaciones alternativas adicionales. Se han descrito realizaciones con respecto a los sistemas de distribucion de paquetes de dos niveles. Sin embargo, otras realizaciones pueden tener tres o mas niveles. Por ejemplo, un primer nivel puede mapear sin estado flujos a grupos mas grandes, un segundo nivel puede mapear sin estados los flujos a subgrupos mas pequenos dentro de los grupos mas grandes, y un tercer nivel puede mapear sin estado los flujos a servidores individuales dentro de los subgrupos.
Como otro ejemplo, en algunas realizaciones, se puede proporcionar un tercer nivel de distribucion de paquetes para soportar el encadenamiento de servicios entre los servidores y/o el hardware en el que se implementan los servidores. En el encadenamiento de servicios, un paquete puede distribuirse a un primer servidor y/o primer hardware de implementacion del servidor usando el enfoque de distribucion de paquetes de dos niveles descrito anteriormente. Posteriormente, despues del procesamiento de paquetes en el primer servidor y/o primer hardware de implementacion del servidor, se puede usar un tercer nivel de distribucion de paquetes para distribuir el paquete a un segundo servidor y/o segundo hardware de implementacion del servidor del mismo elemento de red. El primer servidor y/o el primer hardware de implementacion del servidor, despues de procesar el paquete, pueden reenviar o distribuir el paquete al segundo servidor y/o al segundo hardware de implementacion del servidor del mismo o diferente grupo dentro del mismo elemento de red. Como un ejemplo simple, supongamos que un primer servidor implementado en una primera tarjeta de servicio pertenece al grupo 1, y un N®sim° servidor implementado en una N®sima tarjeta de servicio pertenece al grupo N, y un paquete ha de procesarse primero en el primer servidor, y luego posteriormente se enviara al servidor N para su posterior procesamiento. Tambien supongamos que el flujo es un flujo de tipo 1, que no es necesario. Despues de procesar el paquete en el primer servidor, un modulo de distribucion de paquetes de tercer nivel estatico/sin estado correspondiente al primer servidor y/o al primer hardware de implementacion del servidor puede seleccionar un grupo (en este caso, el grupo N). Se puede usar un enfoque estatico/sin estado similar al descrito anteriormente para el nivel 1. El paquete puede ser difundido o multidifundido al grupo N. Se puede realizar una segunda instancia de la distribucion de paquetes de segundo nivel distribuida en un modulo de distribucion de paquetes de segundo nivel distribuido correspondiente al servidor N®sim° para
seleccionar el servidor N®sim° para procesar el paquete para su procesamiento. El servidor N®sim° puede procesar el paquete. Si se desea, se puede realizar un encadenamiento adicional repitiendo generalmente el proceso descrito anteriormente.
Las realizaciones se han descrito con respecto a los servidores que proporcionan servicios a los clientes. Otras realizaciones son aplicables a la distribucion de paquetes entre un conjunto de clientes. Por ejemplo, un conjunto de clientes en uno o mas elementos de red (por ejemplo, cada uno en una hoja de servidor diferente) puede iniciar conexiones con nodos externos (por ejemplo, servidores). Los sistemas de distribucion de paquetes de dos niveles divulgados en el presente documento pueden usarse para reenviar paquetes desde los nodos externos (por ejemplo, servidores) a los clientes que mantienen la adherencia del flujo.
En la descripcion anterior, a los efectos de la explicacion, se han expuesto numerosos detalles especificos para proporcionar una comprension completa de las realizaciones de la invencion. Sin embargo, sera evidente para un experto en la tecnica que una o mas realizaciones adicionales pueden ponerse en practica sin algunos de estos detalles especificos. Las realizaciones particulares descritas no se proporcionan para limitar la invencion sino para ilustrarla. Los expertos en la tecnica reconoceran que la invencion puede ponerse en practica con modificaciones y alteraciones dentro del espiritu y alcance de las reivindicaciones adjuntas. Por lo tanto, la descripcion debe considerarse como ilustrativa en lugar de limitativa. El alcance de la invencion no debe determinarse por los ejemplos especificos proporcionados anteriormente, sino unicamente por las siguientes reivindicaciones.
En otros casos, se han mostrado circuitos, estructuras, dispositivos y operaciones bien conocidos en forma de diagrama de bloques o sin detalles para evitar que se entorpezca la comprension de la descripcion. Ademas, cuando se consideran apropiados, los numeros de referenda o las porciones terminales de los numeros de referenda se han repetido entre las figuras para indicar elementos correspondientes o analogos, que pueden tener opcionalmente caracteristicas similares.
Las referencias en la especificacion a "una realizacion", "una realizacion", "una realizacion de ejemplo", etc., indican que la realizacion descrita puede incluir una caracteristica, estructura o caracteristica particular, pero cada realizacion no necesariamente incluye la caracteristica, estructura, o caracteristica particular. Ademas, tales frases no se refieren necesariamente a la misma realizacion. Ademas, cuando una caracteristica, estructura o caracteristica particular se describe en relacion con una realizacion, se afirma que es del conocimiento de un experto en la tecnica afectar dicha caracteristica, estructura o caracteristica en relacion con otras realizaciones, ya sea descrita explicitamente o no.
En la descripcion y las reivindicaciones, se pueden usar los terminos "acoplado" y "conectado", junto con sus derivados. Debe entenderse que estos terminos no estan destinados a ser sinonimos entre si. "Acoplado" se usa para indicar que dos o mas elementos, que pueden estar o no en contacto fisico o electrico directo entre si, cooperan o interaction entre si. "Conectado" se usa para indicar el establecimiento de comunicacion entre dos o mas elementos que estan acoplados entre si.
Se han descrito varias operaciones y metodos. Algunos de los metodos se han descrito en una forma basica en los diagramas de flujo, pero las operaciones se pueden agregar y/o eliminar opcionalmente de los metodos. Ademas, mientras que los diagramas de flujo muestran un orden particular de las operaciones de acuerdo con realizaciones de ejemplo, debe entenderse que ese orden particular es de ejemplo. Realizaciones alternatives pueden realizar opcionalmente las operaciones en orden diferente, combinar ciertas operaciones, superponer ciertas operaciones, etc. Se pueden hacer muchas modificaciones y adaptaciones a los metodos y se contemplan.
Se pueden implementar diferentes realizaciones de la invencion usando diferentes combinaciones de software, firmware y/o hardware. Por lo tanto, las tecnicas mostradas en las figuras se pueden implementar usando el codigo y los datos almacenados y ejecutados en uno o mas dispositivos electronicos (por ejemplo, una estacion final, un elemento de red). Tales dispositivos electronicos almacenan y comunican (internamente y/o con otros dispositivos electronicos a traves de una red) el codigo y los datos usando medios legibles por ordenador, tales como medios de almacenamiento tangibles, no transitorios legibles por ordenador y comunicaciones transitorias no tangibles legibles por ordenador o medios de transmision. Algunos ejemplos representatives de medios de almacenamiento tangibles, no transitorios legibles por ordenador incluyen, entre otros, discos magneticos; discos opticos; memoria de acceso aleatorio (RAM), como RAM estatica (SRAM) y RAM dinamica (DRAM), memoria de solo lectura (ROM), como ROM programable (PROM), ROM borrable y programable (EPROM) y ROM borrable y programable electricamente (EEPROM), dispositivos de memoria flash; memoria de cambio de fase, y similares. El medio de almacenamiento tangible puede incluir uno o mas materiales fisicos solidos o tangibles, como, por ejemplo, un material semiconductor, un material de cambio de fase, un material magnetico, etc. Las realizaciones pertenecen a un articulo de fabricacion que incluye un medio de almacenamiento legible por ordenador no transitorio tangible que almacena una secuencia de instrucciones que, si son ejecutadas por una maquina (por ejemplo, un elemento de red, un conmutador, un enrutador, una estacion final, un anfitrion, un sistema informatico o un dispositivo electronico con al menos un microprocesador causa o resulta en que la maquina realice una o mas operaciones o metodos divulgados en el presente documento. Algunos ejemplos representatives de medios de transmision legibles por ordenador transitorios no tangibles incluyen, entre otros, senales electricas, opticas, acusticas u otras formas
propagadas, tales como ondas portadoras, senales infrarrojas y senales digitales. Ademas, dichos dispositivos electronicos suelen incluir un conjunto de uno o mas procesadores acoplados a uno o mas componentes, como uno o mas dispositivos de almacenamiento (medios de almacenamiento no transitorios legibles por maquina), dispositivos de entrada/salida del usuario (por ejemplo, un teclado, una pantalla tactil, y/o una pantalla), y conexiones de red. El acoplamiento del conjunto de procesadores y otros componentes se realiza normalmente a traves de uno o mas buses y puentes (tambien denominados controladores de bus). Por lo tanto, el dispositivo de almacenamiento de un dispositivo electronico dado generalmente almacena el codigo y/o los datos para su ejecucion en el conjunto de uno o mas procesadores de ese dispositivo electronico.
Claims (23)
1. - Un metodo, que se realiza en uno o mas elementos de red que estan en comunicacion entre los clientes que transmiten paquetes y servidores, para distribuir los paquetes entre los servidores que han de procesar los paquetes, al tiempo que proporciona la adherencia de los flujos de los paquetes a los servidores asignados a procesar los paquetes de los flujos, el metodo comprende los pasos de:
recibir un paquete de un flujo en un modulo (531) de distribucion de paquetes de primer nivel estatico; seleccionar estaticamente un grupo de servidores, de entre una pluralidad de grupos de servidores, para el paquete del flujo con el modulo de distribucion de paquetes de primer nivel estatico, en el que la seleccion estatica del grupo de servidores no implica el uso de un estado que asigna el paquete del flujo al grupo seleccionado de servidores (532);
distribuir el paquete del flujo a un sistema (533) de distribucion de paquetes de segundo nivel con estado distribuido; seleccionar con estado un servidor del grupo seleccionado de servidores que ha de procesar el paquete del flujo con el sistema de distribucion de paquetes de segundo nivel con estado distribuido al acceder al estado que asigna el procesamiento de paquetes del flujo al servidor seleccionado (534); y
distribuir el paquete del flujo al servidor seleccionado (535), caracterizado porque
el paso de distribucion del paquete del flujo al sistema de distribucion de paquetes de segundo nivel con estado distribuido comprende un paso de distribucion del paquete del flujo a cada uno de una pluralidad de modulos de distribucion de paquetes de segundo nivel con estado distribuidos que cada uno corresponde a un servidor diferente del grupo seleccionado de servidores.
2. - El metodo de la reivindicacion 1, en el que el sistema de distribucion de paquetes de segundo nivel con estado distribuido se implementa en un hardware que es distinto del hardware usado para implementar el modulo de distribucion de paquetes de primer nivel estatico.
3. - El metodo de la reivindicacion 1, en el que el sistema de distribucion de paquetes de segundo nivel con estado distribuido se implementa en el hardware que incluye el hardware usado para implementar el grupo seleccionado de servidores.
4. - El metodo de la reivindicacion 1, en el que cada uno de los modulos de distribucion de paquetes de segundo nivel con estado distribuidos realiza los pasos de:
determinar que el paquete no es para un nuevo flujo al examinar un encabezado del paquete;
determinar si un identificador de flujo correspondiente al flujo para el paquete se incluye en una tabla de flujo del modulo de distribucion de paquetes de segundo nivel con estado distribuido que realiza la determinacion, en el que la tabla de flujo asigna identificadores de flujo al servidor que corresponde al modulo de distribucion de paquetes de segundo nivel con estado distribuido que esta haciendo la determinacion; y
uno de: (1) hacer que el paquete sea descartado si el identificador de flujo no esta incluido en la tabla de flujo; y (2) hacer que el paquete sea aceptado para su procesamiento por el servidor correspondiente si el identificador de flujo esta incluido en la tabla de flujo.
5. - El metodo de la reivindicacion 4, en el que cada uno de los modulos de distribucion de paquetes de segundo nivel con estado distribuido realiza los pasos de:
recibir un segundo paquete;
determinar que el segundo paquete es para un nuevo flujo al examinar un encabezado del segundo paquete; seleccionar un servidor para procesar el segundo paquete con un algoritmo de distribucion de paquetes, en el que el algoritmo de distribucion de paquetes es operable para seleccionar el servidor de manera consistente con los algoritmos de distribucion de paquetes de otros modulos de distribucion de paquetes de segundo nivel con estado distribuidos para el grupo seleccionado;
determinar si el servidor seleccionado para procesar el segundo paquete corresponde al modulo de distribucion de paquetes de segundo nivel con estado distribuido que selecciono el servidor; y
uno de (1) hacer que el paquete sea descartado si el servidor seleccionado no corresponde al modulo de distribucion de paquetes de segundo nivel con estado distribuido que selecciono el servidor; y (2) registrar un nuevo identificador
de flujo en una tabla de flujo del modulo de distribucion de paquetes que selecciono el servidor y hacer que el servidor seleccionado acepte el paquete para procesarlo si el servidor seleccionado se corresponde con el modulo de distribucion de paquetes de segundo nivel con estado distribuido que selecciono el servidor.
6. - El metodo de la reivindicacion 1, en el que cada uno de los modulos de distribucion de paquetes de segundo nivel con estado distribuidos realiza los pasos de:
determinar si un identificador de flujo correspondiente al flujo para el paquete se incluye en una tabla de flujo del modulo de distribucion de paquetes de segundo nivel con estado distribuido, en el que la tabla de flujo asigna identificadores de flujo al servidor que corresponde al modulo de distribucion de paquetes de segundo nivel con estado distribuido; y
uno de: (1) hacer que el paquete sea aceptado para su procesamiento por el servidor correspondiente si el identificador de flujo esta incluido en la tabla de flujo; y (2) hacer que el paquete sea descartado si el identificador de flujo no esta incluido en la tabla de flujo y el identificador de flujo esta incluido en una tabla de flujo existente en otros del modulo de distribucion de paquetes de segundo nivel con estado distribuido, en el que la tabla de flujo existente en otros enumera los identificadores de flujo asignados a los servidores del grupo que no sea el servidor correspondiente al modulo de distribucion de paquetes de segundo nivel con estado distribuido.
7. - El metodo de la reivindicacion 1, en el que el sistema de distribucion de paquetes de segundo nivel con estado distribuido incluye una pluralidad de modulos de distribucion de paquetes de segundo nivel con estado distribuidos que corresponden cada uno a un servidor diferente del grupo seleccionado de servidores, y en el que un modulo de distribucion de paquetes de segundo nivel con estado distribuido realiza los pasos de:
enviar un mensaje a otros modulos de distribucion de paquetes de segundo nivel con estado distribuidos que corresponden a los servidores del grupo seleccionado, en el que el mensaje indica un estado y una carga de un servidor correspondiente al modulo de distribucion de paquetes de segundo nivel con estado distribuido;
recibir mensajes de los otros modulos de distribucion de paquetes de segundo nivel con estado distribuidos, en el que los mensajes recibidos indican los estados y las cargas de los servidores correspondientes a los otros modulos de distribucion de paquetes de segundo nivel con estado distribuidos; y
ajustar un algoritmo de distribucion de paquetes usado por el modulo de distribucion de paquetes de segundo nivel con estado distribuido basandose en los estados y las cargas indicadas en los mensajes recibidos.
8. - El metodo de la reivindicacion 1, en el que el sistema de distribucion de paquetes de segundo nivel con estado distribuido incluye al menos un modulo de distribucion de paquetes de segundo nivel con estado distribuido correspondiente al grupo seleccionado de servidores y al menos un modulo de distribucion de paquetes de segundo nivel con estado distribuido correspondiente a un segundo grupo de servidores, y en el que el metodo comprende ademas los pasos de:
recibir un mensaje en al menos un modulo de distribucion de paquetes de segundo nivel con estado distribuido correspondiente al grupo seleccionado de servidores de al menos un modulo de distribucion de paquetes de segundo nivel con estado distribuido correspondiente a un segundo grupo de servidores, en el que el mensaje recibido indica al menos una carga asociada con el segundo grupo de servidores; y
reasignar un servidor del segundo grupo al grupo seleccionado basandose al menos en parte en al menos una carga indicada en el mensaje recibido y al menos una carga asociada con el grupo seleccionado de servidores.
9. - El metodo de la reivindicacion 1, en el que el metodo se realiza en un unico elemento de red que tiene una pluralidad de tarjetas de linea y una pluralidad de tarjetas seleccionadas de las tarjetas de control, las tarjetas de servicio y las tarjetas de recursos, en el que hardware usado para implementar el modulo de distribucion de paquetes de primer nivel estatico comprende el hardware de las tarjetas de linea, y en el que el hardware a traves del cual se distribuye el sistema de distribucion de paquetes de segundo nivel con estado distribuido comprende el hardware de las tarjetas seleccionadas de las tarjetas de control, las tarjetas de servicio y las tarjetas de recursos.
10. - El metodo de la reivindicacion 1, que comprende ademas los pasos de:
recibir un segundo paquete de un segundo flujo en el modulo de distribucion de paquetes de primer nivel estatico, en el que el segundo flujo es un flujo de mayor volumen;
seleccionar con estado un servidor para el segundo paquete del segundo flujo con el modulo de distribucion de paquetes de primer nivel estatico, en el que seleccionar con estado el servidor para el segundo paquete incluye el uso de un estado que asigne flujos de mayor volumen a los servidores; y
distribuir el segundo paquete del segundo flujo al servidor seleccionado.
11. - El metodo de la reivindicacion 1, en el que cada uno de la pluralidad de grupos de servidores forma una red de area local virtual (VLAN) diferente.
12. - El metodo de la reivindicacion 1, en el que seleccionar con estado el servidor del grupo seleccionado de servidores que ha de procesar el paquete del flujo comprende seleccionar el servidor para equilibrar las cargas en los servidores del grupo seleccionado, en el que la seleccion estatica del grupo de servidores comprende realizar una funcion hash con informacion del paquete para seleccionar estaticamente el grupo de servidores, en el que cada uno de los servidores del grupo seleccionado comprende uno de una hoja de servidor diferente, una tarjeta de control diferente, una tarjeta de servicio diferente, un procesador diferente y un nucleo de procesador diferente.
13. - El metodo de la reivindicacion 1, que agrega ademas un servidor al grupo seleccionado de servidores, en el que agregar el servidor al grupo seleccionado no altera la adherencia de los flujos existentes a los servidores del grupo seleccionado.
14. - El metodo de la reivindicacion 1, que comprende ademas, despues de procesar el paquete con el servidor seleccionado:
seleccionar estaticamente un segundo grupo de servidores de entre la pluralidad de grupos de servidores; y distribuir el paquete al segundo grupo de servidores.
15. - Un sistema (100) de distribucion de paquetes multinivel, el sistema de distribucion de paquetes multinivel configurado para ser implementado en uno o mas elementos de la red en una red entre clientes que transmiten paquetes y servidores, de distribuir los paquetes entre los servidores (112), al mismo tiempo que proporciona una adherencia de los flujos de los paquetes a los servidores, el sistema de distribucion de paquetes multinivel comprendiendo:
un modulo (103) de distribucion de paquetes de primer nivel estatico configurado para recibir un paquete de un flujo, el modulo (103) de distribucion de paquetes de primer nivel estatico operable para seleccionar estaticamente un grupo de servidores, de entre la pluralidad de grupos de servidores, para el paquete del flujo, en el que la seleccion estatica del grupo de servidores no implica el uso de un estado que asigna el paquete del flujo al grupo seleccionado de servidores; y
un sistema (107) de distribucion de paquetes de segundo nivel con estado distribuido en comunicacion con el modulo (103) de distribucion de paquetes de primer nivel estatico, en el que el sistema (107) de distribucion de paquetes de segundo nivel con estado distribuido incluye una pluralidad de modulos (108) de distribucion de paquetes de segundo nivel con estado distribuidos, el sistema de distribucion de paquetes de segundo nivel con estado distribuido operable para seleccionar con estado un servidor del grupo seleccionado de servidores que ha de procesar el paquete del flujo, en el que seleccionar con estado el servidor implica el uso de un estado que asigna el flujo al servidor seleccionado, el sistema de distribucion de paquetes de segundo nivel con estado distribuido operable para distribuir el paquete al servidor seleccionado, caracterizado porque
la pluralidad de modulos (108) de distribucion de paquetes de segundo nivel con estado distribuidos comprende una pluralidad de modulos (108) de distribucion de paquetes de segundo nivel con estado distribuidos que corresponden cada uno a un servidor diferente del grupo seleccionado de servidores.
16. - El sistema de distribucion de paquetes multinivel de la reivindicacion 15, en el que el sistema de distribucion de paquetes de segundo nivel con estado distribuido se implementa en un hardware que es distinto del hardware usado para implementar el modulo de distribucion de paquetes de primer nivel estatico.
17. - El sistema de distribucion de paquetes multinivel de la reivindicacion 15, en el que el sistema de distribucion de paquetes de segundo nivel con estado distribuido se implementa en un hardware que incluye el hardware usado para implementar el grupo seleccionado de servidores.
18. - El sistema de distribucion de paquetes multinivel de la reivindicacion 15, en el que el sistema de distribucion de paquetes multinivel esta configurado para implementarse en un unico elemento de red que tiene una pluralidad de tarjetas de linea y una pluralidad de tarjetas seleccionadas de las tarjetas de control, las tarjetas de servicio y las tarjetas de recursos, en el que el hardware usado para implementar el modulo de distribucion de paquetes de primer nivel estatico comprende el hardware de las tarjetas de linea, y en el que el sistema de distribucion de paquetes de segundo nivel con estado distribuido se distribuye por hardware de las tarjetas seleccionadas de las tarjetas de control, las tarjetas de servicio y las tarjetas de recursos.
19. - El sistema de distribucion de paquetes multinivel de la reivindicacion 15, en el que un modulo de distribucion de paquetes de segundo nivel con estado distribuido correspondiente a un servidor comprende:
un modulo de examen de paquetes operable para determinar que el paquete no es para un nuevo flujo al examinar un encabezado del paquete;
una tabla de flujo que asigna identificadores de flujo al servidor correspondiente al modulo de distribucion de paquetes de segundo nivel con estado distribuido;
un modulo de verificador de tabla de flujo operable para determinar si un identificador de flujo correspondiente al flujo para el paquete esta incluido en la tabla de flujo; y
un modulo de determinacion operable a uno de: (1) hacer que el paquete sea descartado si el identificador de flujo no esta incluido en la tabla de flujo; y (2) hacer que el paquete sea aceptado para su procesamiento por el servidor correspondiente si el identificador de flujo esta incluido en la tabla de flujo.
20. - El sistema de distribucion de paquetes multinivel de la reivindicacion 19, en el que el modulo de examen de paquetes es operable para recibir un segundo paquete y operable para determinar que el segundo paquete es para un nuevo flujo al examinar un encabezado del segundo paquete, y que comprende ademas:
un algoritmo de distribucion de paquetes operable para seleccionar un servidor para procesar el segundo paquete, en el que el algoritmo de distribucion de paquetes es operable para seleccionar el servidor de manera consistente con los algoritmos de distribucion de paquetes de otros modulos de distribucion de paquetes de segundo nivel con estado distribuidos para el grupo seleccionado;
un modulo de determinacion operable para determinar si el servidor seleccionado para procesar el segundo paquete es el mismo que el servidor correspondiente al modulo de distribucion de paquetes de segundo nivel con estado distribuido; y
un modulo de determinacion operable a uno de: (1) hacer que el paquete sea descartado si el servidor seleccionado no es el mismo que el servidor correspondiente al modulo de distribucion de paquetes de segundo nivel con estado distribuido; y (2) registrar un nuevo identificador de flujo en una tabla de flujo del modulo de distribucion de paquetes y hacer que el servidor seleccionado acepte el paquete para su procesamiento si el servidor seleccionado es el mismo que el servidor correspondiente al modulo de distribucion de paquetes de segundo nivel con estado distribuido.
21. - El sistema de distribucion de paquetes multinivel de la reivindicacion 15, en el que un modulo de distribucion de paquetes de segundo nivel con estado distribuido correspondiente a un servidor comprende:
una tabla de flujo que asigna identificadores de flujo al servidor que corresponde al modulo de distribucion de paquetes de segundo nivel con estado distribuido;
un modulo de verificador de tabla de flujo operable para determinar si un identificador de flujo correspondiente al flujo para el paquete esta incluido en la tabla de flujo; y
una tabla de flujo existente en otros, en el que la tabla de flujo existente en otros incluye identificadores de flujo asignados a los servidores del grupo seleccionado que no sea el servidor correspondiente al modulo de distribucion de paquetes de segundo nivel con estado distribuido; y
un modulo de determinacion operable a uno de: (1) hacer que el paquete sea aceptado para su procesamiento por el servidor correspondiente si el identificador de flujo esta incluido en la tabla de flujo; y (2) hacer que el paquete sea descartado si el identificador de flujo no esta incluido en la tabla de flujo y el identificador de flujo esta incluido en la tabla de flujo existente en otros.
22. - El sistema de distribucion de paquetes multinivel de la reivindicacion 15, en el que el sistema de distribucion de paquetes de segundo nivel con estado distribuido incluye una pluralidad de modulos de distribucion de paquetes de segundo nivel con estado distribuidos que cada uno corresponde a un servidor diferente del grupo seleccionado de servidores, y en el que un modulo de distribucion de paquetes de segundo nivel con estado distribuido correspondiente a un servidor comprende:
un modulo de envio de mensajes operable para enviar un mensaje a otros modulos de distribucion de paquetes de segundo nivel de estado distribuidos del grupo seleccionado, en el que el mensaje indica un estado y una carga del servidor correspondiente;
un modulo de recepcion de mensajes operable para recibir mensajes de los otros modulos de distribucion de paquetes de segundo nivel con estado distribuidos, en el que los mensajes recibidos indican estados y cargas de los servidores correspondientes; y
un modulo de ajuste de algoritmo de distribucion de paquetes operable para ajustar un algoritmo de distribucion de paquetes usado por el modulo de distribucion de paquetes de segundo nivel con estado distribuido basandose en los estados y las cargas indicados en los mensajes recibidos.
23.- El sistema de distribucion de paquetes multinivel de la reivindicacion 15, en el que el sistema de distribucion de paquetes de segundo nivel con estado distribuido incluye al menos un modulo de distribucion de paquetes de segundo nivel con estado distribuido correspondiente al grupo seleccionado de servidores y al menos un modulo de distribucion de paquetes de segundo nivel con estado distribuido correspondiente a un segundo grupo de servidores, y en el que el al menos un modulo de distribucion de paquetes de segundo nivel con estado distribuido correspondiente al grupo seleccionado de servidores comprende:
un modulo de recepcion de mensajes operable para recibir un mensaje en al menos dicho modulo de distribucion de paquetes de segundo nivel con estado distribuido correspondiente al grupo seleccionado de servidores de al menos un modulo de distribucion de paquetes de segundo nivel con estado distribuido correspondiente a un segundo grupo de servidores, en el que el mensaje recibido indica al menos una carga asociada con el segundo grupo de servidores; y
un modulo de reasignacion de grupo de servidores operable para reasignar un servidor del segundo grupo al grupo seleccionado basandose al menos en parte en al menos dicha carga indicada en el mensaje recibido y al menos una carga asociada con el grupo seleccionado de servidores.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US13/464,608 US8825867B2 (en) | 2012-05-04 | 2012-05-04 | Two level packet distribution with stateless first level packet distribution to a group of servers and stateful second level packet distribution to a server within the group |
| PCT/IB2013/053454 WO2013164777A1 (en) | 2012-05-04 | 2013-05-02 | Two level packet distribution with stateless first level packet distribution to a group of servers and stateful second level packet distribution to a server within the group |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2711368T3 true ES2711368T3 (es) | 2019-05-03 |
Family
ID=48670015
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES13730325T Active ES2711368T3 (es) | 2012-05-04 | 2013-05-02 | Distribución de paquetes de dos niveles con distribución de paquete de primer nivel sin estado a un grupo de servidores y distribución de paquetes de segundo nivel con estado a un servidor dentro del grupo |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US8825867B2 (es) |
| EP (1) | EP2845372B1 (es) |
| CN (1) | CN104272708B (es) |
| ES (1) | ES2711368T3 (es) |
| WO (1) | WO2013164777A1 (es) |
Families Citing this family (60)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9461933B2 (en) * | 2011-03-01 | 2016-10-04 | Nec Corporation | Virtual server system, management server device, and system managing method |
| US9426067B2 (en) * | 2012-06-12 | 2016-08-23 | International Business Machines Corporation | Integrated switch for dynamic orchestration of traffic |
| TWI476581B (zh) * | 2012-12-28 | 2015-03-11 | Ibm | 主動式/使用中資訊設備叢集中提供高可用性的方法、裝置與電腦程式產品 |
| US20140237118A1 (en) * | 2013-02-19 | 2014-08-21 | Broadcom Corporation | Application Aware Elephant Flow Management |
| US10069903B2 (en) | 2013-04-16 | 2018-09-04 | Amazon Technologies, Inc. | Distributed load balancer |
| US9225638B2 (en) | 2013-05-09 | 2015-12-29 | Vmware, Inc. | Method and system for service switching using service tags |
| US9621642B2 (en) | 2013-06-17 | 2017-04-11 | Telefonaktiebolaget Lm Ericsson (Publ) | Methods of forwarding data packets using transient tables and related load balancers |
| US9137165B2 (en) | 2013-06-17 | 2015-09-15 | Telefonaktiebolaget L M Ericsson (Publ) | Methods of load balancing using primary and stand-by addresses and related load balancers and servers |
| US9118571B2 (en) | 2013-07-08 | 2015-08-25 | Telefonaktiebolaget L M Ericsson (Publ) | Methods of operating load balancing switches and controllers using matching patterns with unrestricted characters |
| US9118567B2 (en) * | 2013-07-15 | 2015-08-25 | Telefonaktiebolaget L M Ericsson (Publ) | Removing lead filter from serial multiple-stage filter used to detect large flows in order to purge flows for prolonged operation |
| US9729510B2 (en) * | 2013-07-24 | 2017-08-08 | Nokia Solutions And Networks Gmbh & Co. Kg | Network consolidation by means of virtualization |
| US9307018B2 (en) * | 2013-09-11 | 2016-04-05 | International Business Machines Corporation | Workload deployment with real-time consideration of global network congestion |
| US20150189009A1 (en) | 2013-12-30 | 2015-07-02 | Alcatel-Lucent Canada Inc. | Distributed multi-level stateless load balancing |
| CN104980361B (zh) * | 2014-04-01 | 2018-09-21 | 华为技术有限公司 | 一种负载均衡方法、装置及系统 |
| US9485183B2 (en) | 2014-04-25 | 2016-11-01 | Telefonaktiebolaget Lm Ericsson (Publ) | System and method for efectuating packet distribution among servers in a network |
| US9667494B2 (en) * | 2014-06-30 | 2017-05-30 | International Business Machines Corporation | Abstraction layer and distribution scope for a logical switch router architecture |
| US9455908B2 (en) | 2014-07-07 | 2016-09-27 | Cisco Technology, Inc. | Bi-directional flow stickiness in a network environment |
| EP2993866A1 (en) * | 2014-09-08 | 2016-03-09 | Alcatel Lucent | Method for distribution of service requests |
| US9456030B2 (en) | 2014-09-15 | 2016-09-27 | Telefonaktiebolaget Lm Ericsson (Publ) | Methods of operating load balancing switches and controllers using modified flow entries |
| US10003641B2 (en) * | 2014-09-16 | 2018-06-19 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and system of session-aware load balancing |
| US9571570B1 (en) | 2014-09-24 | 2017-02-14 | Juniper Networks, Inc. | Weighted rendezvous hashing |
| US10225137B2 (en) | 2014-09-30 | 2019-03-05 | Nicira, Inc. | Service node selection by an inline service switch |
| US9755898B2 (en) | 2014-09-30 | 2017-09-05 | Nicira, Inc. | Elastically managing a service node group |
| US10257095B2 (en) | 2014-09-30 | 2019-04-09 | Nicira, Inc. | Dynamically adjusting load balancing |
| US10063479B2 (en) * | 2014-10-06 | 2018-08-28 | Barefoot Networks, Inc. | Fast adjusting load balancer |
| US9529531B2 (en) | 2014-10-06 | 2016-12-27 | Barefoot Networks, Inc. | Proxy hash table |
| US9497123B2 (en) * | 2014-12-18 | 2016-11-15 | Telefonaktiebolaget L M Ericsson (Publ) | Method and system for load balancing in a software-defined networking (SDN) system upon server reconfiguration |
| US10067967B1 (en) | 2015-01-27 | 2018-09-04 | Barefoot Networks, Inc. | Hash table storing reduced search key |
| US9503363B2 (en) | 2015-03-16 | 2016-11-22 | Cisco Technology, Inc. | Segment routing label switch paths in network functions virtualization communications networks |
| US10397313B2 (en) * | 2015-03-18 | 2019-08-27 | Nokia Of America Corporation | Data stream load balancing utilizing multiple sets of servers |
| US10609091B2 (en) | 2015-04-03 | 2020-03-31 | Nicira, Inc. | Method, apparatus, and system for implementing a content switch |
| US20160308766A1 (en) * | 2015-04-16 | 2016-10-20 | Ixia | Unified Mapping Tables With Source/Destination Labels For Network Packet Forwarding Systems |
| US9979629B2 (en) | 2015-08-21 | 2018-05-22 | Cisco Technology, Inc. | Distribution of segment identifiers in network functions virtualization and software defined network environments |
| CN108886825B (zh) | 2015-09-23 | 2022-02-18 | 谷歌有限责任公司 | 分布式软件定义无线分组核心系统 |
| CN106301921B (zh) * | 2016-08-16 | 2019-05-14 | 清华大学 | 基于隧道的大象流量传输调度方法及系统 |
| US10476945B2 (en) * | 2017-02-01 | 2019-11-12 | Juniper Networks, Inc. | Consistent flow assignment in load balancing |
| US10158573B1 (en) | 2017-05-01 | 2018-12-18 | Barefoot Networks, Inc. | Forwarding element with a data plane load balancer |
| US10797966B2 (en) | 2017-10-29 | 2020-10-06 | Nicira, Inc. | Service operation chaining |
| US10616321B2 (en) | 2017-12-22 | 2020-04-07 | At&T Intellectual Property I, L.P. | Distributed stateful load balancer |
| US10797910B2 (en) | 2018-01-26 | 2020-10-06 | Nicira, Inc. | Specifying and utilizing paths through a network |
| US10805192B2 (en) | 2018-03-27 | 2020-10-13 | Nicira, Inc. | Detecting failure of layer 2 service using broadcast messages |
| US10873636B2 (en) | 2018-07-09 | 2020-12-22 | Cisco Technology, Inc. | Session management in a forwarding plane |
| US11595250B2 (en) | 2018-09-02 | 2023-02-28 | Vmware, Inc. | Service insertion at logical network gateway |
| CN109743262B (zh) * | 2019-01-30 | 2021-07-27 | 电子科技大学 | 一种基于流表虚拟化的mice flow聚合方法 |
| US11245750B2 (en) * | 2019-02-16 | 2022-02-08 | International Business Machines Corporation | File server load balancing |
| US11119804B2 (en) | 2019-02-22 | 2021-09-14 | Vmware, Inc. | Segregated service and forwarding planes |
| US11133999B1 (en) * | 2019-10-04 | 2021-09-28 | Rapid7, Inc. | Network sensor deployment for deep packet inspection |
| US11283717B2 (en) | 2019-10-30 | 2022-03-22 | Vmware, Inc. | Distributed fault tolerant service chain |
| US11140218B2 (en) | 2019-10-30 | 2021-10-05 | Vmware, Inc. | Distributed service chain across multiple clouds |
| US11223494B2 (en) | 2020-01-13 | 2022-01-11 | Vmware, Inc. | Service insertion for multicast traffic at boundary |
| US11659061B2 (en) | 2020-01-20 | 2023-05-23 | Vmware, Inc. | Method of adjusting service function chains to improve network performance |
| US11438257B2 (en) | 2020-04-06 | 2022-09-06 | Vmware, Inc. | Generating forward and reverse direction connection-tracking records for service paths at a network edge |
| CN113709044B (zh) * | 2020-05-20 | 2023-05-23 | 阿里巴巴集团控股有限公司 | 数据转发方法、装置、电子设备和存储介质 |
| US11477273B2 (en) * | 2020-09-11 | 2022-10-18 | Salesforce.Com, Inc. | Feedback control based load balancing for containerized workloads |
| EP4218215B1 (en) * | 2020-10-22 | 2025-10-29 | Huawei Technologies Co., Ltd. | Network layer support for 5g edge computing sticky services |
| US11734043B2 (en) | 2020-12-15 | 2023-08-22 | Vmware, Inc. | Providing stateful services in a scalable manner for machines executing on host computers |
| US11611625B2 (en) | 2020-12-15 | 2023-03-21 | Vmware, Inc. | Providing stateful services in a scalable manner for machines executing on host computers |
| US12294521B1 (en) | 2022-09-30 | 2025-05-06 | Amazon Technologies, Inc. | Low-latency paths for data transfers between endpoints which utilize intermediaries for connectivity establishment |
| US12413523B1 (en) | 2022-09-30 | 2025-09-09 | Amazon Technologies, Inc. | Low-latency stateful load-balanced connections using stateless load balancers |
| US20240411608A1 (en) * | 2023-06-12 | 2024-12-12 | Sap Se | Proactive adaptation in handling service requests in cloud computing systems |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7653700B1 (en) * | 2000-11-16 | 2010-01-26 | Microsoft Corporation | System and method for performing client-centric load balancing of multiple globally-dispersed servers |
| US6944678B2 (en) * | 2001-06-18 | 2005-09-13 | Transtech Networks Usa, Inc. | Content-aware application switch and methods thereof |
| JP4160506B2 (ja) * | 2001-09-28 | 2008-10-01 | レヴェル 3 シーディーエヌ インターナショナル インコーポレーテッド. | 構成可能な適応型広域トラフィック制御および管理 |
| US7860964B2 (en) * | 2001-09-28 | 2010-12-28 | Level 3 Communications, Llc | Policy-based content delivery network selection |
| US7321926B1 (en) | 2002-02-11 | 2008-01-22 | Extreme Networks | Method of and system for allocating resources to resource requests |
| US7908605B1 (en) * | 2005-01-28 | 2011-03-15 | Hewlett-Packard Development Company, L.P. | Hierarchal control system for controlling the allocation of computer resources |
| US7693050B2 (en) | 2005-04-14 | 2010-04-06 | Microsoft Corporation | Stateless, affinity-preserving load balancing |
| US7647424B2 (en) * | 2005-06-15 | 2010-01-12 | Hostway Corporation | Multi-level redirection system |
| US8881167B2 (en) * | 2008-04-28 | 2014-11-04 | International Business Machines Corporation | Load balancing in network based telephony applications |
| US8549146B2 (en) | 2010-01-28 | 2013-10-01 | Telefonaktiebolaget L M Ericsson (Publ) | Stateless forwarding of load balanced packets |
| US8874744B2 (en) * | 2010-02-03 | 2014-10-28 | Vmware, Inc. | System and method for automatically optimizing capacity between server clusters |
| CN102340525A (zh) * | 2010-07-14 | 2012-02-01 | 美得康科技股份有限公司 | 医疗数据备援系统与备援及负载平衡方法 |
-
2012
- 2012-05-04 US US13/464,608 patent/US8825867B2/en active Active
-
2013
- 2013-05-02 CN CN201380023427.7A patent/CN104272708B/zh active Active
- 2013-05-02 ES ES13730325T patent/ES2711368T3/es active Active
- 2013-05-02 WO PCT/IB2013/053454 patent/WO2013164777A1/en not_active Ceased
- 2013-05-02 EP EP13730325.1A patent/EP2845372B1/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| EP2845372A1 (en) | 2015-03-11 |
| CN104272708A (zh) | 2015-01-07 |
| US20130297798A1 (en) | 2013-11-07 |
| EP2845372B1 (en) | 2018-10-10 |
| US8825867B2 (en) | 2014-09-02 |
| WO2013164777A1 (en) | 2013-11-07 |
| CN104272708B (zh) | 2018-07-17 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2711368T3 (es) | Distribución de paquetes de dos niveles con distribución de paquete de primer nivel sin estado a un grupo de servidores y distribución de paquetes de segundo nivel con estado a un servidor dentro del grupo | |
| US12095855B2 (en) | Distributed resilient load-balancing for multipath transport protocols | |
| EP2495927B1 (en) | Concept for providing information on a data packet association and for forwarding a data packet | |
| US9762494B1 (en) | Flow distribution table for packet flow load balancing | |
| US8549146B2 (en) | Stateless forwarding of load balanced packets | |
| CN111512611B (zh) | Mptcp感知的负载均衡器的设计方法和使用该设计的负载均衡器 | |
| CN103155500B (zh) | 用于网络业务流的无状态负载平衡的方法和系统 | |
| JP5964239B2 (ja) | 分散ルーティングアーキテクチャ | |
| US9742659B2 (en) | Multipath bandwidth usage | |
| CN111935007A (zh) | 用于网络的压缩路由报头信息 | |
| US9712649B2 (en) | CCN fragmentation gateway | |
| CN113395212B (zh) | 网络装置及其操作方法和非暂时性计算机可读介质 | |
| US20190260670A1 (en) | System and method of flow aware resilient ecmp | |
| US10425327B2 (en) | System and method for routing in software defined networks using a flow header | |
| CN108718278B (zh) | 一种报文传输方法和装置 | |
| JP2013514744A (ja) | 分散ルーティングアーキテクチャ | |
| CN114503531B (zh) | 分布式端点的管理 | |
| CN102088448B (zh) | Ip报文的发送方法及边界隧道路由器 | |
| WO2023005745A1 (zh) | 报文转发方法、装置及系统、计算机可读存储介质 | |
| CN117099356A (zh) | 实例-仿射业务调度 | |
| WO2020048622A1 (en) | A method, apparatus & computer program | |
| Wang et al. | Comparison of Router Processing Full-Scale RPKI Data and IPv6-Only RPKI Data through Experimental Evaluation | |
| CN116366593A (zh) | 报文转发方法及相关装置 | |
| Woo et al. | The Extended BGP4+ Algorithm for Multihoming | |
| Rothenberg | Future Internet: New Network Architectures and Technologies |