MX2011001608A - Plataforma para enrutamiento de mensajes. - Google Patents
Plataforma para enrutamiento de mensajes.Info
- Publication number
- MX2011001608A MX2011001608A MX2011001608A MX2011001608A MX2011001608A MX 2011001608 A MX2011001608 A MX 2011001608A MX 2011001608 A MX2011001608 A MX 2011001608A MX 2011001608 A MX2011001608 A MX 2011001608A MX 2011001608 A MX2011001608 A MX 2011001608A
- Authority
- MX
- Mexico
- Prior art keywords
- packet
- intended recipient
- server
- node
- packets
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 36
- 238000004891 communication Methods 0.000 claims abstract description 7
- 230000008569 process Effects 0.000 claims description 12
- 238000012545 processing Methods 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 5
- 239000012634 fragment Substances 0.000 description 24
- 238000013500 data storage Methods 0.000 description 6
- 238000013467 fragmentation Methods 0.000 description 5
- 238000006062 fragmentation reaction Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000010295 mobile communication Methods 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/222—Monitoring or handling of messages using geographical location information, e.g. messages transmitted or received in proximity of a certain spot or area
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/54—Presence management, e.g. monitoring or registration for receipt of user log-on information, or the connection status of the users
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
- H04L51/043—Real-time or near real-time messaging, e.g. instant messaging [IM] using or handling presence information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/30—Profiles
- H04L67/306—User profiles
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
Se describe un sistema y método para enrutar mensajes en una red de comunicaciones. El sistema incluye una pluralidad de nodos para recibir un paquete para entrega a un destinatario pretendido en donde el sistema está adaptado para determinar si el destinatario pretendido está conectado a un primer nodo seleccionado dentro de la pluralidad de nodos; y si el destinatario está conectado al primer nodo seleccionado, entregar el paquete; y si se determina que el destinatario no está conectado al primer nodo seleccionado dentro de la pluralidad de nodos, el sistema además está adaptado para determinar a cuál nodo entre la pluralidad de nodos del destinatario pretendido está conectado y dirigir el paquete al nodo al cual está conectado el destinatario pretendido.
Description
PLATAFORMA PARA ENRUTAMIENTO DE MENSAJES
CAMPO DE LA INVENCIÓN
La presente solicitud de invención se relaciona con sistemas y métodos para enrutar información. En particular, aunque no exclusivamente, la presente invención se relaciona con el enrutamiento de mensajes y datos en una red de comunicaciones móviles.
DISCUSIÓN DEL CAMPO TÉCNICO ANTECEDENTE
La siempre creciente popularidad de la mensajería y los formatos de datos móviles como SMS, MMS, VOIP, correo electrónico, mensajería instantánea, mensajería por video, transmisión de videos en tiempo real en vivo, etc. generan una carga siempre creciente en la capacidad de red. El aumento de tráfico afecta la eficiencia de la red. Para mejorar la capacidad de transmisión de datos muchos proveedores emplean el modelado en donde se restringe la velocidad de datos provista a diversos usuarios quienes exceden límites de uso de datos establecidos.
Los efectos del aumento en el tráfico de datos son mucho más evidentes en muchas de las plataformas de comunicaciones móviles actuales. Esencialmente, a medida que las tecnologías móviles han avanzado desde el dispositivo móvil de la primera generación hasta la segunda generación, la generación 2.5 y recientemente la tercera generación, el tráfico de datos ha crecido exponencialmente . Esto se debe principalmente a la provisión de ancho de banda adicional. Sin embargo, la eficiencia de la transferencia de datos a través de redes móviles está limitada en su velocidad por los componentes de hardware de la red. No sólo el hardware limita los datos, sino que también limita la cantidad de usuarios a los que puede dar servicio cualquier nodo en la red en un momento determinado.
Dada la cantidad siempre creciente de datos que se colocan en las redes de comunicaciones móviles claramente existe una necesidad de un sistema de mensajes y un método que no sólo sean capaces de manejar el tráfico de datos de la red sino que también es fácilmente escalable para atender el aumento en los datos.
SUMARIO DE LA INVENCIÓN
Descripción de la invención
De acuerdo con lo anterior en un aspecto de la presente invención se proporciona un sistema para enrutar mensajes en una red de comunicación, el sistema incluye:
una pluralidad de nodos para recibir un paquete para entrega a un destinatario pretendido en donde el sistema está adaptado para determinar si el destinatario pretendido está conectado a un primer nodo seleccionado dentro de la pluralidad de nodos y si el destinatario está conectado al primer nodo seleccionado entrega el paquete y si se determina que el destinatario no está conectado al primer nodo seleccionado dentro de la pluralidad de nodos, el sistema además está adaptado para determinar cuál nodo entre la pluralidad de nodos del destinatario pretendido está conectado y dirigir el paquete al nodo al cual está conectado el destinatario pretendido.
Preferiblemente cada nodo de la pluralidad de nodos incluye una pluralidad de servidores acoplados entre si. Como corresponde, cada nodo contiene un primer servidor de la pluralidad de servidores, el primer servidor está adaptado para determinar si el destinatario pretendido está conectado a por lo menos un servidor dentro de la pluralidad de servidores del nodo. El primer servidor puede adaptarse para determinar si el paquete contiene una dirección de destino del nodo al cual debe enrutarse el paquete. Preferiblemente el primer servidor está adaptado para limpiar la información de enrutamiento en el paquete al reenviar el paquete al destino deseado.
Si el paquete del mensaje no contiene ninguna información de enrutamiento y el primer servidor determina que el destinatario pretendido no está conectado a su nodo entonces el primer servidor se adapta para enrutar el paquete del mensaje a un registro. El registro puede incluir uno o más servidores. De manera correspondiente el registro incluye un primer servidor adaptado para consultar por lo menos una base de datos en busca de información respecto a la ubicación del último nodo al cual se conectó el destinatario pretendido. Si la o las bases de datos contienen información acerca de la última ubicación conocida del destinatario pretendido el primer servidor de registro entonces reenvía el paquete al primer servidor del nodo identificado.
De manera correspondiente el registro puede consultar una pluralidad de bases de datos ya sea simultáneamente o secuencialmente . La base de datos puede encontrarse en una única ubicación o distribuirse a través de la red.
Preferiblemente la pluralidad de servidores en cada nodo y/o cada registro pueden ocupar la misma ubicación física. Alternativamente los servidores dentro de cada nodo y/o registro pueden distribuirse a través de diferentes ubicaciones dentro del nodo/registro, en tal caso los servidores se agrupan en conjuntos.
Los paquetes pueden incluir paquetes de mensaje, paquetes de información o paquetes de presencia. Si el paquete es un paquete de mensaje y el sistema no puede determinar la ubicación del destinatario el sistema intenta entregar el paquete de acuerdo con un conjunto de reglas predeterminadas. Las reglas de entrega pueden incluir (sin limitarse a ello) la entrega de SMS, la entrega de correo electrónico y/o la entrega a través de otro medio alternativo. Si el paquete es un paquete de información el sistema devuelve un paquete de error "no encontrado" al originador del mensaje. Si el paquete de mensaje es un paquete de presencia, el sistema descarta el paquete.
En un aspecto adicional de la presente invención se proporciona un método para enrutar mensajes en un sistema de comunicación, el método incluye:
recibir en un primer nodo dentro de una pluralidad de nodos un paquete para un destinatario pretendido;
determinar si el destinatario pretendido está conectado al nodo y si el destinatario pretendido está conectado al nodo entregar el paquete al destinatario pretendido y si el destinatario no está conectado al primer nodo determinar a cuál nodo de la pluralidad de nodos está conectado el destinatario pretendido y reenviar el paquete al nodo al cual está conectado el destinatario pretendido.
El método además puede incluir el paso de reenviar el paquete a un registro en el caso de que el paso de determinación falle al identificar el nodo al cual está conectado el destinatario pretendido.
El método también puede incluir el paso de consultar una o más bases de datos para determinar el nodo al cual el destinatario pretendido se conectó por última vez y reenviar el paquete al nodo con base en la información recuperada de una o más bases de datos.
Preferiblemente el método incluye el paso de reenviar el paquete a un destinatario con base en reglas predeterminadas .
BREVE DESCRIPCIÓN DE LOS DIBUJOS
Con el fin de que esta invención sea entendida más fácilmente y puesta en práctica, ahora se hará referencia a los dibujos adjuntos, los cuales ilustran las modalidades preferidas de la invención, y en donde:
La Figura 1 es un diagrama esquemático que ilustra un sistema para enrutar paquetes de acuerdo con una modalidad de la presente invención
La Figura 2 es un diagrama de flujo que ilustra el proceso de enrutamiento de acuerdo con una modalidad de la presente invención
La Figura 3 es un diagrama esquemático que ilustra las relaciones de conectividad entre los componentes de la red bajo el proceso de enrutamiento de acuerdo con una modalidad de la presente invención;
La Figura 4 es un diagrama esquemático que ilustra el proceso empleado por un servidor de registro para localizar un fragmento de datos de acuerdo con una modalidad de la presente invención.
DESCRIPCION DE LAS MODALIDADES DE LA INVENCION
Se entenderá que a través de la descripción los términos "Conexión" y "Registro" al utilizarse en conjunto con la discusión de la arquitectura del sistema se refieren a los componentes lógicos del servidor que manejan la conectividad de los usuarios finales/dispositivos (conexión) y el acceso a bases de datos/datos persistentes (registro) . De manera similar, el término "Ubicación" se utiliza para significar la "ubicación de un usuario o dispositivo", la cual debe interpretarse como un identificador único para una "Conexión" como se define anteriormente. Este puede ser, por ejemplo, una dirección IP, pero la arquitectura también cubre cualquier otro esquema de direccionamiento. El término "base de datos" también se usa ampliamente para referirse a un almacenamiento de datos, y no implica ningún método especifico de almacenamiento de datos (como una base de datos SQL) , o cualquier sistema o producto de administración de bases de datos especifico.
Con referencia a la Figura 1 se ilustra un ejemplo de un sistema 100 para enrutar un paquete 102 de acuerdo con una modalidad de la presente invención. Los paquetes en este ejemplo en particular pueden incluir paquetes de mensaje, paquetes de información y paquetes de presencia. Si se utiliza el protocolo XMPP estos se relacionan con las etiquetas <message>, <iq> y <presence>, respectivamente .
En este ejemplo el cliente originante 101 da formato al paquete 102 y lo reenvía a un primer servidor seleccionado 104a de una pluralidad de servidores (clúster) 104a, 104b, 104c dentro del primer nodo seleccionado 103a dentro de una pluralidad de nodos 103a, 103b, 103c y 103d (red) para entrega a un destinatario pretendido 108. Una vez que el paquete 102 es entregado al primer servidor 104a dentro del nodo seleccionado 103a, el primer servidor 104a determina si el destinatario pretendido 108 está conectado a un primer servidor 104a. Si el destinatario está conectado al servidor 104a entonces el servidor procede a entregar el paquete (entrega local) al destinatario pretendido 108.
Si el destinatario 108 no está conectado a un servidor 104a, 104b, 104c dentro del conjunto entonces el primer servidor 104a procede a comprobar si el paquete 102 contiene una dirección de destino. Por ejemplo el paquete 102 puede especificar el servidor 104c en el nodo 103c como la dirección de destino, en cuyo caso el servidor 104a en el nodo 103a enruta el paquete 102 directamente al servidor 104c dentro del nodo 103c. Será evidente para aquellos de habilidad ordinaria en el campo técnico que el paquete puede enrutarse indirectamente al servidor 104c dentro del nodo 103c a través del nodo 103b, 103d a 103c, un primer servidor 104a dentro del nodo 103c entonces puede encargarse de la entrega del paquete 102 antes de reenviar el paquete 102 al servidor 104c para entrega al destinatario 108.
En el caso de que el destinatario 108 no esté conectado a un servidor 104a, y el paquete no contiene una dirección de destino especificada entonces el servidor 104a dentro del nodo 103a reenvía el paquete a un registro 105. Para claridad y facilidad de descripción el ejemplo se muestra incluyendo únicamente un registro 105, sin embargo será apreciado por aquellos de habilidad ordinaria en el arte que el sistema puede incluir cualquier número de registros 105.
Como se muestra en el registro 105 incluye una pluralidad de servidores 106a, 106b, 106c (conjunto de servidores de Registro) . Una vez que el paquete 102 se entrega a un primer servidor 106a desde una pluralidad de servidores (conjunto) 106a, 106b, 106c, el servidor 106a consulta una o más bases de datos 107a, 107b, 107c en busca de información relacionada con la última ubicación conocida del destinatario pretendido 108. Si la información sobre la última ubicación del destinatario pretendido 108 está disponible cuando el primer servidor 106a reenvía el paquete al servidor 104a, 104b, 104c dentro del nodo apropiado 103a, 103b, 103c y 103d al cual se conectó el destinatario 108 por última vez. En este ejemplo la información obtenida desde las bases de datos indica que el destinatario 108 se conectó por última vez al servidor 104a en el nodo 103d, en cuyo caso el servidor 106a reenvía el paquete 102 al servidor 104a en el nodo 103d para entrega. En el caso de que el destinatario 108 haya cambiado su ubicación desde entonces, el servidor de ubicación 104a entonces puede procesar el paquete como se trató anteriormente o realizar un enrutamiento adicional. Se presentan detalles adicionales sobre la manera en que se enrutan los paquetes entre los diversos nodos en relación con la Figura 2 a continuación.
En una modalidad adicional de la presente invención el primer servidor 104a al determinar que el destinatario pretendido 108 no está conectado al primer servidor 104a, podría realizar primero una búsqueda de los servidores restantes 104b, 104c dentro del conjunto contenido en el nodo 103a para determinar si el destinatario pretendido 108 está conectado a uno de los servidores restantes 104b, 104c. Si el destinatario pretendido está conectado a uno de los servidores restantes 104b, 104c entonces el servidor 104a reenvía el paquete al servidor (en este caso el servidor 104b) al cual está conectado el destinatario 108. El servidor 104b a continuación entrega el paquete al destinatario 108.
Como se mencionó anteriormente los servidores dentro de los nodos 103a, 103b, 103c y el registro 105 están distribuidos en conjuntos. Los conjuntos normalmente consisten en varios servidores, que tienen por lo menos una conexión disponible entre ellos. Por tanto los servidores pueden distribuirse geográficamente a través del área de servicio del nodo, siempre que la conexión de red entre los servidores esté disponible. Mientras que la discusión anterior ha establecido una distinción entre el registro y los nodos será apreciado por aquellos de habilidad ordinaria en el arte que la distinción se ha establecido únicamente para claridad de descripción y que cualquier conjunto de servidores dentro de un nodo dado puede ser un conjunto de tipo Conexión o Registro.
Con referencia a la Figura 2 hay un diagrama de flujo que ilustra un ejemplo de un proceso de enrutamiento que puede emplearse en el sistema de la Figura 1 tratado anteriormente. Aquí se da formato al paquete 102 y se entrega a un servidor de "Conexión" 104a dentro de un nodo
52-698
103a. Ya que existe una pluralidad de nodos 103a, 103b, 103c, 103d dentro de la red, el destinatario 108 puede estar conectado a cualquiera de los servidores de conexión 104a, 104b, 104c dentro de un conjunto de servidores contenidos en un nodo dado. Por tanto el servidor de Conexión 104a que maneja el paquete realiza una comprobación 201 para ver si el destinatario pretendido se conecta localmente al servidor 104a que procesa el paquete. Si esta comprobación tiene un resultado "si", significa que el destinatario del paquete ha sido encontrado, y está conectado al servidor 104a que actualmente maneja el procesamiento. Por tanto, el servidor 104a procede con la entrega local 202 del paquete 102 (por ejemplo, en el caso de que el destinatario 108) conectado al servidor 104.
En caso de que la comprobación 201 devuelva un resultado "no" entonces el servidor de Conexión 104a debe iniciar un procedimiento de búsqueda para determinar la ubicación del destinatario pretendido 203. Bajo este procedimiento de búsqueda el servidor de Conexión 104a procede a comprobar si el paquete 102 contiene el "destino de enrutamiento" 203. La información de enrutamiento en esta instancia es un identificador único que especifica un servidor de Conexión dado dentro de un conjunto 104a, 104b, 104c (este puede ser, por ejemplo, la dirección IP de dicho servidor, pero también pueden aplicarse otros esquemas de
52-698
direccionamiento) al cual debe reenviarse el paquete. Por tanto, el cliente que envia puede usar el campo opcional "destino de enrutamiento" en el paquete 102 para solicitar enrutar a un servidor de Conexión especifico donde el cliente conoce o puede deducir la ubicación o la ubicación probable del nodo 103a, 103b, 103c, 103d que contiene el servidor de Conexión 104a, 104b, 104c al cual está conectado el destinatario 108.
Si el paquete 102 contiene información de enrutamiento el servidor de Conexión 104a que maneja el procesamiento 102 entonces reenvía el paquete 102 al servidor de Conexión 104a, 104b, 104c identificado en la información de enrutamiento. A continuación la información de enrutamiento se "limpia" o elimina 204 para evitar que el paquete 102 sea enrutado infinitamente a lo largo del mismo destino en un ciclo cuando el paquete es procesado por el servidor de Conexión relevante dentro del nodo de destino relevante.
Si el destinatario de destino no está conectado al servidor de Conexión 104a que realiza el procesamiento, y si no existe un destino de enrutamiento especificado en el paquete 102, el servidor de Conexión 104a reenvía (paso 205) el paquete 102 a un servidor de Registro seleccionado 106a dentro de un conjunto de servidores de registro 106a, 106b, 106c con el fin de determinar la ubicación del
52-698
destinatario pretendido 108. Depende del servidor de Conexión 104a que realiza el procesamiento determinar un servidor de Registro adecuado 106a, 106b, 106c para esto usando cualquier esquema deseado (este podría ser el servidor de Registro más cercano, o aquel con la menor carga, o sencillamente elegirse al azar entre los Registros disponibles conocidos, o cualquier otro método) .
Una vez que el paquete 102 alcanza el servidor de Registro 106a, el servidor de Registro 1006a a continuación busca los datos del destinatario en una o más bases de datos 107a, 107b, 107c (por ejemplo, la cuenta de usuario del destinatario, etc.)- Las bases de datos 107a, 107b, 107c pueden ser como los servidores de Conexión y Registro y distribuirse en conjuntos distribuidos a través de la red, permitiendo por este medio que los datos del destinatario se guarden en más de una base de datos dentro de la red. En tales instancias todos los servidores de Registro 106a, 106b, 106c están configurados con la información requerida para determinar dónde se almacenan los datos de un usuario dado, y cómo conectar con la misma. Usando su información de configuración, el servidor de Registro 106a que procesa el paquete 102 se conecta a la base de datos apropiada 107a, 107b, 107c (si no se conectó antes), y consulta a la base de datos 206 en busca de los datos del perfil de usuario del destinatario pretendido
52-698
108.
Una vez que el servidor de registro 106a localiza los datos del perfil del usuario dentro de la base de datos relevante 107a, 107b, 107c el servidor de Registro 106a a continuación procede a comprobar si se conoce la última ubicación de la cuenta del usuario destinatario 207 (aquí "ubicación" se utiliza como se determinó anteriormente, este es un identificador único de un servidor de Conexión en un nodo dado dentro de la red) . De manera similar, "la última ubicación" aquí se refiere al servidor de Conexión 104a, 104b, 104c que ha servido más recientemente al destinatario pretendido 108. Antes de reenviar el paquete 102 mediante el servidor de Registro 106a al último servidor de Conexión conocido 104a, 104b, 104c que dio servicio por última vez al destinatario pretendido, se realiza una comprobación adicional 208 para determinar si el paquete ya ha sido reenviado por un servidor de Registro 106a, 106b, 106c a un servidor de Conexión 104a, 104b, 104c. Si es asi, el paquete no será reenviado de nuevo.
En caso que el paquete 102 aún no haya sido reenviado por un Registro 106a, 106b, 106c el Registro 106a que actualmente procesa el paquete etiqueta el paquete 102 con información que significa que el paquete fue reenviado por el servidor de Registro 106a que actualmente procesa el paquete. El servidor de Registro 106a entonces reenvía 209
52-698
el paquete 102 al servidor de Conexión apropiado 104a, 104b, 104c. El servidor de Conexión relevante 104a, 104b, 104c entonces continúa procesando el paquete como se describe anteriormente. Etiquetar el paquete 102 en esta manera asegura que la próxima vez el paquete 102 pase a través de la comprobación 208 de que no se forma un ciclo infinito que haga rebotar el paquete entre un servidor de Registro y un servidor de Conexión.
Si la ubicación del destinatario no puede determinarse mediante el servidor de Registro 106a entonces se concluye que el destinatario 108 del paquete está conectado a cualquier servidor de Conexión 104a, 104b, 104c en el momento presente 210. En un modo de hablar, el destinatario 108 pretendido está "fuera de linea". El protocolo entonces determina a que clase el paquete 102 pertenece 21) (por ejemplo, mensaje, información o presencia) . Según el tipo al que pertenece el paquete, la manera en que el proceso de enrutamiento maneja el paquete difiere .
En el caso de "Paquete de mensaje", los cuales son considerados "más importantes", el sistema consultará un conjunto de reglas de enrutamiento 212, y toma la decisión apropiada sobre la manera en que se entregará el paquete. Las reglas de enrutamiento 21) que controlan la manera en que se entregan los mensajes pueden incluir (sin
52-698
limitarse a ello) la entrega de SMS, la entrega de correo electrónico y/o la entrega a través de otro medio alternativo .
En caso de "Paquetes de información" (los cuales corresponden a etiquetas de IQ en el protocolo XMPP) , un paquete de error "no encontrado" (también referido comúnmente como un error 404) se devuelve al remitente del paquete original 213. La entrega del paquete de error entonces también seguirá el mismo algoritmo de enrutamiento de mensaje descrito aquí. El paquete de error no se enviará en caso de que el paquete original ya fuera un paquete de error (por ejemplo, no se enviará una respuesta de error para las respuestas de error) . Esto de nuevo impedirá que ocurra un ciclo infinito.
En el caso de "Paquetes de presencia" estos paquetes se consideran irrelevantes en instancias donde el destinatario de la información no está conectado a un conjunto. Por tanto, estos paquetes se descartan silenciosamente sin devolver información al remitente 214.
Como puede verse desde la discusión anterior el proceso de enrutamiento de acuerdo con una modalidad de la presente invención cubre un sistema conectado en red consistente en los dos componentes principales siguientes:
• Cliente (s) 101,108
· Conexión(es) 104a, 104b 104c
52-698
• Registro(s) 106a, 106b 106c
• Base(s) de datos 107a, 104b 104c
Las relaciones de conectividad entre estos componentes se ilustran en la Figura 3. El algoritmo de enrutamiento especifica las siguientes relaciones de conectividad. Los clientes de origen 101 y recepción 108 se conectan únicamente a los servidores de Conexión 104a, 104b, 104c. Como se muestra, uno o más clientes 101, 108 pueden conectarse a un servidor de Conexión 104a. Cualquier número de clientes pueden conectarse en cualquier momento dado, sin embargo, una cuenta de cliente/usuario sólo puede conectarse a un servidor de Conexión 104a a la vez. Cualquier número de servidores de Conexión 104a, 104b, 104c pueden estar disponibles en cualquier momento dado. Cualquier servidor de Conexión puede conectarse a cualquier servidor de Registro 106a, 106b, 106c. Un servidor de Conexión 104a puede conectarse a varios Registros simultáneamente si asi se requiere. Cualquier servidor de Registro 106a, 106b, 106 puede acceder a cualquier base de datos 107a, 107b, 107c. Un Registro puede conectarse a varias bases de datos simultáneamente si asi se requiere. Cualquier servidor de Registro puede conectarse a cualquier servidor de Conexión (para reenvío de mensajes como se describe anteriormente) .
"Conexión", "Registro" y "Base de datos" se
52-698
utilizan anteriormente como componentes lógicos del sistema, y pueden o no distribuirse en un solo servidor físico, o pueden distribuirse a través de un arreglo de hardware. Generalmente, los requisitos de capacidad determinarán la distribución física del sistema deseado.
El proceso de enrutamiento del presente no requiere basarse en un sistema o metodología de administración de base de datos específicos. En una modalidad de la presente invención, sin embargo, el proceso puede utilizar una combinación de fragmentación y réplica de base de datos, el cual se describe con mayor detalle a continuación .
Un "fragmento" se utiliza en el presente como una "partición de base de datos", la cual representa una manera de distribuir una gran cantidad de datos a través de sistemas internos de almacenamiento de datos instalados por separado. Un "sistema interno de almacenamiento de datos" se utiliza normalmente en el presente para referirse a un servidor específico que utiliza un RDBMS (sistema de administración de bases de datos relaciónales), sin embargo no es necesariamente así, y cualquier método de almacenamiento de datos es aceptable.
Como se muestra en la Figura 4, en un entorno compartido, un servidor de Registro 106a necesita determinar siempre la ubicación de almacenamiento de datos
52-698
correcta para cualquier acción dada, y realizar la operación sobre un fragmento apropiado. Por ejemplo, si el fragmento requerido es el fragmento "número 2", entonces el servidor de Registro 106a determina que el fragmento se almacena dentro de la base de datos 107a. El servidor de registro 106a a continuación recupera el fragmento de la base de datos 107a y realiza la acción necesaria. Si el fragmento requerido es el fragmento "número 1", y la operación es una operación de lectura, el servidor de Registro 106a determinaría que cualquiera de las bases de datos 107b, 107c contienen el fragmento relevante sin embargo, si el fragmento requerido es el fragmento "número 1", pero la operación es una operación de escritura (adición o modificación de datos) , entonces el servidor de Registro 106a seleccionaría la base de datos 107b (asumiendo que la réplica sea de tipo amo-esclavo) . Aunque la selección de fragmentos ha sido discutida en relación con el acceso a 3 bases de datos por separado a través de las cuales se distribuyen los fragmentos, será apreciado por aquellos con habilidad ordinaria en el campo técnico que una sola base de datos que contiene varias posiciones puede utilizarse.
Como se menciona anteriormente, una base de datos grande puede partirse en varios fragmentos (o "particiones"), para cada registro en la base de datos, el
52-698
algoritmo de fragmentación determina cuál partición posee el registro. El algoritmo de fragmentación puede implementarse en varias maneras, de nuevo el algoritmo exacto debe dictarse mediante los requisitos de escalabilidad. Un lineamiento general para un algoritmo de fragmentación podría ser el siguiente:
• Para datos relacionados con una cuenta de usuario específica en el sistema, primero determine el identificador único para la cuenta del usuario ("id de usuario")
• Calcular un hash de la identificación de usuario usando una función de hash adecuada ("hash" es un término utilizado en la terminología de computación, el cual se utiliza a menudo para referirse a una representación numérica de una cadena de texto, y "función de hash" es una función que determina el algoritmo específico que proporciona esta representación) . Esto le brinda una representación numérica de la identificación del usuario, la cual puede o no ser numérica en sí misma.
· Use el número de hash como base para la asignación del fragmento. Si se conoce el número de fragmentos disponibles, entonces este puede obtenerse sencillamente mediante la división simple y anotar el residuo. Por ejemplo:
1. Dado un sistema con 8 fragmentos de base de
52-698
datos, y
2. El hash(userid) = 84529823
3. El número de fragmento de base de datos que posee estos registros de identificación de usuario podría ser 84529823 % 8 = 7 (la notación "a % b" aquí se refiere a realizar la división "a/b" y después recuperar el resto del cálculo )
4. En este caso, el fragmento de base de datos será el fragmento 7
Además del algoritmo de fragmentación, se requiere otro mecanismo dentro del sistema para determinar cómo los servidores de Registro (106a, 106b, 106c) llegarán a un fragmento dado. Pueden configurarse diferentes mecanismos para operaciones de lectura y escritura para ajustarse a la réplica de la base de datos en una configuración amo-esclavo (donde únicamente puede escribirse a un servidor físico, pero puede accederse a varios servidores para operaciones de lectura) .
Este mecanismo para ubicar fragmentos puede implementarse mediante tablas de configuración sencillas con los servidores de Registro (106a), en donde cada índice de fragmentos está configurado con las direcciones (IP) de los servidores que pueden actuar como nodos de base de datos para el fragmento dado. Estas direcciones pueden etiquetarse mediante banderas de "lectura" y/o "escritura"
52-698
de manera que un Registro sabrá dónde conectar dado el requisito de base de datos en cualquier momento dado.
Debe entenderse que las modalidades anteriores han sido provistas únicamente como ejemplos de esta invención, y que modificaciones y mejoras adicionales a las mismas, como seria evidente para personas expertas en el campo técnico relevante, se considera que caen dentro del alcance amplio y ámbito de la presente invención descrita en el presente documento.
52-698
Claims (21)
1. Un sistema para enrutar mensajes en una red de comunicación que tiene un a pluralidad de nodos, cada nodo incluye una pluralidad de servidores conectados entre si en donde al recibir un paquete para entrega a un destinatario pretendido por un primer servidor dentro de la pluralidad de servidores de un primer nodo dentro de la pluralidad de nodos, tal sistema está adaptado para: determinar si el destinatario pretendido está conectado al primer servidor y si el destinatario está conectado al primer servidor, entregar el paquete; tal sistema además está adaptado para, al determinar que el destinatario pretendido no está conectado al primer servidor, determinar si el paquete contiene una dirección de destino y reenviar el paquete a la dirección de destino para entrega, y en caso de que el paquete no contenga una dirección de destino, el sistema reenvía el paquete a un registro, en donde el registro está adaptado para: consultar por lo menos una base de datos para obtener el perfil de usuario de los destinatarios pretendidos; y reenviar el paquete al destinatario pretendido con base en la información contenida en el perfil de usuario .
2. El sistema según la reivindicación 1, en 52-698 donde el sistema está adaptado adicionalmente para determinar si el destinatario pretendido está conectado a un servidor dentro de la pluralidad de servidores del primer nodo y entregar el paquete al servidor al cual está conectado el destinatario pretendido dentro del primer nodo antes de determinar si el paquete contiene una dirección de destino
3. El sistema de cualquier reivindicación 1 en donde el primer servidor de la pluralidad de servidores está adaptado para limpiar la información de enrutamiento en el paquete al reenviar el paquete al destino deseado.
4. El sistema de cualquiera de las reivindicaciones 1 a 3 en donde el registro incluye una pluralidad de servidores conectados entre si.
5. El sistema según cualquiera de las reivindicaciones 1 a 4 en donde la pluralidad de servidores de cada nodo se distribuyen a través de varias ubicaciones geográficas dentro del área de servicio de cada nodo.
6. El sistema según cualquiera de las reivindicaciones precedentes en donde el perfil del usuario contiene información acerca de la última ubicación conocida del destinatario pretendido dentro de la red de comunicaciones y el paquete se reenvía a la última ubicación conocida del destinatario pretendido.
7. El sistema de cualquiera de las reivindicaciones precedentes en donde el paquete se selecciona entre por lo menos una de las siguientes clases de paquetes: paquetes de mensaje, paquetes de información o paquetes de presencia.
8. El sistema según la reivindicación 7 en donde el sistema está configurado para procesar cada paquete de acuerdo con un conjunto de reglas predeterminadas para cada clase en respuesta a la falla del registro al obtener el perfil de usuario del destinatario pretendido .
9. El sistema según la reivindicación 8 en donde el sistema está configurado para reenviar paquetes de mensaje al destinatario pretendido a través de un medio alterno especificado en el perfil de usuario.
10. El sistema según la reivindicación 9 en donde el medio alterno es un SMS.
11. El sistema según la reivindicación 8, en donde el sistema está configurado para enviar un mensaje de error a la fuente del paquete para paquetes asignados a la clase de paquete de información.
12. El sistema según la reivindicación 8 en donde el sistema está configurado para descartar paquetes asignados a la clase de paquete de presencia.
13. Un método para enrutar mensajes en un sistema de comunicación que tiene una pluralidad de nodos, cada nodo incluye una pluralidad de servidores acoplados entre si, tal método incluye: recibir en un primer servidor dentro de una pluralidad de nodos un paquete para un destinatario pretendido; determinar si el destinatario pretendido está conectado al primer servidor y si el destinatario pretendido está conectado al primer servidor, entregar el paquete al destinatario pretendido; determinar si el paquete contiene una dirección de destino y reenviar el paquete a la dirección de destino para entregar al determinar que el destinatario pretendido no está conectado al primer servidor; reenviar el paquete a un registro en respuesta a determinar que el paquete no contiene una dirección de destino en donde el registro está configurado para consultar por lo menos una base de datos para obtener el perfil de usuario del destinatario pretendido: y reenviar el paquete al destinatario pretendido con base en la información contenida en el perfil de usuario .
14. El método según la reivindicación 13, el cual además incluye el paso de limpiar la dirección de destino en el paquete al reenviar el paquete a la dirección de destino.
15. El método según la reivindicación 13 ó 14, en donde el paso de reenviar el paquete mediante el registro al destinatario o destinatarios pretendidos se basa en información respecto a si la última dirección conocida del destinatario pretendido dentro de la red de comunicaciones está contenida dentro del perfil de usuario del destinatario pretendido.
16. El método según cualquiera de las reivindicaciones 13 a 15, en donde el paquete se selecciona entre por lo menos una de las siguientes clases de paquetes: paquetes de mensaje, paquetes de información o paquetes de presencia.
17. El método según la reivindicación 16 el cual además incluye el paso de procesar cada una de las clases de paquetes de acuerdo con un conjunto de reglas predeterminado para cada clase en respuesta a que el registro falle al obtener el perfil de usuario del destinatario pretendido.
18. El método según la reivindicación 17 en donde el paso de reenviar un paquete asignado a la clase de paquetes de mensaje al destinatario pretendido a través de un medio especificado en el perfil de usuario.
19. El método según la reivindicación 18 en donde el medio alternativo es un Servicio de Mensajes Cortos (SMS) . 52-698
20. El método según la reivindicación 18 el cual además incluye el paso de enviar un mensaje de error a la fuente del paquete para paquetes asignados a la clase de paquetes de información.
21. El método según la reivindicación 18 el cual además incluye el paso de descartar paquetes asignados a la clase de paquetes de presencia. 52-698
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SG200805997-4A SG159399A1 (en) | 2008-08-13 | 2008-08-13 | Message routing platform |
PCT/SG2009/000266 WO2010019105A1 (en) | 2008-08-13 | 2009-07-29 | Message routing platform |
Publications (1)
Publication Number | Publication Date |
---|---|
MX2011001608A true MX2011001608A (es) | 2011-04-07 |
Family
ID=41669090
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
MX2011001608A MX2011001608A (es) | 2008-08-13 | 2009-07-29 | Plataforma para enrutamiento de mensajes. |
Country Status (18)
Country | Link |
---|---|
US (1) | US8798001B2 (es) |
EP (1) | EP2316205B1 (es) |
JP (1) | JP5441041B2 (es) |
KR (1) | KR101384794B1 (es) |
CN (1) | CN102124702B (es) |
AU (1) | AU2009282526B2 (es) |
CA (1) | CA2734048C (es) |
CO (1) | CO6351836A2 (es) |
ES (1) | ES2567272T3 (es) |
HK (1) | HK1157966A1 (es) |
MX (1) | MX2011001608A (es) |
MY (1) | MY161672A (es) |
RU (1) | RU2483457C2 (es) |
SG (1) | SG159399A1 (es) |
TW (1) | TWI466502B (es) |
UA (1) | UA100582C2 (es) |
WO (1) | WO2010019105A1 (es) |
ZA (1) | ZA201100748B (es) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110252083A1 (en) * | 2010-04-13 | 2011-10-13 | Rebelvox, Llc | Apparatus and method for transmitting media using either network efficient protocol or a loss tolerant transmission protocol |
US8924472B1 (en) | 2011-08-20 | 2014-12-30 | Datastax, Inc. | Embedding application services in a distributed datastore |
US10354310B2 (en) * | 2013-05-10 | 2019-07-16 | Dell Products L.P. | Mobile application enabling product discovery and obtaining feedback from network |
EP2887589A1 (en) * | 2013-12-20 | 2015-06-24 | Rovio Entertainment Ltd | Stateless message routing |
US10523619B2 (en) | 2013-12-20 | 2019-12-31 | Rovio Entertainment Ltd. | Stateless message routing |
US9560315B1 (en) * | 2015-12-07 | 2017-01-31 | Dell Software, Inc. | Reducing videoconferencing bandwidth usage |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6006272A (en) * | 1998-02-23 | 1999-12-21 | Lucent Technologies Inc. | Method for network address translation |
US6452915B1 (en) * | 1998-07-10 | 2002-09-17 | Malibu Networks, Inc. | IP-flow classification in a wireless point to multi-point (PTMP) transmission system |
US8085813B2 (en) | 1999-10-28 | 2011-12-27 | Lightwaves Systems, Inc. | Method for routing data packets using an IP address based on geo position |
US7102996B1 (en) * | 2001-05-24 | 2006-09-05 | F5 Networks, Inc. | Method and system for scaling network traffic managers |
JP3664388B2 (ja) * | 2001-11-22 | 2005-06-22 | エヌイーシーシステムテクノロジー株式会社 | 双方向通信システムおよび方法 |
ATE384387T1 (de) * | 2001-12-28 | 2008-02-15 | Motorola Inc | Kommunikation über einen ausgewählten teil eines netzwerkes |
US7535913B2 (en) * | 2002-03-06 | 2009-05-19 | Nvidia Corporation | Gigabit ethernet adapter supporting the iSCSI and IPSEC protocols |
US7050416B2 (en) * | 2002-05-14 | 2006-05-23 | Thomson Licensing | Technique for IP communication among wireless devices |
JP2003333178A (ja) * | 2002-05-15 | 2003-11-21 | Takeshi Aoki | 一般電話機によるインターネット電話システム |
EP1582036B1 (de) * | 2003-01-09 | 2006-08-02 | Siemens Aktiengesellschaft | VERFAHREN UND mOBILFUNKTELEKOMMUNIKATIONSNETZ ZUR ÜBERTRAGUNG VON PAKETDATEN |
KR20040070557A (ko) * | 2003-02-04 | 2004-08-11 | 주식회사 케이티프리텔 | 이동통신 시스템에서 메시지 전송 방법 및 장치 |
JP2005080176A (ja) * | 2003-09-03 | 2005-03-24 | Uniden Corp | ゲートウェイ装置及びその制御方法 |
CN100454882C (zh) * | 2003-12-19 | 2009-01-21 | 华为技术有限公司 | 多isp局域网的出口选择方法及装置 |
US7181217B2 (en) * | 2004-08-30 | 2007-02-20 | Talara Systems, Inc. | Mobile services control platform providing a message forwarding service |
US7426389B2 (en) * | 2004-10-15 | 2008-09-16 | Utstarcom, Inc. | Method and apparatus for implementing direct routing |
CN101480021B (zh) * | 2005-03-29 | 2013-02-13 | 捷讯研究有限公司 | 用于个人识别号码消息收发的中继站及方法 |
US7496678B2 (en) * | 2005-05-11 | 2009-02-24 | Netapp, Inc. | Method and system for unified caching of media content |
US7567553B2 (en) * | 2005-06-10 | 2009-07-28 | Swift Creek Systems, Llc | Method, system, and data structure for providing a general request/response messaging protocol using a presence protocol |
KR100727069B1 (ko) * | 2005-10-27 | 2007-06-12 | 주식회사 케이티프리텔 | Sip 기반의 무선 패킷 교환망 시스템에서의 타망 연동방법 및 그 시스템 |
US7673010B2 (en) * | 2006-01-27 | 2010-03-02 | Broadcom Corporation | Multi user client terminals operable to support network communications |
US7996467B2 (en) * | 2006-08-29 | 2011-08-09 | Oracle International Corporation | Techniques for applying policies for real time collaboration |
GB0623621D0 (en) * | 2006-11-27 | 2007-01-03 | Skype Ltd | Communication system |
US8782274B2 (en) * | 2007-10-19 | 2014-07-15 | Voxer Ip Llc | Method and system for progressively transmitting a voice message from sender to recipients across a distributed services communication network |
US8594679B2 (en) * | 2008-03-07 | 2013-11-26 | Tekelec Global, Inc. | Methods, systems, and computer readable media for routing a message service message through a communications network |
US8149840B2 (en) * | 2008-06-02 | 2012-04-03 | Huawei Technologies Co., Ltd. | Method, system and processor for processing network address translation service |
-
2008
- 2008-08-13 SG SG200805997-4A patent/SG159399A1/en unknown
-
2009
- 2009-07-29 WO PCT/SG2009/000266 patent/WO2010019105A1/en active Application Filing
- 2009-07-29 CA CA2734048A patent/CA2734048C/en active Active
- 2009-07-29 MY MYPI2011000488A patent/MY161672A/en unknown
- 2009-07-29 RU RU2011104073/08A patent/RU2483457C2/ru not_active IP Right Cessation
- 2009-07-29 UA UAA201102783A patent/UA100582C2/uk unknown
- 2009-07-29 KR KR1020117005128A patent/KR101384794B1/ko not_active IP Right Cessation
- 2009-07-29 JP JP2011522941A patent/JP5441041B2/ja not_active Expired - Fee Related
- 2009-07-29 AU AU2009282526A patent/AU2009282526B2/en not_active Ceased
- 2009-07-29 US US13/055,824 patent/US8798001B2/en active Active
- 2009-07-29 MX MX2011001608A patent/MX2011001608A/es active IP Right Grant
- 2009-07-29 ES ES09806926.3T patent/ES2567272T3/es active Active
- 2009-07-29 CN CN200980131547.2A patent/CN102124702B/zh not_active Expired - Fee Related
- 2009-07-29 EP EP09806926.3A patent/EP2316205B1/en not_active Not-in-force
- 2009-08-12 TW TW098127099A patent/TWI466502B/zh not_active IP Right Cessation
-
2011
- 2011-01-28 ZA ZA2011/00748A patent/ZA201100748B/en unknown
- 2011-02-28 CO CO11024141A patent/CO6351836A2/es active IP Right Grant
- 2011-11-09 HK HK11112085.8A patent/HK1157966A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
JP2011530953A (ja) | 2011-12-22 |
WO2010019105A1 (en) | 2010-02-18 |
KR20110044273A (ko) | 2011-04-28 |
TWI466502B (zh) | 2014-12-21 |
HK1157966A1 (en) | 2012-07-06 |
UA100582C2 (uk) | 2013-01-10 |
MY161672A (en) | 2017-05-15 |
CA2734048A1 (en) | 2010-02-18 |
SG159399A1 (en) | 2010-03-30 |
RU2011104073A (ru) | 2012-09-20 |
EP2316205A4 (en) | 2013-09-11 |
US20120002601A1 (en) | 2012-01-05 |
CN102124702B (zh) | 2014-04-09 |
ES2567272T3 (es) | 2016-04-21 |
ZA201100748B (en) | 2012-05-01 |
AU2009282526B2 (en) | 2014-08-14 |
CN102124702A (zh) | 2011-07-13 |
JP5441041B2 (ja) | 2014-03-12 |
US8798001B2 (en) | 2014-08-05 |
CO6351836A2 (es) | 2011-12-20 |
KR101384794B1 (ko) | 2014-04-24 |
AU2009282526A1 (en) | 2010-02-18 |
TW201025943A (en) | 2010-07-01 |
CA2734048C (en) | 2015-10-13 |
EP2316205B1 (en) | 2016-01-06 |
RU2483457C2 (ru) | 2013-05-27 |
EP2316205A1 (en) | 2011-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Carzaniga et al. | Content-based publish/subscribe networking and information-centric networking | |
KR101337039B1 (ko) | 통신 네트워크 내의 패킷을 라우팅하는 방법 및 통신 네트워크 내의 패킷을 라우팅하기 위한 네트워크 노드 | |
JP5624331B2 (ja) | コンピュータ実施方法 | |
US20160087881A1 (en) | Method, apparatus, and system for routing and forwarding | |
US7684421B2 (en) | Information routing in a distributed environment | |
KR20170037818A (ko) | 작은 다중 경로 또는 단일 경로 포워딩 상태를 이용한 정보 중심 네트워킹 | |
WO2011150830A1 (zh) | 获取内容的方法、节点及内容网络 | |
US8798001B2 (en) | Message routing platform | |
US8539041B2 (en) | Method, apparatus, and network system for acquiring content | |
US9848059B2 (en) | Content handling method, apparatus, and system | |
JP2001103092A (ja) | Dns問い合わせ装置、dns問い合わせ方法、および記録媒体 | |
Jin et al. | Content routing and lookup schemes using global bloom filter for content-delivery-as-a-service | |
CN112787926A (zh) | 用于对兴趣包进行分段路由的装置、方法和系统 | |
CN109495525B (zh) | 网络组件、解析内容标识的方法和计算机可读存储介质 | |
JP5379800B2 (ja) | インスタントメッセージシステム内においてユーザ情報を管理するための方法およびシステム | |
Mezo et al. | HMail: A hybrid mailing system based on the collaboration between traditional and Peer-to-Peer mailing architectures | |
Chen et al. | Improving the Video Data Lookup Efficiency in Peer-to-Peer Live Streaming Network | |
Nguyen et al. | A Proposed Architecture for the Realization and Management of an Information-Centric Network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FG | Grant or registration |