ES2713078T3 - Sistema y método para implementar y gestionar redes virtuales - Google Patents
Sistema y método para implementar y gestionar redes virtuales Download PDFInfo
- Publication number
- ES2713078T3 ES2713078T3 ES12819833T ES12819833T ES2713078T3 ES 2713078 T3 ES2713078 T3 ES 2713078T3 ES 12819833 T ES12819833 T ES 12819833T ES 12819833 T ES12819833 T ES 12819833T ES 2713078 T3 ES2713078 T3 ES 2713078T3
- Authority
- ES
- Spain
- Prior art keywords
- packet
- virtual
- network
- port
- protocol header
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/50—Testing arrangements
- H04L43/55—Testing of service level quality, e.g. simulating service usage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/40—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. SDN or NFV entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4604—LAN interconnection over a backbone network, e.g. Internet, Frame Relay
- H04L12/462—LAN interconnection over a bridge based backbone
- H04L12/4625—Single bridge functionality, e.g. connection of two networks over a single bridge
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/145—Network analysis or design involving simulating, designing, planning or modelling of a network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/70—Virtual switches
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Quality & Reliability (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Un sistema informático que comprende: una pluralidad de nodos (54, 73, 80, 210, 221, 222) interconectados mediante una red subyacente (53, 79, 202), en el que cada nodo incluye una o más interfaces de red (55, 74, 75, 81), estando conectada la una o más interfaces de cada nodo a la red subyacente, una pluralidad de dispositivos virtuales (211, 212, 213, 214) que se simulan en al menos uno de la pluralidad de nodos, teniendo cada dispositivo virtual una pluralidad de puertos virtuales, en el que cada puerto virtual corresponde a uno de un puerto orientado hacia el exterior o un puerto orientado hacia el interior, correspondiendo cada puerto orientado hacia el exterior a una de las interfaces de red de los nodos de la red subyacente, teniendo cada puerto orientado hacia el interior un enlace virtual con otro puerto orientado hacia el interior de los dispositivos de red virtuales y una base de datos compartida (61, 86) que almacena una pluralidad de reglas de flujo y una topología de red virtual que incluye una configuración de los puertos virtuales y los dispositivos virtuales, incluyendo la configuración, para cada uno de los puertos virtuales, una identificación del puerto virtual como una de un puerto orientado hacia el exterior o un puerto orientado hacia el interior, siendo la base de datos compartida accesible por la pluralidad de nodos, estando caracterizado el sistema informático por que comprende además un motor de decisión (78, 84, 165) operable para: simular un recorrido de un paquete de red de la topología de red virtual desde un puerto orientado hacia el exterior de entrada de un primer dispositivo virtual hasta un puerto orientado hacia el exterior de salida de un último dispositivo virtual, en el que el puerto orientado hacia el exterior de salida del último dispositivo virtual corresponde a una interfaz de red en la que el paquete de red se emitirá desde la red subyacente, determinar un patrón de cabecera de paquete identificando cada campo de la cabecera de protocolo del paquete que se lee durante la simulación del recorrido, en el que el patrón de cabecera de protocolo de paquete incluye un comodín para cualquier campo de la cabecera de protocolo del paquete que no se lee durante la simulación del recorrido, determinar una modificación de cabecera de protocolo que va a aplicarse al paquete de red basándose en una configuración de cada dispositivo virtual recorrido por el paquete durante la simulación del recorrido, comunicar el patrón de cabecera de protocolo de paquete y la modificación de cabecera de protocolo determinada a la base de datos compartida, almacenar el patrón de cabecera de protocolo de paquete y la modificación de cabecera de protocolo determinada como una regla de flujo en la base de datos compartida; tras recibir un paquete posterior, seleccionar una regla de flujo desde la base de datos compartida haciendo coincidir una cabecera del paquete posterior con el patrón de cabecera de protocolo de paquete almacenado, y aplicar la modificación de cabecera de protocolo determinada de la regla de flujo seleccionada a paquetes posteriores que coinciden con el patrón de cabecera de protocolo de paquete de manera que el paquete se entrega al segundo nodo de la red subyacente y se emite desde la segunda interfaz de red, estando determinada la simulación del recorrido de la topología de red virtual en parte consultando la base de datos compartida usando un campo de la cabecera de protocolo del paquete de red.
Description
DESCRIPCION
Sistema y metodo para implementar y gestionar redes virtuales
Antecedentes y sumario
La presente divulgacion se refiere a la conexion en red, y mas particularmente sistemas y metodos que implementan y gestionan redes virtuales.
La aparicion de informatica basada en la nube ha creado nuevas demandas de proveedores de servicio. A los proveedores de servicio les gustana dotar a cada cliente de una red virtual, con la capacidad de anadir anfitriones y de cambiar la topologfa desacoplada de la red ffsica. La virtualizacion de la red permite que los proveedores de servicio creen topologfas de red configurables por el cliente que pueden cambiarse alterando enrutadores virtuales y conmutadores virtuales sin ningun cambio de hardware. Los enrutadores virtuales permiten tambien la segregacion de datos de clientes por seguridad y precios basados en uso. Un hardware dedicado puede proporcionar algunas de estas caractensticas pero puede ser caro. Permanece la necesidad de una herramienta que permita que una red virtual se superponga sobre una red existente y que permita cambiar esa topologfa de la red virtual independientemente de la red subyacente.
El documento US 7.991.859 B1 representa la tecnica anterior mas proxima y tecnicas para proporcionar redes informaticas virtuales gestionadas cuya topologfa de red logica configurada puede tener uno o mas dispositivos de conexion en redes virtuales, tales como mediante un servicio de red configurable accesible por red, con funcionalidad de conexion en red correspondiente proporcionada para comunicaciones entre multiples nodos informaticos de una red informatica virtual emulando la funcionalidad que se proporcionana por los dispositivos de conexion en red si estuvieran presentes ffsicamente.
El documento EP 2139178 A1 se refiere a un metodo de determinar una trayectoria de ruta en una red superpuesta entre homologos, y un nodo de red y un producto de programa informatico para ejecutar dicho metodo. La red superpuesta entre homologos comprende una pluralidad de nodos. Se identifica un hardware ffsico en el que funciona un primer nodo de dicha pluralidad de nodos.
El objeto de la invencion se soluciona mediante las reivindicaciones independientes. En las reivindicaciones dependientes se mencionan realizaciones adicionales.
En el presente documento se dan a conocer un sistema y un metodo que facilitan el enrutamiento de paquetes usando una red virtual superpuesta en una red ffsica. En diversas realizaciones, la presente divulgacion preve la interconexion flexible de elementos de red en multiples capas del modelo OSI, incluyendo, L2 (Capa-2, es decir Capa de enlace), L3 (Capa-3, es decir Capa de red) y L4 (Capa-4, es decir Capa de transporte). Los elementos de red pueden estar interconectados con conmutadores L2 virtuales y enrutadores L3. Los paquetes de las redes L2 virtuales pueden transportarse por la red L3 existente usando tunelizacion, sin requerir ningun cambio a la red L3. Pueden usarse diversos metodos de tunelizacion, tal como GRE, Ethernet sobre IP, VXLan, MPLS sobre lP o CAPWAP. Los paquetes de protocolo de Internet (IP) enrutados por el enrutador L3 virtual pueden transportarse por la red L3 existente, sin requerir ningun cambio a la red L3 existente.
En una realizacion, para los elementos a los que se conectan, los conmutadores L2 virtuales y enrutadores L3 virtuales se tratan de conmutadores L2 ffsicos y enrutadores L3 ffsicos, aunque no pueden implementarse usando elementos de red L2 y L3 ffsicos. Puede haber un numero arbitrario de elementos de red virtuales (conmutadores o enrutadores), conectados virtualmente cada uno a un numero arbitrario de elementos de red. En una configuracion, cada conmutador L2 virtual esta conectado a un enrutador L3 virtual, que puede conectarse a un numero arbitrario de otros enrutadores L3.
Los conmutadores L2 virtuales y los enrutadores L3 virtuales del sistema pueden conectarse a un gran numero de elementos de red, independientemente de la separacion geografica. El sistema puede conectar elementos que son o bien ffsicos o bien virtuales, conectando, por ejemplo, maquinas virtuales emuladas en ordenadores servidores a enrutadores ffsicos que estan conectados a Internet.
Se proporcionan un metodo y un sistema para crear y gestionar redes virtuales que comprenden una pluralidad de enrutadores y conmutadores virtuales. El metodo y el sistema tambien pueden proporcionar servicios de cortafuegos L3/L4, servicios de traduccion de direccion de red de origen y/o destino, y equilibrio de carga tal como se describe en mas detalle a continuacion. En el presente documento se da a conocer un metodo para enrutar un paquete desde un primer nodo hasta un segundo nodo que comprende recibir un paquete en un primer nodo de una red subyacente; acceder a una tabla de enrutamiento virtual para determinar un siguiente salto para el paquete en una topologfa de red virtual, donde el siguiente salto es o bien un puerto (logico) orientado hacia el interior o bien un puerto (materializado) orientado hacia el exterior, y continuar accediendo a tablas de enrutamiento virtuales posteriores en serie hasta que se determine que el siguiente salto sea un puerto orientado hacia el exterior en un segundo nodo de la red; y enviar el paquete por la red subyacente al puerto orientado hacia el exterior del segundo nodo. La etapa de acceder a una tabla de enrutamiento virtual para determinar un siguiente salto para el paquete tambien puede incluir ejecutar una busqueda en cada tabla de enrutamiento virtual, donde la tabla de busqueda contiene los datos del
siguiente salto para el paquete. En una realizacion, el primer nodo de la red esta configurado para acceder a una red externa, y el segundo nodo de la red esta configurado para hospedar una maquina virtual. El metodo tambien puede incluir aplicar una modificacion de preenrutamiento y/o una modificacion de posenrutamiento al paquete para al menos un salto en la red virtual. En una realizacion, el siguiente salto para un paquete se determina a partir de la direccion de origen y/o la direccion de destino. Ademas, los procesos de preenrutamiento y posenrutamiento pueden utilizar la direccion de origen, el puerto de origen, la direccion de destino y/o el puerto de destino para determinar la traduccion o la modificacion deseada del paquete. El metodo tambien puede comprender almacenar al menos una tabla de enrutamiento virtual en un estado distribuido en una pluralidad de nodos en la red subyacente. En diversas realizaciones, la red subyacente puede incluir una red Ethernet, una red de IP privada, una red de IP publica u otras redes capaces de proporcionar conectividad entre los nodos.
Tambien se da a conocer un metodo para enrutar paquetes que comprende las etapas de recibir un paquete de un flujo en un primer nodo; acceder a una tabla de flujo y determinar que el paquete no coincide con una regla de flujo existente; comunicar el paquete a un motor de decision; acceder a una topologfa de red virtual almacenada en una base de datos compartida accesible por una pluralidad de nodos; crear una regla de flujo para el paquete; y comunicar la regla de flujo a la tabla de flujo. La etapa de crear una regla de flujo puede comprender ademas determinar una secuencia de enrutamiento para el paquete en la red basandose en una topologfa virtual establecida por un titular de red.
Tambien se da a conocer un metodo de seguimiento de conexiones con estado para borrar una entrada de flujo que comprende las etapas de recibir un paquete FIN con un numero de secuencia en un nodo perimetral con un conmutador configurable de flujo; identificar una regla de flujo correspondiente al paquete en el conmutador configurable de flujo; identificar la regla de flujo para su borrado y comunicar la regla de flujo identificada a un estado distribuido en una base de datos compartida; y comunicar el paquete basandose en la regla de flujo correspondiente. En realizaciones, el sistema proporciona medios para simular una maquina de estado de conexion TCP y guardar su estado en la base de datos compartida.
En realizaciones, el flujo puede ser un flujo entrante o un flujo saliente de una conexion TCP. El metodo puede incluir ademas borrar el flujo identificado tras recibir un paquete de ACK correspondiente al paquete FIN. En una realizacion, el metodo comprende tambien identificar un flujo de sentido opuesto almacenado en el estado distribuido que corresponde al flujo identificado; identificar el flujo de sentido opuesto para su borrado; y borrar el flujo identificado y el flujo de sentido opuesto tras recibir un paquete de ACK correspondiente al paquete FIN.
En otra realizacion, un metodo para realizar la traduccion de direccion de red de destino comprende las etapas de recibir un primer paquete en un primer nodo, teniendo el primer paquete una direccion de destino; crear una primera regla de flujo correspondiente al primer paquete, donde la primera regla de flujo comprende una agregacion de las modificaciones hechas a un paquete que recorre una pluralidad de dispositivos virtuales en la topologfa de red virtual; aplicar la primera regla de flujo al primer paquete; recibir un segundo paquete en un segundo nodo en respuesta al primer paquete, teniendo el segundo paquete una direccion de origen; crear una segunda regla de flujo correspondiente al segundo paquete; y acceder el primer flujo desde un estado distribuido y aplicar la traduccion de direccion de red de destino a la direccion de origen del segundo paquete. El metodo tambien puede comprender esperar hasta que la primera regla de flujo se almacene en el estado distribuido antes de reenviar el primer paquete de manera que el segundo paquete no se recibe hasta que se almacena la primera regla de flujo en el estado distribuido. En una realizacion, el primer paquete y el segundo paquete corresponden a una conexion TCP. En otra realizacion, el metodo comprende ademas aplicar un algoritmo de equilibrio de carga para equilibrar cargas en los recursos de red subyacente.
Breve descripcion de los dibujos
La figura 1 ilustra una realizacion de un metodo para invalidar un flujo;
la figura 2 ilustra una realizacion de un metodo para aprendizaje de MAC;
la figura 3 ilustra una realizacion de un metodo para desaprendizaje de MAC;
la figura 4 ilustra una realizacion de un metodo para seguimiento de conexion;
la figura 5 ilustra una vista ffsica de un sistema para la gestion de VPN;
la figura 6 ilustra una vista ffsica de otro sistema para la gestion de VPN.
La figura 7 ilustra un ejemplo de un ordenador servidor usado por el sistema para enrutar paquetes hasta y desde una red general tal como Internet hasta un tejido IP de un proveedor de servicios.
La figura 8 ilustra una red ffsica de ejemplo.
La figura 9 ilustra una red virtual de ejemplo que puede superponerse en la red ffsica de la figura 8.
La figura 10 ilustra un proceso que se ejecuta en un conector de borde para enrutar paquetes en una topologfa
virtual compuesta de enrutadores virtuales.
La figura 11 ilustra un proceso que se ejecuta en un conector de borde para conmutar y enrutar paquetes en una topologfa virtual compuesta de enrutadores virtuales y conmutadores virtuales.
La figura 12 es una continuacion del proceso de la figura 11.
La figura 13 ilustra una realizacion de una red virtual.
La figura 14 ilustra la red virtual de la figura 13 superpuesta en una red ffsica.
Descripcion detallada
Haciendo referencia generalmente a las figuras 1 a 14, las realizaciones del sistema y el metodo dados a conocer se refieren a sistemas informaticos que implementan y gestionan redes virtuales y pueden proporcionar soluciones de red definidas por software. El sistema y el metodo dados a conocer proporcionan una capa de abstraccion de software para virtualizar una red para mejorar la efectividad de sistemas informaticos en la nube al tiempo que se reduce la complejidad de redes ffsicas y los costes de mantenimiento asociados.
En diversas realizaciones, se da a conocer un metodo informatico que incluye recibir un paquete que llega a una primera interfaz de red de un primer nodo de una red subyacente. La primera interfaz de red puede implementarse en hardware o software en el primer nodo. Un motor de decision puede invocarse para determinar como se gestionara el paquete. En un aspecto, el paquete y una identificacion de la interfaz de red en la que el paquete llego a la red se comunican al motor de decision para procesarse. El motor de decision puede simular como recorrera el paquete la topologfa de red virtual que incluye cada uno de una pluralidad de dispositivos de red virtuales encontrados por el paquete. Ademas de simular como se pasa un paquete desde un dispositivo al siguiente a traves de la red virtual, el motor de decision tambien puede simular como afecta a cada uno de los dispositivos virtuales el paquete, tal como modificando las cabeceras de protocolo de paquete. Basandose en los resultados de simulacion, el sistema puede procesar el paquete aplicando cada una de las modificaciones determinadas o una agregacion de las modificaciones de modo que el paquete puede emitirse desde una interfaz de red en uno de los nodos de la red, donde la interfaz de red espedfica en la que emitir el paquete se determino durante la simulacion por el motor de decision.
En cada etapa a traves de la topologfa de red virtual, el motor de decision determina como puede gestionarse el paquete por dispositivos sucesivos. En un ejemplo, el motor de decision puede determinar que un paquete debe soltarse o ignorarse. Soltar un paquete puede producirse cuando se asocia un paquete dado con una comunicacion o flujo que el sistema ya no esta procesando. En otros ejemplos, un paquete puede soltarse puesto que un dispositivo virtual carece de instrucciones suficientes para gestionar un paquete del tipo recibido. Alternativamente, un dispositivo puede ser incapaz de enrutar de manera satisfactoria un paquete dado al destino especificado. Puede proporcionarse un mensaje de error u otra respuesta para alertar al remitente del paquete de que el paquete no llego a su destino.
Para muchos paquetes, el motor de decision determinara que el paquete debe emitirse desde un puerto virtual correspondiente a una segunda interfaz de red. La segunda interfaz de red puede estar en el primer nodo o en un segundo o un nodo diferente de la red subyacente dependiendo del destino del paquete y el mapeo de puerto a anfitrion virtual. Cuando el paquete va a entregarse a una segunda interfaz de red en un segundo nodo, el motor de decision determina como va a procesarse el paquete y luego se entrega el paquete por la red subyacente al segundo nodo que va a emitirse por la segunda interfaz de red.
En multiples realizaciones, las cabeceras de protocolo de los paquetes pueden modificarse antes de la entrega a la segunda interfaz de red. La modificacion de las cabeceras de protocolo puede proporcionar la traduccion de direccion de red, tunelizacion, VPN u otras caractensticas tal como se comenta mas a fondo a continuacion.
En una realizacion, el metodo incluye mantener un mapa de identificadores de nodo para direcciones de nodo para nodos en la red subyacente. Pueden usarse identificadores de nodo para distinguir nodos individuales para fines de enrutar paquetes en la red subyacente. Para entregar un paquete desde un primer nodo hasta un segundo nodo, el paquete puede reenviarse como la carga util de un paquete de protocolo de tunelizacion (tal como Ethernet+IP+GRE). En realizaciones, el paquete de protocolo de tunelizacion tiene una clave de tunel que codifica un identificador global de una segunda interfaz de red. Un identificador global puede ser unico dentro de la red de manera que cada interfaz de red puede identificarse de manera unica. En cambio, un identificador local puede usarse dentro de un nodo, o dentro de un subconjunto de la red para identificar de manera unica un puerto o una interfaz dentro de un subconjunto de la red. Cuando el paquete de protocolo de tunelizacion se recibe en el segundo nodo, la carga util que contiene el paquete original se extrae junto con la clave de tunel. Entonces, la clave de tunel puede decodificarse para determinar el segundo identificador de interfaz de red virtual y el paquete emitido desde la segunda interfaz de red. De esta manera, el sistema puede utilizar el motor de decision para determinar como ha de gestionarse un paquete cuando recorre el sistema y tambien para transportar de manera eficiente el paquete una vez que se hace la determinacion.
En otras realizaciones, el motor de decision determina que debe emitirse un paquete desde un conjunto de interfaces de red. Puede ser necesario emitir desde un conjunto de interfaces de red en aplicaciones de multidifusion o difusion. Las interfaces de red desde las que debe emitirse el paquete pueden ser locales para un solo nodo de la red, o pueden dispersarse por dos o mas nodos. En cualquier caso, el sistema determino que el paquete debe emitirse desde un conjunto de interfaces de red correspondiente a un identificador de conjunto de interfaz. Entonces el paquete se procesa entregando el paquete a cada interfaz de red en el conjunto que es local para el primer nodo. El paquete tambien se reenvfa, con modificaciones, desde el primer nodo hasta el segundo nodo, a lo largo de un tunel. El paquete puede reenviarse como la carga util de un paquete de protocolo de tunelizacion usando una clave de tunel que codifica el identificador de conjunto de interfaz. Cuando se recibe el paquete de tunelizacion en el segundo nodo, la clave de tunel puede decodificarse para determinar el identificador de conjunto de interfaz, y el paquete emitido en interfaces de red cualesquiera incluidas en ese conjunto que son locales para el segundo nodo. El conjunto de interfaces de red asociado con unos identificadores de conjunto de interfaz dados pueden almacenarse en la base de datos compartida accesible por cada nodo del sistema. Por tanto si un nodo recibe un identificador de conjunto de interfaz desconocido, el nodo puede acceder a la base de datos compartida para determinar que interfaces de red estan incluidas en el conjunto identificado. Ademas, un nodo puede almacenar o copiar en memoria cache el mapeo de interfaces de red a identificadores de conjunto de interfaz localmente en el nodo. Sin embargo, cuando el identificador de conjunto de interfaz cambia, los datos copiados en memoria cache localmente se invalidan y el nodo puede acceder a la base de datos compartida para recuperar el mapeo actual o actualizado de interfaces a conjuntos de interfaz. En realizaciones, una interfaz de red virtual puede pertenecer a mas de un conjunto de interfaz.
En la aplicacion en la que la red subyacente soporta multidifusion (tal como multidifusion de IP), cada identificador de conjunto de interfaz puede mapearse a una direccion de multidifusion, y cada nodo de la red subyacente puede mantener una suscripcion de multidifusion para cada uno de los identificadores de conjunto de interfaz a los que pertenece al menos una de las interfaces de red virtual mapeadas a ese nodo. Entonces, pueden multidifundirse paquetes como la carga util de un paquete de protocolo de tunelizacion a un segundo o mas nodos. Entonces, cada nodo emite el paquete desde cualquier interfaz de red correspondiente a las interfaces en el conjunto que son locales a ese nodo. En diversas realizaciones, los identificadores de conjunto de interfaz estan mapeados de manera unica a direcciones de multidifusion.
Si la red subyacente no soporta la multidifusion, el motor de decision determina el conjunto de nodos de red subyacente que tienen interfaces de red locales que pertenecen al conjunto de interfaces de red al que va a enviarse el paquete. Entonces, el paquete se reenvfa desde el primer nodo hasta cada nodo en el conjunto de nodos de red subyacente en un paquete de protocolo de tunelizacion tal como se describio anteriormente. Entonces, cada nodo emitio el paquete a las interfaces de red correspondientes asociadas con el conjunto identificado.
El motor de decision determina como gestionar un paquete dado basandose en una simulacion de ese paquete que recorre la topologfa de red virtual. En muchas aplicaciones, estan asociados multiples paquetes como un flujo y cada paquete en el flujo, donde va a procesarse de la misma manera cada paquete en el flujo, por ejemplo, todos los paquetes de una direccion de una conexion TCP. En realizaciones, tras recibir el primer paquete de flujo, el sistema invoca el motor de decision para determinar como va a gestionarse el paquete de ese flujo. Entonces, el motor de decision puede almacenar las acciones o reglas para gestionar paquetes posteriores de ese flujo. Las acciones o reglas almacenadas pueden almacenarse en la base de datos compartida de manera que las reglas estan disponibles para todos los nodos del sistema para gestionar paquetes de un flujo dado. Alternativamente, las reglas pueden almacenarse localmente.
En realizaciones, la salida del motor de decision incluye un patron de cabecera de protocolo de paquete que puede usarse para hacer coincidir otros paquetes para los que la salida del motor de decision sera la misma que para el primer paquete. Dicho de otro modo, el patron de cabecera de protocolo de paquete puede usarse para identificar paquetes que se trataran de manera identica aplicando las acciones o reglas determinadas para el primer paquete. En realizaciones, la salida del motor de decision es el resultado de la simulacion realizada para determinar como ha de procesarse el paquete. Se almacenan el patron de cabecera de protocolo de paquete y el resultado de la simulacion para el primer paquete. Tras recibir un segundo paquete, las cabeceras del segundo paquete se comparan con el patron de cabecera de protocolo de paquete al tiempo que se ignoran campos que cambian en una base por paquete tal como numero de secuencia TCP. Si el segundo paquete coincide con el patron, entonces el segundo paquete se considera que forma parte del mismo flujo y el resultado almacenado anteriormente de la simulacion para el primer paquete se recupera y se aplica al segundo paquete. El resultado almacenado de la simulacion puede recuperarse desde la base de datos compartida, una memoria cache local o cualquier otra memoria adecuada para contener las reglas que van a aplicarse a paquetes del flujo. En realizaciones, el motor de decision puede aplicar al flujo las reglas a los paquetes segundos y posteriores en un flujo. En otras realizaciones, sin embargo, la simulacion asociada con el primer paquete para determinar las reglas para el flujo, y la aplicacion de esas reglas a paquetes pueden dividirse para mejorar la velocidad o eficiencia del sistema.
La copia en memoria cache o el almacenamiento de resultados de simulacion espedficos puede determinarse por el sistema. Por ejemplo, el motor de decision puede sugerir que resultados de simulacion deben copiarse en memoria cache. En este contexto, una sugerencia puede incluir una recomendacion de que se almacena un resultado espedfico sujeto a otra consideracion tal como eficiencia o capacidad de almacenamiento disponible. En un ejemplo,
el sistema puede elegir no almacenar los resultados de simulacion para un flujo usado con poca frecuencia. Tambien puede informarse al motor de decision sobre que desenlaces o resultados de simulacion estan copiados en memoria cache realmente o que resultados se han invalidado o expulsado de los resultados copiados en memoria cache. Un resultado copiado en memoria cache puede invalidarse por una variedad de motivos. En un ejemplo, un desenlace puede expulsarse para liberar espacio de almacenamiento para flujos nuevos o usados con mas frecuencia. El rendimiento del sistema puede mermar a medida que aumenta el numero de reglas de flujo almacenadas, por tanto en algunas realizaciones, el numero de reglas de flujo almacenadas puede limitarse para aumentar la eficiencia y la velocidad de funcionamiento.
Con el tiempo, puede cambiar la configuracion de la topologfa de red virtual y/o los dispositivos virtuales. Esto puede provocar que resultados de simulacion realizados anteriormente ya no reflejen las reglas apropiadas que van a aplicarse a paquetes posteriores para uno o mas flujos establecidos anteriormente. Por tanto, el sistema puede comunicar entre la base de datos compartida, el motor de decision y otros componentes para detectar y responder a cambios en los resultados de simulacion copiados en memoria cache. En un ejemplo, el motor de decision puede pedir en cualquier momento que se elimine una entrada copiada en memoria cache espedfica basandose en un cambio en la configuracion tal como se refleja en el estado global almacenado en la base de datos compartida. Cuando se elimina una entrada copiada en memoria cache, tras la recepcion del siguiente paquete correspondiente al flujo eliminado, el motor de decision se invocara y la simulacion se recalculara para determinar como han de procesarse paquetes de ese flujo. Entonces, el resultado de simulacion revisado puede almacenarse y aplicarse a paquetes posteriores que coinciden con el patron de cabecera de protocolo de paquete asociado con el flujo.
El sistema puede determinar el patron de cabecera de protocolo de paquete para un flujo dado durante la simulacion de un paquete. En realizaciones, un paquete incluye una cabecera de protocolo que tiene una pluralidad de campos y el patron se determina identificando cada uno de los campos que se leen durante la simulacion por el motor de decision. De esta manera, se identifica cada campo lefdo a medida que se recorre la topologfa de red virtual, incluyendo un campo lefdo por la pluralidad de dispositivos de red virtuales. Cada campo que se lee puede incluirse como parte del patron. En cambio, los campos que no se leen y por tanto no afectan a la gestion del paquete pueden designarse como comodines.
En todavfa otra realizacion, se recibe un primer paquete en un segundo nodo de la red subyacente y el segundo nodo genera un patron de cabecera de protocolo que puede usarse para identificar otros paquetes que tienen la misma clave de tunel que el primer paquete. Entonces, el segundo nodo usa el patron de cabecera de protocolo para identificar un segundo paquete que coincide con el patron de cabecera de protocolo de paquete y emite los segundos (y posteriores) paquetes desde las mismas interfaces de red locales desde las que se emitio el primer paquete. De esta manera, el segundo nodo simplifica el proceso de determinar en que puertos emitir el segundo paquete y mejora la eficiencia del sistema. En realizaciones, un conmutador programable de flujo en el nodo puede depender del patron de cabecera de protocolo en combinacion con una clave de tunel, o puede depender solo de la clave de tunel para identificar paquetes posteriores que se trataran de manera similar a un primer paquete.
En otra realizacion, al tiempo que se determina la simulacion para un primer paquete, el motor de decision puede pedir que un sistema de base genere uno o mas paquetes adicionales desde una interfaz de red o conjunto de interfaces de red. En realizaciones, pueden requerirse paquetes adicionales para determinar el comportamiento de puertos de la red. Al pedir paquetes adicionales, el motor de decision puede obtener informacion adicional en partes de la red para ayudar en el proceso de simulacion. Cada uno de los paquetes adicionales puede procesarse sustancialmente tal como se describe en el presente documento, o puede dotarse de un tratamiento diferente segun sea necesario para que el motor de decision desarrolle la informacion necesaria sobre la red.
En otra realizacion, un metodo informatico incluye mantener una base de datos compartida accesible desde una red subyacente que tiene una pluralidad de nodos. La base de datos compartida almacena una topologfa de red virtual y configuraciones de dispositivo virtual para una pluralidad de dispositivos de red virtuales. Un paquete de red llega a una primera interfaz de red de un primer nodo de la red subyacente. El metodo incluye ademas determinar una accion para procesar el paquete de red basandose en una simulacion del recorrido del paquete de la topologfa de red virtual incluyendo la pluralidad de dispositivos de red virtuales. En realizaciones, la accion es una regla de flujo operable en un conmutador programable de flujo operable para procesar paquetes recibidos en el nodo de la red subyacente.
La simulacion del recorrido del paquete de la topologfa de red virtual puede realizarse por un motor de decision, tal como el motor de decision comentado anteriormente. El motor de decision puede ser operable en cada uno de la pluralidad de nodos para realizar la simulacion para paquetes recibidos en cada nodo. Alternativamente, el motor de decision puede operar en un nodo independiente en comunicacion con cada uno de los nodos que recibe paquetes para los que se requiere una simulacion.
La topologfa de red virtual incluye una pluralidad de puertos virtuales correspondientes a la pluralidad de dispositivos de red virtuales. Cada dispositivo de red virtual tiene uno o mas puertos virtuales. Unos puertos virtuales pueden ser o bien un puerto orientado hacia el exterior asociado con una interfaz de red de un nodo de la red subyacente, o un puerto orientado hacia el interior asociado con un enlace virtual entre dispositivos de red virtuales. Un enlace virtual representa la conexion logica de un puerto virtual a otro puerto virtual y tambien puede denominarse cable virtual.
La base de datos compartida almacena la topolog^a de red virtual y configuraciones de dispositivo virtual que incluyen la configuracion de los puertos virtuales. En realizaciones, la base de datos compartida puede incluir una o mas de una configuracion para cada uno de la pluralidad de puertos virtuales que incluyen una identificacion del puerto virtual como una de un puerto orientado hacia el exterior o un puerto orientado hacia el interior, una configuracion para cada uno de la pluralidad de dispositivos de red virtuales asociados con la pluralidad de puertos virtuales, un mapeo de identificadores de interfaz de red a identificadores de los nodos de red subyacente, un mapeo bidireccional de puertos exteriores a interfaces de red de nodos de red subyacente correspondientes, y un mapeo de cada puerto orientado hacia el interior de cada dispositivo al puerto orientado hacia el interior homologo de otro dispositivo conectado mediante un enlace virtual. Tal como se usa en el presente documento, un puerto orientado hacia el interior homologo es el puerto virtual conectado a un puerto virtual dado por una conexion logica. Un puerto orientado hacia el interior tiene un solo igual, por tanto cada puerto virtual interior es el igual del puerto virtual interior al que esta conectado.
La configuracion de puertos virtuales puede configurarse dependiendo de la configuracion deseada del sistema, y un usuario de sistema puede definir los puertos virtuales. Un paquete que entra en/sale de un puerto virtual exterior esta entrando a/saliendo de la red virtual. En cambio, un paquete que entra en/sale de un puerto virtual interior permanece en la red. De esta manera, un puerto virtual puede caracterizarse como exterior o interior dependiendo de si el paquete entra a/sale de la red virtual cuando pasa a traves del puerto.
En una realizacion, el motor de decision opera localmente en un primer nodo y se comunica con la base de datos compartida que contiene la topologfa de red virtual y las configuraciones de dispositivo. La base de datos compartida puede contener una copia maestra o autoritativa de la topologfa e informacion de configuracion de dispositivo. Para mejorar la eficiencia, al menos una parte de la topologfa de red virtual y la informacion de configuracion de dispositivo virtual pueden copiarse en memoria cache localmente en nodos individuales. Los datos copiados en memoria cache pueden actualizarse cuando se modifica la base de datos compartida. En una realizacion, solo aquellas partes de la topologfa o configuracion de dispositivo usadas por un nodo dado se copian en memoria cache en el nodo. Tras la simulacion de una llegada de un paquete a un dispositivo virtual, el sistema puede cargar la configuracion del dispositivo virtual desde la base de datos compartida hasta el nodo que realiza la simulacion y puede copiar en memoria cache la configuracion de dispositivo para un futuro uso en el nodo.
Realizaciones del metodo informatico incluyen tambien mapear la primera interfaz de red del primer nodo a un puerto virtual correspondiente y recuperar la configuracion del puerto virtual y el dispositivo asociado con el puerto virtual desde la base de datos compartida. La accion para procesar el paquete de red se determina entonces basandose en una simulacion del dispositivo asociado con el puerto virtual. La accion determinada puede incluir uno o mas de modificar un estado interno de un dispositivo de red, soltar el paquete, modificar las cabeceras de protocolo del paquete, emitir el paquete desde uno o mas puertos virtuales de un dispositivo de red, y emitir un paquete diferente desde uno o mas puertos virtuales del dispositivo de red. En realizaciones, emitir el paquete desde uno o mas puertos virtuales del dispositivo de red puede incluir emitir el paquete desde un puerto orientado hacia el exterior o un puerto orientado hacia el interior.
Al determinar como procesar un paquete, el motor de decision puede recorrer multiples dispositivos virtuales conectados por puertos virtuales orientados hacia el interior. En una realizacion, el motor de decision determina un puerto orientado hacia el interior homologo para un segundo puerto virtual y recupera la configuracion del puerto orientado hacia el interior homologo y el dispositivo de red en el que se ubica el puerto orientado hacia el interior homologo. Entonces, el motor de decision puede simular el funcionamiento del dispositivo de red asociado con el puerto orientado hacia el interior homologo para determinar como ha de procesarse el paquete. De esta manera, el motor de decision puede simular una ruta a traves de la topologfa de red virtual incluyendo cualquier numero de dispositivos de red virtuales con el fin de determinar como ha de procesarse un paquete o flujo dado.
Si la accion determinada es emitir un paquete desde uno o mas puertos virtuales orientados hacia el exterior, el sistema mapea cada puerto virtual orientado hacia el exterior a una interfaz de red correspondiente y un nodo de la red subyacente y luego emitir el paquete desde cada una de las interfaces de red correspondientes.
Los procesos de simulacion descritos en el presente documento se repiten hasta que el motor de decision ha simulado el ultimo dispositivo virtual recorrido por el paquete. El motor de decision proporciona una accion o resultado de simulacion que va a aplicarse al paquete y a paquetes posteriores que coinciden con un patron de cabecera de protocolo de paquete. La accion o resultado de simulacion incluye una modificacion agregada del paquete para modificar la cabecera de protocolo del paquete para que coincida la configuracion de las cabeceras ya que el paquete se emitira por el ultimo dispositivo virtual, basandose en todas las modificaciones aplicadas a lo largo del recorrido de la topologfa de red virtual. De esta manera, el motor de decision determina a traves de la simulacion la modificacion necesaria al paquete de modo que el paquete puede modificarse y enrutarse de manera eficiente a traves de la red.
Tal como se comento anteriormente, el paquete incluye una cabecera de protocolo que tiene una pluralidad de campos. El sistema determina un patron de cabecera de protocolo de paquete usado para identificar paquetes para los que una regla de flujo o accion determinada se aplicara basandose en el resultado de simulacion. En una realizacion, el sistema determina el patron de cabecera de protocolo de paquete identificando cada uno del campo
de la cabecera de protocolo que se leyo durante la simulacion de la topolog^a de red virtual y los dispositivos de red virtuales. De esta manera, los campos de la cabecera de protocolo de los que se depende para atravesar la red se identifican de modo que la regla de flujo determinada puede aplicarse a paquetes que deben procesarse de la misma manera. Aquellos campos de la cabecera de protocolo de los que no se depende pueden tratarse como comodines o, de otro modo, excluirse de la consideracion en el proceso de hacer coincidir la cabecera de protocolo de paquetes posteriores con el patron determinado. El patron de cabecera de protocolo de paquete y el resultado de simulacion correspondiente pueden almacenarse en el nodo. En una realizacion, el patron y el resultado de simulacion correspondiente se almacenan como regla de flujo para su uso en un conmutador configurable de flujo configurado para procesar paquetes posteriores que llegan al nodo. Cuando un paquete llega a un nodo para el que no se ha creado una regla de flujo, el sistema puede invocar el motor de decision para realizar una simulacion para el paquete.
El resultado de simulacion producido por el motor de decision es dependiente de la topologfa de red virtual y las configuraciones de dispositivo virtual, al menos para aquellos dispositivos virtuales recorridos durante la simulacion. Cuando la topologfa o configuraciones de dispositivo cambian, el resultado de simulacion determinado anteriormente y las acciones correspondientes que van a aplicarse a un paquete pueden no ser ya correctos. Para dar cabida a tales cambios, el sistema esta configurado para invalidar un patron de cabecera de protocolo de paquete almacenado y el resultado de simulacion almacenado correspondiente tras un cambio en la topologfa de red virtual o configuraciones de dispositivo virtual. En una realizacion, el sistema invalida todos los patrones almacenados y los resultados de simulacion tras detectar un cambio. En otras realizaciones, solo se invalidan aquellos resultados almacenados que dependen del dispositivo virtual cambiado. En un ejemplo, el conjunto recorrido de dispositivos virtuales recorridos durante la simulacion se determina durante la simulacion por el motor de decision. El conjunto recorrido de dispositivos virtuales se asocia entonces con la cabecera de protocolo de paquete y/o el resultado de simulacion. Cuando se detecta un cambio en la configuracion de un dispositivo virtual, pueden invalidarse los resultados de simulacion almacenados asociados con cualquier conjunto recorrido que contiene el dispositivo virtual cambiado. De esta manera, el sistema determino de manera eficiente que reglas de flujo deben invalidarse basandose en un cambio de dispositivo virtual dado. Un metodo de determinar un conjunto recorrido de dispositivos virtuales y unos flujos de invalidacion basandose en un cambio en una configuracion de dispositivo virtual se ilustran adicionalmente en la figura 1. En otras realizaciones, pueden invalidarse o expulsarse flujos cuando la memoria cache es un recurso de espacio limitado. Por ejemplo, el sistema puede seguir localmente (en el primer nodo) todos los motores de decision que estan copiados en memoria cache por el sistema subyacente, seguir una vez de “ultima coincidencia” de una decision que es la ultima vez que un paquete coincidio con un patron de decision y que las acciones de decision se aplicaron al paquete. Entonces, el sistema puede consultar la vez de “ultima coincidencia” de todas las decisiones y expulsar aquellas decisiones que no se han usado en el tiempo mas largo. La consulta de la vez de ultima coincidencia puede realizarse a una frecuencia especificada o puede realizarse segun sea necesario para mantener el tamano de la memoria cache de decisiones almacenadas por debajo de un tamano especificado. El sistema tambien puede eliminar decisiones aleatorias que se crearon “recientemente”. La eliminacion de decisiones aleatorias creadas recientemente puede ser eficiente cuando una mayona de decisiones recientes son para flujos de paquete de corta duracion (en comparacion con decisiones supervivientes mas antiguas que tienen un porcentaje comparativamente mas alto de flujos de larga duracion). Los procesos para invalidar flujos pueden usarse individualmente o en combinacion para gestionar la memoria cache de datos almacenados en el nodo dentro de parametros deseados. El sistema puede ajustar tambien la tasa de invalidaciones o expulsiones basandose en la tasa de nuevas invocaciones del motor de decision, que se correlacionan con la adicion de nuevas decisiones a la memoria cache almacenada.
El sistema tambien esta configurado para hacer converger con trafico correcto, de manera eficiente y con alteracion minima, las decisiones copiadas en memoria cache para que concuerden con respecto a configuraciones de dispositivo virtual actualizadas. La convergencia de decisiones copiadas en memoria cache, que puede caracterizarse como invalidaciones o expulsiones basadas en exactitud de flujos anteriormente almacenados. Tal como se usa en el presente documento, una decision que concuerda, con respecto a una configuracion de red virtual inicial mas algun cambio, es una a la que puede volver a llegarse mediante una nueva invocacion del motor de decision con el mismo paquete de entrada e interfaz de entrada. En cambio, una decision que no concuerda es una decision que no realizara el motor de decision dadas las mismas entradas debido a la nueva configuracion de los dispositivos de red virtuales. En una realizacion, para un tiempo T hay un periodo P limitado dentro del cual todas las decisiones que se copiaron en memoria cache antes del tiempo T concuerdan con el estado de la configuracion de red virtual en o despues del tiempo T. Para hacer converger las decisiones, el sistema indexa las decisiones copiadas en memoria cache de manera local mediante los dispositivos que se simularon para esa decision (estos representan los dispositivos virtuales que recorrio el paquete) y el tiempo en el que se realizo/almaceno en memoria cache la decision. El sistema recibe entonces actualizaciones locales de la configuracion de dispositivo virtual para una actualizacion de configuracion de un primer dispositivo virtual recibida en el tiempo T, espera un tiempo especificado de modo que el numero de decisiones realizadas y almacenadas en memoria cache antes del tiempo T ya se ha reducido mediante expulsiones basadas en espacio, y luego interseca el conjunto de decisiones realizadas/almacenadas en memoria cache antes del tiempo T con el conjunto de decisiones que requirieron simular el primer dispositivo virtual. Las decisiones en el conjunto resultante deben validarse entonces volviendo a invocar el motor de decision con las mismas entradas (y la configuracion actual). Para cualquier decision que haya cambiado, se invalida la decision antigua y se instala/almacena en memoria cache el nuevo resultado de simulacion basado en
la configuracion actual actualizada para su uso con paquetes posteriores que coinciden con el flujo.
En otro aspecto, el metodo y sistema informatico dados a conocer en el presente documento incluyen simular uno o mas puentes de aprendizaje de MAC, en los que los puertos exteriores de cada puente se mapean a interfaces de uno o mas nodos de la red subyacente y en los que cada puerto orientado hacia el interior del puente esta conectado a un puerto orientado hacia el interior de un enrutador virtual. El metodo informatico incluye mantener una copia autoritativa de la tabla de aprendizaje de MAC del puente en la base de datos compartida. La tabla de aprendizaje de MAC tambien puede conocerse como base de datos de filtrado dinamico, mapa de direcciones MAC al puerto a traves del cual puede alcanzarse la MAC, en la que una MAC solo puede alcanzarse a traves de uno de los puertos de un puente en un momento cualquiera en una red correctamente configurada. El metodo incluye ademas mantener una copia en memoria cache de la tabla de aprendizaje de MAC del puente en cada nodo que tiene una interfaz que mapea a uno de los puertos orientados hacia el exterior del puente, y en cada nodo que simulo un recorrido del paquete de ese puente. La copia en memoria cache de la tabla de aprendizaje de MAC puede actualizarse cuando cambia la copia autoritativa.
En una realizacion, la invocacion del motor de decision da como resultado la simulacion de una trama de Ethernet que lleva a un primer puerto de un puente de Ethernet, y el sistema carga el estado del puente de Ethernet si ninguna invocacion previa del motor de decision lo ha cargado. Una trama de Ethernet entrante puede tener una direccion MAC de destino de unidifusion. En realizaciones, un metodo incluye ademas detectar que la MAC de destino es una direccion de unidifusion, y determinar si hay una entrada para esa MAC en la tabla de aprendizaje de MAC. Si la tabla de aprendizaje de MAC incluye una entrada que mapea la MAC a un segundo puerto del puente, el sistema determina que el puente simulado emitira tal trama a partir del segundo puerto. Si la tabla de aprendizaje de MAC no incluye una entrada para esa MAC, el sistema determina que el puente simulado emitira la trama a partir de todos sus puertos, excepto aquel en el que llego.
En otra realizacion, la trama de Ethernet entrante tiene una MAC de multidifusion o radiodifusion que indica que la trama debe emitirse desde multiples puertos. Realizaciones del metodo informatico pueden incluir ademas detectar que la MAC de destino es una direccion de multidifusion o radiodifusion y determinar que el puente simulado emitira tal trama a partir de todos sus puertos excepto aquel en el que llego. En aun otra realizacion, la trama de Ethernet entrante tiene una direccion MAC de origen de unidifusion. Si la tabla de aprendizaje de MAC no tiene ninguna entrada para esta MAC, el sistema anade una entrada que mapea esta MAC al puerto de llegada. Entonces, el sistema inicia un recuento de referencia de tal entrada de tabla de aprendizaje de MAC, local para el nodo en el que se produjo la invocacion, en el que el recuento se basa en el numero de decisiones copiadas en memoria cache que dieron como resultado una trama con la misma direccion MAC de origen que llega al mismo puerto. El recuento de referencia de tales decisiones copiadas en memoria cache puede resultar util puesto que el motor de decision no ve todos los paquetes con la misma MAC de origen que llegan al puerto. Por tanto, cuando el numero de tales decisiones copiadas en memoria cache alcanza cero, puede hacerse que caduque (o establecerse para que caduque) la entrada de tabla de aprendizaje de MAC para esta MAC de origen y puerto de llegada. En cada nodo que tiene una copia en memoria cache de la tabla de aprendizaje de MAC del puente (puesto que tiene una interfaz mapeada a un puerto orientado hacia el exterior del puente, o puesto que recientemente simulo el puente) el sistema aprende la actualizacion de la tabla y expulsa cualquier decision copiada en memoria cache que se baso en la ausencia de una entrada para esa MAC en la tabla de aprendizaje de MAC, puesto que esos flujos/paquetes ahora pueden suministrarse al puerto de entrada, en lugar de inundarse en todos los puertos del puente.
En otras realizaciones, la tabla de aprendizaje de MAC puede tener ya una entrada para la direccion MAC y el puerto mapeado es el mismo que el puerto de llegada de la trama entrante actual. Entonces, el sistema puede detectar que existe la entrada de tabla de aprendizaje de MAC y no necesita modificarse. El sistema puede incrementar el recuento de referencia local si esta invocacion del motor de decision da como resultado una decision copiada en memoria cache. Alternativamente, la tabla de aprendizaje de MAC puede tener ya una entrada para la direccion MAC, pero el puerto mapeado puede ser diferente del puerto de llegada de la trama entrante actual. Entonces, el sistema retira la entrada anterior de la tabla de aprendizaje de MAC, y anade una nueva entrada a la tabla de aprendizaje de MAC que asocia la direccion MAC con el puerto de llegada de la trama. En el nodo que es propietario de la interfaz que corresponde al puerto mapeado de la entrada anterior, el sistema toma conocimiento de la retirada de la entrada y expulsa cualquier decision que realiza el recuento de referencia de esa entrada dado que ahora se basan en informacion incorrecta. En cada nodo que tiene una copia en memoria cache de la tabla de aprendizaje de MAC del puente (puesto que tiene una interfaz que corresponde a un puerto orientado hacia el exterior del puente, o puesto que recientemente simulo el puente) aprende las actualizaciones de la tabla y expulsa cualquier decision copiada en memoria cache que se basara en la entrada de tabla de aprendizaje de MAC anterior para esa MAC dado que ahora se basan en informacion incorrecta. Para ilustrar adicionalmente, en la figura 2 se ilustra un metodo para aprendizaje de MAC y en la figura 3 se ilustra un metodo para desaprendizaje de MAC.
En otra realizacion, se proporciona un metodo para reducir paquetes inundados en puentes de Ethernet cuando se conocen por adelantado las direcciones MAC que pueden alcanzarse desde cada uno de los puertos de un puente. Por ejemplo, en el caso de una VM invitada adherida a una de las interfaces de red de un nodo que se mapea a uno de los puertos orientados hacia el exterior de un puente virtual, las direcciones MAC pueden conocerse por adelantado de manera que la tabla de aprendizaje de MAC puede poblarse previamente con las entradas de puerto de MAC conocidas.
En otro aspecto, el metodo informatico reduce los paquetes inundados en una red IP interceptando y respondiendo a peticiones de ARP. El metodo incluye aumentar el estado de un puente con una memoria cache de ARP almacenada en la base de datos compartida. La memoria cache de ARP incluye un mapa de direccion IP de unidifusion a direccion MAC de unidifusion. Como con la tabla de aprendizaje de MAC, la memoria cache de ARP del puente puede poblarse previamente con entradas correspondientes a cualquier enrutador que esta conectado al puente a traves de puertos orientados hacia el interior. Cada entrada puede determinarse examinando uno de los puertos orientados hacia el interior del puente, recuperando la configuracion del puerto homologo, y extrayendo la direccion IP y MAC del puerto homologo. El metodo tambien puede incluir poblar previamente la memoria cache de ARP del puente con cualquier otra entrada que se conoce por adelantado, tal como en un entorno de gestion en la nube en el que a maquinas virtuales invitadas se les asignan direcciones IP y MAC por usuarios o de manera automatica por el sistema. El metodo tambien puede incluir reconocer paquetes de IP y extraer la direccion IP de origen y la direccion MAC de origen de la trama de Ethernet de encapsulamiento y por tanto deducir la correspondencia lP-MAC y anadir la entrada apropiada a la memoria cache de ARP.
En aun otra realizacion, un metodo para simular uno o mas enrutadores IPv4 en el que los puertos orientados hacia el exterior de cada enrutador se mapean a interfaces de uno o mas nodos de la red subyacente, y cada puerto orientado hacia el interior de un enrutador esta conectado a un puerto orientado hacia el interior o bien de otro enrutador virtual o bien de un puente virtual. El metodo incluye mantener una copia autoritativa de la memoria cache de ARP del enrutador (mapa de direccion IP de unidifusion a direccion MAC de unidifusion) en la base de datos compartida, cargar previamente la memoria cache de ARP con los pares de direcciones (IPv4, MAC) de los puertos homologos de todos los puertos orientados hacia el interior del enrutador, mantener una copia autoritativa de la tabla de reenvfo del enrutador (conjunto de reglas/rutas que determinan que puerto de enrutador debe emitir un paquete basandose en escoger la regla con el prefijo de destino de IPv4 coincidente mas preciso y un prefijo de origen coincidente) en la base de datos compartida, mantener una copia en memoria cache de la memoria cache de ARP del enrutador y tabla de reenvfo en cada nodo que tiene una interfaz que mapea a uno de los puertos orientados hacia el exterior del enrutador, y en cada nodo que recientemente simulo un recorrido del paquete de ese enrutador. Un enrutador se ha simulado recientemente en un nodo si ese nodo tiene al menos una decision de motor copiada en memoria cache que requiere simular el enrutador. El metodo tambien puede incluir actualizar la copia en memoria cache de la memoria cache de ARP y la tabla de reenvfo cuando cambia la copia autoritativa en la base de datos compartida. Tras la simulacion de la llegada de un paquete en un enrutador de IPv4, el estado del enrutador puede cargarse en este nodo si no se ha cargado ya ninguna invocacion de motor de decision anterior.
El motor de decision tambien puede simular un paquete de IPv4 que llega a un primer puerto de un enrutador de IPv4. La direccion de destino del paquete de IPv4 entrante puede ser igual a uno de los puertos del enrutador. Entonces, el sistema detectara que el paquete va dirigido a uno de los puertos del enrutador, determinara que el enrutador soltara el paquete si no se reconoce o no se gestiona su protocolo, detectara si el paquete es una peticion de ping (eco de ICMP) y en ese caso generara un paquete de respuesta de ping desde el puerto del enrutador hasta la direccion de origen de IPv4 del primer paquete, e invocara la logica de simulacion del motor de decision para determinar la trayectoria que seguira la respuesta de ping desde el puerto a traves de la red virtual. Si la logica de simulacion determina que la respuesta de ping saldra de la red virtual en un puerto orientado hacia el exterior espedfico (de cualquier dispositivo), entonces el sistema mapeara ese puerto a su interfaz correspondiente y nodo de red subyacente y pedira que el sistema de llamada emita el paquete de respuesta de ping desde esa interfaz. Alternativamente, la direccion de destino del paquete de IPv4 entrante puede no ser una de las direcciones de los puertos del enrutador, en cuyo caso el sistema consulta la tabla de reenvfo del enrutador para determinar la ruta mas coincidente dadas las direcciones de IPv4 de origen y destino del paquete. Cuando no se encuentra ninguna ruta coincidente, el sistema determina que tras recibir el primer paquete el enrutador en cuestion soltara el paquete y respondera con un error de ICMP, tal como ruta no alcanzable, e invoca la logica de simulacion del motor de decision para determinar la trayectoria que seguira el error de ICMP desde el puerto hasta la red virtual. Si la logica de simulacion determina que el error de ICMP saldra de la red virtual en un puerto orientado hacia el exterior espedfico, entonces el sistema mapea ese puerto a su interfaz correspondiente y nodo de red subyacente y pide que el sistema de llamada emita el paquete de error de ICMP desde esa interfaz. De una manera similar, puede generarse un paquete de error de ICMP cuando la ruta coincidente especifica que el destino esta prohibido de manera administrativa.
Cuando la simulacion determina que la ruta mas coincidente especifica que el paquete se reenvfe a traves de puerto de enrutador (por ejemplo, puerto de siguiente salto), el sistema puede cambiar la direccion Ethernet de origen del paquete por la MAC del puerto de siguiente salto. Si la pasarela de siguiente salto de la ruta es nula (lo que significa que la direccion de destino esta en la misma subred L3 que el puerto de siguiente salto), el sistema consulta la memoria cache de ARP local para determinar la MAC correspondiente al destino de IPv4 del paquete y cambia la direccion Ethernet de destino del paquete por la MAC. Si la pasarela de siguiente salto de la ruta no es nula (lo que significa que el paquete debe reenviarse para pasar a traves de al menos un enrutador mas antes de alcanzar su destino), el sistema consulta la memoria cache de ARP local para determinar la MAC correspondiente a la direccion IPv4 de la pasarela y cambia la direccion Ethernet de destino del paquete por esa MAC. El sistema puede determinar ademas que tras recibir el primer paquete (que puede haberse modificado tras la simulacion de dispositivos virtuales anteriormente recorridos), el enrutador en cuestion modificara adicionalmente el paquete tal como se describe y lo emitira a partir del puerto de siguiente salto.
Cuando la memoria cache de ARP no contiene una entrada para la direccion IPv4 consultada (tal como cuando el puerto de siguiente salto es un puerto orientado hacia el exterior), el sistema puede implementar un metodo que incluye generar un paquete de peticion de ARP para la direccion IPv4 deseada, y anadir un par (IPv4, MAC nula), indicado con un momento de ultimo envfo establecido al momento actual, a la base de datos compartida para indicar cuando se envio la ultima peticion de ARP para esa IPv4. El metodo puede incluir ademas mapear el puerto de siguiente salto orientado hacia el exterior a su interfaz correspondiente y nodo de red subyacente, pedir que el sistema de llamada emita una peticion de ARP desde esa interfaz, y repetir periodicamente la peticion de que se emita el paquete de peticion de ARP desde esa interfaz. En realizaciones, la peticion de ARP se suministrara por el sistema de base como cualquier otro paquete que entro en la red virtual, y por tanto posiblemente a lo largo de un tunel hasta un nodo diferente. El metodo puede continuar hasta que se agota un tiempo asignado, y luego generar un mensaje de error de ruta ICMP inalcanzable en respuesta al primer paquete. Alternativamente, el metodo continua hasta que se recibe una actualizacion para la copia local de la memoria cache de ARP que incluye una entrada (IPv4, MAC) para la direccion IPv4 deseada, y luego incluye cambiar la direccion Ethernet de destino del paquete por la MAC de esa entrada, y determinar que el enrutador simulado modificara el paquete tal como se describe y lo emitira desde el puerto de siguiente salto. En realizaciones, la respuesta de ARP se recibira en un nodo diferente del que procesa el primer paquete si la peticion de ARP se emitio a partir de un puerto que se mapea a una interfaz en un nodo diferente. De esta manera, el motor de decision puede aprender la entrada de ARP a traves de la memoria cache de ARP en vez de recibiendo directamente la respuesta de ARP. Cuando se agota un tiempo asignado y no se encuentra la entrada de memoria cache de ARP, el sistema puede responder con un error de ruta de ICMP inalcanzable tal como se describio anteriormente.
En otra realizacion, una invocacion del motor de decision da como resultado la simulacion de un paquete de peticion de ARP que llega a un primer puerto de un enrutador IPv4 y en la que la direccion de protocolo objetivo del ARP (“TPA”) es la direccion IPv4 del puerto de llegada/primer puerto. Entonces, el sistema puede generar un paquete de respuesta de ARP con una direccion de hardware de origen (“SHA") establecida a la direccion MAC del puerto de llegada, invocar la logica de simulacion del motor de decision para determinar la trayectoria que seguira la respuesta de ARP desde el puerto de llegada del primer paquete a traves de la red virtual. La respuesta de ARP puede emitirse de una manera similar a las respuestas anteriormente comentadas. Alternativamente, la simulacion de motor de decision puede determinar que el enrutador simulado soltara el paquete de peticion de ARP.
En otra realizacion, una invocacion del motor de decision da como resultado la simulacion de un paquete de respuesta de ARP que llega a un primer puerto de un enrutador IPv4. El sistema puede detectar si la respuesta de ARP es en respuesta a una peticion de ARP que se genero por el enrutador. En una realizacion, el sistema comprueba que hay una entrada (IPv4, MAC) en la memoria cache de ARP, indicada con un momento de ultimo envfo reciente, aunque la propia MAC sea nula. Si no hay ninguna entrada, el sistema determina que el enrutador soltara una peticion de ARP no solicitada de este tipo con el fin de bloquear ataques de denegacion de servicio. Alternativamente, el sistema extrae la direccion de hardware de origen, una direccion MAC, y la direccion de protocolo de origen, una direccion IPv4, a partir de la respuesta de ARP y actualiza la memoria cache de ARP. La memoria cache de ARP puede actualizarse localmente y en la base de datos compartida con la entrada (IPv4, MAC).
En otro aspecto, el sistema informatico dado a conocer en el presente documento esta configurado para realizar un metodo que incluye simular filtros de entrada y salida de un dispositivo virtual, en el que los filtros incluyen reglas de filtrado individuales que estan organizadas en listas que pueden hacer referencia unas a otras mediante reglas de salto. El metodo tambien puede incluir especificar una condicion que puede leer y aplicar logica a cualquiera de o todos los campos de las cabeceras de protocolo de red L2-L4 de un paquete, y especificar una accion que debe ejecutarse (por ejemplo soltar, aceptar para procesamiento adicional) cuando un paquete coincide con la condicion.
En una realizacion, el metodo comprende ademas mantener las reglas de filtrado para el filtro de entrada/salida de cada dispositivo en la base de datos compartida, mantener una copia local de las reglas de filtrado de un dispositivo en cualquier nodo que ha simulado recientemente el dispositivo, actualizar la copia local de las reglas de filtrado de un dispositivo cuando la copia autoritativa de las reglas cambia en la base de datos compartida, y/o volver a validar decisiones de reenvfo de flujo copiadas en memoria cache de manera local que requirieron simulacion de un dispositivo, cuando se modifican los filtros de ese dispositivo. El metodo tambien puede incluir simular reglas de filtrado que coinciden en cuanto al estado de conexion segun el flujo, en el que el estado de conexion segun el flujo se sigue independientemente por cada dispositivo simulado, y en el que el conjunto de valores de estado de conexion depende del protocolo de transporte (L4) del paquete. En una realizacion, el sistema esta configurado para realizar un metodo que incluye tener espacio dedicado en la base de datos central para almacenar el estado de conexion segun el dispositivo y el flujo, tras comenzar la simulacion de un dispositivo, consultar la base de datos central usando la firma de flujo del paquete para recuperar el estado de conexion. En una realizacion, la firma de flujo se calcula adjuntando estos campos en este orden: el ID de dispositivo del dispositivo simulado, el campo de origen (por ejemplo, IP) de la cabecera L3 del paquete, el campo de destino L3, el tipo de protocolo L4 (por ejemplo TCP), el campo de origen de la cabecera L4, el campo de destino de cabecera L4. Si no se encuentra ningun estado de conexion en la base de datos central, entonces el paquete constituye un nuevo flujo cuyo estado de conexion es de manera implfcita el valor “inicio” del conjunto de estados para el protocolo de red de este paquete. El metodo tambien puede exponer el valor de estado de conexion para su coincidencia mediante las reglas de filtrado de este dispositivo. Antes de terminar la simulacion del dispositivo, y si la simulacion determina que el dispositivo reenviara
el paquete, se establece el estado de conexion para la firma de flujo de este paquete y la firma de flujo de retorno de este paquete segun las reglas de transicion para el conjunto de valores de estado de conexion para el protocolo de red de este paquete. En una realizacion similar a la anterior, la firma de flujo de retorno del paquete se calculara adjuntando estos valores en este orden: el ID de dispositivo del dispositivo simulado, el campo de destino de la cabecera L3 del paquete, campo de origen L3, tipo de protocolo L4, campo de destino de cabecera L4, y campo de origen de cabecera L4. La firma de flujo directo y la firma de flujo de retorno tambien pueden definirse usando campos adicionales que pueden ser utiles en una aplicacion dada. Cuando la decision copiada en memoria cache para el flujo directo caduca, el sistema puede planificar la retirada tanto del estado de conexion asociado con ese flujo como del flujo de retorno. Para ilustrar adicionalmente, en la figura 4 se ilustra una realizacion de un metodo para seguir conexiones.
En una realizacion, el metodo incluye ademas simular reglas de filtrado que coinciden con el estado de conexion del flujo del paquete, en el que el estado de conexion segun el flujo se comparte entre todos los dispositivos simulados, y en el que el conjunto de estados de conexion depende del protocolo de transporte (L4) del paquete. De esta manera, el estado de conexion se considera una propiedad del flujo, independiente de la trayectoria seguida a traves de la red de dispositivos. El resultado es que todos los dispositivos simulados en una unica llamada al motor de decision estaran de acuerdo en cuanto a los estados de conexion del flujo de retorno y del flujo del paquete; y dos dispositivos cualesquiera simulados en dos llamadas diferentes al motor de decision estaran de acuerdo en cuanto a esos estados de conexion si al menos uno de lo siguiente es cierto: el flujo de retorno entra en la red virtual en el mismo dispositivo desde el que se emite el flujo directo; los paquetes de flujo de retorno tienen direcciones L3 publicas, es decir globalmente unicas. En realizaciones, la base de datos compartida incluye espacio dedicado para almacenar el estado de conexion segun el flujo. Tras comenzarse la simulacion del recorrido del paquete de la red virtual, puede consultarse la base de datos compartida usando la firma de flujo del paquete. La firma de flujo puede depender del ID de dispositivo del primer dispositivo simulado si al menos uno del origen/destino L3 no es publico, es decir globalmente unico. La firma de flujo tambien puede depender del campo de origen (por ejemplo, IP) de la cabecera L3 del paquete, campo de destino L3, tipo de protocolo L4 (por ejemplo TCP), campo de origen de la cabecera L4, y campo de destino de cabecera L4. Si no se encuentra ningun estado de conexion en la base de datos central, entonces el paquete constituye un nuevo flujo cuyo estado de conexion es de manera implfcita el valor de inicio del conjunto de estados para este el protocolo de red de este paquete. Entonces puede exponerse el valor de estado de conexion para su coincidencia por las reglas de filtrado de cualquier dispositivo simulado. Antes de terminar la simulacion del recorrido del paquete de la red virtual, y si la simulacion determina que el paquete se emitira finalmente desde algun puerto virtual, se establece el estado de conexion para la firma de flujo de este paquete y la firma de flujo de retorno de este paquete segun las reglas de transicion para el conjunto de valores de estado de conexion para el protocolo de red de este paquete. El estado de conexion se escribe en la base de datos compartida antes de tunelar/reenviar el paquete (y por tanto antes de devolver la decision) con el fin de evitar una condicion de carrera en la que se simula un paquete procedente del flujo de retorno y desencadena una consulta del estado de conexion antes de haberse completado la escritura del estado de conexion en la base de datos compartida. La firma de flujo de retorno del paquete puede calcularse de una manera similar. Tal como se indico anteriormente, cuando caduca la decision copiada en memoria cache para el flujo directo, se planifica la retirada tanto del estado de conexion asociado con ese flujo como del flujo de retorno.
En otro aspecto, el metodo incluye reducir el tiempo de simulacion evitando consultar o escribir un estado de conexion cuando este estado no se usara por la simulacion del paquete o por la simulacion de un paquete de retorno, retrasar la consulta del estado de conexion para el flujo del paquete hasta que una regla de filtrado en algun dispositivo simulado necesite leer tal estado, determinar si la trayectoria probable para el paquete de retorno incluira simular una regla de filtrado que necesite leer el estado de conexion del flujo de retorno, y en caso negativo omitir la escritura del estado de conexion de flujo tanto directo como de retorno en la base de datos compartida. En realizaciones, el estado de conexion se mantiene en la base de datos compartida de modo que si cualquier paquete del mismo flujo llega a una interfaz de un segundo nodo en un momento posterior, el motor de decision del segundo nodo llegara a la misma decision sobre como tratar ese flujo (en ausencia de cambios en la configuracion de red virtual). Esto es necesario para conservar la integridad de un flujo cuando sus paquetes llegan a las interfaces de mas de un nodo de la red subyacente debido a decisiones de enrutamiento externas. Esas decisiones de enrutamiento pueden estar relacionadas o no con la inalcanzabilidad percibida o real de la interfaz de un nodo.
En todavfa otras realizaciones, el sistema esta configurado para realizar una simulacion de traduccion de direccion de red (es decir L3) y de transporte (es decir L4) para un dispositivo virtual. De manera similar el sistema esta configurado para simular traducciones inversas de las direcciones de red y protocolo de un dispositivo virtual. Estos procesos pueden denominase de manera colectiva “NAT”. En diversas realizaciones, las reglas de NAT individuales pueden seguir o preceder o estar intercaladas con reglas de filtrado, especificar una condicion que puede leerse y aplicar logica a cualquiera de o todos campos de las cabeceras de protocolo de red L2-L4 de un paquete, especificar como deben traducirse o traducirse de manera inversa los campos L3 y L4 cuando un paquete coincide con la condicion, y/o especificar una accion que va a ejecutarse cuando se ha producido la traduccion (por ejemplo aceptar para procesamiento adicional por parte del dispositivo, continuar procesando en el conjunto de reglas). El metodo puede incluir ademas mantener las reglas de traduccion para el filtro de entrada/salida de cada dispositivo en la base de datos compartida, mantener una copia local de las reglas de traduccion de un dispositivo en cualquier nodo que ha simulado recientemente el dispositivo, y actualizar la copia local de las reglas de traduccion de un dispositivo
cuando la copia autoritativa de las reglas cambia en la base de datos compartida. Durante la simulacion del dispositivo, si el procesamiento de paquete alcanza la regla de NAT, el metodo incluye determinar si el paquete (posiblemente ya modificado mediante dispositivos o reglas anteriores) satisface la condicion de la regla y, en caso afirmativo, modificar el paquete segun la traduccion o traduccion inversa especificada por la regla. Decisiones de reenvfo de flujo copiadas en memoria cache de manera local que requieren simulacion de un dispositivo pueden entonces validarse de nuevo cuando se modifican las traducciones de ese dispositivo.
En otro aspecto, el sistema implementa un dispositivo virtual ffsicamente distribuido que soporta NAT de destino con estado, en el que algunas reglas de NAT permiten una eleccion de objetivo de traduccion para direcciones de destino L3 y L4 y especifican una polftica para realizar la eleccion entre objetivos de traduccion. En realizaciones, el sistema puede almacenar la eleccion de traduccion para cada flujo directo en la base de datos compartida, usando como claves las firmas de flujo tanto directo como de retorno. La firma de flujo directo puede estar compuesta por estos valores en este orden: el ID del dispositivo virtual, la direccion de origen L3 del paquete, direccion de destino L3, numero de protocolo L4, direccion de origen L4 y direccion de destino L4. La firma de flujo de retorno puede estar compuesta por estos valores en este orden: el ID del dispositivo virtual, la direccion L3 elegida por la traduccion, la direccion de origen L3 del paquete, numero de protocolo L4, la direccion L4 elegida por la traduccion, la direccion de origen L4 del paquete. La traduccion almacenada puede codificar las direcciones de destino L3 y L4 originales del paquete asf como las direcciones de destino L3 y L4 elegidas para la traduccion. El metodo incluye ademas durante la simulacion de un dispositivo, si el procesamiento de paquete alcanza una regla de NAT de este tipo (que permite una eleccion de direcciones de destino) y satisface la condicion de la regla, componer una clave tal como se describio anteriormente para la firma de flujo directo y consultar la base de datos compartida para determinar si ya se ha almacenado una traduccion (y por tanto ya se ha realizado la eleccion de direcciones traducidas) mediante una ejecucion de motor de decision anterior (en el nodo de red subyacente local o alguno remoto). Si se encuentra una traduccion almacenada de este tipo en la base de datos compartida, entonces se modifican las direcciones de destino L3 y L4 del paquete para dar las direcciones L3 y L4 elegidas, y luego se continua la simulacion. Si no se encuentra una traduccion almacenada de este tipo en la base de datos compartida, entonces se realiza una eleccion segun la polftica especificada, se modifican las direcciones de destino L3 y L4 del paquete segun esa eleccion, se almacena la eleccion de traduccion en la base de datos compartida tal como se describio anteriormente, y luego se continua la simulacion. Durante la simulacion de un dispositivo, si el procesamiento de paquete alcanza una regla de traduccion inversa que especifica invertir una eleccion, y el paquete satisface la condicion de la regla, entonces se supone que el paquete es un paquete de retorno de un flujo directo traducido, se compone la clave que corresponde a la firma de flujo de retorno, y se consulta la base de datos compartida para determinar si se ha almacenado una traduccion para ese flujo de retorno. La firma de flujo de retorno puede estar compuesta por estos valores en este orden: el iD del dispositivo virtual, la direccion de origen L3 del paquete, direccion de destino L3, numero de protocolo L4, direccion de destino L4 y direccion de origen L4. Si se encuentra una traduccion almacenada de este tipo en la base de datos, entonces se aplica en sentido inverso a este paquete modificando las direcciones de origen L3 y L4 del paquete para dar las direcciones L3 y L4 originales de la traduccion almacenada, y luego se continua la simulacion. Si no se encuentra una traduccion almacenada de este tipo en la base de datos compartida, entonces la suposicion de que el paquete es un paquete de retorno de un flujo directo traducido es incorrecta, por tanto no se necesita aplicar ninguna traduccion inversa, y por tanto se continua la simulacion como si no se hubiera satisfecho la condicion de la regla inversa. De esta manera, el sistema y metodo permiten almacenar las traducciones en una base de datos compartida y abordar condiciones de carrera de manera que el dispositivo virtual se comporta correctamente y no puede distinguirse de un dispositivo de hardware que funciona correctamente, pero con una disponibilidad aumentada del dispositivo virtual en comparacion con el dispositivo de hardware.
En otro aspecto, algunas reglas de NAT permiten una eleccion de objetivos de traduccion para las direcciones de origen L3 y L4 y especifican una polftica para realizar esa eleccion. En realizaciones, el sistema puede almacenar la eleccion de traduccion para cada flujo directo en la base de datos compartida, usando como claves las firmas de flujo tanto directo como de retorno. La traduccion almacenada codifica las direcciones de origen L3 y L4 originales del paquete asf como las direcciones de origen L3 y L4 elegidas para la traduccion. Durante la simulacion de un dispositivo, si el procesamiento de paquete alcanza una regla de NAT de este tipo (que permite una eleccion de direcciones de origen) y satisface la condicion de la regla, se compone una clave tal como se describio anteriormente para la firma de flujo directo y se consulta la base de datos compartida para determinar si ya se ha almacenado una traduccion (y por tanto ya se ha realizado la eleccion de direcciones traducidas) mediante una ejecucion de motor de decision anterior (en el nodo de red subyacente local o alguno remoto). Si se encuentra una traduccion almacenada de este tipo en la base de datos compartida, entonces las direcciones de origen L3 y L4 del paquete se modifican para dar las direcciones L3 y L4 elegidas, y luego se continua la simulacion. Si no se encuentra una traduccion almacenada de este tipo en la base de datos compartida, entonces se realiza una eleccion segun la polftica especificada, se construye la firma de flujo de retorno segun esa eleccion y se consulta la base de datos para garantizar que no hay ninguna traduccion almacenada mediante esa clave, se repite la eleccion y comprobacion de base de datos hasta que la base de datos no devuelve ninguna coincidencia para la clave, despues se modifican los campos de origen L3 y L4 del paquete segun la eleccion final, se almacena la eleccion de traduccion en la base de datos compartida tal como se describio anteriormente, y luego se continua la simulacion. La comprobacion para detectar la clave de flujo de retorno en la base de datos puede usarse para determinar la exactitud y para evitar ambiguedad en el enrutamiento de flujos de retorno. Durante la simulacion de un dispositivo,
si el procesamiento de paquete alcanza una regla de traduccion inversa que especifica invertir una eleccion, y el paquete satisface la condicion de la regla, entonces se supone que el paquete es un paquete de retorno de un flujo directo traducido, se compone una clave que corresponde a la firma de flujo de retorno, y se consulta la base de datos compartida para determinar si se ha almacenado una traduccion para ese flujo de retorno. Si se encuentra una traduccion almacenada de este tipo en la base de datos, entonces se aplica la traduccion almacenada en sentido inverso a este paquete modificando las direcciones de destino L3 y L4 del paquete para dar las direcciones L3 y L4 originales de la traduccion almacenada, y luego se continua la simulacion. Si no se encuentra una traduccion almacenada en la base de datos compartida, entonces la suposicion de que el paquete es un paquete de retorno de un flujo directo traducido es incorrecta, por tanto no se necesita aplicar ninguna traduccion inversa, y por tanto la simulacion puede continuarse como si no se hubiera satisfecho la condicion de la regla inversa.
En aun otro aspecto, el numero de intentos que intentos que seleccionan traducciones de direccion L3 y L4 que ya estan en la base de datos puede reducirse segmentando los intervalos de direcciones L3 y L4 en bloques que pueden reservarse mediante nodos individuales. Cuando se eligen las direcciones L3 y L4 para la traduccion, un nodo comprueba localmente si hay combinaciones de direcciones sin usar en su propio bloque, de lo contrario reserva un nuevo bloque. Con frecuencia, esto da como resultado una comunicacion de ida y vuelta en la base de datos. Si el nodo no puede reservar un nuevo bloque y no tiene ninguna combinacion de direcciones L3 y L4 sin usar disponible para una nueva traduccion, entonces intenta usar una combinacion de direcciones L3 y L4 aleatoria dentro de las limitaciones especificadas por la regla.
En realizaciones, los protocolos de enrutamiento funcionan a nivel global ya que estan disenados y estudiados en cuanto a sus efectos globales sobre el establecimiento y mantenimiento de conectividad y estabilidad de red. Sin embargo, cualquier enrutador individual solo necesita mantener una discusion de protocolo de enrutador con sus homologos inmediatos. Una organizacion puede hacer funcionar sesiones de protocolo de enrutamiento con sus redes vecinas por una variedad de motivos. Como ejemplos, puede aconsejar a vecinos sobre la mejor trayectoria para entrar en su red para bloques de direcciones espedficos, y puede ajustar sus propias decisiones de reenvfo basandose en condiciones de red externa. Estas sesiones de enrutamiento son inherentemente con estado, tanto puesto que la discusion puede realizarse a lo largo de una conexion (tal como TCP) en contraposicion a un protocolo sin conexion (tal como UDP) como puesto que el objetivo es intercambiar el estado que luego usan los enrutadores para decidir si reenviar paquetes. En realizaciones, el sistema usa un modelo de aplicacion para implementar protocolos de enrutamiento. En un modelo de aplicacion, se proporciona aislamiento l2 para el conjunto de redes virtuales que se ejecutan en la capa base. En el caso de los protocolos de enrutamiento, el modelo de aplicacion puede ser beneficioso puesto que el protocolo de enrutamiento es una parte espedfica de logica y una en la que el propio dispositivo virtual es el origen y destino de trafico. En una realizacion, en lugar de poner un enrutador L3 completo en una aplicacion, solo se pone en una aplicacion el protocolo de enrutamiento entre un puerto virtual y algun homologo externo. De esta manera, el sistema es mas tolerante a fallos ya que aunque la aplicacion puede ser un unico punto de fallo, no importa, los protocolos de enrutamiento tienen esto en cuenta permitiendo multiples sesiones entre homologos a lo largo de multiples puertos.
El sistema puede estar configurado ademas para soportar protocolos de enrutamiento (por ejemplo BGP, iBGP, OSPF) en enrutadores IPv4 virtuales implementando un metodo que incluye almacenar parametros de configuracion para un protocolo de enrutamiento deseado y sesion por homologos como parte de la configuracion del puerto virtual a traves del cual el enrutador establecera la sesion con su homologo. Esta informacion puede almacenarse en la base de datos compartida. El metodo tambien puede incluir almacenar las rutas notificadas deseadas con la configuracion de sesion de protocolo de enrutamiento en la base de datos compartida, cuando un nodo de red subyacente tiene una interfaz publica que se mapea a un puerto virtual con configuracion para una sesion de protocolo de enrutamiento, el nodo lanza localmente un programa residente de protocolo de enrutamiento en un contenedor (por ejemplo en una VM). El contenedor obtiene una interfaz “privada” en el anfitrion, y los nodos establecen decisiones de reenvfo que permiten que paquetes procedentes de esa sesion de protocolo de enrutamiento, y opcionalmente algunos otros flujos tales como ARP e ICMP, fluyan entre el contenedor y el homologo evitando el motor de decision. El metodo tambien puede incluir configuracion de sesion de protocolo de enrutamiento en un puerto que implica que los paquetes del homologo llegaran a la interfaz de nodo subyacente correspondiente. De manera similar, paquetes de sesion procedentes del puerto de enrutador virtual hacia el homologo deben emitirse a traves de la interfaz de nodo subyacente correspondiente. Sin embargo, el trafico de red desde el homologo hasta la red virtual tambien llegara a la misma interfaz, y el trafico desde la red virtual que la tabla de reenvfo del enrutador virtual indica que debe pasar a traves del homologo debe emitirse por la misma interfaz. El primer paquete de cada flujo regular (flujo de protocolo no de enrutamiento) dara como resultado una llamada al motor de decision. En vez de eso, los paquetes de los flujos de protocolo de enrutamiento evitan el motor de decision. Los que llegan a la interfaz publica se emiten directamente desde la interfaz privada y viceversa. El nodo tambien sondea el contenedor tanto para forzar las rutas notificadas del puerto virtual para esa sesion de protocolo de enrutamiento como para ver las rutas aprendidas por el programa residente de protocolo de enrutamiento que se ejecuta en el contenedor (es decir, las rutas notificadas por el homologo). El nodo procesa (por ejemplo agrega) las rutas notificadas por el homologo y las anade a la tabla de reenvfo del enrutador virtual tras establecer su puerto de salida al ID del puerto virtual que tiene la configuracion de sesion de protocolo de enrutamiento. Si el contenedor o sesion presenta un fallo, el nodo retira todas de tales rutas que puede haber anadido el mismo a la tabla de reenvfo. El resultado es que el homologo percibe el puerto del enrutador como si
enviara y recibiera tanto trafico regular (anfitrion final) como trafico de sesion de protocolo de enrutamiento. Dado que el trafico de sesion de protocolo de enrutamiento se configura segun el puerto, un enrutador IPv4 virtual puede tener mas de un puerto con una sesion de protocolo de enrutamiento configurada con uno o mas homologos. Mapeando esos puertos virtuales a interfaces en diferentes nodos de red subyacente, el enrutador virtual no es un unico punto de fallo como un enrutador ffsico. Esto mejora adicionalmente la tolerancia a fallos del sistema en comparacion con sistemas anteriormente disponibles.
En aun otro aspecto, el sistema proporciona metodos para implementar o imitar una red privada virtual (“VPN”). En una realizacion, se proporciona un metodo para enlazar un dispositivo virtual a una red remota en una parte diferente de Internet que permite que el dispositivo virtual intercambie paquetes con la red remota como si estuviera ffsicamente conectado, y su enlace fuera seguro y privado. De esta manera, los elementos ajenos no pueden ver el trafico de enlace ni inyectar trafico en el enlace. El metodo puede incluir permitir configuraciones de puertos de dispositivo L2 y L3 virtual indicadas con un identificador de un objeto de configuracion de VPN, almacenadas en la base de datos compartida. Pueden asignarse configuraciones de VPN a nodos de red subyacente espedficos, o nodos de red subyacente pueden competir por conseguir un enganche en una configuracion de VPN en la que la adquisicion de un enganche en una configuracion VPN indica que el propietario del enganche es responsable de gestionar el enlace de VPN correspondiente. En este ultimo caso, el fallo de un nodo da como resultado la perdida del enganche por ese nodo y por tanto la desconexion del enlace de VPN en ese nodo si el nodo todavfa sigue activo. Por tanto, la adquisicion del enlace de VPN por otro nodo es posible. Una configuracion de VPN puede incluir un identificador de puerto privado. El puerto privado identifica un puerto virtual en el dispositivo que debe enlazarse a la red remota. El nodo de red subyacente al que se asigna la VPN localmente crea una interfaz de red logica y la mapea al identificador de puerto privado. Despues lanza un programa residente de gestion de VPN (por ejemplo OpenVPN) dentro de un contenedor y enlaza el contenedor con la interfaz recien creada. Por tanto, el trafico emitido por el nodo a traves de esa interfaz (es decir, emitido por la red virtual desde el puerto privado) llega al programa residente de gestion de VPN que a su vez lo cifra y lo reenvfa al sitio remoto. Cuando la configuracion de VPN especifica que el programa residente de gestion de VPN dentro del contenedor debe reenviar trafico cifrado al sitio remoto a traves de la propia conexion en red del nodo de red subyacente, el programa residente de gestion de VPN en el contenedor debe actuar por tanto como cliente de VPN (puesto que el nodo de red subyacente puede no tener una direccion IPv4 publica). Por tanto, la configuracion de VPN especifica la direccion iP publica del programa residente de gestion de VPN remoto a la que debe conectarse el programa residente local. En otro aspecto, todos los nodos de red subyacente pueden no tener acceso directo a Internet y por tanto el trafico de VPN cifrado debe volver a entrar en la red virtual para tunelarse hasta un dispositivo virtual que tiene un enlace ascendente conectado a Internet (por ejemplo, un enrutador de borde L3 con un puerto habilitado para BGP). En una realizacion, la configuracion de VPN especifica un puerto publico, que identifica un puerto virtual en un dispositivo virtual que puede reenviar paquetes (directa o indirectamente) a Internet. La configuracion de VPN tambien especifica si el programa residente de VPN local debe actuar como servidor en una direccion IPv4 y puerto TCP (o UDP) espedficos, o cliente que se conecta a una direccion IPv4 y puerto TCP o UDP remotos. El nodo al que se asigna la VPN crea una interfaz de red logica local, la mapea al puerto virtual publico, y la conecta al contenedor de programa residente de gestion de VPN. El programa residente de VPN esta configurado para enviar su trafico cifrado/tunelado desde esa interfaz, y recibira trafico cifrado desde el sitio remoto de esa interfaz.
En aun otro aspecto, el sistema proporciona capacidades de DHCP en la red virtual y puede configurar anfitriones (ffsicos o virtuales) que tienen acceso a la red virtual. De esta manera, no se necesita ningun servidor de DHCP individual, ni tampoco se necesita simular uno en un dominio L2 individual. La configuracion de DHCP puede extraerse a partir de dominios L2 y definirse simplemente como un recurso que puede asociarse con un puerto virtual. Cuando un mensaje de peticion o descubrimiento de DHCP llega a un puerto virtual (es decir llega a una interfaz correspondiente al puerto exterior de un dispositivo virtual), el motor de decision de simulacion de red del sistema comprueba la configuracion del puerto para ver si hay una configuracion de DHCP asociada. Si es asf, el motor de decision usa la configuracion de DHCP asociada para construir respuestas (ofertas y respuestas de DHCP, respectivamente) a esos mensajes y le indica al nodo que emita esos paquetes desde la interfaz en la que llego la peticion. Alternativamente, el motor de decision simula el recorrido del paquete de la red como para cualquier otro paquete de red que llega a un puerto virtual. Con respecto a esto, DHCp es otro protocolo transportado por UDP, que a su vez es un L4 que se ejecuta en IP. Este enfoque permite disenar recursos de DHCP independientemente de la topologfa de red, y mas espedficamente, independientemente de dominios L2. Por tanto, los recursos de DHCP pueden compartirse a traves de conjuntos arbitrarios de puertos segun las necesidades del usuario. En realizaciones, el sistema almacena recursos de DHCP en la base de datos compartida.
En una realizacion, se proporciona un recurso de DHCP. El recurso de DHCP incluye configuraciones de DHCP definidas por un conjunto de opciones con valores correspondientes. El recurso de DHCP tambien incluye un conjunto de direcciones IP dinamicas, y posiblemente un conjunto de asignaciones estaticas de direcciones MAC a direcciones IPv4. Los componentes del recurso de DHCP pueden agruparse y asociarse con cualquier puerto exterior de dispositivo virtual. El sistema puede usar un recurso de DHCP en un metodo que incluye almacenar las definiciones de recurso de DHCP en la base de datos compartida, almacenar el mapeo de puerto virtual exterior a recurso de DHCP en la base de datos compartida, usar el motor de decision para identificar paquetes de DHCP que llegan a un puerto virtual, y determinar si el puerto virtual se mapea a un recurso de DHCP. Si el puerto virtual no se mapea a un recurso de DHCP, se usan los metodos anteriormente descritos para decidir como debe gestionarse el
paquete. Si el puerto virtual se mapea a un recurso de DHCP, se usa la definicion de recurso de DHCP para construir la respuesta logica al paquete segun el protocolo de DHCP y segun la direccion MAC del remitente. Cuando el remitente esta pidiendo una direccion IPv4, el sistema comprueba adicionalmente si existe una asignacion estatica para la direccion MAC del remitente y devuelve esa direccion IPv4 como la direccion IP ofrecida. Cuando el remitente esta pidiendo una direccion IPv4 y el recurso de DHCP no contiene ninguna asignacion de direccion IPv4 estatica, el sistema comprueba si el recurso define un conjunto de direcciones IPv4 asignadas de manera dinamica. Si es asf, y si hay direcciones no reservadas en el conjunto, se reserva una de las direcciones en nombre del cliente (identificada por direccion MAC), y se construye el mensaje de respuesta de DHCP que debe emitirse a traves del puerto exterior que recibio la peticion. Las reservas de direcciones IPv4 a partir de un conjunto asignable de manera dinamica definido en un recurso de DHCP pueden almacenarse en la base de datos compartida para prevenir colisiones o reutilizacion. La reserva incluye un alquiler que puede renovarse mediante una peticion del cliente. Cuando se renueva un alquiler, el tiempo de caducidad del alquiler puede actualizarse por el motor de decision para mantener el alquiler durante un periodo de tiempo definido.
En otra realizacion, el sistema implementa transferencia de estado representacional (tambien denominada REST API). La REST API puede usarse por el sistema y titulares del sistema para inspeccionar, monitorizar y modificar la red virtual, incluyendo la topologfa de red virtual. En realizaciones, la REST API proporciona control de acceso basado en funciones y es consciente de quien es propietario de cada parte de la topologfa virtual. La REST API tambien puede ser consciente de las funciones y capacidades de uno o mas titulares. En un ejemplo, un titular puede crear su propio enrutador y conmutador virtual, y gestionar todos los aspectos usando la REST API. En algunos casos, tales como en nubes lasS, puede haber un titular, tal como un titular de proveedor de servicios, que tiene un conjunto de direcciones IP globales que puede alquilar a otros titulares. En tales sistemas, el titular de proveedor de servicios puede crear un puerto orientado hacia el interior y dar a otro titular la capacidad de enlazarse con ese puerto tal como se describio anteriormente.
Para fines de ilustracion, en las figuras 13 y 14 se representan realizaciones de sistemas configurados para implementar uno o mas de los metodos dados a conocer en el presente documento. Haciendo referencia a la figura 5, se ilustra una vista ffsica de un sistema que esta configurado para usarse con una aplicacion de VPN. Un sitio remoto 50 que tiene un servidor de VPN 51 se comunica por Internet 52 con una red subyacente 53. En una realizacion, el servidor de VPN 51 puede ser un servidor de OpenVPN. La red subyacente puede ser una red de IP privada. Un anfitrion 54 puede ser un nodo conectado a la red subyacente e incluye una interfaz de red 55. La interfaz de red 55 esta conectada a un puerto de tunel 56. El puerto de tunel 56 puede usar tunelizacion de GRE u otros metodos de tunelizacion tal como se comento anteriormente. La interfaz de red 55 tambien puede comunicarse con un cliente de VPN 57 en un contenedor a traves de un tunel cifrado 62. El cliente de VPN puede ser un cliente de OpenVPN. El cliente de VPN 57 en el contenedor se comunica con un conmutador programable de flujo 58 a traves de trafico de red virtual 59. El conmutador controlable de flujo 58 tambien se comunica con un motor de decision 60 que se comunica con una base de datos compartida 61. Aplicando uno o mas de los metodos dados a conocer en el presente documento, el sistema proporciona un programa residente de gestion de VPN que usa la red del anfitrion para alcanzar el servidor de VPN en el sitio remoto.
Haciendo referencia a la figura 6, se ilustra una vista ffsica de otra realizacion de un sistema para su uso con una aplicacion de VPN. Un sitio remoto 70 que tiene un servidor de VPN 71 se comunica por Internet 72 con una interfaz de red 74 de un primer anfitrion 73. El primer anfitrion 73 incluye un motor de decision 78 que se comunica con un conmutador programable de flujo 76. El conmutador programable de flujo 76 se comunica con una interfaz de red 75 a traves de un puerto de tunel 77. Una interfaz de red del primer anfitrion 73 esta conectada a una red subyacente 79. La red subyacente tambien esta conectada a una interfaz de red 81 de un segundo anfitrion 80. En una realizacion, la red subyacente 79 es una red privada que esta aislada del Internet publico. El segundo anfitrion 80 incluye ademas un conmutador configurable de flujo 83 que se comunica con la interfaz de red 81 a traves de un puerto de tunel 82. El conmutador programable de flujo 83 tambien se comunica con un motor de decision 84 y un cliente de VPN 85 en un contenedor. El motor de decision 84 tambien se comunica con la base de datos compartida 86 de manera que la base de datos compartida proporciona informacion de estado distribuido para el sistema. Aplicando uno o mas de los metodos dados a conocer en el presente documento, el sistema proporciona un programa residente de gestion de VPN en un entorno informatico en la nube usando el enlace ascendente de la red virtual para alcanzar el servidor de VPN en el sitio remoto.
En todavfa otras realizaciones, en el presente documento se dan a conocer sistemas y metodos para facilitar el enrutamiento de paquetes usando una red virtual superpuesta en una red subyacente. En realizaciones, la red subyacente es una red ffsica, sin embargo, en otras realizaciones, la red subyacente puede ser una red virtual o logica. Por motivos de claridad, la red subyacente puede describirse en cuanto a una red ffsica, sin embargo, una o mas redes virtuales pueden disponerse en capas unas sobre otras, proporcionando cada una la red subyacente para la siguiente red virtual superpuesta.
Un sistema de la presente divulgacion puede incluir una red que interconecta una pluralidad de nodos. Los nodos de la red pueden corresponder a componentes ffsicos tales como servidores, enrutadores u otros dispositivos informaticos en comunicacion con la red. Cada dispositivo puede soportar uno o mas nodos. En otra realizacion, los nodos pueden representar dispositivos logicos o virtuales. La red puede ser una red privada mantenida por un proveedor de servicios, en la que el proveedor de servicios vende, alquila o proporciona de otro modo capacidades
de red a una pluralidad de titulares. La red puede tener uno o mas nodos, tales como nodos perimetrales, que proporcionan conectividad a una red publica. En un ejemplo, la red incluye una pluralidad de nodos orientados hacia Internet que proporcionan multiples trayectorias de comunicacion de entrada/salida entre Internet y la red. Los nodos orientados hacia Internet pueden ser enrutadores conectados a Internet. En otro ejemplo, la red incluye una pluralidad de nodos configurados para albergar maquinas virtuales de titular. Los nodos que albergan maquinas virtuales de titular pueden ser servidores anfitriones u otros dispositivos con los recursos necesarios para hacer funcionar una o mas maquinas virtuales de titular. En algunas implementaciones, un nodo puede albergar multiples maquinas virtuales de un unico titular. En otra realizacion, un nodo puede albergar multiples maquinas virtuales propiedad de diferentes titulares. En aun otra realizacion, un nodo puede funcionar tanto para albergar una maquina virtual de titular como para proporcionar conectividad a Internet a la red.
En diversas realizaciones, se da a conocer un metodo para enrutar un paquete desde un primer nodo hasta un segundo nodo. El metodo incluye recibir un paquete en un primer nodo de la red. El metodo incluye ademas invocar un motor de decision para simular como recorrera el paquete una red virtual. La simulacion puede incluir acceder a una tabla de enrutamiento virtual para determinar un siguiente salto para el paquete, en la que el siguiente salto es o bien un puerto orientado hacia el interior (tambien denominado puerto logico) o bien un puerto orientado hacia el exterior (tambien denominado puerto materializado), y continuar accediendo a tablas de enrutamiento virtuales posteriores en serie hasta que se determina que el siguiente salto es un puerto orientado hacia el exterior en un segundo nodo de la red. Tras haber determinado el motor de decision como procesar el paquete, el paquete puede enviarse por la red subyacente al puerto orientado hacia el exterior del segundo nodo. En realizaciones, la red subyacente puede ser una red de Ethernet, una red de IP privada o publica, u otra red que proporciona conectividad entre la pluralidad de nodos.
En una realizacion, cada nodo de la red contiene un conector de borde. Cada conector de borde contiene una implementacion de un conmutador configurable de flujo y motor de decision que se ejecutan en el mismo nodo o anfitrion ffsico. En una realizacion, un conmutador configurable de flujo puede comprender software tal como Open vSwitch. El motor de decision puede simular uno o mas conmutadores L2 virtuales y enrutadores L3 virtuales. Un conector de borde puede tener interfaces ffsicas, interfaces virtuales o ambas. Las interfaces virtuales son interfaces tales como, por ejemplo, interfaces de escucha o interfaces virtuales a nivel de nucleo. Las interfaces ffsicas son, por ejemplo, una tarjeta de interfaz de red ffsica (NIC).
Un conmutador configurable de flujo es un componente de software que aplica una lista de acciones a todos los paquetes que coinciden con una regla de flujo. Asociada con una lista de acciones hay una coincidencia de flujo que especifica que paquetes coinciden con el flujo. En algunas realizaciones, la coincidencia de flujo puede especificarse mediante un patron de cabecera de protocolo de paquete. La coincidencia de flujo puede basarse en una o mas porciones de los datos de paquete, incluyendo, por ejemplo, los puertos de origen y destino, direcciones de origen y destino, direccion MAC. La coincidencia de flujo tambien puede basarse en combinaciones de datos de paquete o subconjuntos de datos de paquete, tales como una porcion de las direcciones de origen o destino. Una regla de flujo puede comprender al menos una coincidencia de flujo y una lista de acciones, y puede denominarse “flujo”. Dos flujos (uno entrante, uno saliente) forman una conexion. Generalmente, dos flujos, un flujo entrante y un flujo saliente, forman una conexion para comunicaciones entre un cliente fuera de la red y una maquina virtual del titular u otro servicio proporcionado dentro de la red. Cada flujo representado por una o mas reglas de flujo puede almacenarse en un estado distribuido mantenido en una base de datos compartida. En una realizacion, cada flujo se almacena en un estado distribuido mantenido en un nodo de la red accesible por todos los demas nodos que requieren acceso al estado distribuido. Los flujos almacenados pueden indexarse mediante su coincidencia de flujo o mediante otros criterios asociados con las reglas de flujo.
En una realizacion, puede mantenerse una tabla de flujo que copia en memoria cache las decisiones de enrutamiento realizadas para el primer paquete en una direccion de una conexion. La tabla de flujo se mantiene dentro del conmutador configurable de flujo. La red puede tener multiples puntos de acceso posibles a la red externa, y las conexiones no necesitan usar la misma ruta virtual entrante como saliente. Permitir diferentes rutas entrantes y salientes puede mejorar la tolerancia a fallos del sistema en caso de interrupciones en determinadas porciones de la red. Permitir diferentes rutas entrantes y salientes tambien puede permitir un uso mejorado de recursos de red equilibrando cargas entre diferentes trayectorias en la red.
La red tambien puede comprender elementos de reenvfo que enrutan y conmutan paquetes entre los nodos de la red. Los elementos de reenvfo pueden ser conmutadores l2, enrutadores L3 o combinaciones de conmutadores L2 y enrutadores L3. Los elementos de reenvfo pueden ser o bien ffsicos o bien virtuales, y la red puede incluir combinaciones de elementos de reenvfo ffsicos y virtuales. Un elemento de reenvfo ffsico es un componente de hardware, mientras que un elemento de reenvfo virtual puede implementarse en software. En una realizacion, un elemento de reenvfo virtual se implementa usando tablas. Por ejemplo, el motor de decision puede usarse para simular el enrutamiento y la conmutacion de paquetes segun una topologfa virtual establecida para la red.
En la red, pueden conectarse enrutadores virtuales a otros enrutadores virtuales para construir una topologfa de red virtual que puede ilustrarse mediante un grafico de red virtual. Cada enrutador virtual puede tener una pluralidad de puertos virtuales, en el que cada puerto virtual es o bien un puerto orientado hacia el interior (logico) o bien un puerto orientado hacia el exterior (materializado). Por ejemplo, cada enrutador virtual puede incluir una tabla de
enrutamiento virtual, y los puertos orientados hacia el interior pueden identificarse realizando una consulta en la tabla de enrutamiento virtual para determinar el siguiente salto para un paquete que esta enrutandose por el enrutador virtual. Cada consulta puede conducir a un puerto orientado hacia el interior homologo de otro enrutador virtual o un puerto orientado hacia el exterior, permitiendo que el motor de decision simule el recorrido de una topologfa virtual que tiene multiples enrutadores virtuales. En una realizacion, un puerto orientado hacia el exterior puede corresponder a un puerto en un conmutador configurable de flujo, tal como un puerto de tunel. En algunas realizaciones, un puerto orientado hacia el exterior puede corresponder a la ubicacion de un nodo que proporciona conectividad a Internet. En otra realizacion, un puerto orientado hacia el exterior puede corresponder a la ubicacion de una maquina virtual que funciona dentro de la red. Para puertos orientados tanto hacia el interior como hacia el exterior, la configuracion estatica del puerto virtual en el arbol de configuracion compartido contiene explfcitamente el tipo de puerto (es decir, orientado hacia el interior o hacia el exterior) y, en el caso de puertos orientados hacia el interior, el identificador universalmente unico (“port_uuid”) del otro extremo del enlace virtual (es decir el puerto orientado hacia el interior homologo). Adicionalmente, los enrutadores virtuales pueden tener sus propias direcciones IP. Adicionalmente, cada enrutador virtual puede soportar protocolos tales como protocolo de pasarela de frontera (“BGP”) y/o protocolo de pasarela interna (“ iGP”).
En otra realizacion, los conectores de borde pueden tener puertos de tunel que no son puertos de los enrutadores virtuales. El puerto de tunel puede usarse para conectar un conector de borde a otro conector de borde a traves de la red. Por ejemplo, el conmutador configurable de flujo de un conector de borde puede conectarse al conmutador configurable de flujo de otro conector de borde mediante un puerto de tunel. En una realizacion, un paquete puede llegar a un conector de borde destinado a una maquina virtual en otro conector de borde. Cuando un paquete esta destinado a un puerto orientado hacia el exterior en otro conector de borde, se envfa a ese conector de borde a traves de un tunel. Puede mantenerse una tabla en un estado distribuido que mapea puertos a conectores de borde y una tabla que mapea conectores de borde a tuneles. Por tanto un conector de borde puede determinar a traves de que tunel enviar un paquete basandose en un puerto seleccionado (no local). En otra realizacion, el mapeo de puertos orientados hacia el exterior a conectores de borde y de conectores de borde a tuneles puede mantenerse en un nodo independiente, y los conectores de borde pueden comunicarse con el nodo independiente para determinar el tunel apropiado para un paquete.
En una realizacion, los conectores de borde en cada nodo tienen acceso a un estado distribuido, que puede almacenarse en una base de datos compartida. El estado distribuido se mantiene y comparte por los conectores de borde. El estado distribuido puede contener, por ejemplo, el arbol de configuracion y otros datos referentes a la topologfa de red virtual y/o ffsica. En una realizacion, puede implementarse un estado distribuido usando Zookeeper y memcache. En otra realizacion, parte del estado distribuido es un arbol de configuracion, pero se contemplan otras estructuras tales como tablas de eleccion arbitraria y arboles n-arios. Los conectores de borde pueden acceder al arbol de configuracion y a otros datos compartidos segun se necesite, tal como mediante el motor de decision.
El termino “cliente” se usa en el presente documento para indicar un cliente de red externa, tal como un navegador web, que esta intentando alcanzar un servidor albergado dentro del sistema, por ejemplo, para acceder a los servicios de una maquina virtual. El termino “titular” se usa para indicar un cliente del proveedor de servicios. Un titular puede tener una o mas maquinas virtuales u otros servicios que funcionan en maquinas ffsicas dentro del sistema, y puede querer establecer dinamicamente reglas de equilibrio de carga o traduccion de direccion de red (“NAT”) entre estas maquinas virtuales y los clientes.
Haciendo ahora referencia a la figura 7, se ilustra un servidor 101 con dos tarjetas de interfaz de red, NIC A 111 y NIC B 112. Para fines de ilustracion, algunos nodos pueden designarse como nodos perimetrales orientados hacia clientes de Internet, y que proporcionan conectividad a Internet a la red. Otros nodos pueden designarse como nodos anfitriones configurados para albergar maquinas virtuales de titular u otros servicios dentro de la red. Para fines de ilustracion, los nodos perimetrales y nodos anfitriones pueden mostrarse con arquitecturas simetricas, sin embargo, en diversas realizaciones, puede usarse una variedad de arquitecturas para los diversos nodos en el sistema. Aunque se ilustra en cuanto a nodos perimetrales orientados hacia Internet y nodos que albergan maquinas virtuales, el sistema tambien puede contener nodos intermedios incluyendo dispositivos de almacenamiento de datos y servidores de soporte deseados para facilitar el funcionamiento de la red. Tal como se muestra en la figura 7, NIC A 111 tiene una conexion a Internet 151 y NIC B 112 tiene una conexion al tejido de proveedor interno 152 (la red subyacente). El tejido de proveedor interno 152 puede ser una red de IP privada u otra red que proporciona conectividad lP entre los nodos.
El sistema incluye un componente de software que implementa muchas de las caractensticas de la red virtual superpuesta en la red ffsica. Para ilustrar el funcionamiento de los componentes de software, las acciones tras la recepcion de un paquete se describen para operaciones seleccionadas.
En una realizacion, se recibe un paquete SYN para establecer una conexion TCP. El paquete SYN se recibe desde Internet 151 en NIC A 111. Se reciben paquetes por el conector de borde en el conmutador configurable de flujo 161 para su conmutacion. El conmutador configurable de flujo 161 intenta identificar una regla de flujo haciendo coincidir datos asociados con el paquete con las reglas de flujo almacenadas en la tabla de flujo 162. Los datos coincidentes pueden incluir, por ejemplo, puertos de origen y destino, direcciones de red, direcciones MAC u otros datos asociados con el paquete. El paquete SYN es normalmente el primer paquete en un flujo y por tanto el conmutador
configurable de flujo 161 no encuentra una entrada correspondiente al primer paquete en la tabla de flujo 162. Tras no encontrar una entrada correspondiente en la tabla de flujo, el conmutador configurable de flujo 161 realiza una llamada de funcion a un motor de decision 165 y comunica el paquete al motor de decision. El paquete puede llegar a un puerto del conmutador configurable de flujo, y el conmutador configurable de flujo puede comunicar el ID de puerto entrante al motor de decision con el paquete. Aunque la funcion del conmutador programable de flujo y el motor de decision se describen por separado por motivos de claridad, resultara evidente que los componentes de software pueden integrarse segun se desee. Alternativamente, cada componente puede dividirse o combinarse con otros componentes siempre que se mantengan las funciones del componente. En una realizacion, el motor de decision se comunica con el conmutador configurable de flujo 161 a traves del protocolo OpenFlow y traduce el ID de puerto entrante del conmutador configurable de flujo en un ID de puerto virtual (“vport”). Alternativamente, este mapeo puede basarse en direccion MAC o credenciales 802.1x en lugar del ID de puerto entrante. El resto del enrutamiento del paquete puede depender de su informacion L3. El motor de decision 165 tiene la logica para simular la ruta del paquete a traves de la topologfa de red virtual. En una realizacion, solo el primer paquete de una conexion provocara una llamada al motor de decision, puesto que, una vez creado el flujo en la tabla de flujo 162 ese flujo puede aplicarse a paquetes posteriores del mismo flujo.
Para crear una regla de flujo asociada con un nuevo flujo, en una realizacion el motor de decision construye una lista de acciones que indica como procesar y reenviar el paquete y la inserta como una regla de flujo en la tabla de flujo. En paquetes posteriores que coinciden con los criterios para ese flujo se aplica la lista de acciones, que puede incluir enrutar el paquete a un puerto dado. Si el paquete estaba destinado a otro conector de borde que se ejecuta en otro servidor, puede enrutarse al otro conector de borde a traves de un puerto de tunel. Los puertos de tunel pueden conectar conectores de borde o nodos en la red subyacente y se usan para reenviar paquetes entre conectores de borde. En vez de eso, cuando un paquete esta destinado a un puerto virtual en otro conector de borde, se envfa a ese conector de borde a traves de un tunel. El protocolo de tunel es, en una realizacion, GRE+IP. Este protocolo de tunelizacion permite que un conmutador configurable de flujo 161 en un servidor 101 se comunique a traves del tejido de proveedor interno 152 con otro conmutador configurable de flujo (no representado) en otro servidor (no representado). La figura 8 ilustra la interconexion ffsica de una pluralidad de conectores de borde 203, 204, 205 en una pluralidad de anfitriones respectivos 210, 221, 222 conectados mediante el tejido de red L3 interno del proveedor 202. Con el fin de ilustrar, las maquinas virtuales 211 y 212 funcionan en el anfitrion 221, mientras que las maquinas virtuales 213 y 214 funcionan en el anfitrion 222. Una consola de gestion 206 tambien puede estar conectada al tejido de red interno 202, que forma la red subyacente. La figura 9 ilustra la topologfa virtual que esta superpuesta en esta red ffsica. El protocolo de tunelizacion permite que el tejido enrute los paquetes entre conmutadores configurables de flujo sin modificacion del hardware en el tejido de proveedor 152. Puesto que los paquetes reales se desplazan por lP (L3) en contraposicion a Ethernet (L2), la red puede ajustarse a escala y puede no estar limitada por limitaciones de distancia aplicables a comunicaciones por Ethernet. Los puntos finales de los tuneles son puertos en los conmutadores configurables de flujo de los conectores de borde, pero los puertos de tunel se tratan de manera diferente a puertos orientados hacia el exterior. La porcion de lP de la cabecera de paquete de tunel permite que el paquete obtenga el anfitrion correcto, y luego la porcion de GRE de la cabecera sirve para llevar el paquete al puerto de tunel correcto. Aun otra clave en la cabecera sirve para identificar el puerto orientado hacia el exterior de destino, de modo que el conector de borde de recepcion puede enrutar el paquete al puerto local correcto.
Haciendo ahora referencia a la figura 8, se ilustra una red que comprende tres conectores de borde 203, 204 y 205, en la que cada conector de borde reside en un anfitrion. Continuando con el ejemplo anterior, se supone que un paquete se recibio en el conector de borde 203 en una tarjeta de interfaz de red ffsica (NIC) desde Internet 151 a traves del enrutador conectado a Internet 201 y que el paquete esta destinado a la maquina virtual 211. Se recuerda que el paquete es el primer paquete de un flujo, de modo que no hay ninguna regla de flujo correspondiente al paquete en la tabla de flujo. Puesto que no hay ninguna entrada de flujo correspondiente en la tabla de flujo, se invoca el motor de decision. El motor de decision determina un puerto virtual (vport) basandose en el puerto en el que se recibio el paquete por el conmutador configurable de flujo, y posiblemente en la direccion MAC y credenciales 802.1x. El vport en este caso es un puerto orientado hacia el exterior (materializado) correspondiente a una NIC y un puerto en el conmutador configurable de flujo. El motor de decision usa el vport para determinar a que enrutador virtual o conmutador virtual esta conectado el puerto. Tal como se comento anteriormente, un enrutador virtual puede implementarse mediante una tabla accesible para el motor de decision y mantenida en un estado distribuido. Una vez que el motor de decision determina que enrutador virtual esta conectado al puerto orientado hacia el exterior, el motor de decision selecciona una ruta coincidente identificando la direccion IP de destino en la tabla de enrutadores virtuales correspondiente. En una realizacion, el motor de decision puede seleccionar una ruta a partir de varias rutas, o varias rutas de igual coste, usando un algoritmo de equilibrio de carga.
En otra realizacion, cuando el motor de decision accede a una tabla de enrutadores virtuales para consultar una direccion IP, pueden aplicarse procesos de preenrutamiento y posenrutamiento. El proceso de preenrutamiento puede alterar el paquete, incluyendo las direcciones IP de origen y destino y puertos de origen y destino, para realizar la traduccion de direccion de red (“NAT”). El metodo de enrutamiento puede comprender extraer las direcciones IP de origen y destino, consultar las direcciones IP en una tabla de enrutamiento virtual correspondiente a un enrutador virtual, seleccionar un destino (si se encuentra mas de una ruta) y reenviar el paquete al puerto correspondiente a la entrada de ruta. El reenvfo del paquete depende de si el siguiente salto de la ruta coincidente
es un puerto orientado hacia el interior (logico) o un puerto orientado hacia el exterior (materializado). Dado que pueden implementarse enrutadores virtuales como tablas, el enrutamiento entre dos enrutadores virtuales comprende una consulta en tablas de enrutadores virtuales sucesivas. En una realizacion, se mantiene una tabla de enrutamiento global para cada enrutador L3 virtual. La tabla de enrutamiento global puede almacenarse en un estado distribuido en la base de datos compartida. Alternativamente, la tabla de enrutamiento global puede almacenarse en un conector de borde seleccionado. En otra realizacion, la tabla de enrutamiento global se mantiene en cada conector de borde y los conectores de borde actuan conjuntamente para mantener y actualizar la tabla de enrutamiento global en cada uno de los otros conectores de borde en la red.
Haciendo ahora referencia a la figura 9, se ilustra una topologfa virtual que puede superponerse en una red subyacente, tal como la red ffsica de la figura 8. En un ejemplo, un paquete puede llegar a un puerto orientado hacia el exterior asociado con el enrutador L3 virtual 301 y su direccion IP de destino es la direccion IP de la VM 211. El motor de decision puede usar el vport en el que llego el paquete para determinar a que enrutador virtual esta conectado el vport, en este caso el enrutador L3 virtual 301. En una realizacion, el enrutador L3 virtual 301 puede ser un enrutador de proveedor, creado y administrado por el proveedor de servicios que hace funcionar la red. El motor de decision puede usar entonces la direccion IP asociada con el paquete para determinar un puerto de salida para el paquete. Si el puerto de salida es un puerto orientado hacia el exterior local, entonces se establece un flujo en el conmutador configurable de flujo y se enruta el paquete hasta el puerto orientado hacia el exterior local. Si el puerto orientado hacia el exterior no es local, el paquete se enruta fuera de un puerto de tunel segun una tabla de vport a anfitrion y una tabla de anfitrion a puerto de tunel. Si el puerto es un puerto orientado hacia el interior de otro enrutador o conmutador, entonces se repite el mismo proceso de consulta hasta que se identifica un puerto orientado hacia el exterior. Para continuar con la figura 9, la consulta en la tabla del enrutador virtual 301 puede devolver un puerto orientado hacia el interior correspondiente al enrutador virtual 302. Tras, o en combinacion con, la consulta, pueden aplicarse procesos de posenrutamiento al paquete segun se desee. Cuando la consulta devuelve un puerto orientado hacia el interior correspondiente a otro enrutador virtual, en este caso el enrutador L3 virtual 302, el motor de decision puede repetir el mismo proceso para el enrutador virtual 302. El enrutador virtual 302 puede ser, por ejemplo, un enrutador virtual creado por un titular para enrutar trafico entre las maquinas virtuales del titular, las maquinas virtuales 211 y 212. Las maquinas virtuales del titular pueden estar en el mismo anfitrion, o pueden estar ubicadas en anfitriones diferentes dentro de la red. Un titular puede alquilar recursos de red del proveedor de servicios para hacer funcionar cualquier numero de maquinas virtuales u otros servicios dentro de la capacidad de la red sujeta a reglas establecidas por el proveedor de servicios. El motor de decision realiza una simulacion que puede incluir cualquier preenrutamiento asociado con el enrutador L3 virtual 302, consultar la direccion IP en la tabla de enrutamiento virtual para determinar un siguiente salto, y cualquier posenrutamiento. En este ejemplo, el siguiente salto es la maquina virtual 211, que esta albergada en un conector de borde diferente del conector de borde 203. La tabla de enrutadores virtuales para el enrutador virtual 302 proporciona un vport correspondiente a la VM 211 segun se configura por el titular o el proveedor de servicios. En una realizacion, el proveedor de servicios puede mover maquinas virtuales de titular entre diferentes nodos en la red para gestionar el uso de equipos o mantener operaciones durante el mantenimiento o la reparacion de componentes ffsicos en la red. Entonces, el motor de decision consulta la ubicacion ffsica del vport de salida en un diccionario de ubicaciones de puerto mantenido en el estado distribuido. Puesto que todos los paquetes reenviados por los conmutadores son paquetes L2, hay un espacio en los paquetes L2 para direcciones MaC. Sin embargo, puesto que hay puertos de tunel entre dos conmutadores configurables de flujo, las direcciones MAC pueden no ser necesarias para determinadas aplicaciones. Mas espedficamente, en determinadas realizaciones, no hay necesidad de reenviar las direcciones MAC reales puesto que el conector de borde de salida puede construir la direccion MAC basandose en su propia informacion local, usando ARP para determinar la MAC de siguiente salto. En vez de eso, se codifica el vport del destino (en este caso la VM 211) en el espacio para la direccion MAC. Despues se envuelve el paquete en GRE+IP con la direccion IP del nodo perimetral como destino. Ahora el paquete esta listo para enrutarse a traves de la red L3. Haciendo referencia a la figura 7, una lista de acciones que contiene cualquier pre y posenrutamiento y el destino de enrutamiento puede instalarse en la tabla de flujo 162 para hacer coincidir todos los paquetes futuros de este flujo y el paquete puede enviarse hacia fuera a traves del protocolo de tunelizacion y a traves del enrutador de sistema operativo 113 y luego a la NIC B 112. Tras salir de la NIC B 112, el paquete se enruta por el tejido de proveedor interno 152 como se enrutana cualquier otro paquete de lP, con la direccion IP de destino del conector de borde 204.
Cuando se recibe el paquete por el conector de borde 204, se recibe en un tunel correspondiente a un puerto de tunel del conmutador configurable de flujo. Puesto que el paquete se recibe en un puerto de tunel, el conector de borde puede tratar este paquete de manera diferente a un paquete que entra en un puerto orientado hacia el exterior. El paquete es de nuevo el primer paquete recibido en este flujo y el conector de borde 204 invocara el motor de decision. En una realizacion, la clave de tunel codifica el id de vport de destino. El motor de decision puede usar el id de vport para determinar una direccion MAC y el numero de puerto local de la maquina virtual 211. En algunos casos, el motor de decision puede iniciar una peticion de ARP para determinar la direccion MAC de la VM 211. Alternativamente, la direccion MAC puede copiarse en memoria cache en una tabla de ARP. Se mantiene una tabla de ARP (de lP a MAC) por cada puerto de un enrutador virtual. La tabla de ARP puede compartirse en estado distribuido almacenado en una base de datos compartida. Tras haber determinado el motor de decision el vport de la VM 211, el sistema puede instalar un flujo en la tabla de flujo para enrutar futuros paquetes de este flujo. Entonces puede enrutarse el paquete al puerto del conmutador configurable de flujo correspondiente a la VM 211. Aunque la VM 211 es una maquina virtual local que se ejecuta en el anfitrion 221, que tambien alberga el conector de borde
205, el motor de decision todavfa puede usar la direccion IP de destino para encontrar la direccion MAC de destino. De esta manera, el sistema extrae si la VM es local o un puerto convencional a otro enrutador o conmutador demostrando adicionalmente la flexibilidad del sistema.
Una vez que se han establecido los flujos, los paquetes entrantes posteriores en la misma conexion coincidiran con los flujos en la tabla de flujos de los conectores de borde 203 y 204 y se modificaran y reenviaran por los conmutadores configurables de flujo en esas maquinas sin invocar un motor de decision. Este proceso establece el flujo entrante de una conexion a traves del sistema al destino deseado.
Cuando la VM 211 responde en la misma conexion, el primer paquete que envfa desencadenara el sistema para establecer un flujo correspondiente en el sentido opuesto. Cuando se establece un nuevo flujo, el motor de decision puede acceder al estado distribuido para determinar si se establecio anteriormente un flujo en el sentido opuesto. Este estado distribuido facilita la implementacion de otros procesos, tales como NAT y tambien permite que el sistema limpie conexiones terminadas tal como se describe adicionalmente a continuacion. En otras realizaciones, maquinas virtuales albergadas en componentes ffsicos diferentes pueden conectarse al mismo enrutador virtual.
Haciendo ahora referencia a la figura 10, se ilustra un resumen de alto nivel de un proceso que se ejecuta en un conector de borde que realiza una realizacion de metodo descrita anteriormente. En una realizacion, un conector de borde se ejecuta en una maquina ffsica con al menos una CPU que recibe paquetes de una red externa, tal como Internet, en el que los paquetes van dirigidos a una direccion IP asociada con un titular del sistema. Las direcciones IP de titular pueden asignarse a maquinas virtuales de titular que se ejecutan en uno o mas anfitriones dentro del sistema. En una realizacion, la direccion IP asociada con una maquina virtual de titular puede permanecer constante aunque el titular o proveedor de servicios reubique la maquina virtual a un anfitrion diferente dentro del sistema. En una realizacion, el sistema permite que multiples titulares compartan el enlace ascendente de un proveedor de servicios, permitiendo enrutar multiples direcciones IP en un enlace ascendente a diferentes conectores de borde y diferentes maquinas virtuales de titular. Cuando el conector de borde recibe un paquete en la etapa 410, extrae una pluralidad de datos en la etapa 412, incluyendo, pero sin limitarse a, direcciones de origen y destino y puertos de origen y destino. Tras extraer los datos, el conector de borde consulta la pluralidad de datos en una tabla de flujo (etapa 414) y determina si ya se ha establecido el flujo (etapa 416). Un ejemplo de un flujo sena un sentido de una conexion TCP, combinandose un flujo entrante y saliente para formar una unica conexion TCP. Si el flujo ya existe, se aplica la lista de acciones de flujo al paquete y se reenvfa el paquete al puerto del conmutador configurable de flujo indicado por la lista de acciones de flujo en la etapa 418.
Si el flujo no existe, este es el primer paquete en el flujo recibido por el nodo, y el conector de borde debe determinar en la etapa 417 a que puerto virtual llego el paquete, basandose, por ejemplo, en la direccion MAC, direcciones de origen y destino, o puertos de origen y destino. Una vez que el conector de borde determina el ID de puerto virtual, el conector de borde puede determinar a que elemento de reenvfo virtual esta conectado ese puerto. En la realizacion de la figura 10, el elemento de reenvfo virtual es un enrutador virtual, pero pueden usarse otros elementos de reenvfo virtuales, tales como conmutadores virtuales, segun sea necesario en el sistema tal como se comenta a continuacion. Una vez que el conector de borde determina el VFE, el conector de borde realiza otra consulta en la etapa 420. La consulta se realiza consultando la direccion IP de destino en una serie de elementos de reenvfo virtuales. Los elementos de reenvfo virtuales pueden comprender cualquier combinacion de enrutadores virtuales y conmutadores virtuales que incluyen tablas de enrutamiento virtuales para determinar la trayectoria apropiada para el paquete que esta reenviandose. En la realizacion mostrada, en la etapa 420, el motor de decision determina el destino del paquete en un primer elemento de reenvfo virtual. El primer elemento de reenvfo virtual puede ser un enrutador virtual, en cuyo caso el destino devuelto puede ser o bien un puerto orientado hacia el exterior o bien un puerto orientado hacia el interior. Tal como se indico anteriormente, un puerto orientado hacia el interior esta emparejado con otro puerto orientado hacia el interior de un segundo enrutador virtual, y el segundo enrutador virtual tiene otra tabla de enrutamiento. Si se devuelve un puerto orientado hacia el interior, el motor de decision consulta la direccion de destino en la tabla de enrutamiento del segundo enrutador virtual en la etapa 420 y continua hasta que se devuelve un puerto orientado hacia el exterior. En una realizacion, cada titular puede tener un unico enrutador virtual configurado para enrutar todos los paquetes gestionados por ese titular. En otras realizaciones, algunos titulares pueden tener una pluralidad de enrutadores virtuales, conmutadores virtuales u otros elementos de reenvfo virtuales que definen la porcion del titular de la topologfa de red virtual. El motor de decision tambien construye una serie de acciones que van a realizarse en el paquete a partir de cada tabla de enrutamiento virtual. Cada etapa de enrutamiento tambien puede tener procesos preenrutamiento o posenrutamiento que se anaden a la lista de acciones y se incorporan en la regla de flujo que va a aplicarse a los paquetes que coinciden con el flujo.
Una vez que se ha devuelto un puerto orientado hacia el exterior (etapa 424), el conector de borde determina si el puerto orientado hacia el exterior es local (etapa 426). Si el puerto es local, se anade una accion a la lista de acciones (etapa 430) para enrutar el paquete al puerto orientado hacia el exterior local. En diversas realizaciones, el puerto orientado hacia el exterior local puede ser una tarjeta de interfaz de red o maquina virtual. Despues se anade la regla de flujo a la tabla de flujo (etapa 430) y se aplica al paquete (etapa 418). Si el puerto orientado hacia el exterior no es local, entonces el puerto esta en un conector de borde diferente. En una realizacion, los conectores de borde pueden conectarse mediante puertos de tunel, tales como puertos de tunel GRE_IP. En la etapa 432, el conector de borde accede a una tabla de puerto virtual a tunel para intentar mapear el puerto orientado hacia el exterior a un puerto de tunel. Si no hay ninguna entrada correspondiente en el mapeo de tabla de puerto virtual a
tunel, se anade una accion para soltar el paquete y enviar un paquete de ICMP a la lista de acciones (etapa 434), se anade la regla de flujo a la tabla de flujo (etapa 430) y se aplica la regla de flujo al paquete (etapa 418).
Si el puerto orientado hacia el exterior esta en la tabla de puerto orientado hacia el exterior a tunel, entonces se anade una accion para emitir el paquete a ese tunel a la lista de acciones (etapa 436), se anade el flujo a la tabla de flujo (etapa 430), y se aplica la lista de acciones al paquete (etapa 418).
En una realizacion, el sistema instala la lista de acciones y regla de flujo en la trayectoria de datos de conmutador configurable de flujo, y el conmutador configurable de flujo aplica la lista de acciones a cualquier paquete posterior que coincide con la regla de flujo, tal como se muestra en la etapa 416. Tal como se describio anteriormente, parte de la lista de acciones incluye a que puerto del conmutador configurable de flujo debe enviarse el paquete. El conector de borde consulta el puerto en una tabla de puerto a IP de anfitrion, y envfa el paquete a la direccion IP. Despues almacena la lista de acciones en una tabla de flujo. En todos los paquetes posteriores que tienen una pluralidad de datos coincidentes se aplicara el mismo conjunto de acciones, dando como resultado que se enruten a la misma direccion IP.
Durante el proceso de identificar la direccion de destino en los enrutadores virtuales, el flujo puede ser no enrutable, incluirse en un agujero negro o coincidir con una ruta de rechazo, punto en el cual se suelta el paquete, o se devuelven paquetes de ICMP. En esta realizacion, puede crease un flujo para soltar todos los paquetes que coinciden con la regla del flujo. De esta manera, el sistema puede configurarse para gestionar paquetes no enrutables o examinar selectivamente datos no deseados segun reglas establecidas por el proveedor de servicios o titular.
En aun otra realizacion, un conector de borde que alberga VM de titular puede tener multiples direcciones IP y multiples NIC conectadas a la red de tejido interno. En tal caso, los conectores de borde orientados a Internet pueden seleccionar una de multiples trayectorias al conector de borde que alberga VM. Ademas, un conector de borde que alberga VM con multiples direcciones IP puede tener un unico ID para identificar el conector de borde, y el motor de decision que enruta flujos puede seleccionar una de las direcciones IP del conector de borde que alberga VM, por ejemplo usando un algoritmo de equilibrio de carga o de manera aleatoria.
Otra realizacion del sistema puede usar identificadores para los nodos perimetrales distintos de direcciones IP. Por ejemplo, el tejido de red puede basarse en circuito, tal como conmutacion de etiquetas multiprotocolo (“MPLS”) u otro controlador de OpenFlow personalizado con circuitos dedicados entre conectores de borde. En esta realizacion, los circuitos pueden sustituir a los tuneles de GRE entre conmutadores configurables de flujo en nodos perimetrales. En otra realizacion, el sistema proporciona etapas de preenrutamiento y posenrutamiento antes y despues de la etapa de enrutamiento. El preenrutamiento y posenrutamiento pueden usarse para implementar la traduccion de direccion de red (NAT), equilibrado de carga u otras caractensticas L3/L4. En una realizacion, la etapa de preenrutamiento puede cambiar el destino del flujo (como, por ejemplo, en la traduccion de direccion de red) y el enrutamiento saliente puede cambiar el origen del flujo (de nuevo, como ejemplo, la traduccion de direccion de red). Para coordinar los mapeos realizados por los flujos directo e inverso que componen una unica conexion, tal como en una conexion TCP, pueden almacenarse traducciones de conexion en el estado distribuido con un gran tiempo asignado. Estas traducciones tambien pueden limpiarse de manera proactiva cuando el seguimiento de conexion detecta una conexion cerrada de manera limpia.
En una realizacion del presente sistema, se implementa NAT usando transformaciones de preenrutamiento y posenrutamiento. En la configuracion de flujo, la etapa de preenrutamiento de NAT determina si se establecio anteriormente un flujo en el sentido opuesto (entrante frente a saliente) en el estado distribuido y, si es asf, el mapa anteriormente creado se invierte para el nuevo flujo. Puesto que las reglas de flujo se almacenan en el sistema de estado distribuido accesible por todos los nodos, tras la creacion de un nuevo flujo en un nodo diferente, es posible determinar si se creo anteriormente un flujo de sentido opuesto. Si el flujo de sentido opuesto no esta en el estado distribuido, el motor de decision crea una nueva traduccion y almacena su mapa de traduccion en el estado distribuido asociado con el nuevo flujo. Para el flujo entrante, o alternativamente el primer flujo establecido, puede aplicarse la traduccion de direccion a la direccion de destino antes de la etapa de enrutamiento y la etapa de enrutamiento puede enrutar basandose en la direccion IP traducida. En el flujo saliente, o alternativamente el segundo flujo en la conexion, puede realizarse NAT tras el enrutamiento, para traducir la direccion de origen para que sea la direccion IP externa no privada. La informacion de traduccion puede almacenarse en el estado distribuido asociado con la regla de flujo antes de reenviar el paquete inicial del flujo de manera que la informacion de traduccion es accesible cuando se recibe el paquete inicial del flujo inverso en el conector de borde correspondiente. En otra realizacion, la traduccion de direccion de red de destino (DNAT) puede usarse para traducir de una direccion IP publicamente disponible a una direccion de red privada para exponer servicios albergados en una red privada a Internet general. En algunas realizaciones, puede proporcionarse una zona desmilitarizada (DMZ) entre Internet general y la red privada. En un proceso de DNAT, la direccion de destino puede traducirse durante una etapa de preenrutamiento para el flujo entrante, y en el flujo saliente correspondiente, la direccion de origen puede traducirse durante una etapa de posenrutamiento. En una implementacion, la direccion de destino puede ser uno de varios servidores posibles, y el servidor de destino puede seleccionarse mediante un algoritmo de equilibrado de carga, tal
como un algoritmo aleatorio o un algoritmo de rotacion.
En la traduccion de direccion de red de origen (SNAT) multiples clientes en la LAN privada pueden compartir la misma direccion IP publica. Una direccion de origen asociada con conexiones salientes, tales como conexiones desde maquinas virtuales de titular hasta una red externa, puede traducirse a la misma direccion IP en el flujo saliente. En el flujo entrante correspondiente, una direccion IP de destino de paquete puede traducirse a la direccion IP privada correspondiente basandose, por ejemplo, en el numero de puerto y la direccion IP de origen.
En otra realizacion, el sistema puede configurarse para proporcionar simulacion de ARP para redes de area local privadas. El sistema puede permitir que anfitriones de red individuales tales como un invitado de maquina virtual se conecten a un puerto de enrutador virtual sin consumir direcciones de pasarela/radiodifusion suplantando a otros anfitriones individuales cuando el anfitrion implementa ARP para los mismos. En un diseno basado en Ethernet tradicional, esto consumina al menos un intervalo de /30 direcciones, incluyendo la direccion del invitado, la direccion de pasarela, y la direccion de radiodifusion, mas una direccion sin usar.
Como metodo de reducir el numero de direcciones IP consumidas, cada puerto del enrutador puede configurarse con una direccion MAC y un prefijo de red (nw_prefix) y un indicador que indica si hay un anfitrion individual conectado al puerto. La direccion de pasarela usada puede ser la primera direccion en el intervalo de nw_prefix. Si el indicador de anfitrion individual no esta establecido, el enrutador puede gestionar trafico hacia y desde el puerto segun sus reglas de funcionamiento convencionales. Si el indicador de anfitrion individual esta establecido, la porcion de direccion del nw_prefix especifica la direccion del anfitrion de red individual de ese puerto. Los puertos aguas abajo del enrutador pueden configurarse de manera que comprenden nw_prefixes no solapantes con el indicador de anfitrion individual no establecido y puertos con el indicador de anfitrion individual establecido, que pueden compartir intervalos de direccion identicos especificados por sus nw_prefixes. En muchas realizaciones, los intervalos de direccion usados por los puertos de anfitrion individual y no de anfitrion individual no se solaparan.
Si se envfa un paquete de lP entre puertos con el indicador de anfitrion individual establecido, el enrutador puede reenviar el paquete de lP sin comprobar o reducir el tiempo de vida (“TTL”), emulando un conmutador L2. Si se recibe una peticion de ARP desde un puerto con el indicador de anfitrion individual establecido para la direccion asociada con otro puerto de anfitrion individual, el enrutador responde al ARP, suplantando al objetivo. El resultado es que un anfitrion individual que desea enviar trafico a un anfitrion fuera de lo que considera su segmento local implementara ARP para la direccion de pasarela, y el comportamiento normal del enrutador devolvera la MAC de su puerto y entonces el anfitrion enviara sus paquetes de IP. Un anfitrion individual que desea enviar trafico a un anfitrion que considera parte de su segmento local implementara ARP para ese anfitrion directamente. El enrutador respondera a ese ARP si tiene un puerto de anfitrion individual para esa direccion, en cuyo caso el anfitrion enviara entonces sus paquetes de IP. El comportamiento de anfitriones que no estan en un puerto con indicador de anfitrion individual puede permanecer inalterado.
En otra realizacion del sistema, puede usarse el seguimiento de conexiones con estado para realizar el seguimiento del ciclo de vida de conexiones, de manera que datos asociados con esas conexiones pueden limpiarse tras determinados acontecimientos, tales como terminacion de la conexion. Los datos que van a limpiarse pueden incluir diversos datos de estado de conexion datos, incluyendo datos almacenados en el estado distribuido, tales como mapeos de NAT y LB con estado, cuando la conexion se apaga de manera limpia. Si una conexion no se apaga de manera limpia, por ejemplo si uno u otro lado presenta un fallo grave o se desconecta, entonces el estado de conexion puede caducarse tras un tiempo asignado configurable grande. Las conexiones pueden ser conexiones TCP, y estan compuestas por dos flujos, un flujo directo y un flujo de retorno. En el caso de TCP, el sistema puede simular la maquina de estado de conexion TCP con el fin de determinar el estado de conexion.
En aun otra realizacion, el sistema proporciona el flujo de retorno de una conexion que va a gestionarse por un nodo diferente del flujo directo de la conexion. Una conexion de este tipo puede denominarse flujo dividido, caracterizado porque el flujo directo e inverso se gestiona por un motor de decision diferente. En una realizacion, el sistema soporta flujos divididos haciendo que el motor de decision que ve los flujos directo e inverso comunique el cierre de sus lados respectivos. Por ejemplo, el motor de decision que gestiona la FIN del flujo directo puede notificar al motor de decision que gestiona el flujo de retorno que instale una accion que coincida con el ACK de la FIN, o viceversa. Los motores de decision actuan conjuntamente de manera que pueden identificar cuando ambos lados de una conexion se han cerrado y pueden limpiar los datos asociados con la conexion cerrada. Esta comunicacion entre los motores de decision puede producirse a traves del estado compartido en el sistema de estado distribuido. Adicionalmente, el sistema de estado distribuido puede identificar determinadas condiciones, tales como el cierre de ambos lados de una conexion, y puede comunicar notificaciones al motor de decision que gestiona cada uno de los flujos de la comunicacion.
En otra realizacion, cuando un nodo perimetral o conector de borde gestiona la configuracion de un flujo, o bien directo o bien inverso, que forma parte de una conexion que debe seguirse (basandose en si es una conexion TCP, y si se necesita un seguimiento con estado, por ejemplo si la conexion esta sometiendose a NAT), el conector de borde anadira una accion que comprueba el bit de FIN de TCP y emite el paquete FIN. Tras recibir un paquete FIN, el motor de decision que gestiona el flujo inverso puede instalar una accion que comprueba el ACK de la FIN. Cuando el sistema observa el ACK de la FIN, se considera que la conexion esta semiabierta, de manera que no se
espera ningun dato salvo los ACK. Si se reciben datos mediante una conexion semiabierta, el sistema puede generar un error que indica que el sistema experimento una condicion inesperada.
Cuando un motor de decision recibe un nuevo flujo, instalara una regla que comprueba los indicadores RST y FIN de TCP. Si el sistema recibe un paquete RST, modifica la regla de flujo para que la conexion tenga un tiempo asignado corto, ya que la conexion va a terminarse una vez que el homologo reciba el paquete RST. Si el sistema recibe un paquete FIN, inserta en la lista de acciones del flujo de retorno una accion que hace coincidir el numero de secuencia de reconocimiento que es el numero de secuencia del paquete FIN. Si el sistema obtiene un paquete que reconoce una FIN, marca ese lado de la conexion como cerrado. Si ambos lados estan cerrados, modifica la regla de flujo para que la conexion tenga un tiempo asignado corto. En algunos casos, el ACK de la FIN puede soltarse, en cuyo caso el lado que se cierra retransmitira el paquete FIN con el mismo numero de secuencia. Cuando las reglas de flujo caducan, el sistema identifica que se cierra la conexion y puede limpiar datos de estado adicionales tales como seguimiento de NAT.
En otra realizacion del sistema y metodo dados a conocer en el presente documento, se proporciona un conmutador virtual como elemento de reenvfo virtual adicional. El sistema puede transmitir paquetes L2 entre los puertos de los conectores de borde que forman parte de cada conmutador l2 virtual. De esta manera el sistema puede simular el funcionamiento de un conmutador L2 ffsico que transmite paquetes entre NIC conectadas al conmutador ffsico. El sistema tambien puede transmitir paquetes l3 de paquete tal como se describio anteriormente usando enrutadores virtuales. Cuando se configura un flujo, se identifica el UUID de vport entrante a partir del mapeo de una direccion MAC o puerto de entrada. Basandose en este UUID de vport, se determina el dispositivo virtual al que pertenece el vport. Basandose en el tipo de dispositivo virtual (conmutador o enrutador), el paquete o bien se enruta (tal como se describio anteriormente) o bien se conmuta. Es decir, si el paquete es un paquete L3, se gestiona segun el proceso de enrutador virtual descrito anteriormente. Alternativamente, el paquete es un paquete L2 y se procesa mediante un conmutador virtual, tal como se ilustra en las figuras 5 y 6. El proceso ilustrado en las figuras 5 y 6 es sustancialmente similar al proceso ilustrado en la figura 10. Tras haberse determinado el VFE en la etapa 417, el conector de borde determina si el VFE es un enrutador virtual o un conmutador virtual. Si el VFE es un enrutador virtual, el procesamiento continua tal como se describe con respecto a la figura 10. Si el VFE es un conmutador virtual, el procesamiento continua en el punto A (520), conectado al punto A (520) en la figura 12. Tal como se ilustra en la figura 12, si el VFE es un conmutador virtual, entonces el conector de borde determina si la direccion MAC de destino es una direccion de radiodifusion o una direccion MAC de unidifusion (etapa 610). Si la direccion MAC es una direccion de radiodifusion, entonces se envfa el paquete a cada puerto conectado al conmutador virtual (etapa 620). Basandose en cada paquete, esta etapa puede ser identica al proceso de la figura 10 comenzando con la etapa 426. Para cada puerto orientado hacia el exterior que es un miembro del VFE, el paquete se envfa o bien al vport local o bien al puerto de tunel correspondiente a ese puerto orientado hacia el exterior.
Si el paquete no es un paquete de radiodifusion (por ejemplo un paquete de unidifusion), entonces se determina la MAC de destino, por ejemplo, consultando la MAC de destino en una tabla de MAC a vport (etapa 630). Si no hay una entrada correspondiente (sometido a prueba en la etapa 640), entonces se anade una accion de soltar a la lista de acciones (etapa 650). Entonces el procesamiento continua en el punto B en la figura 11, en el que se anade la regla a la tabla de flujo (430) y se aplica la accion al paquete (418).
Si hay un vport correspondiente en la tabla de MAC a vport de la etapa 640, entonces el procesamiento continua en el punto C en la figura 11, el procesamiento continua en la etapa 426, tal como se describio anteriormente.
Haciendo ahora referencia a las figuras 7 y 8, se ilustra otra realizacion del sistema y metodo dados a conocer en el presente documento. Tal como se muestra en la figura 13, una topologfa de red virtual incluye un enrutador virtual de proveedor 900 que tiene multiples conexiones 901 a una red externa, tal como Internet general 902. En esta configuracion la red virtual esta dotada de multiples trayectorias de comunicacion a la red externa permitiendo flexibilidad y redundancia en el sistema. El enrutador virtual de proveedor 900 puede tener una pluralidad de puertos orientados hacia el exterior correspondientes a una pluralidad de nodos perimetrales, en el que un nodo perimetral es un componente ffsico que proporciona acceso a la red externa. En una realizacion, un nodo perimetral puede ser un servidor o enrutador orientado hacia Internet. La topologfa de red virtual tambien puede comprender una pluralidad de enrutadores virtuales de titular. En una configuracion, cada enrutador virtual de titular puede estar asociado con un centro de datos virtual de titular. Tal como se muestra en la figura 13, un centro de datos virtual de primer titular 903 puede incluir un enrutador virtual de primer titular 904 en comunicacion con una pluralidad de maquinas virtuales de primer titular 905. Las maquinas virtuales de primer titular 905 tambien pueden comunicarse con un conmutador virtual de titular 906, que puede ser un conmutador de Ethernet virtual tal como se ilustra. Las maquinas virtuales de primer titular 905 pueden residir en uno o mas de un servidor o nodo anfitrion en la red.
Tal como tambien se muestra en la figura 13, la topologfa de red virtual puede tener un centro de datos virtual de segundo titular 907, que incluye un enrutador virtual de segundo titular 910 en comunicacion con el enrutador virtual de proveedor 900 y una pluralidad de maquinas virtuales de segundo titular 909. La pluralidad de maquinas virtuales de segundo titular 909 tambien pueden comunicarse con un conmutador virtual de segundo titular 908, que puede ser un conmutador de Ethernet virtual tal como se ilustra.
Los enrutadores virtuales tambien pueden realizar funciones adicionales tales como equilibrado de carga, DHCP y/o
traduccion de direccion de red segun desee cada titular. Aunque solo se ilustra un enrutador virtual para cada titular, en otras realizaciones, un titular puede emplear una pluralidad de enrutadores virtuales creando una topolog^a de red virtual espedfica de titular. Una topologfa de red virtual espedfica de titular puede proporcionar organizacion de maquinas virtuales de titular en disposiciones deseadas o proporcionar aislamiento entre maquinas virtuales controladas por el mismo titular, tal como cuando un titular esta usando la red para albergar multiples procesos empresariales o funciones diferenciadas.
En otra realizacion, un enrutador virtual de titular puede proporcionar acceso seguro a una oficina de titular remota u otra ubicacion. Tal como se ilustra, el enrutador virtual de segundo titular 910 proporciona una conexion al enrutador de VPN de segundo titular 911 y la red de oficina de segundo titular 912 en la oficina de segundo titular 913. De esta manera, cada titular puede definir la configuracion de su centro de datos virtual. Por tanto, un proveedor de servicios que usa el sistema y metodo dados a conocer en el presente documento puede proporcionar muchas soluciones personalizables por el titular en una red ffsica.
Haciendo ahora referencia a la figura 14, la topologfa de red virtual ilustrada en la figura 13 se muestra superpuesta en una red ffsica. La red ffsica puede comprender una pluralidad de nodos perimetrales 920 configurados para acceder a una red externa, tal como Internet 902. La red ffsica tambien puede incluir una pluralidad de nodos anfitriones 921 configurados para albergar maquinas virtuales. La red 922 puede interconectar la pluralidad de nodos perimetrales 920 y la pluralidad de nodos anfitriones 921 y estar adaptada para transportar paquetes de datos a traves del sistema. En una realizacion, la red puede ser una red de IP privada. Los nodos perimetrales 920 y los nodos anfitriones 921 pueden tener arquitecturas simetricas. En una realizacion, los nodos perimetrales 920 y los nodos anfitriones 921 son servidores de uso general configurados para funcionar en un sistema informatico en la nube. En otra realizacion, los nodos perimetrales 920 son enrutadores orientados hacia Internet dedicados. En aun otra realizacion, un servidor u otro dispositivo informatico puede funcionar como nodo perimetral y como nodo anfitrion en la misma red. El sistema tambien incluye un sistema de estado distribuido en comunicacion con cada uno de los nodos perimetrales y cada uno de los nodos anfitriones a traves de la red. El sistema de estado distribuido puede almacenar datos asociados con la topologfa de red virtual y puede almacenarse en una base de datos compartida. El sistema puede incluir un componente de software que funciona en cada uno de los nodos y que implementa la topologfa de red virtual que incluye el enrutador virtual de proveedor y cada uno de los enrutadores virtuales de titular. A medida que se configuran nuevas rutas, el componente de software que funciona en cada uno de los nodos puede comunicarse con el sistema de estado distribuido de manera que el estado distribuido mantiene un mapeo exhaustivo de la topologfa de red virtual y reglas de flujo para el sistema. En otros ejemplos, el sistema de estado distribuido puede subdividirse de manera que se mantienen multiples estados distribuidos para porciones seleccionadas de la red virtual.
Tal como se ilustra en la figura 14, la topologfa de red virtual esta superpuesta en la red ffsica. El enrutador virtual de proveedor puede tener un puerto orientado hacia el exterior asociado con cada uno de los nodos perimetrales 920. Los puertos orientados hacia el exterior del enrutador virtual de proveedor 900 pueden mapearse a uno o mas puntos de acceso para proveedores de servicio de Internet y proporcionar multiples conexiones entre el sistema y una red externa, tal como Internet. El enrutador virtual de proveedor 900 tambien puede tener puertos interiores que definen enlaces virtuales a puertos orientados hacia el interior homologos correspondientes de enrutadores virtuales de titular. Tal como se ilustra, puede seleccionarse el rendimiento de cada enlace virtual en el sistema. Por ejemplo, el proveedor de servicios puede proporcionar un enlace virtual de 50 Mbps al enrutador virtual de primer titular 904, pero proporcionar un enlace virtual de 10 Mbps al enrutador virtual de segundo titular 910. Como los enlaces virtuales son configurables, si el segundo titular desea adquirir un mayor rendimiento para su centro de datos virtual, el proveedor de servicios puede modificar el rendimiento disponible sin modificar el hardware.
En la realizacion ilustrada, cada nodo anfitrion 920 alberga una maquina virtual asociada con el primer titular y una maquina virtual asociada con el segundo titular. Usando la topologfa de red virtual, el proveedor de servicios puede reasignar maquinas virtuales de titular entre nodos anfitriones disponibles sin reconfigurar el hardware de la red ffsica. La topologfa de red virtual almacenada en el sistema de estado distribuido permite reconfigurar dinamicamente el sistema.
En otra realizacion, cada uno de la pluralidad de enrutadores virtuales de titular puede configurarse para exponer al menos una direccion IP publica y puede configurarse para acceder a una red externa a traves de uno o mas de la pluralidad de nodos perimetrales. Permitiendo que cada centro de datos virtual de titular acceda a la red externa a traves de una pluralidad de nodos perimetrales, es menos probable que el fallo de un unico nodo perimetral interrumpa la disponibilidad de los servicios del titular que funcionan en la red.
Tal como se usan en el presente documento, los terminos “cache”, “copiar en memoria cache” u otras variaciones se refieren a todas las formas de almacenamiento de datos temporal independientemente de si los datos se almacenan en memoria expffcitamente designada como cache.
Claims (1)
- REIVINDICACIONESUn sistema informatico que comprende:una pluralidad de nodos (54, 73, 80, 210, 221, 222) interconectados mediante una red subyacente (53, 79, 202), en el que cada nodo incluye una o mas interfaces de red (55, 74, 75, 81), estando conectada la una o mas interfaces de cada nodo a la red subyacente,una pluralidad de dispositivos virtuales (211, 212, 213, 214) que se simulan en al menos uno de la pluralidad de nodos, teniendo cada dispositivo virtual una pluralidad de puertos virtuales, en el que cada puerto virtual corresponde a uno de un puerto orientado hacia el exterior o un puerto orientado hacia el interior, correspondiendo cada puerto orientado hacia el exterior a una de las interfaces de red de los nodos de la red subyacente, teniendo cada puerto orientado hacia el interior un enlace virtual con otro puerto orientado hacia el interior de los dispositivos de red virtuales yuna base de datos compartida (61, 86) que almacena una pluralidad de reglas de flujo y una topologfa de red virtual que incluye una configuracion de los puertos virtuales y los dispositivos virtuales, incluyendo la configuracion, para cada uno de los puertos virtuales, una identificacion del puerto virtual como una de un puerto orientado hacia el exterior o un puerto orientado hacia el interior, siendo la base de datos compartida accesible por la pluralidad de nodos,estando caracterizado el sistema informatico por que comprende ademasun motor de decision (78, 84, 165) operable para:simular un recorrido de un paquete de red de la topologfa de red virtual desde un puerto orientado hacia el exterior de entrada de un primer dispositivo virtual hasta un puerto orientado hacia el exterior de salida de un ultimo dispositivo virtual, en el que el puerto orientado hacia el exterior de salida del ultimo dispositivo virtual corresponde a una interfaz de red en la que el paquete de red se emitira desde la red subyacente, determinar un patron de cabecera de paquete identificando cada campo de la cabecera de protocolo del paquete que se lee durante la simulacion del recorrido, en el que el patron de cabecera de protocolo de paquete incluye un comodm para cualquier campo de la cabecera de protocolo del paquete que no se lee durante la simulacion del recorrido,determinar una modificacion de cabecera de protocolo que va a aplicarse al paquete de red basandose en una configuracion de cada dispositivo virtual recorrido por el paquete durante la simulacion del recorrido, comunicar el patron de cabecera de protocolo de paquete y la modificacion de cabecera de protocolo determinada a la base de datos compartida,almacenar el patron de cabecera de protocolo de paquete y la modificacion de cabecera de protocolo determinada como una regla de flujo en la base de datos compartida;tras recibir un paquete posterior, seleccionar una regla de flujo desde la base de datos compartida haciendo coincidir una cabecera del paquete posterior con el patron de cabecera de protocolo de paquete almacenado, yaplicar la modificacion de cabecera de protocolo determinada de la regla de flujo seleccionada a paquetes posteriores que coinciden con el patron de cabecera de protocolo de paquete de manera que el paquete se entrega al segundo nodo de la red subyacente y se emite desde la segunda interfaz de red,estando determinada la simulacion del recorrido de la topologfa de red virtual en parte consultando la base de datos compartida usando un campo de la cabecera de protocolo del paquete de red.El sistema informatico segun la reivindicacion 1, en el que el motor de decision es operable adicionalmente para simular un puente de aprendizaje de MAC que tiene una tabla de aprendizaje de MAC y actualizar la tabla de aprendizaje de MAC del puente de aprendizaje de MAC en la base de datos compartida.El sistema informatico segun la reivindicacion 1 o 2, en el que el motor de decision es operable adicionalmente para identificar paquetes de IP que estan encapsulados en una trama de Ethernet de encapsulamiento y extraer una direccion IP de origen y una direccion MAC de origen de la trama de Ethernet de encapsulamiento, y actualizar una memoria cache de ARP de un puente virtual para asociar la direccion IP y la direccion MAC identificadas.El sistema informatico segun una de las reivindicaciones 1 a 3, en el que el motor de decision esta configurado adicionalmente para simular al menos uno de un filtro de entrada y un filtro de salida de al menos un dispositivo virtual, en el que cada filtro esta adaptado para someter a prueba los paquetes para una condicion especificada e incluye reglas de filtrado que van a aplicarse a paquetes que coinciden con la condicion especificada.El sistema informatico segun una de las reivindicaciones 1 a 4, en el que el motor de decision esta configurado adicionalmente para simular la aplicacion de una traduccion de direccion de red a paquetes recibidos por al menos uno de los dispositivos virtuales y almacenar la traduccion de direccion de red para paquetes de tanto un flujo directo como un flujo inverso en la base de datos compartida.El sistema informatico segun una de las reivindicaciones 1 a 5, en el que el motor de decision esta configurado ademas para asignar dinamicamente una direccion IP desde un recurso de DHCP hasta una direccion MAC de un remitente en respuesta a una peticion de dicho remitente recibida en un puerto orientado hacia el exterior y almacenar la direccion IP asignada en la base de datos compartida.Un metodo informatico que comprende:recibir un paquete de red que llega en una primera interfaz de red de un primer nodo de una red subyacente (53, 79, 202), comprendiendo la red subyacente una pluralidad de nodos interconectados (54, 73, 80, 210, 221,222);comunicar al menos el paquete y un identificador de la primera interfaz de red a un motor de decision; determinar como debe procesarse el paquete basandose en una simulacion por el motor de decision (78, 84, 165) de un recorrido de una topologfa de red virtual que incluye una pluralidad de dispositivos de red virtuales, en el que el motor de decision se comunica con una base de datos compartida (61, 86) accesible desde la pluralidad de nodos interconectados, almacenando la base de datos compartida una pluralidad de reglas de flujo y la topologfa de red virtual y configuraciones de dispositivo virtual para la pluralidad de dispositivos de red virtuales, teniendo cada dispositivo virtual una pluralidad de puertos virtuales, en el que cada puerto virtual corresponde a uno de un puerto orientado hacia el exterior o un puerto orientado hacia el interior,estando caracterizado el metodo informatico por quecada puerto orientado hacia el exterior corresponde a una de las interfaces de red de los nodos de la red subyacente,por que cada puerto orientado hacia el interior tiene un enlace virtual con otro puerto orientado hacia el interior de los dispositivos de red virtuales;por que la determinacion de como debe procesarse el paquete incluye determinar que el paquete debe emitirse desde una segunda interfaz de red de un segundo nodo de la red subyacente, y determinar como las cabeceras de protocolo de los paquetes deben modificarse antes de la entrega al segundo nodo de la red subyacente,y por que el metodo informatico comprende ademas:crear un patron de cabecera de protocolo de paquete identificando cada campo de la cabecera de paquete que se lee durante la simulacion del recorrido, en el que el patron de cabecera de protocolo de paquete incluye un comodm para cualquier campo de la cabecera de protocolo del paquete que no se lee durante la simulacion del recorrido,determinar una modificacion de cabecera de protocolo que va a aplicarse al paquete de red basandose en una configuracion de cada dispositivo virtual recorrido por el paquete durante la simulacion del recorrido, y comunicar el patron de cabecera de protocolo de paquete y la modificacion de cabecera de protocolo determinada a la base de datos compartida,almacenar el patron de cabecera de protocolo de paquete y la modificacion de cabecera de protocolo determinada como una regla de flujo en la base de datos compartida; yprocesar el paquete basandose en la simulacion, en el que procesar el paquete incluye entregar el paquete al segundo nodo de la red subyacente y emitir el paquete desde la segunda interfaz de red;tras recibir paquete posterior, seleccionar una regla de flujo desde la base de datos compartida haciendo coincidir una cabecera del paquete posterior con el patron de cabecera de protocolo de paquete almacenado, yaplicar la modificacion de cabecera de protocolo determinada de la regla de flujo seleccionada al paquete posterior que coincide con el patron de cabecera de protocolo de paquete de manera que el paquete se entrega al segundo nodo de la red subyacente y se emite desde la segunda interfaz de red.8. El metodo informatico segun la reivindicacion 7, en el que cada nodo de la red subyacente esta configurado para hacer funcionar el motor de decision para realizar la simulacion para determinar como debe procesarse un paquete que llega al nodo.9. El metodo informatico segun la reivindicacion 7 u 8, en el que la determinacion de como debe procesarse el paquete incluye determinar un patron de cabecera de protocolo de paquete a partir de un resultado de la simulacion por el motor de decision para el paquete, comprendiendo ademas el metodo:almacenar el patron de cabecera de protocolo de paquete y el resultado de la simulacion para el paquete, recibir un segundo paquete en el primer nodo de la red subyacente,comparar el segundo paquete con el patron de cabecera de protocolo de paquete,si el segundo paquete coincide con el patron de cabecera de protocolo de paquete, determinar como debe procesarse el segundo paquete recuperando el resultado almacenado de la simulacion para el paquete, y procesar el segundo paquete basandose en el resultado recuperado de la simulacion por el motor de decision para el paquete.10. El metodo informatico segun una de las reivindicaciones 7 a 9en el que la determinacion de como debe procesarse el paquete incluye determinar que el paquete debe emitirse desde una segunda interfaz de red del primer nodo de la red subyacente, yen el que el procesamiento del paquete incluye emitir el paquete desde la segunda interfaz de red.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161514990P | 2011-08-04 | 2011-08-04 | |
PCT/US2012/049692 WO2013020126A1 (en) | 2011-08-04 | 2012-08-06 | System and method for implementing and managing virtual networks |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2713078T3 true ES2713078T3 (es) | 2019-05-17 |
Family
ID=47629723
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES12819833T Active ES2713078T3 (es) | 2011-08-04 | 2012-08-06 | Sistema y método para implementar y gestionar redes virtuales |
Country Status (6)
Country | Link |
---|---|
US (2) | US9900224B2 (es) |
EP (1) | EP2740242B8 (es) |
JP (1) | JP6080313B2 (es) |
ES (1) | ES2713078T3 (es) |
TW (1) | TWI583151B (es) |
WO (1) | WO2013020126A1 (es) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11438374B2 (en) * | 2015-08-18 | 2022-09-06 | Acronis International Gmbh | Agentless security of virtual machines for outbound transmissions using a network interface controller |
Families Citing this family (492)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080104022A1 (en) | 2006-10-31 | 2008-05-01 | Bank Of America Corporation | Document indexing and delivery system |
US9456054B2 (en) | 2008-05-16 | 2016-09-27 | Palo Alto Research Center Incorporated | Controlling the spread of interests and content in a content centric network |
US8923293B2 (en) | 2009-10-21 | 2014-12-30 | Palo Alto Research Center Incorporated | Adaptive multi-interface use for content networking |
JP6080313B2 (ja) | 2011-08-04 | 2017-02-15 | ミドクラ エスエーアールエル | 仮想ネットワークを実装及び管理するシステム及び方法 |
EP3605969B1 (en) * | 2011-08-17 | 2021-05-26 | Nicira Inc. | Distributed logical l3 routing |
US10091028B2 (en) | 2011-08-17 | 2018-10-02 | Nicira, Inc. | Hierarchical controller clusters for interconnecting two or more logical datapath sets |
EP2748714B1 (en) | 2011-11-15 | 2021-01-13 | Nicira, Inc. | Connection identifier assignment and source network address translation |
US9106576B2 (en) * | 2012-01-13 | 2015-08-11 | Nec Laboratories America, Inc. | Policy-aware based method for deployment of enterprise virtual tenant networks |
US9127638B2 (en) | 2012-02-08 | 2015-09-08 | Denso Corporation | Control apparatus for internal combustion engine |
US9022010B2 (en) | 2012-02-08 | 2015-05-05 | Denso Corporation | Ignition system |
US9898317B2 (en) | 2012-06-06 | 2018-02-20 | Juniper Networks, Inc. | Physical path determination for virtual network packet flows |
WO2014032174A1 (en) * | 2012-08-31 | 2014-03-06 | Bce Inc. | Ip mpls pop virtualization and fault tolerant virtual router |
EP2893674B1 (en) * | 2012-09-04 | 2017-08-23 | Telefonaktiebolaget LM Ericsson (publ) | A method of operating a switch or access node in a network and a processing apparatus configured to implement the same |
US9038151B1 (en) * | 2012-09-20 | 2015-05-19 | Wiretap Ventures, LLC | Authentication for software defined networks |
US9280546B2 (en) | 2012-10-31 | 2016-03-08 | Palo Alto Research Center Incorporated | System and method for accessing digital content using a location-independent name |
US9400800B2 (en) | 2012-11-19 | 2016-07-26 | Palo Alto Research Center Incorporated | Data transport by named content synchronization |
US9166947B1 (en) * | 2012-11-21 | 2015-10-20 | Amazon Technologies, Inc. | Maintaining private connections during network interface reconfiguration |
US9503276B2 (en) * | 2012-12-12 | 2016-11-22 | Pismo Labs Technology Limited | Method and system to reduce wireless network packets for centralised layer two network |
US10430839B2 (en) | 2012-12-12 | 2019-10-01 | Cisco Technology, Inc. | Distributed advertisement insertion in content-centric networks |
EP2747386A1 (en) * | 2012-12-20 | 2014-06-25 | Telefonica S.A. | Method and System for the creation, modification and removal of a distributed virtual customer premises equipment |
EP2939131A4 (en) * | 2012-12-27 | 2016-08-17 | Intel Corp | RESERVATION AND EXECUTION RECORDING OF SYSTEM OWN COMPUTER DEVICES |
CN103152267B (zh) * | 2013-02-04 | 2017-02-22 | 华为技术有限公司 | 路由管理方法及路由方法及网络控制器及路由器 |
US9384454B2 (en) * | 2013-02-20 | 2016-07-05 | Bank Of America Corporation | Enterprise componentized workflow application |
CN104022953B (zh) * | 2013-02-28 | 2018-02-09 | 新华三技术有限公司 | 基于开放流Openflow的报文转发方法和装置 |
US20140282542A1 (en) * | 2013-03-14 | 2014-09-18 | Infinio Systems Inc. | Hypervisor Storage Intercept Method |
US10541898B2 (en) * | 2013-03-15 | 2020-01-21 | Brian Weinberg | System and method for creating, deploying, and administering distinct virtual computer networks |
US9978025B2 (en) | 2013-03-20 | 2018-05-22 | Cisco Technology, Inc. | Ordered-element naming for name-based packet forwarding |
US11165660B2 (en) * | 2013-05-07 | 2021-11-02 | International Business Machines Corporation | Dynamically grouping monitored resources in a cloud environment to collections representing a composite application |
US9225638B2 (en) | 2013-05-09 | 2015-12-29 | Vmware, Inc. | Method and system for service switching using service tags |
US10212238B2 (en) * | 2013-05-15 | 2019-02-19 | Level 3 Communications, Llc | Selecting a content providing server in a content delivery network |
US9935791B2 (en) | 2013-05-20 | 2018-04-03 | Cisco Technology, Inc. | Method and system for name resolution across heterogeneous architectures |
US9014007B2 (en) * | 2013-05-31 | 2015-04-21 | Dell Products L.P. | VXLAN based multicasting systems having improved load distribution |
US9135042B2 (en) * | 2013-06-13 | 2015-09-15 | International Business Machines Corporation | Provisioning a secure customer domain in a virtualized multi-tenant environment |
US9413485B2 (en) * | 2013-06-24 | 2016-08-09 | Nec Corporation | Network followed by compute load balancing procedure for embedding cloud services in software-defined flexible-grid optical transport networks |
CN104253770B (zh) * | 2013-06-27 | 2017-07-14 | 新华三技术有限公司 | 实现分布式虚拟交换机系统的方法及设备 |
US9467366B2 (en) * | 2013-07-03 | 2016-10-11 | Avaya Inc. | Method and apparatus providing single-tier routing in a shortest path bridging (SPB) network |
US9407580B2 (en) | 2013-07-12 | 2016-08-02 | Nicira, Inc. | Maintaining data stored with a packet |
US9344349B2 (en) | 2013-07-12 | 2016-05-17 | Nicira, Inc. | Tracing network packets by a cluster of network controllers |
US9282019B2 (en) | 2013-07-12 | 2016-03-08 | Nicira, Inc. | Tracing logical network packets through physical network |
CN105393515B (zh) * | 2013-07-26 | 2019-05-10 | 中兴通讯(美国)公司 | 自适应软件定义的联网控制器及用于虚拟化联网的系统 |
US9444722B2 (en) | 2013-08-01 | 2016-09-13 | Palo Alto Research Center Incorporated | Method and apparatus for configuring routing paths in a custodian-based routing architecture |
US9787546B2 (en) * | 2013-08-07 | 2017-10-10 | Harris Corporation | Network management system generating virtual network map and related methods |
US9473573B2 (en) * | 2013-08-07 | 2016-10-18 | Nec Corporation | Network followed by compute load balancing procedure for embedding cloud services in software-defined flexible-grid optical transport networks |
US9887960B2 (en) | 2013-08-14 | 2018-02-06 | Nicira, Inc. | Providing services for logical networks |
US9952885B2 (en) | 2013-08-14 | 2018-04-24 | Nicira, Inc. | Generation of configuration files for a DHCP module executing within a virtualized container |
US9432204B2 (en) | 2013-08-24 | 2016-08-30 | Nicira, Inc. | Distributed multicast by endpoints |
US9548965B2 (en) | 2013-08-26 | 2017-01-17 | Nicira, Inc. | Proxy methods for suppressing broadcast traffic in a network |
US9503371B2 (en) | 2013-09-04 | 2016-11-22 | Nicira, Inc. | High availability L3 gateways for logical networks |
US9577845B2 (en) | 2013-09-04 | 2017-02-21 | Nicira, Inc. | Multiple active L3 gateways for logical networks |
US10298416B2 (en) | 2013-09-05 | 2019-05-21 | Pismo Labs Technology Limited | Method and system for converting a broadcast packet to a unicast packet at an access point |
CN104468462B (zh) * | 2013-09-12 | 2017-12-15 | 新华三技术有限公司 | 分布式虚拟交换机系统的报文转发方法及设备 |
CN104468358B (zh) * | 2013-09-25 | 2018-05-11 | 新华三技术有限公司 | 分布式虚拟交换机系统的报文转发方法及设备 |
US10033693B2 (en) | 2013-10-01 | 2018-07-24 | Nicira, Inc. | Distributed identity-based firewalls |
US9455901B2 (en) | 2013-10-04 | 2016-09-27 | Nicira, Inc. | Managing software and hardware forwarding elements to define virtual networks |
US9785455B2 (en) * | 2013-10-13 | 2017-10-10 | Nicira, Inc. | Logical router |
US9264330B2 (en) | 2013-10-13 | 2016-02-16 | Nicira, Inc. | Tracing host-originated logical network packets |
US10063458B2 (en) | 2013-10-13 | 2018-08-28 | Nicira, Inc. | Asymmetric connection with external networks |
US9998530B2 (en) | 2013-10-15 | 2018-06-12 | Nicira, Inc. | Distributed global load-balancing system for software-defined data centers |
CN104580025B (zh) * | 2013-10-18 | 2018-12-14 | 华为技术有限公司 | 用于开放流网络中建立带内连接的方法和交换机 |
CN104572243B (zh) * | 2013-10-25 | 2017-09-29 | 国际商业机器公司 | 用于共享Java虚拟机的方法和系统 |
TWI493377B (zh) * | 2013-10-28 | 2015-07-21 | Chunghwa Telecom Co Ltd | A kind of cloud ARP and IP spoofing protection system |
US9407549B2 (en) | 2013-10-29 | 2016-08-02 | Palo Alto Research Center Incorporated | System and method for hash-based forwarding of packets with hierarchically structured variable-length identifiers |
US9276840B2 (en) | 2013-10-30 | 2016-03-01 | Palo Alto Research Center Incorporated | Interest messages with a payload for a named data network |
CN104601346B (zh) | 2013-10-30 | 2018-09-11 | 联想企业解决方案(新加坡)私人有限公司 | 管理交换机的网络连接的方法和装置 |
US9401864B2 (en) | 2013-10-31 | 2016-07-26 | Palo Alto Research Center Incorporated | Express header for packets with hierarchically structured variable-length identifiers |
WO2015066208A1 (en) | 2013-11-04 | 2015-05-07 | Illumio, Inc. | Pairing in a distributed network management system that uses a logical multi-dimensional label-based policy model |
US9686581B2 (en) | 2013-11-07 | 2017-06-20 | Cisco Technology, Inc. | Second-screen TV bridge |
US10101801B2 (en) | 2013-11-13 | 2018-10-16 | Cisco Technology, Inc. | Method and apparatus for prefetching content in a data stream |
US10129365B2 (en) | 2013-11-13 | 2018-11-13 | Cisco Technology, Inc. | Method and apparatus for pre-fetching remote content based on static and dynamic recommendations |
US9311377B2 (en) | 2013-11-13 | 2016-04-12 | Palo Alto Research Center Incorporated | Method and apparatus for performing server handoff in a name-based content distribution system |
US10089655B2 (en) | 2013-11-27 | 2018-10-02 | Cisco Technology, Inc. | Method and apparatus for scalable data broadcasting |
TW201521405A (zh) | 2013-11-29 | 2015-06-01 | 萬國商業機器公司 | 查找網路纜線連接器之方法、資訊設備及程式產品 |
US9503358B2 (en) | 2013-12-05 | 2016-11-22 | Palo Alto Research Center Incorporated | Distance-based routing in an information-centric network |
US10193771B2 (en) | 2013-12-09 | 2019-01-29 | Nicira, Inc. | Detecting and handling elephant flows |
US9967199B2 (en) | 2013-12-09 | 2018-05-08 | Nicira, Inc. | Inspecting operations of a machine to detect elephant flows |
US9602385B2 (en) | 2013-12-18 | 2017-03-21 | Nicira, Inc. | Connectivity segment selection |
US9602392B2 (en) | 2013-12-18 | 2017-03-21 | Nicira, Inc. | Connectivity segment coloring |
US11349806B2 (en) | 2013-12-19 | 2022-05-31 | Vmware, Inc. | Methods, apparatuses and systems for assigning IP addresses in a virtualized environment |
US9379979B2 (en) * | 2014-01-14 | 2016-06-28 | Palo Alto Research Center Incorporated | Method and apparatus for establishing a virtual interface for a set of mutual-listener devices |
US9407504B1 (en) * | 2014-01-15 | 2016-08-02 | Cisco Technology, Inc. | Virtual links for network appliances |
US9444723B1 (en) * | 2014-01-15 | 2016-09-13 | Cisco Technology, Inc. | Passing data over virtual links |
US10098051B2 (en) | 2014-01-22 | 2018-10-09 | Cisco Technology, Inc. | Gateways and routing in software-defined manets |
US10172068B2 (en) | 2014-01-22 | 2019-01-01 | Cisco Technology, Inc. | Service-oriented routing in software-defined MANETs |
US9374304B2 (en) | 2014-01-24 | 2016-06-21 | Palo Alto Research Center Incorporated | End-to end route tracing over a named-data network |
US9954678B2 (en) | 2014-02-06 | 2018-04-24 | Cisco Technology, Inc. | Content-based transport security |
US20170052806A1 (en) * | 2014-02-12 | 2017-02-23 | Nec Corporation | Information processing apparatus, communication method, network control apparatus, network control method, communication system, and program |
JP6310721B2 (ja) * | 2014-02-19 | 2018-04-11 | 国立大学法人京都大学 | 関係性グラフ評価システム |
US9215214B2 (en) | 2014-02-20 | 2015-12-15 | Nicira, Inc. | Provisioning firewall rules on a firewall enforcing device |
US9678998B2 (en) | 2014-02-28 | 2017-06-13 | Cisco Technology, Inc. | Content name resolution for information centric networking |
US10089651B2 (en) | 2014-03-03 | 2018-10-02 | Cisco Technology, Inc. | Method and apparatus for streaming advertisements in a scalable data broadcasting system |
US9836540B2 (en) | 2014-03-04 | 2017-12-05 | Cisco Technology, Inc. | System and method for direct storage access in a content-centric network |
US9419889B2 (en) | 2014-03-07 | 2016-08-16 | Nicira, Inc. | Method and system for discovering a path of network traffic |
US9391896B2 (en) | 2014-03-10 | 2016-07-12 | Palo Alto Research Center Incorporated | System and method for packet forwarding using a conjunctive normal form strategy in a content-centric network |
US9626413B2 (en) | 2014-03-10 | 2017-04-18 | Cisco Systems, Inc. | System and method for ranking content popularity in a content-centric network |
US9473405B2 (en) | 2014-03-10 | 2016-10-18 | Palo Alto Research Center Incorporated | Concurrent hashes and sub-hashes on data streams |
US9225597B2 (en) | 2014-03-14 | 2015-12-29 | Nicira, Inc. | Managed gateways peering with external router to attract ingress packets |
US9313129B2 (en) | 2014-03-14 | 2016-04-12 | Nicira, Inc. | Logical router processing by network controller |
US9419855B2 (en) | 2014-03-14 | 2016-08-16 | Nicira, Inc. | Static routes for logical routers |
US9590901B2 (en) | 2014-03-14 | 2017-03-07 | Nicira, Inc. | Route advertisement by managed gateways |
US9407432B2 (en) | 2014-03-19 | 2016-08-02 | Palo Alto Research Center Incorporated | System and method for efficient and secure distribution of digital content |
US9647883B2 (en) * | 2014-03-21 | 2017-05-09 | Nicria, Inc. | Multiple levels of logical routers |
US9503321B2 (en) | 2014-03-21 | 2016-11-22 | Nicira, Inc. | Dynamic routing for logical routers |
US9916601B2 (en) | 2014-03-21 | 2018-03-13 | Cisco Technology, Inc. | Marketplace for presenting advertisements in a scalable data broadcasting system |
WO2015142404A1 (en) * | 2014-03-21 | 2015-09-24 | Nicira, Inc. | Dynamic routing for logical routers |
CN104954271B (zh) | 2014-03-26 | 2018-11-30 | 国际商业机器公司 | Sdn网络中的数据包处理方法和装置 |
US9363179B2 (en) | 2014-03-26 | 2016-06-07 | Palo Alto Research Center Incorporated | Multi-publisher routing protocol for named data networks |
US9825854B2 (en) | 2014-03-27 | 2017-11-21 | Nicira, Inc. | Host architecture for efficient cloud service access |
US9893988B2 (en) | 2014-03-27 | 2018-02-13 | Nicira, Inc. | Address resolution using multiple designated instances of a logical router |
US9419874B2 (en) | 2014-03-27 | 2016-08-16 | Nicira, Inc. | Packet tracing in a software-defined networking environment |
US9794186B2 (en) | 2014-03-27 | 2017-10-17 | Nicira, Inc. | Distributed network address translation for efficient cloud service access |
JP6211975B2 (ja) * | 2014-03-27 | 2017-10-11 | 株式会社日立製作所 | ネットワーク延伸システム、制御装置、およびネットワーク延伸方法 |
US9413644B2 (en) | 2014-03-27 | 2016-08-09 | Nicira, Inc. | Ingress ECMP in virtual distributed routing environment |
US9338091B2 (en) | 2014-03-27 | 2016-05-10 | Nicira, Inc. | Procedures for efficient cloud service access in a system with multiple tenant logical networks |
US9641435B1 (en) * | 2014-03-28 | 2017-05-02 | Juniper Neworks, Inc. | Packet segmentation offload for virtual networks |
WO2015147859A1 (en) * | 2014-03-28 | 2015-10-01 | Hewlett-Packard Development Company, L.P. | Reconciling information in a controller and a node |
US9363086B2 (en) | 2014-03-31 | 2016-06-07 | Palo Alto Research Center Incorporated | Aggregate signing of data in content centric networking |
US9485191B2 (en) | 2014-03-31 | 2016-11-01 | Juniper Networks, Inc. | Flow-control within a high-performance, scalable and drop-free data center switch fabric |
US9215210B2 (en) | 2014-03-31 | 2015-12-15 | Nicira, Inc. | Migrating firewall connection state for a firewall service virtual machine |
US9703743B2 (en) | 2014-03-31 | 2017-07-11 | Juniper Networks, Inc. | PCIe-based host network accelerators (HNAS) for data center overlay network |
US9294304B2 (en) * | 2014-03-31 | 2016-03-22 | Juniper Networks, Inc. | Host network accelerator for data center overlay network |
US9479457B2 (en) | 2014-03-31 | 2016-10-25 | Juniper Networks, Inc. | High-performance, scalable and drop-free data center switch fabric |
US9906494B2 (en) | 2014-03-31 | 2018-02-27 | Nicira, Inc. | Configuring interactions with a firewall service virtual machine |
US9503427B2 (en) | 2014-03-31 | 2016-11-22 | Nicira, Inc. | Method and apparatus for integrating a service virtual machine |
US9794079B2 (en) | 2014-03-31 | 2017-10-17 | Nicira, Inc. | Replicating broadcast, unknown-unicast, and multicast traffic in overlay logical networks bridged with physical networks |
US9338094B2 (en) * | 2014-03-31 | 2016-05-10 | Dell Products, L.P. | System and method for context aware network |
CN104954281B (zh) * | 2014-03-31 | 2018-08-03 | 中国移动通信集团公司 | 通信方法、系统、资源池管理系统、交换机和控制装置 |
US9807004B2 (en) * | 2014-04-01 | 2017-10-31 | Google Inc. | System and method for software defined routing of traffic within and between autonomous systems with enhanced flow routing, scalability and security |
US9716622B2 (en) | 2014-04-01 | 2017-07-25 | Cisco Technology, Inc. | System and method for dynamic name configuration in content-centric networks |
KR102262183B1 (ko) * | 2014-04-04 | 2021-06-07 | 뉴라컴 인코포레이티드 | 수신 확인 방법 및 다중 사용자 전송 방법 |
US10075521B2 (en) | 2014-04-07 | 2018-09-11 | Cisco Technology, Inc. | Collection synchronization using equality matched network names |
US9473576B2 (en) | 2014-04-07 | 2016-10-18 | Palo Alto Research Center Incorporated | Service discovery using collection synchronization with exact names |
US9390289B2 (en) | 2014-04-07 | 2016-07-12 | Palo Alto Research Center Incorporated | Secure collection synchronization using matched network names |
US9451032B2 (en) | 2014-04-10 | 2016-09-20 | Palo Alto Research Center Incorporated | System and method for simple service discovery in content-centric networks |
US10222935B2 (en) | 2014-04-23 | 2019-03-05 | Cisco Technology Inc. | Treemap-type user interface |
US9992281B2 (en) | 2014-05-01 | 2018-06-05 | Cisco Technology, Inc. | Accountable content stores for information centric networks |
US9609014B2 (en) | 2014-05-22 | 2017-03-28 | Cisco Systems, Inc. | Method and apparatus for preventing insertion of malicious content at a named data network router |
US9455835B2 (en) | 2014-05-23 | 2016-09-27 | Palo Alto Research Center Incorporated | System and method for circular link resolution with hash-based names in content-centric networks |
US9648121B2 (en) * | 2014-05-27 | 2017-05-09 | Ravello Systems Ltd. | Source-destination network address translation (SDNAT) proxy and method thereof |
US9276751B2 (en) | 2014-05-28 | 2016-03-01 | Palo Alto Research Center Incorporated | System and method for circular link resolution with computable hash-based names in content-centric networks |
US9825913B2 (en) | 2014-06-04 | 2017-11-21 | Nicira, Inc. | Use of stateless marking to speed up stateful firewall rule processing |
US9729512B2 (en) | 2014-06-04 | 2017-08-08 | Nicira, Inc. | Use of stateless marking to speed up stateful firewall rule processing |
US9537719B2 (en) | 2014-06-19 | 2017-01-03 | Palo Alto Research Center Incorporated | Method and apparatus for deploying a minimal-cost CCN topology |
US9516144B2 (en) | 2014-06-19 | 2016-12-06 | Palo Alto Research Center Incorporated | Cut-through forwarding of CCNx message fragments with IP encapsulation |
US9426113B2 (en) | 2014-06-30 | 2016-08-23 | Palo Alto Research Center Incorporated | System and method for managing devices over a content centric network |
US9553803B2 (en) | 2014-06-30 | 2017-01-24 | Nicira, Inc. | Periodical generation of network measurement data |
CA2953796C (en) * | 2014-06-30 | 2024-05-28 | Cfph, Llc | Financial network |
US9379956B2 (en) | 2014-06-30 | 2016-06-28 | Nicira, Inc. | Identifying a network topology between two endpoints |
US9699198B2 (en) | 2014-07-07 | 2017-07-04 | Cisco Technology, Inc. | System and method for parallel secure content bootstrapping in content-centric networks |
US9959156B2 (en) | 2014-07-17 | 2018-05-01 | Cisco Technology, Inc. | Interest return control message |
US9621354B2 (en) | 2014-07-17 | 2017-04-11 | Cisco Systems, Inc. | Reconstructable content objects |
US9729616B2 (en) | 2014-07-18 | 2017-08-08 | Cisco Technology, Inc. | Reputation-based strategy for forwarding and responding to interests over a content centric network |
US9590887B2 (en) | 2014-07-18 | 2017-03-07 | Cisco Systems, Inc. | Method and system for keeping interest alive in a content centric network |
US9535968B2 (en) | 2014-07-21 | 2017-01-03 | Palo Alto Research Center Incorporated | System for distributing nameless objects using self-certifying names |
CN105282004A (zh) * | 2014-07-25 | 2016-01-27 | 中兴通讯股份有限公司 | 网络虚拟化处理方法、装置及系统 |
US9882964B2 (en) | 2014-08-08 | 2018-01-30 | Cisco Technology, Inc. | Explicit strategy feedback in name-based forwarding |
US9503365B2 (en) | 2014-08-11 | 2016-11-22 | Palo Alto Research Center Incorporated | Reputation-based instruction processing over an information centric network |
US9729662B2 (en) | 2014-08-11 | 2017-08-08 | Cisco Technology, Inc. | Probabilistic lazy-forwarding technique without validation in a content centric network |
US9391777B2 (en) | 2014-08-15 | 2016-07-12 | Palo Alto Research Center Incorporated | System and method for performing key resolution over a content centric network |
US9800637B2 (en) | 2014-08-19 | 2017-10-24 | Cisco Technology, Inc. | System and method for all-in-one content stream in content-centric networks |
US9467492B2 (en) | 2014-08-19 | 2016-10-11 | Palo Alto Research Center Incorporated | System and method for reconstructable all-in-one content stream |
US10250442B2 (en) | 2014-08-22 | 2019-04-02 | Level 3 Commnications, Llc | Software defined networking portal |
WO2016033193A1 (en) * | 2014-08-26 | 2016-03-03 | Matthew Hayden Harper | Distributed input/output architecture for network functions virtualization |
US9497282B2 (en) | 2014-08-27 | 2016-11-15 | Palo Alto Research Center Incorporated | Network coding for content-centric network |
US10204013B2 (en) | 2014-09-03 | 2019-02-12 | Cisco Technology, Inc. | System and method for maintaining a distributed and fault-tolerant state over an information centric network |
US9553812B2 (en) | 2014-09-09 | 2017-01-24 | Palo Alto Research Center Incorporated | Interest keep alives at intermediate routers in a CCN |
US10038629B2 (en) | 2014-09-11 | 2018-07-31 | Microsoft Technology Licensing, Llc | Virtual machine migration using label based underlay network forwarding |
US20160087887A1 (en) * | 2014-09-22 | 2016-03-24 | Hei Tao Fung | Routing fabric |
CN105515802B (zh) * | 2014-09-22 | 2019-04-12 | 新华三技术有限公司 | 网络虚拟化方法及装置 |
JP6464631B2 (ja) * | 2014-09-22 | 2019-02-06 | 日本電気株式会社 | ネットワーク制御システム、ルータ仮想化装置、ネットワーク制御方法、ルータ仮想化方法およびプログラム |
WO2016048390A1 (en) * | 2014-09-26 | 2016-03-31 | Hewlett Packard Enterprise Development Lp | Link aggregation configuration for a node in a software-defined network |
US9935827B2 (en) | 2014-09-30 | 2018-04-03 | Nicira, Inc. | Method and apparatus for distributing load among a plurality of service nodes |
US10020960B2 (en) | 2014-09-30 | 2018-07-10 | Nicira, Inc. | Virtual distributed bridging |
US9768980B2 (en) | 2014-09-30 | 2017-09-19 | Nicira, Inc. | Virtual distributed bridging |
US11296930B2 (en) | 2014-09-30 | 2022-04-05 | Nicira, Inc. | Tunnel-enabled elastic service model |
US10135737B2 (en) | 2014-09-30 | 2018-11-20 | Nicira, Inc. | Distributed load balancing systems |
US10250443B2 (en) | 2014-09-30 | 2019-04-02 | Nicira, Inc. | Using physical location to modify behavior of a distributed virtual network element |
US10511458B2 (en) | 2014-09-30 | 2019-12-17 | Nicira, Inc. | Virtual distributed bridging |
US9798810B2 (en) | 2014-09-30 | 2017-10-24 | At&T Intellectual Property I, L.P. | Methods and apparatus to track changes to a network topology |
US10469342B2 (en) | 2014-10-10 | 2019-11-05 | Nicira, Inc. | Logical network traffic analysis |
JP6721166B2 (ja) * | 2014-10-14 | 2020-07-08 | ミド ホールディングス リミテッド | 仮想ネットワークにおける分散型フロー状態p2p設定のためのシステムおよび方法 |
US10069933B2 (en) | 2014-10-23 | 2018-09-04 | Cisco Technology, Inc. | System and method for creating virtual interfaces based on network characteristics |
US9923800B2 (en) * | 2014-10-26 | 2018-03-20 | Microsoft Technology Licensing, Llc | Method for reachability management in computer networks |
US9936014B2 (en) | 2014-10-26 | 2018-04-03 | Microsoft Technology Licensing, Llc | Method for virtual machine migration in computer networks |
JP6507572B2 (ja) * | 2014-10-31 | 2019-05-08 | 富士通株式会社 | 管理サーバの経路制御方法、および管理サーバ |
US9876714B2 (en) | 2014-11-14 | 2018-01-23 | Nicira, Inc. | Stateful services on stateless clustered edge |
US9866473B2 (en) | 2014-11-14 | 2018-01-09 | Nicira, Inc. | Stateful services on stateless clustered edge |
US10044617B2 (en) | 2014-11-14 | 2018-08-07 | Nicira, Inc. | Stateful services on stateless clustered edge |
US11533255B2 (en) | 2014-11-14 | 2022-12-20 | Nicira, Inc. | Stateful services on stateless clustered edge |
CN104410541B (zh) * | 2014-11-18 | 2017-09-15 | 盛科网络(苏州)有限公司 | Vxlan内层虚拟机流量在中间交换机上进行统计的方法及装置 |
JP2016100625A (ja) * | 2014-11-18 | 2016-05-30 | 富士通株式会社 | 経路情報提供プログラム、経路情報提供方法、経路情報提供装置、情報処理システムの経路制御方法、及び、情報処理システム |
CN105704036B (zh) * | 2014-11-27 | 2019-05-28 | 华为技术有限公司 | 报文转发方法、装置和系统 |
US9692727B2 (en) | 2014-12-02 | 2017-06-27 | Nicira, Inc. | Context-aware distributed firewall |
WO2016089400A1 (en) * | 2014-12-03 | 2016-06-09 | Hewlett Packard Enterprise Development Lp | Modifying an address to forward a packet to a service function |
CN105721235B (zh) * | 2014-12-05 | 2019-06-11 | 华为技术有限公司 | 一种检测连通性的方法和装置 |
US9590948B2 (en) | 2014-12-15 | 2017-03-07 | Cisco Systems, Inc. | CCN routing using hardware-assisted hash tables |
US9536059B2 (en) | 2014-12-15 | 2017-01-03 | Palo Alto Research Center Incorporated | Method and system for verifying renamed content using manifests in a content centric network |
US10237189B2 (en) | 2014-12-16 | 2019-03-19 | Cisco Technology, Inc. | System and method for distance-based interest forwarding |
US9846881B2 (en) | 2014-12-19 | 2017-12-19 | Palo Alto Research Center Incorporated | Frugal user engagement help systems |
US9473475B2 (en) | 2014-12-22 | 2016-10-18 | Palo Alto Research Center Incorporated | Low-cost authenticated signing delegation in content centric networking |
US10003520B2 (en) | 2014-12-22 | 2018-06-19 | Cisco Technology, Inc. | System and method for efficient name-based content routing using link-state information in information-centric networks |
US9660825B2 (en) | 2014-12-24 | 2017-05-23 | Cisco Technology, Inc. | System and method for multi-source multicasting in content-centric networks |
US9891940B2 (en) | 2014-12-29 | 2018-02-13 | Nicira, Inc. | Introspection method and apparatus for network access filtering |
US9967906B2 (en) | 2015-01-07 | 2018-05-08 | Cisco Technology, Inc. | Wireless roaming using a distributed store |
US9916457B2 (en) | 2015-01-12 | 2018-03-13 | Cisco Technology, Inc. | Decoupled name security binding for CCN objects |
US9602596B2 (en) | 2015-01-12 | 2017-03-21 | Cisco Systems, Inc. | Peer-to-peer sharing in a content centric network |
US9832291B2 (en) | 2015-01-12 | 2017-11-28 | Cisco Technology, Inc. | Auto-configurable transport stack |
US9946743B2 (en) | 2015-01-12 | 2018-04-17 | Cisco Technology, Inc. | Order encoded manifests in a content centric network |
US9954795B2 (en) | 2015-01-12 | 2018-04-24 | Cisco Technology, Inc. | Resource allocation using CCN manifests |
US9979645B2 (en) * | 2015-01-14 | 2018-05-22 | Futurewei Technologies, Inc. | Hardware and software methodologies for creating and managing portable service function chains |
US10061664B2 (en) * | 2015-01-15 | 2018-08-28 | Cisco Technology, Inc. | High availability and failover |
US9462006B2 (en) | 2015-01-21 | 2016-10-04 | Palo Alto Research Center Incorporated | Network-layer application-specific trust model |
US10129180B2 (en) | 2015-01-30 | 2018-11-13 | Nicira, Inc. | Transit logical switch within logical router |
US9552493B2 (en) | 2015-02-03 | 2017-01-24 | Palo Alto Research Center Incorporated | Access control framework for information centric networking |
US20160226753A1 (en) * | 2015-02-04 | 2016-08-04 | Mediatek Inc. | Scheme for performing one-pass tunnel forwarding function on two-layer network structure |
US10333840B2 (en) | 2015-02-06 | 2019-06-25 | Cisco Technology, Inc. | System and method for on-demand content exchange with adaptive naming in information-centric networks |
CN105991430B (zh) * | 2015-03-05 | 2022-01-14 | 李明 | 跨多个自治网络系统的数据路由 |
US10075401B2 (en) | 2015-03-18 | 2018-09-11 | Cisco Technology, Inc. | Pending interest table behavior |
US10609091B2 (en) | 2015-04-03 | 2020-03-31 | Nicira, Inc. | Method, apparatus, and system for implementing a content switch |
US10038628B2 (en) | 2015-04-04 | 2018-07-31 | Nicira, Inc. | Route server mode for dynamic routing between logical and physical networks |
US9942058B2 (en) | 2015-04-17 | 2018-04-10 | Nicira, Inc. | Managing tunnel endpoints for facilitating creation of logical networks |
CN104993941B (zh) * | 2015-05-14 | 2018-07-03 | 西安电子科技大学 | 一种基于Openflow网络高容错性虚拟网络映射算法 |
FR3037463B1 (fr) * | 2015-06-15 | 2017-06-23 | Bull Sas | Transformation d'infrastructures reseaux non structurees en topologies virtuelles structurees adaptees a des algorithmes de routage specifiques |
WO2016204777A1 (en) * | 2015-06-19 | 2016-12-22 | Hewlett Packard Enterprise Development LP. | Network communications |
US10116605B2 (en) | 2015-06-22 | 2018-10-30 | Cisco Technology, Inc. | Transport stack name scheme and identity management |
US10075402B2 (en) | 2015-06-24 | 2018-09-11 | Cisco Technology, Inc. | Flexible command and control in content centric networks |
US10554484B2 (en) | 2015-06-26 | 2020-02-04 | Nicira, Inc. | Control plane integration with hardware switches |
US10243848B2 (en) | 2015-06-27 | 2019-03-26 | Nicira, Inc. | Provisioning logical entities in a multi-datacenter environment |
US9755903B2 (en) | 2015-06-30 | 2017-09-05 | Nicira, Inc. | Replicating firewall policy across multiple data centers |
US10225184B2 (en) | 2015-06-30 | 2019-03-05 | Nicira, Inc. | Redirecting traffic in a virtual distributed router environment |
US9519505B1 (en) | 2015-07-06 | 2016-12-13 | Bank Of America Corporation | Enhanced configuration and property management system |
US10505846B2 (en) | 2015-07-22 | 2019-12-10 | Cisco Technology, Inc. | Resilient segment routing service hunting with TCP session stickiness |
US9985837B2 (en) | 2015-07-23 | 2018-05-29 | Cisco Technology, Inc. | Refresh of the binding tables between data-link-layer and network-layer addresses on mobility in a data center environment |
US10701038B2 (en) | 2015-07-27 | 2020-06-30 | Cisco Technology, Inc. | Content negotiation in a content centric network |
JP6570033B2 (ja) * | 2015-07-28 | 2019-09-04 | 日本電信電話株式会社 | 仮想スイッチ制御システム及び方法 |
US10693859B2 (en) | 2015-07-30 | 2020-06-23 | Oracle International Corporation | Restricting access for a single sign-on (SSO) session |
US9967182B2 (en) | 2015-07-31 | 2018-05-08 | Nicira, Inc. | Enabling hardware switches to perform logical routing functionalities |
US9819581B2 (en) | 2015-07-31 | 2017-11-14 | Nicira, Inc. | Configuring a hardware switch as an edge node for a logical router |
US9847938B2 (en) * | 2015-07-31 | 2017-12-19 | Nicira, Inc. | Configuring logical routers on hardware switches |
US9986034B2 (en) | 2015-08-03 | 2018-05-29 | Cisco Technology, Inc. | Transferring state in content centric network stacks |
US10129142B2 (en) | 2015-08-11 | 2018-11-13 | Nicira, Inc. | Route configuration for logical router |
US10610144B2 (en) | 2015-08-19 | 2020-04-07 | Palo Alto Research Center Incorporated | Interactive remote patient monitoring and condition management intervention system |
US10313186B2 (en) | 2015-08-31 | 2019-06-04 | Nicira, Inc. | Scalable controller for hardware VTEPS |
US10075363B2 (en) | 2015-08-31 | 2018-09-11 | Nicira, Inc. | Authorization for advertised routes among logical routers |
US9935862B2 (en) | 2015-09-08 | 2018-04-03 | At&T Intellectual Property I, L.P. | Low-impact proactive monitoring of customer access to virtualized network elements in a cloud platform |
US9832123B2 (en) | 2015-09-11 | 2017-11-28 | Cisco Technology, Inc. | Network named fragments in a content centric network |
US10355999B2 (en) | 2015-09-23 | 2019-07-16 | Cisco Technology, Inc. | Flow control with network named fragments |
US10313227B2 (en) | 2015-09-24 | 2019-06-04 | Cisco Technology, Inc. | System and method for eliminating undetected interest looping in information-centric networks |
US9977809B2 (en) | 2015-09-24 | 2018-05-22 | Cisco Technology, Inc. | Information and data framework in a content centric network |
US10454820B2 (en) | 2015-09-29 | 2019-10-22 | Cisco Technology, Inc. | System and method for stateless information-centric networking |
US10263828B2 (en) | 2015-09-30 | 2019-04-16 | Nicira, Inc. | Preventing concurrent distribution of network data to a hardware switch by multiple controllers |
US9998324B2 (en) | 2015-09-30 | 2018-06-12 | Nicira, Inc. | Logical L3 processing for L2 hardware switches |
US9948577B2 (en) | 2015-09-30 | 2018-04-17 | Nicira, Inc. | IP aliases in logical networks with hardware switches |
US10230576B2 (en) | 2015-09-30 | 2019-03-12 | Nicira, Inc. | Managing administrative statuses of hardware VTEPs |
EP3363168B1 (en) * | 2015-10-12 | 2024-09-04 | Telefonaktiebolaget LM Ericsson (publ) | Path computation in a multi-tenant network |
US10033647B2 (en) | 2015-10-13 | 2018-07-24 | Oracle International Corporation | System and method for efficient network isolation and load balancing in a multi-tenant cluster environment |
US10169203B2 (en) | 2015-10-14 | 2019-01-01 | At&T Intellectual Property I, L.P. | Test simulation for software defined networking environments |
US10263965B2 (en) | 2015-10-16 | 2019-04-16 | Cisco Technology, Inc. | Encrypted CCNx |
US9819996B2 (en) | 2015-10-21 | 2017-11-14 | Rovi Guides, Inc. | Systems and methods for fingerprinting to track device usage |
US9848237B2 (en) * | 2015-10-21 | 2017-12-19 | Rovi Guides, Inc. | Systems and methods for identifying a source of a user interface from a fingerprint of the user interface |
US10505982B2 (en) * | 2015-10-23 | 2019-12-10 | Oracle International Corporation | Managing security agents in a distributed environment |
CN106656801B (zh) * | 2015-10-28 | 2019-11-15 | 华为技术有限公司 | 业务流的转发路径的重定向方法、装置和业务流转发系统 |
US9794238B2 (en) | 2015-10-29 | 2017-10-17 | Cisco Technology, Inc. | System for key exchange in a content centric network |
US10095535B2 (en) | 2015-10-31 | 2018-10-09 | Nicira, Inc. | Static route types for logical routers |
US10305725B2 (en) * | 2015-10-31 | 2019-05-28 | Nicira, Inc. | Local controller agent for converting logical pipeline data |
US10009446B2 (en) | 2015-11-02 | 2018-06-26 | Cisco Technology, Inc. | Header compression for CCN messages using dictionary learning |
US9807205B2 (en) | 2015-11-02 | 2017-10-31 | Cisco Technology, Inc. | Header compression for CCN messages using dictionary |
US10250553B2 (en) | 2015-11-03 | 2019-04-02 | Nicira, Inc. | ARP offloading for managed hardware forwarding elements |
US10324746B2 (en) | 2015-11-03 | 2019-06-18 | Nicira, Inc. | Extended context delivery for context-based authorization |
US10021222B2 (en) | 2015-11-04 | 2018-07-10 | Cisco Technology, Inc. | Bit-aligned header compression for CCN messages using dictionary |
US10594656B2 (en) * | 2015-11-17 | 2020-03-17 | Zscaler, Inc. | Multi-tenant cloud-based firewall systems and methods |
US10097521B2 (en) | 2015-11-20 | 2018-10-09 | Cisco Technology, Inc. | Transparent encryption in a content centric network |
US9912776B2 (en) | 2015-12-02 | 2018-03-06 | Cisco Technology, Inc. | Explicit content deletion commands in a content centric network |
US10097346B2 (en) | 2015-12-09 | 2018-10-09 | Cisco Technology, Inc. | Key catalogs in a content centric network |
US9992112B2 (en) | 2015-12-15 | 2018-06-05 | Nicira, Inc. | Transactional controls for supplying control plane data to managed hardware forwarding elements |
US9998375B2 (en) | 2015-12-15 | 2018-06-12 | Nicira, Inc. | Transactional controls for supplying control plane data to managed hardware forwarding elements |
US9917799B2 (en) | 2015-12-15 | 2018-03-13 | Nicira, Inc. | Transactional controls for supplying control plane data to managed hardware forwarding elements |
US10078062B2 (en) | 2015-12-15 | 2018-09-18 | Palo Alto Research Center Incorporated | Device health estimation by combining contextual information with sensor data |
CN106936939B (zh) * | 2015-12-31 | 2020-06-02 | 华为技术有限公司 | 一种报文处理方法、相关装置及nvo3网络系统 |
US10257271B2 (en) | 2016-01-11 | 2019-04-09 | Cisco Technology, Inc. | Chandra-Toueg consensus in a content centric network |
US9949301B2 (en) | 2016-01-20 | 2018-04-17 | Palo Alto Research Center Incorporated | Methods for fast, secure and privacy-friendly internet connection discovery in wireless networks |
US10305864B2 (en) | 2016-01-25 | 2019-05-28 | Cisco Technology, Inc. | Method and system for interest encryption in a content centric network |
US11271870B2 (en) | 2016-01-27 | 2022-03-08 | Oracle International Corporation | System and method for supporting scalable bit map based P_Key table in a high performance computing environment |
US10440152B2 (en) | 2016-01-27 | 2019-10-08 | Oracle International Corporation | System and method of initiating virtual machine configuration on a subordinate node from a privileged node in a high-performance computing environment |
US10594627B2 (en) | 2016-01-27 | 2020-03-17 | Oracle International Corporation | System and method for supporting scalable representation of switch port status in a high performance computing environment |
US11018947B2 (en) | 2016-01-27 | 2021-05-25 | Oracle International Corporation | System and method for supporting on-demand setup of local host channel adapter port partition membership in a high-performance computing environment |
US10873566B2 (en) * | 2016-02-23 | 2020-12-22 | Nicira, Inc. | Distributed firewall in a virtualized computing environment |
US11038845B2 (en) * | 2016-02-23 | 2021-06-15 | Nicira, Inc. | Firewall in a virtualized computing environment using physical network interface controller (PNIC) level firewall rules |
US10043016B2 (en) | 2016-02-29 | 2018-08-07 | Cisco Technology, Inc. | Method and system for name encryption agreement in a content centric network |
US10003507B2 (en) | 2016-03-04 | 2018-06-19 | Cisco Technology, Inc. | Transport session state protocol |
US10742596B2 (en) | 2016-03-04 | 2020-08-11 | Cisco Technology, Inc. | Method and system for reducing a collision probability of hash-based names using a publisher identifier |
US10038633B2 (en) | 2016-03-04 | 2018-07-31 | Cisco Technology, Inc. | Protocol to query for historical network information in a content centric network |
US10051071B2 (en) | 2016-03-04 | 2018-08-14 | Cisco Technology, Inc. | Method and system for collecting historical network information in a content centric network |
US9832116B2 (en) | 2016-03-14 | 2017-11-28 | Cisco Technology, Inc. | Adjusting entries in a forwarding information base in a content centric network |
US10212196B2 (en) | 2016-03-16 | 2019-02-19 | Cisco Technology, Inc. | Interface discovery and authentication in a name-based network |
US11436656B2 (en) | 2016-03-18 | 2022-09-06 | Palo Alto Research Center Incorporated | System and method for a real-time egocentric collaborative filter on large datasets |
US10067948B2 (en) | 2016-03-18 | 2018-09-04 | Cisco Technology, Inc. | Data deduping in content centric networking manifests |
JP7127537B2 (ja) * | 2016-03-22 | 2022-08-30 | 日本電気株式会社 | トランスポートネットワーク制御装置、通信システム、転送ノードの制御方法及びプログラム |
US10091330B2 (en) | 2016-03-23 | 2018-10-02 | Cisco Technology, Inc. | Interest scheduling by an information and data framework in a content centric network |
US10033639B2 (en) | 2016-03-25 | 2018-07-24 | Cisco Technology, Inc. | System and method for routing packets in a content centric network using anonymous datagrams |
US10320760B2 (en) | 2016-04-01 | 2019-06-11 | Cisco Technology, Inc. | Method and system for mutating and caching content in a content centric network |
US9930146B2 (en) | 2016-04-04 | 2018-03-27 | Cisco Technology, Inc. | System and method for compressing content centric networking messages |
US10425503B2 (en) | 2016-04-07 | 2019-09-24 | Cisco Technology, Inc. | Shared pending interest table in a content centric network |
US10027578B2 (en) | 2016-04-11 | 2018-07-17 | Cisco Technology, Inc. | Method and system for routable prefix queries in a content centric network |
US10333849B2 (en) | 2016-04-28 | 2019-06-25 | Nicira, Inc. | Automatic configuration of logical routers on edge nodes |
US10841273B2 (en) | 2016-04-29 | 2020-11-17 | Nicira, Inc. | Implementing logical DHCP servers in logical networks |
US10348685B2 (en) | 2016-04-29 | 2019-07-09 | Nicira, Inc. | Priority allocation for distributed service rules |
US10581793B1 (en) * | 2016-04-29 | 2020-03-03 | Arista Networks, Inc. | Address resolution in virtual extensible networks |
US10135727B2 (en) | 2016-04-29 | 2018-11-20 | Nicira, Inc. | Address grouping for distributed service rules |
US10484515B2 (en) | 2016-04-29 | 2019-11-19 | Nicira, Inc. | Implementing logical metadata proxy servers in logical networks |
US10091161B2 (en) | 2016-04-30 | 2018-10-02 | Nicira, Inc. | Assignment of router ID for logical routers |
US11425095B2 (en) | 2016-05-01 | 2022-08-23 | Nicira, Inc. | Fast ordering of firewall sections and rules |
US11171920B2 (en) | 2016-05-01 | 2021-11-09 | Nicira, Inc. | Publication of firewall configuration |
US10404450B2 (en) | 2016-05-02 | 2019-09-03 | Cisco Technology, Inc. | Schematized access control in a content centric network |
US10320675B2 (en) | 2016-05-04 | 2019-06-11 | Cisco Technology, Inc. | System and method for routing packets in a stateless content centric network |
US10547589B2 (en) | 2016-05-09 | 2020-01-28 | Cisco Technology, Inc. | System for implementing a small computer systems interface protocol over a content centric network |
US10084764B2 (en) | 2016-05-13 | 2018-09-25 | Cisco Technology, Inc. | System for a secure encryption proxy in a content centric network |
US10063414B2 (en) | 2016-05-13 | 2018-08-28 | Cisco Technology, Inc. | Updating a transport stack in a content centric network |
US10103989B2 (en) | 2016-06-13 | 2018-10-16 | Cisco Technology, Inc. | Content object return messages in a content centric network |
US10305865B2 (en) | 2016-06-21 | 2019-05-28 | Cisco Technology, Inc. | Permutation-based content encryption with manifests in a content centric network |
US10057162B1 (en) * | 2016-06-27 | 2018-08-21 | Amazon Technologies, Inc. | Extending Virtual Routing and Forwarding at edge of VRF-aware network |
US10148572B2 (en) | 2016-06-27 | 2018-12-04 | Cisco Technology, Inc. | Method and system for interest groups in a content centric network |
US10129144B1 (en) * | 2016-06-27 | 2018-11-13 | Amazon Technologies, Inc. | Extending virtual routing and forwarding using source identifiers |
US10153973B2 (en) | 2016-06-29 | 2018-12-11 | Nicira, Inc. | Installation of routing tables for logical router in route server mode |
US10200343B2 (en) | 2016-06-29 | 2019-02-05 | Nicira, Inc. | Implementing logical network security on a hardware switch |
US11258761B2 (en) | 2016-06-29 | 2022-02-22 | Nicira, Inc. | Self-service firewall configuration |
US10560320B2 (en) | 2016-06-29 | 2020-02-11 | Nicira, Inc. | Ranking of gateways in cluster |
US11088990B2 (en) | 2016-06-29 | 2021-08-10 | Nicira, Inc. | Translation cache for firewall configuration |
US10404788B2 (en) | 2016-06-30 | 2019-09-03 | Alibaba Group Holding Limited | Express route transmissions between virtual machines and cloud service computing devices |
US10009266B2 (en) | 2016-07-05 | 2018-06-26 | Cisco Technology, Inc. | Method and system for reference counted pending interest tables in a content centric network |
US9992097B2 (en) | 2016-07-11 | 2018-06-05 | Cisco Technology, Inc. | System and method for piggybacking routing information in interests in a content centric network |
US10419330B2 (en) * | 2016-07-21 | 2019-09-17 | Alibaba Group Holding Limited | Express route transmissions between virtual machines and cloud service computing devices |
US10122624B2 (en) | 2016-07-25 | 2018-11-06 | Cisco Technology, Inc. | System and method for ephemeral entries in a forwarding information base in a content centric network |
US10069729B2 (en) | 2016-08-08 | 2018-09-04 | Cisco Technology, Inc. | System and method for throttling traffic based on a forwarding information base in a content centric network |
US10956412B2 (en) | 2016-08-09 | 2021-03-23 | Cisco Technology, Inc. | Method and system for conjunctive normal form attribute matching in a content centric network |
CN112486626A (zh) * | 2016-08-30 | 2021-03-12 | 华为技术有限公司 | 一种确定虚拟机迁移的方法和装置 |
US10938837B2 (en) | 2016-08-30 | 2021-03-02 | Nicira, Inc. | Isolated network stack to manage security for virtual machines |
US10333983B2 (en) | 2016-08-30 | 2019-06-25 | Nicira, Inc. | Policy definition and enforcement for a network virtualization platform |
US10454758B2 (en) | 2016-08-31 | 2019-10-22 | Nicira, Inc. | Edge node cluster network redundancy and fast convergence using an underlay anycast VTEP IP |
US10326204B2 (en) | 2016-09-07 | 2019-06-18 | Cisco Technology, Inc. | Switchable, oscillating near-field and far-field antenna |
US10033642B2 (en) | 2016-09-19 | 2018-07-24 | Cisco Technology, Inc. | System and method for making optimal routing decisions based on device-specific parameters in a content centric network |
US10341236B2 (en) | 2016-09-30 | 2019-07-02 | Nicira, Inc. | Anycast edge service gateways |
US10212248B2 (en) | 2016-10-03 | 2019-02-19 | Cisco Technology, Inc. | Cache management on high availability routers in a content centric network |
US10447805B2 (en) | 2016-10-10 | 2019-10-15 | Cisco Technology, Inc. | Distributed consensus in a content centric network |
US10911317B2 (en) * | 2016-10-21 | 2021-02-02 | Forward Networks, Inc. | Systems and methods for scalable network modeling |
CN107979630B (zh) * | 2016-10-25 | 2020-04-03 | 新华三技术有限公司 | 一种信息获取方法及装置 |
US10135948B2 (en) | 2016-10-31 | 2018-11-20 | Cisco Technology, Inc. | System and method for process migration in a content centric network |
CN106412114A (zh) * | 2016-11-16 | 2017-02-15 | 广州市品高软件股份有限公司 | 一种基于sdn的负载均衡方法及系统 |
US10243851B2 (en) | 2016-11-21 | 2019-03-26 | Cisco Technology, Inc. | System and method for forwarder connection information in a content centric network |
US10372520B2 (en) | 2016-11-22 | 2019-08-06 | Cisco Technology, Inc. | Graphical user interface for visualizing a plurality of issues with an infrastructure |
US10193862B2 (en) | 2016-11-29 | 2019-01-29 | Vmware, Inc. | Security policy analysis based on detecting new network port connections |
US10225106B2 (en) * | 2016-11-29 | 2019-03-05 | Vmware, Inc. | Efficient update of per-interface address groupings |
US10609160B2 (en) | 2016-12-06 | 2020-03-31 | Nicira, Inc. | Performing context-rich attribute-based services on a host |
US10739943B2 (en) | 2016-12-13 | 2020-08-11 | Cisco Technology, Inc. | Ordered list user interface |
US10742746B2 (en) | 2016-12-21 | 2020-08-11 | Nicira, Inc. | Bypassing a load balancer in a return path of network traffic |
US10237123B2 (en) | 2016-12-21 | 2019-03-19 | Nicira, Inc. | Dynamic recovery from a split-brain failure in edge nodes |
US10212071B2 (en) | 2016-12-21 | 2019-02-19 | Nicira, Inc. | Bypassing a load balancer in a return path of network traffic |
US10581960B2 (en) | 2016-12-22 | 2020-03-03 | Nicira, Inc. | Performing context-rich attribute-based load balancing on a host |
US11032246B2 (en) | 2016-12-22 | 2021-06-08 | Nicira, Inc. | Context based firewall services for data message flows for multiple concurrent users on one machine |
US10616045B2 (en) | 2016-12-22 | 2020-04-07 | Nicira, Inc. | Migration of centralized routing components of logical router |
US10802857B2 (en) | 2016-12-22 | 2020-10-13 | Nicira, Inc. | Collecting and processing contextual attributes on a host |
US10812451B2 (en) | 2016-12-22 | 2020-10-20 | Nicira, Inc. | Performing appID based firewall services on a host |
US10805332B2 (en) | 2017-07-25 | 2020-10-13 | Nicira, Inc. | Context engine model |
US10803173B2 (en) | 2016-12-22 | 2020-10-13 | Nicira, Inc. | Performing context-rich attribute-based process control services on a host |
CN106686085B (zh) | 2016-12-29 | 2020-06-16 | 华为技术有限公司 | 一种负载均衡的方法、装置和系统 |
US10243840B2 (en) | 2017-03-01 | 2019-03-26 | Juniper Networks, Inc. | Network interface card switching for virtual networks |
US10805239B2 (en) | 2017-03-07 | 2020-10-13 | Nicira, Inc. | Visualization of path between logical network endpoints |
US20180324061A1 (en) * | 2017-05-03 | 2018-11-08 | Extrahop Networks, Inc. | Detecting network flow states for network traffic analysis |
US10440723B2 (en) | 2017-05-17 | 2019-10-08 | Cisco Technology, Inc. | Hierarchical channel assignment in wireless networks |
US10681000B2 (en) * | 2017-06-30 | 2020-06-09 | Nicira, Inc. | Assignment of unique physical network addresses for logical network addresses |
US10555341B2 (en) | 2017-07-11 | 2020-02-04 | Cisco Technology, Inc. | Wireless contention reduction |
US10440031B2 (en) | 2017-07-21 | 2019-10-08 | Cisco Technology, Inc. | Wireless network steering |
US10951584B2 (en) | 2017-07-31 | 2021-03-16 | Nicira, Inc. | Methods for active-active stateful network service cluster |
US11570092B2 (en) | 2017-07-31 | 2023-01-31 | Nicira, Inc. | Methods for active-active stateful network service cluster |
US11296984B2 (en) | 2017-07-31 | 2022-04-05 | Nicira, Inc. | Use of hypervisor for active-active stateful network service cluster |
US11050730B2 (en) | 2017-09-27 | 2021-06-29 | Oracle International Corporation | Maintaining session stickiness across authentication and authorization channels for access management |
US10608887B2 (en) | 2017-10-06 | 2020-03-31 | Nicira, Inc. | Using packet tracing tool to automatically execute packet capture operations |
US10735981B2 (en) | 2017-10-10 | 2020-08-04 | Cisco Technology, Inc. | System and method for providing a layer 2 fast re-switch for a wireless controller |
US10805181B2 (en) | 2017-10-29 | 2020-10-13 | Nicira, Inc. | Service operation chaining |
US10511459B2 (en) | 2017-11-14 | 2019-12-17 | Nicira, Inc. | Selection of managed forwarding element for bridge spanning multiple datacenters |
US10374827B2 (en) | 2017-11-14 | 2019-08-06 | Nicira, Inc. | Identifier that maps to different networks at different datacenters |
US10778651B2 (en) | 2017-11-15 | 2020-09-15 | Nicira, Inc. | Performing context-rich attribute-based encryption on a host |
US11012420B2 (en) | 2017-11-15 | 2021-05-18 | Nicira, Inc. | Third-party service chaining using packet encapsulation in a flow-based forwarding element |
US10375667B2 (en) | 2017-12-07 | 2019-08-06 | Cisco Technology, Inc. | Enhancing indoor positioning using RF multilateration and optical sensing |
US10862773B2 (en) | 2018-01-26 | 2020-12-08 | Nicira, Inc. | Performing services on data messages associated with endpoint machines |
US10659252B2 (en) | 2018-01-26 | 2020-05-19 | Nicira, Inc | Specifying and utilizing paths through a network |
US10802893B2 (en) | 2018-01-26 | 2020-10-13 | Nicira, Inc. | Performing process control services on endpoint machines |
US10797910B2 (en) | 2018-01-26 | 2020-10-06 | Nicira, Inc. | Specifying and utilizing paths through a network |
US11012418B2 (en) | 2018-02-15 | 2021-05-18 | Forcepoint Llc | Multi-access interface for internet protocol security |
US11153122B2 (en) | 2018-02-19 | 2021-10-19 | Nicira, Inc. | Providing stateful services deployed in redundant gateways connected to asymmetric network |
US10805192B2 (en) | 2018-03-27 | 2020-10-13 | Nicira, Inc. | Detecting failure of layer 2 service using broadcast messages |
US10728174B2 (en) | 2018-03-27 | 2020-07-28 | Nicira, Inc. | Incorporating layer 2 service between two interfaces of gateway device |
US10862867B2 (en) | 2018-04-01 | 2020-12-08 | Cisco Technology, Inc. | Intelligent graphical user interface |
CN108600106B (zh) * | 2018-04-28 | 2019-06-14 | 北京邮电大学 | 一种低时延的数据交换装置及方法 |
US10938778B2 (en) * | 2018-05-02 | 2021-03-02 | Forcepoint Llc | Route reply back interface for cloud internal communication |
CN110505176B9 (zh) * | 2018-05-16 | 2023-04-11 | 中兴通讯股份有限公司 | 报文优先级的确定、发送方法及装置、路由系统 |
US10505718B1 (en) | 2018-06-08 | 2019-12-10 | Cisco Technology, Inc. | Systems, devices, and techniques for registering user equipment (UE) in wireless networks using a native blockchain platform |
US10673618B2 (en) | 2018-06-08 | 2020-06-02 | Cisco Technology, Inc. | Provisioning network resources in a wireless network using a native blockchain platform |
US10873636B2 (en) | 2018-07-09 | 2020-12-22 | Cisco Technology, Inc. | Session management in a forwarding plane |
US10671462B2 (en) | 2018-07-24 | 2020-06-02 | Cisco Technology, Inc. | System and method for message management across a network |
US11252040B2 (en) | 2018-07-31 | 2022-02-15 | Cisco Technology, Inc. | Advanced network tracing in the data plane |
US10623949B2 (en) | 2018-08-08 | 2020-04-14 | Cisco Technology, Inc. | Network-initiated recovery from a text message delivery failure |
US10284429B1 (en) | 2018-08-08 | 2019-05-07 | Cisco Technology, Inc. | System and method for sharing subscriber resources in a network environment |
US10735209B2 (en) | 2018-08-08 | 2020-08-04 | Cisco Technology, Inc. | Bitrate utilization feedback and control in 5G-NSA networks |
US10949557B2 (en) | 2018-08-20 | 2021-03-16 | Cisco Technology, Inc. | Blockchain-based auditing, instantiation and maintenance of 5G network slices |
US10374749B1 (en) | 2018-08-22 | 2019-08-06 | Cisco Technology, Inc. | Proactive interference avoidance for access points |
US10567293B1 (en) | 2018-08-23 | 2020-02-18 | Cisco Technology, Inc. | Mechanism to coordinate end to end quality of service between network nodes and service provider core |
US10944673B2 (en) | 2018-09-02 | 2021-03-09 | Vmware, Inc. | Redirection of data messages at logical network gateway |
US11595250B2 (en) | 2018-09-02 | 2023-02-28 | Vmware, Inc. | Service insertion at logical network gateway |
US10652152B2 (en) | 2018-09-04 | 2020-05-12 | Cisco Technology, Inc. | Mobile core dynamic tunnel end-point processing |
US10230605B1 (en) | 2018-09-04 | 2019-03-12 | Cisco Technology, Inc. | Scalable distributed end-to-end performance delay measurement for segment routing policies |
US10779188B2 (en) | 2018-09-06 | 2020-09-15 | Cisco Technology, Inc. | Uplink bandwidth estimation over broadband cellular networks |
US11558288B2 (en) | 2018-09-21 | 2023-01-17 | Cisco Technology, Inc. | Scalable and programmable mechanism for targeted in-situ OAM implementation in segment routing networks |
US10285155B1 (en) | 2018-09-24 | 2019-05-07 | Cisco Technology, Inc. | Providing user equipment location information indication on user plane |
US11463361B2 (en) * | 2018-09-27 | 2022-10-04 | Hewlett Packard Enterprise Development Lp | Rate adaptive transactions |
WO2020080930A1 (en) * | 2018-10-15 | 2020-04-23 | Mimos Berhad | System, virtual switch and method for establishing secured communication within network segment in virtualized environment |
US10601724B1 (en) | 2018-11-01 | 2020-03-24 | Cisco Technology, Inc. | Scalable network slice based queuing using segment routing flexible algorithm |
US10931560B2 (en) | 2018-11-23 | 2021-02-23 | Vmware, Inc. | Using route type to determine routing protocol behavior |
US11032155B2 (en) * | 2018-11-27 | 2021-06-08 | Nicira, Inc. | Network mapping system |
US10797998B2 (en) | 2018-12-05 | 2020-10-06 | Vmware, Inc. | Route server for distributed routers using hierarchical routing protocol |
US10938788B2 (en) | 2018-12-12 | 2021-03-02 | Vmware, Inc. | Static routes for policy-based VPN |
CN109617805B (zh) * | 2018-12-17 | 2022-04-08 | 新华三技术有限公司合肥分公司 | 链路动态属性的获取方法、装置及路径选择方法、装置 |
US11240160B2 (en) | 2018-12-28 | 2022-02-01 | Alibaba Group Holding Limited | Method, apparatus, and computer-readable storage medium for network control |
US11363063B2 (en) * | 2018-12-28 | 2022-06-14 | Charter Communications Operating, Llc | Botnet detection and mitigation |
US11201853B2 (en) | 2019-01-10 | 2021-12-14 | Vmware, Inc. | DNS cache protection |
US11102074B2 (en) | 2019-01-11 | 2021-08-24 | Cisco Technology, Inc. | Software defined access fabric without subnet restriction to a virtual network |
US11042397B2 (en) | 2019-02-22 | 2021-06-22 | Vmware, Inc. | Providing services with guest VM mobility |
US11895092B2 (en) * | 2019-03-04 | 2024-02-06 | Appgate Cybersecurity, Inc. | Network access controller operation |
US11310202B2 (en) | 2019-03-13 | 2022-04-19 | Vmware, Inc. | Sharing of firewall rules among multiple workloads in a hypervisor |
US11075857B2 (en) * | 2019-06-13 | 2021-07-27 | Cisco Technology, Inc. | Peephole optimization of lightweight protocols at lower layers |
US10778457B1 (en) | 2019-06-18 | 2020-09-15 | Vmware, Inc. | Traffic replication in overlay networks spanning multiple sites |
US11134078B2 (en) | 2019-07-10 | 2021-09-28 | Oracle International Corporation | User-specific session timeouts |
US11159343B2 (en) | 2019-08-30 | 2021-10-26 | Vmware, Inc. | Configuring traffic optimization using distributed edge services |
US10855644B1 (en) * | 2019-09-09 | 2020-12-01 | Vmware, Inc. | Address resolution protocol entry verification |
US11070469B1 (en) * | 2019-09-11 | 2021-07-20 | Juniper Networks, Inc. | Scaling border gateway protocol services |
CN110557288B (zh) * | 2019-09-16 | 2022-04-22 | 鹏城实验室 | 一种基于OpenStack的网络可视化编辑与自动化部署系统 |
US11201838B2 (en) * | 2019-09-25 | 2021-12-14 | Intel Corporation | System, apparatus and method for increasing efficiency of link communications |
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 |
US11258727B2 (en) * | 2019-11-13 | 2022-02-22 | Arista Networks, Inc. | Shared routing tables for network devices |
CN113098749B (zh) * | 2020-01-08 | 2024-10-15 | 华为技术有限公司 | 报文发送方法、装置及存储介质 |
US11539718B2 (en) | 2020-01-10 | 2022-12-27 | Vmware, Inc. | Efficiently performing intrusion detection |
US11223494B2 (en) | 2020-01-13 | 2022-01-11 | Vmware, Inc. | Service insertion for multicast traffic at boundary |
US11444883B2 (en) * | 2020-01-17 | 2022-09-13 | Vmware, Inc. | Signature based management of packets in a software defined networking environment |
US11283699B2 (en) | 2020-01-17 | 2022-03-22 | Vmware, Inc. | Practical overlay network latency measurement in datacenter |
US11659061B2 (en) | 2020-01-20 | 2023-05-23 | Vmware, Inc. | Method of adjusting service function chains to improve network performance |
US11153406B2 (en) | 2020-01-20 | 2021-10-19 | Vmware, Inc. | Method of network performance visualization of service function chains |
US11575646B2 (en) * | 2020-03-12 | 2023-02-07 | Vmware, Inc. | Domain name service (DNS) server cache table validation |
US11212356B2 (en) | 2020-04-06 | 2021-12-28 | Vmware, Inc. | Providing services at the edge of a network using selected virtual tunnel interfaces |
US11496437B2 (en) | 2020-04-06 | 2022-11-08 | Vmware, Inc. | Selective ARP proxy |
US11303557B2 (en) | 2020-04-06 | 2022-04-12 | Vmware, Inc. | Tunnel endpoint group records for inter-datacenter traffic |
CN113709052B (zh) * | 2020-05-21 | 2024-02-27 | 中移(苏州)软件技术有限公司 | 一种网络报文的处理方法、装置、电子设备和存储介质 |
US11295135B2 (en) * | 2020-05-29 | 2022-04-05 | Corning Research & Development Corporation | Asset tracking of communication equipment via mixed reality based labeling |
US11374808B2 (en) | 2020-05-29 | 2022-06-28 | Corning Research & Development Corporation | Automated logging of patching operations via mixed reality based labeling |
TWI742704B (zh) * | 2020-06-01 | 2021-10-11 | 台眾電腦股份有限公司 | 資訊裝置之網路連線管理系統 |
EP4173237A1 (en) | 2020-06-24 | 2023-05-03 | Juniper Networks, Inc. | Layer-2 network extension over layer-3 network using layer-2 metadata |
US11616755B2 (en) | 2020-07-16 | 2023-03-28 | Vmware, Inc. | Facilitating distributed SNAT service |
US11606294B2 (en) | 2020-07-16 | 2023-03-14 | Vmware, Inc. | Host computer configured to facilitate distributed SNAT service |
US11303505B2 (en) * | 2020-07-22 | 2022-04-12 | Arista Networks, Inc. | Aggregated control-plane tables |
US11108728B1 (en) | 2020-07-24 | 2021-08-31 | Vmware, Inc. | Fast distribution of port identifiers for rule processing |
US11611613B2 (en) | 2020-07-24 | 2023-03-21 | Vmware, Inc. | Policy-based forwarding to a load balancer of a load balancing cluster |
US11451413B2 (en) | 2020-07-28 | 2022-09-20 | Vmware, Inc. | Method for advertising availability of distributed gateway service and machines at host computer |
US11902050B2 (en) | 2020-07-28 | 2024-02-13 | VMware LLC | Method for providing distributed gateway service at host computer |
US11196628B1 (en) | 2020-07-29 | 2021-12-07 | Vmware, Inc. | Monitoring container clusters |
US11558426B2 (en) | 2020-07-29 | 2023-01-17 | Vmware, Inc. | Connection tracking for container cluster |
US11570090B2 (en) | 2020-07-29 | 2023-01-31 | Vmware, Inc. | Flow tracing operation in container cluster |
US11902166B2 (en) * | 2020-08-04 | 2024-02-13 | Cisco Technology, Inc. | Policy based routing in extranet networks |
CN111988309B (zh) * | 2020-08-18 | 2022-07-05 | 深圳市联软科技股份有限公司 | 一种icmp隐蔽隧道检测方法及系统 |
US11829793B2 (en) | 2020-09-28 | 2023-11-28 | Vmware, Inc. | Unified management of virtual machines and bare metal computers |
US11606310B2 (en) | 2020-09-28 | 2023-03-14 | Vmware, Inc. | Flow processing offload using virtual port identifiers |
CN114553707B (zh) * | 2020-11-26 | 2023-09-15 | 腾讯科技(深圳)有限公司 | 网络的拓扑信息的生成和网络故障的定界方法、装置 |
US11611625B2 (en) | 2020-12-15 | 2023-03-21 | Vmware, Inc. | Providing stateful services in a scalable manner for machines executing on host computers |
US11734043B2 (en) | 2020-12-15 | 2023-08-22 | Vmware, Inc. | Providing stateful services in a scalable manner for machines executing on host computers |
US11736436B2 (en) | 2020-12-31 | 2023-08-22 | Vmware, Inc. | Identifying routes with indirect addressing in a datacenter |
US11336533B1 (en) | 2021-01-08 | 2022-05-17 | Vmware, Inc. | Network visualization of correlations between logical elements and associated physical elements |
US11477048B2 (en) * | 2021-01-15 | 2022-10-18 | BlackBear (Taiwan) Industrial Networking Security Ltd. | Communication method for one-way transmission based on VLAN ID and switch device using the same |
US20220311735A1 (en) * | 2021-03-25 | 2022-09-29 | At&T Intellectual Property I, L.P. | Carrier grade network address translation architecture and implementation |
US11805101B2 (en) | 2021-04-06 | 2023-10-31 | Vmware, Inc. | Secured suppression of address discovery messages |
US11784922B2 (en) | 2021-07-03 | 2023-10-10 | Vmware, Inc. | Scalable overlay multicast routing in multi-tier edge gateways |
US11687210B2 (en) | 2021-07-05 | 2023-06-27 | Vmware, Inc. | Criteria-based expansion of group nodes in a network topology visualization |
US11652734B2 (en) | 2021-07-06 | 2023-05-16 | Cisco Technology, Inc. | Multicasting within a mutual subnetwork |
US11711278B2 (en) | 2021-07-24 | 2023-07-25 | Vmware, Inc. | Visualization of flow trace operation across multiple sites |
US11582145B1 (en) * | 2021-09-07 | 2023-02-14 | Cisco Technology, Inc. | On-demand optical next-hop with optical provisioning segment routing (SR) label |
US11706109B2 (en) | 2021-09-17 | 2023-07-18 | Vmware, Inc. | Performance of traffic monitoring actions |
CN114244763B (zh) * | 2021-12-20 | 2023-11-17 | 中电福富信息科技有限公司 | 基于规则引擎的动态网络拓扑管理方法及其系统 |
CN114268491A (zh) * | 2021-12-21 | 2022-04-01 | 南方电网科学研究院有限责任公司 | 一种基于蜜罐技术的网络安防系统 |
US11995024B2 (en) | 2021-12-22 | 2024-05-28 | VMware LLC | State sharing between smart NICs |
US11799761B2 (en) | 2022-01-07 | 2023-10-24 | Vmware, Inc. | Scaling edge services with minimal disruption |
US11962564B2 (en) | 2022-02-15 | 2024-04-16 | VMware LLC | Anycast address for network address translation at edge |
US11928367B2 (en) | 2022-06-21 | 2024-03-12 | VMware LLC | Logical memory addressing for network devices |
US11899594B2 (en) | 2022-06-21 | 2024-02-13 | VMware LLC | Maintenance of data message classification cache on smart NIC |
US11928062B2 (en) | 2022-06-21 | 2024-03-12 | VMware LLC | Accelerating data message classification with smart NICs |
TWI846404B (zh) * | 2023-03-27 | 2024-06-21 | 國立陽明交通大學 | 容器網路通訊系統及方法 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5506838A (en) * | 1994-12-29 | 1996-04-09 | Emc Corporation | Packet propagation and dynamic route discovery apparatus and techniques |
US6363421B2 (en) * | 1998-05-31 | 2002-03-26 | Lucent Technologies, Inc. | Method for computer internet remote management of a telecommunication network element |
EP1796305B1 (en) | 1999-07-09 | 2016-02-17 | Intellectual Ventures I LLC | TCP/IP packet-centric wireless transmission system architecture |
US7545752B2 (en) * | 2000-11-10 | 2009-06-09 | Packeteer, Inc. | Application service level mediation and method of using the same |
US20030035371A1 (en) * | 2001-07-31 | 2003-02-20 | Coke Reed | Means and apparatus for a scaleable congestion free switching system with intelligent control |
JP2006526359A (ja) | 2003-04-07 | 2006-11-16 | シネマティクス インコーポレイテッド | 汎用ルータにおけるスケーラブルな管理を提供するシステム及び方法 |
JP2005006235A (ja) * | 2003-06-16 | 2005-01-06 | Hitachi Ltd | ネットワーク監視システム及び監視方法並びにプログラム |
US20060101495A1 (en) * | 2004-11-05 | 2006-05-11 | William Yoshida | Device evaluation using media access control emulator |
US20070248085A1 (en) * | 2005-11-12 | 2007-10-25 | Cranite Systems | Method and apparatus for managing hardware address resolution |
US20070140235A1 (en) * | 2005-12-21 | 2007-06-21 | Nortel Networks Limited | Network visible inter-logical router links |
US8848544B2 (en) * | 2007-11-08 | 2014-09-30 | Cisco Technology, Inc. | Event correlation using network data flow simulation over unmanaged network segments |
EP2139178A1 (en) * | 2008-06-27 | 2009-12-30 | Alcatel, Lucent | Method of determining a routing path |
US8259569B2 (en) * | 2008-09-09 | 2012-09-04 | Cisco Technology, Inc. | Differentiated services for unicast and multicast frames in layer 2 topologies |
US8271775B2 (en) * | 2008-12-17 | 2012-09-18 | Cisco Technology, Inc. | Layer two encryption for data center interconnectivity |
US8265075B2 (en) * | 2009-03-16 | 2012-09-11 | International Business Machines Corporation | Method and apparatus for managing, configuring, and controlling an I/O virtualization device through a network switch |
EP2413547A4 (en) * | 2009-03-26 | 2014-12-24 | Nec Corp | ROUTE DETERMINATION SERVER, ROUTE DETERMINATION METHOD AND ROUTE DETERMINATION PROGRAM |
US8159936B2 (en) | 2009-03-31 | 2012-04-17 | Extreme Networks, Inc. | Network convergence in response to a topology change |
US7953865B1 (en) * | 2009-12-28 | 2011-05-31 | Amazon Technologies, Inc. | Using virtual networking devices to manage routing communications between connected computer networks |
US7991859B1 (en) * | 2009-12-28 | 2011-08-02 | Amazon Technologies, Inc. | Using virtual networking devices to connect managed computer networks |
US9282027B1 (en) * | 2010-03-31 | 2016-03-08 | Amazon Technologies, Inc. | Managing use of alternative intermediate destination computing nodes for provided computer networks |
US8683023B1 (en) * | 2010-06-30 | 2014-03-25 | Amazon Technologies, Inc. | Managing communications involving external nodes of provided computer networks |
US8391289B1 (en) * | 2010-10-29 | 2013-03-05 | Hewlett-Packard Development Company, L.P. | Managing a forwarding table in a switch |
JP5580766B2 (ja) * | 2011-03-14 | 2014-08-27 | 株式会社エヌ・ティ・ティ・データ | サーバ装置、パケット伝送システム、パケット伝送方法及びプログラム |
US8842671B2 (en) * | 2011-06-07 | 2014-09-23 | Mellanox Technologies Ltd. | Packet switching based on global identifier |
JP6080313B2 (ja) | 2011-08-04 | 2017-02-15 | ミドクラ エスエーアールエル | 仮想ネットワークを実装及び管理するシステム及び方法 |
-
2012
- 2012-08-06 JP JP2014524150A patent/JP6080313B2/ja active Active
- 2012-08-06 ES ES12819833T patent/ES2713078T3/es active Active
- 2012-08-06 US US14/236,020 patent/US9900224B2/en active Active
- 2012-08-06 WO PCT/US2012/049692 patent/WO2013020126A1/en active Application Filing
- 2012-08-06 TW TW101128256A patent/TWI583151B/zh active
- 2012-08-06 EP EP12819833.0A patent/EP2740242B8/en active Active
-
2018
- 2018-01-24 US US15/878,719 patent/US11070447B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11438374B2 (en) * | 2015-08-18 | 2022-09-06 | Acronis International Gmbh | Agentless security of virtual machines for outbound transmissions using a network interface controller |
Also Published As
Publication number | Publication date |
---|---|
EP2740242A4 (en) | 2015-06-24 |
US20180227195A1 (en) | 2018-08-09 |
WO2013020126A1 (en) | 2013-02-07 |
US11070447B2 (en) | 2021-07-20 |
JP6080313B2 (ja) | 2017-02-15 |
US9900224B2 (en) | 2018-02-20 |
JP2014529926A (ja) | 2014-11-13 |
EP2740242B1 (en) | 2018-12-05 |
EP2740242A1 (en) | 2014-06-11 |
EP2740242B8 (en) | 2019-01-23 |
TW201322686A (zh) | 2013-06-01 |
US20140195666A1 (en) | 2014-07-10 |
TWI583151B (zh) | 2017-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2713078T3 (es) | Sistema y método para implementar y gestionar redes virtuales | |
JP7004405B2 (ja) | 仮想ネットワークにおける分散型フロー状態p2p設定のためのシステムおよび方法 | |
US12021701B2 (en) | Refresh of the binding tables between data-link-layer and network-layer addresses on mobility in a data center environment | |
US11570104B2 (en) | Tunnel-based service insertion in public cloud environments | |
US11032183B2 (en) | Routing information validation in SDN environments | |
US9742586B2 (en) | Intelligent host route distribution for low latency forwarding and ubiquitous virtual machine mobility in interconnected data centers | |
CN105591907B (zh) | 一种路由获取方法和装置 | |
WO2016174598A1 (en) | Sdn network element affinity based data partition and flexible migration schemes | |
US10965596B2 (en) | Hybrid services insertion | |
EP3718016B1 (en) | Method for migration of session accounting to a different stateful accounting peer |